Overview

Request 4507 (accepted)

- Update %post script for new desktop file name.
- Include appdata in files list.
- Include obs-ffmpeg-mux in files list.

- Update to version 23.2.0:
* libobs: Update version to 23.2.0
* Update translations from Crowdin
* UI: Make two-auth message a bit friendlier
* UI: Use better link for Twitch two-factor warning
* win-capture: Add discord to game capture blacklist
* UI: Fix transition A/B labels on macOS/Linux
* UI: Add two-factor authentication warning for Twitch
* UI: Add ability to use rich text in warning dialogs
* UI: Fix output icon size. Add padding to settings list items
* UI/updater: Update some text for clarity
* UI/updater: Add marquee progress bar for existing file check
* UI/updater: Add manifest file for DPI awareness
* UI: Revert Dark theme Scenes font change
* CI: Fix travis test on OSX
* CI: Build CEF with OS X 10.11 target
* UI: Ensure frontend event is removed on object deletion
* win-wasapi: Speaker enum fixes
* UI: Fix "Toggle Preview" hotkeys duplicating
* GitHub: Add funding buttons
* libobs-d3d11: Bad indices in log output
* libobs: Pair encoders only when output actually starts
* UI: Fix issue where rec time left would show negative time
* libobs: Remove unreachable YUV decode paths
* obs-filters: Remove unused key_rgb shader variable
* obs-filters: Remove unused variable for color key

Submit package home:boombatow...es:Multimedia / obs-studio to package Multimedia / obs-studio

obs-studio.changes Changed
x
 
1
@@ -1,4 +1,187 @@
2
 -------------------------------------------------------------------
3
+Thu Jun 13 01:27:07 UTC 2019 - Jimmy Berry <jimmy@boombatower.com>
4
+
5
+- Update %post script for new desktop file name.
6
+- Include appdata in files list.
7
+- Include obs-ffmpeg-mux in files list.
8
+
9
+-------------------------------------------------------------------
10
+Thu Jun 13 00:57:19 UTC 2019 - jimmy@boombatower.com
11
+
12
+- Update to version 23.2.0:
13
+  * libobs: Update version to 23.2.0
14
+  * Update translations from Crowdin
15
+  * UI: Make two-auth message a bit friendlier
16
+  * UI: Use better link for Twitch two-factor warning
17
+  * win-capture: Add discord to game capture blacklist
18
+  * UI: Fix transition A/B labels on macOS/Linux
19
+  * UI: Add two-factor authentication warning for Twitch
20
+  * UI: Add ability to use rich text in warning dialogs
21
+  * UI: Fix output icon size. Add padding to settings list items
22
+  * UI/updater: Update some text for clarity
23
+  * UI/updater: Add marquee progress bar for existing file check
24
+  * UI/updater: Add manifest file for DPI awareness
25
+  * UI: Revert Dark theme Scenes font change
26
+  * CI: Fix travis test on OSX
27
+  * CI: Build CEF with OS X 10.11 target
28
+  * UI: Ensure frontend event is removed on object deletion
29
+  * win-wasapi: Speaker enum fixes
30
+  * UI: Fix "Toggle Preview" hotkeys duplicating
31
+  * GitHub: Add funding buttons
32
+  * libobs-d3d11: Bad indices in log output
33
+  * libobs: Pair encoders only when output actually starts
34
+  * UI: Fix issue where rec time left would show negative time
35
+  * libobs: Remove unreachable YUV decode paths
36
+  * obs-filters: Remove unused key_rgb shader variable
37
+  * obs-filters: Remove unused variable for color key
38
+  * libobs: Remove saturate from RGB -> YUV conversion
39
+  * UI: Remove unused helper function renderVB
40
+  * obs-browser: Close browser panels early
41
+  * UI: Remove 5 file limit for drag & drop
42
+  * libobs: Fix lockup when an encode call fails
43
+  * UI: Dark theme consistency for Scenes vs Sources
44
+  * UI: Remove unused hotkey qss items
45
+  * UI: Fix theme issues with hotkey icons
46
+  * UI: Add hover color to hotkey icons
47
+  * UI: Add Transition Previews
48
+  * libobs: Add transition and showing counter functions
49
+  * README.rst: Add contributing/donating link
50
+  * obs-ffmpeg: Fix VAAPI CBR
51
+  * libobs: UI: Remove Qt usage from graphics thread
52
+  * obs-outputs: Fix undefined MSG_NOSIGNAL
53
+  * libobs: Restore casts to fix Clang warnings
54
+  * obs-qsv: Update libmfx, fix QSV with new DCH drivers
55
+  * UI: Block SIGPIPE in all threads
56
+  * obs-outputs: Return error instead emitting SIGPIPE
57
+  * obs-frontend-api: Add func to trigger a Studio Mode transition
58
+  * obs-frontend-api: Add methods to get/set transition duration
59
+  * libobs: Fix various alpha issues
60
+  * UI: Change fader type to log
61
+  * UI: Make volume faders more precise
62
+  * UI: Change volume to dB in adv audio properties
63
+  * UI: Use escaped html for about dialog
64
+  * UI: Add Patreon contributors to About dialog
65
+  * win-dshow: fix issue decoding some H.264 stream
66
+  * UI: Fix system tray not working
67
+  * UI: Hide Alpha channel field from the color picker
68
+  * UI: fix crash due to NULL dereference
69
+  * rtmp-services: Update GameTips.tv
70
+  * libobs: Fix crashes from wrong types
71
+  * CI: Use swig 3.0.12 on OSX
72
+  * UI: Fix theme showing incorrect theme when on Dark
73
+  * CI: Use swig 3.04 on OSX
74
+  * obs-ffmpeg: Fix jim-nvenc initial DTS for fractional FPS
75
+  * UI: Add ability to set properties spinbox suffix
76
+  * libobs: Add ability to set spinbox property suffix
77
+  * UI: Use icons for hotkey buttons
78
+  * UI: Truncate text in hotkeys interface
79
+  * UI: Remove icons from settings button box
80
+  * UI: Improve look of Dark theme
81
+  * UI: Remove settings horizontal lines
82
+  * UI: Remove mac browser workarounds, improve stability
83
+  * UI: Only execute "What's New" code on win32
84
+  * UI: Check for valid systen tray pointer
85
+  * UI: Increment bitrates by 50
86
+  * libobs: Use RTLD_FIRST when loading libraries on macOS
87
+  * UI: Fix theme issues with vis/lock checkboxes
88
+  * obs-ffmpeg: Move ffmpeg-mux to executable dir
89
+  * libobs/util: Add function to get executable path
90
+  * obs-filters: Use int sliders for opacity
91
+  * obs-filters: Fix opacity on image mask/blend filter
92
+  * libobs: Support limited color range for RGB/Y800 sources
93
+  * decklink, win-dshow: Use obs_source_output_video2
94
+  * libobs: Add better default source color range handling
95
+  * Revert "libobs: libobs-d3d11: obs-filters: No excess alpha"
96
+  * UI: Fix theme bug when updating from older versions
97
+  * UI: Add ability to copy/paste scene filters
98
+  * UI: Fix unable to escape when renaming scene
99
+  * UI: Fix group checkbox icons not working in Dark theme
100
+  * UI: Simplify locked/visibility checkboxes
101
+  * UI: Change icons to svg
102
+  * UI: Fix preview/program label alignment
103
+  * libobs: Fix GS_UNSIGNED_LONG definition
104
+  * obs-outputs: Fix leak with certs for rtmp
105
+  * UI: Rename UI files for consistency
106
+  * UI: Fix whitespace issues with "ignore wheel" widgets
107
+  * UI: Do not remove focus on mouse leave events
108
+  * win-wasapi: Unapply/reapply audio monitoring on reconnect
109
+  * win-wasapi: Fix audio capture after unplugging device
110
+  * win-wasapi: Call CoInitializeEx in reconnect thread
111
+  * decklink-output-ui: Fix memory leak
112
+  * rtmp-services: Update Mixer keyframe interval
113
+  * UI: Do not allow mouse wheel for volume slider
114
+  * libobs: UI: Fix rotated line scale
115
+  * obs-ffmpeg: Add logging of last error for passing to UI
116
+  * libobs: Allow Win32 pipes to pass STDERR for logging of errors
117
+  * UI: Update error message severity levels and show additional info
118
+  * UI: Add warning / critical QMessageBox wrappers
119
+  * Use proper capitalization for string
120
+  * UI: Add support for property groups
121
+  * libobs: Add property groups
122
+  * Decklink: inital preview out work
123
+  * UI: Use theme colors setting for Projectors too
124
+  * UI: Correct custom property implementation
125
+  * vlc-video: Enable subtitle track selection
126
+  * UI: Add default color for the preview background
127
+  * UI: Fix Linux build without PulseAudio
128
+  * UI: Estimate recording time left until disk is full
129
+  * libobs: Fix shader for GLSL
130
+  * UI: Add Linux AppStream metadata
131
+  * UI: Add hotkey to toggle preview
132
+  * win-capture/graphics-hook: Check if mutex abandoned
133
+  * UI: Remove SourceListWidget
134
+  * UI: Ignore wheelEvent for properties
135
+  * rtmp-services: Add OnlyFans streaming service
136
+  * CONTRIBUTING.rst: Improve commit guidelines
137
+  * UI: Fix remux dialog ignoring filename changes
138
+  * UI: Separate delegate class into header file
139
+  * UI: Show a message in the empty source list
140
+  * deps/media-playback: YUV444P support
141
+  * libobs: Simplify YUV conversion
142
+  * UI: Add null check for rename of default theme
143
+  * UI: Don't hide cursor over multiview
144
+  * UI: Add ability to center items vertically/horizontally
145
+  * UI: Rename Default theme to System
146
+  * libobs: Add additional effect debugging information
147
+  * Remove double spaces from localization
148
+  * UI: Fix size of output icon
149
+  * vlc-video: Enable audio track selection
150
+  * UI: Add text autoselect for source rename
151
+  * UI: Add text autoselect on scene rename
152
+  * libobs: UI: Use graphics debug markers
153
+  * libobs/graphics: Support debug markers
154
+  * libobs: Fix move assignment operator for ComPtr
155
+  * libobs: libobs-d3d11: obs-filters: No excess alpha
156
+  * UI: Don't update stats dock if hidden
157
+  * UI: Fix bandwidth test flag being saved to stream key
158
+  * cmake: Generate obs.rc out-of-tree
159
+  * libobs: Add function to remove properties
160
+  * linux-capture: Add randr support
161
+  * obs-frontend-api: Access system tray icon from API
162
+  * UI: Fix incorrect padding usage in Rachni theme
163
+  * UI: Show correct version in about dialog
164
+  * UI: Log group items on startup
165
+  * UI, libobs, text-freetype2: Add missing pragma once in header files
166
+  * libobs: Add support for F25-F35 hotkeys on Linux
167
+  * UI: Hide border for Output Settings container
168
+  * UI: Hide border for General Settings container
169
+  * UI: Refactor Audio Settings tab structure
170
+  * plugins: Clear all compiler warnings
171
+  * libobs: Clear all compiler warnings
172
+  * UI: Fix Q_PROPERTY compiling warnings
173
+  * libobs-opengl: Clear some conversion and uncaught switch cases warnings
174
+  * image-source: Set default size of color source to canvas size
175
+  * CI: Build caption output support on OSX by default
176
+  * deps/obs-scripting: Expose obs_output_output_caption_text1 to scripts
177
+  * Improve locales
178
+  * obs-filters: Add luma key filter
179
+  * libobs: Add minimum display duration to caption data
180
+  * UI: Show output's last error in failure dialog
181
+  * libobs: Initialize service before starting output
182
+  * UI: Fix unencoded stream failure
183
+  * obs-ffmpeg: Bind network buffer size in the UI
184
+
185
+-------------------------------------------------------------------
186
 Sat Apr  6 16:14:42 UTC 2019 - Jimmy Berry <jimmy@boombatower.com>
187
 
188
 - Add libqt5-qtsvg-devel as a build dependency.
189
obs-studio.spec Changed
38
 
1
@@ -1,5 +1,5 @@
2
 Name:           obs-studio
3
-Version:        23.1.0
4
+Version:        23.2.0
5
 Release:        0
6
 Summary:        A recording/broadcasting program
7
 Group:          Productivity/Multimedia/Video/Editors and Convertors
8
@@ -73,7 +73,7 @@
9
 
10
 %install
11
 %cmake_install
12
-%suse_update_desktop_file obs
13
+%suse_update_desktop_file com.obsproject.Studio
14
 
15
 %post
16
 /sbin/ldconfig
17
@@ -86,6 +86,7 @@
18
 %files
19
 %defattr(-, root, root)
20
 %{_bindir}/obs
21
+%{_bindir}/obs-ffmpeg-mux
22
 # Upstream forces libs dir regardless of arch and building plugins is encumbered
23
 # by moving them to the proper directory.
24
 %{_libexecdir}/obs-plugins
25
@@ -95,8 +96,10 @@
26
 %{_libexecdir}/libobs-scripting.so
27
 %{_libexecdir}/obs-scripting
28
 %{_libexecdir}/libobsglad.so.0
29
-%{_datadir}/applications/obs.desktop
30
-%{_datadir}/icons/hicolor/256x256/apps/obs.png
31
+%dir %{_datadir}/metainfo
32
+%{_datadir}/metainfo/com.obsproject.Studio.appdata.xml
33
+%{_datadir}/applications/com.obsproject.Studio.desktop
34
+%{_datadir}/icons/hicolor/256x256/apps/com.obsproject.Studio.png
35
 %{_datadir}/obs
36
 
37
 %files devel
38
_service Changed
10
 
1
@@ -1,7 +1,7 @@
2
 <services>
3
   <service name="tar_scm" mode="disabled">
4
     <param name="versionformat">@PARENT_TAG@</param>
5
-    <param name="revision">refs/tags/23.1.0</param>
6
+    <param name="revision">refs/tags/23.2.0</param>
7
     <param name="url">git://github.com/jp9000/obs-studio.git</param>
8
     <param name="scm">git</param>
9
     <param name="changesgenerate">enable</param>
10
_servicedata Changed
9
 
1
@@ -1,6 +1,6 @@
2
 <servicedata>
3
   <service name="tar_scm">
4
     <param name="url">git://github.com/jp9000/obs-studio.git</param>
5
-    <param name="changesrevision">6550c0dfaaf3b02da6c58bcdde7735682daf2dce</param>
6
+    <param name="changesrevision">0d4d7f617c3f9a51ae04057ab78c4c7e4c78034b</param>
7
   </service>
8
 </servicedata>
9
obs-studio-23.1.0.tar.xz/UI/data/themes/Acri/cogwheel.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Acri/cogwheel_2x.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Acri/down_arrow.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Acri/minus.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Acri/mute.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Acri/plus.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Acri/unmute.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Acri/up_arrow.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Acri/updown.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/cogwheel.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/cogwheel_2x.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/collapse.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/down_arrow.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/expand.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/minus.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/mute.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/plus.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/refresh.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/unmute.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/up_arrow.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/updown.png Deleted
obs-studio-23.1.0.tar.xz/UI/data/themes/Default.qss Deleted
165
 
1
@@ -1,163 +0,0 @@
2
-/* Intentionnally left blank */
3
-/* Themes are created using Qt CSS, you can visit */
4
-/* http://doc.qt.io/qt-5/stylesheet-reference.html and */
5
-/* http://doc.qt.io/qt-5/stylesheet-examples.html for examples. */
6
-
7
-/* OBS will use the theme filename for the settings. */
8
-/* You can ship images using relative paths in qss. */
9
-/* Dark Theme is a good place to start if you need */
10
-/* a template. */
11
-
12
-
13
-/* We need to set back the icons, or the preview wont stick. */
14
-
15
-* [themeID="addIconSmall"] {
16
-    qproperty-icon: url(:/res/images/add.png);
17
-}
18
-
19
-* [themeID="removeIconSmall"] {
20
-    qproperty-icon: url(:/res/images/list_remove.png);
21
-}
22
-
23
-* [themeID="propertiesIconSmall"] {
24
-    qproperty-icon: url(:/res/images/properties.png);
25
-}
26
-
27
-* [themeID="configIconSmall"] {
28
-    qproperty-icon: url(:/res/images/configuration21_16.png);
29
-}
30
-
31
-* [themeID="upArrowIconSmall"] {
32
-    qproperty-icon: url(:/res/images/up.png);
33
-}
34
-
35
-* [themeID="refreshIconSmall"] {
36
-    qproperty-icon: url(:/res/images/refresh.png);
37
-}
38
-
39
-* [themeID="downArrowIconSmall"] {
40
-    qproperty-icon: url(:/res/images/down.png);
41
-}
42
-
43
-MuteCheckBox {
44
-    outline: none;
45
-}
46
-
47
-MuteCheckBox::indicator:checked {
48
-    image: url(:/res/images/mute.png);
49
-}
50
-
51
-MuteCheckBox::indicator:unchecked {
52
-    image: url(:/res/images/unmute.png);
53
-}
54
-
55
-SourceTreeSubItemCheckBox {
56
-    background: transparent;
57
-    outline: none;
58
-}
59
-
60
-SourceTreeSubItemCheckBox::indicator {
61
-    width: 10px;
62
-    height: 10px;
63
-}
64
-
65
-SourceTreeSubItemCheckBox::indicator:checked {
66
-    image: url(:/res/images/expand.png);
67
-}
68
-
69
-SourceTreeSubItemCheckBox::indicator:unchecked {
70
-    image: url(:/res/images/collapse.png);
71
-}
72
-
73
-OBSHotkeyLabel[hotkeyPairHover=true] {
74
-    color: red;
75
-}
76
-
77
-
78
-/* Volume Control */
79
-
80
-VolumeMeter {
81
-    qproperty-backgroundNominalColor: rgb(15, 100, 15);
82
-    qproperty-backgroundWarningColor: rgb(100, 100, 15);
83
-    qproperty-backgroundErrorColor: rgb(100, 15, 15);
84
-    qproperty-foregroundNominalColor: rgb(50, 200, 50);
85
-    qproperty-foregroundWarningColor: rgb(255, 200, 50);
86
-    qproperty-foregroundErrorColor: rgb(200, 50, 50);
87
-    qproperty-magnitudeColor: rgb(0, 0, 0);
88
-    qproperty-majorTickColor: rgb(0, 0, 0);
89
-    qproperty-minorTickColor: rgb(50, 50, 50);
90
-}
91
-
92
-
93
-/* Label warning/error */
94
-
95
-QLabel#warningLabel {
96
-    color: rgb(192, 128, 0);
97
-    font-weight: bold;
98
-}
99
-
100
-QLabel#errorLabel {
101
-    color: rgb(192, 0, 0);
102
-    font-weight: bold;
103
-}
104
-
105
-* [themeID="warning"] {
106
-    color: rgb(192, 128, 0);
107
-    font-weight: bold;
108
-}
109
-
110
-* [themeID="error"] {
111
-    color: rgb(192, 0, 0);
112
-    font-weight: bold;
113
-}
114
-
115
-* [themeID="good"] {
116
-    color: rgb(0, 128, 0);
117
-    font-weight: bold;
118
-}
119
-
120
-/* About dialog */
121
-
122
-* [themeID="aboutName"] {
123
-    font-size: 36px;
124
-    font-weight: bold;
125
-}
126
-
127
-* [themeID="aboutVersion"] {
128
-    font-size: 16px;
129
-    margin-bottom: 20px;
130
-}
131
-
132
-* [themeID="aboutInfo"] {
133
-    margin-bottom: 20px;
134
-}
135
-
136
-* [themeID="aboutHLayout"] {
137
-   background-color: #DCD9D7;
138
-}
139
-
140
-/* Preview background color */
141
-
142
-* [themeID="displayBackgroundColor"] {
143
-    qproperty-displayBackgroundColor: rgb(76, 76, 76);
144
-}
145
-
146
-/* Preview/Program labels */
147
-
148
-* [themeID="previewProgramLabels"] {
149
-    font-size: 18px;
150
-    font-weight: bold;
151
-    color: rgb(122,121,122);
152
-}
153
-
154
-/* Settings Icons */
155
-
156
-OBSBasicSettings {
157
-    qproperty-generalIcon: url(:settings/images/settings/general.svg);
158
-    qproperty-streamIcon: url(:settings/images/settings/stream.svg);
159
-    qproperty-outputIcon: url(:settings/images/settings/output.svg);
160
-    qproperty-audioIcon: url(:settings/images/settings/audio.svg);
161
-    qproperty-videoIcon: url(:settings/images/settings/video.svg);
162
-    qproperty-hotkeysIcon: url(:settings/images/settings/hotkeys.svg);
163
-    qproperty-advancedIcon: url(:settings/images/settings/advanced.svg);
164
-}
165
obs-studio-23.1.0.tar.xz/UI/dist Deleted
2
 
1
-(directory)
2
obs-studio-23.1.0.tar.xz/UI/dist/obs.desktop Deleted
16
 
1
@@ -1,14 +0,0 @@
2
-[Desktop Entry]
3
-Version=1.0
4
-Name=OBS Studio
5
-GenericName=Streaming/Recording Software
6
-GenericName[fr]=Logiciel d'enregistrement/diffusion
7
-Comment=Free and Open Source Streaming/Recording Software
8
-Comment[fr]=Logiciel libre d'enregistrement et de diffusion sur Internet
9
-Comment[ru]=Бесплатная программа с открытым кодом для записи/трансляции видео
10
-Exec=obs
11
-Icon=obs
12
-Terminal=false
13
-Type=Application
14
-Categories=AudioVideo;Recorder;
15
-StartupNotify=true
16
obs-studio-23.1.0.tar.xz/UI/forms/images/add.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/collapse.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/configuration21_16.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/configuration21_16_2x.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/down.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/editscene.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/expand.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/invisible_mask.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/invisible_mask_2x.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/list_remove.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/live.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/locked_mask.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/locked_mask_2x.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/mute.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/properties.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/properties_2x.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/refresh.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/sound.ico Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/sound_muted.ico Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/unlocked_mask.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/unlocked_mask_2x.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/unmute.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/up.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/visible_mask.png Deleted
obs-studio-23.1.0.tar.xz/UI/forms/images/visible_mask_2x.png Deleted
obs-studio-23.1.0.tar.xz/UI/locked-checkbox.cpp Deleted
44
 
1
@@ -1,42 +0,0 @@
2
-#include <QPaintEvent>
3
-#include <QPixmap>
4
-#include <QPainter>
5
-#include "locked-checkbox.hpp"
6
-
7
-#include <util/c99defs.h>
8
-
9
-LockedCheckBox::LockedCheckBox() : QCheckBox()
10
-{
11
-   QString lockedFile;
12
-   QString unlockedFile;
13
-   if (devicePixelRatio() >= 2) {
14
-       lockedFile = ":/res/images/locked_mask_2x.png";
15
-       unlockedFile = ":/res/images/unlocked_mask_2x.png";
16
-   } else {
17
-       lockedFile = ":/res/images/locked_mask.png";
18
-       unlockedFile = ":/res/images/unlocked_mask.png";
19
-   }
20
-   lockedImage = QPixmap::fromImage(QImage(lockedFile));
21
-   unlockedImage = QPixmap::fromImage(QImage(unlockedFile));
22
-   setMinimumSize(16, 16);
23
-
24
-   setStyleSheet("outline: none;");
25
-}
26
-
27
-void LockedCheckBox::paintEvent(QPaintEvent *event)
28
-{
29
-   UNUSED_PARAMETER(event);
30
-
31
-   QPixmap &pixmap = isChecked() ? lockedImage : unlockedImage;
32
-   QImage image(pixmap.size(), QImage::Format_ARGB32);
33
-
34
-   QPainter draw(&image);
35
-   draw.setCompositionMode(QPainter::CompositionMode_Source);
36
-   draw.drawPixmap(0, 0, pixmap.width(), pixmap.height(), pixmap);
37
-   draw.setCompositionMode(QPainter::CompositionMode_SourceIn);
38
-   draw.fillRect(QRectF(QPointF(0.0f, 0.0f), pixmap.size()),
39
-           palette().color(foregroundRole()));
40
-
41
-   QPainter p(this);
42
-   p.drawPixmap(0, 0, 16, 16, QPixmap::fromImage(image));
43
-}
44
obs-studio-23.1.0.tar.xz/UI/source-list-widget.cpp Deleted
48
 
1
@@ -1,46 +0,0 @@
2
-#include <QMouseEvent>
3
-
4
-#include <vector>
5
-
6
-#include "qt-wrappers.hpp"
7
-#include "source-list-widget.hpp"
8
-
9
-Q_DECLARE_METATYPE(OBSSceneItem);
10
-
11
-void SourceListWidget::mouseDoubleClickEvent(QMouseEvent *event)
12
-{
13
-   if (event->button() == Qt::LeftButton)
14
-       QListWidget::mouseDoubleClickEvent(event);
15
-}
16
-
17
-void SourceListWidget::dropEvent(QDropEvent *event)
18
-{
19
-   QListWidget::dropEvent(event);
20
-   if (!event->isAccepted() || !count())
21
-       return;
22
-
23
-   auto GetSceneItem = [&](int i)
24
-   {
25
-       return item(i)->data(Qt::UserRole).value<OBSSceneItem>();
26
-   };
27
-
28
-   std::vector<obs_sceneitem_t*> newOrder;
29
-   newOrder.reserve(count());
30
-   for (int i = count() - 1; i >= 0; i--)
31
-       newOrder.push_back(GetSceneItem(i));
32
-
33
-   auto UpdateOrderAtomically = [&](obs_scene_t *scene)
34
-   {
35
-       ignoreReorder = true;
36
-       obs_scene_reorder_items(scene, newOrder.data(),
37
-               newOrder.size());
38
-       ignoreReorder = false;
39
-   };
40
-   using UpdateOrderAtomically_t = decltype(UpdateOrderAtomically);
41
-
42
-   auto scene = obs_sceneitem_get_scene(GetSceneItem(0));
43
-   obs_scene_atomic_update(scene, [](void *data, obs_scene_t *scene)
44
-   {
45
-       (*static_cast<UpdateOrderAtomically_t*>(data))(scene);
46
-   }, static_cast<void*>(&UpdateOrderAtomically));
47
-}
48
obs-studio-23.1.0.tar.xz/UI/source-list-widget.hpp Deleted
24
 
1
@@ -1,22 +0,0 @@
2
-#pragma once
3
-
4
-#include <QListWidget>
5
-
6
-class QMouseEvent;
7
-
8
-class SourceListWidget : public QListWidget {
9
-   Q_OBJECT
10
-
11
-   bool ignoreReorder = false;
12
-public:
13
-   inline SourceListWidget(QWidget *parent = nullptr)
14
-       : QListWidget(parent)
15
-   {
16
-   }
17
-
18
-   bool IgnoreReorder() const { return ignoreReorder; }
19
-
20
-protected:
21
-   virtual void mouseDoubleClickEvent(QMouseEvent *event) override;
22
-   virtual void dropEvent(QDropEvent *event) override;
23
-};
24
obs-studio-23.1.0.tar.xz/UI/visibility-checkbox.cpp Deleted
44
 
1
@@ -1,42 +0,0 @@
2
-#include <QPaintEvent>
3
-#include <QPixmap>
4
-#include <QPainter>
5
-#include "visibility-checkbox.hpp"
6
-
7
-#include <util/c99defs.h>
8
-
9
-VisibilityCheckBox::VisibilityCheckBox() : QCheckBox()
10
-{
11
-   QString checkedFile;
12
-   QString uncheckedFile;
13
-   if (devicePixelRatio() >= 2) {
14
-       checkedFile = ":/res/images/visible_mask_2x.png";
15
-       uncheckedFile = ":/res/images/invisible_mask_2x.png";
16
-   } else {
17
-       checkedFile = ":/res/images/visible_mask.png";
18
-       uncheckedFile = ":/res/images/invisible_mask.png";
19
-   }
20
-   checkedImage = QPixmap::fromImage(QImage(checkedFile));
21
-   uncheckedImage = QPixmap::fromImage(QImage(uncheckedFile));
22
-   setMinimumSize(16, 16);
23
-
24
-   setStyleSheet("outline: none;");
25
-}
26
-
27
-void VisibilityCheckBox::paintEvent(QPaintEvent *event)
28
-{
29
-   UNUSED_PARAMETER(event);
30
-
31
-   QPixmap &pixmap = isChecked() ? checkedImage : uncheckedImage;
32
-   QImage image(pixmap.size(), QImage::Format_ARGB32);
33
-
34
-   QPainter draw(&image);
35
-   draw.setCompositionMode(QPainter::CompositionMode_Source);
36
-   draw.drawPixmap(0, 0, pixmap.width(), pixmap.height(), pixmap);
37
-   draw.setCompositionMode(QPainter::CompositionMode_SourceIn);
38
-   draw.fillRect(QRectF(QPointF(0.0f, 0.0f), pixmap.size()),
39
-           palette().color(foregroundRole()));
40
-
41
-   QPainter p(this);
42
-   p.drawPixmap(0, 0, 16, 16, QPixmap::fromImage(image));
43
-}
44
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/premultiplied.inc Deleted
11
 
1
@@ -1,9 +0,0 @@
2
-float4 convert_pmalpha(float4 color)
3
-{
4
-   float4 ret = color;
5
-   if (color.a >= 0.001)
6
-       ret.xyz /= color.a;
7
-   else
8
-       ret = float4(0.0, 0.0, 0.0, 0.0);
9
-   return ret;
10
-}
11
obs-studio-23.2.0.tar.xz/.github Added
2
 
1
+(directory)
2
obs-studio-23.2.0.tar.xz/.github/FUNDING.yml Added
4
 
1
@@ -0,0 +1,2 @@
2
+open_collective: obsproject
3
+patreon: obsproject
4
obs-studio-23.1.0.tar.xz/AUTHORS -> obs-studio-23.2.0.tar.xz/AUTHORS Changed
1108
 
1
@@ -269,438 +269,671 @@
2
 wayne wang
3
 
4
 Translators:
5
-Gol D. Ace (goldace)
6
-ynetwork
7
-medicmomcilo
8
-SuslikV
9
-Gige
10
-shousa
11
-grocal
12
-georgianizator
13
-Jaime Muñoz Martín (jmmartin_5)
14
-Anton R (FirePhoenix)
15
-Arkkis (j)
16
-Bob Liu (Akagi201)
17
-Jirka 'Venty' Michel (VentyCZ)
18
-NCAA
19
-Alexander Gabilondo (alexgabi)
20
-Eric Bataille (ThoNohT)
21
-TzeKei Lee (chikei)
22
-Shaolin (admshao)
23
-GunChleoc
24
-Manfre#9262 (manfre)
25
-Vainock (ivo.lemmert)
26
-Alek Nirov (dectanova)
27
-Kenta Takumi (kenta0644)
28
-Michael Fabian Dirks (Xaymar)
29
-Marcos Vidal Martinez (M4RK22)
30
-dodgepong
31
-amirsher
32
-Imre Kristoffer Eilertsen (DandelionSprout)
33
-Luki (luki1412)
34
-pkviet
35
-Johnny “max20091” Utah (boostyourprogram)
36
-Cristian Silaghi (stelistcristi)
37
-jermel
38
-banrek
39
-dandalion
40
-Ali Kömesöğütlü (Mobile46) (byzlo685)
41
-shamuntohamd
42
-LordShadow95
43
-dwaeji-aizelle
44
-Albakham (albakham)
45
-Taesh (magnusmbratteng)
46
-radzaquiel
47
-Jaime Martinez Rincon (mrjaime1999)
48
-Jens Hyllegaard (Hyllegaard)
49
-anto27
50
-j3dy
51
-nyakayed
52
-Erik Bročko (ericek111)
53
-Vainbot
54
-Jarska
55
-Katerina (katerinaramm)
56
-Marocco2
57
-Stéphane Lepin (Palakis)
58
-MartinEwing
59
-Xesús M. Mosquera Carregal (xesusmosquera)
60
-Ev1lbl0w
61
-wwj402_github
62
-Scourgemcdak
63
-Roberto Lorenzo (HonzoNebro)
64
-ZILZAL
65
-Loyd Stephen Jayme (loydjayme25)
66
-Sigge Stjärnholm (Kladdy)
67
-amsyar ZeRo (amsyarminer555)
68
-imcesca
69
-jbeguna04
70
-Hưng Nguyễn (hoyostudio)
71
-lonelywolf11
72
-omer.karagoz (mrkaragoz)
73
-Tocram2 (tocram2)
74
-Michel Snippe (michelsnippe)
75
-Matt Gajownik (WizardCM)
76
-philiparniebinag
77
-Nunzio Conte (nunzioconte54)
78
-Benet R. i Camps (BennyBeat) (BennyBeat)
79
-Greendweller
80
-kristjan.krusic (krusic22)
81
-smart2128
82
-Mepharees
83
-jmontane
84
-Monsteer
85
-Nil Campamà (Soifam)
86
-Ramon Mendes (rbrgameplays)
87
-Benjamin Cambour (lesinfox)
88
-Abdullah AL-Qahtani (Za7ef_SA)
89
-Osoitz
90
-srdjan_m
91
-MZ MAXIMUM (mahdigamermax)
92
-Pavel (Shevalie)
93
-Fabio Madia (Shaolin)
94
-Zakxaev68
95
-VNGXR
96
-begjan
97
-Chien-Yu Lin (u900011)
98
-Patrick Williamson (wpatrick59)
99
-majdcomp
100
-Dalia Sofía Magallón Páramo (SweetSofiMC)
101
-MaltahlGaming (maltahlgaming)
102
-Justas Vilimas (tyntas)
103
-Yberion
104
-Hexcolyte
105
-AthlonHD
106
-Ján M (longmoped)
107
-Anders G. Jørgensen (spirit55555)
108
-Léo (leeo97one)
109
-Tiwi90 (tiwi90)
110
-Mats Edvin Aarø (matsedvin)
111
-Coen (Trigstur)
112
-ngoisaosang
113
-André Biscaia (LazP)
114
-Alex E. D. B. (alexedb)
115
-Julian_Lai
116
-Pikana
117
-kalmarin
118
-Tasos Sahanidis (tatokis)
119
-Alireza Firouzi (pikhoshorg)
120
-EG Gamer (eggamer131)
121
-Vassamo (jotpl69)
122
-George T. (tzikas97)
123
-RisedSky (THEMINECRAFT951)
124
-Tomás Antunes (tomasantunes)
125
-AndresTraks
126
-pan93412
127
-Seyhan Halil (yildirim17)
128
-exeldro
129
-Cemal Dursun (cmldrs)
130
-Michael Yeh (hinet60613)
131
-BoboopTeam
132
-Hisashi
133
-Laccy IEST (Laccy)
134
-DoK_-
135
-Sven Kirschbaum (fallobst22) (fallobst22)
136
-Andrei Ionescu (abcdedjdmddx)
137
-Bugo
138
-David Kuo (s50407s)
139
-Pilar G. (TheMadnessLady)
140
-Michele (ScrappyCocco)
141
-Guilherme Dias (ThisGuy)
142
-myjourney in Steemit (myjourney)
143
-joaofvieira
144
-Danny (Dkamps18)
145
-Nicole (Dutchess_Nicole)
146
-peymanr34
147
-Licardo
148
-areedw
149
-PabloLiu (719018105)
150
-BlakeNowah
151
-Gregor Bigalke (gregtcltk)
152
-The Syntox (TheSyntox)
153
-xNaii (lyrikas5)
154
-aaakjt
155
-LittleGirl_WithPonyTail (alexs1320)
156
-Aredio Vani (aredio.vani)
157
-You-Ruei Tzeng (e222et)
158
-joaoboia
159
-Michał Durak (micechal)
160
-Anton Lokaj (anlo)
161
-DarckCrystale
162
-Manuel (ElectronicWar)
163
-Savas Tokmak (Laserist)
164
-alexandre433
165
-Dennis Giebert (Isegrim) (isegrimderwolf)
166
-robbert0891 (robbertoorschot38)
167
-MG lolenstine (mglolenstine)
168
-Sasasu
169
-mgKaiztra
170
-Tommaso Cammelli (tomganguz) (tomganguz)
171
-Umut kılıç (kilic190787)
172
-Ben Turner (ben-turner)
173
-Tim (robske_110) (robske110)
174
-Matthew Hatcher (MatthewSH)
175
-TFSThiagoBR98
176
-WeingHong
177
-Andrei Stepanov (adem4ik)
178
-Drake Strike (phjtieudoc)
179
-Gustav Ekner (ekner)
180
-Tommy (nwgat)
181
-Runicar (dajtisina)
182
-Albin Pllana (albinnpllanaa)
183
-Tero Keso (tero.keso)
184
-DarkInFire
185
-Aleix Vidal i Gaya (leixet)
186
-CaioWzy
187
-Syver Stensholt (sssandum)
188
-Martazza
189
-ScemEnzo
190
-mizifih
191
-Theguiguix
192
-Jasper J (JassieJ)
193
-Alex Thomassen (Decicus)
194
-Oddbjørn Grytdal (Fooshi)
195
-Damian Korcz (damikiller)
196
-Martin Georgiev (DivideByNone)
197
-Richard Stanway (r1ch)
198
-Murat Karagöz (anemon_1994)
199
-鲜童 (xiananjyzy)
200
-Youtubeur FR│Giaco35 (Giaco35)
201
-Edoardo Macrì (edomacri)
202
-Dremski
203
-André Gama (ToeOficial)
204
-Łukasz Wójcik (lwojcik)
205
-sakuhanachan* (sakuhanachanloli)
206
-Victor Paul (corvinpaul)
207
-Kryštof Černý (cleverline1mc)
208
-fromgate
209
-Strange Grey Cat (StrangeGreyCat)
210
-معتصم دعنا (rozana-media)
211
-Wildrage
212
-Sergey (LegionAnon)
213
-Skellytone
214
-cai_miao
215
-mdod
216
-craftwar
217
-clr0dr1g
218
-aalonsomb
219
-Daniel Wieczorek (Kennyluz)
220
-Red Dayao (steemitph)
221
-steve_fr
222
-Andy (anry025)
223
-Acamicamacaraca
224
-Thomas (thomassth)
225
-EduCare Razmik Badalyan (badalyanrazmik)
226
-Opportunity (OpportunityLiu)
227
-Maximiliano Schtroumpftech Pena-Roig (som2tokmynam)
228
-MarsYoung
229
-Sander Skjegstad (r530er)
230
-Mihai G (babasghenciu)
231
-Rana Awais (ehtisham)
232
-ธีรภัทร์ โยชนา (Gataro)
233
-Sakia Normal Human (arcanaarcana5)
234
-Benjamin Klettbach (benklett)
235
-Mateusz (Silesianek)
236
-kyllian (tardigradeus)
237
-Edoardo “OfficialDJMela” Macrì (agersforum)
238
-Forbidden (cptbl00dra1n)
239
-Jonas Otto (jottosmail)
240
-Carlos Plata (carlosesgenial33)
241
-RedditRook
242
-Inku Xuan (inkuxuan)
243
-Jonatan Nyberg (sweuser)
244
-Alex Kalles (alexakis1997)
245
-Юрій (Devinit)
246
-Silpheel
247
-Pyscowicz
248
-Bond-009
249
-OsteHovel
250
-ibnehayati
251
-Hà Phi Hùng (haphihungcom)
252
-gianni morandi (strabbioboy)
253
-Anders Urban (minikaliffen)
254
-Chemi
255
-Saleh Luxmaroc (salehoukiki)
256
-gecebekcisi1
257
-WurstOnAir
258
-GANGAT Naeem (zboggum)
259
-Grimpy
260
-Viktor Kitov (viktorkitov)
261
-markpc
262
-txaro
263
-Andrea-M3
264
-IoeCmcomc (Ioe2015) (hopdaigia2004)
265
-henrycontreras
266
-Serge Sklyarov (sergesklyarov)
267
-Uri Ben Yossef (uribenyossef)
268
-yunluzhang
269
-Grisou2907
270
-Omer Kurdish (OmerKurd)
271
-lebaston100.de
272
-eskaidom (sergiomalagonmartin)
273
-BaguetteDePain_
274
-Marcos Vidal (markitos.maki22)
275
-Tensai
276
-Ruben Deig Ramos (rdeigramos)
277
-eZ_KrieG3R | Der Fabse (fabian.schwarz.26.06.1998)
278
-Fisherozzo
279
-copyliu
280
-Olle Dahström (odahlstrom)
281
-Deski_
282
-Mustafa2018
283
-F_Producktions
284
-Stoyan Stoyanov (sstoyanov)
285
-Bilguun Ochirbat (Bil0203)
286
-LoLLy Nka (lollynka279)
287
-opl
288
-Boyuan Yang (073plan)
289
-SneakyFish5
290
-Sergio Beneduce (sbeneduce)
291
-Light1c3
292
-eemiroj
293
-Nurul Huda (nurulhuda859)
294
-Obama (Obama44)
295
-OfficialwobY
296
-Ndalabo Taema (hake_bsowq)
297
-Ray (Ipsumry)
298
-Kiznoh
299
-makiza1 (micosil_2)
300
-Stanislav_Evtimov
301
-djsavta
302
-epic_ziver_D
303
-illusdidi
304
-Watson Tsai (ashaneba)
305
-Alessandro Sarto (alesarto03)
306
-Legend27
307
-b__dm
308
-Han-Jen Cheng (notexist)
309
-Inndy.Lin (inndy)
310
-Mathieu Hautebas (matteyeux)
311
-🌠 DarK | #Hello 🌠 (DarKTV_FR)
312
-Maky (the.real.maky)
313
-Sawanyo
314
-Jong Kwon Choi (dailypro)
315
-Harm van den Hoek (harm27)
316
-David Sonico (davidsubsonico)
317
-Adam Liszkai (adamos42)
318
-jkcoaster
319
-iosifidis
320
-Vlad (KoTmaxHo)
321
-manjotsingh0202
322
-mustafaa
323
-Eleazar Córcoles (MtrElee3)
324
-Yolopix
325
-tburette
326
-Gabriel Dugny (Gabigabigo)
327
-បងមាន តែអូន (cheaiphone267)
328
-Adrien “GameZone Tv” de Decker (redcraft007)
329
-Palana
330
-SkyLion
331
-Marque Ziqulr (lugtelort)
332
-chaironeko
333
-Samuel Nthoroane (Samuel_Nthoroane)
334
-etxondoko
335
-Hani Sweileh (hno.sweileh)
336
-Mixaill
337
-Zalki
338
-BWU Wheelman (Wheelman)
339
-Raylir
340
-盛凤阁 (execzero)
341
-nongnoobjung (kitcharuk_4)
342
-Jonathan (macburgerjunior)
343
-Bing Feng (fengbing123)
344
-McGuygnol
345
-ArcaneWater
346
-geimfis
347
-vargag159
348
-Charlie W. (wallichc)
349
-Johan Keller Jensen (JKeller)
350
-科技小白堂 (lipeng0820)
351
-FC Barcelona HD (kurdnews)
352
-Enderdrache LP (enderdrachelp)
353
-Sergei Fug1t1v3 (fug)
354
-ak-47root
355
-Runoff Screen (glebpozbnakov62)
356
-Meng Hao Li (GazCore)
357
-andymidside
358
-Append Huang (append)
359
-Santiago Pereyra (SannttVIII)
360
-L1Q
361
-Khedi
362
-Bo Alsemgeest (bo.alsemgeest.wausie)
363
-Themis T. (Deminho)
364
-powerdef
365
-Alexis Brandner (Alexinfos)
366
-TheOver (upmeboost)
367
-WeiYuanStudio
368
-DevilLorde
369
-Ivan (SKDown)
370
-Camille Nury (kamsdu30)
371
-Walt Gee (vovanych)
372
-HeroGamers (Fido2603)
373
-Prince_of_Raop
374
-NoPressure
375
-flor.com (florretardada)
376
-Robin Hielscher (Jack0r)
377
-Patrick Frings (Ragnos)
378
-Pere O. (gotrunks)
379
-Noi (Noi_noel2647)
380
-Hydroboost
381
-JackYeah
382
-Christian Henriksen (cnhenriksen)
383
-Henrik Mattsson-Mårn (rchk)
384
-WaterOtaku
385
-yair (5shekel)
386
-神成フィルム (kami00nari)
387
-JorRy
388
-Alican Gultekin (Vitaefinis)
389
-Vũ Hải Tây (tayngungo1999)
390
-Ramon Gonzalez (ramon200000)
391
-Esdras Tarsis (esdrastarsis)
392
-SandoBY
393
-אפיק רוזנר (afikr333)
394
-Federico Tensi (habby1337)
395
-Yuri Mihaqlov (yurijmi)
396
-Md Arafat (zonoiko)
397
-ghsi
398
-Mnsor The-Ghost (mnsor1722011)
399
-Julian Meijboom (julianmeijboom)
400
-Türker Yıldırım (turkeryildirim)
401
-Maksym Tymoshyk (maximillian_)
402
-Warchamp7
403
-FaZe Fakay (fazefakay)
404
-abydosan (abydoshun)
405
-Bob Wei (BobWaver)
406
-OYYZ
407
-Ville Närhi (daimaah)
408
-Tal Machani (talmachani)
409
-曹恩逢 (nelson22768384)
410
-Julia Drewniak (ewagsi)
411
-Jonas Svensson (jonassanojj99)
412
-RyyzQ
413
-antome
414
-basakbk
415
-Rodrigo Ipince (ipince)
416
-Jimmy Huang (f56112000)
417
-AndreLeonardo (andreleonardoyt)
418
-wordlessWind (wordlesswind)
419
-JustMaffie
420
-Aniol Pagès (aniolpages)
421
-Daniel Aundal (aundal)
422
-Alessandro Iepure (alessandro_iepure)
423
-SkylixX
424
-Hannes Blåman (thebluis)
425
-TR1D
426
-BoJustus
427
-ncb
428
-Mats Andreassen (MatsA)
429
-tomoe-musashi
430
-TacticalKebab
431
-Kuji Kitamura (KujiKita)
432
-cylin
433
-MUHADDIS MEDIA (muhaddismedia)
434
-Alex Shafer (enzanki-ars)
435
-Nicolai  (Nicolai9852)
436
-Yuki Yu (Yukiyu)
437
-Michał Lewczak (michal200507)
438
-Patryk Kunda (ner.i.ol)
439
-Tiim
440
+Afrikaans:
441
+ - Samuel Nthoroane (Samuel_Nthoroane)
442
+Albanian:
443
+ - Albin Pllana (albinnpllanaa)
444
+ - Aredio Vani (aredio.vani)
445
+Arabic:
446
+ - ZILZAL
447
+ - Abdullah AL-Qahtani (Za7ef_SA)
448
+ - majdcomp
449
+ - aaakjt
450
+ - Gol D. Ace (goldace)
451
+ - BWU Wheelman (Wheelman)
452
+ - Saleh Luxmaroc (salehoukiki)
453
+ - معتصم دعنا (rozana-media)
454
+ - Hani Sweileh (hno.sweileh)
455
+ - Mustafa2018
456
+ - Tensai
457
+ - Vainock (ivo.lemmert)
458
+ - Mnsor The-Ghost (mnsor1722011)
459
+ - FC Barcelona HD (kurdnews)
460
+ - Ndalabo Taema (hake_bsowq)
461
+ - dodgepong
462
+ - chaironeko
463
+Azerbaijani:
464
+ - Shahin Farzaliyev (Khan27)
465
+Basque:
466
+ - Alexander Gabilondo (alexgabi)
467
+ - Osoitz (Osoitz)
468
+ - Gol D. Ace (goldace)
469
+ - txaro (txaro)
470
+ - EG Gamer (eggamer131)
471
+ - etxondoko
472
+ - Vainock (ivo.lemmert)
473
+ - dodgepong
474
+Bengali:
475
+ - shamuntohamd
476
+ - Gol D. Ace (goldace)
477
+ - Vainock (ivo.lemmert)
478
+ - Nurul Huda (nurulhuda859)
479
+ - Md Arafat (zonoiko)
480
+Bulgarian:
481
+ - j3dy
482
+ - kalmarin
483
+ - Zakxaev68
484
+ - Seyhan Halil (yildirim17)
485
+ - Dremski
486
+ - Martin Georgiev (DivideByNone)
487
+ - Viktor Kitov (viktorkitov)
488
+ - Stanislav_Evtimov
489
+ - Stoyan Stoyanov (sstoyanov)
490
+ - Gol D. Ace (goldace)
491
+ - Vainock (ivo.lemmert)
492
+ - Ivan (SKDown)
493
+ - Warchamp7
494
+Catalan:
495
+ - Jaime Muñoz Martín (jmmartin_5)
496
+ - jmontane
497
+ - Nil Campamà (Soifam)
498
+ - Benet R. i Camps (BennyBeat) (BennyBeat)
499
+ - Aleix Vidal i Gaya (leixet)
500
+ - Gol D. Ace (goldace)
501
+ - Vainock (ivo.lemmert)
502
+ - Pere O. (gotrunks)
503
+ - Aniol Pagès (aniolpages)
504
+Chinese Simplified:
505
+ - Bob Liu (Akagi201)
506
+ - AlexGuo1998 (AlexGuo1998)
507
+ - wwj402_github
508
+ - PabloLiu (719018105)
509
+ - Gol D. Ace (goldace)
510
+ - Licardo (Licardo)
511
+ - AthlonHD (AthlonHD)
512
+ - Hexcolyte (Hexcolyte)
513
+ - Sasasu (Sasasu)
514
+ - cai_miao
515
+ - Boyuan Yang (073plan)
516
+ - David Kuo (s50407s)
517
+ - 鲜童 (xiananjyzy)
518
+ - Opportunity (OpportunityLiu)
519
+ - Forbidden (cptbl00dra1n)
520
+ - yunluzhang
521
+ - Inku Xuan (inkuxuan)
522
+ - copyliu
523
+ - Bing Feng (fengbing123)
524
+ - pan93412
525
+ - WeiYuanStudio
526
+ - 科技小白堂 (lipeng0820)
527
+ - Richard Stanway (r1ch)
528
+ - WaterOtaku
529
+ - dodgepong
530
+ - MarsYoung
531
+ - sorayuki
532
+ - cylin
533
+ - Vainock (ivo.lemmert)
534
+ - 赵杭灵 (h1679083640)
535
+ - wordlessWind (wordlesswind)
536
+ - OYYZ
537
+ - FaZe Fakay (fazefakay)
538
+ - Bob Wei (BobWaver)
539
+Chinese Traditional:
540
+ - TzeKei Lee (chikei)
541
+ - dodgepong
542
+ - Julian_Lai
543
+ - Chien-Yu Lin (u900011)
544
+ - pan93412
545
+ - David Kuo (s50407s)
546
+ - Michael Yeh (hinet60613)
547
+ - You-Ruei Tzeng (e222et)
548
+ - myjourney in Steemit (myjourney)
549
+ - craftwar
550
+ - Gol D. Ace (goldace)
551
+ - Inndy.Lin (inndy)
552
+ - Han-Jen Cheng (notexist)
553
+ - Watson Tsai (ashaneba)
554
+ - Meng Hao Li (GazCore)
555
+ - abc0922001
556
+ - Thomas (thomassth)
557
+ - louis921222
558
+ - ak-47root
559
+ - Jimmy Huang (f56112000)
560
+ - cai_miao
561
+ - Append Huang (append)
562
+ - 曹恩逢 (nelson22768384)
563
+ - Vainock (ivo.lemmert)
564
+ - xixiaofan (Hs0)
565
+ - tomoe-musashi
566
+ - FaZe Fakay (fazefakay)
567
+ - chaironeko
568
+ - JackYeah
569
+Croatian:
570
+ - medicmomcilo
571
+ - srdjan_m
572
+ - Runicar (dajtisina)
573
+ - OfficialwobY
574
+ - Gol D. Ace (goldace)
575
+ - Wildrage
576
+ - Maky (the.real.maky)
577
+ - Vainock (ivo.lemmert)
578
+ - dodgepong
579
+Czech:
580
+ - Jirka 'Venty' Michel (VentyCZ)
581
+ - Kryštof Černý (cleverline1mc)
582
+ - Sawanyo
583
+ - Kiznoh
584
+ - Gol D. Ace (goldace)
585
+ - Erik Bročko (ericek111)
586
+ - Vainock (ivo.lemmert)
587
+ - dodgepong
588
+Danish:
589
+ - NCAA (NCAA)
590
+ - Jens Hyllegaard (Hyllegaard)
591
+ - Anders G. Jørgensen (spirit55555)
592
+ - MaltahlGaming (maltahlgaming)
593
+ - Gol D. Ace (goldace)
594
+ - Anders Urban (minikaliffen)
595
+ - Richard Stanway (r1ch)
596
+ - Johan Keller Jensen (JKeller)
597
+ - Christian Henriksen (cnhenriksen)
598
+ - Vainock (ivo.lemmert)
599
+ - Marque Ziqulr (lugtelort)
600
+ - HeroGamers (Fido2603)
601
+ - Nicolai  (Nicolai9852)
602
+ - Daniel Aundal (aundal)
603
+Dutch:
604
+ - Eric Bataille (ThoNohT)
605
+ - Michel Snippe (michelsnippe)
606
+ - Greendweller
607
+ - Coen (Trigstur)
608
+ - exeldro (exeldro)
609
+ - Nicole (Dutchess_Nicole)
610
+ - robbert0891 (robbertoorschot38)
611
+ - Danny (Dkamps18)
612
+ - Gol D. Ace (goldace)
613
+ - Albakham (albakham)
614
+ - Jasper J (JassieJ)
615
+ - Bond-009
616
+ - b__dm
617
+ - F_Producktions
618
+ - Harm van den Hoek (harm27)
619
+ - markpc
620
+ - JorRy
621
+ - Julian Meijboom (julianmeijboom)
622
+ - Bo Alsemgeest (bo.alsemgeest.wausie)
623
+ - andymidside
624
+ - JustMaffie (JustMaffie)
625
+ - RyyzQ
626
+ - Vainock (ivo.lemmert)
627
+Estonian:
628
+ - MartinEwing
629
+ - AndresTraks
630
+ - Gol D. Ace (goldace)
631
+Filipino:
632
+ - dwaeji-aizelle (dwaeji-aizelle)
633
+ - jermel
634
+ - nyakayed (nyakayed)
635
+ - Loyd Stephen Jayme (loydjayme25)
636
+ - Gol D. Ace (goldace)
637
+ - Vainock (ivo.lemmert)
638
+ - Raylir
639
+Finnish:
640
+ - Arkkis (j)
641
+ - Jarska
642
+ - dodgepong
643
+ - Pyscowicz (Pyscowicz)
644
+ - Gol D. Ace (goldace)
645
+ - Obama (Obama44)
646
+ - Tero Keso (tero.keso)
647
+ - Vainock (ivo.lemmert)
648
+ - chaironeko
649
+ - Ville Närhi (daimaah)
650
+French:
651
+ - radzaquiel
652
+ - pkviet
653
+ - Stéphane Lepin (Palakis)
654
+ - Yberion
655
+ - Tocram2 (tocram2)
656
+ - DoK_-
657
+ - BoboopTeam
658
+ - Léo (leeo97one)
659
+ - Benjamin Cambour (lesinfox)
660
+ - RisedSky (THEMINECRAFT951)
661
+ - DarkInFire
662
+ - Youtubeur FR│Giaco35 (Giaco35)
663
+ - Pikana (Pikana)
664
+ - steve_fr
665
+ - Ben Turner (ben-turner)
666
+ - Deski_ (Deski_)
667
+ - DarckCrystale
668
+ - Gol D. Ace (goldace)
669
+ - Grisou2907
670
+ - Theguiguix
671
+ - Gabriel Dugny (Gabigabigo)
672
+ - McGuygnol
673
+ - Yolopix
674
+ - GANGAT Naeem (zboggum)
675
+ - kyllian (tardigradeus)
676
+ - BaguetteDePain_
677
+ - Richard Stanway (r1ch)
678
+ - Mathieu Hautebas (matteyeux)
679
+ - Zalki
680
+ - dodgepong
681
+ - 🌠 DarK | #Hello 🌠 (DarKTV_FR)
682
+ - Vainock (ivo.lemmert)
683
+ - illusdidi
684
+ - Adrien “GameZone Tv” de Decker (redcraft007)
685
+ - Warchamp7
686
+ - Albakham (albakham)
687
+ - SkylixX
688
+ - chaironeko
689
+ - Camille Nury (kamsdu30)
690
+ - Alexis Brandner (Alexinfos)
691
+ - tburette
692
+Galician:
693
+ - Xesús M. Mosquera Carregal (xesusmosquera)
694
+ - Gol D. Ace (goldace)
695
+ - chaironeko
696
+ - Vainock (ivo.lemmert)
697
+Georgian:
698
+ - georgianizator
699
+ - EduCare Razmik Badalyan (badalyanrazmik)
700
+ - Gol D. Ace (goldace)
701
+ - Vainock (ivo.lemmert)
702
+German:
703
+ - Gol D. Ace (goldace)
704
+ - Vainock (ivo.lemmert)
705
+ - Michael Fabian Dirks (Xaymar)
706
+ - dodgepong
707
+ - Dennis Giebert (Isegrim) (isegrimderwolf)
708
+ - Benjamin Klettbach (benklett)
709
+ - Gregor Bigalke (gregtcltk)
710
+ - Sven Kirschbaum (fallobst22) (fallobst22)
711
+ - Manuel (ElectronicWar)
712
+ - eZ_KrieG3R | Der Fabse (fabian.schwarz.26.06.1998)
713
+ - Palana
714
+ - Tim (robske_110) (robske110)
715
+ - Jonas Otto (jottosmail)
716
+ - mdod
717
+ - Jonathan (macburgerjunior)
718
+ - Prince_of_Raop
719
+ - Enderdrache LP (enderdrachelp)
720
+ - Robin Hielscher (Jack0r)
721
+ - lebaston100.de
722
+ - Richard Stanway (r1ch)
723
+ - Patrick Frings (Ragnos)
724
+ - WurstOnAir
725
+ - BoJustus
726
+ - AndreLeonardo (andreleonardoyt)
727
+ - Tiim
728
+Greek:
729
+ - Scourgemcdak
730
+ - Mepharees
731
+ - Katerina (katerinaramm)
732
+ - Tasos Sahanidis (tatokis)
733
+ - George T. (tzikas97)
734
+ - Alex Kalles (alexakis1997)
735
+ - iosifidis
736
+ - Gol D. Ace (goldace)
737
+ - Vainock (ivo.lemmert)
738
+ - dodgepong
739
+ - Themis T. (Deminho)
740
+ - chaironeko
741
+Hebrew:
742
+ - amirsher
743
+ - lonelywolf11
744
+ - Chemi (Chemi)
745
+ - epic_ziver_D (epic_ziver_D)
746
+ - Uri Ben Yossef (uribenyossef)
747
+ - Gol D. Ace (goldace)
748
+ - Light1c3
749
+ - ghsi
750
+ - yair (5shekel)
751
+ - TheOver (upmeboost)
752
+ - djsavta
753
+ - אפיק רוזנר (afikr333)
754
+ - Vainock (ivo.lemmert)
755
+ - Tal Machani (talmachani)
756
+Hindi:
757
+ - SneakyFish5
758
+ - shamuntohamd
759
+Hungarian:
760
+ - Gige
761
+ - Gol D. Ace (goldace)
762
+ - Adam Liszkai (adamos42)
763
+ - abydosan (abydoshun)
764
+ - dodgepong
765
+ - vargag159
766
+ - Vainock (ivo.lemmert)
767
+Italian:
768
+ - Manfre#9262 (manfre)
769
+ - LordShadow95
770
+ - Marocco2
771
+ - smart2128
772
+ - Tiwi90 (tiwi90)
773
+ - dodgepong
774
+ - imcesca
775
+ - Michele (ScrappyCocco)
776
+ - Edoardo Macrì (edomacri)
777
+ - ScemEnzo
778
+ - Tommaso Cammelli (tomganguz) (tomganguz)
779
+ - Edoardo “OfficialDJMela” Macrì (agersforum)
780
+ - Martazza (Martazza)
781
+ - Gol D. Ace (goldace)
782
+ - gianni morandi (strabbioboy)
783
+ - Fisherozzo
784
+ - Alessandro Sarto (alesarto03)
785
+ - Sergio Beneduce (sbeneduce)
786
+ - Albakham (albakham)
787
+ - Andrea-M3
788
+ - SkyLion
789
+ - Vainock (ivo.lemmert)
790
+ - Federico Tensi (habby1337)
791
+ - Silpheel
792
+ - Alessandro Iepure (alessandro_iepure)
793
+ - riccardotornesello
794
+Japanese:
795
+ - shousa
796
+ - Kenta Takumi (kenta0644)
797
+ - dodgepong
798
+ - SplatRT
799
+ - Gol D. Ace (goldace)
800
+ - 神成フィルム (kami00nari)
801
+ - ato lash (hal_shu_sato)
802
+ - Noi (Noi_noel2647)
803
+ - CKK COBALT (CKKCOBALT)
804
+ - Yuki Yu (Yukiyu)
805
+ - chaironeko
806
+ - Bob Liu (Akagi201)
807
+ - Alex Shafer (enzanki-ars)
808
+ - Vainock (ivo.lemmert)
809
+Khmer:
810
+ - បងមាន តែអូន (cheaiphone267)
811
+Korean:
812
+ - ynetwork (ynetwork)
813
+ - Gol D. Ace (goldace)
814
+ - RedditRook
815
+ - Jong Kwon Choi (dailypro)
816
+ - antome
817
+Kurdish:
818
+ - Omer Kurdish (OmerKurd)
819
+Lithuanian:
820
+ - Justas Vilimas (tyntas)
821
+ - xNaii (lyrikas5)
822
+ - Vainock (ivo.lemmert)
823
+ - Gol D. Ace (goldace)
824
+Malay:
825
+ - amsyar ZeRo (amsyarminer555)
826
+ - WeingHong
827
+ - Gol D. Ace (goldace)
828
+ - dodgepong
829
+ - Vainock (ivo.lemmert)
830
+Mongolian:
831
+ - begjan
832
+ - Vainock (ivo.lemmert)
833
+Nigerian Pidgin:
834
+Norwegian Bokmal:
835
+ - Taesh (magnusmbratteng)
836
+ - Imre Kristoffer Eilertsen (DandelionSprout)
837
+ - dodgepong
838
+ - Oddbjørn Grytdal (Fooshi)
839
+ - Tommy (nwgat)
840
+ - Patrick Williamson (wpatrick59)
841
+ - Mats Edvin Aarø (matsedvin)
842
+ - mgKaiztra
843
+ - Syver Stensholt (sssandum)
844
+ - Alex Thomassen (Decicus)
845
+ - OsteHovel
846
+ - areedw
847
+ - Sander Skjegstad (r530er)
848
+ - Gol D. Ace (goldace)
849
+ - Legend27
850
+ - Vainock (ivo.lemmert)
851
+ - chaironeko
852
+ - Mats Andreassen (MatsA)
853
+Norwegian Nynorsk:
854
+ - Imre Kristoffer Eilertsen (DandelionSprout)
855
+Persian:
856
+ - MZ MAXIMUM (mahdigamermax)
857
+ - Alireza Firouzi (pikhoshorg)
858
+ - peymanr34
859
+Pirate English:
860
+ - Matt Gajownik (WizardCM)
861
+ - Uaiquqjwnsns
862
+ - Matthew Hatcher (MatthewSH)
863
+ - jkcoaster
864
+ - Emu-Phoenix
865
+ - Coen (Trigstur)
866
+ - Charlie W. (wallichc)
867
+ - Vainock (ivo.lemmert)
868
+ - chaironeko
869
+ - Gol D. Ace (goldace)
870
+ - ncb
871
+Polish:
872
+ - grocal (grocal)
873
+ - Michał Durak (micechal)
874
+ - The Syntox (TheSyntox)
875
+ - Vassamo (jotpl69)
876
+ - Damian Korcz (damikiller)
877
+ - opl
878
+ - Gol D. Ace (goldace)
879
+ - Łukasz Wójcik (lwojcik)
880
+ - Daniel Wieczorek (Kennyluz)
881
+ - Albakham (albakham)
882
+ - popek069
883
+ - sebek1pan
884
+ - Mateusz (Silesianek)
885
+ - Julia Drewniak (ewagsi)
886
+ - dodgepong
887
+ - Vainock (ivo.lemmert)
888
+ - Patryk Kunda (ner.i.ol)
889
+ - Michał Lewczak (michal200507)
890
+Portuguese:
891
+ - André Biscaia (LazP)
892
+ - Ev1lbl0w
893
+ - dodgepong
894
+ - joaofvieira
895
+ - Tomás Antunes (tomasantunes)
896
+ - joaoboia
897
+ - Albakham (albakham)
898
+ - alexandre433
899
+ - Gol D. Ace (goldace)
900
+Portuguese, Brazilian:
901
+ - Shaolin (admshao)
902
+ - Ramon Mendes (rbrgameplays)
903
+ - Fabio Madia (Shaolin)
904
+ - TFSThiagoBR98
905
+ - CaioWzy
906
+ - clr0dr1g
907
+ - aalonsomb
908
+ - André Gama (ToeOficial)
909
+ - Gol D. Ace (goldace)
910
+ - Emanoel Lopes (emanoelopes)
911
+ - mizifih
912
+ - DevilLorde
913
+ - flor.com (florretardada)
914
+ - Vainock (ivo.lemmert)
915
+ - dodgepong
916
+ - Esdras Tarsis (esdrastarsis)
917
+ - Ramon Gonzalez (ramon200000)
918
+Punjabi:
919
+ - manjotsingh0202
920
+Romanian:
921
+ - Cristian Silaghi (stelistcristi)
922
+ - banrek
923
+ - Hisashi
924
+ - BlakeNowah
925
+ - Andrei Ionescu (abcdedjdmddx)
926
+ - Victor Paul (corvinpaul)
927
+ - Skellytone
928
+ - Mihai G (babasghenciu)
929
+ - Gol D. Ace (goldace)
930
+ - dodgepong
931
+ - chaironeko
932
+ - Vainock (ivo.lemmert)
933
+Russian:
934
+ - Alek Nirov (dectanova)
935
+ - Pavel (Shevalie)
936
+ - dodgepong
937
+ - VNGXR
938
+ - Gol D. Ace (goldace)
939
+ - Bugo (Bugo)
940
+ - Andy (anry025)
941
+ - Strange Grey Cat (StrangeGreyCat)
942
+ - Yaroslav (MrYadro)
943
+ - Andrei Stepanov (adem4ik)
944
+ - fromgate (fromgate)
945
+ - Vlad (KoTmaxHo)
946
+ - Runoff Screen (glebpozbnakov62)
947
+ - Mixaill
948
+ - Vainock (ivo.lemmert)
949
+ - Sergei Fug1t1v3 (fug)
950
+ - Walt Gee (vovanych)
951
+ - Serge Sklyarov (sergesklyarov)
952
+ - Yuri Mihaqlov (yurijmi)
953
+ - MUHADDIS MEDIA (muhaddismedia)
954
+ - TR1D
955
+ - Sigge Stjärnholm (Kladdy)
956
+ - SandoBY
957
+ - Kuji Kitamura (KujiKita)
958
+Scottish Gaelic:
959
+ - GunChleoc
960
+ - Vainock (ivo.lemmert)
961
+Serbian (Cyrillic):
962
+ - medicmomcilo
963
+ - Acamicamacaraca
964
+ - Gol D. Ace (goldace)
965
+ - dodgepong
966
+ - LittleGirl_WithPonyTail (alexs1320)
967
+ - Vainock (ivo.lemmert)
968
+Serbian (Latin):
969
+ - medicmomcilo
970
+ - LittleGirl_WithPonyTail (alexs1320)
971
+ - Gol D. Ace (goldace)
972
+ - Rale Sarcevic (ralesarcevic)
973
+ - dodgepong
974
+ - Vainock (ivo.lemmert)
975
+Slovak:
976
+ - Luki (luki1412)
977
+ - Ján M (longmoped)
978
+ - Erik Bročko (ericek111)
979
+ - Anton Lokaj (anlo)
980
+ - LoLLy Nka (lollynka279)
981
+ - Gol D. Ace (goldace)
982
+ - Vainock (ivo.lemmert)
983
+Slovenian:
984
+ - kristjan.krusic (krusic22)
985
+ - MG lolenstine (mglolenstine)
986
+ - Grimpy
987
+ - Gol D. Ace (goldace)
988
+ - ArcaneWater
989
+ - Vainock (ivo.lemmert)
990
+ - dodgepong
991
+Southern Sotho:
992
+ - Samuel Nthoroane (Samuel_Nthoroane)
993
+Spanish:
994
+ - Roberto Lorenzo (HonzoNebro)
995
+ - Jaime Martinez Rincon (mrjaime1999)
996
+ - Marcos Vidal Martinez (M4RK22)
997
+ - Jaime Muñoz Martín (jmmartin_5)
998
+ - EG Gamer (eggamer131)
999
+ - Dalia Sofía Magallón Páramo (SweetSofiMC)
1000
+ - Gol D. Ace (goldace)
1001
+ - Monsteer
1002
+ - Pilar G. (TheMadnessLady)
1003
+ - Maximiliano Schtroumpftech Pena-Roig (som2tokmynam)
1004
+ - Carlos Plata (carlosesgenial33)
1005
+ - Ruben Deig Ramos (rdeigramos)
1006
+ - Marcos Vidal (markitos.maki22)
1007
+ - eskaidom (sergiomalagonmartin)
1008
+ - Alex E. D. B. (alexedb)
1009
+ - Santiago Pereyra (SannttVIII)
1010
+ - Eleazar Córcoles (MtrElee3)
1011
+ - eemiroj
1012
+ - Ray (Ipsumry)
1013
+ - makiza1 (micosil_2)
1014
+ - Sigge Stjärnholm (Kladdy)
1015
+ - henrycontreras
1016
+ - Vainock (ivo.lemmert)
1017
+ - chaironeko
1018
+ - dodgepong
1019
+ - amssusgameplays (willifake052)
1020
+ - Rodrigo Ipince (ipince)
1021
+ - David Sonico (davidsubsonico)
1022
+Swedish:
1023
+ - Anton R (FirePhoenix)
1024
+ - Sigge Stjärnholm (Kladdy)
1025
+ - Laccy IEST (Laccy)
1026
+ - Olle Dahström (odahlstrom)
1027
+ - Gustav Ekner (ekner)
1028
+ - Gol D. Ace (goldace)
1029
+ - Jonatan Nyberg (sweuser)
1030
+ - Henrik Mattsson-Mårn (rchk)
1031
+ - chaironeko
1032
+ - Vainock (ivo.lemmert)
1033
+ - Jonas Svensson (jonassanojj99)
1034
+ - TacticalKebab
1035
+ - Hannes Blåman (thebluis)
1036
+Tagalog:
1037
+ - dandalion
1038
+ - philiparniebinag
1039
+ - jermel
1040
+ - jbeguna04
1041
+ - Red Dayao (steemitph)
1042
+ - Gol D. Ace (goldace)
1043
+ - Vainock (ivo.lemmert)
1044
+ - Raylir
1045
+Tamil:
1046
+ - anto27
1047
+ - Gol D. Ace (goldace)
1048
+ - Vainock (ivo.lemmert)
1049
+Thai:
1050
+ - sakuhanachan* (sakuhanachanloli)
1051
+ - ธีรภัทร์ โยชนา (Gataro)
1052
+ - Sakia Normal Human (arcanaarcana5)
1053
+ - 盛凤阁 (execzero)
1054
+ - nongnoobjung (kitcharuk_4)
1055
+ - Vainock (ivo.lemmert)
1056
+ - dodgepong
1057
+ - Gol D. Ace (goldace)
1058
+Turkish:
1059
+ - Ali Kömesöğütlü (Mobile46) (byzlo685)
1060
+ - omer.karagoz (mrkaragoz)
1061
+ - Cemal Dursun (cmldrs)
1062
+ - Savas Tokmak (Laserist)
1063
+ - Murat Karagöz (anemon_1994)
1064
+ - BruhSoundeffect2 (DoomerDoge)
1065
+ - gecebekcisi1
1066
+ - Gol D. Ace (goldace)
1067
+ - Umut kılıç (kilic190787)
1068
+ - berkcan uçan (ibnehayati)
1069
+ - Khedi
1070
+ - mustafaa
1071
+ - Richard Stanway (r1ch)
1072
+ - Hydroboost (Hydroboost)
1073
+ - Vainock (ivo.lemmert)
1074
+ - Türker Yıldırım (turkeryildirim)
1075
+ - chaironeko
1076
+ - basakbk
1077
+ - Alican Gultekin (Vitaefinis)
1078
+Ukrainian:
1079
+ - SuslikV
1080
+ - Юрій (Devinit)
1081
+ - Andy (anry025)
1082
+ - Sergey (LegionAnon)
1083
+ - L1Q
1084
+ - Gol D. Ace (goldace)
1085
+ - Vainock (ivo.lemmert)
1086
+ - Maksym Tymoshyk (maximillian_)
1087
+ - NoPressure
1088
+ - powerdef
1089
+ - geimfis
1090
+ - បងមាន តែអូន (cheaiphone267)
1091
+Urdu (Pakistan):
1092
+ - Rana Awais (ehtisham)
1093
+ - tahirsada
1094
+ - shamuntohamd
1095
+Vietnamese:
1096
+ - Johnny “max20091” Utah (boostyourprogram)
1097
+ - Hưng Nguyễn (hoyostudio)
1098
+ - ngoisaosang (ngoisaosang)
1099
+ - Drake Strike (phjtieudoc)
1100
+ - Gol D. Ace (goldace)
1101
+ - IoeCmcomc (Ioe2015) (hopdaigia2004)
1102
+ - BIGO - 지혜 (parkjihye96)
1103
+ - Hà Phi Hùng (haphihungcom)
1104
+ - Vainock (ivo.lemmert)
1105
+ - Vũ Hải Tây (tayngungo1999)
1106
+ - NCAA (NCAA)
1107
+ - dodgepong
1108
obs-studio-23.1.0.tar.xz/CI/before-script-osx.sh -> obs-studio-23.2.0.tar.xz/CI/before-script-osx.sh Changed
7
 
1
@@ -12,4 +12,5 @@
2
 -DVLCPath=$PWD/../../vlc-3.0.4 \
3
 -DBUILD_BROWSER=ON \
4
 -DBROWSER_DEPLOY=ON \
5
+-DBUILD_CAPTIONS=ON \
6
 -DCEF_ROOT_DIR=$PWD/../../cef_binary_${CEF_BUILD_VERSION}_macosx64 ..
7
obs-studio-23.1.0.tar.xz/CI/install-dependencies-linux-ubuntu16.sh -> obs-studio-23.2.0.tar.xz/CI/install-dependencies-linux-ubuntu16.sh Changed
9
 
1
@@ -30,6 +30,7 @@
2
         libvlc-dev \
3
         libx11-dev \
4
         libx264-dev \
5
+        libxcb-randr0-dev \
6
         libxcb-shm0-dev \
7
         libxcb-xinerama0-dev \
8
         libxcomposite-dev \
9
obs-studio-23.1.0.tar.xz/CI/install-dependencies-linux.sh -> obs-studio-23.2.0.tar.xz/CI/install-dependencies-linux.sh Changed
9
 
1
@@ -33,6 +33,7 @@
2
         libvlc-dev \
3
         libx11-dev \
4
         libx264-dev \
5
+        libxcb-randr0-dev \
6
         libxcb-shm0-dev \
7
         libxcb-xinerama0-dev \
8
         libxcomposite-dev \
9
obs-studio-23.1.0.tar.xz/CI/install-dependencies-osx.sh -> obs-studio-23.2.0.tar.xz/CI/install-dependencies-osx.sh Changed
30
 
1
@@ -10,7 +10,7 @@
2
 # Echo all commands before executing
3
 set -v
4
 
5
-if [ -v "$TRAVIS" ]; then
6
+if [[ $TRAVIS ]]; then
7
   git fetch --unshallow
8
 fi
9
 
10
@@ -26,8 +26,9 @@
11
 brew update
12
 
13
 #Base OBS Deps and ccache
14
-brew install jack speexdsp ccache swig mbedtls
15
+brew install jack speexdsp ccache mbedtls
16
 brew install https://gist.githubusercontent.com/DDRBoxman/b3956fab6073335a4bf151db0dcbd4ad/raw/ed1342a8a86793ea8c10d8b4d712a654da121ace/qt.rb
17
+brew install https://gist.githubusercontent.com/DDRBoxman/4cada55c51803a2f963fa40ce55c9d3e/raw/572c67e908bfbc1bcb8c476ea77ea3935133f5b5/swig.rb
18
 
19
 export PATH=/usr/local/opt/ccache/libexec:$PATH
20
 ccache -s || echo "CCache is not available."
21
@@ -56,6 +57,8 @@
22
 cd ./cef_binary_${CEF_BUILD_VERSION}_macosx64
23
 # remove a broken test
24
 sed -i '.orig' '/add_subdirectory(tests\/ceftests)/d' ./CMakeLists.txt
25
+# target 10.11
26
+sed -i '.orig' s/\"10.9\"/\"10.11\"/ ./cmake/cef_variables.cmake
27
 mkdir build
28
 cd ./build
29
 cmake -DCMAKE_CXX_FLAGS="-std=c++11 -stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-std=c++11 -stdlib=libc++" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 ..
30
obs-studio-23.1.0.tar.xz/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/CMakeLists.txt Changed
36
 
1
@@ -32,16 +32,6 @@
2
 include(ObsCpack)
3
 include(GNUInstallDirs)
4
 
5
-if(WIN32)
6
-   string(REPLACE "-" ";" UI_VERSION_SPLIT ${OBS_VERSION})
7
-   list(GET UI_VERSION_SPLIT 0 UI_VERSION)
8
-   string(REPLACE "." ";" UI_VERSION_SEMANTIC ${UI_VERSION})
9
-   list(GET UI_VERSION_SEMANTIC 0 UI_VERSION_MAJOR)
10
-   list(GET UI_VERSION_SEMANTIC 1 UI_VERSION_MINOR)
11
-   list(GET UI_VERSION_SEMANTIC 2 UI_VERSION_PATCH)
12
-   configure_file(${CMAKE_CURRENT_SOURCE_DIR}/UI/obs.rc.in ${CMAKE_CURRENT_SOURCE_DIR}/UI/obs.rc)
13
-endif()
14
-
15
 # Must be a string in the format of "x.x.x-rcx"
16
 if(DEFINED RELEASE_CANDIDATE)
17
    set(OBS_VERSION "${RELEASE_CANDIDATE}")
18
@@ -59,6 +49,17 @@
19
    set(OBS_RELEASE_CANDIDATE 0)
20
 endif()
21
 
22
+# Binary Versioning for Windows
23
+if(WIN32)
24
+   string(REPLACE "-" ";" UI_VERSION_SPLIT ${OBS_VERSION})
25
+   list(GET UI_VERSION_SPLIT 0 UI_VERSION)
26
+   string(REPLACE "." ";" UI_VERSION_SEMANTIC ${UI_VERSION})
27
+   list(GET UI_VERSION_SEMANTIC 0 UI_VERSION_MAJOR)
28
+   list(GET UI_VERSION_SEMANTIC 1 UI_VERSION_MINOR)
29
+   list(GET UI_VERSION_SEMANTIC 2 UI_VERSION_PATCH)
30
+   configure_file(UI/obs.rc.in ${PROJECT_BINARY_DIR}/obs.rc)
31
+endif()
32
+
33
 if(MSVC AND NOT EXISTS "${CMAKE_BINARY_DIR}/ALL_BUILD.vcxproj.user")
34
    file(GENERATE
35
        OUTPUT "${CMAKE_BINARY_DIR}/ALL_BUILD.vcxproj.user"
36
obs-studio-23.1.0.tar.xz/CONTRIBUTING.rst -> obs-studio-23.2.0.tar.xz/CONTRIBUTING.rst Changed
24
 
1
@@ -52,10 +52,11 @@
2
  - Make sure commit titles are always in present tense, and are not
3
    followed by punctuation.
4
 
5
- - Prefix commit titles with the module name, followed by a colon and a
6
-   space (unless modifying a file in the base directory).  When
7
-   modifying cmake modules, prefix with "cmake".  So for example, if you
8
-   are modifying the obs-ffmpeg plugin::
9
+ - Prefix each commit's titles with the module name, followed by a colon
10
+   and a space (unless modifying a file in the base directory).  After
11
+   that, the first word should be capitalized.
12
+
13
+   So for example, if you are modifying the obs-ffmpeg plugin::
14
 
15
      obs-ffmpeg: Fix bug with audio output
16
 
17
@@ -63,4 +64,6 @@
18
 
19
      libobs: Fix source not displaying
20
 
21
+   Note: When modifying cmake modules, just prefix with "cmake".
22
+
23
  - If you still need examples, please view the commit history.
24
obs-studio-23.1.0.tar.xz/README.rst -> obs-studio-23.2.0.tar.xz/README.rst Changed
23
 
1
@@ -39,6 +39,8 @@
2
 
3
  - Developer/API Documentation: https://obsproject.com/docs
4
 
5
+ - Donating/backing/sponsoring: https://obsproject.com/contribute
6
+
7
  - Bug Tracker: https://obsproject.com/mantis/
8
 
9
    (Note: The bug tracker is linked to forum accounts.  To use the bug
10
@@ -47,6 +49,12 @@
11
 Contributing
12
 ------------
13
 
14
+ - If you would like to help fund or sponsor the project, you can do so
15
+   via `Patreon <https://www.patreon.com/obsproject>`_, `OpenCollective
16
+   <https://opencollective.com/obsproject>`_, or `PayPal
17
+   <https://www.paypal.me/obsproject>`_.  See our `contribute page
18
+   <https://obsproject.com/contribute>`_ for more information.
19
+
20
  - If you wish to contribute code to the project, please make sure to
21
    read the coding and commit guidelines:
22
    https://github.com/obsproject/obs-studio/blob/master/CONTRIBUTING.rst
23
obs-studio-23.1.0.tar.xz/UI/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/UI/CMakeLists.txt Changed
68
 
1
@@ -7,7 +7,7 @@
2
    set(FIND_MODE QUIET)
3
 endif()
4
 
5
-if(BROWSER_AVAILABLE_INTERNAL AND WIN32)
6
+if(BROWSER_AVAILABLE_INTERNAL)
7
    add_definitions(-DBROWSER_AVAILABLE)
8
 endif()
9
 
10
@@ -97,7 +97,7 @@
11
        win-update/update-window.cpp
12
        win-update/win-update.cpp
13
        win-update/win-update-helpers.cpp
14
-       obs.rc)
15
+       ${obs-studio_BINARY_DIR}/obs.rc)
16
    set(obs_PLATFORM_HEADERS
17
        win-update/update-window.hpp
18
        win-update/win-update.hpp
19
@@ -232,16 +232,16 @@
20
    focus-list.cpp
21
    menu-button.cpp
22
    double-slider.cpp
23
+   slider-ignorewheel.cpp
24
+   combobox-ignorewheel.cpp
25
+   spinbox-ignorewheel.cpp
26
    volume-control.cpp
27
    adv-audio-control.cpp
28
    item-widget-helpers.cpp
29
-   visibility-checkbox.cpp
30
-   locked-checkbox.cpp
31
    horizontal-scroll-area.cpp
32
    vertical-scroll-area.cpp
33
    visibility-item-widget.cpp
34
    slider-absoluteset-style.cpp
35
-   source-list-widget.cpp
36
    qt-display.cpp
37
    crash-report.cpp
38
    hotkey-edit.cpp
39
@@ -283,6 +283,9 @@
40
    display-helpers.hpp
41
    balance-slider.hpp
42
    double-slider.hpp
43
+   slider-ignorewheel.hpp
44
+   combobox-ignorewheel.hpp
45
+   spinbox-ignorewheel.hpp
46
    focus-list.hpp
47
    menu-button.hpp
48
    mute-checkbox.hpp
49
@@ -296,7 +299,6 @@
50
    vertical-scroll-area.hpp
51
    visibility-item-widget.hpp
52
    slider-absoluteset-style.hpp
53
-   source-list-widget.hpp
54
    qt-display.hpp
55
    crash-report.hpp
56
    hotkey-edit.hpp
57
@@ -378,9 +380,7 @@
58
 install_obs_data_file(obs ../AUTHORS obs-studio/authors)
59
 
60
 if (UNIX AND UNIX_STRUCTURE AND NOT APPLE)
61
-   install(FILES dist/obs.desktop DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/applications)
62
-   install(FILES forms/images/obs.png
63
-       DESTINATION ${CMAKE_INSTALL_FULL_DATAROOTDIR}/icons/hicolor/256x256/apps)
64
+   add_subdirectory(xdg-data)
65
 endif()
66
 
67
 add_subdirectory(frontend-plugins)
68
obs-studio-23.1.0.tar.xz/UI/adv-audio-control.cpp -> obs-studio-23.2.0.tar.xz/UI/adv-audio-control.cpp Changed
76
 
1
@@ -13,6 +13,9 @@
2
 #define NSEC_PER_MSEC 1000000
3
 #endif
4
 
5
+#define MIN_DB -96.0
6
+#define MAX_DB 26.0
7
+
8
 OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
9
    : source(source_)
10
 {
11
@@ -29,7 +32,7 @@
12
    labelL                         = new QLabel();
13
    labelR                         = new QLabel();
14
    nameLabel                      = new QLabel();
15
-   volume                         = new QSpinBox();
16
+   volume                         = new QDoubleSpinBox();
17
    forceMono                      = new QCheckBox();
18
    balance                        = new BalanceSlider();
19
 #if defined(_WIN32) || defined(__APPLE__) || HAVE_PULSEAUDIO
20
@@ -71,9 +74,15 @@
21
    nameLabel->setText(QT_UTF8(sourceName));
22
    nameLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
23
 
24
-   volume->setMinimum(0);
25
-   volume->setMaximum(2000);
26
-   volume->setValue(int(vol * 100.0f));
27
+   volume->setMinimum(MIN_DB - 0.1);
28
+   volume->setMaximum(MAX_DB);
29
+   volume->setSingleStep(0.1);
30
+   volume->setDecimals(1);
31
+   volume->setSuffix(" dB");
32
+   volume->setValue(obs_mul_to_db(vol));
33
+
34
+   if (volume->value() < MIN_DB)
35
+       volume->setSpecialValueText("-inf dB");
36
 
37
    forceMono->setChecked((flags & OBS_SOURCE_FLAG_FORCE_MONO) != 0);
38
 
39
@@ -147,8 +156,8 @@
40
    mixerContainer->layout()->addWidget(mixer5);
41
    mixerContainer->layout()->addWidget(mixer6);
42
 
43
-   QWidget::connect(volume, SIGNAL(valueChanged(int)),
44
-           this, SLOT(volumeChanged(int)));
45
+   QWidget::connect(volume, SIGNAL(valueChanged(double)),
46
+           this, SLOT(volumeChanged(double)));
47
    QWidget::connect(forceMono, SIGNAL(clicked(bool)),
48
            this, SLOT(downmixMonoChanged(bool)));
49
    QWidget::connect(balance, SIGNAL(valueChanged(int)),
50
@@ -259,7 +268,7 @@
51
 void OBSAdvAudioCtrl::SourceVolumeChanged(float value)
52
 {
53
    volume->blockSignals(true);
54
-   volume->setValue(int(round(value * 100.0f)));
55
+   volume->setValue(obs_mul_to_db(value));
56
    volume->blockSignals(false);
57
 }
58
 
59
@@ -281,9 +290,14 @@
60
 /* ------------------------------------------------------------------------- */
61
 /* Qt control callbacks */
62
 
63
-void OBSAdvAudioCtrl::volumeChanged(int percentage)
64
+void OBSAdvAudioCtrl::volumeChanged(double db)
65
 {
66
-   float val = float(percentage) / 100.0f;
67
+   if (db < MIN_DB) {
68
+       volume->setSpecialValueText("-inf dB");
69
+       db = -INFINITY;
70
+   }
71
+
72
+   float val = obs_db_to_mul(db);
73
    obs_source_set_volume(source, val);
74
 }
75
 
76
obs-studio-23.1.0.tar.xz/UI/adv-audio-control.hpp -> obs-studio-23.2.0.tar.xz/UI/adv-audio-control.hpp Changed
27
 
1
@@ -3,6 +3,7 @@
2
 #include <obs.hpp>
3
 #include <QWidget>
4
 #include <QPointer>
5
+#include <QDoubleSpinBox>
6
 #include "balance-slider.hpp"
7
 
8
 class QGridLayout;
9
@@ -22,7 +23,7 @@
10
    QPointer<QWidget>      balanceContainer;
11
 
12
    QPointer<QLabel>       nameLabel;
13
-   QPointer<QSpinBox>     volume;
14
+   QPointer<QDoubleSpinBox> volume;
15
    QPointer<QCheckBox>    forceMono;
16
    QPointer<BalanceSlider>balance;
17
    QPointer<QLabel>       labelL;
18
@@ -59,7 +60,7 @@
19
    void SourceSyncChanged(int64_t offset);
20
    void SourceMixersChanged(uint32_t mixers);
21
 
22
-   void volumeChanged(int percentage);
23
+   void volumeChanged(double db);
24
    void downmixMonoChanged(bool checked);
25
    void balanceChanged(int val);
26
    void syncOffsetChanged(int milliseconds);
27
obs-studio-23.1.0.tar.xz/UI/api-interface.cpp -> obs-studio-23.2.0.tar.xz/UI/api-interface.cpp Changed
43
 
1
@@ -67,6 +67,11 @@
2
        return (void*)main->winId();
3
    }
4
 
5
+   void *obs_frontend_get_system_tray(void) override
6
+   {
7
+       return (void*)main->trayIcon.data();
8
+   }
9
+
10
    void obs_frontend_get_scenes(
11
            struct obs_frontend_source_list *sources) override
12
    {
13
@@ -134,6 +139,17 @@
14
                Q_ARG(OBSSource, OBSSource(transition)));
15
    }
16
 
17
+   int obs_frontend_get_transition_duration(void) override
18
+   {
19
+       return main->ui->transitionDuration->value();
20
+   }
21
+
22
+   void obs_frontend_set_transition_duration(int duration) override
23
+   {
24
+       QMetaObject::invokeMethod(main->ui->transitionDuration, "setValue",
25
+           Q_ARG(int, duration));
26
+   }
27
+
28
    void obs_frontend_get_scene_collections(
29
            std::vector<std::string> &strings) override
30
    {
31
@@ -434,6 +450,11 @@
32
        main->SetPreviewProgramMode(enable);
33
    }
34
 
35
+   void obs_frontend_preview_program_trigger_transition(void) override
36
+   {
37
+       QMetaObject::invokeMethod(main, "TransitionClicked");
38
+   }
39
+
40
    bool obs_frontend_preview_enabled(void) override
41
    {
42
        return main->previewEnabled;
43
obs-studio-23.1.0.tar.xz/UI/audio-encoders.hpp -> obs-studio-23.2.0.tar.xz/UI/audio-encoders.hpp Changed
7
 
1
@@ -1,3 +1,5 @@
2
+#pragma once
3
+
4
 #include <obs.hpp>
5
 
6
 #include <map>
7
obs-studio-23.1.0.tar.xz/UI/auth-oauth.cpp -> obs-studio-23.2.0.tar.xz/UI/auth-oauth.cpp Changed
10
 
1
@@ -301,7 +301,7 @@
2
 
3
    if (bwtest && strcmp(this->service(), "Twitch") == 0)
4
        obs_data_set_string(settings, "key",
5
-               key_.append("?bandwidthtest=true").c_str());
6
+               (key_ + "?bandwidthtest=true").c_str());
7
    else
8
        obs_data_set_string(settings, "key", key_.c_str());
9
 
10
obs-studio-23.1.0.tar.xz/UI/auth-twitch.cpp -> obs-studio-23.2.0.tar.xz/UI/auth-twitch.cpp Changed
38
 
1
@@ -78,6 +78,7 @@
2
 
3
    std::string output;
4
    std::string error;
5
+   long error_code = 0;
6
 
7
    bool success = false;
8
 
9
@@ -86,7 +87,7 @@
10
                "https://api.twitch.tv/kraken/channel",
11
                output,
12
                error,
13
-               nullptr,
14
+               &error_code,
15
                "application/json",
16
                nullptr,
17
                headers,
18
@@ -98,6 +99,19 @@
19
            func,
20
            QTStr("Auth.LoadingChannel.Title"),
21
            QTStr("Auth.LoadingChannel.Text").arg(service()));
22
+   if (error_code == 403) {
23
+       OBSMessageBox::warning(OBSBasic::Get(),
24
+               Str("TwitchAuth.TwoFactorFail.Title"),
25
+               Str("TwitchAuth.TwoFactorFail.Text"),
26
+               true);
27
+       blog(LOG_WARNING, "%s: %s",
28
+               __FUNCTION__,
29
+               "Got 403 from Twitch, user probably does not "
30
+               "have two-factor authentication enabled on "
31
+               "their account");
32
+       return false;
33
+   }
34
+
35
    if (!success || output.empty())
36
        throw ErrorInfo("Failed to get text from remote", error);
37
 
38
obs-studio-23.2.0.tar.xz/UI/combobox-ignorewheel.cpp Added
16
 
1
@@ -0,0 +1,14 @@
2
+#include "combobox-ignorewheel.hpp"
3
+
4
+ComboBoxIgnoreScroll::ComboBoxIgnoreScroll(QWidget *parent) : QComboBox(parent)
5
+{
6
+   setFocusPolicy(Qt::StrongFocus);
7
+}
8
+
9
+void ComboBoxIgnoreScroll::wheelEvent(QWheelEvent *event)
10
+{
11
+   if (!hasFocus())
12
+       event->ignore();
13
+   else
14
+       QComboBox::wheelEvent(event);
15
+}
16
obs-studio-23.2.0.tar.xz/UI/combobox-ignorewheel.hpp Added
17
 
1
@@ -0,0 +1,15 @@
2
+#pragma once
3
+
4
+#include <QComboBox>
5
+#include <QInputEvent>
6
+#include <QtCore/QObject>
7
+
8
+class ComboBoxIgnoreScroll : public QComboBox {
9
+   Q_OBJECT
10
+
11
+public:
12
+   ComboBoxIgnoreScroll(QWidget *parent = nullptr);
13
+
14
+protected:
15
+   virtual void wheelEvent(QWheelEvent *event) override;
16
+};
17
obs-studio-23.1.0.tar.xz/UI/data/locale/ar-SA.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ar-SA.ini Changed
200
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="تنسيق عمودي"
3
 Group="مجموعة"
4
 DoNotShowAgain="عدم الإظهار مرة أخرى"
5
+Default="(الافتراضي)"
6
+Calculating="جاري حساب الوقت..."
7
 
8
 AlreadyRunning.Title="البرنامج قيد التشغيل بالفعل"
9
 AlreadyRunning.Text="أوبس قيد التشغيل بالفعل! إلا إذا كنت تريد القيام بذلك، يرجى إيقاف أية مثيلات موجودة من للبرنامج قبل محاولة تشغيله من جديد. إذا كان لديك أوبس تعيين لتقليل إلى علبة النظام، يرجى التحقق لمعرفة ما إذا كان لا يزال قيد التشغيل هناك."
10
@@ -89,19 +91,26 @@
11
 DockCloseWarning.Title="إغلاق إطار قابل للإرساء"
12
 DockCloseWarning.Text="لقد قمت بإغلاق إطار قابل للإرساء. إذا كنت ترغب في إظهاره مرة أخرى، استخدم قائمة عرض ← أرصفة من شريط القوائم."
13
 
14
+Auth.Authing.Title="جاري المصادقة..."
15
+Auth.Authing.Text="جارٍ المصادقة مع %1, الرجاء الانتظار..."
16
 Auth.AuthFailure.Title="فشل المصادقة"
17
 Auth.AuthFailure.Text="فشل في المصادقة مع %1:\n\n%2: %3"
18
 Auth.InvalidScope.Title="مطلوب المصادقة"
19
 Auth.InvalidScope.Text="متطلبات المصادقة ل %1 تغيرت. قد لا تعمل بعض الميزات."
20
+Auth.LoadingChannel.Title="جارٍ تحميل معلومات القناة..."
21
+Auth.LoadingChannel.Text="جارٍ تحميل معلومات القناة من%1, الرجاء الانتظار..."
22
 Auth.ChannelFailure.Title="فشل تحميل معلومات القناة"
23
 Auth.ChannelFailure.Text="فشل في تحميل معلومات القناة %1\n\n%2: %3"
24
 Auth.Chat="الدردشة"
25
 Auth.StreamInfo="معلومات البث"
26
 TwitchAuth.Stats="إحصائيات Twitch"
27
+TwitchAuth.TwoFactorFail.Title="لم نتمكن من الاستعلام عن مفتاح البث"
28
 
29
 Copy.Filters="نسخ الفلتر"
30
 Paste.Filters="لصق الفلتر"
31
 
32
+BrowserPanelInit.Title="جارٍ بدء المستعرض..."
33
+BrowserPanelInit.Text="جارٍ بدء المستعرض, الرجاء الانتظار..."
34
 
35
 BandwidthTest.Region="منطقة"
36
 BandwidthTest.Region.US="الولايات المتحدة"
37
@@ -109,7 +118,7 @@
38
 BandwidthTest.Region.Asia="آسيا"
39
 BandwidthTest.Region.Other="\"غير ذلك\""
40
 
41
-Basic.FirstStartup.RunWizard="هل تريد تشغيل معالج التكوين التلقائي؟  يمكنك أيضا يدوياً تكوين الإعدادات الخاصة بك بواسطة النقر فوق زر \"إعدادات\" في الواجهة الرئيسية."
42
+Basic.FirstStartup.RunWizard="هل تريد تشغيل معالج التكوين التلقائي؟ يمكنك أيضا يدوياً تكوين الإعدادات الخاصة بك بواسطة النقر فوق زر \"إعدادات\" في الواجهة الرئيسية."
43
 Basic.FirstStartup.RunWizard.NoClicked="إذا قمت بتغيير رأيك، يمكنك تشغيل معالج التكوين التلقائي في أي وقت مرة أخرى من قائمة أدوات."
44
 
45
 Basic.AutoConfig="معالج التكوين التلقائي"
46
@@ -143,14 +152,14 @@
47
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding="تفضيل استخدام الترميز بواسطة الهاردوير"
48
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="استخدام الترميز بالهاردوير يلغي الحاجة الى معظم موارد المعالج, لكن قد يحتاج الى معدل بث أعلى للحفاظ على نفس مستوى الجودة."
49
 Basic.AutoConfig.StreamPage.StreamWarning.Title="تحذير يتعلق بالبث"
50
-Basic.AutoConfig.StreamPage.StreamWarning.Text="اختبار مستوى التدفق على وشك بدأ عرض مباشر لبيانات من فيديو عشوائي بدون صوت للقناة الخاصة بك.  إذا أمكنك، يوصى بإيقاف حفظ فيديو للعرض المباشر مؤقتا وتعيين خصوصية العرض المباشر ل خاص إلى أن بكتمل الاختبار.  هل تريد المتابعة؟"
51
+Basic.AutoConfig.StreamPage.StreamWarning.Text="اختبار مستوى التدفق على وشك بدأ عرض مباشر لبيانات من فيديو عشوائي بدون صوت للقناة الخاصة بك. إذا أمكنك، يوصى بإيقاف حفظ فيديو للعرض المباشر مؤقتا وتعيين خصوصية العرض المباشر ل خاص إلى أن بكتمل الاختبار. هل تريد المتابعة؟"
52
 Basic.AutoConfig.TestPage="النتيجة النهائية"
53
 Basic.AutoConfig.TestPage.SubTitle.Testing="يقوم البرنامج الآن بتنفيذ مجموعة من الإختبارات لتقدير الإعدادات الأكثر مثالية"
54
 Basic.AutoConfig.TestPage.SubTitle.Complete="انتهى الاختبار"
55
 Basic.AutoConfig.TestPage.TestingBandwidth="إجراء اختبار النطاق الترددي، قد يستغرق هذا بضع دقائق..."
56
 Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="الاتصال ب1:%..."
57
 Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="فشل الاتصال بأي سيرفر، رجاءا تحقق من اتصالك بالانترنت وأعد المحاولة."
58
-Basic.AutoConfig.TestPage.TestingBandwidth.Server="اختبار التدفق لـ:  %1"
59
+Basic.AutoConfig.TestPage.TestingBandwidth.Server="اختبار التدفق لـ: %1"
60
 Basic.AutoConfig.TestPage.TestingStreamEncoder="جاري فحص برمجية ترميز البث، قد تستغرق هذه العملية دقيقة..."
61
 Basic.AutoConfig.TestPage.TestingRecordingEncoder="جاري فحص برمجية ترميز تسجيل الفيديو، قد تستغرق هذه العملية دقيقة..."
62
 Basic.AutoConfig.TestPage.TestingRes="اختبار الدِّقة (الأَبعاد)، قد يستغرق هذا بضع دقائق..."
63
@@ -178,6 +187,7 @@
64
 Basic.Stats.DroppedFrames="الاطارات المفقودة (بسبب الشبكة)"
65
 Basic.Stats.MegabytesSent="إجمالي البيانات الصادرة"
66
 Basic.Stats.Bitrate="معدل النقل"
67
+Basic.Stats.DiskFullIn="سيمتلىء القرص خلال (تقريباً)"
68
 
69
 ResetUIWarning.Title="هل أنت متأكد أنك تريد إعادة تعيين واجهة المستخدم ؟"
70
 ResetUIWarning.Text="إعادة تعيين واجهة المستخدم سيخفي المربعات الاضافية. سيتوجب عليك إظهارها من قائمة \"عرض\" اذا اردت ذلك.\n\nهل أنت متأكد انك تريد إعادة تعيين واجهة المستخدم ؟"
71
@@ -193,6 +203,7 @@
72
 Updater.NoUpdatesAvailable.Text="لا توجد تحديثات متوفرة حاليا"
73
 Updater.FailedToLaunch="فشل في تشغيل التحديث"
74
 Updater.GameCaptureActive.Title="إلتقاط الألعاب نشط"
75
+Updater.GameCaptureActive.Text="مكتبة شبك التقاط الألعاب مشغولة حالياً. الرجاء اغلاء اي لعبة/برنامج يتم إلتقاطه (تصويره) حالياً (أو قم بإعادة تشغيل ويندوز) و حاول مرة أخرى."
76
 
77
 QuickTransitions.SwapScenes="التبديل بين مشهدي المعاينة و الاخراج بعد عملية الانتقال"
78
 QuickTransitions.SwapScenesTT="يقوم بتبديل مشهد المعاينة مع مشهد الاخراج بعد عملية الانتقال بين المشاهد (اذا كان مشهد الاخراج الاصلي لازال موجوداً) \n هذا لن يقوم بالتراجع عن اي تغييرات قمت بها على مشهد الاخراج الأصلي."
79
@@ -227,6 +238,8 @@
80
 ConfirmStop.Title="ايقاف البث؟"
81
 ConfirmStop.Text="هل أنت متأكد انك تريد ايقاف البث؟"
82
 
83
+ConfirmBWTest.Title="بدء فحص سرعة التدفق؟"
84
+ConfirmBWTest.Text="OBS لديك معد في وضع فحص تدفق السرعة. هذا الوضع يسمح لك بفحص الشبكة بدون ان تظهر في بث مباشر على قناتك. بمجرد انتهاء الفحص يجب عليك تعطيله لكي يستطيع مشاهدوك من رؤية البث.\n\nهل تريد الاستمرار ؟"
85
 
86
 ConfirmExit.Title="الخروج من OBS ؟"
87
 ConfirmExit.Text="OBS حالياً نشط، كافة عمليات البث/التسجيلات سيتم إيقافها، هل أنت متأكد من رغبتك في الخروج ؟"
88
@@ -238,25 +251,31 @@
89
 Output.StartStreamFailed="فشل في بدء البث"
90
 Output.StartRecordingFailed="فشل في بدء التسجيل"
91
 Output.StartReplayFailed="فشل بدء التخزين المؤقت للإعادة"
92
+Output.StartFailedGeneric="فشل بدء الإخراج. الرجاء مراجعة السجل للتفاصيل.\n\nملاحظة: اذا كنت تستخدم مُرَمِز NVENC أو مُرَمِز AMD, تأكد من أن تعريف بطاقة الشاشة لديك محدَّث."
93
+
94
 
95
 Output.ConnectFail.Title="فشل في الاتصال"
96
 Output.ConnectFail.BadPath="مسار أو رابط الاتصال غير صالح. الرجاء التحقق من الإعدادات للتحقق من كونه صالح."
97
 Output.ConnectFail.ConnectFailed="فشل الاتصال بالسيرفر"
98
 Output.ConnectFail.InvalidStream="تعذر الوصول إلى القناة أو مفتاح البث المحدد، الرجاء أعد التحقق من صحة مفتاح البث الخاص بك، أما إذا كان صحيحاً، قد تكون المشكلة في الاتصال بالخادم."
99
-Output.ConnectFail.Error="حدث خطأ غير متوقع عند محاولة الاتصال بالخادم.  مزيد من المعلومات في ملف السجل."
100
+Output.ConnectFail.Error="حدث خطأ غير متوقع عند محاولة الاتصال بالخادم. مزيد من المعلومات في ملف السجل."
101
 Output.ConnectFail.Disconnected="تم قطع الاتصال من السيرفر."
102
 
103
+Output.StreamEncodeError.Title="خطأ في الترميز"
104
+Output.StreamEncodeError.Msg="حدث خطأ في الترميز أثناء البث."
105
+
106
 Output.RecordFail.Title="فشل في بدء التسجيل"
107
-Output.RecordFail.Unsupported="تنسيق الإخراج أما غير معتمد أو لا يدعم أكثر من مسار للصوت.  الرجاء التحقق من الإعدادات الخاصة بك وحاول مرة أخرى."
108
+Output.RecordFail.Unsupported="تنسيق الإخراج أما غير معتمد أو لا يدعم أكثر من مسار للصوت. الرجاء التحقق من الإعدادات الخاصة بك وحاول مرة أخرى."
109
 Output.RecordNoSpace.Title="مساحة القرص غير كافية"
110
 Output.RecordNoSpace.Msg="لا توجد مساحة كافية على القرص لمتابعة التسجيل."
111
 Output.RecordError.Title="خطأ في التسجيل"
112
 Output.RecordError.Msg="حدث خطأ غير محدد أثناء التسجيل."
113
+Output.RecordError.EncodeErrorMsg="حدث خطأ في الترميز أثناء التسجيل."
114
 Output.ReplayBuffer.NoHotkey.Title="لم يتم تعيين مفتاح اختصار!"
115
 Output.ReplayBuffer.NoHotkey.Msg="لم يتم تعيين مفتاح اختصار لحفظ التخزين المؤقَت للإعادة. الرجاء قم بتعيين مفتاح \"حفظ\" لاستخدامها في حفظ تسجيلات الإعادات."
116
 
117
 Output.BadPath.Title="مسار الملف غير صحيح"
118
-Output.BadPath.Text="مسار الإخراج ملف تكوين غير صالح.  الرجاء التحقق من الإعدادات الخاصة بك للتأكد من أنه تم تعيين مسار ملف صحيح."
119
+Output.BadPath.Text="مسار الإخراج ملف تكوين غير صالح. الرجاء التحقق من الإعدادات الخاصة بك للتأكد من أنه تم تعيين مسار ملف صحيح."
120
 
121
 LogReturnDialog="تم رفع السجل بنجاح"
122
 LogReturnDialog.CopyURL="نسخ الرابط"
123
@@ -274,7 +293,7 @@
124
 Remux.FileExistsTitle="الملف الهدف موجود"
125
 Remux.FileExists="الملفات التالية موجودة فعليا. هل ترغب في استبدالها؟"
126
 Remux.ExitUnfinishedTitle="تقدم عملية التحويل"
127
-Remux.ExitUnfinished="إيقاف عميلة التحويل الآن قد تجعل الملف غير قابل للاستخدام./n  هل أنت متأكد أنك تريد إيقاف عملية التحويل؟"
128
+Remux.ExitUnfinished="إيقاف عميلة التحويل الآن قد تجعل الملف غير قابل للاستخدام./n هل أنت متأكد أنك تريد إيقاف عملية التحويل؟"
129
 
130
 UpdateAvailable="تحديث جديد متوفر"
131
 UpdateAvailable.Text="الإصدار %1.%2.%3 متوفر الآن. <a href='%4'>انقر هنا للتتحميل</a>"
132
@@ -291,6 +310,8 @@
133
 
134
 Basic.Main.PreviewConextMenu.Enable="تمكين المعاينة"
135
 
136
+Basic.Main.Preview.Disable="تعطيل المعاينه"
137
+
138
 ScaleFiltering="مقياس التصفية"
139
 ScaleFiltering.Point="نقطة"
140
 ScaleFiltering.Bilinear="ثنائي خطي"
141
@@ -397,7 +418,7 @@
142
 Basic.TransformWindow.BoundsType.ScaleToHeight="مقياس للارتفاع الحدود"
143
 Basic.TransformWindow.BoundsType.Stretch="تمتد إلى الحدود"
144
 
145
-Basic.Main.AddSourceHelp.Title="لا يمكن  إضافة المصدر"
146
+Basic.Main.AddSourceHelp.Title="لا يمكن إضافة المصدر"
147
 Basic.Main.AddSourceHelp.Text="تحتاج إلى أن يكون على الأقل مشهد واحد لإضافة مصدر."
148
 
149
 Basic.Main.Scenes="المشاهد"
150
@@ -434,6 +455,8 @@
151
 Basic.MainMenu.Edit.Transform.FitToScreen="تمديد الشاشة (&F)"
152
 Basic.MainMenu.Edit.Transform.StretchToScreen="تمتد إلى الشاشة (&S)"
153
 Basic.MainMenu.Edit.Transform.CenterToScreen="وسط الشاشة (&C)"
154
+Basic.MainMenu.Edit.Transform.VerticalCenter="توسيط عامودي"
155
+Basic.MainMenu.Edit.Transform.HorizontalCenter="توسيط أفقي"
156
 Basic.MainMenu.Edit.Order="الترتيب (&O)"
157
 Basic.MainMenu.Edit.Order.MoveUp="التحرك للأعلى (&U)"
158
 Basic.MainMenu.Edit.Order.MoveDown="التحرك للأسفل (&D)"
159
@@ -525,7 +548,7 @@
160
 Basic.Settings.Video.Numerator="البسط"
161
 Basic.Settings.Video.Denominator="قاسم"
162
 Basic.Settings.Video.Renderer="العارض"
163
-Basic.Settings.Video.InvalidResolution="قيمة الأبعاد غير صالحة.  يجب أن يكون [العرض] x [الطول] (مثال. 1920 × 1080)"
164
+Basic.Settings.Video.InvalidResolution="قيمة الأبعاد غير صالحة. يجب أن يكون [العرض] x [الطول] (مثال. 1920 × 1080)"
165
 Basic.Settings.Video.CurrentlyActive="إخراج الفيديو نشط حاليا. الرجاء إيقاف كل الإخراجات لتغيير إعدادات الفيديو."
166
 Basic.Settings.Video.DisableAero="تعطيل Aero"
167
 
168
@@ -533,11 +556,9 @@
169
 Basic.Settings.Audio="الصوت"
170
 Basic.Settings.Audio.SampleRate="معدل العينات"
171
 Basic.Settings.Audio.Channels="قنوات"
172
-Basic.Settings.Audio.DesktopDevice="جهاز صوت سطح المكتب"
173
-Basic.Settings.Audio.DesktopDevice2="جهاز صوت سطح المكتب 2"
174
-Basic.Settings.Audio.AuxDevice="جهاز صوت Mic/Auxiliary"
175
-Basic.Settings.Audio.AuxDevice2="جهاز صوت Mic/Auxiliary 2"
176
-Basic.Settings.Audio.AuxDevice3="جهاز صوت Mic/Auxiliary 3"
177
+Basic.Settings.Audio.Devices="الأجهزة"
178
+Basic.Settings.Audio.DesktopDevice="صوت سطح المكتب"
179
+Basic.Settings.Audio.DesktopDevice2="صوت سطح المكتب 2"
180
 Basic.Settings.Audio.UnknownAudioDevice="[الجهاز غير متصل أو غير متوفر]"
181
 
182
 Basic.Settings.Advanced="متقدم"
183
@@ -547,7 +568,6 @@
184
 Basic.Settings.Advanced.General.ProcessPriority.Normal="عادي"
185
 Basic.Settings.Advanced.General.ProcessPriority.Idle="خامل"
186
 Basic.Settings.Advanced.Video.ColorFormat="تنسيق اللون"
187
-Basic.Settings.Advanced.Video.ColorSpace="مساحة ألوان YUV"
188
 Basic.Settings.Advanced.Video.ColorRange.Partial="جزئي"
189
 Basic.Settings.Advanced.Video.ColorRange.Full="كامل"
190
 
191
@@ -561,6 +581,8 @@
192
 
193
 
194
 
195
+NoSources.Label="لا يوجد لديك اي مصادر.\nاضغط على اشارة الـ+ في الأسفل,\nأو انقر هنا بالزر الأيمن للفأرة لإضافة واحد."
196
+
197
 
198
 
199
 
200
obs-studio-23.1.0.tar.xz/UI/data/locale/bg-BG.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/bg-BG.ini Changed
125
 
1
@@ -27,7 +27,7 @@
2
 Browse="Преглед"
3
 Mono="Моно"
4
 Stereo="Стерео"
5
-DroppedFrames="Изпуснати кадри  %1 (%2%)"
6
+DroppedFrames="Изпуснати кадри %1 (%2%)"
7
 StudioProgramProjector="Прожектиране на цял екран (от Програмата)"
8
 PreviewProjector="Прожектиране на цял екран (Предварителен преглед)"
9
 SceneProjector="Прожектиране на цял екран (Сцена)"
10
@@ -98,7 +98,7 @@
11
 BandwidthTest.Region.Asia="Азия"
12
 BandwidthTest.Region.Other="Друг"
13
 
14
-Basic.FirstStartup.RunWizard="Искате ли да изпълните съветника за автоматично конфигуриране?  Можете също ръчно да конфигурирате настройките, като щракнете върху бутона настройки в главния прозорец."
15
+Basic.FirstStartup.RunWizard="Искате ли да изпълните съветника за автоматично конфигуриране? Можете също ръчно да конфигурирате настройките, като щракнете върху бутона настройки в главния прозорец."
16
 Basic.FirstStartup.RunWizard.NoClicked="Ако промените решението си, можете да стартирате съветника за автоматично конфигуриране отново от меню \"Инструменти\"."
17
 
18
 Basic.AutoConfig="Съветник за автоматично конфигуриране"
19
@@ -173,7 +173,6 @@
20
 Updater.NoUpdatesAvailable.Text="Няма текущи обновявания на разположение"
21
 Updater.FailedToLaunch="Неуспешно стартиране на обновителя"
22
 Updater.GameCaptureActive.Title="Записването на Игра е активно"
23
-Updater.GameCaptureActive.Text="Библиотеката със куки за Записване на Игра се ползва. Моля затворете игрите/програмите които се записват (или пуснете операционната система наново) и опитайте отново."
24
 
25
 QuickTransitions.SwapScenes="Смени сцените Преглед/Продукция след Преминаване"
26
 QuickTransitions.SwapScenesTT="Сменя сцените за Преглед и Продукция след преминаването (ако все още съществува оригиналната сцена).\n Това няма да отмени промените, които може да са направени в оригиналната сцена на изхода."
27
@@ -221,13 +220,15 @@
28
 Output.StartReplayFailed="Неуспешно включване на Буферa за повторение"
29
 Output.StartFailedGeneric="Започването на изкарване на кадри неуспешно. Моля проверете списъка за подробности. \n\n Бележка: Ако ползвате кодиране NVENC или AMD, моля проверете дали версията на драйвъри за видео картата е актуална."
30
 
31
+
32
 Output.ConnectFail.Title="Неуспешно свързване"
33
 Output.ConnectFail.BadPath="Невалиден път или URL. Проверете дали настройките ви са валидни."
34
 Output.ConnectFail.ConnectFailed="Неуспешна връзка със сървъра"
35
 Output.ConnectFail.InvalidStream="Неуспешно сързване към посоченият канал или ключ за предаване, моля проверете повторно вашия ключ. Ако е верен, може би има проблем със всъзката към сървъра."
36
-Output.ConnectFail.Error="Неочаквана грешка при опит за връзка със сървъра.  Повече информация в \"log\" файла."
37
+Output.ConnectFail.Error="Неочаквана грешка при опит за връзка със сървъра. Повече информация в \"log\" файла."
38
 Output.ConnectFail.Disconnected="Изключен от сървъра."
39
 
40
+
41
 Output.RecordFail.Title="Неуспешно стартиране на запис"
42
 Output.RecordFail.Unsupported="Формата на записа или не е подържа или не подържа повече от една писта за звук. Моля проверете настройките си и опитайте отново."
43
 Output.RecordNoSpace.Title="Недостатъчно място на диска"
44
@@ -260,7 +261,7 @@
45
 Remux.HelpText="Пуснете файловете чрез влачене в този прозорец, за да ги преобразувате или изберете празна \"OBS Recording\" клетка, за да отворите прозореца за търсене на файл."
46
 
47
 UpdateAvailable="Има нова актуализация"
48
-UpdateAvailable.Text="Версия %1.%2.%3 е налична.  <a href='%4'> Щракнете тук, за да изтеглите</a>"
49
+UpdateAvailable.Text="Версия %1.%2.%3 е налична. <a href='%4'> Щракнете тук, за да изтеглите</a>"
50
 
51
 Basic.DesktopDevice1="Аудио - работен плот"
52
 Basic.DesktopDevice2="Аудио - работен плот 2"
53
@@ -274,6 +275,7 @@
54
 
55
 Basic.Main.PreviewConextMenu.Enable="Разреши преглед"
56
 
57
+
58
 ScaleFiltering="Мащабно Филтриране"
59
 ScaleFiltering.Point="Точково"
60
 ScaleFiltering.Bilinear="Двулинейно"
61
@@ -328,7 +330,7 @@
62
 Basic.PropertiesWindow.SelectColor="Избор на цвят"
63
 Basic.PropertiesWindow.SelectFont="Избор на шрифт"
64
 Basic.PropertiesWindow.ConfirmTitle="Настройките са променени"
65
-Basic.PropertiesWindow.Confirm="Има незаписани промени.  Искате ли да ги запишете?"
66
+Basic.PropertiesWindow.Confirm="Има незаписани промени. Искате ли да ги запишете?"
67
 Basic.PropertiesWindow.NoProperties="Без налични характеристики"
68
 Basic.PropertiesWindow.AddFiles="Добавяне на файлове"
69
 Basic.PropertiesWindow.AddDir="Добави директория"
70
@@ -488,7 +490,7 @@
71
 
72
 Basic.Settings.ProgramRestart="Програмата трябва да бъде рестартирана, за да влязат в сила тези настройки."
73
 Basic.Settings.ConfirmTitle="Потвърди промените"
74
-Basic.Settings.Confirm="Имате незаписани промени.  Запиши промените?"
75
+Basic.Settings.Confirm="Имате незаписани промени. Запиши промените?"
76
 
77
 Basic.Settings.General="Основни"
78
 Basic.Settings.General.Theme="Теми"
79
@@ -644,7 +646,6 @@
80
 Basic.Settings.Audio="Аудио"
81
 Basic.Settings.Audio.SampleRate="Честота на дискретизацията"
82
 Basic.Settings.Audio.Channels="Канали"
83
-Basic.Settings.Audio.MeterDecayRate="Брой за Звуков Разпад"
84
 Basic.Settings.Audio.MeterDecayRate.Fast="Бързо"
85
 Basic.Settings.Audio.MeterDecayRate.Medium="Средно (ТИП I PPM)"
86
 Basic.Settings.Audio.MeterDecayRate.Slow="Бавно (Type II PPM)"
87
@@ -655,12 +656,6 @@
88
 Basic.Settings.Audio.MultichannelWarning="Ако предавате, проверете дали вашата услуга за стрийминг поддържа едновременно приемане на съраунд звук и възпроизвеждане на съраунд звук. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast са примери, при които съраунд звукът е напълно поддържан. Въпреки че, Facebook Live и YouTube Live подържат и приемат съраунд, Facebook Live пемиксира към стерео звук, а YouTube Live възпроизвежда само два канала.\n\nЗвуковите филтъри на OBS подържат съраунд звук, въпреки това VST поддръжката не е гарантирана."
89
 Basic.Settings.Audio.MultichannelWarning.Title="Включи записването на съраунд звук?"
90
 Basic.Settings.Audio.MultichannelWarning.Confirm="Сигурни ли сте че искате да включите записването на съраунд звук?"
91
-Basic.Settings.Audio.DesktopDevice="Аудио устройство (Работен плот)"
92
-Basic.Settings.Audio.DesktopDevice2="Аудио устройство 2 (Работен плот)"
93
-Basic.Settings.Audio.AuxDevice="Микрофон/Вторично аудио устройство"
94
-Basic.Settings.Audio.AuxDevice2="Микрофон/Вторично аудио устройство 2"
95
-Basic.Settings.Audio.AuxDevice3="Микрофон/Вторично аудио устройство 3"
96
-Basic.Settings.Audio.AuxDevice4="Микрофон/Вторично аудио устройство 4"
97
 Basic.Settings.Audio.EnablePushToMute="Включи Натисни-за-да-заглуши"
98
 Basic.Settings.Audio.PushToMuteDelay="Натисни-за-да-заглуши забавяне"
99
 Basic.Settings.Audio.EnablePushToTalk="Включи Натисни-за-говорене"
100
@@ -678,11 +673,8 @@
101
 Basic.Settings.Advanced.FormatWarning="Предупреждение: Цветните формати освен NV12 се ползват главно при записи и не са препоръчани при предаване. Предаването може да упражни завишено ползване на Процесора поради прекодиране на форматите."
102
 Basic.Settings.Advanced.Audio.BufferingTime="Време за буфериране на звук"
103
 Basic.Settings.Advanced.Video.ColorFormat="Формат на цвета"
104
-Basic.Settings.Advanced.Video.ColorSpace="YUV Цветно Пространство"
105
-Basic.Settings.Advanced.Video.ColorRange="YUV Цветен Обсег"
106
 Basic.Settings.Advanced.Video.ColorRange.Partial="Частично"
107
 Basic.Settings.Advanced.Video.ColorRange.Full="Пълен"
108
-Basic.Settings.Advanced.Audio.MonitoringDevice="Устройство за Звуково възпроизвеждане"
109
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="По подразбиране"
110
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Изключи намалянето на звука при разговори"
111
 Basic.Settings.Advanced.StreamDelay="Забавяне на Предаването"
112
@@ -699,7 +691,6 @@
113
 
114
 Basic.AdvAudio="Допълнителни Звукови Характеристики"
115
 Basic.AdvAudio.Name="Име"
116
-Basic.AdvAudio.Volume="Сила на звука (%)"
117
 Basic.AdvAudio.Mono="Премиксирай към Mono звук"
118
 Basic.AdvAudio.Balance="Баланс"
119
 Basic.AdvAudio.SyncOffset="Забавяне (мс)"
120
@@ -789,3 +780,4 @@
121
 ResizeOutputSizeOfSource.Text="Базата и изходната резолюция ще бъдат преоразмерени до размера на текущия източник."
122
 ResizeOutputSizeOfSource.Continue="Желаете ли да продължите?"
123
 
124
+
125
obs-studio-23.1.0.tar.xz/UI/data/locale/bn-BD.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/bn-BD.ini Changed
161
 
1
@@ -42,7 +42,7 @@
2
 Enable="সচল"
3
 DisableOSXVSync="OSX ভি-সমকালীন নিষ্ক্রিয় করা হবে"
4
 ResetOSXVSyncOnExit="প্রস্থান করার সময় ভি-সমকালীন OSX রিসেট করুন"
5
-HighResourceUsage="এনকোডিং overloaded!  ভিডিও সেটিংস ডাউন বাঁক বা দ্রুত এনকোডিং প্রিসেট ব্যবহার করে বিবেচনা করুন."
6
+HighResourceUsage="এনকোডিং overloaded! ভিডিও সেটিংস ডাউন বাঁক বা দ্রুত এনকোডিং প্রিসেট ব্যবহার করে বিবেচনা করুন."
7
 Transition="স্থানান্তর"
8
 QuickTransitions="দ্রুত অবস্থান্তর"
9
 Left="বামদিকে"
10
@@ -80,7 +80,7 @@
11
 Updater.NoUpdatesAvailable.Text="কোন আধুনিকীকরণ বর্তমানে পাওয়া যায়।"
12
 Updater.FailedToLaunch="হালনাগাদকারী আরম্ভ করতে ব্যর্থ"
13
 Updater.GameCaptureActive.Title="খেলার অধিগ্রহণ সক্রিয়"
14
-Updater.GameCaptureActive.Text="খেলার অধিগ্রহণ হুক লাইব্রেরী বর্তমানে ব্যবহার করা হচ্ছে।  দয়া করে দখল করা কোন গেম/প্রোগ্রাম বন্ধ করুন (অথবা windows পুনর্সূচনা করুন) এবং পুনরায় চেষ্টা করুন."
15
+Updater.GameCaptureActive.Text="খেলার অধিগ্রহণ হুক লাইব্রেরী বর্তমানে ব্যবহার করা হচ্ছে। দয়া করে দখল করা কোন গেম/প্রোগ্রাম বন্ধ করুন (অথবা Windows পুনর্সূচনা করুন) এবং পুনরায় চেষ্টা করুন."
16
 
17
 QuickTransitions.SwapScenes="প্রাক-দৃশ্য/আউটপুট দৃশ্য হলে পরে প্রক্রিয়াতে অদলবদল"
18
 QuickTransitions.SwapScenesTT="যদি (আউটপুট মূল দৃশ্য এখনো বিদ্যমান আছে) প্রাক্-বীক্ষণ এবং আউটপুট দৃশ্য হলে পরে প্রক্রিয়াতে swaps। \nThis যে আউটপুট মূল দৃশ্যের জন্য তৈরি করা হয়েছে যাতে কোন পরিবর্তন বাতিল হবে না."
19
@@ -117,7 +117,7 @@
20
 
21
 
22
 ConfirmExit.Title="OBS প্রস্থান করুন?"
23
-ConfirmExit.Text="OBS বর্তমানে সক্রিয় আছে।  সব নদী/রেকর্ডিং বন্ধ হয়ে যাবে।  আপনি কি নিশ্চিত যে আপনি প্রস্থান করতে চান?"
24
+ConfirmExit.Text="OBS বর্তমানে সক্রিয় আছে। সব নদী/রেকর্ডিং বন্ধ হয়ে যাবে। আপনি কি নিশ্চিত যে আপনি প্রস্থান করতে চান?"
25
 
26
 ConfirmRemove.Title="টেমপ্লেট সংরক্ষণ করো"
27
 ConfirmRemove.Text="আপনি কি নিশ্চিত যে আপনি '$1' মুছে ফেলতে চান?"
28
@@ -126,26 +126,28 @@
29
 Output.StartStreamFailed="স্ট্রীমিং চালু করতে ব্যর্থ হয়েছে"
30
 Output.StartRecordingFailed="রেকর্ড আরম্ভ করতে ব্যর্থ"
31
 Output.StartReplayFailed="রিপ্লে বাফার আরম্ভ করতে ব্যর্থ"
32
-Output.StartFailedGeneric="আউটপুট শুরু করতে ব্যর্থ হয়েছে।  Details.\n\nNote জন্য লগ চেক করুন: NVENC অথবা এএমডি encoders ব্যবহার করলে আপনার ভিডিও ড্রাইভার আপ-টু-ডেট রয়েছে নিশ্চিত করুন."
33
+Output.StartFailedGeneric="আউটপুট শুরু করতে ব্যর্থ হয়েছে। Details.\n\nNote জন্য লগ চেক করুন: NVENC অথবা এএমডি encoders ব্যবহার করলে আপনার ভিডিও ড্রাইভার আপ-টু-ডেট রয়েছে নিশ্চিত করুন."
34
+
35
 
36
 Output.ConnectFail.Title="সংযোগ করতে ব্যর্থ হয়েছে"
37
-Output.ConnectFail.BadPath="ত্রুটিপূর্ণ URL পথ বা সংযোগ।  দয়া করে সেগুলো কার্যকর নিশ্চিত করতে আপনার সেটিংস চেক করুন."
38
+Output.ConnectFail.BadPath="ত্রুটিপূর্ণ URL পথ বা সংযোগ। দয়া করে সেগুলো কার্যকর নিশ্চিত করতে আপনার সেটিংস চেক করুন."
39
 Output.ConnectFail.ConnectFailed="সার্ভারের সাথে সংযোগ স্থাপন করতে ব্যর্থ"
40
-Output.ConnectFail.InvalidStream="উল্লেখিত চ্যানেল বা ধারা কী, এ প্রবেশ করা যাচ্ছে না দয়া করে আপনার স্ট্রিম কী পরীক্ষা।  যদি সঠিক হয়, সমস্যা হতে পারে সার্ভারের সাথে সংযোগ স্থাপন করা হচ্ছে."
41
-Output.ConnectFail.Error="সার্ভারের সাথে সংযোগ করার চেষ্টা করার সময় একটি অপ্রত্যাশিত ত্রুটি সংঘটিত হয়েছে।  লগ ফাইল আরও তথ্য."
42
+Output.ConnectFail.InvalidStream="উল্লেখিত চ্যানেল বা ধারা কী, এ প্রবেশ করা যাচ্ছে না দয়া করে আপনার স্ট্রিম কী পরীক্ষা। যদি সঠিক হয়, সমস্যা হতে পারে সার্ভারের সাথে সংযোগ স্থাপন করা হচ্ছে."
43
+Output.ConnectFail.Error="সার্ভারের সাথে সংযোগ করার চেষ্টা করার সময় একটি অপ্রত্যাশিত ত্রুটি সংঘটিত হয়েছে। লগ ফাইল আরও তথ্য."
44
 Output.ConnectFail.Disconnected="সার্ভার থেকে সংযোগ বিচ্ছিন্ন হয়েছে."
45
 
46
+
47
 Output.RecordFail.Title="রেকর্ড আরম্ভ করতে ব্যর্থ"
48
-Output.RecordFail.Unsupported="আউটপুট ফরম্যাট হয়। অসমর্থিত বা একাধিক অডিও ট্র্যাক সমর্থন করে না।  অনুগ্রহ করে আপনার সেটিংস পরীক্ষা করুন এবং আবার চেষ্টা করুন."
49
+Output.RecordFail.Unsupported="আউটপুট ফরম্যাট হয়। অসমর্থিত বা একাধিক অডিও ট্র্যাক সমর্থন করে না। অনুগ্রহ করে আপনার সেটিংস পরীক্ষা করুন এবং আবার চেষ্টা করুন."
50
 Output.RecordNoSpace.Title="অপর্যাপ্ত ডিস্ক পরিসর"
51
 Output.RecordNoSpace.Msg="না চালিয়ে রেকর্ড করার জন্য পর্যাপ্ত ডিস্ক পরিসর নেই."
52
 Output.RecordError.Title="রেকর্ড করার ত্রুটির"
53
 Output.RecordError.Msg="রেকর্ড করার সময় একটি অনির্দিষ্ট ত্রুটি সংঘটিত হয়েছে."
54
 Output.ReplayBuffer.NoHotkey.Title="কোন hotkey সেট!"
55
-Output.ReplayBuffer.NoHotkey.Msg="কোন রিপ্লে বাফারের জন্য সেট hotkey ছাড়া।  \"সংরক্ষণ\" hotkey রিপ্লে রেকর্ডিং সংরক্ষণের জন্য ব্যবহার করতে সেট করুন."
56
+Output.ReplayBuffer.NoHotkey.Msg="কোন রিপ্লে বাফারের জন্য সেট hotkey ছাড়া। \"সংরক্ষণ\" hotkey রিপ্লে রেকর্ডিং সংরক্ষণের জন্য ব্যবহার করতে সেট করুন."
57
 
58
 Output.BadPath.Title="খারাপ পার্ট অনুসন্ধানname"
59
-Output.BadPath.Text="কনফিগার ফাইল আউটপুট পথটি সঠিক নয়।  অনুগ্রহ করে একটি কার্যকর পথ তৈরি করা হয়েছে নিশ্চিত করতে, আপনার সেটিংস পরীক্ষা করুন."
60
+Output.BadPath.Text="কনফিগার ফাইল আউটপুট পথটি সঠিক নয়। অনুগ্রহ করে একটি কার্যকর পথ তৈরি করা হয়েছে নিশ্চিত করতে, আপনার সেটিংস পরীক্ষা করুন."
61
 
62
 LogReturnDialog="সফলভাবে আপলোড লগ"
63
 LogReturnDialog.CopyURL="URL অনুলিপি করুন"
64
@@ -162,7 +164,7 @@
65
 Remux.ExitUnfinished="Remuxing শেষ হয় না, এখন বন্ধ হতে পারে যেন গন্তব্য ফাইলটি ব্যবহারের অযোগ্য। আপনি কি নিশ্চিত যে আপনি remuxing বন্ধ করতে \nAre?"
66
 
67
 UpdateAvailable="নতুন আপডেট পাওয়া যাবে"
68
-UpdateAvailable.Text="সংস্করণ %1.%2.%3 পাওয়া যায়।  <a href='%4'> ডাউনলোড করতে এখানে ক্লিক করুন।</a>"
69
+UpdateAvailable.Text="সংস্করণ %1.%2.%3 পাওয়া যায়। <a href='%4'> ডাউনলোড করতে এখানে ক্লিক করুন।</a>"
70
 
71
 Basic.DesktopDevice1="ডেস্কটপ অডিও"
72
 Basic.DesktopDevice2="ডেস্কটপ অডিও 2"
73
@@ -176,6 +178,7 @@
74
 
75
 Basic.Main.PreviewConextMenu.Enable="প্রাকদর্শন সক্রিয় করুন"
76
 
77
+
78
 ScaleFiltering="ফিল্টারিং এর আকার পরিবর্তন করো"
79
 ScaleFiltering.Point="বিন্দু"
80
 ScaleFiltering.Bilinear="Bilinear"
81
@@ -228,7 +231,7 @@
82
 Basic.PropertiesWindow.SelectColor="রঙ নির্বাচন করুন"
83
 Basic.PropertiesWindow.SelectFont="ফন্ট নির্বাচন করুন"
84
 Basic.PropertiesWindow.ConfirmTitle="বৈশিষ্ট্য পরিবর্তিত হয়েছে"
85
-Basic.PropertiesWindow.Confirm="এতে পরিবর্তন অসংরক্ষিত সংশোধনী রয়েছে।  আপনি তাদের রেখে দিতে চান?"
86
+Basic.PropertiesWindow.Confirm="এতে পরিবর্তন অসংরক্ষিত সংশোধনী রয়েছে। আপনি তাদের রেখে দিতে চান?"
87
 Basic.PropertiesWindow.NoProperties="কোন বৈশিষ্ট্য সুপ্রাপ্য নয়"
88
 Basic.PropertiesWindow.AddFiles="ফাইল যোগ করুন"
89
 Basic.PropertiesWindow.AddDir="ডিরেক্টরিটি যোগ করুন"
90
@@ -374,7 +377,7 @@
91
 
92
 Basic.Settings.ProgramRestart="এই প্রোগ্রামটি এই সেটিংস প্রভাবী করতে পুনর্সূচনা করা আবশ্যক."
93
 Basic.Settings.ConfirmTitle="পরিবর্তন করুন"
94
-Basic.Settings.Confirm="পরিবর্তন অসংরক্ষিত সংশোধনী রয়েছে।  পরিবর্তন সংরক্ষণ করব?"
95
+Basic.Settings.Confirm="পরিবর্তন অসংরক্ষিত সংশোধনী রয়েছে। পরিবর্তন সংরক্ষণ করব?"
96
 
97
 Basic.Settings.General="সাধারণ"
98
 Basic.Settings.General.Theme="থিম"
99
@@ -416,7 +419,7 @@
100
 Basic.Settings.Output.ReplayBuffer.SecondsMax="সর্বোচ্চ রিপ্লে সময় (সেকেন্ড)"
101
 Basic.Settings.Output.ReplayBuffer.MegabytesMax="সর্বোচ্চ স্মৃতি (মেগাবাইট)"
102
 Basic.Settings.Output.ReplayBuffer.Estimate="ব্যবহার করা: %1 MB"
103
-Basic.Settings.Output.ReplayBuffer.EstimateUnknown="স্মৃতি ব্যবহার অনুমান করতে পারে না।  অনুগ্রহ করে স্মৃতি সর্বোচ্চ সীমা নির্ধারণ করুন."
104
+Basic.Settings.Output.ReplayBuffer.EstimateUnknown="স্মৃতি ব্যবহার অনুমান করতে পারে না। অনুগ্রহ করে স্মৃতি সর্বোচ্চ সীমা নির্ধারণ করুন."
105
 
106
 
107
 Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="আউটপুট ফাইল"
108
@@ -456,8 +459,8 @@
109
 Basic.Settings.Video.Numerator="লব।"
110
 Basic.Settings.Video.Denominator="হর"
111
 Basic.Settings.Video.Renderer="রূপায়ন।"
112
-Basic.Settings.Video.InvalidResolution="অবৈধ প্রস্তাব মান।  [width]x[height] (অর্থাৎ 1920 x 1080) থাকতে হবে"
113
-Basic.Settings.Video.CurrentlyActive="ভিডিও আউটপুট বর্তমানে সক্রিয় আছে।  ভিডিও বিন্যাসনসমূহ পরিবর্তন করতে কোন ভয়েস থেকে চালু করুন।."
114
+Basic.Settings.Video.InvalidResolution="অবৈধ প্রস্তাব মান। [width]x[height] (অর্থাৎ 1920 x 1080) থাকতে হবে"
115
+Basic.Settings.Video.CurrentlyActive="ভিডিও আউটপুট বর্তমানে সক্রিয় আছে। ভিডিও বিন্যাসনসমূহ পরিবর্তন করতে কোন ভয়েস থেকে চালু করুন।."
116
 Basic.Settings.Video.DisableAero="এরো নিষ্ক্রিয় করুন"
117
 
118
 Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (সবচেয়ে দ্রুত, কিন্তু ঘোলাটে হলে স্কেল)"
119
@@ -467,11 +470,6 @@
120
 Basic.Settings.Audio="অডিও"
121
 Basic.Settings.Audio.SampleRate="নমুনা হার"
122
 Basic.Settings.Audio.Channels="চ্যানেলসমূহ"
123
-Basic.Settings.Audio.DesktopDevice="ডেস্কটপ অডিও ডিভাইস"
124
-Basic.Settings.Audio.DesktopDevice2="ডেস্কটপ অডিও ডিভাইস"
125
-Basic.Settings.Audio.AuxDevice="মাইক/সহযোগী অডিও ডিভাইস"
126
-Basic.Settings.Audio.AuxDevice2="মাইক/সহযোগী অডিও ডিভাইস"
127
-Basic.Settings.Audio.AuxDevice3="মাইক/সহযোগী অডিও ডিভাইস"
128
 Basic.Settings.Audio.EnablePushToMute="মৌন করার ধাক্কা সক্রিয় করা হবে"
129
 Basic.Settings.Audio.PushToMuteDelay="মৌন করার ধাক্কা বিলম্ব"
130
 Basic.Settings.Audio.EnablePushToTalk="পুশ করার কথা সক্রিয় করা হবে"
131
@@ -484,14 +482,11 @@
132
 Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="স্বাভাবিকের উপরে"
133
 Basic.Settings.Advanced.General.ProcessPriority.Normal="Normal"
134
 Basic.Settings.Advanced.General.ProcessPriority.Idle="নিষ্ক্রিয়"
135
-Basic.Settings.Advanced.FormatWarning="সতর্কতা: রং বিন্যাস ছাড়া NV12 রেকর্ডিং-এর জন্য প্রাথমিকভাবে উদ্দেশ্যে করা হয়, এবং স্ট্রীমিং-এর সময় সুপারিশকৃত নয়।  এর রং বিন্যাস রূপান্তরের ফলে সিপিইউ ব্যবহার বৃদ্ধি ভয়ংকর হতে পারে।."
136
+Basic.Settings.Advanced.FormatWarning="সতর্কতা: রং বিন্যাস ছাড়া NV12 রেকর্ডিং-এর জন্য প্রাথমিকভাবে উদ্দেশ্যে করা হয়, এবং স্ট্রীমিং-এর সময় সুপারিশকৃত নয়। এর রং বিন্যাস রূপান্তরের ফলে সিপিইউ ব্যবহার বৃদ্ধি ভয়ংকর হতে পারে।."
137
 Basic.Settings.Advanced.Audio.BufferingTime="অডিও বাফারিং সময়"
138
 Basic.Settings.Advanced.Video.ColorFormat="রঙ বিন্যাস"
139
-Basic.Settings.Advanced.Video.ColorSpace="YUV কালার-স্পেস"
140
-Basic.Settings.Advanced.Video.ColorRange="YUV রং বিন্যাস"
141
 Basic.Settings.Advanced.Video.ColorRange.Partial="আংশিক"
142
 Basic.Settings.Advanced.Video.ColorRange.Full="পূর্ণ"
143
-Basic.Settings.Advanced.Audio.MonitoringDevice="অডিও মনিটরিং ডিভাইস"
144
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="পূর্ব-নির্ধারিত"
145
 Basic.Settings.Advanced.StreamDelay="স্ট্রিম বিলম্ব"
146
 Basic.Settings.Advanced.StreamDelay.Duration="দৈর্ঘ্য (সেকেন্ড)"
147
@@ -507,7 +502,7 @@
148
 Basic.SystemTray.Show="প্রদর্শন করা হবে"
149
 Basic.SystemTray.Hide="সরিয়ে রাখ"
150
 
151
-Basic.SystemTray.Message.Reconnecting="বিচ্ছিন্ন হয়ে গেছে।  পুনরায় সংযোগ করা হচ্ছে..."
152
+Basic.SystemTray.Message.Reconnecting="বিচ্ছিন্ন হয়ে গেছে। পুনরায় সংযোগ করা হচ্ছে..."
153
 
154
 Hotkeys.Insert="প্রবেশ করান"
155
 Hotkeys.Delete="মুছে ফেলা"
156
@@ -562,3 +557,4 @@
157
 
158
 
159
 
160
+
161
obs-studio-23.1.0.tar.xz/UI/data/locale/ca-ES.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ca-ES.ini Changed
212
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Disposició vertical"
3
 Group="Grup"
4
 DoNotShowAgain="No tornis a mostrar"
5
+Default="(Per defecte)"
6
+Calculating="S'està calculant..."
7
 
8
 AlreadyRunning.Title="L'OBS ja s'està executant"
9
 AlreadyRunning.Text="L'OBS ja s'està executant! A no ser que vulgueu fer això, tanqueu totes les finestres de l'OBS abans d'intentar iniciar una nova. Si teniu configurat OBS perquè es minimitzi a la barra de tasques, proveu a veure si segueix executant-se aquí."
10
@@ -103,6 +105,8 @@
11
 Auth.StreamInfo="Informació de la transmissió"
12
 TwitchAuth.Stats="Estat del Twitch"
13
 TwitchAuth.Feed="Activitat del mur del Twitch"
14
+TwitchAuth.TwoFactorFail.Title="No s'ha pogut consultar la clau de la transmissió"
15
+TwitchAuth.TwoFactorFail.Text="L'OBS no ha pogut connectar amb el vostre compte del Twitch. Assegureu-vos que l'autenticació en 2 passos està habilitada a les <a href='https://www.twitch.tv/settings/security'>opcions de seguretat del Twitch</a>, atès que és un requeriment per retransmetre."
16
 
17
 Copy.Filters="Copia els filtres"
18
 Paste.Filters="Enganxa els filtres"
19
@@ -185,6 +189,7 @@
20
 Basic.Stats.DroppedFrames="Fotogrames perduts (xarxa)"
21
 Basic.Stats.MegabytesSent="Sortida de dades total"
22
 Basic.Stats.Bitrate="Tassa de bits"
23
+Basic.Stats.DiskFullIn="Disc ple en (aprox.)"
24
 
25
 ResetUIWarning.Title="Esteu segur que voleu reiniciar la interfície d'usuari?"
26
 ResetUIWarning.Text="En reiniciar la interfície d'usuari s'amagaran els acobladors addicionals. Heu d'habilitar aquests acobladors des del menú Visualitza perquè siguin visibles. \n\nSegur que voleu reiniciar la interfície d'usuari?"
27
@@ -239,7 +244,7 @@
28
 ConfirmBWTest.Text="Heu configurat l'OBS en mode Test d'amplada de banda. Aquest mode us permet analitzar la connexió sense cap retransmissió en directe. Una vegada finalitzada l'anàlisi, inhabiliteu aquest mode perquè el públic pugui veure la retransmissió.\n\nVoleu continuar?"
29
 
30
 ConfirmExit.Title="Voleu sortir de l'OBS?"
31
-ConfirmExit.Text="OBS és actualment actiu.  Tots els directes/gravacions s'aturaran.  Esteu segur que voleu sortir?"
32
+ConfirmExit.Text="OBS és actualment actiu. Tots els directes/gravacions s'aturaran. Esteu segur que voleu sortir?"
33
 
34
 ConfirmRemove.Title="Confirmeu la supressió"
35
 ConfirmRemove.Text="Esteu segur que voleu suprimir «$1»?"
36
@@ -250,24 +255,29 @@
37
 Output.StartReplayFailed="No s'ha pogut iniciar la memòria intermèdia de reproducció"
38
 Output.StartFailedGeneric="Error en iniciar la sortida. Comproveu el registre per més detalls.\n\nAvís: Si utilitzeu els codificadors NVENC o AMD, assegureu-vos que els controladors de vídeo estan actualitzats."
39
 
40
+
41
 Output.ConnectFail.Title="Error en connectar"
42
-Output.ConnectFail.BadPath="Ruta o adreça URL no vàlida.  Si us plau, comproveu la configuració per confirmar que són vàlids."
43
+Output.ConnectFail.BadPath="Ruta o adreça URL no vàlida. Si us plau, comproveu la configuració per confirmar que són vàlids."
44
 Output.ConnectFail.ConnectFailed="No ha pogut connectar al servidor"
45
 Output.ConnectFail.InvalidStream="No pot accedir a la clau del canal especificat o de la transmissió, per favor comprovar dues vegades la seva clau de transmissió. Si és correcte, pot haver-hi un problema connectant-se al servidor."
46
-Output.ConnectFail.Error="S'ha produït un error inesperat quan s'intentava connectar amb el servidor.  Més informació al fitxer de registre."
47
+Output.ConnectFail.Error="S'ha produït un error inesperat quan s'intentava connectar amb el servidor. Més informació al fitxer de registre."
48
 Output.ConnectFail.Disconnected="Desconnectat del servidor."
49
 
50
+Output.StreamEncodeError.Title="Error de codificació"
51
+Output.StreamEncodeError.Msg="S'ha produït un error del codificador durant la transmissió."
52
+
53
 Output.RecordFail.Title="Error en iniciar la gravació"
54
-Output.RecordFail.Unsupported="El format de sortida és o no compatible o no admet més d'una pista d'àudio.  Comproveu la configuració i torneu-ho a provar."
55
+Output.RecordFail.Unsupported="El format de sortida és o no compatible o no admet més d'una pista d'àudio. Comproveu la configuració i torneu-ho a provar."
56
 Output.RecordNoSpace.Title="Espai de disc insuficient"
57
 Output.RecordNoSpace.Msg="No hi ha prou espai de disc per continuar la gravació."
58
 Output.RecordError.Title="Error en l'enregistrament"
59
 Output.RecordError.Msg="S'ha produït un error desconegut mentre es gravava."
60
+Output.RecordError.EncodeErrorMsg="S'ha produït un error del codificador durant la gravació."
61
 Output.ReplayBuffer.NoHotkey.Title="Cap tecla d'accés ràpid!"
62
 Output.ReplayBuffer.NoHotkey.Msg="Cap tecla d'accés ràpid establerta per la memòria intermèdia de reproducció. Configureu la tecla d'accés \"Desa\" per desar els enregistraments de reproducció."
63
 
64
 Output.BadPath.Title="Ruta de l'arxiu incorrecta"
65
-Output.BadPath.Text="La ruta configurada pel fitxer de sortida no és vàlida.  Si us plau, comproveu la configuració per confirmar que s'ha creat una ruta de fitxer vàlida."
66
+Output.BadPath.Text="La ruta configurada pel fitxer de sortida no és vàlida. Si us plau, comproveu la configuració per confirmar que s'ha creat una ruta de fitxer vàlida."
67
 
68
 LogReturnDialog="Registre carregat amb èxit"
69
 LogReturnDialog.CopyURL="Copia l'URL"
70
@@ -292,7 +302,7 @@
71
 Remux.HelpText="Arrossegueu fitxers en aquesta finestra per convertir-los o seleccioneu una cel·la buida a «Enregistrament OBS» per cercar un fitxer."
72
 
73
 UpdateAvailable="Hi ha disponible una actualització"
74
-UpdateAvailable.Text="La versió %1.%2.%3 està disponible.  <a href='%4'> feu clic aquí per a baixar-la</a>"
75
+UpdateAvailable.Text="La versió %1.%2.%3 està disponible. <a href='%4'> feu clic aquí per a baixar-la</a>"
76
 
77
 Basic.DesktopDevice1="Àudio de l'escriptori"
78
 Basic.DesktopDevice2="Àudio de l'escriptori 2"
79
@@ -306,6 +316,8 @@
80
 
81
 Basic.Main.PreviewConextMenu.Enable="Habilita la visualització prèvia"
82
 
83
+Basic.Main.Preview.Disable="Desactiva la vista prèvia"
84
+
85
 ScaleFiltering="Escala de filtratge"
86
 ScaleFiltering.Point="Punt"
87
 ScaleFiltering.Bilinear="Bilineal"
88
@@ -361,7 +373,7 @@
89
 Basic.PropertiesWindow.SelectColor="Seleccioneu un color"
90
 Basic.PropertiesWindow.SelectFont="Seleccioneu un tipus de lletra"
91
 Basic.PropertiesWindow.ConfirmTitle="Configuració canviada"
92
-Basic.PropertiesWindow.Confirm="Hi ha canvis no desats.  Voleu mantenir-los?"
93
+Basic.PropertiesWindow.Confirm="Hi ha canvis no desats. Voleu mantenir-los?"
94
 Basic.PropertiesWindow.NoProperties="No hi ha propietats disponibles"
95
 Basic.PropertiesWindow.AddFiles="Afegeix fitxers"
96
 Basic.PropertiesWindow.AddDir="Afegir directori"
97
@@ -476,6 +488,8 @@
98
 Basic.MainMenu.Edit.Transform.FitToScreen="Ajusta a la pantalla (&F)"
99
 Basic.MainMenu.Edit.Transform.StretchToScreen="E&stira a la pantalla"
100
 Basic.MainMenu.Edit.Transform.CenterToScreen="&Centra a la pantalla"
101
+Basic.MainMenu.Edit.Transform.VerticalCenter="Centra verticalment"
102
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Centra horitzontalment"
103
 Basic.MainMenu.Edit.Order="&Ordre"
104
 Basic.MainMenu.Edit.Order.MoveUp="Mo&u amunt"
105
 Basic.MainMenu.Edit.Order.MoveDown="Mou avall (&D)"
106
@@ -521,7 +535,7 @@
107
 
108
 Basic.Settings.ProgramRestart="El programa ha de ser re-iniciat per tal que aquesta configuració tingui efecte."
109
 Basic.Settings.ConfirmTitle="Confirma els canvis"
110
-Basic.Settings.Confirm="Hi han canvis no desats.  Voleu desar els canvis?"
111
+Basic.Settings.Confirm="Hi han canvis no desats. Voleu desar els canvis?"
112
 
113
 Basic.Settings.General="General"
114
 Basic.Settings.General.Theme="Tema"
115
@@ -595,10 +609,10 @@
116
 Basic.Settings.Output.Simple.RecordingQuality.Small="Qualitat alta, mida d'arxiu mitjana"
117
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Qualitat molt elevada, mida de fitxer gran"
118
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Qualitat sense pèrdues, mida de l'arxiu molt gran"
119
-Basic.Settings.Output.Simple.Warn.VideoBitrate="ADVERTÈNCIA: La transmissió del vídeo s'establirà a %1, que és el límit superior per al servei de streaming actual.  Si està segur que vol anar per sobre de %1, activi les opcions avançades del codificador i desactivi \"Forçar límits de tassa de bits al servei d'streaming\"."
120
-Basic.Settings.Output.Simple.Warn.AudioBitrate="ADVERTÈNCIA: La transmissió d'àudio s'establirà a %1, que és el límit superior per al servei de streaming actual.  Si està segur que vol anar per sobre de %1, activi les opcions avançades del codificador i desactivi \"Forçar límits de tassa de bits al servei d'streaming\"."
121
+Basic.Settings.Output.Simple.Warn.VideoBitrate="ADVERTÈNCIA: La transmissió del vídeo s'establirà a %1, que és el límit superior per al servei de streaming actual. Si està segur que vol anar per sobre de %1, activi les opcions avançades del codificador i desactivi \"Forçar límits de tassa de bits al servei d'streaming\"."
122
+Basic.Settings.Output.Simple.Warn.AudioBitrate="ADVERTÈNCIA: La transmissió d'àudio s'establirà a %1, que és el límit superior per al servei de streaming actual. Si està segur que vol anar per sobre de %1, activi les opcions avançades del codificador i desactivi \"Forçar límits de tassa de bits al servei d'streaming\"."
123
 Basic.Settings.Output.Simple.Warn.Encoder="Advertiment: Gravar amb un software codificador en una qualitat diferent que el directe requerirà ús de CPU addicional si el directe i la gravació es fan a la vegada."
124
-Basic.Settings.Output.Simple.Warn.Lossless="Advertiment: La qualitat sense pèrdues genera mides d'arxiu gegantines!  La qualitat sense pèrdues pot utilitzar un total de 7 gigabytes d'espai de disc per minut a alta resolució i FPS.  Aquesta qualitat no és recomanable per a enregistraments llargs llevat que tingui una gran quantitat d'espai de disc disponible."
125
+Basic.Settings.Output.Simple.Warn.Lossless="Advertiment: La qualitat sense pèrdues genera mides d'arxiu gegantines! La qualitat sense pèrdues pot utilitzar un total de 7 gigabytes d'espai de disc per minut a alta resolució i FPS. Aquesta qualitat no és recomanable per a enregistraments llargs llevat que tingui una gran quantitat d'espai de disc disponible."
126
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Esteu segur que voleu utilitzar qualitat sense pèrdues?"
127
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Advertiment de qualitat sense pèrdues!"
128
 Basic.Settings.Output.Simple.Encoder.Software="Programari (x264)"
129
@@ -674,8 +688,8 @@
130
 Basic.Settings.Video.Numerator="Numerador"
131
 Basic.Settings.Video.Denominator="Denominador"
132
 Basic.Settings.Video.Renderer="Renderitzador"
133
-Basic.Settings.Video.InvalidResolution="El valor de resolució no és vàlid.  Ha de ser [amplada]x[alçada] (per exemple, 1920x1080)"
134
-Basic.Settings.Video.CurrentlyActive="La sortida de vídeo és actualment activa.  Si us plau desactiveu qualsevol sortida per canviar la configuració de vídeo."
135
+Basic.Settings.Video.InvalidResolution="El valor de resolució no és vàlid. Ha de ser [amplada]x[alçada] (per exemple, 1920x1080)"
136
+Basic.Settings.Video.CurrentlyActive="La sortida de vídeo és actualment activa. Si us plau desactiveu qualsevol sortida per canviar la configuració de vídeo."
137
 Basic.Settings.Video.DisableAero="Desactiva l'Aero"
138
 
139
 Basic.Settings.Video.DownscaleFilter.Bilinear="Bilineal (més ràpida, però borrós si s'escala)"
140
@@ -685,7 +699,8 @@
141
 Basic.Settings.Audio="Àudio"
142
 Basic.Settings.Audio.SampleRate="Frequència de mostreig"
143
 Basic.Settings.Audio.Channels="Canals"
144
-Basic.Settings.Audio.MeterDecayRate="Resposta del ràtio de l'audiòmetre"
145
+Basic.Settings.Audio.Meters="Metres"
146
+Basic.Settings.Audio.MeterDecayRate="Velocitat de descomposició"
147
 Basic.Settings.Audio.MeterDecayRate.Fast="Ràpida"
148
 Basic.Settings.Audio.MeterDecayRate.Medium="Mitja (PPM de tipus I)"
149
 Basic.Settings.Audio.MeterDecayRate.Slow="Lenta (PPM de tipus II)"
150
@@ -696,12 +711,13 @@
151
 Basic.Settings.Audio.MultichannelWarning="Si esteu retransmetent, verifiqueu que el servei triat suporta el so envoltant, tant a la reproducció d'entrada com de sortida. El Twitch, el Facebook 360 Live, el Mixer RTMP i el Smashcast són exemples on està completament suportat. Encara que el Facebook Live i el YouTube Live accepten l'entrada de so envoltant, el Facebook Live la converteix a estèreo i el YouTube Live la reprodueix només en 2 canals.\n\nEls filtres d'àudio de l'OBS són compatibles amb el so envoltant, encara que no es garanteix la compatibilitat amb connectors VST."
152
 Basic.Settings.Audio.MultichannelWarning.Title="Voleu habilitar el so envoltant?"
153
 Basic.Settings.Audio.MultichannelWarning.Confirm="Segur que voleu habilitar el so envoltant?"
154
-Basic.Settings.Audio.DesktopDevice="Dispositiu d'àudio d'escriptori"
155
-Basic.Settings.Audio.DesktopDevice2="Dispositiu d'àudio d'escriptori 2"
156
-Basic.Settings.Audio.AuxDevice="Micròfon/Dispositiu d'àudio auxiliar"
157
-Basic.Settings.Audio.AuxDevice2="Micròfon/Dispositiu d'àudio auxiliar 2"
158
-Basic.Settings.Audio.AuxDevice3="Micròfon/Dispositiu d'àudio auxiliar 3"
159
-Basic.Settings.Audio.AuxDevice4="Micròfon/Dispositiu auxiliar d'àudio 4"
160
+Basic.Settings.Audio.Devices="Dispositius"
161
+Basic.Settings.Audio.DesktopDevice="Àudio de l'escriptori"
162
+Basic.Settings.Audio.DesktopDevice2="Àudio de l'escriptori 2"
163
+Basic.Settings.Audio.AuxDevice="Dispositiu d'àudio mic/auxiliar"
164
+Basic.Settings.Audio.AuxDevice2="Dispositiu d'àudio mic/auxiliar 2"
165
+Basic.Settings.Audio.AuxDevice3="Dispositiu d'àudio mic/auxiliar 3"
166
+Basic.Settings.Audio.AuxDevice4="Dispositiu d'àudio mic/auxiliar 4"
167
 Basic.Settings.Audio.EnablePushToMute="Activa \"prémer-per-silenciar\""
168
 Basic.Settings.Audio.PushToMuteDelay="Retard \"prémer-per-silenciar\""
169
 Basic.Settings.Audio.EnablePushToTalk="Activa \"prémer-per-parlar\""
170
@@ -716,14 +732,14 @@
171
 Basic.Settings.Advanced.General.ProcessPriority.Normal="Normal"
172
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Per sota del normal"
173
 Basic.Settings.Advanced.General.ProcessPriority.Idle="Inactiva"
174
-Basic.Settings.Advanced.FormatWarning="Advertiment: Els formats de color diferents de NV12 estan destinats principalment per a la gravació i no són recomanables quan es fa un directe.  Fer un directe pot comportar un major ús de CPU a causa de la conversió de format de color."
175
+Basic.Settings.Advanced.FormatWarning="Advertiment: Els formats de color diferents de NV12 estan destinats principalment per a la gravació i no són recomanables quan es fa un directe. Fer un directe pot comportar un major ús de CPU a causa de la conversió de format de color."
176
 Basic.Settings.Advanced.Audio.BufferingTime="Temps de buffer d'àudio"
177
 Basic.Settings.Advanced.Video.ColorFormat="Format del color"
178
-Basic.Settings.Advanced.Video.ColorSpace="Espai de color YUV"
179
-Basic.Settings.Advanced.Video.ColorRange="Gamma de color YUV"
180
+Basic.Settings.Advanced.Video.ColorSpace="Espai de color"
181
+Basic.Settings.Advanced.Video.ColorRange="Gamma de colors"
182
 Basic.Settings.Advanced.Video.ColorRange.Partial="Parcial"
183
 Basic.Settings.Advanced.Video.ColorRange.Full="Màxima"
184
-Basic.Settings.Advanced.Audio.MonitoringDevice="Dispositiu de monitorització d'àudio"
185
+Basic.Settings.Advanced.Audio.MonitoringDevice="Dispositiu de monitorització"
186
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Per defecte"
187
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Desactiva la reducció d'àudio de Windows"
188
 Basic.Settings.Advanced.StreamDelay="Retard del directe"
189
@@ -740,7 +756,7 @@
190
 
191
 Basic.AdvAudio="&Propietats avançades d'àudio"
192
 Basic.AdvAudio.Name="Nom"
193
-Basic.AdvAudio.Volume="Volum (%)"
194
+Basic.AdvAudio.Volume="Volum"
195
 Basic.AdvAudio.Mono="Mescla a Mono"
196
 Basic.AdvAudio.Balance="Balanç"
197
 Basic.AdvAudio.SyncOffset="Correcció de sincronització (ms)"
198
@@ -816,6 +832,7 @@
199
 NoSources.Title="Cap font"
200
 NoSources.Text="Sembla que encara no heu afegit cap font de vídeo, de manera que només es mostrarà una pantalla en blanc. Esteu segur que voleu fer això?"
201
 NoSources.Text.AddSource="Podeu afegir fonts fent clic a la icona «+» sota el quadre Fonts de la finestra principal en qualsevol moment."
202
+NoSources.Label="No teniu cap font.\nFeu clic al botó + que hi ha a continuació \no bé feu clic aquí per afegir-ne una."
203
 
204
 ChangeBG="Estableix el color"
205
 CustomColor="Color personalitzat"
206
@@ -834,3 +851,5 @@
207
 ResizeOutputSizeOfSource.Text="La resolució base i de sortida es canviarà a la mida de la font actual."
208
 ResizeOutputSizeOfSource.Continue="Voleu continuar?"
209
 
210
+PreviewTransition="Previsualitza la transició"
211
+
212
obs-studio-23.1.0.tar.xz/UI/data/locale/cs-CZ.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/cs-CZ.ini Changed
157
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Vertikální rozložení"
3
 Group="Skupina"
4
 DoNotShowAgain="Znovu nezobrazovat"
5
+Default="(Výchozí)"
6
+Calculating="Počítám..."
7
 
8
 AlreadyRunning.Title="OBS je již spuštěno"
9
 AlreadyRunning.Text="OBS již běží! Pokud jste to opravdu nechtěli udělat, tak prosím ukončete ostatní běžící instance programu OBS před spuštěním nové. Pokud máte nastavenu minimalizaci do lišty, tak se prosím podívejte, zda neběží tam."
10
@@ -103,6 +105,8 @@
11
 Auth.StreamInfo="Informace o vysílání"
12
 TwitchAuth.Stats="Statistiky služby Twitch"
13
 TwitchAuth.Feed="Informační kanál služby Twitch"
14
+TwitchAuth.TwoFactorFail.Title="Nepovedlo se získat vysílací klíč"
15
+TwitchAuth.TwoFactorFail.Text="OBS se nemohl připojit k vašemu Twitch účtu. Zkontrolujte, zda máte nastaveno dvoufázové ověření ve vašem <a href='https://www.twitch.tv/settings/security'>nastavení bezpečnosti</a>, jelikož je to pro vysílání nutné."
16
 
17
 Copy.Filters="Kopírovat filtry"
18
 Paste.Filters="Vložit filtry"
19
@@ -185,6 +189,7 @@
20
 Basic.Stats.DroppedFrames="Ztracené snímky (síť)"
21
 Basic.Stats.MegabytesSent="Celkový datový výstup"
22
 Basic.Stats.Bitrate="Bitrate"
23
+Basic.Stats.DiskFullIn="Disk bude plný za cca."
24
 
25
 ResetUIWarning.Title="Opravdu si přejete resetovat rozhraní ?"
26
 ResetUIWarning.Text="Resetování rozhraním budou skryty přídavné doky. Pro zobrazení těchto doků je budete muset povolit v menu.\n\nOpravdu si přejete resetovat rozhraní ?"
27
@@ -250,19 +255,24 @@
28
 Output.StartReplayFailed="Chyba při spouštění nahrávání do paměti"
29
 Output.StartFailedGeneric="Nastala chyba při začátku nahrávání. Zkontrolujte, prosím, textový záznam pro další podrobnosti.\n\nPoznámka: Pokud používáte enkodér NVENC či AMD, zkontrolujte zda používáte aktuální verzi grafického ovladače."
30
 
31
+
32
 Output.ConnectFail.Title="Spojení se nezdařilo"
33
 Output.ConnectFail.BadPath="Chybná cesta nebo adresa připojení. Zkontrolujte, prosím, správnost svých nastavení."
34
 Output.ConnectFail.ConnectFailed="K serveru se nepodařilo připojit"
35
 Output.ConnectFail.InvalidStream="K nastavenému kanálu či klíči nelze přistoupit. Zkontrolujte, zda je vysílací klíč správný. Pokud ano, může být problém s připojením k serveru."
36
-Output.ConnectFail.Error="Při pokusu o připojení k serveru došlo k neočekávané chybě.  Další informace v záznamovém souboru."
37
+Output.ConnectFail.Error="Při pokusu o připojení k serveru došlo k neočekávané chybě. Další informace v záznamovém souboru."
38
 Output.ConnectFail.Disconnected="Odpojen od serveru."
39
 
40
+Output.StreamEncodeError.Title="Chyba kodéru"
41
+Output.StreamEncodeError.Msg="Při vysílání došlo k chybě kodéru."
42
+
43
 Output.RecordFail.Title="Chyba při spouštění nahrávání"
44
 Output.RecordFail.Unsupported="Výstupní formát není podporovaný nebo nepodporuje více než jednu zvukovou stopu. Zkontrolujte nastavení a zkuste to znovu."
45
 Output.RecordNoSpace.Title="Nedostatek místa na disku"
46
 Output.RecordNoSpace.Msg="Pro pokračování nahrávání není dostatek místa na disku."
47
 Output.RecordError.Title="Chyba při nahrávání"
48
 Output.RecordError.Msg="Při nahrávání došlo k nespecifikované chybě."
49
+Output.RecordError.EncodeErrorMsg="Při nahrávání došlo k chybě kodéru."
50
 Output.ReplayBuffer.NoHotkey.Title="Nepřiřazena žádná klávesová zkratka!"
51
 Output.ReplayBuffer.NoHotkey.Msg="Není nastavena žádná klávesová zkratka pro uložení záznamu. Nastavte ji prosím, abyste jej mohli ukládat."
52
 
53
@@ -292,7 +302,7 @@
54
 Remux.HelpText="Natáhněte soubory do tohoto okna k převodu nebo vyberte prázdné pole \"OBS nahrávka\" pro výběr souboru."
55
 
56
 UpdateAvailable="K dispozici je nová verze"
57
-UpdateAvailable.Text="Verze %1.%2.%3 je nyní k dispozici.  <a href='%4'>Stáhnout</a>"
58
+UpdateAvailable.Text="Verze %1.%2.%3 je nyní k dispozici. <a href='%4'>Stáhnout</a>"
59
 
60
 Basic.DesktopDevice1="Zvuk plochy"
61
 Basic.DesktopDevice2="Zvuk plochy 2"
62
@@ -306,6 +316,8 @@
63
 
64
 Basic.Main.PreviewConextMenu.Enable="Povolit náhled"
65
 
66
+Basic.Main.Preview.Disable="Vypnout náhled"
67
+
68
 ScaleFiltering="Filter škálování"
69
 ScaleFiltering.Point="Bod"
70
 ScaleFiltering.Bilinear="Bilineární"
71
@@ -476,6 +488,8 @@
72
 Basic.MainMenu.Edit.Transform.FitToScreen="Přizpůsobit obrazovce (&F)"
73
 Basic.MainMenu.Edit.Transform.StretchToScreen="Roztáhnout na obrazovku (&S)"
74
 Basic.MainMenu.Edit.Transform.CenterToScreen="Vy&centrovat"
75
+Basic.MainMenu.Edit.Transform.VerticalCenter="Vycentrovat svisle"
76
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Vycentrovat vodorovně"
77
 Basic.MainMenu.Edit.Order="P&ořadí"
78
 Basic.MainMenu.Edit.Order.MoveUp="Posunout výše (&U)"
79
 Basic.MainMenu.Edit.Order.MoveDown="Posunout níže (&D)"
80
@@ -659,7 +673,7 @@
81
 
82
 FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
83
 
84
-FilenameFormatting.TT="%CCYY       Rok, 4 číslice\n%YY     Rok, 2 poslední číslice (00-99)\n%MM        Měsíc, číslo (01-12)\n%DD       Den v měsíci, 2 číslice (01-31)\n%hh        Hodina ve 24h formátu (00-23)\n%mm      Minuta (00-59)\n%ss     Vteřina (00-61)\n%%     Znak %\n%a      Zkratka dne v týdnu\n%A     Den v týdnu\n%b     Zkratka měsíce\n%B      Měsíc\n%d       Den v měsíci, 2 číslice (01-31)\n%H     Hodina ve 24h formátu (00-23)\n%I       Hodina ve 12h formátu (01-12)\n%m       Měsíc, číslo (01-12)\n%M        Minuta (00-59)\n%p      AM / PM\n%S     Vteřina (00-61)\n%y     Rok, 2 poslední číslice (00-99)\n%Y     Rok\n%z     ISO 8601 časový posun od UTC nebo časového pásma\n      - název nebo zkratka\n%Z        Zkratka nebo název časového pásma\n"
85
+FilenameFormatting.TT="%CCYY   Rok, čtyři číslice\n%YY     Rok, poslední dvě číslice (00-99)\n%MM      Měsíc, číslem (01-12)\n%DD      Den v měsíci, dvě číslice (01-31)\n%hh      Hodina ve 24h formátu (00-23)\n%mm      Minuta (00-59)\n%ss     Vteřina (00-61)\n%%     Znak %\n%a      Zkrácený název dne v týdnu\n%A      Název dne v týdnu\n%b       Zkrácený název měsíce\n%B       Název měsíce\n%d        Den měsíce, dvě číslice (01-31)\n%H     Hodina ve 24h formátu (00-23)\n%I       Hodina ve 12h formátu (01-12)\n%m       Měsíc, číslem (01-12)\n%M       Minuta (00-59)\n%p      AM / PM\n%S     Vteřina (00-61)\n%y     Rok, poslední dvě číslice (00-99)\n%Y       Rok\n%z     ISO 8601 posun od UTC v časové zóně\n%Z     Název či zkratka časové zóny\n"
86
 
87
 Basic.Settings.Video="Obraz"
88
 Basic.Settings.Video.Adapter="Grafická karta"
89
@@ -685,7 +699,8 @@
90
 Basic.Settings.Audio="Zvuk"
91
 Basic.Settings.Audio.SampleRate="Vzorkovací frekvence"
92
 Basic.Settings.Audio.Channels="Kanály"
93
-Basic.Settings.Audio.MeterDecayRate="Rychlost útlumu snímače zvuku"
94
+Basic.Settings.Audio.Meters="Měřiče"
95
+Basic.Settings.Audio.MeterDecayRate="Rychlost rozpadu"
96
 Basic.Settings.Audio.MeterDecayRate.Fast="Rychle"
97
 Basic.Settings.Audio.MeterDecayRate.Medium="Střední (typ I PPM)"
98
 Basic.Settings.Audio.MeterDecayRate.Slow="Pomalu (typ II PPM)"
99
@@ -696,12 +711,13 @@
100
 Basic.Settings.Audio.MultichannelWarning="Předtím než začnete vysílat si zkontrolujte, zda vaše vysílací služba podporuje příjem a přehrávání prostorového zvuku. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast jsou příklady služeb, které jej plně podporují. I když Facebook Live a YouTube Live oba podporují příjem prostorového zvuku, Facebook Live jej převede na stereo a YouTube Live přehrává pouze dva kanály.\n\nOBS filtry zvuku jej plně podporují, ale podpora u pluginu VST není garantována."
101
 Basic.Settings.Audio.MultichannelWarning.Title="Povolit prostorový zvuk?"
102
 Basic.Settings.Audio.MultichannelWarning.Confirm="Jste si jisti, že chcete povolit prostorový zvuk?"
103
-Basic.Settings.Audio.DesktopDevice="Zařízení zvuku plochy"
104
-Basic.Settings.Audio.DesktopDevice2="Zařízení zvuku plochy 2"
105
-Basic.Settings.Audio.AuxDevice="Zvukové zařízení - mikrofon/AUX"
106
-Basic.Settings.Audio.AuxDevice2="Zvukové zařízení - mikrofon/AUX 2"
107
-Basic.Settings.Audio.AuxDevice3="Zvukové zařízení - mikrofon/AUX 3"
108
-Basic.Settings.Audio.AuxDevice4="Zvukové zařízení - mikrofon/AUX 4"
109
+Basic.Settings.Audio.Devices="Zařízení"
110
+Basic.Settings.Audio.DesktopDevice="Zvuk plochy"
111
+Basic.Settings.Audio.DesktopDevice2="Zvuk plochy 2"
112
+Basic.Settings.Audio.AuxDevice="Mikrofon/AUX"
113
+Basic.Settings.Audio.AuxDevice2="Mikrofon/AUX 2"
114
+Basic.Settings.Audio.AuxDevice3="Mikrofon/AUX 3"
115
+Basic.Settings.Audio.AuxDevice4="Mikrofon/AUX 4"
116
 Basic.Settings.Audio.EnablePushToMute="Povolit Ztlumit podržením"
117
 Basic.Settings.Audio.PushToMuteDelay="Zpoždění"
118
 Basic.Settings.Audio.EnablePushToTalk="Povolit Naslouchat podržením"
119
@@ -719,11 +735,11 @@
120
 Basic.Settings.Advanced.FormatWarning="Varování: Jiné formáty barev než je NV12 jsou primárně určeny pro nahrávání a neměly by být použity pro vysílání. Použití při vysílání zvýší využití CPU."
121
 Basic.Settings.Advanced.Audio.BufferingTime="Čas vyrovnávací paměti zvuku"
122
 Basic.Settings.Advanced.Video.ColorFormat="Formát barev"
123
-Basic.Settings.Advanced.Video.ColorSpace="Barevný prostor YUV"
124
-Basic.Settings.Advanced.Video.ColorRange="Oblast barev YUV"
125
+Basic.Settings.Advanced.Video.ColorSpace="Barevný prostor"
126
+Basic.Settings.Advanced.Video.ColorRange="Rozsah barev"
127
 Basic.Settings.Advanced.Video.ColorRange.Partial="Částečné"
128
 Basic.Settings.Advanced.Video.ColorRange.Full="Plné"
129
-Basic.Settings.Advanced.Audio.MonitoringDevice="Zařízení pro monitorování zvuku"
130
+Basic.Settings.Advanced.Audio.MonitoringDevice="Sledovací zařízení"
131
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Výchozí"
132
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Zakázat Windows výchozí utlumování zvuku"
133
 Basic.Settings.Advanced.StreamDelay="Zpoždění vysílání"
134
@@ -740,7 +756,7 @@
135
 
136
 Basic.AdvAudio="Rozšířené vlastnosti zvuku"
137
 Basic.AdvAudio.Name="Název"
138
-Basic.AdvAudio.Volume="Hlasitost (%)"
139
+Basic.AdvAudio.Volume="Hlasitost"
140
 Basic.AdvAudio.Mono="Převést na Mono"
141
 Basic.AdvAudio.Balance="Vyvážení"
142
 Basic.AdvAudio.SyncOffset="Zpoždění synchronizace (ms)"
143
@@ -816,6 +832,7 @@
144
 NoSources.Title="Žádné zdroje"
145
 NoSources.Text="Vypadá to, že jste zatím nepřidali žádné zdroje obrazu, takže budete vysílat černou obrazovku. Opravdu chcete pokračovat ?"
146
 NoSources.Text.AddSource="Zdroje můžete kdykoliv přidat tlačítkem + pod seznamem Zdroje v hlavním okně."
147
+NoSources.Label="Nepřidali jste žádné zdroj.\nKlikněte na tlačítko + níže, nebo klikněte zde pravým tlačítkem, pro přidání nového zdroje."
148
 
149
 ChangeBG="Nastavit barvu"
150
 CustomColor="Vlastní barva"
151
@@ -834,3 +851,5 @@
152
 ResizeOutputSizeOfSource.Text="Základní a výstupní rozlišení budou změněna na velikost aktuálního zdroje."
153
 ResizeOutputSizeOfSource.Continue="Chcete pokračovat ?"
154
 
155
+PreviewTransition="Náhled přechodu"
156
+
157
obs-studio-23.1.0.tar.xz/UI/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/da-DK.ini Changed
627
 
1
@@ -27,19 +27,19 @@
2
 Browse="Gennemse"
3
 Mono="Mono"
4
 Stereo="Stereo"
5
-DroppedFrames="Tabte billeder %1 (%2%)"
6
+DroppedFrames="Tabte billeder (frames) %1 (%2%)"
7
 StudioProgramProjector="Fuldskærmsprojektering (program)"
8
 PreviewProjector="Fuldskærmsprojektering (forhåndsvisning)"
9
 SceneProjector="Fuldskærmsprojektering (scene)"
10
 SourceProjector="Fuldskærmsprojektering (kilde)"
11
 StudioProgramWindow="Vinduesprojektering (program)"
12
 PreviewWindow="Vinduesprojektering (forhåndsvisning)"
13
-SceneWindow="Vinduesprojektering (Scene)"
14
+SceneWindow="Vinduesprojektering (scene)"
15
 SourceWindow="Vinduesprojektering (kilde)"
16
 MultiviewProjector="Multiview (fuldskærm)"
17
 MultiviewWindowed="Multiview (i vindue)"
18
 Clear="Ryd"
19
-Revert="Gendan"
20
+Revert="Tilbagefør"
21
 Show="Vis"
22
 Hide="Skjul"
23
 UnhideAll="Vis alle"
24
@@ -51,7 +51,7 @@
25
 ResetOSXVSyncOnExit="Nulstil OSX V-Sync ved afslutning"
26
 HighResourceUsage="Encodingproces overbelastet! Overvej at reducere videoressourceforbruget eller benytte et hurtigere encoding-forvalg."
27
 Transition="Overgang"
28
-QuickTransitions="Hurtig overgange"
29
+QuickTransitions="Hurtige overgange"
30
 Left="Venstre"
31
 Right="Højre"
32
 Top="Top"
33
@@ -81,13 +81,15 @@
34
 VerticalLayout="Lodret layout"
35
 Group="Gruppér"
36
 DoNotShowAgain="Vis ikke igen"
37
+Default="(Standard)"
38
+Calculating="Beregner..."
39
 
40
 AlreadyRunning.Title="OBS kører allerede"
41
 AlreadyRunning.Text="OBS kører allerede! Medmindre dette er tilsigtet, så bør du lukke enhver eksisterende OBS-proces, inden du forsøger at køre en ny. Hvis du har OBS opsat til at minimeres sig til systembakken, så tjek om den stadig kører dér."
42
 AlreadyRunning.LaunchAnyway="Start alligevel"
43
 
44
 DockCloseWarning.Title="Lukker dokbart vindue"
45
-DockCloseWarning.Text="Du har netop lukket et dokbart vindue. Hvis du vil vise det igen, skal du enytte menuen Vis → Doks på menulinjen."
46
+DockCloseWarning.Text="Du har netop lukket et dokbart vindue. Hvis du vil vise det igen, skal du benytte menuen Vis → Doks på menulinjen."
47
 
48
 Auth.Authing.Title="Godkender..."
49
 Auth.Authing.Text="Godkender med %1, afvent venligst..."
50
@@ -98,11 +100,13 @@
51
 Auth.LoadingChannel.Title="Indlæser kanalinformation..."
52
 Auth.LoadingChannel.Text="Indlæser kanalinformation for %1, afvent venligst..."
53
 Auth.ChannelFailure.Title="Mislykkedes at indlæse kanal"
54
-Auth.ChannelFailure.Text="Mislykkedes at indlæse kanalinformation for%1\n\n%2: %3"
55
+Auth.ChannelFailure.Text="Mislykkedes at indlæse kanalinformation for %1\n\n%2: %3"
56
 Auth.Chat="Chat"
57
 Auth.StreamInfo="Streaminformation"
58
 TwitchAuth.Stats="Twitch-statistikker"
59
 TwitchAuth.Feed="Twitch-aktivitetsfeed"
60
+TwitchAuth.TwoFactorFail.Title="Stream-nøgle kunne ikke forespørges"
61
+TwitchAuth.TwoFactorFail.Text="OBS kunne ikke forbinde til din Twitch-konto. Tjek, at tofaktorgodkendelse er opsat i dine <a href='https://www.twitch.tv/settings/security'>Twitch-sikkerhedsindstillinger</a>, da dette er nødvendigt for at streame."
62
 
63
 Copy.Filters="Kopiér filtre"
64
 Paste.Filters="Indsæt filtre"
65
@@ -116,7 +120,7 @@
66
 BandwidthTest.Region.Asia="Asien"
67
 BandwidthTest.Region.Other="Anden"
68
 
69
-Basic.FirstStartup.RunWizard="Vil du at køre auto-opsætningsguiden? Du kan også opsætte dine indstillinger manuelt, ved at klikke på knappen Indstillinger i hovedvinduet."
70
+Basic.FirstStartup.RunWizard="Vil du at køre auto-opsætningsguiden? Du kan også opsætte dine indstillinger manuelt ved at klikke på knappen Indstillinger i hovedvinduet."
71
 Basic.FirstStartup.RunWizard.NoClicked="Skifter du mening, så kan du altid køre auto-opsætningsguiden igen fra menuen Værktøjer."
72
 
73
 Basic.AutoConfig="Auto-opsætningsguide"
74
@@ -127,12 +131,12 @@
75
 Basic.AutoConfig.StartPage.PrioritizeRecording="Optimér kun til optagelse, jeg vil ikke foretage streaming"
76
 Basic.AutoConfig.VideoPage="Videoindstillinger"
77
 Basic.AutoConfig.VideoPage.SubTitle="Angiv de videoindstillinger du gerne vil benytte"
78
-Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="Brug aktuel (%1x%2)"
79
+Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="Benyt aktuelle (%1x%2)"
80
 Basic.AutoConfig.VideoPage.BaseResolution.Display="Skærm %1 (%2x%3)"
81
-Basic.AutoConfig.VideoPage.FPS.UseCurrent="Brug aktuel (%1)"
82
+Basic.AutoConfig.VideoPage.FPS.UseCurrent="Benyt aktuelle (%1)"
83
 Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="Enten 60 eller 30, men foretræk 60 når muligt"
84
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="Enten 60 eller 30, men foretræk høj opløsning"
85
-Basic.AutoConfig.VideoPage.CanvasExplanation="Bemærk: Lærredets (basis-) opløsning er ikke nødvendigvis identisk med den opløsning, du vil streame med eller optage i. Din aktuelle stream-/optagelsesopløsning kan blive nedskaleret fra lærredsopløsningen for at reducere ressourceforbrug eller krav til bithastighed."
86
+Basic.AutoConfig.VideoPage.CanvasExplanation="Bemærk: Lærredets (basis-) opløsning er ikke nødvendigvis identisk med den opløsning, du vil streame med eller optage i. Din aktuelle stream-/optagelsesopløsning kan blive nedskaleret fra lærredsopløsningen for at reducere ressourceforbrug eller bit-hastighedskrav."
87
 Basic.AutoConfig.StreamPage="Streamoplysninger"
88
 Basic.AutoConfig.StreamPage.SubTitle="Angiv dine streamoplysninger"
89
 Basic.AutoConfig.StreamPage.ConnectAccount="Forbind konto (valfrit)"
90
@@ -146,13 +150,13 @@
91
 Basic.AutoConfig.StreamPage.Server="Server"
92
 Basic.AutoConfig.StreamPage.StreamKey="Streamnøgle"
93
 Basic.AutoConfig.StreamPage.StreamKey.LinkToSite="(link)"
94
-Basic.AutoConfig.StreamPage.PerformBandwidthTest="Beregn bithastigheden vha. en båndbreddetest (kan tage et par minutter)"
95
-Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Foretræk hardware-encodning"
96
-Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Hardware-encoding fjerner det meste CPU-forbrug, men kan kræve højere bithastighed for at opnå samme kvalitetsniveau."
97
+Basic.AutoConfig.StreamPage.PerformBandwidthTest="Estimér bit-hastigheden vha. en båndbreddetest (kan tage et par minutter)"
98
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Foretræk hardwarekodning"
99
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Hardwarekodning fjerner det meste CPU-forbrug, men kan kræve højere bit-hastighed for at opnå samme kvalitetsniveau."
100
 Basic.AutoConfig.StreamPage.StreamWarning.Title="Streamadvarsel"
101
 Basic.AutoConfig.StreamPage.StreamWarning.Text="Båndbreddetesten er ved at streame tilfældige videodata uden lyd til din kanal. Det anbefales, hvis muligheden foreligger, midlertidigt at fravælger at gemme streams samt at angive streamen som privat indtil testen er fuldført. Fortsæt?"
102
 Basic.AutoConfig.TestPage="Endelige resultater"
103
-Basic.AutoConfig.TestPage.SubTitle.Testing="Programmet udfører nu en række tests for at beregne de idélle indstillinger"
104
+Basic.AutoConfig.TestPage.SubTitle.Testing="Programmet udfører nu en række tests for at estimere de bedste indstillinger"
105
 Basic.AutoConfig.TestPage.SubTitle.Complete="Testning fuldført"
106
 Basic.AutoConfig.TestPage.TestingBandwidth="Udfører båndbreddetest, kan tage nogle få minutter..."
107
 Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Forbinder til: %1..."
108
@@ -165,7 +169,7 @@
109
 Basic.AutoConfig.TestPage.TestingRes.Resolution="Tester %1x%2 %3 FPS..."
110
 Basic.AutoConfig.TestPage.Result.StreamingEncoder="Streaming-encoder"
111
 Basic.AutoConfig.TestPage.Result.RecordingEncoder="Optagelses-encoder"
112
-Basic.AutoConfig.TestPage.Result.Header="Programmet har fastslået, at disse beregnede indstillinger er de mest idéelle for dig:"
113
+Basic.AutoConfig.TestPage.Result.Header="Programmet har fastslået, at disse estimerede indstillinger er de mest idéelle for dig:"
114
 Basic.AutoConfig.TestPage.Result.Footer="Klik på Anvend indstillinger for at benytte denne opsætning. Klik på Tilbage for at genopsætte guiden og forsøge igen. For at opsætte manuelt, så klik på Annullér og åbn Indstillinger."
115
 
116
 Basic.Stats="Statistikker"
117
@@ -173,7 +177,7 @@
118
 Basic.Stats.HDDSpaceAvailable="Tilgængelig diskplads"
119
 Basic.Stats.MemoryUsage="Hukommelsesforbrug"
120
 Basic.Stats.AverageTimeToRender="Gennemsnitstid for billedrendering"
121
-Basic.Stats.SkippedFrames="Oversprang billeder grundet encoder-forsinkelse"
122
+Basic.Stats.SkippedFrames="Oversprang billeder grundet kodningsforsinkelse"
123
 Basic.Stats.MissedFrames="Billeder tabt grundet renderingsforsinkelse"
124
 Basic.Stats.Output.Stream="Stream"
125
 Basic.Stats.Output.Recording="Optagelse"
126
@@ -184,18 +188,19 @@
127
 Basic.Stats.Status.Inactive="Inaktiv"
128
 Basic.Stats.DroppedFrames="Tabte billeder (netværk)"
129
 Basic.Stats.MegabytesSent="Samlet Dataoutput"
130
-Basic.Stats.Bitrate="Bithastighed"
131
+Basic.Stats.Bitrate="Bit-hastighed"
132
+Basic.Stats.DiskFullIn="Disk fuld om (ca.)"
133
 
134
 ResetUIWarning.Title="Sikker på, at du vil nulstille UI'en?"
135
-ResetUIWarning.Text="Nulstilling af UI'en vil skjule ekstra dokker. Du skal synliggøre disse dokker i visningsmenuen, hvis du ønsker at se dem.\n\nSikker på, at du vil nulstille UI'en?"
136
+ResetUIWarning.Text="Nulstilling af UI'en vil skjule ekstra dok'er. Du skal synliggøre disse dok'er i visningsmenuen, hvis du ønsker at se dem.\n\nSikker på, at du vil nulstille UI'en?"
137
 
138
 Updater.Title="Ny opdatering tilgængelig"
139
 Updater.Text="Der er en ny opdatering tilgængelig:"
140
 Updater.UpdateNow="Opdatér nu"
141
 Updater.RemindMeLater="Påmind mig senere"
142
 Updater.Skip="Overspring version"
143
-Updater.Running.Title="Program aktuelt aktivt"
144
-Updater.Running.Text="Outputs er aktuelt aktive. Luk alle aktive outputs inden forsøg på opdatering"
145
+Updater.Running.Title="Program pt. aktivt"
146
+Updater.Running.Text="Outputs er pt. aktive. Luk alle aktive outputs inden forsøg på opdatering"
147
 Updater.NoUpdatesAvailable.Title="Ingen opdateringer tilgængelige"
148
 Updater.NoUpdatesAvailable.Text="Ingen opdateringer er pt. tilgængelige"
149
 Updater.FailedToLaunch="Mislykkedes at starte opdatering"
150
@@ -250,28 +255,33 @@
151
 Output.StartReplayFailed="Mislykkedes at starte genafspilnings-buffer"
152
 Output.StartFailedGeneric="Start af output mislykkedes. Tjek loggen for oplysninger.\n\nBemærk: Benytter du NVENC- eller AMD-encodere, så sørg for at dine videodrivere er opdaterede."
153
 
154
+
155
 Output.ConnectFail.Title="Mislykkedes at forbinde"
156
-Output.ConnectFail.BadPath="Ugyldig sti eller forbindelses-URL.  Tjek dine indstillinger for at bekræfte, at de er gyldige."
157
+Output.ConnectFail.BadPath="Ugyldig sti eller forbindelses-URL. Tjek dine indstillinger for at bekræfte, at de er gyldige."
158
 Output.ConnectFail.ConnectFailed="Mislykkedes at forbinde til server"
159
-Output.ConnectFail.InvalidStream="Kunne ikke tilgå den angivne kanel eller streamnøgle, tjek din streamnøgle. Hvis den er korrekt, kan der være problemer med at forbinde til serveren."
160
-Output.ConnectFail.Error="En uventet fejl opstod, da du forsøgte at forbinde til serveren.  Se yderligere oplysninger i logfilen."
161
+Output.ConnectFail.InvalidStream="Kunne ikke tilgå den angivne kanel eller streamnøgle. Tjek din streamnøgle. Er den korrekt, kan der være et problemer med at forbinde til serveren."
162
+Output.ConnectFail.Error="En uventet fejl opstod, under forsøgtet på at forbinde til serveren. Se yderligere info i logfilen."
163
 Output.ConnectFail.Disconnected="Afbrudt fra serveren."
164
 
165
+Output.StreamEncodeError.Title="Kodningsfejl"
166
+Output.StreamEncodeError.Msg="En kodningsfejl opstod under streamingen."
167
+
168
 Output.RecordFail.Title="Mislykkedes at starte optagelse"
169
 Output.RecordFail.Unsupported="Outputformatet er enten uunderstøttet eller understøtter ikke flere end ét lydspor. Tjek dine indstillinger og forsøg igen."
170
 Output.RecordNoSpace.Title="Utilstrækkelig diskplads"
171
-Output.RecordNoSpace.Msg="Der er ikke tilstrækkelig diskplads til at fortsætte optagelse."
172
+Output.RecordNoSpace.Msg="Utilstrækkelig diskplads til at fortsætte optagelse."
173
 Output.RecordError.Title="Optagelsesfejl"
174
 Output.RecordError.Msg="En uspecificeret fejl opstod under optagelse."
175
-Output.ReplayBuffer.NoHotkey.Title="Ingen genvejstast angivet!"
176
-Output.ReplayBuffer.NoHotkey.Msg="Ingen Gem-genvejstast angivet til genafspilnings-buffer. Angiv en \"Gem\"-genvejstast til brug for at gemme genafspilningsoptagelser."
177
+Output.RecordError.EncodeErrorMsg="En kodningsfejl opstod under optagelsen."
178
+Output.ReplayBuffer.NoHotkey.Title="Ingen genvejstast opsat!"
179
+Output.ReplayBuffer.NoHotkey.Msg="Ingen Gem-genvejstast opsat til genafspilnings-buffer. Opsæt en \"Gem\"-genvejstast til brug for at gemme genafspilningsoptagelser."
180
 
181
 Output.BadPath.Title="Ugyldig filsti"
182
-Output.BadPath.Text="Den opsatte outputsti er ugyldig. Tjek indstillinger for at bekræfte, at en gyldig filsti er opsat."
183
+Output.BadPath.Text="Den opsatte filoutputsti er ugyldig, så tjek at en gyldig er opsat i Indstillinger."
184
 
185
 LogReturnDialog="Log er uploadet"
186
 LogReturnDialog.CopyURL="Kopiér URL"
187
-LogReturnDialog.ErrorUploadingLog="Fejl under uploadi af logfil"
188
+LogReturnDialog.ErrorUploadingLog="Fejl under upload af logfil"
189
 
190
 Remux.SourceFile="OBS-optagelse"
191
 Remux.TargetFile="Destinationsfil"
192
@@ -289,10 +299,10 @@
193
 Remux.FileExists="Flg. destinationsfiler findes allerede. Erstat disse?"
194
 Remux.ExitUnfinishedTitle="Remuxing i gang"
195
 Remux.ExitUnfinished="Remuxing er ikke færdig. Stopper du nu, kan det gøre destinationsfilen ubrugelig.\nSikker på, at du vil stoppe remuxing?"
196
-Remux.HelpText="Slip filer i vinduet for at remuxe eller vælg en tom \"OBS-optagelse\"-celle for at søge efter en fil."
197
+Remux.HelpText="Slip filer i vinduet for at remuxe eller vælg en tom \"OBS-optagelse\" celle for at søge efter en fil."
198
 
199
 UpdateAvailable="Ny opdatering tilgængelig"
200
-UpdateAvailable.Text="Version %1.%2.%3 er nu tilgængelig.  <a href='%4'>Klik her for at downloade</a>"
201
+UpdateAvailable.Text="Version %1.%2.%3 er nu tilgængelig. <a href='%4'>Klik her for at downloade</a>"
202
 
203
 Basic.DesktopDevice1="Computerlyd"
204
 Basic.DesktopDevice2="Computerlyd 2"
205
@@ -306,9 +316,11 @@
206
 
207
 Basic.Main.PreviewConextMenu.Enable="Aktivér forhåndsvisning"
208
 
209
+Basic.Main.Preview.Disable="Deaktivér forhåndsvisning"
210
+
211
 ScaleFiltering="Skaleringsfiltrering"
212
 ScaleFiltering.Point="Punkt"
213
-ScaleFiltering.Bilinear="Bilinear"
214
+ScaleFiltering.Bilinear="Bilineær"
215
 ScaleFiltering.Bicubic="Bikubisk"
216
 ScaleFiltering.Lanczos="Lanczos"
217
 ScaleFiltering.Area="Område"
218
@@ -317,7 +329,7 @@
219
 Deinterlacing.Discard="Kassér"
220
 Deinterlacing.Retro="Retro"
221
 Deinterlacing.Blend="Bland"
222
-Deinterlacing.Blend2x="Blend 2x"
223
+Deinterlacing.Blend2x="Bland 2x"
224
 Deinterlacing.Linear="Lineær"
225
 Deinterlacing.Linear2x="Lineær 2x"
226
 Deinterlacing.Yadif="Yadif"
227
@@ -325,12 +337,12 @@
228
 Deinterlacing.TopFieldFirst="Øverste felt først"
229
 Deinterlacing.BottomFieldFirst="Nederste felt først"
230
 
231
-VolControl.SliderUnmuted="Lydstyrkeskyder for '%1': %2"
232
-VolControl.SliderMuted="Lydstyrkeskyder for '%1': %2 (pt. på lydløs)"
233
-VolControl.Mute="Gør '%1' tavs"
234
+VolControl.SliderUnmuted="Lydstyrkeskyder til '%1': %2"
235
+VolControl.SliderMuted="Lydstyrkeskyder til '%1': %2 (pt. på lydløs)"
236
+VolControl.Mute="Gør '%1' lydløs"
237
 VolControl.Properties="Egenskaber for '%1'"
238
 
239
-Basic.Main.AddSceneDlg.Title="Tilføje scene"
240
+Basic.Main.AddSceneDlg.Title="Tilføj scene"
241
 Basic.Main.AddSceneDlg.Text="Angiv navnet på scenen"
242
 
243
 Basic.Main.DefaultSceneName.Text="Scene %1"
244
@@ -354,14 +366,14 @@
245
 Basic.SourceSelect="Opret/Vælg kilde"
246
 Basic.SourceSelect.CreateNew="Opret ny"
247
 Basic.SourceSelect.AddExisting="Tilføj eksisterende"
248
-Basic.SourceSelect.AddVisible="Gør kilden synlig"
249
+Basic.SourceSelect.AddVisible="Gør kilde synlig"
250
 
251
 Basic.PropertiesWindow="Egenskaber for '%1'"
252
 Basic.PropertiesWindow.AutoSelectFormat="%1 (auto-vælg: %2)"
253
 Basic.PropertiesWindow.SelectColor="Vælg farve"
254
 Basic.PropertiesWindow.SelectFont="Vælg skrifttype"
255
 Basic.PropertiesWindow.ConfirmTitle="Indstillinger ændret"
256
-Basic.PropertiesWindow.Confirm="Der er ændringer, som ikke er gemt.  Skal de gemmes?"
257
+Basic.PropertiesWindow.Confirm="Der er ændringer, som ikke er gemt. Skal de gemmes?"
258
 Basic.PropertiesWindow.NoProperties="Ingen egenskaber tilgængelige"
259
 Basic.PropertiesWindow.AddFiles="Tilføj filer"
260
 Basic.PropertiesWindow.AddDir="Tilføj mappe"
261
@@ -375,21 +387,21 @@
262
 Basic.PropertiesView.FPS.Rational="Rationelle FPS-værdier"
263
 Basic.PropertiesView.FPS.ValidFPSRanges="Gyldige FPS-områder:"
264
 
265
-Basic.InteractionWindow="Interagere med '%1'"
266
+Basic.InteractionWindow="Interagerer med '%1'"
267
 
268
-Basic.StatusBar.Reconnecting="Afbrudt, gentilslutter om %2 sekund(-er) (forsøg %1)"
269
+Basic.StatusBar.Reconnecting="Afbrudt, genforbinder om %2 sekund(-er) (forsøg %1)"
270
 Basic.StatusBar.AttemptingReconnect="Forsøger at genforbinde... (forsøg %1)"
271
 Basic.StatusBar.ReconnectSuccessful="Genforbundet nu"
272
-Basic.StatusBar.Delay="Forsinkelse (%1 sek)"
273
-Basic.StatusBar.DelayStartingIn="Forsinkelse (starter om %1 sek)"
274
-Basic.StatusBar.DelayStoppingIn="Forsinkelse (stopper om %1 sek)"
275
-Basic.StatusBar.DelayStartingStoppingIn="Forsinkelse (stopper om %1 sek, starter om %2 sek)"
276
+Basic.StatusBar.Delay="Forsinkelse (%1 sek.)"
277
+Basic.StatusBar.DelayStartingIn="Forsinkelse (starter om %1 sek.)"
278
+Basic.StatusBar.DelayStoppingIn="Forsinkelse (stopper om %1 sek.)"
279
+Basic.StatusBar.DelayStartingStoppingIn="Forsinkelse (stopper om %1 sek., starter om %2 sek.)"
280
 
281
 Basic.Filters="Filtre"
282
 Basic.Filters.AsyncFilters="Lyd-/videofiltre"
283
 Basic.Filters.AudioFilters="Lydfiltre"
284
 Basic.Filters.EffectFilters="Effektfiltre"
285
-Basic.Filters.Title="Filtre for '%1'"
286
+Basic.Filters.Title="Filtre til '%1'"
287
 Basic.Filters.AddFilter.Title="Filternavn"
288
 Basic.Filters.AddFilter.Text="Angiv navnet på filteret"
289
 
290
@@ -445,7 +457,7 @@
291
 Basic.MainMenu.File="&Fil"
292
 Basic.MainMenu.File.Export="&Eksport"
293
 Basic.MainMenu.File.Import="&Import"
294
-Basic.MainMenu.File.ShowRecordings="Vis optagelse (&R)"
295
+Basic.MainMenu.File.ShowRecordings="Vis optagelse&r"
296
 Basic.MainMenu.File.Remux="Re&mux optagelser"
297
 Basic.MainMenu.File.Settings="Ind&stillinger"
298
 Basic.MainMenu.File.ShowSettingsFolder="Vis Indstillingsmappe"
299
@@ -453,7 +465,7 @@
300
 Basic.MainMenu.AlwaysOnTop="&Altid øverst"
301
 Basic.MainMenu.File.Exit="Afslut (&X)"
302
 
303
-Basic.MainMenu.Edit="R&edigere"
304
+Basic.MainMenu.Edit="R&edigér"
305
 Basic.MainMenu.Edit.Undo="Fortryd (&U)"
306
 Basic.MainMenu.Edit.Redo="Gendan (&R)"
307
 Basic.MainMenu.Edit.UndoAction="Fortryd $1 (&U)"
308
@@ -476,6 +488,8 @@
309
 Basic.MainMenu.Edit.Transform.FitToScreen="Tilpas til skærm (&F)"
310
 Basic.MainMenu.Edit.Transform.StretchToScreen="&Stræk til skærm"
311
 Basic.MainMenu.Edit.Transform.CenterToScreen="&Centér på skærm"
312
+Basic.MainMenu.Edit.Transform.VerticalCenter="Centrér vertikalt"
313
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Centrér horisontalt"
314
 Basic.MainMenu.Edit.Order="Rækkefølge (&O)"
315
 Basic.MainMenu.Edit.Order.MoveUp="Flyt Op (&U)"
316
 Basic.MainMenu.Edit.Order.MoveDown="Flyt Ne&d"
317
@@ -485,7 +499,7 @@
318
 
319
 Basic.MainMenu.View="&Vis"
320
 Basic.MainMenu.View.Toolbars="Værk&tøjslinjer"
321
-Basic.MainMenu.View.Docks="Dokker"
322
+Basic.MainMenu.View.Docks="Dok'er"
323
 Basic.MainMenu.View.Docks.ResetUI="Nulstil UI"
324
 Basic.MainMenu.View.Docks.LockUI="Lås UI"
325
 Basic.MainMenu.View.Toolbars.Listboxes="&Listebokse"
326
@@ -509,7 +523,7 @@
327
 Basic.MainMenu.Help.Website="Besøg &Websted"
328
 Basic.MainMenu.Help.Discord="Tilmeld til &Discord-server"
329
 Basic.MainMenu.Help.Logs="&Logfiler"
330
-Basic.MainMenu.Help.Logs.ShowLogs="Vi&s log-filer"
331
+Basic.MainMenu.Help.Logs.ShowLogs="Vi&s logfiler"
332
 Basic.MainMenu.Help.Logs.UploadCurrentLog="Upload aktuel logfil (&C)"
333
 Basic.MainMenu.Help.Logs.UploadLastLog="Upload seneste &logfil"
334
 Basic.MainMenu.Help.Logs.ViewCurrentLog="&Vis aktuel log"
335
@@ -520,8 +534,8 @@
336
 Basic.MainMenu.Help.About="Om (&A)"
337
 
338
 Basic.Settings.ProgramRestart="Programmet skal genstartes, for at effektuere disse indstillinger."
339
-Basic.Settings.ConfirmTitle="Bekræfte ændringer"
340
-Basic.Settings.Confirm="Du har ugemte ændringer. Gem ændringer?"
341
+Basic.Settings.ConfirmTitle="Bekræft ændringer"
342
+Basic.Settings.Confirm="Du har ugemte ændringer, gem dem nu?"
343
 
344
 Basic.Settings.General="Generelt"
345
 Basic.Settings.General.Theme="Tema"
346
@@ -541,9 +555,9 @@
347
 Basic.Settings.General.RecordWhenStreaming="Optag automatisk ved streaming"
348
 Basic.Settings.General.KeepRecordingWhenStreamStops="Fortsæt med at optage når stream stopper"
349
 Basic.Settings.General.ReplayBufferWhileStreaming="Start automatisk genafsplinings-buffer ved streaming"
350
-Basic.Settings.General.KeepReplayBufferStreamStops="Bibehold genafsplinings-buffer aktiv når stream stopper"
351
+Basic.Settings.General.KeepReplayBufferStreamStops="Behold genafsplinings-buffer aktiv når stream stopper"
352
 Basic.Settings.General.SysTray="Systembakke"
353
-Basic.Settings.General.SysTrayWhenStarted="Minimér til systembakke ved start"
354
+Basic.Settings.General.SysTrayWhenStarted="Minimér til systembakke når startet"
355
 Basic.Settings.General.SystemTrayHideMinimize="Minimér altid til systembakke i stedet for opgavebjælke"
356
 Basic.Settings.General.SaveProjectors="Gem projektorer ved afslutning"
357
 Basic.Settings.General.Preview="Forhåndsvisning"
358
@@ -557,7 +571,7 @@
359
 Basic.Settings.General.Multiview.MouseSwitch="Klik for at skifte mellem scener"
360
 Basic.Settings.General.Multiview.DrawSourceNames="Vis scenenavne"
361
 Basic.Settings.General.Multiview.DrawSafeAreas="Tegn sikre områder (EBU R 95)"
362
-Basic.Settings.General.MultiviewLayout="Multivisningslayout"
363
+Basic.Settings.General.MultiviewLayout="Multiview-layout"
364
 Basic.Settings.General.MultiviewLayout.Horizontal.Top="Vandret, øverst (8 scener)"
365
 Basic.Settings.General.MultiviewLayout.Horizontal.Bottom="Vandret, nederst (8 scener)"
366
 Basic.Settings.General.MultiviewLayout.Vertical.Left="Lodret, venstre (8 scener)"
367
@@ -576,7 +590,7 @@
368
 Basic.Settings.Output.Encoder="Encoder"
369
 Basic.Settings.Output.SelectDirectory="Vælg optagelsesmappe"
370
 Basic.Settings.Output.SelectFile="Vælg optagelsesfil"
371
-Basic.Settings.Output.EnforceBitrate="Håndhæv streamingtjenestes bithastighedsbegrænsninger"
372
+Basic.Settings.Output.EnforceBitrate="Håndhæv streamingtjenestes bit-hastighedsbegrænsninger"
373
 Basic.Settings.Output.Mode="Outputtilstand"
374
 Basic.Settings.Output.Mode.Simple="Simpel"
375
 Basic.Settings.Output.Mode.Adv="Avanceret"
376
@@ -584,8 +598,8 @@
377
 Basic.Settings.Output.UseReplayBuffer="Aktivér Genafspilnings-buffer"
378
 Basic.Settings.Output.ReplayBuffer.SecondsMax="Maksimal genafspilningstid (sek.)"
379
 Basic.Settings.Output.ReplayBuffer.MegabytesMax="Maksimal hukommelse (MB)"
380
-Basic.Settings.Output.ReplayBuffer.Estimate="Anslået hukommelsesforbrug: %1 MB"
381
-Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Ikke kan beregne hukommelsesforbrug. Angiv en maks. hukommelsesgrænse."
382
+Basic.Settings.Output.ReplayBuffer.Estimate="Estimeret hukommelsesforbrug: %1 MB"
383
+Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Ikke kan estimere hukommelsesforbrug. Angiv en maks. hukommelsesgrænse."
384
 Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(Bemærk: Sørg for at opsætte en genvejstast til genafspilnings-bufferen i afsnittet for genvejstaster)"
385
 Basic.Settings.Output.ReplayBuffer.Prefix="Genafspilnings-buffer, filnavnpræfiks"
386
 Basic.Settings.Output.ReplayBuffer.Suffix="Endelse"
387
@@ -593,12 +607,12 @@
388
 Basic.Settings.Output.Simple.RecordingQuality="Optagelseskvalitet"
389
 Basic.Settings.Output.Simple.RecordingQuality.Stream="Samme som stream"
390
 Basic.Settings.Output.Simple.RecordingQuality.Small="Høj kvalitet, medium filstørrelse"
391
-Basic.Settings.Output.Simple.RecordingQuality.HQ="Identisk kvalitet, stor filstørrelse"
392
+Basic.Settings.Output.Simple.RecordingQuality.HQ="Synlig identisk kvalitet, stor filstørrelse"
393
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Tabsfri kvalitet, enorm stor filstørrelse"
394
-Basic.Settings.Output.Simple.Warn.VideoBitrate="Advarsel: Videostreamingbithastigheden sættes til %1, som er den øvre grænse for den aktuelle streamingtjeneste. Er du sikker på, at du vil at gå over %1, så aktivér avancerede encoder-valg og afmarkér \"Gennemtving streamingtjenestes bithastighedsbegrænsninger\"."
395
-Basic.Settings.Output.Simple.Warn.AudioBitrate="Advarsel: Audiostreamingbithastigheden sættes til %1, som er den øvre grænse for den aktuelle streamingtjeneste.  Er du sikker på, at du vil at gå over %1, så aktivér avancerede encoder-valg og afmarkér \"Gennemtving streamingtjenestes bithastighedsbegrænsninger\"."
396
-Basic.Settings.Output.Simple.Warn.Encoder="Advarsel: Optagelse med en software-encoder i en anden kvalitet end det streamede vil medføre ekstra CPU-forbrug, hvis du streamer og optager samtidigt."
397
-Basic.Settings.Output.Simple.Warn.Lossless="Advarsel: Tabsfri kvalitet genererer gevaldigt store filstørrelser! Tabsfri kvalitet kan bruge op til 7 GB diskplads pr. minut ved høje opløsninger og billedhastigheder. Tabsfri tilstand anbefales ikke til lange optagelser, medmindre du har en meget stor mængde tilgængelig diskplads."
398
+Basic.Settings.Output.Simple.Warn.VideoBitrate="Advarsel: Videostreamingbit-hastigheden sættes til %1, som er den øvre grænse for den aktuelle streamingtjeneste. Er du sikker på, at du vil at gå over %1, så aktivér avancerede encoder-valg og afmarkér \"Gennemtving streamingtjenestes bit-hastighedsbegrænsninger\"."
399
+Basic.Settings.Output.Simple.Warn.AudioBitrate="Advarsel: Audiostreamingbit-hastigheden sættes til %1, som er den øvre grænse for den aktuelle streamingtjeneste. Er du sikker på, at du vil at gå over %1, så aktivér avancerede encoder-valg og afmarkér \"Gennemtving streamingtjenestes bit-hastighedsbegrænsninger\"."
400
+Basic.Settings.Output.Simple.Warn.Encoder="Advarsel: Optagelse med en software-encoder i en anden kvalitet end den streamede vil medføre ekstra CPU-forbrug, hvis du streamer og optager samtidigt."
401
+Basic.Settings.Output.Simple.Warn.Lossless="Advarsel: Tabsfri kvalitet genererer gevaldigt store filstørrelser! Tabsfri kvalitet kan forbruge op til 7 GB diskplads pr. minut ved høje opløsninger og billedhastigheder. Tabsfri tilstand anbefales ikke til lange optagelser, medmindre du har masser af tilgængelig diskplads."
402
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Sikker på, at du vil benytte tabsfri kvalitet?"
403
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Tabsfri kvalitet-advarsel!"
404
 Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
405
@@ -606,18 +620,18 @@
406
 Basic.Settings.Output.Simple.Encoder.Hardware.AMD="Hardware (AMD)"
407
 Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Hardware (NVENC)"
408
 Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 lavt, forvalgt CPU-forbrug, øger filstørrelsen)"
409
-Basic.Settings.Output.VideoBitrate="Videobithastighed"
410
-Basic.Settings.Output.AudioBitrate="Audiobithastighed"
411
+Basic.Settings.Output.VideoBitrate="Videobit-hastighed"
412
+Basic.Settings.Output.AudioBitrate="Audiobit-hastighed"
413
 Basic.Settings.Output.Reconnect="Automatisk gentilslutning"
414
-Basic.Settings.Output.RetryDelay="Forsøg igen-forsinkelse (sekunder)"
415
+Basic.Settings.Output.RetryDelay="Forsøg igen-forsinkelse (sek.)"
416
 Basic.Settings.Output.MaxRetries="Maks. antal forsøg"
417
 Basic.Settings.Output.Advanced="Aktivér avancerede Encoder-indstillinger"
418
-Basic.Settings.Output.EncoderPreset="Encoderforvalg"
419
+Basic.Settings.Output.EncoderPreset="Encoder-forvalg"
420
 Basic.Settings.Output.CustomEncoderSettings="Tilpasset Encoder-indstillinger"
421
 Basic.Settings.Output.CustomMuxerSettings="Tilpasset Muxer-indstillinger"
422
 Basic.Settings.Output.NoSpaceFileName="Generér filnavn uden mellemrum"
423
 
424
-Basic.Settings.Output.Adv.Rescale="Omskaleringsoutput"
425
+Basic.Settings.Output.Adv.Rescale="Omskalér output"
426
 Basic.Settings.Output.Adv.AudioTrack="Lydspor"
427
 Basic.Settings.Output.Adv.Streaming="Streaming"
428
 Basic.Settings.Output.Adv.ApplyServiceSettings="Håndhæv streamingtjenestes encoder-indstillinger"
429
@@ -657,9 +671,9 @@
430
 Basic.Settings.Output.Adv.FFmpeg.GOPSize="Keyframe-Interval (billeder)"
431
 Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat="Vis alle codecs (selv potentielt inkompatible)"
432
 
433
-FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
434
+FilenameFormatting.completer="%CCYY-%DD-%MM %hh-%mm-%ss\n%DD-%MM-%YY %hh-%mm-%ss\n%d-%m-%Y %H-%M-%S\n%d-%m-%y %H-%M-%S\n%a %d-%m-%Y %H-%M-%S\n%A %d-%m-%Y %H-%M-%S\n%d-%b-%Y %H-%M-%S\n%d-%B-%Y %H-%M-%S\n%d-%m-%Y %I-%M-%S-%p\n%d-%m-%Y %H-%M-%S-%z\n%d-%m-%Y %H-%M-%S-%Z"
435
 
436
-FilenameFormatting.TT="%CCYY       år, fire cifre\n%YY     år, sidste to cifre (00-99)\n%MM        måned som tal (01-12)\n%DD      dag i måneden, foranstillet nul (01-31)\n%hh        time i 24t format (00-23)\n%mm      minut (00-59)\n%ss      sekund (00-61)\n%%      et % tegn\n%a       forkortet ugedagsnavn\n%A       helt ugedagsnavn\n%b        forkortet månedsnavn\n%B        helt månedsnavn\n%d     dag i åneden, foranstillet nul (01-31)\n%H      time i 24t format (00-23)\n%I       time i 12t format (01-12)\n%m       måned som et tal (01-12)\n%M        minut (00-59)\n%p       am eller pm angivelse\n%S       sekund (00-61)\n%y      år, sidste to cifre (00-99)\n%Y     år\n%z      ISO 8601 offset fra UTC eller tidszone\n        navn eller forkortelse\n%Z      tidszone navn eller forkortelse\n"
437
+FilenameFormatting.TT="%CCYY   År, fire cifre\n%YY     År, sidste to cifre (00-99)\n%MM        Måned i decimaltalsform (01-12)\n%DD        Månedsdag, nul-foranstillet (01-31)\n%hh        Time i 24-timersformat (00-23)\n%mm     Minut (00-59)\n%ss      Sekund (00-61)\n%%      Et %-tegn\n%a       Forkortet ugedagsnavn\n%A       Fuldt ugedagsnavn\n%b       Forkortet månedsnavn\n%B        Fuldt månedsnavn\n%d        Månedsdag, nul-foranstillet (01-31)\n%H     Time i 24-timersformat (00-23)\n%I      Time i 12-timersformat (01-12)\n%m      Måned i decimaltalsform (01-12)\n%M     Minut (00-59)\n%p       AM-/PM-betegnelse\n%S       Sekund (00-61)\n%y      År, sidste to cifre (00-99)\n%Y     År\n%z      ISO 8601-forskudt fra UTC i tidszone\n%Z        Tidszonenavn eller -forkortelse\n"
438
 
439
 Basic.Settings.Video="Video"
440
 Basic.Settings.Video.Adapter="Skærmkort"
441
@@ -674,38 +688,40 @@
442
 Basic.Settings.Video.Numerator="Tæller"
443
 Basic.Settings.Video.Denominator="Nævner"
444
 Basic.Settings.Video.Renderer="Gengiver"
445
-Basic.Settings.Video.InvalidResolution="Ugyldig opløsningsværdi.  Skal være [width]x[height] (dvs. 1.920x1.080)"
446
-Basic.Settings.Video.CurrentlyActive="Videooutput erpt. aktivt.  Slå evt. outputs fra for at ændre videoindstillinger."
447
+Basic.Settings.Video.InvalidResolution="Ugyldig opløsningsværdi. Skal være [width]x[height] (f.eks. 1.920x1.080)"
448
+Basic.Settings.Video.CurrentlyActive="Videooutput erpt. aktivt. Afbryd evt. outputs fra for at ændre videoindstillinger."
449
 Basic.Settings.Video.DisableAero="Deaktivér Aero"
450
 
451
-Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (hurtigst, men sløret ved skalering)"
452
+Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinær (hurtigst, men sløret ved skalering)"
453
 Basic.Settings.Video.DownscaleFilter.Bicubic="Bikubisk (skarp skalering, 16 samples)"
454
 Basic.Settings.Video.DownscaleFilter.Lanczos="Lanczos (skarp skalering, 32 samples)"
455
 
456
 Basic.Settings.Audio="Lyd"
457
-Basic.Settings.Audio.SampleRate="Samplehastighed"
458
+Basic.Settings.Audio.SampleRate="Samplingshastighed"
459
 Basic.Settings.Audio.Channels="Kanaler"
460
-Basic.Settings.Audio.MeterDecayRate="Lydmålerudstyring, faldhastighed"
461
+Basic.Settings.Audio.Meters="Udstyringsmålere"
462
+Basic.Settings.Audio.MeterDecayRate="Aftagelseshastighed"
463
 Basic.Settings.Audio.MeterDecayRate.Fast="Hurtig"
464
 Basic.Settings.Audio.MeterDecayRate.Medium="Medium (Type I PPM)"
465
 Basic.Settings.Audio.MeterDecayRate.Slow="Langsom (Type II PPM)"
466
 Basic.Settings.Audio.PeakMeterType="Peak Meter-type"
467
-Basic.Settings.Audio.PeakMeterType.SamplePeak="Intervalspidsværdi"
468
+Basic.Settings.Audio.PeakMeterType.SamplePeak="Samplingsspidsværdi"
469
 Basic.Settings.Audio.PeakMeterType.TruePeak="Sand spidsværdi (højere CPU-belastning)"
470
 Basic.Settings.Audio.MultiChannelWarning.Enabled="ADVARSEL: Surround Sound-lyd er aktiveret."
471
 Basic.Settings.Audio.MultichannelWarning="Tjek ifm. streaming om din streamingtjeneste understøtter både Surround Sound-input og -afspilning. Twitch, Facebook 360 Live, Mixer RTMP og Smashcast er eksempler, hvor surroundlyd understøttes fuldt ud. Selvom Facebook Live og YouTube Live begge accepterer surround input, nedmikser Facebook Live til stereo, og YouTube Live afspiller kun to kanaler.\n\nOBS-lydfiltre er kompatible med surroundlyd, dog er VST-pluginsupport ikke garanteret."
472
 Basic.Settings.Audio.MultichannelWarning.Title="Aktivér Surround Sound-lyd?"
473
 Basic.Settings.Audio.MultichannelWarning.Confirm="Sikker på, at du vil aktivere Surround Sound-lyd?"
474
-Basic.Settings.Audio.DesktopDevice="Computerlydenhed"
475
-Basic.Settings.Audio.DesktopDevice2="Computerlydenhed 2"
476
-Basic.Settings.Audio.AuxDevice="Mic/Auxiliary-lydenhed"
477
-Basic.Settings.Audio.AuxDevice2="Mic/Auxiliary-lydenhed 2"
478
-Basic.Settings.Audio.AuxDevice3="Mic/Auxiliary-lydenhed 3"
479
-Basic.Settings.Audio.AuxDevice4="Mikrofon/ekstra lydenhed 4"
480
-Basic.Settings.Audio.EnablePushToMute="Aktivér tryk-for-stilhed"
481
-Basic.Settings.Audio.PushToMuteDelay="Tryk-for-stilhed forsinkelse"
482
+Basic.Settings.Audio.Devices="Enheder"
483
+Basic.Settings.Audio.DesktopDevice="Computerlyd"
484
+Basic.Settings.Audio.DesktopDevice2="Computerlyd 2"
485
+Basic.Settings.Audio.AuxDevice="Mic/Aux Lydenhed"
486
+Basic.Settings.Audio.AuxDevice2="Mic/Aux Lydenhed 2"
487
+Basic.Settings.Audio.AuxDevice3="Mic/Aux Lydenhed 3"
488
+Basic.Settings.Audio.AuxDevice4="Mic/Aux Lydenhed 4"
489
+Basic.Settings.Audio.EnablePushToMute="Aktivér tryk-gør-tavs"
490
+Basic.Settings.Audio.PushToMuteDelay="Tryk-gør-tavs forsinkelse"
491
 Basic.Settings.Audio.EnablePushToTalk="Aktivér tryk-for-tale"
492
-Basic.Settings.Audio.PushToTalkDelay="Tryk-for-at-tale forsinkelse"
493
+Basic.Settings.Audio.PushToTalkDelay="Tryk-for-tale forsinkelse"
494
 Basic.Settings.Audio.UnknownAudioDevice="[Enhed ikke tilsluttet eller utilgængelig]"
495
 Basic.Settings.Audio.Disabled="Deaktiveret"
496
 
497
@@ -719,17 +735,17 @@
498
 Basic.Settings.Advanced.FormatWarning="Advarsel: Farveformater ud over NV12 er primært beregnet til optagelse, og de anbefales ikke under streaming. Streaming kan medføre øget CPU-forbrug grundet farveformatkonvertering."
499
 Basic.Settings.Advanced.Audio.BufferingTime="Lyd-bufferinterval"
500
 Basic.Settings.Advanced.Video.ColorFormat="Farveformat"
501
-Basic.Settings.Advanced.Video.ColorSpace="YUV farverum"
502
-Basic.Settings.Advanced.Video.ColorRange="YUV farveområde"
503
+Basic.Settings.Advanced.Video.ColorSpace="Farverum"
504
+Basic.Settings.Advanced.Video.ColorRange="Farveområde"
505
 Basic.Settings.Advanced.Video.ColorRange.Partial="Delvis"
506
 Basic.Settings.Advanced.Video.ColorRange.Full="Fuld"
507
-Basic.Settings.Advanced.Audio.MonitoringDevice="Lyd overvågningsenhed"
508
+Basic.Settings.Advanced.Audio.MonitoringDevice="Moniteringsenhed"
509
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Standard"
510
-Basic.Settings.Advanced.Audio.DisableAudioDucking="Deaktiver Windows lyddæmpning"
511
-Basic.Settings.Advanced.StreamDelay="Stream forsinkelse"
512
-Basic.Settings.Advanced.StreamDelay.Duration="Varighed (sekunder)"
513
-Basic.Settings.Advanced.StreamDelay.Preserve="Bevar afskæringspunkt (forøg forsinkelse) ved forbindelsesgendannelse"
514
-Basic.Settings.Advanced.StreamDelay.MemoryUsage="Anslået hukommelsesbrug: %1 MB"
515
+Basic.Settings.Advanced.Audio.DisableAudioDucking="Deaktivér Windows-lyddæmpning"
516
+Basic.Settings.Advanced.StreamDelay="Streamforsinkelse"
517
+Basic.Settings.Advanced.StreamDelay.Duration="Varighed (sek.)"
518
+Basic.Settings.Advanced.StreamDelay.Preserve="Bevar afskæringspunkt (forøg forsinkelse) ved gentilslutning"
519
+Basic.Settings.Advanced.StreamDelay.MemoryUsage="Estimeret hukommelsesforbrug: %1 MB"
520
 Basic.Settings.Advanced.Network="Netværk"
521
 Basic.Settings.Advanced.Network.BindToIP="Bind til IP"
522
 Basic.Settings.Advanced.Network.EnableNewSocketLoop="Aktivér ny netværkskode"
523
@@ -740,26 +756,26 @@
524
 
525
 Basic.AdvAudio="Avancerede lydegenskaber"
526
 Basic.AdvAudio.Name="Navn"
527
-Basic.AdvAudio.Volume="Volumen (%)"
528
+Basic.AdvAudio.Volume="Lydstyrke"
529
 Basic.AdvAudio.Mono="Nedmix til Mono"
530
 Basic.AdvAudio.Balance="Balance"
531
 Basic.AdvAudio.SyncOffset="Synkr-forskydning (ms)"
532
 Basic.AdvAudio.Monitoring="Lydovervågning"
533
-Basic.AdvAudio.Monitoring.None="Overvågning fra"
534
-Basic.AdvAudio.Monitoring.MonitorOnly="Kun overvågning (mute output)"
535
+Basic.AdvAudio.Monitoring.None="Overvågning Fra"
536
+Basic.AdvAudio.Monitoring.MonitorOnly="Kun overvågning (gør output tavs)"
537
 Basic.AdvAudio.Monitoring.Both="Overvåg og output"
538
 Basic.AdvAudio.AudioTracks="Spor"
539
 
540
 Basic.Settings.Hotkeys="Genvejstaster"
541
 Basic.Settings.Hotkeys.Pair="Tastekombinationer delt med '%1' fungerer som omskiftere"
542
-Basic.Settings.Hotkeys.Filter="Filter"
543
+Basic.Settings.Hotkeys.Filter="Filtrér"
544
 
545
 Basic.Hotkeys.SelectScene="Skift til scene"
546
 
547
 Basic.SystemTray.Show="Vis"
548
 Basic.SystemTray.Hide="Skjul"
549
 
550
-Basic.SystemTray.Message.Reconnecting="Afbrudt. Forbinder igen..."
551
+Basic.SystemTray.Message.Reconnecting="Afbrudt. Genforbinder..."
552
 
553
 Hotkeys.Insert="Insert"
554
 Hotkeys.Delete="Delete"
555
@@ -783,24 +799,24 @@
556
 Hotkeys.Menu="Menu"
557
 Hotkeys.Space="Mellemrum"
558
 Hotkeys.NumpadNum="Numerisk %1"
559
-Hotkeys.NumpadMultiply="Numeriske tastatur gange"
560
-Hotkeys.NumpadDivide="Numeriske tastatur dividere"
561
-Hotkeys.NumpadAdd="Numeriske tastatur plus"
562
-Hotkeys.NumpadSubtract="Numeriske tastatur minus"
563
-Hotkeys.NumpadDecimal="Numeriske tastatur komma"
564
-Hotkeys.AppleKeypadNum="%1 (numeriske tastatur)"
565
-Hotkeys.AppleKeypadMultiply="* (numeriske tastatur)"
566
-Hotkeys.AppleKeypadDivide="/ (numeriske tastatur)"
567
-Hotkeys.AppleKeypadAdd="+ (numeriske tastatur)"
568
-Hotkeys.AppleKeypadSubtract="- (numeriske tastatur)"
569
-Hotkeys.AppleKeypadDecimal=", (numeriske tastatur)"
570
-Hotkeys.AppleKeypadEqual="= (numeriske tastatur)"
571
+Hotkeys.NumpadMultiply="Numerisk, multiplicér"
572
+Hotkeys.NumpadDivide="Numerisk, dividér"
573
+Hotkeys.NumpadAdd="Numerisk, addér"
574
+Hotkeys.NumpadSubtract="Numerisk, subtrahér"
575
+Hotkeys.NumpadDecimal="Numerisk, decimaltegn"
576
+Hotkeys.AppleKeypadNum="%1 (numerisk)"
577
+Hotkeys.AppleKeypadMultiply="* (numerisk)"
578
+Hotkeys.AppleKeypadDivide="/ (numerisk)"
579
+Hotkeys.AppleKeypadAdd="+ (numerisk)"
580
+Hotkeys.AppleKeypadSubtract="- (numerisk)"
581
+Hotkeys.AppleKeypadDecimal=", (numerisk)"
582
+Hotkeys.AppleKeypadEqual="= (numerisk)"
583
 Hotkeys.MouseButton="Mus %1"
584
 Hotkeys.Escape="Esc"
585
 
586
 Mute="Lyd fra"
587
 Unmute="Lyd til"
588
-Push-to-mute="Tryk-for-lydløs"
589
+Push-to-mute="Tryk-gør-tavs"
590
 Push-to-talk="Tryk-for-tale"
591
 
592
 SceneItemShow="Vis '%1'"
593
@@ -808,17 +824,18 @@
594
 
595
 OutputWarnings.NoTracksSelected="Du skal vælge minimum ét spor"
596
 OutputWarnings.MultiTrackRecording="Advarsel: Visse formater (såsom FLV) understøtter ikke flere spor pr. optagelse"
597
-OutputWarnings.MP4Recording="Advarsel: MP4-/MOV-optagelser vil ikke kunne genoprettes, såfremt filen ikke kan færdiggøres (som følge af f.eks. BSOD'er, strømafbrydelse mv.). Vil du optage flere lydspor, så overvej at benytte MKV, og remuxe optagelsen til MP4, efter at den er færdiggjort (Fil → Remux optagelser)"
598
+OutputWarnings.MP4Recording="Advarsel: MP4-/MOV-optagelser vil ikke kunne genoprettes, såfremt filen ikke kan færdiggøres (grundet f.eks. BSOD'er, strømafbrydelse mv.). Vil du optage flere lydspor, så overvej at benytte MKV, og remuxe optagelsen til MP4, efter at den er færdiggjort (Fil → Remux optagelser)"
599
 
600
 FinalScene.Title="Slet scene"
601
-FinalScene.Text="Der kræves mindst én scene."
602
+FinalScene.Text="Mindst én scene kræves."
603
 
604
 NoSources.Title="Ingen kilder"
605
-NoSources.Text="Det ser ud til, at du ikke har tilføjet nogen videokilder endnu, så dit output bliver en blank/tom skærm. Sikker på, at du vil gøre dette?"
606
+NoSources.Text="Det ser ud til, at du endnu ikke har tilføjet nogle videokilder, så dit output bliver en blank/tom skærm. Sikker på, at du vil gøre dette?"
607
 NoSources.Text.AddSource="Du kan til enhver tid tilføje kilder ved at klikke på +-ikonet under feltet Kilder i hovedvinduet."
608
+NoSources.Label="Du har ingen kilder.\nKlik på knappen + nedenfor,\neller højreklik hér for at tilføje en."
609
 
610
 ChangeBG="Sæt farve"
611
-CustomColor="Brugerdefineret farve"
612
+CustomColor="Tilpasset farve"
613
 
614
 BrowserSource.EnableHardwareAcceleration="Aktivér Browser Source-hardwareacceleration"
615
 
616
@@ -831,6 +848,8 @@
617
 About.Contribute="Støt OBS-projektet"
618
 
619
 ResizeOutputSizeOfSource="Tilpas størrelse for output (kildestørrelse)"
620
-ResizeOutputSizeOfSource.Text="Grund- og outputopløsningsstørrelser tilpasses den aktuelle kildes størrelse."
621
-ResizeOutputSizeOfSource.Continue="Vil du fortsætte?"
622
+ResizeOutputSizeOfSource.Text="Grund- og outputopløsningerne tilpasses den aktuelle kildes størrelse."
623
+ResizeOutputSizeOfSource.Continue="Fortsæt?"
624
+
625
+PreviewTransition="Overgangsforhåndsvisning"
626
 
627
obs-studio-23.1.0.tar.xz/UI/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/de-DE.ini Changed
468
 
1
@@ -49,9 +49,9 @@
2
 Enable="Aktivieren"
3
 DisableOSXVSync="OSX V-Sync deaktivieren"
4
 ResetOSXVSyncOnExit="OSX V-Sync beim Beenden zurücksetzen"
5
-HighResourceUsage="Codierung überlastet! Erwägen Sie Ihre Videoeinstellungen zu verringern oder benutzen Sie eine schnellere Codierervoreinstellung."
6
+HighResourceUsage="Kodierung überlastet! Erwägen Sie Ihre Videoeinstellungen zu verringern oder benutzen Sie eine schnellere Kodierervoreinstellung."
7
 Transition="Übergang"
8
-QuickTransitions="Schnelle Übergänge"
9
+QuickTransitions="Schnellübergänge"
10
 Left="Links"
11
 Right="Rechts"
12
 Top="Oben"
13
@@ -61,7 +61,7 @@
14
 Minutes="Minute(n)"
15
 Seconds="Sekunde(n)"
16
 Deprecated="Veraltet"
17
-ReplayBuffer="Replaypuffer"
18
+ReplayBuffer="Replay-Puffer"
19
 Import="Importieren"
20
 Export="Exportieren"
21
 Copy="Kopieren"
22
@@ -81,9 +81,11 @@
23
 VerticalLayout="Vertikales Layout"
24
 Group="Gruppe"
25
 DoNotShowAgain="Nicht nochmal anzeigen"
26
+Default="(Standard)"
27
+Calculating="Berechne …"
28
 
29
 AlreadyRunning.Title="OBS wird bereits ausgeführt"
30
-AlreadyRunning.Text="OBS wird bereits ausgeführt! Bitte beenden Sie alle vorhandenen OBS-Instanzen, bevor Sie eine neue Instanz starten, außer Sie tun dies absichtlich. Wenn Sie OBS so eingestellt haben, dass es sich zum Benachrichtigungsfeld minimiert, überprüfen Sie bitte, ob es dort läuft."
31
+AlreadyRunning.Text="OBS wird bereits ausgeführt! Bitte beenden Sie alle vorhandenen OBS-Instanzen, bevor Sie eine neue Instanz starten, außer Sie tun dies absichtlich. Wenn Sie OBS so eingestellt haben, dass es sich zum Infobereich minimiert, überprüfen Sie bitte, ob es dort läuft."
32
 AlreadyRunning.LaunchAnyway="Trotzdem starten"
33
 
34
 DockCloseWarning.Title="Dockbares Fenster schließen"
35
@@ -103,6 +105,8 @@
36
 Auth.StreamInfo="Streaminformation"
37
 TwitchAuth.Stats="Twitch-Statistiken"
38
 TwitchAuth.Feed="Twitch-Aktivitätsfeed"
39
+TwitchAuth.TwoFactorFail.Title="Streamschlüssel konnte nicht abgefragt werden"
40
+TwitchAuth.TwoFactorFail.Text="OBS konnte sich nicht mit Ihrem Twitch-Konto verbinden. Bitte stellen Sie sicher, dass die Zwei-Faktor-Authentifizierung in Ihren <a href='https://www.twitch.tv/settings/security'>Twitch-Sicherheitseinstellungen</a> eingerichtet ist, da diese für das Sreamen benötigt wird."
41
 
42
 Copy.Filters="Filter kopieren"
43
 Paste.Filters="Filter einfügen"
44
@@ -127,8 +131,8 @@
45
 Basic.AutoConfig.StartPage.PrioritizeRecording="Für das Aufnehmen optimieren, Streamen ist zweitrangig"
46
 Basic.AutoConfig.VideoPage="Videoeinstellungen"
47
 Basic.AutoConfig.VideoPage.SubTitle="Geben Sie die gewünschten Videoeinstellungen an, die Sie verwenden möchten"
48
-Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="Aktuelle verwenden (%1x%2)"
49
-Basic.AutoConfig.VideoPage.BaseResolution.Display="Bildschirm %1 (%2x%3)"
50
+Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="Aktuelle verwenden (%1×%2)"
51
+Basic.AutoConfig.VideoPage.BaseResolution.Display="Bildschirm %1 (%2×%3)"
52
 Basic.AutoConfig.VideoPage.FPS.UseCurrent="Aktuelle verwenden (%1)"
53
 Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="Entweder 60 oder 30, aber wenn möglich 60 bevorzugen"
54
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="Entweder 60 oder 30, aber hohe Auflösung bevorzugen"
55
@@ -147,8 +151,8 @@
56
 Basic.AutoConfig.StreamPage.StreamKey="Streamschlüssel"
57
 Basic.AutoConfig.StreamPage.StreamKey.LinkToSite="(Link)"
58
 Basic.AutoConfig.StreamPage.PerformBandwidthTest="Bitrate mit Bandbreitentest schätzen (kann einige Minuten dauern)"
59
-Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Hardwarecodierung bevorzugen"
60
-Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Hardwarecodierung beseitigt die meiste CPU-Auslastung, kann aber mehr Bitrate erfordern, um das gleiche Maß an Qualität zu erhalten."
61
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Hardwarekodierung bevorzugen"
62
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Hardwarekodierung beseitigt die meiste CPU-Auslastung, kann aber mehr Bitrate erfordern, um das gleiche Maß an Qualität zu erhalten."
63
 Basic.AutoConfig.StreamPage.StreamWarning.Title="Streamwarnung"
64
 Basic.AutoConfig.StreamPage.StreamWarning.Text="Der Bandbreitentest streamt randomisierte Videodaten ohne Ton zu Ihrem Kanal. Wenn Sie in der Lage sind, empfiehlt es sich, vorübergehend das Speichern von Videos zu deaktivieren und den Stream privat zu schalten, bis der Test abgeschlossen ist. Fortfahren?"
65
 Basic.AutoConfig.TestPage="Endergebnisse"
66
@@ -158,13 +162,13 @@
67
 Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Verbinde zu: %1 …"
68
 Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Keine Verbindung zu den Servern möglich, bitte überprüfen Sie Ihre Internetverbindung und versuchen Sie es erneut."
69
 Basic.AutoConfig.TestPage.TestingBandwidth.Server="Teste Bandbreite für: %1"
70
-Basic.AutoConfig.TestPage.TestingStreamEncoder="Teste Streamcodierer, dies kann einige Minuten dauern …"
71
-Basic.AutoConfig.TestPage.TestingRecordingEncoder="Teste Aufnahmecodierer, dies kann einige Minuten dauern …"
72
+Basic.AutoConfig.TestPage.TestingStreamEncoder="Teste Streamkodierer, dies kann einige Minuten dauern …"
73
+Basic.AutoConfig.TestPage.TestingRecordingEncoder="Teste Aufnahmekodierer, dies kann einige Minuten dauern …"
74
 Basic.AutoConfig.TestPage.TestingRes="Teste Auflösungen, dies kann einige Minuten dauern …"
75
-Basic.AutoConfig.TestPage.TestingRes.Fail="Fehler beim Starten des Codierers"
76
-Basic.AutoConfig.TestPage.TestingRes.Resolution="Teste Auflösung %1x%2 mit %3 FPS …"
77
-Basic.AutoConfig.TestPage.Result.StreamingEncoder="Streamcodierer"
78
-Basic.AutoConfig.TestPage.Result.RecordingEncoder="Aufnahmecodierer"
79
+Basic.AutoConfig.TestPage.TestingRes.Fail="Fehler beim Starten des Kodierers"
80
+Basic.AutoConfig.TestPage.TestingRes.Resolution="Teste Auflösung %1×%2 mit %3 FPS …"
81
+Basic.AutoConfig.TestPage.Result.StreamingEncoder="Streamkodierer"
82
+Basic.AutoConfig.TestPage.Result.RecordingEncoder="Aufnahmekodierer"
83
 Basic.AutoConfig.TestPage.Result.Header="Das Programm hat festgestellt, dass diese geschätzten Einstellungen für Sie am besten sind:"
84
 Basic.AutoConfig.TestPage.Result.Footer="Um den Assistenten neu zu konfigurieren und es erneut zu versuchen, klicken Sie auf „Zurück“. Um die Einstellungen selbst anzupassen, klicken Sie auf „Abbrechen“ und öffnen Sie die Einstellungen."
85
 
86
@@ -173,7 +177,7 @@
87
 Basic.Stats.HDDSpaceAvailable="Speicherplatz verfügbar"
88
 Basic.Stats.MemoryUsage="Speicherauslastung"
89
 Basic.Stats.AverageTimeToRender="Durchschnittliche Zeit, um Frame zu rendern"
90
-Basic.Stats.SkippedFrames="Übersprungene Frames durch Codierungsverzögerung"
91
+Basic.Stats.SkippedFrames="Übersprungene Frames durch Kodierungsverzögerung"
92
 Basic.Stats.MissedFrames="Ausgelassene Frames durch Renderingverzögerung"
93
 Basic.Stats.Output.Stream="Stream"
94
 Basic.Stats.Output.Recording="Aufnahme"
95
@@ -185,6 +189,7 @@
96
 Basic.Stats.DroppedFrames="Ausgelassene Frames (Netzwerk)"
97
 Basic.Stats.MegabytesSent="Insgesamte Datenausgabe"
98
 Basic.Stats.Bitrate="Bitrate"
99
+Basic.Stats.DiskFullIn="Datenträger voll in ugf."
100
 
101
 ResetUIWarning.Title="Sind Sie sicher, dass Sie die Benutzeroberfläche zurücksetzen möchten?"
102
 ResetUIWarning.Text="Das Zurücksetzen der Benutzeroberfläche wird zusätzliche Docks ausblenden. Sie müssen diese Docks im „Ansicht“-Menü wieder aktivieren, wenn sie sichtbar sein sollen.\n\nSind Sie sicher, dass Sie die Benutzeroberfläche zurücksetzen möchten?"
103
@@ -200,15 +205,15 @@
104
 Updater.NoUpdatesAvailable.Text="Zurzeit sind keine Updates verfügbar"
105
 Updater.FailedToLaunch="Konnte den Updater nicht starten"
106
 Updater.GameCaptureActive.Title="Spielaufnahme aktiv"
107
-Updater.GameCaptureActive.Text="Spielaufnahme Hook Bibliothek wird zurzeit verwendet. Bitte schließen Sie alle derzeitigen Spiele / Programme die aufgenommen werden (oder starten Sie Windows neu) und versuchen Sie es erneut."
108
+Updater.GameCaptureActive.Text="Die Spielaufnahmen-Hook-Bibliothek wird zurzeit verwendet. Bitte schließen Sie alle derzeit aufgenommenen Programme und Spiele (oder starten Sie Windows neu) und versuchen Sie es erneut."
109
 
110
 QuickTransitions.SwapScenes="Vorschau-/Ausgabeszene nach Übergang tauschen"
111
-QuickTransitions.SwapScenesTT="Vertauscht die Vorschau- und Ausgabe-Szenen nach dem Übergang (falls die ursprüngliche Ausgabe-Szene noch vorhanden ist).\nEventuelle Änderungen an der original Ausgabe-Szene werden hierbei nicht rückgängig gemacht."
112
+QuickTransitions.SwapScenesTT="Vertauscht die Vorschau- und Ausgabeszenen nach dem Übergang (falls die ursprüngliche Ausgabeszene noch vorhanden ist).\nEventuelle Änderungen an der originalen Ausgabeszene werden nicht rückgängig gemacht."
113
 QuickTransitions.DuplicateScene="Szene duplizieren"
114
-QuickTransitions.DuplicateSceneTT="Ermöglicht das Bearbeiten von Transformationen und der Sichtbarkeit von Quellen, ohne die Ausgabe zu verändern, wenn dieselbe Szene bearbeitet wird.\nAktivieren Sie „Szene duplizieren“, um die Eigenschaften von Quellen zu bearbeiten, ohne die Ausgabe zu verändern.\nDas Ändern dieses Wertes wird die derzeitige Ausgabe-Szene zurücksetzen (falls sie noch existiert)."
115
+QuickTransitions.DuplicateSceneTT="Ermöglicht das Bearbeiten von Transformationen und der Sichtbarkeit von Quellen, ohne die Ausgabe zu verändern, wenn dieselbe Szene bearbeitet wird.\nAktivieren Sie „Szene duplizieren“, um die Eigenschaften von Quellen zu bearbeiten, ohne die Ausgabe zu verändern.\nDas Ändern dieses Wertes wird die derzeitige Ausgabeszene zurücksetzen (falls sie noch existiert)."
116
 QuickTransitions.EditProperties="Quellen duplizieren"
117
-QuickTransitions.EditPropertiesTT="Ermöglicht das Bearbeiten der Eigenschaften von Quellen, ohne die Ausgabe zu verändern, wenn dieselbe Szene bearbeitet wird.\nDies kann nur verwendet werden, wenn „Szene duplizieren“ aktiviert ist.\nBestimmte Quellen (wie Aufnahme- oder Medienquellen) unterstützen dies nicht und können nicht separat bearbeitet werden.\nDas Ändern dieses Wertes wird die derzeitige Ausgabe-Szene zurücksetzen (falls sie noch existiert).\n\nWarnung: Da Quellen dupliziert werden, könnte dies zusätzliche System- oder Videoressourcen verbrauchen."
118
-QuickTransitions.HotkeyName="Schneller Übergang: %1"
119
+QuickTransitions.EditPropertiesTT="Ermöglicht das Bearbeiten der Eigenschaften von Quellen, ohne die Ausgabe zu verändern, wenn dieselbe Szene bearbeitet wird.\nDies kann nur verwendet werden, wenn „Szene duplizieren“ aktiviert ist.\nBestimmte Quellen (wie Aufnahme- oder Medienquellen) unterstützen dies nicht und können nicht separat bearbeitet werden.\nDas Ändern dieses Wertes wird die derzeitige Ausgabeszene zurücksetzen (falls sie noch existiert).\n\nWarnung: Da Quellen dupliziert werden, könnte dies zusätzliche System- oder Videoressourcen verbrauchen."
120
+QuickTransitions.HotkeyName="Schnellübergang: %1"
121
 
122
 Basic.AddTransition="Konfigurierbaren Übergang hinzufügen"
123
 Basic.RemoveTransition="Konfigurierbaren Übergang entfernen"
124
@@ -248,7 +253,8 @@
125
 Output.StartStreamFailed="Fehler beim Starten des Streams"
126
 Output.StartRecordingFailed="Fehler beim Starten der Aufnahme"
127
 Output.StartReplayFailed="Fehler beim Starten des Replaypuffers"
128
-Output.StartFailedGeneric="Start der Ausgabe fehlgeschlagen. Bitte überprüfen Sie die Protokolldatei für Details.\n\nHinweis: Wenn Sie die NVENC- oder AMD-Codierer verwenden, stellen Sie sicher, dass Ihre Videotreiber aktuell sind."
129
+Output.StartFailedGeneric="Start der Ausgabe fehlgeschlagen. Bitte überprüfen Sie die Protokolldatei für Details.\n\nHinweis: Wenn Sie die NVENC- oder AMD-Kodierer verwenden, stellen Sie sicher, dass Ihre Videotreiber aktuell sind."
130
+
131
 
132
 Output.ConnectFail.Title="Verbindung fehlgeschlagen"
133
 Output.ConnectFail.BadPath="Ungültiger Pfad oder Verbindungs-URL. Bitte überprüfen Sie Ihre Einstellungen und stellen Sie sicher, dass diese korrekt sind."
134
@@ -257,13 +263,17 @@
135
 Output.ConnectFail.Error="Ein unerwarteter Fehler ist beim Verbindungsversuch zum Server aufgetreten. Mehr Informationen finden Sie in der Protokolldatei."
136
 Output.ConnectFail.Disconnected="Verbindung zum Server getrennt."
137
 
138
+Output.StreamEncodeError.Title="Kodierungsfehler"
139
+Output.StreamEncodeError.Msg="Ein Kodierungsfehler ist beim Streaming aufgetreten."
140
+
141
 Output.RecordFail.Title="Fehler beim Starten der Aufnahme"
142
 Output.RecordFail.Unsupported="Das Ausgabeformat wird entweder nicht unterstützt oder unterstützt nicht mehrere Audiospuren. Bitte überprüfen Sie Ihre Einstellungen und versuchen Sie es erneut."
143
 Output.RecordNoSpace.Title="Nicht genügend Speicherplatz"
144
 Output.RecordNoSpace.Msg="Es gibt nicht genügend Speicherplatz, um die Aufnahme fortzusetzen."
145
 Output.RecordError.Title="Aufnahmefehler"
146
 Output.RecordError.Msg="Während der Aufnahme ist ein unbekannter Fehler aufgetreten."
147
-Output.ReplayBuffer.NoHotkey.Title="Kein Hotkey festgelegt!"
148
+Output.RecordError.EncodeErrorMsg="Ein Kodierungsfehler ist beim Aufnehmen aufgetreten."
149
+Output.ReplayBuffer.NoHotkey.Title="Kein Hotkey festgelegt"
150
 Output.ReplayBuffer.NoHotkey.Msg="Kein „Replay speichern“-Hotkey für Replaypuffer festgelegt. Legen Sie bitte den „Speichern“-Hotkey fest, der zum Speichern der Replayaufnahmen verwendet werden soll."
151
 
152
 Output.BadPath.Title="Ungültiger Dateipfad"
153
@@ -288,7 +298,7 @@
154
 Remux.FileExistsTitle="Zieldateien existieren bereits"
155
 Remux.FileExists="Die folgenden Zieldateien existieren bereits. Möchten Sie diese ersetzen?"
156
 Remux.ExitUnfinishedTitle="Remuxen in Bearbeitung"
157
-Remux.ExitUnfinished="Das Remuxen ist noch nicht fertig. Wenn Sie jetzt stoppen, kann die Zieldatei unbrauchbar werden. \nSind Sie sicher, dass Sie das Remuxen beenden möchten?"
158
+Remux.ExitUnfinished="Das Remuxen ist noch nicht beendet. Wenn Sie jetzt stoppen, kann die Zieldatei unbrauchbar werden.\nSind Sie sicher, dass Sie das Remuxen beenden möchten?"
159
 Remux.HelpText="Legen Sie Dateien in diesem Fenster ab, um sie zu remuxen oder wählen Sie eine leere „OBS-Aufnahme“-Zelle aus, um nach einer Datei zu suchen."
160
 
161
 UpdateAvailable="Neues Update verfügbar"
162
@@ -306,6 +316,8 @@
163
 
164
 Basic.Main.PreviewConextMenu.Enable="Vorschau aktivieren"
165
 
166
+Basic.Main.Preview.Disable="Vorschau deaktivieren"
167
+
168
 ScaleFiltering="Skalierungsfilterung"
169
 ScaleFiltering.Point="Point"
170
 ScaleFiltering.Bilinear="Bilinear"
171
@@ -326,12 +338,12 @@
172
 Deinterlacing.BottomFieldFirst="Unteres Feld zuerst"
173
 
174
 VolControl.SliderUnmuted="Lautstärkeschieberegler für „%1“: %2"
175
-VolControl.SliderMuted="Lautstärkeschieberegler für „%1“: %2 (derzeit stumm geschaltet)"
176
-VolControl.Mute="„%1“ stumm schalten"
177
+VolControl.SliderMuted="Lautstärkeschieberegler für „%1“: %2 (derzeit stummgeschaltet)"
178
+VolControl.Mute="„%1“ stummschalten"
179
 VolControl.Properties="Eigenschaften von „%1“"
180
 
181
 Basic.Main.AddSceneDlg.Title="Szene hinzufügen"
182
-Basic.Main.AddSceneDlg.Text="Bitte geben Sie einen Namen für die Szene ein"
183
+Basic.Main.AddSceneDlg.Text="Bitte geben Sie den Namen der Szene ein"
184
 
185
 Basic.Main.DefaultSceneName.Text="Szene %1"
186
 
187
@@ -346,7 +358,7 @@
188
 RenameProfile.Title="Profil umbenennen"
189
 
190
 Basic.Main.MixerRename.Title="Audioquelle umbenennen"
191
-Basic.Main.MixerRename.Text="Bitte geben Sie einen Namen für die Audioquelle ein"
192
+Basic.Main.MixerRename.Text="Bitte geben Sie den Namen der Audioquelle ein"
193
 
194
 
195
 Basic.Main.PreviewDisabled="Vorschau ist derzeit deaktiviert"
196
@@ -393,7 +405,7 @@
197
 Basic.Filters.AddFilter.Title="Filtername"
198
 Basic.Filters.AddFilter.Text="Bitte geben Sie einen Namen für den Filter ein"
199
 
200
-Basic.TransformWindow="Szenen-Element-Transformation"
201
+Basic.TransformWindow="Szenen-Elementtransformation"
202
 Basic.TransformWindow.Position="Position"
203
 Basic.TransformWindow.Rotation="Drehung"
204
 Basic.TransformWindow.Size="Größe"
205
@@ -421,7 +433,7 @@
206
 Basic.TransformWindow.BoundsType.ScaleToHeight="Auf die Höhe der Begrenzungen skalieren"
207
 Basic.TransformWindow.BoundsType.Stretch="Bis zu den Begrenzungen strecken"
208
 
209
-Basic.Main.AddSourceHelp.Title="Konnte Quelle nicht hinzufügen"
210
+Basic.Main.AddSourceHelp.Title="Quelle konnte nicht hinzugefügt werden"
211
 Basic.Main.AddSourceHelp.Text="Sie müssen mindestens 1 Szene besitzen, um eine Quelle hinzuzufügen."
212
 
213
 Basic.Main.Scenes="Szenen"
214
@@ -461,8 +473,8 @@
215
 Basic.MainMenu.Edit.LockPreview="Vorschau sperren (&L)"
216
 Basic.MainMenu.Edit.Scale="Vorschau&skalierung"
217
 Basic.MainMenu.Edit.Scale.Window="An Fenstergröße anpassen"
218
-Basic.MainMenu.Edit.Scale.Canvas="Leinwand (%1x%2)"
219
-Basic.MainMenu.Edit.Scale.Output="Ausgabe (%1x%2)"
220
+Basic.MainMenu.Edit.Scale.Canvas="Leinwand (%1×%2)"
221
+Basic.MainMenu.Edit.Scale.Output="Ausgabe (%1×%2)"
222
 Basic.MainMenu.Edit.Transform="&Transformieren"
223
 Basic.MainMenu.Edit.Transform.EditTransform="Transformation b&earbeiten …"
224
 Basic.MainMenu.Edit.Transform.CopyTransform="Transformation kopieren"
225
@@ -476,6 +488,8 @@
226
 Basic.MainMenu.Edit.Transform.FitToScreen="An Bildschirmgröße anpassen (&F)"
227
 Basic.MainMenu.Edit.Transform.StretchToScreen="Auf Bildschirmgröße &strecken"
228
 Basic.MainMenu.Edit.Transform.CenterToScreen="Auf dem Bildschirm zentrieren (&C)"
229
+Basic.MainMenu.Edit.Transform.VerticalCenter="Vertikal zentrieren"
230
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Horizontal zentrieren"
231
 Basic.MainMenu.Edit.Order="Reihenf&olge"
232
 Basic.MainMenu.Edit.Order.MoveUp="Nach oben bewegen (&U)"
233
 Basic.MainMenu.Edit.Order.MoveDown="Nach unten bewegen (&D)"
234
@@ -519,7 +533,7 @@
235
 Basic.MainMenu.Help.CrashLogs.UploadLastLog="Neusten Absturzbericht hoch&laden"
236
 Basic.MainMenu.Help.About="Über OBS Studio (&A)"
237
 
238
-Basic.Settings.ProgramRestart="Das Programm muss neu gestartet werden, damit die Änderungen wirksam werden."
239
+Basic.Settings.ProgramRestart="Das Programm muss neugestartet werden, damit die Änderungen wirksam werden."
240
 Basic.Settings.ConfirmTitle="Änderungen bestätigen"
241
 Basic.Settings.Confirm="Sie haben ungespeicherte Änderungen. Änderungen speichern?"
242
 
243
@@ -544,14 +558,14 @@
244
 Basic.Settings.General.KeepReplayBufferStreamStops="Replaypuffer weiter aktiv lassen, wenn der Stream stoppt"
245
 Basic.Settings.General.SysTray="Infobereich"
246
 Basic.Settings.General.SysTrayWhenStarted="Beim Start zum Infobereich minimieren"
247
-Basic.Settings.General.SystemTrayHideMinimize="Immer zum Infobereich. statt zur Taskleiste minimieren"
248
+Basic.Settings.General.SystemTrayHideMinimize="Immer zum Infobereich anstatt zur Taskleiste minimieren"
249
 Basic.Settings.General.SaveProjectors="Projektoren beim Beenden speichern"
250
 Basic.Settings.General.Preview="Vorschau"
251
 Basic.Settings.General.OverflowHidden="Überlauf verstecken"
252
 Basic.Settings.General.OverflowAlwaysVisible="Überlauf immer anzeigen"
253
 Basic.Settings.General.OverflowSelectionHidden="Überlauf trotz unsichtbarer Quelle anzeigen"
254
 Basic.Settings.General.SwitchOnDoubleClick="Übergang zur Szene beim Doppelklicken"
255
-Basic.Settings.General.StudioPortraitLayout="Porträt/vertikales Layout aktivieren"
256
+Basic.Settings.General.StudioPortraitLayout="Porträt/Vertikales Layout aktivieren"
257
 Basic.Settings.General.TogglePreviewProgramLabels="Vorschau-/Programmbeschriftung anzeigen"
258
 Basic.Settings.General.Multiview="Multiview"
259
 Basic.Settings.General.Multiview.MouseSwitch="Klicken, um zwischen den Szenen umzuschalten"
260
@@ -573,7 +587,7 @@
261
 
262
 Basic.Settings.Output="Ausgabe"
263
 Basic.Settings.Output.Format="Aufnahmeformat"
264
-Basic.Settings.Output.Encoder="Codierer"
265
+Basic.Settings.Output.Encoder="Kodierer"
266
 Basic.Settings.Output.SelectDirectory="Aufnahmeordner auswählen"
267
 Basic.Settings.Output.SelectFile="Aufnahmedatei auswählen"
268
 Basic.Settings.Output.EnforceBitrate="Bitratenlimit des Streamingdienstes erzwingen"
269
@@ -595,32 +609,32 @@
270
 Basic.Settings.Output.Simple.RecordingQuality.Small="Hohe Qualität, mittelgroße Dateien"
271
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Ununterscheidbare Qualität, große Dateien"
272
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Verlustfreie Qualität, enorm große Dateien"
273
-Basic.Settings.Output.Simple.Warn.VideoBitrate="Warnung: Die Videobitrate beim Streamen wird auf %1 festgelegt, was der Obergrenze des aktuellen Streamingdienstes entspricht. Falls Sie sicher sind, dass Sie %1 überschreiten wollen, deaktivieren Sie „Bitratenlimit des Streamingdienstes erzwingen“ in den erweiterten Codierereinstellungen."
274
-Basic.Settings.Output.Simple.Warn.AudioBitrate="Warnung: Die Audiobitrate beim Streamen wird auf %1 festgelegt, was der Obergrenze des aktuellen Streamingdienstes entspricht. Falls Sie sicher sind, dass Sie %1 überschreiten wollen, deaktivieren Sie „Bitratenlimit des Streamingdienstes erzwingen“ in den erweiterten Codierereinstellungen."
275
-Basic.Settings.Output.Simple.Warn.Encoder="Warnung: Mit einem Software-Codierer in einer anderen Qualität als der des Streams aufzunehmen erfordert zusätzliche CPU-Auslastung, wenn Sie gleichzeitig streamen und aufnehmen."
276
+Basic.Settings.Output.Simple.Warn.VideoBitrate="Warnung: Die Videobitrate beim Streamen wird auf %1 festgelegt, was der Obergrenze des aktuellen Streamingdienstes entspricht. Falls Sie sicher sind, dass Sie %1 überschreiten wollen, deaktivieren Sie „Bitratenlimit des Streamingdienstes erzwingen“ in den erweiterten Kodierereinstellungen."
277
+Basic.Settings.Output.Simple.Warn.AudioBitrate="Warnung: Die Audiobitrate beim Streamen wird auf %1 festgelegt, was der Obergrenze des aktuellen Streamingdienstes entspricht. Falls Sie sicher sind, dass Sie %1 überschreiten wollen, deaktivieren Sie „Bitratenlimit des Streamingdienstes erzwingen“ in den erweiterten Kodierereinstellungen."
278
+Basic.Settings.Output.Simple.Warn.Encoder="Warnung: Mit einem Software-Kodierer in einer anderen Qualität als der des Streams aufzunehmen erfordert zusätzliche CPU-Auslastung, wenn Sie gleichzeitig streamen und aufnehmen."
279
 Basic.Settings.Output.Simple.Warn.Lossless="Warnung: Verlustfreie Qualität erzeugt enorm große Dateien! Verlustfreie Qualität kann mehr als 7 Gigabyte Speicherplatz pro Minute bei hohen Auflösungen und Frameraten in Anspruch nehmen. Verlustfrei ist für lange Aufnahmen nicht empfohlen, es sei denn, Sie haben eine sehr große Menge an Speicherplatz zur Verfügung."
280
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Sind Sie sicher, dass Sie verlustfreie Qualität verwenden möchten?"
281
-Basic.Settings.Output.Simple.Warn.Lossless.Title="Verlustfreie Qualität-Warnung!"
282
+Basic.Settings.Output.Simple.Warn.Lossless.Title="Verlustfreie Qualitäts-Warnung"
283
 Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
284
 Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Hardware (QSV)"
285
 Basic.Settings.Output.Simple.Encoder.Hardware.AMD="Hardware (AMD)"
286
 Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Hardware (NVENC)"
287
-Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 niedrige CPU-Auslastung Voreinstellung, erhöht die Dateigröße)"
288
+Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 niedrige CPU-Auslastungsvoreinstellung, erhöht die Dateigröße)"
289
 Basic.Settings.Output.VideoBitrate="Videobitrate"
290
 Basic.Settings.Output.AudioBitrate="Audiobitrate"
291
 Basic.Settings.Output.Reconnect="Automatisch wiederverbinden"
292
 Basic.Settings.Output.RetryDelay="Wiederverbindungsverzögerung (Sekunden)"
293
 Basic.Settings.Output.MaxRetries="Maximale Wiederholungsversuche"
294
-Basic.Settings.Output.Advanced="Erweiterte Codierereinstellungen aktivieren"
295
-Basic.Settings.Output.EncoderPreset="Codierervoreinstellung"
296
-Basic.Settings.Output.CustomEncoderSettings="Benutzerdefinierte Codierer-Einstellungen"
297
+Basic.Settings.Output.Advanced="Erweiterte Kodierereinstellungen aktivieren"
298
+Basic.Settings.Output.EncoderPreset="Kodierervoreinstellung"
299
+Basic.Settings.Output.CustomEncoderSettings="Benutzerdefinierte Kodierer-Einstellungen"
300
 Basic.Settings.Output.CustomMuxerSettings="Benutzerdefinierte Muxereinstellungen"
301
 Basic.Settings.Output.NoSpaceFileName="Dateinamen ohne Leerzeichen generieren"
302
 
303
 Basic.Settings.Output.Adv.Rescale="Ausgabe umskalieren"
304
 Basic.Settings.Output.Adv.AudioTrack="Audiospur"
305
 Basic.Settings.Output.Adv.Streaming="Streaming"
306
-Basic.Settings.Output.Adv.ApplyServiceSettings="Streamingdienst-Codierereinstellungen erzwingen"
307
+Basic.Settings.Output.Adv.ApplyServiceSettings="Streamingdienst-Kodierereinstellungen erzwingen"
308
 Basic.Settings.Output.Adv.Audio.Track1="Spur 1"
309
 Basic.Settings.Output.Adv.Audio.Track2="Spur 2"
310
 Basic.Settings.Output.Adv.Audio.Track3="Spur 3"
311
@@ -632,7 +646,7 @@
312
 Basic.Settings.Output.Adv.Recording.Type="Art"
313
 Basic.Settings.Output.Adv.Recording.Type.Standard="Normal"
314
 Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="Benutzerdefinierte Ausgabe (FFmpeg)"
315
-Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Streamcodierer verwenden)"
316
+Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(Streamkodierer verwenden)"
317
 Basic.Settings.Output.Adv.Recording.Filename="Dateinameformatierung"
318
 Basic.Settings.Output.Adv.Recording.OverwriteIfExists="Überschreiben, wenn die Datei vorhanden ist"
319
 Basic.Settings.Output.Adv.FFmpeg.Type="FFmpeg-Ausgabetyp"
320
@@ -647,24 +661,24 @@
321
 Basic.Settings.Output.Adv.FFmpeg.FormatDefault="Standardformat"
322
 Basic.Settings.Output.Adv.FFmpeg.FormatDesc="Container-Formatbeschreibung"
323
 Basic.Settings.Output.Adv.FFmpeg.FormatDescDef="Audio-/Videocodec wird aus Dateipfad oder URL gebildet"
324
-Basic.Settings.Output.Adv.FFmpeg.AVEncoderDefault="Standardcodierer"
325
-Basic.Settings.Output.Adv.FFmpeg.AVEncoderDisable="Codierer deaktivieren"
326
-Basic.Settings.Output.Adv.FFmpeg.VEncoder="Videocodierer"
327
-Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="Videocodierereinstellungen (falls angegeben)"
328
-Basic.Settings.Output.Adv.FFmpeg.AEncoder="Audiocodierer"
329
-Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Audiocodierereinstellungen (falls angegeben)"
330
+Basic.Settings.Output.Adv.FFmpeg.AVEncoderDefault="Standardkodierer"
331
+Basic.Settings.Output.Adv.FFmpeg.AVEncoderDisable="Kodierer deaktivieren"
332
+Basic.Settings.Output.Adv.FFmpeg.VEncoder="Videokodierer"
333
+Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="Videokodierereinstellungen (falls angegeben)"
334
+Basic.Settings.Output.Adv.FFmpeg.AEncoder="Audiokodierer"
335
+Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Audiokodierereinstellungen (falls angegeben)"
336
 Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Muxer-Einstellungen (falls angegeben)"
337
 Basic.Settings.Output.Adv.FFmpeg.GOPSize="Keyframeintervall (Frames)"
338
-Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat="Zeige alle Codecs (auch wenn möglicherweise nicht kompatibel)"
339
+Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat="Zeige alle Codecs (auch wenn möglicherweise inkompatibel)"
340
 
341
 FilenameFormatting.completer="%DD. %MM. %CCYY %hh-%mm-%ss\n%DD. %MM. %YY %hh-%mm-%ss\n%d. %m. %Y %H-%M-%S\n%d. %m. %y %H-%M-%S"
342
 
343
-FilenameFormatting.TT="%CCYY   Jahr, vier Ziffern\n%YY     Jahr, letzte zwei Ziffern (00-99)\n%MM      Monat als Dezimalzahl (01-12)\n%DD      Tag des Monats, mit Nullen aufgefüllt (01-31)\n%hh      Stunden im 24-Stunden-Format (00-23)\n%mm       Minute (00-59)\n%ss     Sekunde (00-61)\n%%     Ein %-Zeichen\n%a       Abgekürzter Wochentagsname\n%A      Voller Wochentagsname\n%b       Abgekürzer Monatsname\n%B       Voller Monatsname\n%d       Tag des Monats, mit Nullen aufgefüllt (01-31)\n%H       Stunden im 24-Stunden-Format (00-23)\n%I        Stunden im 12-Stunden-Format (01-12)\n%m        Monat als Dezimalzahl (01-12)\n%M       Minute (00-59)\n%p      Vormittags- oder nachmittags-Angabe\n%S     Sekunde (00-61)\n%y     Jahr, letzte zwei Ziffern (00-99)\n%Y       Jahr\n%z        ISO-8601-Verschiebung von UTC oder Zeitzone\n%Z     Zeitzonenname oder Abkürzung\n"
344
+FilenameFormatting.TT="%CCYY   Jahr, vier Ziffern\n%YY     Jahr, letzte zwei Ziffern (00–99)\n%MM      Monat als Dezimalzahl (01–12)\n%DD      Tag des Monats, mit Nullen aufgefüllt (01–31)\n%hh      Stunden im 24-Stunden-Format (00–23)\n%mm       Minute (00–59)\n%ss     Sekunde (00–61)\n%%     Ein %-Zeichen\n%a       Abgekürzter Wochentagsname\n%A      Voller Wochentagsname\n%b       Abgekürzer Monatsname\n%B       Voller Monatsname\n%d       Tag des Monats, mit Nullen aufgefüllt (01–31)\n%H       Stunden im 24-Stunden-Format (00–23)\n%I        Stunden im 12-Stunden-Format (01–12)\n%m        Monat als Dezimalzahl (01–12)\n%M       Minute (00–59)\n%p      Vormittags- oder nachmittags-Angabe\n%S     Sekunde (00–61)\n%y     Jahr, letzte zwei Ziffern (00–99)\n%Y       Jahr\n%z        ISO-8601-Verschiebung von UTC oder Zeitzone\n%Z     Zeitzonenname oder Abkürzung"
345
 
346
 Basic.Settings.Video="Video"
347
 Basic.Settings.Video.Adapter="Grafikkarte"
348
 Basic.Settings.Video.BaseResolution="Basis-(Leinwand-)Auflösung"
349
-Basic.Settings.Video.ScaledResolution="(Skalierte) Ausgabe-Auflösung"
350
+Basic.Settings.Video.ScaledResolution="(Skalierte) Ausgabeauflösung"
351
 Basic.Settings.Video.DownscaleFilter="Skalierungsfilter"
352
 Basic.Settings.Video.DisableAeroWindows="Aero deaktivieren (nur Windows)"
353
 Basic.Settings.Video.FPS="FPS"
354
@@ -674,7 +688,7 @@
355
 Basic.Settings.Video.Numerator="Zähler"
356
 Basic.Settings.Video.Denominator="Nenner"
357
 Basic.Settings.Video.Renderer="Renderer"
358
-Basic.Settings.Video.InvalidResolution="Ungültige Auflösung. Muss [width]x[height] sein (z.B. 1920x1080)"
359
+Basic.Settings.Video.InvalidResolution="Ungültige Auflösung. Korrekte Formatierung: [Breite]x[Höhe] (z. B. 1920x1080)"
360
 Basic.Settings.Video.CurrentlyActive="Videoausgabe ist derzeit aktiv. Bitte schalten Sie alle Ausgaben ab, um die Videoeinstellungen zu ändern."
361
 Basic.Settings.Video.DisableAero="Aero deaktivieren"
362
 
363
@@ -685,7 +699,8 @@
364
 Basic.Settings.Audio="Audio"
365
 Basic.Settings.Audio.SampleRate="Abtastrate"
366
 Basic.Settings.Audio.Channels="Kanäle"
367
-Basic.Settings.Audio.MeterDecayRate="Aussteuerungsmesserverfallsrate"
368
+Basic.Settings.Audio.Meters="Meter"
369
+Basic.Settings.Audio.MeterDecayRate="Zerfallsrate"
370
 Basic.Settings.Audio.MeterDecayRate.Fast="Schnell"
371
 Basic.Settings.Audio.MeterDecayRate.Medium="Mittel (Type I PPM)"
372
 Basic.Settings.Audio.MeterDecayRate.Slow="Langsam (Type II PPM)"
373
@@ -696,12 +711,13 @@
374
 Basic.Settings.Audio.MultichannelWarning="Überprüfen Sie beim Streaming, ob Ihr Streamingdienst sowohl die Einspeisung von Surround-Sound als auch die Surround-Sound-Wiedergabe unterstützt. Twitch, Facebook 360 Live, Mixer RTMP und Smashcast sind Beispiele, bei denen Surround-Sound voll unterstützt wird. Obwohl Facebook Live und YouTube Live beide die Surround-Einspeisung akzeptieren, wird Facebook Live auf Stereo heruntergemischt und YouTube Live spielt nur zwei Kanäle ab.\n\nOBS-Audiofilter sind mit Surround-Sound kompatibel, obwohl die VST-Pluginunterstützung nicht garantiert ist."
375
 Basic.Settings.Audio.MultichannelWarning.Title="Surround-Sound-Audio aktivieren?"
376
 Basic.Settings.Audio.MultichannelWarning.Confirm="Sind Sie sicher, dass Sie Surround-Sound-Audio wirklich aktivieren möchten?"
377
-Basic.Settings.Audio.DesktopDevice="Desktop-Audiogerät"
378
-Basic.Settings.Audio.DesktopDevice2="Desktop-Audiogerät 2"
379
-Basic.Settings.Audio.AuxDevice="Mikrofon/Externes Audiogerät"
380
-Basic.Settings.Audio.AuxDevice2="Mikrofon/Externes Audiogerät 2"
381
-Basic.Settings.Audio.AuxDevice3="Mikrofon/Externes Audiogerät 3"
382
-Basic.Settings.Audio.AuxDevice4="Mikrofon/Externes Audiogerät 4"
383
+Basic.Settings.Audio.Devices="Geräte"
384
+Basic.Settings.Audio.DesktopDevice="Desktop-Audio"
385
+Basic.Settings.Audio.DesktopDevice2="Desktop-Audio 2"
386
+Basic.Settings.Audio.AuxDevice="Mikrofon/Audiogerät"
387
+Basic.Settings.Audio.AuxDevice2="Mikrofon/Audiogerät 2"
388
+Basic.Settings.Audio.AuxDevice3="Mikrofon/Audiogerät 3"
389
+Basic.Settings.Audio.AuxDevice4="Mikrofon/Audiogerät 4"
390
 Basic.Settings.Audio.EnablePushToMute="Push-To-Mute aktivieren"
391
 Basic.Settings.Audio.PushToMuteDelay="Push-To-Mute-Verzögerung"
392
 Basic.Settings.Audio.EnablePushToTalk="Push-To-Talk aktivieren"
393
@@ -717,15 +733,15 @@
394
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Niedriger als normal"
395
 Basic.Settings.Advanced.General.ProcessPriority.Idle="Niedrig"
396
 Basic.Settings.Advanced.FormatWarning="Warnung: Andere Farbformate als NV12 sind in erster Linie für die Aufnahme bestimmt und sind für Streaming nicht zu empfehlen. Die erforderliche Farbformatkonvertierung kann eine erhöhte CPU-Auslastung hervorrufen."
397
-Basic.Settings.Advanced.Audio.BufferingTime="Audio Pufferungszeit"
398
+Basic.Settings.Advanced.Audio.BufferingTime="Audiopufferungszeit"
399
 Basic.Settings.Advanced.Video.ColorFormat="Farbformat"
400
-Basic.Settings.Advanced.Video.ColorSpace="YUV-Farbmatrix"
401
-Basic.Settings.Advanced.Video.ColorRange="YUV-Farbbereich"
402
+Basic.Settings.Advanced.Video.ColorSpace="Farbraum"
403
+Basic.Settings.Advanced.Video.ColorRange="Farbbereich"
404
 Basic.Settings.Advanced.Video.ColorRange.Partial="Begrenzt"
405
 Basic.Settings.Advanced.Video.ColorRange.Full="Voll"
406
-Basic.Settings.Advanced.Audio.MonitoringDevice="Audiomonitoringgerät"
407
+Basic.Settings.Advanced.Audio.MonitoringDevice="Monitoring-Gerät"
408
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Standard"
409
-Basic.Settings.Advanced.Audio.DisableAudioDucking="Windows Audioducking deaktivieren"
410
+Basic.Settings.Advanced.Audio.DisableAudioDucking="Windows-Audioducking deaktivieren"
411
 Basic.Settings.Advanced.StreamDelay="Streamverzögerung"
412
 Basic.Settings.Advanced.StreamDelay.Duration="Dauer (Sekunden)"
413
 Basic.Settings.Advanced.StreamDelay.Preserve="Lückenloses Wiederverbinden (erhöht Verzögerung, um Videoverlust zu vermeiden)"
414
@@ -740,13 +756,13 @@
415
 
416
 Basic.AdvAudio="Erweiterte Audioeigenschaften"
417
 Basic.AdvAudio.Name="Name"
418
-Basic.AdvAudio.Volume="Lautstärke (%)"
419
+Basic.AdvAudio.Volume="Lautstärke"
420
 Basic.AdvAudio.Mono="Heruntermischen zu Mono"
421
 Basic.AdvAudio.Balance="Balance"
422
-Basic.AdvAudio.SyncOffset="Sync Verschiebung (ms)"
423
-Basic.AdvAudio.Monitoring="Audiomonitoring"
424
+Basic.AdvAudio.SyncOffset="Sync-Verschiebung (ms)"
425
+Basic.AdvAudio.Monitoring="Audio-Monitoring"
426
 Basic.AdvAudio.Monitoring.None="Monitor aus"
427
-Basic.AdvAudio.Monitoring.MonitorOnly="Nur Monitor (Ausgabe stumm schalten)"
428
+Basic.AdvAudio.Monitoring.MonitorOnly="Nur Monitor (Ausgabe stummschalten)"
429
 Basic.AdvAudio.Monitoring.Both="Monitor und Ausgabe"
430
 Basic.AdvAudio.AudioTracks="Spuren"
431
 
432
@@ -807,23 +823,24 @@
433
 SceneItemHide="„%1“ verstecken"
434
 
435
 OutputWarnings.NoTracksSelected="Sie müssen mindestens eine Spur auswählen"
436
-OutputWarnings.MultiTrackRecording="Warnung: Bestimmte Formate (z.B. FLV) unterstüzen nicht mehrere Spuren pro Aufnahme"
437
-OutputWarnings.MP4Recording="Warnung: Aufnahmen, die in MP4/MOV gespeichert werden, sind nicht wiederherstellbar, wenn die Datei nicht abgeschlossen werden konnte (z.B. als Folge von BSODs, Stromausfällen, etc.). Wenn Sie mehrere Audiospuren aufnehmen möchten, sollten Sie MKV verwenden und die Aufnahme zu MP4/MOV remuxen, nachdem sie fertig ist (Datei → Aufnahmen remuxen)."
438
+OutputWarnings.MultiTrackRecording="Warnung: Bestimmte Formate (z. B. FLV) unterstüzen nicht mehrere Spuren pro Aufnahme"
439
+OutputWarnings.MP4Recording="Warnung: Aufnahmen, die in MP4/MOV gespeichert werden, sind nicht wiederherstellbar, wenn die Datei nicht abgeschlossen werden konnte (z. B. als Folge von BSODs, Stromausfällen, etc.). Wenn Sie mehrere Audiospuren aufnehmen möchten, sollten Sie MKV verwenden und die Aufnahme zu MP4/MOV remuxen, nachdem sie fertig ist (Datei → Aufnahmen remuxen)."
440
 
441
 FinalScene.Title="Szene löschen"
442
 FinalScene.Text="Es muss mindestens eine Szene vorhanden sein."
443
 
444
 NoSources.Title="Keine Quellen"
445
 NoSources.Text="Offenbar haben Sie noch keine Videoquellen hinzugefügt, sodass nur ein leerer Bildschirm ausgegeben wird. Sind Sie sicher, dass Sie das wollen?"
446
-NoSources.Text.AddSource="Sie können jederzeit Quellen hinzufügen, indem Sie auf das „+“-Symbol unter dem Quellenfeld im Hauptfenster klicken."
447
+NoSources.Text.AddSource="Sie können jederzeit Quellen hinzufügen, indem Sie auf das +-Symbol unter dem Quellenfeld im Hauptfenster klicken."
448
+NoSources.Label="Sie haben bis jetzt keine Quellen hinzugefügt.\nKlicken Sie auf das +-Symbol oder\nrechtsklicken Sie hier, um eine hinzuzufügen."
449
 
450
 ChangeBG="Farbe auswählen"
451
 CustomColor="Benutzerdefinierte Farbe"
452
 
453
-BrowserSource.EnableHardwareAcceleration="Browser Hardwarebeschleunigung aktivieren"
454
+BrowserSource.EnableHardwareAcceleration="Browser-Hardwarebeschleunigung aktivieren"
455
 
456
 About="Über OBS Studio"
457
-About.Info="OBS Studio ist eine kostenlose und Open-Source-Videoaufnahme- und Livestreaming-Software."
458
+About.Info="OBS Studio ist eine freie und Open-Source-Videoaufnahme- und Livestreaming-Software."
459
 About.Donate="Beitrag leisten"
460
 About.GetInvolved="Mitwirken"
461
 About.Authors="Autoren"
462
@@ -834,3 +851,5 @@
463
 ResizeOutputSizeOfSource.Text="Die Basis- und Ausgabeauflösung wird auf die Größe der aktuellen Quelle geändert."
464
 ResizeOutputSizeOfSource.Continue="Möchten Sie fortfahren?"
465
 
466
+PreviewTransition="Übergangsvorschau"
467
+
468
obs-studio-23.1.0.tar.xz/UI/data/locale/el-GR.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/el-GR.ini Changed
137
 
1
@@ -97,7 +97,7 @@
2
 BandwidthTest.Region.Asia="Ασία"
3
 BandwidthTest.Region.Other="Άλλη"
4
 
5
-Basic.FirstStartup.RunWizard="Θα θέλατε να εκτελέσετε τον Οδηγό αυτόματης ρύθμισης παραμέτρων;  Μπορείτε επίσης να κάνετε ρύθμιση παραμέτρων χειροκίνητα, κάνοντας κλικ στο κουμπί ρυθμίσεις στο κύριο παράθυρο."
6
+Basic.FirstStartup.RunWizard="Θα θέλατε να εκτελέσετε τον Οδηγό αυτόματης ρύθμισης παραμέτρων; Μπορείτε επίσης να κάνετε ρύθμιση παραμέτρων χειροκίνητα, κάνοντας κλικ στο κουμπί ρυθμίσεις στο κύριο παράθυρο."
7
 Basic.FirstStartup.RunWizard.NoClicked="Εάν αλλάξετε γνώμη, μπορείτε να εκτελέσετε τον Οδηγό αυτόματης ρύθμισης παραμέτρων οποιαδήποτε στιγμή ξανά, από το μενού Εργαλεία."
8
 
9
 Basic.AutoConfig="Οδηγός αυτόματης ρύθμισης παραμέτρων"
10
@@ -220,21 +220,23 @@
11
 Output.StartReplayFailed="Αποτυχία εκκίνησης της προσωρινής μνήμης των επαναλήψεων"
12
 Output.StartFailedGeneric="Αποτυχία εκκίνησης εξόδου. Παρακαλούμε ελέγξτε το αρχείο καταγραφής για λεπτομέρειες.\n\nΣημείωση: Εάν χρησιμοποιείτε τους κωδικοποιητές NVENC ή AMD, βεβαιωθείτε ότι τα προγράμματα οδήγησης της κάρτας γραφικών σας είναι ενημερωμένα."
13
 
14
+
15
 Output.ConnectFail.Title="Η σύνδεση απέτυχε"
16
-Output.ConnectFail.BadPath="Μη έγκυρη Διαδρομή ή URL Σύνδεσης.  Παρακαλώ ελέγξτε τις ρυθμίσεις σας και επιβεβαιώστε ότι είναι έγκυρες."
17
+Output.ConnectFail.BadPath="Μη έγκυρη Διαδρομή ή URL Σύνδεσης. Παρακαλώ ελέγξτε τις ρυθμίσεις σας και επιβεβαιώστε ότι είναι έγκυρες."
18
 Output.ConnectFail.ConnectFailed="Απέτυχε η σύνδεση στον διακομιστή"
19
 Output.ConnectFail.InvalidStream="Δεν μπορέσαμε να αποκτήσουμε πρόσβαση στο συγκεκριμένο κανάλι ή κλειδί ροής, παρακαλούμε ελέγξτε ξανά το κλειδί ροής σας. Εάν είναι σωστό, μπορεί να υπάρχει πρόβλημα στη σύνδεση με τον διακομιστή."
20
-Output.ConnectFail.Error="Παρουσιάστηκε μη αναμενόμενο σφάλμα κατά την προσπάθεια σύνδεσης με τον διακομιστή.  Περισσότερες πληροφορίες στο αρχείο καταγραφής."
21
+Output.ConnectFail.Error="Παρουσιάστηκε μη αναμενόμενο σφάλμα κατά την προσπάθεια σύνδεσης με τον διακομιστή. Περισσότερες πληροφορίες στο αρχείο καταγραφής."
22
 Output.ConnectFail.Disconnected="Αποσυνδεθήκατε από τον διακομιστή."
23
 
24
+
25
 Output.RecordFail.Title="Αποτυχία εκκίνησης της καταγραφής"
26
-Output.RecordFail.Unsupported="Η μορφή εξόδου είτε δεν υποστηρίζεται ή δεν υποστηρίζει παραπάνω από ένα κομμάτι ήχου. Παρακαλώ ελέγξτε τις ρυθμίσεις  σας και δοκιμάστε ξανά."
27
+Output.RecordFail.Unsupported="Η μορφή εξόδου είτε δεν υποστηρίζεται ή δεν υποστηρίζει παραπάνω από ένα κομμάτι ήχου. Παρακαλώ ελέγξτε τις ρυθμίσεις σας και δοκιμάστε ξανά."
28
 Output.RecordNoSpace.Title="Ανεπαρκής χώρος στον δίσκο"
29
 Output.RecordNoSpace.Msg="Δεν υπάρχει επαρκής χώρος στο δίσκο για να συνεχιστεί η καταγραφή."
30
 Output.RecordError.Title="Σφάλμα καταγραφής"
31
 Output.RecordError.Msg="Παρουσιάστηκε ένα αδιευκρίνιστο σφάλμα κατά την καταγραφή."
32
 Output.ReplayBuffer.NoHotkey.Title="Δεν έχουν επιλεγεί πλήκτρα συντόμευσης!"
33
-Output.ReplayBuffer.NoHotkey.Msg="Δεν έχει οριστεί πλήκτρο συντόμευσης για την επανάληψη προσωρινής μνήμης. Παρακαλώ ορίστε συντόμευση για  «Αποθήκευση» και χρήση για την αποθήκευση επανάληψης καταγραφών."
34
+Output.ReplayBuffer.NoHotkey.Msg="Δεν έχει οριστεί πλήκτρο συντόμευσης για την επανάληψη προσωρινής μνήμης. Παρακαλώ ορίστε συντόμευση για «Αποθήκευση» και χρήση για την αποθήκευση επανάληψης καταγραφών."
35
 
36
 Output.BadPath.Title="Λάθος Διαδρομή Αρχείου"
37
 Output.BadPath.Text="Η προκαθορισμένη διαδρομή αρχείου δεν ειναι έγκυρη. Παρακαλώ ελέγξτε τις ρυθμίσεις σας για να επιβεβαιώσετε ότι έχει οριστεί μια έγκυρη διαδρομή αρχείου."
38
@@ -273,6 +275,7 @@
39
 
40
 Basic.Main.PreviewConextMenu.Enable="Ενεργοποίηση Προεπισκόπησης"
41
 
42
+
43
 ScaleFiltering="Κλίμακα Φίλτρου"
44
 ScaleFiltering.Point="Point"
45
 ScaleFiltering.Bilinear="Bilinear"
46
@@ -327,7 +330,7 @@
47
 Basic.PropertiesWindow.SelectColor="Επιλέξτε χρώμα"
48
 Basic.PropertiesWindow.SelectFont="Επιλέξτε γραμματοσειρά"
49
 Basic.PropertiesWindow.ConfirmTitle="Άλλαξαν οι Ρυθμίσεις"
50
-Basic.PropertiesWindow.Confirm="Υπάρχουν μη αποθηκευμένες αλλαγές.  Θέλετε να τις κρατήσετε;"
51
+Basic.PropertiesWindow.Confirm="Υπάρχουν μη αποθηκευμένες αλλαγές. Θέλετε να τις κρατήσετε;"
52
 Basic.PropertiesWindow.NoProperties="Δεν υπάρχουν διαθέσιμες ιδιότητες"
53
 Basic.PropertiesWindow.AddFiles="Προσθήκη Αρχείων"
54
 Basic.PropertiesWindow.AddDir="Προσθήκη Φακέλου"
55
@@ -487,7 +490,7 @@
56
 
57
 Basic.Settings.ProgramRestart="Το πρόγραμμα πρέπει να επανεκκινηθεί για να εφαρμοστούν αυτές οι ρυθμίσεις."
58
 Basic.Settings.ConfirmTitle="Επιβεβαίωση Αλλαγών"
59
-Basic.Settings.Confirm="Έχετε μη αποθηκευμένες αλλαγές.  Αποθήκευση αλλαγών;"
60
+Basic.Settings.Confirm="Έχετε μη αποθηκευμένες αλλαγές. Αποθήκευση αλλαγών;"
61
 
62
 Basic.Settings.General="Γενικά"
63
 Basic.Settings.General.Theme="Θέμα"
64
@@ -552,10 +555,10 @@
65
 Basic.Settings.Output.Simple.RecordingQuality.Small="Υψηλής Ποιότητας, Μεσαίου Μεγέθους Αρχείο"
66
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Δυσδιάκριτης Ποιότητας, Μεγάλου Μεγέθους Αρχείο"
67
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Ποιότητας Χωρίς Απώλειες, Εξαιρετικά Μεγάλου Μεγέθους Αρχείο"
68
-Basic.Settings.Output.Simple.Warn.VideoBitrate="Προειδοποίηση: Το βίντεο ροής ρυθμού μετάδοσης bit θα οριστεί σε %1, που είναι το ανώτερο όριο για την τρέχουσα υπηρεσία συνεχούς ροής.  Εάν είστε βέβαιοι ότι θέλετε να υπερβείτε το %1, ενεργοποιήστε τις επιλογές του κωδικοποιητή για προχωρημένους και αποεπιλέξτε την επιλογή «Επιβολή υπηρεσίας ροής στα όρια ρυθμού μετάδοσης bit»."
69
-Basic.Settings.Output.Simple.Warn.AudioBitrate="Προειδοποίηση: Ο ρυθμος μετάδοσης bit του ήχου ροής θα οριστεί στο %1, που είναι το ανώτατο όριο για την τρέχουσα υπηρεσία συνεχούς ροής.  Εάν είστε βέβαιοι ότι θέλετε να υπερβείτε το %1, ενεργοποιήστε τις επιλογές του κωδικοποιητή για προχωρημένους και αποεπιλέξτε την επιλογή «Επιβολή υπηρεσίας ροής στα όρια ρυθμού μετάδοσης bit»."
70
+Basic.Settings.Output.Simple.Warn.VideoBitrate="Προειδοποίηση: Το βίντεο ροής ρυθμού μετάδοσης bit θα οριστεί σε %1, που είναι το ανώτερο όριο για την τρέχουσα υπηρεσία συνεχούς ροής. Εάν είστε βέβαιοι ότι θέλετε να υπερβείτε το %1, ενεργοποιήστε τις επιλογές του κωδικοποιητή για προχωρημένους και αποεπιλέξτε την επιλογή «Επιβολή υπηρεσίας ροής στα όρια ρυθμού μετάδοσης bit»."
71
+Basic.Settings.Output.Simple.Warn.AudioBitrate="Προειδοποίηση: Ο ρυθμος μετάδοσης bit του ήχου ροής θα οριστεί στο %1, που είναι το ανώτατο όριο για την τρέχουσα υπηρεσία συνεχούς ροής. Εάν είστε βέβαιοι ότι θέλετε να υπερβείτε το %1, ενεργοποιήστε τις επιλογές του κωδικοποιητή για προχωρημένους και αποεπιλέξτε την επιλογή «Επιβολή υπηρεσίας ροής στα όρια ρυθμού μετάδοσης bit»."
72
 Basic.Settings.Output.Simple.Warn.Encoder="Προειδοποίηση: Η καταγραφή με χρήση κωδικοποιητή λογισμικού σε διαφορετική ποιότητα από την ροή θα απαιτήσει πρόσθετη χρήση της CPU, αν πραγματοποιήσετε ταυτόχρονα μετάδοση ροής και καταγραφή."
73
-Basic.Settings.Output.Simple.Warn.Lossless="Προειδοποίηση: Η ποιότητα χωρίς απώλειες αυξάνει πολύ το μέγεθος των αρχείων!  Η ποιότητα χωρίς απώλειες ποιότητας θα καταλάβει 7 gigabyte χώρο στον σκληρό δίσκο ανά λεπτό, σε υψηλές αναλύσεις και ρυθμό καρέ.  Η επιλογή χωρίς απώλειες δεν συνιστάται για μεγάλες σε διάρκεια καταγραφές, εκτός και αν έχετε πολύ ελεύθερο χώρο διαθέσιμο στο σκληρό σας δίσκο."
74
+Basic.Settings.Output.Simple.Warn.Lossless="Προειδοποίηση: Η ποιότητα χωρίς απώλειες αυξάνει πολύ το μέγεθος των αρχείων! Η ποιότητα χωρίς απώλειες ποιότητας θα καταλάβει 7 gigabyte χώρο στον σκληρό δίσκο ανά λεπτό, σε υψηλές αναλύσεις και ρυθμό καρέ. Η επιλογή χωρίς απώλειες δεν συνιστάται για μεγάλες σε διάρκεια καταγραφές, εκτός και αν έχετε πολύ ελεύθερο χώρο διαθέσιμο στο σκληρό σας δίσκο."
75
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Είστε σίγουρος ότι θέλετε να χρησιμοποιήσετε την επιλογή ποιότητα χωρίς απώλειες;"
76
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Προειδοποίηση ποιότητας χωρίς απώλειες!"
77
 Basic.Settings.Output.Simple.Encoder.Software="Λογισμικό (x264)"
78
@@ -640,7 +643,6 @@
79
 Basic.Settings.Audio="Ήχος"
80
 Basic.Settings.Audio.SampleRate="Ρυθμός Δειγματοληψίας"
81
 Basic.Settings.Audio.Channels="Κανάλια"
82
-Basic.Settings.Audio.MeterDecayRate="Συντελεστής απόσβεσης ήχου μέτρησης"
83
 Basic.Settings.Audio.MeterDecayRate.Fast="Γρήγορος"
84
 Basic.Settings.Audio.MeterDecayRate.Medium="Μεσαίος (τύπος Ι PPM)"
85
 Basic.Settings.Audio.MeterDecayRate.Slow="Αργός (Τύπος ΙΙ PPM)"
86
@@ -648,15 +650,9 @@
87
 Basic.Settings.Audio.PeakMeterType.SamplePeak="Δείγμα Αιχμής"
88
 Basic.Settings.Audio.PeakMeterType.TruePeak="Πραγματική Αιχμή (Υψηλότερη χρήση της CPU)"
89
 Basic.Settings.Audio.MultiChannelWarning.Enabled="Προειδοποίηση: Ο ήχος Surround είναι ενεργοποιημένος."
90
-Basic.Settings.Audio.MultichannelWarning="Κατά τη ροή, ελέγξτε αν η υπηρεσία ροής υποστηρίζει ήχο surround και ήχο surround αναπαραγωγής. Το Twitch, το Facebook 360 Live, το Mixer RTMP καί το Smashcast αποτελούν παραδείγματα όπου ο surround ήχος υποστηρίζεται πλήρως.  Αν και το Facebook Live και το YouTube Live αποδέχονται τον ήχο surround, το Facebook Live τον υποβιβάζει  σε stereo, και το YouTube Live παίζει μόνο σε δύο κανάλια.\n\nΤα φίλτρα ήχου του OBS είναι συμβατά με ήχο surround, αν καί δεν είναι εγγυημένη η υποστήριξη για plugins VST."
91
+Basic.Settings.Audio.MultichannelWarning="Κατά τη ροή, ελέγξτε αν η υπηρεσία ροής υποστηρίζει ήχο surround και ήχο surround αναπαραγωγής. Το Twitch, το Facebook 360 Live, το Mixer RTMP καί το Smashcast αποτελούν παραδείγματα όπου ο surround ήχος υποστηρίζεται πλήρως. Αν και το Facebook Live και το YouTube Live αποδέχονται τον ήχο surround, το Facebook Live τον υποβιβάζει σε stereo, και το YouTube Live παίζει μόνο σε δύο κανάλια.\n\nΤα φίλτρα ήχου του OBS είναι συμβατά με ήχο surround, αν καί δεν είναι εγγυημένη η υποστήριξη για plugins VST."
92
 Basic.Settings.Audio.MultichannelWarning.Title="Ενεργοποίηση ήχου surround;"
93
 Basic.Settings.Audio.MultichannelWarning.Confirm="Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε τον ήχο surround;"
94
-Basic.Settings.Audio.DesktopDevice="Συσκευή Ήχου Επιφάνειας"
95
-Basic.Settings.Audio.DesktopDevice2="Συσκευή Ήχου Επιφάνειας 2"
96
-Basic.Settings.Audio.AuxDevice="Μικρόφωνο/Αuxillary Συσκευή Ήχου"
97
-Basic.Settings.Audio.AuxDevice2="Μικρόφωνο/Αuxillary Συσκευή Ήχου 2"
98
-Basic.Settings.Audio.AuxDevice3="Μικρόφωνο/Αuxillary Συσκευή Ήχου 3"
99
-Basic.Settings.Audio.AuxDevice4="Μικρόφωνο/Βοηθητική Συσκευή ήχου 4"
100
 Basic.Settings.Audio.EnablePushToMute="Ενεργοποίηση της Πίεσης-για-σίγαση"
101
 Basic.Settings.Audio.PushToMuteDelay="Καθυστέρηση Πίεσης-για-σίγαση"
102
 Basic.Settings.Audio.EnablePushToTalk="Ενεργοποίηση Πίεσης-για-ομιλία"
103
@@ -673,11 +669,8 @@
104
 Basic.Settings.Advanced.FormatWarning="Προειδοποίηση: Μορφές χρώματος εκτός του NV12 προορίζονται κυρίως για καταγραφή, και δεν συνιστώνται κατά τη ροή. Ενδέχεται να υπάρξει αυξημένη χρήση της CPU λόγω μετατροπής μορφής χρώματος."
105
 Basic.Settings.Advanced.Audio.BufferingTime="Χρόνος Προσωρινής Μνήμης Ήχου"
106
 Basic.Settings.Advanced.Video.ColorFormat="Μορφή Χρώματος"
107
-Basic.Settings.Advanced.Video.ColorSpace="Χώρος χρωμάτων YUV"
108
-Basic.Settings.Advanced.Video.ColorRange="Εύρος Χρωμάτων YUV"
109
 Basic.Settings.Advanced.Video.ColorRange.Partial="Μερικό"
110
 Basic.Settings.Advanced.Video.ColorRange.Full="Πλήρες"
111
-Basic.Settings.Advanced.Audio.MonitoringDevice="Συσκευή Παρακολούθησης Ήχου"
112
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Προεπιλεγμένη"
113
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Απενεργοποίηση Σίγασης Ήχου Windows"
114
 Basic.Settings.Advanced.StreamDelay="Καθυστέρηση Ροής"
115
@@ -694,7 +687,6 @@
116
 
117
 Basic.AdvAudio="Ιδιότητες Ήχου για Προχωρημένους"
118
 Basic.AdvAudio.Name="Όνομα"
119
-Basic.AdvAudio.Volume="Ένταση (%)"
120
 Basic.AdvAudio.Mono="Υποβίβαση σε Μονοφωνικό"
121
 Basic.AdvAudio.Balance="Εξισορρόπηση"
122
 Basic.AdvAudio.SyncOffset="Μετατόπιση Συγχρονισμού (ms)"
123
@@ -713,7 +705,7 @@
124
 Basic.SystemTray.Show="Εμφάνιση"
125
 Basic.SystemTray.Hide="Απόκρυψη"
126
 
127
-Basic.SystemTray.Message.Reconnecting="Έγινε αποσύνδεση.  Γίνεται επανασύνδεση..."
128
+Basic.SystemTray.Message.Reconnecting="Έγινε αποσύνδεση. Γίνεται επανασύνδεση..."
129
 
130
 Hotkeys.Insert="Insert"
131
 Hotkeys.Delete="Διαγραφή"
132
@@ -784,3 +776,4 @@
133
 ResizeOutputSizeOfSource.Text="Η βασική ανάλυση και η ανάλυση εξόδου θα μεταβληθούν σύμφωνα με τις διαστάσεις της τρέχουσας πηγής."
134
 ResizeOutputSizeOfSource.Continue="Θέλετε να συνεχίσετε;"
135
 
136
+
137
obs-studio-23.1.0.tar.xz/UI/data/locale/en-US.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/en-US.ini Changed
352
 
1
@@ -1,5 +1,5 @@
2
 # Note to translators: *DO NOT* translate this file directly. Instead, visit http://crowdin.com/project/obs-studio and submit your translations there.
3
-# Pull requests for translations outside of CrowdIn will not be accepted.
4
+# Pull requests for translations outside of Crowdin will not be accepted.
5
 # Read this forum post for more instructions on submitting translations: https://obsproject.com/forum/threads/how-to-contribute-translations-for-obs.16327/
6
 
7
 # Language and language region of this file
8
@@ -54,7 +54,7 @@
9
 Enable="Enable"
10
 DisableOSXVSync="Disable OSX V-Sync"
11
 ResetOSXVSyncOnExit="Reset OSX V-Sync on Exit"
12
-HighResourceUsage="Encoding overloaded!  Consider turning down video settings or using a faster encoding preset."
13
+HighResourceUsage="Encoding overloaded! Consider turning down video settings or using a faster encoding preset."
14
 Transition="Transition"
15
 QuickTransitions="Quick Transitions"
16
 Left="Left"
17
@@ -86,13 +86,15 @@
18
 VerticalLayout="Vertical Layout"
19
 Group="Group"
20
 DoNotShowAgain="Do not show again"
21
+Default="(Default)"
22
+Calculating="Calculating..."
23
 
24
 # warning if program already open
25
 AlreadyRunning.Title="OBS is already running"
26
-AlreadyRunning.Text="OBS is already running!  Unless you meant to do this, please shut down any existing instances of OBS before trying to run a new instance.  If you have OBS set to minimize to the system tray, please check to see if it's still running there."
27
+AlreadyRunning.Text="OBS is already running! Unless you meant to do this, please shut down any existing instances of OBS before trying to run a new instance. If you have OBS set to minimize to the system tray, please check to see if it's still running there."
28
 AlreadyRunning.LaunchAnyway="Launch Anyway"
29
 
30
-# warning when closing docks.  it's frustrating that we actually need this.
31
+# warning when closing docks. it's frustrating that we actually need this.
32
 DockCloseWarning.Title="Closing Dockable Window"
33
 DockCloseWarning.Text="You just closed a dockable window. If you'd like to show it again, use the View → Docks menu on the menu bar."
34
 
35
@@ -102,7 +104,7 @@
36
 Auth.AuthFailure.Title="Authentication Failure"
37
 Auth.AuthFailure.Text="Failed to authenticate with %1:\n\n%2: %3"
38
 Auth.InvalidScope.Title="Authentication Required"
39
-Auth.InvalidScope.Text="The authentication requirements for %1 have changed.  Some features may not be available."
40
+Auth.InvalidScope.Text="The authentication requirements for %1 have changed. Some features may not be available."
41
 Auth.LoadingChannel.Title="Loading channel information..."
42
 Auth.LoadingChannel.Text="Loading channel information for %1, please wait..."
43
 Auth.ChannelFailure.Title="Failed to load channel"
44
@@ -111,6 +113,8 @@
45
 Auth.StreamInfo="Stream Information"
46
 TwitchAuth.Stats="Twitch Stats"
47
 TwitchAuth.Feed="Twitch Activity Feed"
48
+TwitchAuth.TwoFactorFail.Title="Could not query stream key"
49
+TwitchAuth.TwoFactorFail.Text="OBS was unable to connect to your Twitch account. Please make sure two-factor authentication is set up in your <a href='https://www.twitch.tv/settings/security'>Twitch security settings</a> as this is required to stream."
50
 
51
 # copy filters
52
 Copy.Filters="Copy Filters"
53
@@ -128,7 +132,7 @@
54
 BandwidthTest.Region.Other="Other"
55
 
56
 # first time startup
57
-Basic.FirstStartup.RunWizard="Would you like to run the auto-configuration wizard?  You can also manually configure your settings by clicking the Settings button in the main window."
58
+Basic.FirstStartup.RunWizard="Would you like to run the auto-configuration wizard? You can also manually configure your settings by clicking the Settings button in the main window."
59
 Basic.FirstStartup.RunWizard.NoClicked="If you change your mind, you can run the auto-configuration wizard any time again from the Tools menu."
60
 
61
 # auto config wizard
62
@@ -145,13 +149,13 @@
63
 Basic.AutoConfig.VideoPage.FPS.UseCurrent="Use Current (%1)"
64
 Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="Either 60 or 30, but prefer 60 when possible"
65
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="Either 60 or 30, but prefer high resolution"
66
-Basic.AutoConfig.VideoPage.CanvasExplanation="Note: The canvas (base) resolution is not necessarily the same as the resolution you will stream or record with.  Your actual stream/recording resolution may be scaled down from the canvas resolution to reduce resource usage or bitrate requirements."
67
+Basic.AutoConfig.VideoPage.CanvasExplanation="Note: The canvas (base) resolution is not necessarily the same as the resolution you will stream or record with. Your actual stream/recording resolution may be scaled down from the canvas resolution to reduce resource usage or bitrate requirements."
68
 Basic.AutoConfig.StreamPage="Stream Information"
69
 Basic.AutoConfig.StreamPage.SubTitle="Please enter your stream information"
70
 Basic.AutoConfig.StreamPage.ConnectAccount="Connect Account (optional)"
71
 Basic.AutoConfig.StreamPage.DisconnectAccount="Disconnect Account"
72
 Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Title="Disconnect Account?"
73
-Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="This change will apply immediately.  Are you sure you want to disconnect your account?"
74
+Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="This change will apply immediately. Are you sure you want to disconnect your account?"
75
 Basic.AutoConfig.StreamPage.UseStreamKey="Use Stream Key"
76
 Basic.AutoConfig.StreamPage.Service="Service"
77
 Basic.AutoConfig.StreamPage.Service.ShowAll="Show All..."
78
@@ -163,14 +167,14 @@
79
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Prefer hardware encoding"
80
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Hardware Encoding eliminates most CPU usage, but may require more bitrate to obtain the same level of quality."
81
 Basic.AutoConfig.StreamPage.StreamWarning.Title="Stream warning"
82
-Basic.AutoConfig.StreamPage.StreamWarning.Text="The bandwidth test is about to stream randomized video data without audio to your channel.  If you're able, it's recommended to temporarily turn off saving videos of streams and set the stream to private until after the test has completed.  Continue?"
83
+Basic.AutoConfig.StreamPage.StreamWarning.Text="The bandwidth test is about to stream randomized video data without audio to your channel. If you're able, it's recommended to temporarily turn off saving videos of streams and set the stream to private until after the test has completed. Continue?"
84
 Basic.AutoConfig.TestPage="Final Results"
85
 Basic.AutoConfig.TestPage.SubTitle.Testing="The program is now executing a set of tests to estimate the most ideal settings"
86
 Basic.AutoConfig.TestPage.SubTitle.Complete="Testing complete"
87
 Basic.AutoConfig.TestPage.TestingBandwidth="Performing bandwidth test, this may take a few minutes..."
88
-Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Connecting to:  %1..."
89
+Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Connecting to: %1..."
90
 Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Failed to connect to any servers, please check your internet connection and try again."
91
-Basic.AutoConfig.TestPage.TestingBandwidth.Server="Testing bandwidth for:  %1"
92
+Basic.AutoConfig.TestPage.TestingBandwidth.Server="Testing bandwidth for: %1"
93
 Basic.AutoConfig.TestPage.TestingStreamEncoder="Testing stream encoder, this may take a minute..."
94
 Basic.AutoConfig.TestPage.TestingRecordingEncoder="Testing recording encoder, this may take a minute..."
95
 Basic.AutoConfig.TestPage.TestingRes="Testing resolutions, this may take a few minutes..."
96
@@ -179,7 +183,7 @@
97
 Basic.AutoConfig.TestPage.Result.StreamingEncoder="Streaming Encoder"
98
 Basic.AutoConfig.TestPage.Result.RecordingEncoder="Recording Encoder"
99
 Basic.AutoConfig.TestPage.Result.Header="The program has determined that these estimated settings are the most ideal for you:"
100
-Basic.AutoConfig.TestPage.Result.Footer="To use these settings, click Apply Settings.  To reconfigure the wizard and try again, click Back.  To manually configure settings yourself, click Cancel and open Settings."
101
+Basic.AutoConfig.TestPage.Result.Footer="To use these settings, click Apply Settings. To reconfigure the wizard and try again, click Back. To manually configure settings yourself, click Cancel and open Settings."
102
 
103
 # stats
104
 Basic.Stats="Stats"
105
@@ -199,9 +203,10 @@
106
 Basic.Stats.DroppedFrames="Dropped Frames (Network)"
107
 Basic.Stats.MegabytesSent="Total Data Output"
108
 Basic.Stats.Bitrate="Bitrate"
109
+Basic.Stats.DiskFullIn="Disk full in (approx.)"
110
 
111
 ResetUIWarning.Title="Are you sure you want to reset the UI?"
112
-ResetUIWarning.Text="Resetting the UI will hide additional docks.  You will need to unhide these docks from the view menu if you want them to be visible.\n\nAre you sure you want to reset the UI?"
113
+ResetUIWarning.Text="Resetting the UI will hide additional docks. You will need to unhide these docks from the view menu if you want them to be visible.\n\nAre you sure you want to reset the UI?"
114
 
115
 # updater
116
 Updater.Title="New update available"
117
@@ -215,7 +220,7 @@
118
 Updater.NoUpdatesAvailable.Text="No updates are currently available"
119
 Updater.FailedToLaunch="Failed to launch updater"
120
 Updater.GameCaptureActive.Title="Game capture active"
121
-Updater.GameCaptureActive.Text="Game capture hook library is currently in use.  Please close any games/programs being captured (or restart windows) and try again."
122
+Updater.GameCaptureActive.Text="Game capture hook library is currently in use. Please close any games/programs being captured (or restart Windows) and try again."
123
 
124
 # quick transitions
125
 QuickTransitions.SwapScenes="Swap Preview/Output Scenes After Transitioning"
126
@@ -263,7 +268,7 @@
127
 
128
 # confirm exit dialog box
129
 ConfirmExit.Title="Exit OBS?"
130
-ConfirmExit.Text="OBS is currently active.  All streams/recordings will be shut down.  Are you sure you wish to exit?"
131
+ConfirmExit.Text="OBS is currently active. All streams/recordings will be shut down. Are you sure you wish to exit?"
132
 
133
 # confirm delete dialog box
134
 ConfirmRemove.Title="Confirm Remove"
135
@@ -274,29 +279,35 @@
136
 Output.StartStreamFailed="Failed to start streaming"
137
 Output.StartRecordingFailed="Failed to start recording"
138
 Output.StartReplayFailed="Failed to start replay buffer"
139
-Output.StartFailedGeneric="Starting the output failed.  Please check the log for details.\n\nNote: If you are using the NVENC or AMD encoders, make sure your video drivers are up to date."
140
+Output.StartFailedGeneric="Starting the output failed. Please check the log for details.\n\nNote: If you are using the NVENC or AMD encoders, make sure your video drivers are up to date."
141
+
142
 
143
 # output connect messages
144
 Output.ConnectFail.Title="Failed to connect"
145
-Output.ConnectFail.BadPath="Invalid Path or Connection URL.  Please check your settings to confirm that they are valid."
146
+Output.ConnectFail.BadPath="Invalid Path or Connection URL. Please check your settings to confirm that they are valid."
147
 Output.ConnectFail.ConnectFailed="Failed to connect to server"
148
-Output.ConnectFail.InvalidStream="Could not access the specified channel or stream key, please double-check your stream key.  If it is correct, there may be a problem connecting to the server."
149
-Output.ConnectFail.Error="An unexpected error occurred when trying to connect to the server.  More information in the log file."
150
+Output.ConnectFail.InvalidStream="Could not access the specified channel or stream key, please double-check your stream key. If it is correct, there may be a problem connecting to the server."
151
+Output.ConnectFail.Error="An unexpected error occurred when trying to connect to the server. More information in the log file."
152
 Output.ConnectFail.Disconnected="Disconnected from server."
153
 
154
+# output streaming-related messages
155
+Output.StreamEncodeError.Title="Encoding error"
156
+Output.StreamEncodeError.Msg="An encoder error occurred while streaming."
157
+
158
 # output recording-related messages
159
 Output.RecordFail.Title="Failed to start recording"
160
-Output.RecordFail.Unsupported="The output format is either unsupported or does not support more than one audio track.  Please check your settings and try again."
161
+Output.RecordFail.Unsupported="The output format is either unsupported or does not support more than one audio track. Please check your settings and try again."
162
 Output.RecordNoSpace.Title="Insufficient disk space"
163
 Output.RecordNoSpace.Msg="There is not sufficient disk space to continue recording."
164
 Output.RecordError.Title="Recording error"
165
 Output.RecordError.Msg="An unspecified error occurred while recording."
166
+Output.RecordError.EncodeErrorMsg="An encoder error occurred while recording."
167
 Output.ReplayBuffer.NoHotkey.Title="No hotkey set!"
168
-Output.ReplayBuffer.NoHotkey.Msg="No save hotkey set for replay buffer.  Please set the \"Save\" hotkey to use for saving replay recordings."
169
+Output.ReplayBuffer.NoHotkey.Msg="No save hotkey set for replay buffer. Please set the \"Save\" hotkey to use for saving replay recordings."
170
 
171
 # output recording messages
172
 Output.BadPath.Title="Bad File Path"
173
-Output.BadPath.Text="The configured file output path is invalid.  Please check your settings to confirm that a valid file path has been set."
174
+Output.BadPath.Text="The configured file output path is invalid. Please check your settings to confirm that a valid file path has been set."
175
 
176
 # log upload dialog text and messages
177
 LogReturnDialog="Log Upload Successful"
178
@@ -324,7 +335,7 @@
179
 
180
 # update dialog
181
 UpdateAvailable="New Update Available"
182
-UpdateAvailable.Text="Version %1.%2.%3 is now available.  <a href='%4'>Click here to download</a>"
183
+UpdateAvailable.Text="Version %1.%2.%3 is now available. <a href='%4'>Click here to download</a>"
184
 
185
 # audio device names
186
 Basic.DesktopDevice1="Desktop Audio"
187
@@ -341,6 +352,9 @@
188
 # display context menu
189
 Basic.Main.PreviewConextMenu.Enable="Enable Preview"
190
 
191
+# disable preview
192
+Basic.Main.Preview.Disable="Disable Preview"
193
+
194
 # scale filtering
195
 ScaleFiltering="Scale Filtering"
196
 ScaleFiltering.Point="Point"
197
@@ -409,7 +423,7 @@
198
 Basic.PropertiesWindow.SelectColor="Select color"
199
 Basic.PropertiesWindow.SelectFont="Select font"
200
 Basic.PropertiesWindow.ConfirmTitle="Settings Changed"
201
-Basic.PropertiesWindow.Confirm="There are unsaved changes.  Do you want to keep them?"
202
+Basic.PropertiesWindow.Confirm="There are unsaved changes. Do you want to keep them?"
203
 Basic.PropertiesWindow.NoProperties="No properties available"
204
 Basic.PropertiesWindow.AddFiles="Add Files"
205
 Basic.PropertiesWindow.AddDir="Add Directory"
206
@@ -533,6 +547,8 @@
207
 Basic.MainMenu.Edit.Transform.FitToScreen="&Fit to screen"
208
 Basic.MainMenu.Edit.Transform.StretchToScreen="&Stretch to screen"
209
 Basic.MainMenu.Edit.Transform.CenterToScreen="&Center to screen"
210
+Basic.MainMenu.Edit.Transform.VerticalCenter="Center Vertically"
211
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Center Horizontally"
212
 Basic.MainMenu.Edit.Order="&Order"
213
 Basic.MainMenu.Edit.Order.MoveUp="Move &Up"
214
 Basic.MainMenu.Edit.Order.MoveDown="Move &Down"
215
@@ -583,7 +599,7 @@
216
 # basic mode settings dialog
217
 Basic.Settings.ProgramRestart="The program must be restarted for these settings to take effect."
218
 Basic.Settings.ConfirmTitle="Confirm Changes"
219
-Basic.Settings.Confirm="You have unsaved changes.  Save changes?"
220
+Basic.Settings.Confirm="You have unsaved changes. Save changes?"
221
 
222
 # basic mode 'general' settings
223
 Basic.Settings.General="General"
224
@@ -650,7 +666,7 @@
225
 Basic.Settings.Output.ReplayBuffer.SecondsMax="Maximum Replay Time (Seconds)"
226
 Basic.Settings.Output.ReplayBuffer.MegabytesMax="Maximum Memory (Megabytes)"
227
 Basic.Settings.Output.ReplayBuffer.Estimate="Estimated memory usage: %1 MB"
228
-Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Cannot estimate memory usage.  Please set maximum memory limit."
229
+Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Cannot estimate memory usage. Please set maximum memory limit."
230
 Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(Note: Make sure to set a hotkey for the replay buffer in the hotkeys section)"
231
 Basic.Settings.Output.ReplayBuffer.Prefix="Replay Buffer Filename Prefix"
232
 Basic.Settings.Output.ReplayBuffer.Suffix="Suffix"
233
@@ -660,10 +676,10 @@
234
 Basic.Settings.Output.Simple.RecordingQuality.Small="High Quality, Medium File Size"
235
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Indistinguishable Quality, Large File Size"
236
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Lossless Quality, Tremendously Large File Size"
237
-Basic.Settings.Output.Simple.Warn.VideoBitrate="Warning: The streaming video bitrate will be set to %1, which is the upper limit for the current streaming service.  If you're sure you want to go above %1, enable advanced encoder options and uncheck \"Enforce streaming service bitrate limits\"."
238
-Basic.Settings.Output.Simple.Warn.AudioBitrate="Warning: The streaming audio bitrate will be set to %1, which is the upper limit for the current streaming service.  If you're sure you want to go above %1, enable advanced encoder options and uncheck \"Enforce streaming service bitrate limits\"."
239
+Basic.Settings.Output.Simple.Warn.VideoBitrate="Warning: The streaming video bitrate will be set to %1, which is the upper limit for the current streaming service. If you're sure you want to go above %1, enable advanced encoder options and uncheck \"Enforce streaming service bitrate limits\"."
240
+Basic.Settings.Output.Simple.Warn.AudioBitrate="Warning: The streaming audio bitrate will be set to %1, which is the upper limit for the current streaming service. If you're sure you want to go above %1, enable advanced encoder options and uncheck \"Enforce streaming service bitrate limits\"."
241
 Basic.Settings.Output.Simple.Warn.Encoder="Warning: Recording with a software encoder at a different quality than the stream will require extra CPU usage if you stream and record at the same time."
242
-Basic.Settings.Output.Simple.Warn.Lossless="Warning: Lossless quality generates tremendously large file sizes!  Lossless quality can use upward of 7 gigabytes of disk space per minute at high resolutions and framerates.  Lossless is not recommended for long recordings unless you have a very large amount of disk space available."
243
+Basic.Settings.Output.Simple.Warn.Lossless="Warning: Lossless quality generates tremendously large file sizes! Lossless quality can use upward of 7 gigabytes of disk space per minute at high resolutions and framerates. Lossless is not recommended for long recordings unless you have a very large amount of disk space available."
244
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Are you sure you want to use lossless quality?"
245
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Lossless quality warning!"
246
 Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
247
@@ -728,7 +744,7 @@
248
 FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
249
 
250
 # basic mode 'output' settings - advanced section - recording subsection - TT
251
-FilenameFormatting.TT="%CCYY   Year, four digits\n%YY      Year, last two digits (00-99)\n%MM      Month as a decimal number (01-12)\n%DD      Day of the month, zero-padded (01-31)\n%hh      Hour in 24h format (00-23)\n%mm     Minute (00-59)\n%ss     Second (00-61)\n%%      A % sign\n%a        Abbreviated weekday name\n%A        Full weekday name\n%b       Abbreviated month name\n%B      Full month name\n%d     Day of the month, zero-padded (01-31)\n%H       Hour in 24h format (00-23)\n%I      Hour in 12h format (01-12)\n%m      Month as a decimal number (01-12)\n%M       Minute (00-59)\n%p      AM or PM designation\n%S        Second (00-61)\n%y      Year, last two digits (00-99)\n%Y       Year\n%z        ISO 8601 offset from UTC or timezone\n      name or abbreviation\n%Z        Timezone name or abbreviation\n"
252
+FilenameFormatting.TT="%CCYY   Year, four digits\n%YY      Year, last two digits (00-99)\n%MM      Month as a decimal number (01-12)\n%DD      Day of the month, zero-padded (01-31)\n%hh      Hour in 24h format (00-23)\n%mm     Minute (00-59)\n%ss     Second (00-61)\n%%      A % sign\n%a        Abbreviated weekday name\n%A        Full weekday name\n%b       Abbreviated month name\n%B      Full month name\n%d     Day of the month, zero-padded (01-31)\n%H       Hour in 24h format (00-23)\n%I      Hour in 12h format (01-12)\n%m      Month as a decimal number (01-12)\n%M       Minute (00-59)\n%p      AM or PM designation\n%S        Second (00-61)\n%y      Year, last two digits (00-99)\n%Y       Year\n%z        ISO 8601 offset from UTC in timezone\n%Z        Timezone name or abbreviation\n"
253
 
254
 # basic mode 'video' settings
255
 Basic.Settings.Video="Video"
256
@@ -744,8 +760,8 @@
257
 Basic.Settings.Video.Numerator="Numerator"
258
 Basic.Settings.Video.Denominator="Denominator"
259
 Basic.Settings.Video.Renderer="Renderer"
260
-Basic.Settings.Video.InvalidResolution="Invalid resolution value.  Must be [width]x[height] (i.e. 1920x1080)"
261
-Basic.Settings.Video.CurrentlyActive="Video output is currently active.  Please turn off any outputs to change video settings."
262
+Basic.Settings.Video.InvalidResolution="Invalid resolution value. Must be [width]x[height] (i.e. 1920x1080)"
263
+Basic.Settings.Video.CurrentlyActive="Video output is currently active. Please turn off any outputs to change video settings."
264
 Basic.Settings.Video.DisableAero="Disable Aero"
265
 
266
 # scale filters
267
@@ -757,7 +773,8 @@
268
 Basic.Settings.Audio="Audio"
269
 Basic.Settings.Audio.SampleRate="Sample Rate"
270
 Basic.Settings.Audio.Channels="Channels"
271
-Basic.Settings.Audio.MeterDecayRate="Audio Meter Decay Rate"
272
+Basic.Settings.Audio.Meters="Meters"
273
+Basic.Settings.Audio.MeterDecayRate="Decay Rate"
274
 Basic.Settings.Audio.MeterDecayRate.Fast="Fast"
275
 Basic.Settings.Audio.MeterDecayRate.Medium="Medium (Type I PPM)"
276
 Basic.Settings.Audio.MeterDecayRate.Slow="Slow (Type II PPM)"
277
@@ -765,15 +782,16 @@
278
 Basic.Settings.Audio.PeakMeterType.SamplePeak="Sample Peak"
279
 Basic.Settings.Audio.PeakMeterType.TruePeak="True Peak (Higher CPU usage)"
280
 Basic.Settings.Audio.MultiChannelWarning.Enabled="WARNING: Surround sound audio is enabled."
281
-Basic.Settings.Audio.MultichannelWarning="If streaming, check to see if your streaming service supports both surround sound ingest and surround sound playback.  Twitch, Facebook 360 Live, Mixer RTMP, Smashcast are examples where surround sound is fully supported.  Although Facebook Live and YouTube Live both accept surround ingest, Facebook Live downmixes to stereo, and YouTube Live plays only two channels.\n\nOBS audio filters are compatible with surround sound, though VST plugin support isn't guaranteed."
282
+Basic.Settings.Audio.MultichannelWarning="If streaming, check to see if your streaming service supports both surround sound ingest and surround sound playback. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast are examples where surround sound is fully supported. Although Facebook Live and YouTube Live both accept surround ingest, Facebook Live downmixes to stereo, and YouTube Live plays only two channels.\n\nOBS audio filters are compatible with surround sound, though VST plugin support isn't guaranteed."
283
 Basic.Settings.Audio.MultichannelWarning.Title="Enable surround sound audio?"
284
 Basic.Settings.Audio.MultichannelWarning.Confirm="Are you sure you want to enable surround sound audio?"
285
-Basic.Settings.Audio.DesktopDevice="Desktop Audio Device"
286
-Basic.Settings.Audio.DesktopDevice2="Desktop Audio Device 2"
287
-Basic.Settings.Audio.AuxDevice="Mic/Auxiliary Audio Device"
288
-Basic.Settings.Audio.AuxDevice2="Mic/Auxiliary Audio Device 2"
289
-Basic.Settings.Audio.AuxDevice3="Mic/Auxiliary Audio Device 3"
290
-Basic.Settings.Audio.AuxDevice4="Mic/Auxiliary Audio Device 4"
291
+Basic.Settings.Audio.Devices="Devices"
292
+Basic.Settings.Audio.DesktopDevice="Desktop Audio"
293
+Basic.Settings.Audio.DesktopDevice2="Desktop Audio 2"
294
+Basic.Settings.Audio.AuxDevice="Mic/Auxiliary Audio"
295
+Basic.Settings.Audio.AuxDevice2="Mic/Auxiliary Audio 2"
296
+Basic.Settings.Audio.AuxDevice3="Mic/Auxiliary Audio 3"
297
+Basic.Settings.Audio.AuxDevice4="Mic/Auxiliary Audio 4"
298
 Basic.Settings.Audio.EnablePushToMute="Enable Push-to-mute"
299
 Basic.Settings.Audio.PushToMuteDelay="Push-to-mute delay"
300
 Basic.Settings.Audio.EnablePushToTalk="Enable Push-to-talk"
301
@@ -789,14 +807,14 @@
302
 Basic.Settings.Advanced.General.ProcessPriority.Normal="Normal"
303
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Below Normal"
304
 Basic.Settings.Advanced.General.ProcessPriority.Idle="Idle"
305
-Basic.Settings.Advanced.FormatWarning="Warning:  Color formats other than NV12 are primarily intended for recording, and are not recommended when streaming.  Streaming may incur increased CPU usage due to color format conversion."
306
+Basic.Settings.Advanced.FormatWarning="Warning: Color formats other than NV12 are primarily intended for recording, and are not recommended when streaming. Streaming may incur increased CPU usage due to color format conversion."
307
 Basic.Settings.Advanced.Audio.BufferingTime="Audio Buffering Time"
308
 Basic.Settings.Advanced.Video.ColorFormat="Color Format"
309
-Basic.Settings.Advanced.Video.ColorSpace="YUV Color Space"
310
-Basic.Settings.Advanced.Video.ColorRange="YUV Color Range"
311
+Basic.Settings.Advanced.Video.ColorSpace="Color Space"
312
+Basic.Settings.Advanced.Video.ColorRange="Color Range"
313
 Basic.Settings.Advanced.Video.ColorRange.Partial="Partial"
314
 Basic.Settings.Advanced.Video.ColorRange.Full="Full"
315
-Basic.Settings.Advanced.Audio.MonitoringDevice="Audio Monitoring Device"
316
+Basic.Settings.Advanced.Audio.MonitoringDevice="Monitoring Device"
317
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Default"
318
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Disable Windows audio ducking"
319
 Basic.Settings.Advanced.StreamDelay="Stream Delay"
320
@@ -814,7 +832,7 @@
321
 # advanced audio properties
322
 Basic.AdvAudio="Advanced Audio Properties"
323
 Basic.AdvAudio.Name="Name"
324
-Basic.AdvAudio.Volume="Volume (%)"
325
+Basic.AdvAudio.Volume="Volume"
326
 Basic.AdvAudio.Mono="Downmix to Mono"
327
 Basic.AdvAudio.Balance="Balance"
328
 Basic.AdvAudio.SyncOffset="Sync Offset (ms)"
329
@@ -837,7 +855,7 @@
330
 Basic.SystemTray.Hide="Hide"
331
 
332
 # system tray messages
333
-Basic.SystemTray.Message.Reconnecting="Disconnected.  Reconnecting..."
334
+Basic.SystemTray.Message.Reconnecting="Disconnected. Reconnecting..."
335
 
336
 # hotkeys that may lack translation on certain operating systems
337
 Hotkeys.Insert="Insert"
338
@@ -900,6 +918,7 @@
339
 NoSources.Title="No Sources"
340
 NoSources.Text="It looks like you haven't added any video sources yet, so you will only be outputting a blank screen. Are you sure you want to do this?"
341
 NoSources.Text.AddSource="You can add sources by clicking the + icon under the Sources box in the main window at any time."
342
+NoSources.Label="You don't have any sources.\nClick the + button below,\nor right click here to add one."
343
 
344
 # Scene item color selection
345
 ChangeBG="Set Color"
346
@@ -921,3 +940,5 @@
347
 ResizeOutputSizeOfSource="Resize output (source size)"
348
 ResizeOutputSizeOfSource.Text="The base and output resolutions will be resized to the size of the current source."
349
 ResizeOutputSizeOfSource.Continue="Do you want to continue?"
350
+
351
+PreviewTransition="Preview Transition"
352
obs-studio-23.1.0.tar.xz/UI/data/locale/es-ES.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/es-ES.ini Changed
232
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Interfaz Vertical"
3
 Group="Grupo"
4
 DoNotShowAgain="No mostrar de nuevo"
5
+Default="(Por defecto)"
6
+Calculating="Calculando..."
7
 
8
 AlreadyRunning.Title="OBS ya se está ejecutando"
9
 AlreadyRunning.Text="¡OBS ya se está ejecutando! A no ser que quieras hacer esto, por favor, cierra todas las ventanas de OBS antes de intentar iniciar una nueva. Si tienes configurado OBS para que se minimice a la barra de tareas, comprueba si sigue ejecutándose ahí."
10
@@ -94,7 +96,7 @@
11
 Auth.AuthFailure.Title="Fallo de autenticación"
12
 Auth.AuthFailure.Text="Error al autentificar con %1:\n\n%2: %3"
13
 Auth.InvalidScope.Title="Se requiere autentificación"
14
-Auth.InvalidScope.Text="Los requisitos de autenticación para %1 han cambiado.  Algunas características pueden no estar disponibles."
15
+Auth.InvalidScope.Text="Los requisitos de autenticación para %1 han cambiado. Algunas características pueden no estar disponibles."
16
 Auth.LoadingChannel.Title="Cargando información del canal..."
17
 Auth.LoadingChannel.Text="Cargando información del canal para %1, por favor espere..."
18
 Auth.ChannelFailure.Title="Error al cargar canal"
19
@@ -103,6 +105,8 @@
20
 Auth.StreamInfo="Información de Stream"
21
 TwitchAuth.Stats="Estadísticas de Twitch"
22
 TwitchAuth.Feed="Fuente de actividades de Twitch"
23
+TwitchAuth.TwoFactorFail.Title="No se pudo obtener la clave de transmisión"
24
+TwitchAuth.TwoFactorFail.Text="OBS no pudo conectarse a su cuenta de Twitch. Por favor, asegúrese de que la autenticación en dos pasos está configurada en su configuración de seguridad <a href='https://www.twitch.tv/settings/security'>Configuración de seguridad de Twitch</a> ya que esto es necesario para transmitir."
25
 
26
 Copy.Filters="Copiar filtros"
27
 Paste.Filters="Pegar filtros"
28
@@ -117,7 +121,7 @@
29
 BandwidthTest.Region.Other="Otros"
30
 
31
 Basic.FirstStartup.RunWizard="¿Deseas ejecutar el asistente de configuración automática? También puedes configurar tus ajustes manualmente al hacer clic en el botón \"Configuración\" de la ventana principal."
32
-Basic.FirstStartup.RunWizard.NoClicked="Si cambias tu mente, puede ejecutar al asistente de configuración automática cualquier momento desde el menú \"Herramientas\"."
33
+Basic.FirstStartup.RunWizard.NoClicked="Si cambia de opinión, puede ejecutar al asistente de configuración automática en cualquier momento desde el menú \"Herramientas\"."
34
 
35
 Basic.AutoConfig="Asistente de configuración automática"
36
 Basic.AutoConfig.ApplySettings="Aplicar configuración"
37
@@ -173,7 +177,7 @@
38
 Basic.Stats.HDDSpaceAvailable="Espacio en disco disponible"
39
 Basic.Stats.MemoryUsage="Uso de memoria"
40
 Basic.Stats.AverageTimeToRender="Tiempo de media para procesar un fotograma"
41
-Basic.Stats.SkippedFrames="Fotogramas saltados por retraso de procesamiento"
42
+Basic.Stats.SkippedFrames="Fotogramas omitidos por retraso en la codificación"
43
 Basic.Stats.MissedFrames="Fotogramas perdidos por retraso de procesamiento"
44
 Basic.Stats.Output.Stream="Transmisión"
45
 Basic.Stats.Output.Recording="Grabación"
46
@@ -185,9 +189,10 @@
47
 Basic.Stats.DroppedFrames="Fotogramas Perdidos (Red)"
48
 Basic.Stats.MegabytesSent="Salida de datos total"
49
 Basic.Stats.Bitrate="Bitrate"
50
+Basic.Stats.DiskFullIn="Disco lleno en (aprox.)"
51
 
52
 ResetUIWarning.Title="¿Está seguro de que desea restablecer la interfáz?"
53
-ResetUIWarning.Text="Restablecer la interfáz ocultará los docks adicionales. Necesitarás eliminar estos docks del menú de vista si quieres que sean visibles.\n\n¿Estás seguro de que quieres restablecer la interfáz?"
54
+ResetUIWarning.Text="Restablecer la interfaz ocultará los docks adicionales. Necesitarás eliminar estos docks del menú de vista si quieres que sean visibles.\n\n¿Estás seguro de que quieres restablecer la interfaz?"
55
 
56
 Updater.Title="Nueva actualización disponible"
57
 Updater.Text="Hay una nueva versión disponible:"
58
@@ -200,14 +205,14 @@
59
 Updater.NoUpdatesAvailable.Text="No hay actualizaciones disponibles actualmente"
60
 Updater.FailedToLaunch="No se pudo iniciar el actualizador"
61
 Updater.GameCaptureActive.Title="Captura de juego activa"
62
-Updater.GameCaptureActive.Text="La libreria de captura de juegos esta actualmente en uso. Por favor, cierra cualquier juego/programa que este siendo capturado (o reinicia windows) e intentalo de nuevo."
63
+Updater.GameCaptureActive.Text="La biblioteca de captura de juegos está actualmente en uso. Cierre los juegos o programas que se capturan (o reinicie Windows) e inténtelo de nuevo."
64
 
65
-QuickTransitions.SwapScenes="Cambiar vista previa y salida escenas después de la transición"
66
-QuickTransitions.SwapScenesTT="Cambia la vista previa y salida escenas después de la transición (si todavía existe la escena original de la salida). \nEsto no deshará cualquier cambio que pueda haber hecho a la escena original de la salida."
67
+QuickTransitions.SwapScenes="Cambiar las escenas Vista previa/Programa después de la transición"
68
+QuickTransitions.SwapScenesTT="Intercambia las escenas vista previa y programa después de la transición (si todavía existe la escena original de programa).\nEsto no deshará cualquier cambio que pueda haber hecho a la escena original de programa."
69
 QuickTransitions.DuplicateScene="Duplicar escena"
70
-QuickTransitions.DuplicateSceneTT="Al editar la misma escena, permite editar la transformación/visibilidad de las fuentes sin modificar la salida. \nPara editar propiedades de fuentes sin modificar la salida, habilita 'Duplicar fuentes'. \n Cambiando este valor restablecerá la escena actual de salida (si todavía existe)."
71
+QuickTransitions.DuplicateSceneTT="Al editar la misma escena, permite editar la transformación/visibilidad de las fuentes sin modificar la salida.\nPara editar propiedades de fuentes sin modificar la salida, habilita 'Duplicar fuentes'.\nCambiando este valor restablecerá la escena actual de salida (si todavía existe)."
72
 QuickTransitions.EditProperties="Duplicar fuentes"
73
-QuickTransitions.EditPropertiesTT="Al editar la misma escena, permite editar propiedades de fuentes sin modificar la salida.\n Esto sólo se puede utilizar si está activado 'Duplicar escena'.\nCiertas fuentes (de captura o multimedia) no son compatibles y no se pueden editar por separado.\nCambiando este valor restablecerá la escena actual de salida (si todavía existe).\n\nAdvertencia: debido a que las fuentes se duplicarán, esto puede requerir recursos adicionales del sistema o de vídeo."
74
+QuickTransitions.EditPropertiesTT="Al editar la misma escena, permite editar propiedades de fuentes sin modificar la salida.\nEsto sólo se puede utilizar si está activado 'Duplicar escena'.\nCiertas fuentes (de captura o multimedia) no son compatibles y no se pueden editar por separado.\nCambiando este valor restablecerá la escena actual de salida (si todavía existe).\n\nAdvertencia: Debido a que las fuentes se duplicarán, esto puede requerir recursos adicionales del sistema o de vídeo."
75
 QuickTransitions.HotkeyName="Transición Rápida: %1"
76
 
77
 Basic.AddTransition="Añadir transición configurable"
78
@@ -250,24 +255,29 @@
79
 Output.StartReplayFailed="No se pudo iniciar el buffer de replay"
80
 Output.StartFailedGeneric="No se pudo iniciar la salida. Por favor compruebe los logs para mas detalles. \n\nNota: Si estas usando los codificadores de NVENC o AMD, asegúrate que tus drivers de vídeo están actualizados."
81
 
82
+
83
 Output.ConnectFail.Title="Error al conectarse"
84
-Output.ConnectFail.BadPath="URL ruta de acceso o conexión no válida.  Por favor, compruebe su configuración para confirmar que está correcta."
85
+Output.ConnectFail.BadPath="URL ruta de acceso o conexión no válida. Por favor, compruebe su configuración para confirmar que está correcta."
86
 Output.ConnectFail.ConnectFailed="No se pudo conectar al servidor"
87
 Output.ConnectFail.InvalidStream="No se pudo acceder al canal especificado o clave de transmisión, por favor compruebe su clave de transmisión. Si es correcta, puede haber un problema al conectar al servidor."
88
-Output.ConnectFail.Error="Se ha producido un error inesperado al intentar conectar con el servidor.  Más información en el archivo de registro."
89
+Output.ConnectFail.Error="Se ha producido un error inesperado al intentar conectar con el servidor. Más información en el archivo de registro."
90
 Output.ConnectFail.Disconnected="Desconectado del servidor."
91
 
92
+Output.StreamEncodeError.Title="Error de codificación"
93
+Output.StreamEncodeError.Msg="Un error de codificación se produjo durante el Streaming."
94
+
95
 Output.RecordFail.Title="No se pudo iniciar grabación"
96
 Output.RecordFail.Unsupported="El formato de salida no está soportado o no soporta más de una pista de audio. Por favor, comprueba tus ajustes e inténtalo de nuevo."
97
 Output.RecordNoSpace.Title="No hay suficiente espacio en disco"
98
 Output.RecordNoSpace.Msg="No hay suficiente espacio en disco para continuar grabando."
99
 Output.RecordError.Title="Error en la grabación"
100
 Output.RecordError.Msg="Se ha producido un error no especificado durante la grabación."
101
+Output.RecordError.EncodeErrorMsg="Un error de codificación se produjo mientras se grababa."
102
 Output.ReplayBuffer.NoHotkey.Title="¡Sin tecla de acceso rápido!"
103
 Output.ReplayBuffer.NoHotkey.Msg="Sin tecla de acceso rápido establecida para el búfer de reproducción. Configure la tecla de acceso \"Guardar\" para guardar las grabaciones de reproducción."
104
 
105
 Output.BadPath.Title="Ruta de archivo incorrecta"
106
-Output.BadPath.Text="La ruta de salida de archivos establecida no es válida.  Por favor, compruebe su configuración para confirmar que se ha establecido una ruta de archivos válida."
107
+Output.BadPath.Text="La ruta de salida de archivos establecida no es válida. Por favor, compruebe su configuración para confirmar que se ha establecido una ruta de archivos válida."
108
 
109
 LogReturnDialog="Carga de registro exitosa"
110
 LogReturnDialog.CopyURL="Copiar dirección URL"
111
@@ -292,7 +302,7 @@
112
 Remux.HelpText="Suelta los archivos en esta ventana para convertirlos, o selecciona una celda vacía \"OBS Recording\" para buscar un archivo."
113
 
114
 UpdateAvailable="Nueva actualización disponible"
115
-UpdateAvailable.Text="Versión %1.%2.%3 disponible.  <a href='%4'> Haga clic aquí para descargarla</a>"
116
+UpdateAvailable.Text="Versión %1.%2.%3 disponible. <a href='%4'> Haga clic aquí para descargarla</a>"
117
 
118
 Basic.DesktopDevice1="Audio del escritorio"
119
 Basic.DesktopDevice2="Audio del escritorio 2"
120
@@ -306,6 +316,8 @@
121
 
122
 Basic.Main.PreviewConextMenu.Enable="Habilitar previsualización"
123
 
124
+Basic.Main.Preview.Disable="Deshabilitar previsualización"
125
+
126
 ScaleFiltering="Escala de filtrado"
127
 ScaleFiltering.Point="Punto"
128
 ScaleFiltering.Bilinear="Bilineal"
129
@@ -476,6 +488,8 @@
130
 Basic.MainMenu.Edit.Transform.FitToScreen="Ajustar a la pantalla (&F)"
131
 Basic.MainMenu.Edit.Transform.StretchToScreen="E&stirar a la pantalla"
132
 Basic.MainMenu.Edit.Transform.CenterToScreen="&Centrar en la pantalla"
133
+Basic.MainMenu.Edit.Transform.VerticalCenter="Centrar Verticalmente"
134
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Centrar Horizontalmente"
135
 Basic.MainMenu.Edit.Order="&Ordenar"
136
 Basic.MainMenu.Edit.Order.MoveUp="Mover arriba (&U)"
137
 Basic.MainMenu.Edit.Order.MoveDown="Mover abajo (&D)"
138
@@ -521,7 +535,7 @@
139
 
140
 Basic.Settings.ProgramRestart="El programa debe reiniciarse para que esta configuración surta efecto."
141
 Basic.Settings.ConfirmTitle="Confirmar cambios"
142
-Basic.Settings.Confirm="Hay cambios sin guardar.  ¿Guardar los cambios?"
143
+Basic.Settings.Confirm="Hay cambios sin guardar. ¿Guardar los cambios?"
144
 
145
 Basic.Settings.General="General"
146
 Basic.Settings.General.Theme="Tema"
147
@@ -595,10 +609,10 @@
148
 Basic.Settings.Output.Simple.RecordingQuality.Small="Alta calidad, tamaño de archivo medio"
149
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Tamaño de archivo grande, calidad indistinguible"
150
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Tamaño del archivo sin pérdida de calidad, tremendamente grande"
151
-Basic.Settings.Output.Simple.Warn.VideoBitrate="ADVERTENCIA: El streaming de vídeo se establecerá a %1, que es el límite superior para el servicio de streaming actual.  Si estás seguro que quieres ir por encima de %1, active las opciones avanzadas del codificador y desactive \"Forzar limites de bitrate en el servicio de streaming\"."
152
-Basic.Settings.Output.Simple.Warn.AudioBitrate="ADVERTENCIA: El streaming de audio se establecerá a %1, que es el límite superior para el servicio de streaming actual.  Si estás seguro que quieres ir por encima de %1, active las opciones avanzadas del codificador y desactive \"Forzar limites de bitrate en el servicio de streaming\"."
153
+Basic.Settings.Output.Simple.Warn.VideoBitrate="ADVERTENCIA: El streaming de vídeo se establecerá a %1, que es el límite superior para el servicio de streaming actual. Si estás seguro que quieres ir por encima de %1, active las opciones avanzadas del codificador y desactive \"Forzar limites de bitrate en el servicio de streaming\"."
154
+Basic.Settings.Output.Simple.Warn.AudioBitrate="ADVERTENCIA: El streaming de audio se establecerá a %1, que es el límite superior para el servicio de streaming actual. Si estás seguro que quieres ir por encima de %1, active las opciones avanzadas del codificador y desactive \"Forzar limites de bitrate en el servicio de streaming\"."
155
 Basic.Settings.Output.Simple.Warn.Encoder="ADVERTENCIA: Grabar con un codificador de software de una calidad diferente a la de la transmisión requerirá un uso adicional de la CPU si transmite y graba al mismo tiempo."
156
-Basic.Settings.Output.Simple.Warn.Lossless="ADVERTENCIA: ¡La calidad sin perdidas genera tamaños de archivo muy grandes!  La calidad sin pérdidas puede utilizar más de 7 gigabytes de espacio en disco por minuto en alta resolución y con alta tasa de fotogramas.  La calidad sin pérdidas no se recomienda para grabaciones largas, a menos que tenga una gran cantidad de espacio en disco disponible."
157
+Basic.Settings.Output.Simple.Warn.Lossless="ADVERTENCIA: ¡La calidad sin perdidas genera tamaños de archivo muy grandes! La calidad sin pérdidas puede utilizar más de 7 gigabytes de espacio en disco por minuto en alta resolución y con alta tasa de fotogramas. La calidad sin pérdidas no se recomienda para grabaciones largas, a menos que tenga una gran cantidad de espacio en disco disponible."
158
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="¿Confirma que desea utilizar calidad sin perdidas?"
159
 Basic.Settings.Output.Simple.Warn.Lossless.Title="¡Atención de calidad sin pérdidas!"
160
 Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
161
@@ -674,8 +688,8 @@
162
 Basic.Settings.Video.Numerator="Numerador"
163
 Basic.Settings.Video.Denominator="Denominador"
164
 Basic.Settings.Video.Renderer="Renderizador"
165
-Basic.Settings.Video.InvalidResolution="Valor de la resolución no válido.  Debe ser [ancho] x [altura] (por ejemplo, 1920 x 1080)"
166
-Basic.Settings.Video.CurrentlyActive="La salida de vídeo está actualmente activa.  Por favor apague cualquier salida para cambiar la configuración de vídeo."
167
+Basic.Settings.Video.InvalidResolution="Valor de la resolución no válido. Debe ser [ancho] x [altura] (por ejemplo, 1920 x 1080)"
168
+Basic.Settings.Video.CurrentlyActive="La salida de vídeo está actualmente activa. Por favor apague cualquier salida para cambiar la configuración de vídeo."
169
 Basic.Settings.Video.DisableAero="Deshabilitar Aero"
170
 
171
 Basic.Settings.Video.DownscaleFilter.Bilinear="Bilineal (más rápido, pero borroso si se escala la imagen)"
172
@@ -685,7 +699,8 @@
173
 Basic.Settings.Audio="Audio"
174
 Basic.Settings.Audio.SampleRate="Frecuencia de muestreo"
175
 Basic.Settings.Audio.Channels="Canales"
176
-Basic.Settings.Audio.MeterDecayRate="Tasa de decaimiento del medidor de audio"
177
+Basic.Settings.Audio.Meters="Medidores"
178
+Basic.Settings.Audio.MeterDecayRate="Velocidad de descomposición"
179
 Basic.Settings.Audio.MeterDecayRate.Fast="Rápida"
180
 Basic.Settings.Audio.MeterDecayRate.Medium="Media (PPM de tipo I)"
181
 Basic.Settings.Audio.MeterDecayRate.Slow="Lenta (PPM de tipo II)"
182
@@ -696,8 +711,9 @@
183
 Basic.Settings.Audio.MultichannelWarning="Si se está transmitiendo, compruebe si su servicio de transmisión admite la ingesta de sonido envolvente y la reproducción de sonido envolvente. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast son ejemplos en los que el sonido envolvente es totalmente compatible. Aunque Facebook Live y YouTube Live aceptan la ingesta surround, Facebook Live mezcla a estéreo y YouTube Live solo reproduce dos canales.\n\nLos filtros de audio OBS son compatibles con sonido envolvente, aunque no se garantiza el soporte de complementos VST."
184
 Basic.Settings.Audio.MultichannelWarning.Title="¿Habilitar el audio de sonido envolvente?"
185
 Basic.Settings.Audio.MultichannelWarning.Confirm="¿Seguro que quiere habilitar el audio de sonido envolvente?"
186
-Basic.Settings.Audio.DesktopDevice="Dispositivo de audio de escritorio"
187
-Basic.Settings.Audio.DesktopDevice2="Dispositivo de audio de escritorio 2"
188
+Basic.Settings.Audio.Devices="Dispositivos"
189
+Basic.Settings.Audio.DesktopDevice="Audio del escritorio"
190
+Basic.Settings.Audio.DesktopDevice2="Audio del escritorio 2"
191
 Basic.Settings.Audio.AuxDevice="Dispositivo de audio Mic/auxiliar"
192
 Basic.Settings.Audio.AuxDevice2="Dispositivo de audio Mic/auxiliar 2"
193
 Basic.Settings.Audio.AuxDevice3="Dispositivo de audio Mic/auxiliar 3"
194
@@ -716,11 +732,11 @@
195
 Basic.Settings.Advanced.General.ProcessPriority.Normal="Normal"
196
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Por debajo de lo normal"
197
 Basic.Settings.Advanced.General.ProcessPriority.Idle="Inactiva"
198
-Basic.Settings.Advanced.FormatWarning="ADVERTENCIA: Formatos de Color que no sean NV12 están diseñados principalmente para la grabación y no se recomiendan al retransmitir.  La retransmisión puede incurrir en mayor uso de la CPU debido a la conversión de formato de color."
199
+Basic.Settings.Advanced.FormatWarning="ADVERTENCIA: Formatos de Color que no sean NV12 están diseñados principalmente para la grabación y no se recomiendan al retransmitir. La retransmisión puede incurrir en mayor uso de la CPU debido a la conversión de formato de color."
200
 Basic.Settings.Advanced.Audio.BufferingTime="Tiempo de búfer de audio"
201
 Basic.Settings.Advanced.Video.ColorFormat="Formato de color"
202
-Basic.Settings.Advanced.Video.ColorSpace="Espacio de color YUV"
203
-Basic.Settings.Advanced.Video.ColorRange="Gama de Color YUV"
204
+Basic.Settings.Advanced.Video.ColorSpace="Espacio de color"
205
+Basic.Settings.Advanced.Video.ColorRange="Gama de colores"
206
 Basic.Settings.Advanced.Video.ColorRange.Partial="Parcial"
207
 Basic.Settings.Advanced.Video.ColorRange.Full="Completo"
208
 Basic.Settings.Advanced.Audio.MonitoringDevice="Dispositivo de monitorización de audio"
209
@@ -740,7 +756,7 @@
210
 
211
 Basic.AdvAudio="Propiedades de Audio avanzadas"
212
 Basic.AdvAudio.Name="Nombre"
213
-Basic.AdvAudio.Volume="Volumen (%)"
214
+Basic.AdvAudio.Volume="Volumen"
215
 Basic.AdvAudio.Mono="Remezclar a Mono"
216
 Basic.AdvAudio.Balance="Balance"
217
 Basic.AdvAudio.SyncOffset="Sincronización Offset (ms)"
218
@@ -816,6 +832,7 @@
219
 NoSources.Title="Sin recursos"
220
 NoSources.Text="Parece que no has añadido ningún recurso de vídeo aún, así que estarás emitiendo una pantalla en blanco. ¿Estás seguro de que quieres hacer esto?"
221
 NoSources.Text.AddSource="Puedes añadir recursos haciendo click en el icono de \"+\" debajo del menú Recursos en la ventana principal en cualquier momento."
222
+NoSources.Label="No tienes ninguna fuente.\nHaz clic en el botón +,\no haz clic derecho aquí para añadir una."
223
 
224
 ChangeBG="Establecer color"
225
 CustomColor="Color personalizado"
226
@@ -834,3 +851,5 @@
227
 ResizeOutputSizeOfSource.Text="La resolución base y de salida serán ajustadas al tamaño de la fuente actual."
228
 ResizeOutputSizeOfSource.Continue="¿Quieres continuar?"
229
 
230
+PreviewTransition="Vista previa de la Transición"
231
+
232
obs-studio-23.1.0.tar.xz/UI/data/locale/et-EE.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/et-EE.ini Changed
91
 
1
@@ -143,10 +143,12 @@
2
 Output.StartStreamFailed="Voogedastuse alustamine nurjus"
3
 Output.StartRecordingFailed="Salvestamise alustamine nurjus"
4
 
5
+
6
 Output.ConnectFail.Title="Ühendamine ei õnnestunud"
7
 Output.ConnectFail.BadPath="Vigane rada või ühenduse URL. Palun veendu, et valitud sätted on õiged."
8
 Output.ConnectFail.ConnectFailed="Serveriga ühendamine ebaõnnestus"
9
 
10
+
11
 Output.RecordFail.Title="Salvestamise alustamine nurjus"
12
 Output.RecordNoSpace.Title="Kettaruumi pole piisavalt"
13
 Output.RecordNoSpace.Msg="Pole piisavalt kettaruumi, et jätkata salvestamist."
14
@@ -173,7 +175,7 @@
15
 Remux.ExitUnfinished="Kodeerimine ei ole veel lõpetatud. Kui kodeerimine peatada, siis võib sihtfail olla kasutuskõlbmatu.\nKas soovid kindlasti kodeerimise peatada?"
16
 
17
 UpdateAvailable="Värskendus on saadaval"
18
-UpdateAvailable.Text="Saadaval on version %1.%2.%3.  <a href='%4'>Allalaadimiseks vajuta siia</a>"
19
+UpdateAvailable.Text="Saadaval on version %1.%2.%3. <a href='%4'>Allalaadimiseks vajuta siia</a>"
20
 
21
 Basic.DesktopDevice1="Töölaua heli"
22
 Basic.DesktopDevice2="Töölaua heli 2"
23
@@ -187,6 +189,7 @@
24
 
25
 Basic.Main.PreviewConextMenu.Enable="Lülita eelvaade sisse"
26
 
27
+
28
 ScaleFiltering.Point="Punkt"
29
 
30
 Deinterlacing.Retro="Retro"
31
@@ -222,7 +225,7 @@
32
 Basic.PropertiesWindow="'%1' omadused"
33
 Basic.PropertiesWindow.SelectColor="Vali värv"
34
 Basic.PropertiesWindow.SelectFont="Vali font"
35
-Basic.PropertiesWindow.Confirm="On salvestamata muutusi.  Kas soovite neid säilitada?"
36
+Basic.PropertiesWindow.Confirm="On salvestamata muutusi. Kas soovite neid säilitada?"
37
 Basic.PropertiesWindow.AddFiles="Lisa failid"
38
 Basic.PropertiesWindow.AddDir="Lisa kataloog"
39
 Basic.PropertiesWindow.AddURL="Lisa tee/URL"
40
@@ -332,7 +335,7 @@
41
 
42
 Basic.Settings.ProgramRestart="Nende sätete jõustumiseks tuleb taaskäivitada programm."
43
 Basic.Settings.ConfirmTitle="Kinnita muudatused"
44
-Basic.Settings.Confirm="Teil on salvestamata muutusi.  Salvestame muudatused?"
45
+Basic.Settings.Confirm="Teil on salvestamata muutusi. Salvestame muudatused?"
46
 
47
 Basic.Settings.General="Üldine"
48
 Basic.Settings.General.Theme="Teema"
49
@@ -355,9 +358,9 @@
50
 Basic.Settings.Output.Mode.Simple="Lihtne"
51
 Basic.Settings.Output.Mode.Adv="Täpsemad seaded"
52
 Basic.Settings.Output.Mode.FFmpeg="FFmpeg väljund"
53
-Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Ei saa hinnata mälukasutust.  Palun määrake maksimaalne piir."
54
+Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Ei saa hinnata mälukasutust. Palun määrake maksimaalne piir."
55
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Kadudeta kvaliteet, tohutult suur failimaht"
56
-Basic.Settings.Output.Simple.Warn.Lossless="Hoiatus: Kadudeta kvaliteet tekitab tohutult suuri faile!  Kadudeta kvaliteet võib kasutada kuni 7 Gb kettaruumi minuti kohta, kõrge eraldusvõime ja kaadrisagedusega.  Kadudeta kvaliteeti ei ole soovitatav kasutada pikkade salvestiste jaoks, kui teil just ei ole väga palju vaba kettaruumi."
57
+Basic.Settings.Output.Simple.Warn.Lossless="Hoiatus: Kadudeta kvaliteet tekitab tohutult suuri faile! Kadudeta kvaliteet võib kasutada kuni 7 Gb kettaruumi minuti kohta, kõrge eraldusvõime ja kaadrisagedusega. Kadudeta kvaliteeti ei ole soovitatav kasutada pikkade salvestiste jaoks, kui teil just ei ole väga palju vaba kettaruumi."
58
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Kas soovite kindlasti kasutada kadudeta kvaliteeti?"
59
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Kadudeta kvaliteedi hoiatus!"
60
 Basic.Settings.Output.Simple.Encoder.Software="Tarkvara (x264)"
61
@@ -416,8 +419,6 @@
62
 
63
 Basic.Settings.Audio="Heli"
64
 Basic.Settings.Audio.Channels="Kanalid"
65
-Basic.Settings.Audio.DesktopDevice="Töölaua heliseade"
66
-Basic.Settings.Audio.DesktopDevice2="Töölaua heliseade 2"
67
 Basic.Settings.Audio.UnknownAudioDevice="[Seade ühendamata või pole saadaval]"
68
 
69
 Basic.Settings.Advanced.General.ProcessPriority.High="Kõrge"
70
@@ -425,7 +426,6 @@
71
 Basic.Settings.Advanced.General.ProcessPriority.Normal="Normaalne"
72
 Basic.Settings.Advanced.General.ProcessPriority.Idle="Tegevusetu"
73
 Basic.Settings.Advanced.Video.ColorFormat="Värvi formaat"
74
-Basic.Settings.Advanced.Video.ColorRange="YUV värviruumi vahemik"
75
 Basic.Settings.Advanced.Video.ColorRange.Partial="Osaline"
76
 Basic.Settings.Advanced.Video.ColorRange.Full="Täielik"
77
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Vaikeseade"
78
@@ -436,7 +436,6 @@
79
 Basic.Settings.Advanced.Network.EnableLowLatencyMode="Madal-viivitus režiim"
80
 
81
 Basic.AdvAudio.Name="Nimi"
82
-Basic.AdvAudio.Volume="Helitugevus (%)"
83
 Basic.AdvAudio.Monitoring.None="Välja lülitatud"
84
 Basic.AdvAudio.AudioTracks="Rajad"
85
 
86
@@ -475,3 +474,4 @@
87
 
88
 
89
 
90
+
91
obs-studio-23.1.0.tar.xz/UI/data/locale/eu-ES.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/eu-ES.ini Changed
237
 
1
@@ -33,7 +33,7 @@
2
 SceneProjector="Pantaila osoko proiektorea (eszena)"
3
 SourceProjector="Pantaila osoko proiektorea (iturburua)"
4
 StudioProgramWindow="Leihoko proiektorea (programa)"
5
-PreviewWindow="Leihodun proiektorea (aurrebista)"
6
+PreviewWindow="Leiho proiektorea (aurrebista)"
7
 SceneWindow="Leihodun proiektorea (Eszena)"
8
 SourceWindow="Leihodun proiektorea (iturburua)"
9
 MultiviewProjector="Ikuspegi anitza (pantaila osoan)"
10
@@ -75,12 +75,14 @@
11
 HideMixer="Ezkutatu nahasgailuan"
12
 TransitionOverride="Trantsizio mota"
13
 None="Gabe"
14
-StudioMode.Preview="Aurreikusi"
15
+StudioMode.Preview="Aurrebista"
16
 StudioMode.Program="Programa"
17
 ShowInMultiview="Erakutsi ikuspegi anitzean"
18
 VerticalLayout="Diseinu bertikala"
19
 Group="Taldea"
20
 DoNotShowAgain="Ez erakutsi berriro"
21
+Default="(Lehenetsia)"
22
+Calculating="Kalkulatzen..."
23
 
24
 AlreadyRunning.Title="OBS dagoeneko martxan dago"
25
 AlreadyRunning.Text="OBS dagoeneko martxan dago! Bestelakorik nahi ez baduzu Itxi irekita dagoen saioa beste saio bat ireki baino lehen. Ezarri baduzu OBS agertzea minimizatua sistemaren erretiluan begiratu eta oraindik exekutatzen ari den bertan."
26
@@ -89,20 +91,28 @@
27
 DockCloseWarning.Title="Leiho moldagarria ixten"
28
 DockCloseWarning.Text="Leiho moldagarri bat itxi berri duzu. Berriro bistaratu nahi baduzu, erabili menu barrako Ikusi → Leiho moldagarriak menua."
29
 
30
+Auth.Authing.Title="Egiaztatzen..."
31
+Auth.Authing.Text="%1(r) ekin egiaztatzen, itxaron..."
32
 Auth.AuthFailure.Title="Autentifikazioak huts egin du"
33
 Auth.AuthFailure.Text="Huts egin du %1:\n\n%2: %3 bidezko autentifikazioa"
34
 Auth.InvalidScope.Title="Autentifikazioa derrigorrezkoa"
35
 Auth.InvalidScope.Text="%1 autentifikatzeko eskakizunak aldatu dira. Eginbide batzuk ezingo dira erabili."
36
+Auth.LoadingChannel.Title="Kanalaren informazioa kargatzen..."
37
+Auth.LoadingChannel.Text="1% (e) tik kanalaren informazioa kargatzen, itxaron..."
38
 Auth.ChannelFailure.Title="Huts egin du kanala kargatzen"
39
 Auth.ChannelFailure.Text="Huts egin du %1\n\n%2: %3 kanalaren informazioa kargatzen"
40
 Auth.Chat="Txata"
41
 Auth.StreamInfo="Transmisioaren informazioa"
42
 TwitchAuth.Stats="Twitch-estatistikak"
43
 TwitchAuth.Feed="Twich aktibitateen jarioa"
44
+TwitchAuth.TwoFactorFail.Title="Ezin izan da transmisioaren gakoa galdetu"
45
+TwitchAuth.TwoFactorFail.Text="OBS-ek ez du lortu konektatzea zure Twitch kontuarekin. Egiazta ezazu bi urratsetako identifikazioa ezarrita dagoela zure <a href='https://www.twitch.tv/settings/security'>Twitch-eko segurtasun ezarpenetan</a> transmisiorako beharrezkoa da eta."
46
 
47
 Copy.Filters="Kopiatu iragazkiak"
48
 Paste.Filters="Itsatsi iragazkiak"
49
 
50
+BrowserPanelInit.Title="Nabigatzailea irekitzen..."
51
+BrowserPanelInit.Text="Nabigatzailea irekitzen, itxaron..."
52
 
53
 BandwidthTest.Region="Eskualdea"
54
 BandwidthTest.Region.US="Estatu Batuak"
55
@@ -179,6 +189,7 @@
56
 Basic.Stats.DroppedFrames="Jaregindako fotogramak (Sarean)"
57
 Basic.Stats.MegabytesSent="Datu irteera denetara"
58
 Basic.Stats.Bitrate="Bit-emaria"
59
+Basic.Stats.DiskFullIn="Disko betea (gutxi gora behera)"
60
 
61
 ResetUIWarning.Title="Ziur zaude interfaze grafikoa berrabiarazi nahi duzula?"
62
 ResetUIWarning.Text="Interfaze grafikoa berrezartzeak ezkuta ditzake atrake gehigarriak. Atrakeak bistaratu nahi baduzu menuko Ikusi atalean agerrarazi beharko dituzu.\n\nZiur zaude interfaze grafikoa berrezarri nahi duzula?"
63
@@ -194,7 +205,7 @@
64
 Updater.NoUpdatesAvailable.Text="Une honetan ez dago eguneraketarik eskuragarri"
65
 Updater.FailedToLaunch="Huts egin du eguneratzailea abiarazten"
66
 Updater.GameCaptureActive.Title="Jolasen kaptura aktiboa"
67
-Updater.GameCaptureActive.Text="Jolasen kapturaren liburutegia erabiltzen ari da. Itxi kapturatzen ari den  jolasa/programa (edo berrabiarazi Windows) eta saiatu berriro."
68
+Updater.GameCaptureActive.Text="Jolasen kapturaren liburutegia erabiltzen ari da. Itxi kapturatzen ari den jolasa/programa (edo berrabiarazi Windows) eta saiatu berriro."
69
 
70
 QuickTransitions.SwapScenes="Trukatu Aurrebista/Irteera-eszenak trantsizioen ondoren"
71
 QuickTransitions.SwapScenesTT="Trukatu aurrebistak eta irteera-eszenak trantsizioen ondoren (baldin eta irteerakoaren jatorrizkoa eszena badago).\n Honek ez du desegingo irteerakoaren jatorrizko eszenari egindako aldaketak."
72
@@ -233,7 +244,7 @@
73
 ConfirmBWTest.Text="OBS banda zabalera azterketa moduan duzu konfiguratua. Modu honek sareko azterketak egiteko aukera ematen du zure kanala aktibatu gabe. Behin azterketa egin ondoren, desaktibatu behar duzu ikusleek zure transmisioa ikus dezaten.\n\nJarraitu nahi duzu?"
74
 
75
 ConfirmExit.Title="Irten OBS-tik?"
76
-ConfirmExit.Text="OBS jardunean dago. Transmisio/grabazio guztiak itzaliko dira.  Ziur zaude irten nahi duzula?"
77
+ConfirmExit.Text="OBS jardunean dago. Transmisio/grabazio guztiak itzaliko dira. Ziur zaude irten nahi duzula?"
78
 
79
 ConfirmRemove.Title="Baieztatu kentzea"
80
 ConfirmRemove.Text="Ziur zaude '$1' kendu nahi duzula?"
81
@@ -244,6 +255,7 @@
82
 Output.StartReplayFailed="Huts egin du erreprodukzio bufferrak"
83
 Output.StartFailedGeneric="Huts egin du irteeraren abioak. Begiratu erregistroa zehaztasunak ikusteko.\n\nOharra: NVENC edo AMD kodetzaileak erabiltzen ari bazara segurtatu haien kontrolatzaileak eguneratuta daudela."
84
 
85
+
86
 Output.ConnectFail.Title="Huts egin du konektatzean"
87
 Output.ConnectFail.BadPath="Helburu edo konexio-URL okerra. Egiaztatu zure ezarpenak baliozkoak direla baieztatzeko."
88
 Output.ConnectFail.ConnectFailed="Huts egin du zerbitzariarekin konektatzean"
89
@@ -251,14 +263,18 @@
90
 Output.ConnectFail.Error="Ustekabeko akats bat gertatu da zerbitzariarekin konektatzen saiatzerakoan. Argibide gehiago egunkari-fitxategian."
91
 Output.ConnectFail.Disconnected="Zerbitzaritik deskonektatuta."
92
 
93
+Output.StreamEncodeError.Title="Kodeketa errorea"
94
+Output.StreamEncodeError.Msg="Kodetzailearen errore bat gertatu da transmititzean."
95
+
96
 Output.RecordFail.Title="Huts egin du grabazioa hastean"
97
 Output.RecordFail.Unsupported="Irteera formatua ez da onartzen edo ez du audio pista bat baino gehiago onartzen. Egiaztatu zure ezarpenak eta saiatu berriro."
98
 Output.RecordNoSpace.Title="Ez dago nahiko tokirik diskoan"
99
 Output.RecordNoSpace.Msg="Ez dago nahikoa tokirik diskoan grabatzen jarraitzeko."
100
 Output.RecordError.Title="Grabazio akatsa"
101
 Output.RecordError.Msg="Zehaztugabeko akats bat gertatu da grabatzerakoan."
102
+Output.RecordError.EncodeErrorMsg="Kodetzailearen errore bat gertatu da grabatzean."
103
 Output.ReplayBuffer.NoHotkey.Title="Laster tekla ezarri gabe!"
104
-Output.ReplayBuffer.NoHotkey.Msg="Ez da ezarri gordetzeko laster teklarik erreprodukzio bufferrerako. Ezarri \"Gorde\" laster tekla  erreprodukzio bufferrak gordetzeko."
105
+Output.ReplayBuffer.NoHotkey.Msg="Ez da ezarri gordetzeko laster teklarik erreprodukzio bufferrerako. Ezarri \"Gorde\" laster tekla erreprodukzio bufferrak gordetzeko."
106
 
107
 Output.BadPath.Title="Fitxategi-bide okerra"
108
 Output.BadPath.Text="Ezarritako fitxategiaren irteera-bidea baliogabea da. Egiaztatu zure ezarpenak baieztatzeko baliozko fitxategi-bidea ezarri dela."
109
@@ -277,6 +293,8 @@
110
 Remux.FinishedTitle="Bihurketa amaituta"
111
 Remux.Finished="Grabazioa bihurtuta"
112
 Remux.FinishedError="Grabazioa bihurtua, baina fitxategia osatu gabe egon daiteke"
113
+Remux.SelectRecording="OBS grabazio modua aukeratu..."
114
+Remux.SelectTarget="Helburu-fitxategia aukeratu..."
115
 Remux.FileExistsTitle="Helburu-fitxategiak badaude"
116
 Remux.FileExists="Dagoeneko ondorengo helburu-fitxategiak existitzen dira. Ordezkatu nahi dituzu?"
117
 Remux.ExitUnfinishedTitle="Multiplexazioa martxan"
118
@@ -284,7 +302,7 @@
119
 Remux.HelpText="Jaregin itzazu fitxategiak leiho honetan aldatzeko, edo hauta ezazu \"OBS Grabazioa\"-gelaxka huts bat fitxategia arakatzeko."
120
 
121
 UpdateAvailable="Eguneraketa eskuragarria"
122
-UpdateAvailable.Text="%1.%2.%3 bertsioa eskuragarri dago.  <a href='%4'>Klikatu hemen deskargatzeko</a>"
123
+UpdateAvailable.Text="%1.%2.%3 bertsioa eskuragarri dago. <a href='%4'>Klikatu hemen deskargatzeko</a>"
124
 
125
 Basic.DesktopDevice1="Mahaigaineko audioa"
126
 Basic.DesktopDevice2="Mahaigaineko audioa 2"
127
@@ -298,6 +316,8 @@
128
 
129
 Basic.Main.PreviewConextMenu.Enable="Gaitu aurrebista"
130
 
131
+Basic.Main.Preview.Disable="Desgaitu aurrebista"
132
+
133
 ScaleFiltering="Eskalaren iragazketa"
134
 ScaleFiltering.Point="Puntua"
135
 ScaleFiltering.Bilinear="Bilineala"
136
@@ -468,6 +488,8 @@
137
 Basic.MainMenu.Edit.Transform.FitToScreen="Doitu pantailara (&F)"
138
 Basic.MainMenu.Edit.Transform.StretchToScreen="Luzatu pantailara (&S)"
139
 Basic.MainMenu.Edit.Transform.CenterToScreen="Erdiratu pantailan (&C)"
140
+Basic.MainMenu.Edit.Transform.VerticalCenter="Erdiratu bertikalki"
141
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Erdiratu horizontalki"
142
 Basic.MainMenu.Edit.Order="&Ordenatu"
143
 Basic.MainMenu.Edit.Order.MoveUp="M&ugitu gora"
144
 Basic.MainMenu.Edit.Order.MoveDown="Mugitu behera (&D)"
145
@@ -590,7 +612,7 @@
146
 Basic.Settings.Output.Simple.Warn.VideoBitrate="Kontuz: transmisioaren bideoaren bit-tasa %1 ean ezarriko da; hau izango da oraingo transmisio zerbitzuaren goiko muga. Seguru bazaude %1 aren gainetik nahi duzula, gaitu kodetze aukera aurreratuak eta desautatu \"Behartu transmisio zerbitzuaren bit-tasaren mugak\"."
147
 Basic.Settings.Output.Simple.Warn.AudioBitrate="Kontuz: transmisioaren audioaren bit-tasa %1 ean ezarriko da; hau izango da oraingo transmisio zerbitzuaren goiko muga. Seguru bazaude %1 aren gainetik nahi duzula, gaitu kodetze aukera aurreratuak eta desautatu \"Behartu transmisio zerbitzuaren bit-tasaren mugak\"."
148
 Basic.Settings.Output.Simple.Warn.Encoder="Oharra: Transmisioak duen kalitatea ez bestelako kalitate batez grabatzeak PUZ-ren aparteko erabilera eskatzen du une berean transmititzen eta grabatzen baduzu."
149
-Basic.Settings.Output.Simple.Warn.Lossless="Oharra: Galerarik gabeko kalitateak  neurri izugarri handiko fitxategiak sortzen ditu! Galerarik gabeko kalitateak minutuko 7 gigabytetik gorako tokia erabili dezake diskoan bereizmen eta fotograma-emari handietan. Galerarik gabeko kalitatea ez dago gomendatua grabazio luzeetarako disko toki eskuragarri oso handi bat ez baduzu."
150
+Basic.Settings.Output.Simple.Warn.Lossless="Oharra: Galerarik gabeko kalitateak neurri izugarri handiko fitxategiak sortzen ditu! Galerarik gabeko kalitateak minutuko 7 gigabytetik gorako tokia erabili dezake diskoan bereizmen eta fotograma-emari handietan. Galerarik gabeko kalitatea ez dago gomendatua grabazio luzeetarako disko toki eskuragarri oso handi bat ez baduzu."
151
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Ziur zaude galerarik gabeko kalitatea erabili nahi duzula?"
152
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Galerarik gabeko kalitateaz oharra!"
153
 Basic.Settings.Output.Simple.Encoder.Software="Softwarea (x264)"
154
@@ -677,7 +699,8 @@
155
 Basic.Settings.Audio="Audioa"
156
 Basic.Settings.Audio.SampleRate="Lagin-maiztasuna"
157
 Basic.Settings.Audio.Channels="Kanalak"
158
-Basic.Settings.Audio.MeterDecayRate="Audio neurtzailearen gutxiagotze-tasa"
159
+Basic.Settings.Audio.Meters="Neurgailuak"
160
+Basic.Settings.Audio.MeterDecayRate="Desintegrazio-tasa"
161
 Basic.Settings.Audio.MeterDecayRate.Fast="Azkarra"
162
 Basic.Settings.Audio.MeterDecayRate.Medium="Tartekoa (I motako PPMa)"
163
 Basic.Settings.Audio.MeterDecayRate.Slow="Geldoa (II motako PPMa)"
164
@@ -685,15 +708,16 @@
165
 Basic.Settings.Audio.PeakMeterType.SamplePeak="Lagin-gailurra"
166
 Basic.Settings.Audio.PeakMeterType.TruePeak="Benetako gailurra (CPUaren erabilera handiagoa)"
167
 Basic.Settings.Audio.MultiChannelWarning.Enabled="Kontu: soinu inguratzailea aktibatuta dago."
168
-Basic.Settings.Audio.MultichannelWarning="Transmititzen ari bazara, begiratu ea zure transmisio zerbitzuak onartzen duen soinu inguratzailea  sarrerako soinuan zein irteerakoan.  Twitch, Facebook 360 LIve, Mixer RTMP, Samashcast esate baterako guztiz onartzen dute soinu inguratzailea. Facebook Live eta Youtube Live sarrerako soinu inguratzailea onartzen badute ere, Facebook Livek estereo bihurtzen du, eta Youtube Livek bakarrik bi kanal erreproduzitzen ditu.\n\nOBS audio iragazkiak soinu inguratzailearekin bateragarriak badira ere, ezin da bermatu VST pluginaren bateragarritasuna."
169
+Basic.Settings.Audio.MultichannelWarning="Transmititzen ari bazara, begiratu ea zure transmisio zerbitzuak onartzen duen soinu inguratzailea sarrerako soinuan zein irteerakoan. Twitch, Facebook 360 LIve, Mixer RTMP, Samashcast esate baterako guztiz onartzen dute soinu inguratzailea. Facebook Live eta Youtube Live sarrerako soinu inguratzailea onartzen badute ere, Facebook Livek estereo bihurtzen du, eta Youtube Livek bakarrik bi kanal erreproduzitzen ditu.\n\nOBS audio iragazkiak soinu inguratzailearekin bateragarriak badira ere, ezin da bermatu VST pluginaren bateragarritasuna."
170
 Basic.Settings.Audio.MultichannelWarning.Title="Nahi duzu soinu inguratzailea aktibatzea?"
171
 Basic.Settings.Audio.MultichannelWarning.Confirm="Seguru zaude soinu inguratzailea aktibatu nahi duzula?"
172
-Basic.Settings.Audio.DesktopDevice="Mahaigaineko audio gailua"
173
-Basic.Settings.Audio.DesktopDevice2="Mahaigaineko audio gailua 2"
174
-Basic.Settings.Audio.AuxDevice="Mik/Osagarri audio gailua"
175
-Basic.Settings.Audio.AuxDevice2="Mik/Osagarri audio gailua 2"
176
-Basic.Settings.Audio.AuxDevice3="Mik/Osagarri audio gailua 3"
177
-Basic.Settings.Audio.AuxDevice4="Mik/Osagarria audio gailua 4"
178
+Basic.Settings.Audio.Devices="Gailuak"
179
+Basic.Settings.Audio.DesktopDevice="Mahaigaineko audioa"
180
+Basic.Settings.Audio.DesktopDevice2="Mahaigaineko audioa 2"
181
+Basic.Settings.Audio.AuxDevice="Mik/Audio osagarria"
182
+Basic.Settings.Audio.AuxDevice2="Mik/Audio osagarria 2"
183
+Basic.Settings.Audio.AuxDevice3="Mik/Audio osagarria 3"
184
+Basic.Settings.Audio.AuxDevice4="Mik/Audio osagarria 4"
185
 Basic.Settings.Audio.EnablePushToMute="Gaitu Sakatu-mututzeko"
186
 Basic.Settings.Audio.PushToMuteDelay="Sakatu-mututzeko atzerapena"
187
 Basic.Settings.Audio.EnablePushToTalk="Gaitu Sakatu-hitz-egiteko"
188
@@ -711,11 +735,11 @@
189
 Basic.Settings.Advanced.FormatWarning="Oharra: NV12 ez diren kolore formatuak grabaziorako dira gehienbat, eta ez daude gomendatuta transmisiorako. Transmisioak PUZ erabilpena handitu dezake kolore formatu bihurketa dela medio."
190
 Basic.Settings.Advanced.Audio.BufferingTime="Audio bufferratze denbora"
191
 Basic.Settings.Advanced.Video.ColorFormat="Kolore formatua"
192
-Basic.Settings.Advanced.Video.ColorSpace="YUV kolore-espazioa"
193
-Basic.Settings.Advanced.Video.ColorRange="YUV kolore-barrutia"
194
+Basic.Settings.Advanced.Video.ColorSpace="Kolore-espazioa"
195
+Basic.Settings.Advanced.Video.ColorRange="Kolore tartea"
196
 Basic.Settings.Advanced.Video.ColorRange.Partial="Partziala"
197
 Basic.Settings.Advanced.Video.ColorRange.Full="Osoa"
198
-Basic.Settings.Advanced.Audio.MonitoringDevice="Audioa kontrolatzeko gailua"
199
+Basic.Settings.Advanced.Audio.MonitoringDevice="Monitorizazio gailua"
200
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Lehenetsia"
201
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Ezgaitu Windows audio ducking"
202
 Basic.Settings.Advanced.StreamDelay="Transmisio-atzerapena"
203
@@ -732,14 +756,14 @@
204
 
205
 Basic.AdvAudio="Audio propietate aurreratuak"
206
 Basic.AdvAudio.Name="Izena"
207
-Basic.AdvAudio.Volume="Bolumena (%)"
208
+Basic.AdvAudio.Volume="Bolumena"
209
 Basic.AdvAudio.Mono="Nahasketa monora murriztu"
210
 Basic.AdvAudio.Balance="Balantzea"
211
 Basic.AdvAudio.SyncOffset="Sinkronizazioaren desplazamendua (ms)"
212
-Basic.AdvAudio.Monitoring="Adioaren kontrola"
213
-Basic.AdvAudio.Monitoring.None="Audioa itzalita"
214
-Basic.AdvAudio.Monitoring.MonitorOnly="Kontrola bakarrik (irteera mututua)"
215
-Basic.AdvAudio.Monitoring.Both="Kontrola eta irteera"
216
+Basic.AdvAudio.Monitoring="Adioaren monitorizazioa"
217
+Basic.AdvAudio.Monitoring.None="Ez monitorizatu"
218
+Basic.AdvAudio.Monitoring.MonitorOnly="Monitorea bakarrik (irteera mututua)"
219
+Basic.AdvAudio.Monitoring.Both="Monitorea eta irteera"
220
 Basic.AdvAudio.AudioTracks="Pistak"
221
 
222
 Basic.Settings.Hotkeys="Laster-teklak"
223
@@ -808,6 +832,7 @@
224
 NoSources.Title="Iturbururik ez dago"
225
 NoSources.Text="Badirudi ez duzula gehitu bideo iturbururik oraindik, beraz emaitza pantaila huts bat izango da. Ziur zaude hau egin nahi duzula?"
226
 NoSources.Text.AddSource="Gehitzen ahal duzu iturburuak Iturburuak kutxako azpiko aldeko + ikonoa klikatuz edozein unetan."
227
+NoSources.Label="Ez duzu iturbururik aukeratu.\nEgin klik beheko + botoian,\nedo eskuin klik bat gehitzeko."
228
 
229
 ChangeBG="Ezarri kolorea"
230
 CustomColor="Kolore pertsonalizatua"
231
@@ -826,3 +851,5 @@
232
 ResizeOutputSizeOfSource.Text="Oinarrizko eta irteerako bereizmena uneko iturriaren tamainara egokituko da."
233
 ResizeOutputSizeOfSource.Continue="Jarraitu nahi duzu?"
234
 
235
+PreviewTransition="Aurreikusi trantsizioa"
236
+
237
obs-studio-23.1.0.tar.xz/UI/data/locale/fa-IR.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/fa-IR.ini Changed
32
 
1
@@ -106,7 +106,7 @@
2
 Basic.AutoConfig.VideoPage.FPS.UseCurrent="استفاده از فعلی (%1)"
3
 Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="یا ۶۰ یا ۳۰ ، اما ۶۰ را ترجیح می دهم"
4
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="یا ۶۰ یا ۳۰ ، اما وضوح بالا را ترجیح می دهم"
5
-Basic.AutoConfig.VideoPage.CanvasExplanation="نکته : اندازه محیط (پایه) لزوما همان اندازه ای نیست که با آن پخش زنده یا ضبط می کنید . اندازه واقعی پخش زنده/ضبط شما ممکن است  برای کاهش استفاده از منابع و یا میزان درخواست بیت بر ثانیه (بیت ریت) کمتر باشد ."
6
+Basic.AutoConfig.VideoPage.CanvasExplanation="نکته : اندازه محیط (پایه) لزوما همان اندازه ای نیست که با آن پخش زنده یا ضبط می کنید . اندازه واقعی پخش زنده/ضبط شما ممکن است برای کاهش استفاده از منابع و یا میزان درخواست بیت بر ثانیه (بیت ریت) کمتر باشد ."
7
 Basic.AutoConfig.StreamPage="اطلاعات پخش زنده"
8
 Basic.AutoConfig.StreamPage.SubTitle="لطفا اطلاعات پخش زنده خود را وارد کنید"
9
 Basic.AutoConfig.StreamPage.UseStreamKey="کلید پخش زنده"
10
@@ -174,6 +174,8 @@
11
 
12
 
13
 
14
+
15
+
16
 Remux.FileExistsTitle="فایل های مورد نظر وجود دارند"
17
 Remux.FileExists="فایل های زیر از قبل وجود دارند. آیا میخوهید آنها را جایگزین کنید؟"
18
 
19
@@ -191,6 +193,7 @@
20
 
21
 
22
 
23
+
24
 AddProfile.Title="افزودن پروفایل"
25
 
26
 RenameProfile.Title="تغییر نام پروفایل"
27
@@ -254,3 +257,4 @@
28
 
29
 ResizeOutputSizeOfSource.Continue="آیا مایلید ادامه دهید؟"
30
 
31
+
32
obs-studio-23.1.0.tar.xz/UI/data/locale/fi-FI.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/fi-FI.ini Changed
186
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Pystynäkymä"
3
 Group="Ryhmitä"
4
 DoNotShowAgain="Älä näytä uudestaan"
5
+Default="(Oletus)"
6
+Calculating="Lasketaan..."
7
 
8
 AlreadyRunning.Title="OBS on jo käynnissä"
9
 AlreadyRunning.Text="OBS on jo käynnissä! Ellet tarkoittanut tehdä näin, ole hyvä ja sulje aikaisemmat OBS-prosessit ennen uuden käynnistämistä. Jos olet asettanut OBS:n pienentymään ilmaisinalueelle, varmista ettei se ole siellä yhä päällä."
10
@@ -94,7 +96,7 @@
11
 Auth.AuthFailure.Title="Varmennusvirhe"
12
 Auth.AuthFailure.Text="Varmennus epäonnistui %1:n kanssa:\n\n%2: %3"
13
 Auth.InvalidScope.Title="Varmennus vaaditaan"
14
-Auth.InvalidScope.Text="Todennus vaatimukset %1:iin ovat muuttuneet.  Jotkin ominaisuuksista eivät välttämättä ole käytössä."
15
+Auth.InvalidScope.Text="Todennus vaatimukset %1:iin ovat muuttuneet. Jotkin ominaisuuksista eivät välttämättä ole käytössä."
16
 Auth.LoadingChannel.Title="Ladataan kanavan tietoja..."
17
 Auth.LoadingChannel.Text="Ladataan kanavan tietoja %1:stä, ole hyvä ja odota..."
18
 Auth.ChannelFailure.Title="Kanavan lataus epäonnistui"
19
@@ -185,6 +187,7 @@
20
 Basic.Stats.DroppedFrames="Pudotettuja frameja (verkko)"
21
 Basic.Stats.MegabytesSent="Datan ulostulo yhteensä"
22
 Basic.Stats.Bitrate="Bitrate"
23
+Basic.Stats.DiskFullIn="Levy täynnä ajassa (arvio)"
24
 
25
 ResetUIWarning.Title="Haluatko varmasti nollata käyttöliittymän?"
26
 ResetUIWarning.Text="Käyttöliittymän nollaus piilottaa lisätyt telakat. Sinun täytyy laittaa telakat näkyviin \"Näkymät\" -valikosta jos tahdot ne näkyviin.\n\nHaluatko varmasti nollata käyttöliittymän?"
27
@@ -200,7 +203,7 @@
28
 Updater.NoUpdatesAvailable.Text="Päivityksiä ei ole tällä hetkellä saatavilla"
29
 Updater.FailedToLaunch="Päivittäjän käynnistäminen epäonnistui"
30
 Updater.GameCaptureActive.Title="Game capture on aktiivinen"
31
-Updater.GameCaptureActive.Text="Game capture -kirjasto on yhä käytössä. Sulje kaikki pelit/ohjelmat, joita on kaapattu tai käynnistä tietokone uudelleen."
32
+Updater.GameCaptureActive.Text="Game capture -kirjasto on yhä käytössä. Sulje kaikki pelit/ohjelmat, joita on kaapattu (tai käynnistä Windows uudelleen) ja yritä uudelleen."
33
 
34
 QuickTransitions.SwapScenes="Vaihda esikatselu- ja ulostulo-skenet siirtymän jälkeen"
35
 QuickTransitions.SwapScenesTT="Vaihda esikatselu- ja ulostulo-skenet siirtymän jälkeen (jos ulostulon alkuperäinen skene on yhä olemassa).\nTämä ei peruuta muutoksia joita on tehty alkuperäiseen skeneen."
36
@@ -239,7 +242,7 @@
37
 ConfirmBWTest.Text="OBS on asetettu kaistan nopeustestitilaan. Tämä tila antaa sinun testata verkkoa ilman että kanava menee Live-tilaan. Kun olet valmis testauksen kanssa, sinun täytyy ottaa se pois käytöstä, jotta muut voivat nähdä lähetyksesi.\n\nHaluatko jatkaa?"
38
 
39
 ConfirmExit.Title="Sulje OBS?"
40
-ConfirmExit.Text="OBS on aktiivinen.  Kaikki lähetykset/tallennukset suljetaan.  Haluatko varmasti sulkea ohjelman?"
41
+ConfirmExit.Text="OBS on aktiivinen. Kaikki lähetykset/tallennukset suljetaan. Haluatko varmasti sulkea ohjelman?"
42
 
43
 ConfirmRemove.Title="Vahvista poisto"
44
 ConfirmRemove.Text="Haluatko varmasti poistaa '$1'?"
45
@@ -250,13 +253,15 @@
46
 Output.StartReplayFailed="Toistopuskurin käynnistäminen epäonnistui"
47
 Output.StartFailedGeneric="Ulostulon käynnistäminen epäonnistui. Tarkista loki lisätietoja varten.\n\nHuomio: Jos käytät NVENC tai AMD -enkoodereita, varmista, että näytönohjaimen ajurit on päivitetty ajantasalle."
48
 
49
+
50
 Output.ConnectFail.Title="Yhdistäminen epäonnistui"
51
-Output.ConnectFail.BadPath="Viallinen polku tai yhteysosoite.  Tarkista, että asetuksesi ovat kunnossa."
52
+Output.ConnectFail.BadPath="Viallinen polku tai yhteysosoite. Tarkista, että asetuksesi ovat kunnossa."
53
 Output.ConnectFail.ConnectFailed="Palvelimelle yhdistäminen epäonnistui"
54
 Output.ConnectFail.InvalidStream="Kanavaa tai lähetysavainta ei voida käyttää. Tarkista lähetysavain varmuuden vuoksi. Jos se kuitenkin on oikein, vika saattaa olla yhdistettävässä palvelimessa."
55
-Output.ConnectFail.Error="Odottamaton virhe ilmeni palvelimeen yhdistäessä.  Lisää tietoa saat lokitiedostosta."
56
+Output.ConnectFail.Error="Odottamaton virhe ilmeni palvelimeen yhdistäessä. Lisää tietoa saat lokitiedostosta."
57
 Output.ConnectFail.Disconnected="Yhteys palvelimeen katkaistiin."
58
 
59
+
60
 Output.RecordFail.Title="Tallennuksen aloittaminen epäonnistui"
61
 Output.RecordFail.Unsupported="Ulostulon muoto ei ole tuettu tai se ei tue useampaa kuin yhtä ääniraitaa. Tarkista asetuksesi ja yritä uudelleen."
62
 Output.RecordNoSpace.Title="Liian vähän levytilaa"
63
@@ -267,7 +272,7 @@
64
 Output.ReplayBuffer.NoHotkey.Msg="Tallennuksen pikanäppäintä ei ole asetettu toistopuskurille. Aseta \"Tallenna\"-pikanäppäin tallentaaksesi uusinnat."
65
 
66
 Output.BadPath.Title="Viallinen tiedostopolku"
67
-Output.BadPath.Text="Asetettu tiedostopolku on viallinen.  Tarkista asetuksistasi, että tiedostopolku on asetettu oikein."
68
+Output.BadPath.Text="Asetettu tiedostopolku on viallinen. Tarkista asetuksistasi, että tiedostopolku on asetettu oikein."
69
 
70
 LogReturnDialog="Lokitiedoston lähetys onnistui"
71
 LogReturnDialog.CopyURL="Kopioi osoite"
72
@@ -306,6 +311,8 @@
73
 
74
 Basic.Main.PreviewConextMenu.Enable="Näytä esikatselu"
75
 
76
+Basic.Main.Preview.Disable="Poista esikatselu käytöstä"
77
+
78
 ScaleFiltering="Asteikko suodatus"
79
 ScaleFiltering.Point="Piste"
80
 ScaleFiltering.Bilinear="Bilinear"
81
@@ -476,6 +483,8 @@
82
 Basic.MainMenu.Edit.Transform.FitToScreen="Sovita ikkunaan (&F)"
83
 Basic.MainMenu.Edit.Transform.StretchToScreen="Venytä ikkunaan (&S)"
84
 Basic.MainMenu.Edit.Transform.CenterToScreen="Keskitä ikkunaan (&C)"
85
+Basic.MainMenu.Edit.Transform.VerticalCenter="Keskitä pystysuunnassa"
86
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Keskitä vaakasuunnassa"
87
 Basic.MainMenu.Edit.Order="Järjestä (&O)"
88
 Basic.MainMenu.Edit.Order.MoveUp="Siirrä ylös (&U)"
89
 Basic.MainMenu.Edit.Order.MoveDown="Siirrä alas (&D)"
90
@@ -521,7 +530,7 @@
91
 
92
 Basic.Settings.ProgramRestart="Ohjelma on käynnistettävä uudelleen, jotta asetukset tulevat voimaan."
93
 Basic.Settings.ConfirmTitle="Vahvista muutokset"
94
-Basic.Settings.Confirm="Sinulla on tallentamattomia muutoksia.  Tallennetaanko?"
95
+Basic.Settings.Confirm="Sinulla on tallentamattomia muutoksia. Tallennetaanko?"
96
 
97
 Basic.Settings.General="Yleiset"
98
 Basic.Settings.General.Theme="Teema"
99
@@ -585,7 +594,7 @@
100
 Basic.Settings.Output.ReplayBuffer.SecondsMax="Uusinnan pisin aika (Sekunteina)"
101
 Basic.Settings.Output.ReplayBuffer.MegabytesMax="Muistiraja (Megatavuja)"
102
 Basic.Settings.Output.ReplayBuffer.Estimate="Arvioitu muistinkäyttö: %1 MB"
103
-Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Muistin käyttöä ei voida arvioida.  Valitse muistiraja."
104
+Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Muistin käyttöä ei voida arvioida. Valitse muistiraja."
105
 Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(Huomio: Varmista että toistopuskurin pikanäppäin on asetettuna asetuksista)"
106
 Basic.Settings.Output.ReplayBuffer.Prefix="Toistopuskurin tiedostonimen etuliite"
107
 Basic.Settings.Output.ReplayBuffer.Suffix="Pääte"
108
@@ -659,7 +668,7 @@
109
 
110
 FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
111
 
112
-FilenameFormatting.TT="%CCYY vuosi, neljä numeroa\n%YY Vuosi, kaksi viimeistä numeroa (00-99)\n%MM Kuukausi, kymmenlukuna (01-12) \n%DD Päivä, nolla-etuliitteellä (01-31)\n%hh Tunti, 24-tunnin muodossa (00-23)\n%mm Minuutti (00-59) \n%ss Sekunti (00-61) \n%% %-merkki\n%a Lyhennetty viikonpäivän nimi\n%A Täysi viikonpäivän nimi\n%b Lyhennetty kuukauden nimi\n%B Täysi kuukauden nimi\n%d Kuukauden päivä, nolla-etuliitteellä (01-31)\n%H Tunti, 24-tunnin muodossa (00-23) \n%I Tunti, 12-tunnin muodossa (01-12)\n%m Kuukausi, kymmenlukuna (01-12)\n%M Minuutti (00-59) \n%p AM tai PM merkintä\n%S Sekunti (00-61)\n%y Vuosi, kaksi viimeistä numeroa (00-99)\n%Y Vuosi\n%z ISO 8601 standardin mukainen ajan esittämistapa, UTC tai aikavyöhykkeestä\n Nimi tai lyhennne\n%Z Aikavyöhykkeen nimi tai lyhenne\n"
113
+FilenameFormatting.TT="%CCYY   Vuosi, neljä numeroa\n%YY       Vuosi, kaksi viimeistä numeroa (00-99)\n%MM     Vuosi desimaalilukuna (01-12)\n%DD      Päivä, nolla-etuliitteellä (01-31)\n%hh     Tunti 24-tunnin muodossa (00-23)\n%mm       Minuutti (00-59)\n%ss       Sekunti (00-61)\n%%     %-merkki\n%a        Viikonpäivä lyhennettynä\n%A        Viikonpäivä\n%b     Lyhennetty kuukausi\n%B     Kuukausi\n%d        Päivä, nolla-etuliitteellä (01-31)\n%H      Tunti 24-tunnin muodossa (00-23)\n%I        Tunti 12-tunnin muodossa (01-12)\n%m        Kuukausi desimaalilukuna (01-12)\n%M        Minuutti (00-59)\n%p        AM tai PM määritys\n%S      Sekunti (00-61)\n%y     Vuosi, kaksi viimeistä numeroa (00-99)\n%Y      Vuosi\n%z       ISO 8601 standardin mukainen ajan esittämistapa, UTC tai aikavyöhykkeestä\n%Z       Aikavyöhykkeen nimi tai lyhenne\n"
114
 
115
 Basic.Settings.Video="Kuva"
116
 Basic.Settings.Video.Adapter="Näytönohjain"
117
@@ -674,8 +683,8 @@
118
 Basic.Settings.Video.Numerator="Osoittaja"
119
 Basic.Settings.Video.Denominator="Nimittäjä"
120
 Basic.Settings.Video.Renderer="Renderoija"
121
-Basic.Settings.Video.InvalidResolution="Vialliset resoluution asetus.  Muodon pitää olla [leveys]x[korkeus] (esim. 1920x1080)"
122
-Basic.Settings.Video.CurrentlyActive="Kuvan ulostulo on tällä hetkellä käytössä.  Kytke pois kaikki ulostulot vaihtaaksesi kuva-asetuksia."
123
+Basic.Settings.Video.InvalidResolution="Vialliset resoluution asetus. Muodon pitää olla [leveys]x[korkeus] (esim. 1920x1080)"
124
+Basic.Settings.Video.CurrentlyActive="Kuvan ulostulo on tällä hetkellä käytössä. Kytke pois kaikki ulostulot vaihtaaksesi kuva-asetuksia."
125
 Basic.Settings.Video.DisableAero="Poista Aero käytöstä"
126
 
127
 Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (nopein, mutta epätarkka skaalattaessa)"
128
@@ -685,7 +694,8 @@
129
 Basic.Settings.Audio="Ääni"
130
 Basic.Settings.Audio.SampleRate="Näytteenottotaajuus"
131
 Basic.Settings.Audio.Channels="Kanavat"
132
-Basic.Settings.Audio.MeterDecayRate="Äänimittarin putoamisnopeus"
133
+Basic.Settings.Audio.Meters="Mittarit"
134
+Basic.Settings.Audio.MeterDecayRate="Madaltumisnopeus"
135
 Basic.Settings.Audio.MeterDecayRate.Fast="Nopea"
136
 Basic.Settings.Audio.MeterDecayRate.Medium="Keskinopea (Tyyppi I PPM)"
137
 Basic.Settings.Audio.MeterDecayRate.Slow="Hidas (Tyyppi II PPM)"
138
@@ -693,9 +703,10 @@
139
 Basic.Settings.Audio.PeakMeterType.SamplePeak="Huippuarvon näyte"
140
 Basic.Settings.Audio.PeakMeterType.TruePeak="Todellinen huippuarvo (Korkeampi CPU:n käyttö)"
141
 Basic.Settings.Audio.MultiChannelWarning.Enabled="VAROITUS: Monikanavaääni on käytössä."
142
-Basic.Settings.Audio.MultichannelWarning="Varmista lähettäessä että palvelu tukee sekä monikanavaäänen lähettämistä, että toistamista.  Twitch, Facebook 360 Live, Mixer RTMP ja Smashcast ovat esimerkkejä palveluista joissa monikanavaääni on täysin tuettu.  Vaikka Facebook Live ja YouTube Live hyväksyvät monikanavaäänen lähettämisen, Facebook Live miksaa äänen stereoksi ja YouTube Live toistaa vain kaksi kanavaa.\n\nOBS:n äänisuodattimet tukevat monikanavaääntä, mutta VST-liitännäiset eivät välttämättä tue."
143
+Basic.Settings.Audio.MultichannelWarning="Varmista lähettäessä että palvelu tukee sekä monikanavaäänen lähettämistä, että toistamista. Twitch, Facebook 360 Live, Mixer RTMP ja Smashcast ovat esimerkkejä palveluista joissa monikanavaääni on täysin tuettu. Vaikka Facebook Live ja YouTube Live hyväksyvät monikanavaäänen lähettämisen, Facebook Live miksaa äänen stereoksi ja YouTube Live toistaa vain kaksi kanavaa.\n\nOBS:n äänisuodattimet tukevat monikanavaääntä, mutta VST-liitännäiset eivät välttämättä tue."
144
 Basic.Settings.Audio.MultichannelWarning.Title="Käytä monikanava-ääntä?"
145
 Basic.Settings.Audio.MultichannelWarning.Confirm="Haluatko varmasti käyttää monikanavaista ääntä?"
146
+Basic.Settings.Audio.Devices="Laitteet"
147
 Basic.Settings.Audio.DesktopDevice="Äänentoistolaite"
148
 Basic.Settings.Audio.DesktopDevice2="Äänentoistolaite 2"
149
 Basic.Settings.Audio.AuxDevice="Mic/Aux -äänilaite"
150
@@ -716,11 +727,11 @@
151
 Basic.Settings.Advanced.General.ProcessPriority.Normal="Normaali"
152
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Alle normaalin"
153
 Basic.Settings.Advanced.General.ProcessPriority.Idle="Pieni"
154
-Basic.Settings.Advanced.FormatWarning="Varoitus: Muut kuin NV12 väriformaatit ovat tarkoitettuja tallentamiseen, eikä niitä suositella lähettämiseen. Väriformaation konversio  saattaa johtaa korkeampaan suorittimen käyttöön lähettämisessä."
155
+Basic.Settings.Advanced.FormatWarning="Varoitus: Muut kuin NV12 väriformaatit ovat tarkoitettuja tallentamiseen, eikä niitä suositella lähettämiseen. Väriformaation konversio saattaa johtaa korkeampaan suorittimen käyttöön lähettämisessä."
156
 Basic.Settings.Advanced.Audio.BufferingTime="Äänen puskurointiaika"
157
 Basic.Settings.Advanced.Video.ColorFormat="Väriformaatti"
158
-Basic.Settings.Advanced.Video.ColorSpace="YUV väriavaruus"
159
-Basic.Settings.Advanced.Video.ColorRange="YUV värialue"
160
+Basic.Settings.Advanced.Video.ColorSpace="Väriavaruus"
161
+Basic.Settings.Advanced.Video.ColorRange="Värialue"
162
 Basic.Settings.Advanced.Video.ColorRange.Partial="Osittainen"
163
 Basic.Settings.Advanced.Video.ColorRange.Full="Täysi"
164
 Basic.Settings.Advanced.Audio.MonitoringDevice="Äänen monitorointilaite"
165
@@ -740,7 +751,6 @@
166
 
167
 Basic.AdvAudio="Äänen lisäominaisuudet"
168
 Basic.AdvAudio.Name="Nimi"
169
-Basic.AdvAudio.Volume="Äänenvoimakkuus (%)"
170
 Basic.AdvAudio.Mono="Miksaa yksikanavaiseksi"
171
 Basic.AdvAudio.Balance="Balanssi"
172
 Basic.AdvAudio.SyncOffset="Synkronoinnin viivästys (ms)"
173
@@ -816,6 +826,7 @@
174
 NoSources.Title="Ei lähteitä"
175
 NoSources.Text="Näyttää siltä ettet ole vielä lisännyt yhtään kuvalähdettä, joten kuva on musta. Haluatko varmasti tehdä näin?"
176
 NoSources.Text.AddSource="Voit lisätä lähteitä klikkaamalla \"+\"-kuvaketta \"Lähteet\"-alueen alapuolella."
177
+NoSources.Label="Sinulla ei ole lähteitä.\nKlikkaa + painiketta alapuolella,\ntai klikkaa tästä hiiren oikealla painikkeella lisätäksesi yhden."
178
 
179
 ChangeBG="Aseta väri"
180
 CustomColor="Mukautettu väri"
181
@@ -834,3 +845,4 @@
182
 ResizeOutputSizeOfSource.Text="Piirtoalueen ja ulostulon resoluutio muutetaan valitun lähteen kokoiseksi."
183
 ResizeOutputSizeOfSource.Continue="Haluatko jatkaa?"
184
 
185
+
186
obs-studio-23.1.0.tar.xz/UI/data/locale/fil-PH.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/fil-PH.ini Changed
96
 
1
@@ -170,7 +170,6 @@
2
 Updater.NoUpdatesAvailable.Text="Walang mga update ang kasalukuyang magagamit"
3
 Updater.FailedToLaunch="Nabigong ilunsad ang updater"
4
 Updater.GameCaptureActive.Title="Kumuha ng laro na aktibo"
5
-Updater.GameCaptureActive.Text="Kasalukuyang nakukuha sa library ang pagkuha ng hook library. Mangyaring isara ang anumang mga laro / programa na nakukuha (o i-restart ang mga bintana) at subukang muli."
6
 
7
 QuickTransitions.SwapScenes="Swap Preview / Output Scenes Pagkatapos Transitioning"
8
 QuickTransitions.SwapScenesTT="Mag swap ng mga preview at output scenes matapos ang transitioning (Kung may orihinal na output scene na umiiral).\nIto ay hindi pwede baguhin ang orihinal na eksena."
9
@@ -218,6 +217,7 @@
10
 Output.StartReplayFailed="Bigong simulang ang replay buffer"
11
 Output.StartFailedGeneric="Bigong simulang ang output. Pakitingnan ang talaan ng mga detalye.\n\nNote: kung ikaw ay gumagamit ng NVENC or AMD encoders, siguraduhin na nag video drivers ay naka update."
12
 
13
+
14
 Output.ConnectFail.Title="Bigung kumunekta"
15
 Output.ConnectFail.BadPath="Hindi wasto ang Path or ang Connection URL. Pakitingnan ang settings para ma kumpirma na ito ay pwede."
16
 Output.ConnectFail.ConnectFailed="Bigong kumunekta sa serber"
17
@@ -225,6 +225,7 @@
18
 Output.ConnectFail.Error="Isang di-inaasahang error ng subukang kumunekta sa serber. Karagdagang impormasyon ay nasa log file."
19
 Output.ConnectFail.Disconnected="Nadiskonek mula sa serber."
20
 
21
+
22
 Output.RecordFail.Title="Bigong simulang ang pag record"
23
 Output.RecordFail.Unsupported="Ang output format ay maaring di suportado or di sinusuportahan ang higit sa isang audio track. Pakitingnan ang iyong settings at simulan ulet."
24
 Output.RecordNoSpace.Title="Hindi sapat ang iyong espasyo"
25
@@ -252,7 +253,7 @@
26
 Remux.ExitUnfinished="Di pa tapos ang Remuxing, pag itigil ang render ang napiling file ay di magagamit.\nGusto mo bang huminto sa pag remuxing?"
27
 
28
 UpdateAvailable="May bagong update na available"
29
-UpdateAvailable.Text="Ang Version %1.%2.%3 ay available na.  <a href='%4'>Pindutin para i-download</a>"
30
+UpdateAvailable.Text="Ang Version %1.%2.%3 ay available na. <a href='%4'>Pindutin para i-download</a>"
31
 
32
 Basic.DesktopDevice1="Ang Desktop Audio"
33
 Basic.DesktopDevice2="Ang Desktop Audio 2"
34
@@ -266,6 +267,7 @@
35
 
36
 Basic.Main.PreviewConextMenu.Enable="Ipakita muli ang Larawan"
37
 
38
+
39
 ScaleFiltering="I-filter iskala"
40
 ScaleFiltering.Point="Punto"
41
 ScaleFiltering.Bilinear="Bilinear"
42
@@ -609,7 +611,7 @@
43
 Basic.Settings.Video.Numerator="Numerator"
44
 Basic.Settings.Video.Denominator="Denominator"
45
 Basic.Settings.Video.Renderer="Renderer"
46
-Basic.Settings.Video.InvalidResolution="Ang Balyo ng resolusyong ay imbalido. Dapat ito  [width]x[height] (i.e. 1920x1080)"
47
+Basic.Settings.Video.InvalidResolution="Ang Balyo ng resolusyong ay imbalido. Dapat ito [width]x[height] (i.e. 1920x1080)"
48
 Basic.Settings.Video.CurrentlyActive="Ang kasulukuyang Bidyo output ay aktibo. Paki turn off ang anumang output para mabago ang bidyo settings."
49
 Basic.Settings.Video.DisableAero="Hindi paganahin ang Aero"
50
 
51
@@ -620,7 +622,6 @@
52
 Basic.Settings.Audio="Tunog"
53
 Basic.Settings.Audio.SampleRate="Halimbawa ng Antas"
54
 Basic.Settings.Audio.Channels="Mga Channel"
55
-Basic.Settings.Audio.MeterDecayRate="Ang Audio Meter Decay Rate"
56
 Basic.Settings.Audio.MeterDecayRate.Fast="Pabilisin"
57
 Basic.Settings.Audio.MeterDecayRate.Medium="Katamtaman (Tipo I PPM)"
58
 Basic.Settings.Audio.MeterDecayRate.Slow="Mabagal (Tipo II PPM)"
59
@@ -628,11 +629,6 @@
60
 Basic.Settings.Audio.MultichannelWarning="Kung nag streaming, paki tignan kung ang iyong streaming service ay parehong supportado ang surround sound ingest at surround sound playback. Twitch, Facebook, 360 Live, Mixer RTMP, Smashcast ay ang mga halimbawa kung saan ang surround sound ay ganap na suportado, pati YouTube Live umaandar lamang sa dawalang channels.\n\nOBS audio filters ay kompatibol lamang sa surround sound, pero hindi siguradong supportado ang VST plugin."
61
 Basic.Settings.Audio.MultichannelWarning.Title="Paganahin ang surround sound audio?"
62
 Basic.Settings.Audio.MultichannelWarning.Confirm="Sigurado ka ba gusto mong paganahin ang surround sound audio?"
63
-Basic.Settings.Audio.DesktopDevice="Ang Kagamitan sa Desktop Audio"
64
-Basic.Settings.Audio.DesktopDevice2="Ang 2 Kagamitan sa Desktop Audio"
65
-Basic.Settings.Audio.AuxDevice="Mic / Auxiliary Audio Device"
66
-Basic.Settings.Audio.AuxDevice2="Mic / Auxiliary Audio Device 2"
67
-Basic.Settings.Audio.AuxDevice3="Mic / Auxiliary Audio Device 3"
68
 Basic.Settings.Audio.EnablePushToMute="Paganahin ang Push-to-mute"
69
 Basic.Settings.Audio.PushToMuteDelay="Push-to-mute delay"
70
 Basic.Settings.Audio.EnablePushToTalk="Paganahin ang Push-to-talk"
71
@@ -649,11 +645,8 @@
72
 Basic.Settings.Advanced.FormatWarning="Babala: Ang mga format ng kulay maliban sa NV12 ay pangunahing inilaan para sa pag-record, at hindi inirerekomenda kapag nag-stream. Maaaring mapalawak ng streaming ang paggamit ng CPU dahil sa conversion ng format ng kulay."
73
 Basic.Settings.Advanced.Audio.BufferingTime="Audio Buffering Time"
74
 Basic.Settings.Advanced.Video.ColorFormat="Format ng Kulay"
75
-Basic.Settings.Advanced.Video.ColorSpace="Ang espasyong kulay ng YUV"
76
-Basic.Settings.Advanced.Video.ColorRange="Ang saklaw ng kulay ng YUV"
77
 Basic.Settings.Advanced.Video.ColorRange.Partial="Bahagyang"
78
 Basic.Settings.Advanced.Video.ColorRange.Full="Buo"
79
-Basic.Settings.Advanced.Audio.MonitoringDevice="Ang kagamitan para sa Audio Monitoring"
80
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="I-Default"
81
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Huwag paganahin ang Windows audio ducking"
82
 Basic.Settings.Advanced.StreamDelay="Ang Antala ng Stream"
83
@@ -667,7 +660,6 @@
84
 
85
 Basic.AdvAudio="Ang aria-arian ng Advanced Audio"
86
 Basic.AdvAudio.Name="Pangalan"
87
-Basic.AdvAudio.Volume="Kalakasan (%)"
88
 Basic.AdvAudio.Mono="Downmix ito sa Mono"
89
 Basic.AdvAudio.SyncOffset="Ang Sync Offset (ms)"
90
 Basic.AdvAudio.Monitoring="Ang subaybay ng Audio"
91
@@ -741,3 +733,4 @@
92
 
93
 
94
 
95
+
96
obs-studio-23.1.0.tar.xz/UI/data/locale/fr-FR.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/fr-FR.ini Changed
201
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Disposition Verticale"
3
 Group="Groupe"
4
 DoNotShowAgain="Ne plus afficher"
5
+Default="(Défaut)"
6
+Calculating="Calcul en cours..."
7
 
8
 AlreadyRunning.Title="OBS est déjà en cours d'exécution"
9
 AlreadyRunning.Text="OBS est déjà en cours d'exécution. À moins que cela soit délibéré, veuillez quitter toute autre instance active d'OBS (y compris celles minimisées dans la zone de notifications) avant d'en ouvrir une nouvelle."
10
@@ -103,6 +105,8 @@
11
 Auth.StreamInfo="Informations de la diffusion"
12
 TwitchAuth.Stats="Statistiques de Twitch"
13
 TwitchAuth.Feed="Flux d'activité Twitch"
14
+TwitchAuth.TwoFactorFail.Title="Impossible de trouver la clé de stream"
15
+TwitchAuth.TwoFactorFail.Text="OBS n'a pas pu se connecter à votre compte Twitch. Veuillez vous assurer que l'authentification à deux facteurs est configurée dans vos <a href='https://www.twitch.tv/settings/security'>paramètres de sécurité Twitch</a> car cela est nécessaire pour lancer un stream."
16
 
17
 Copy.Filters="Copier les filtres"
18
 Paste.Filters="Coller les filtres"
19
@@ -132,7 +136,7 @@
20
 Basic.AutoConfig.VideoPage.FPS.UseCurrent="Garder tel quel (%1)"
21
 Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="60 ou 30, mais préférer 60 si possible"
22
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="60 ou 30, mais favoriser une résolution élevée"
23
-Basic.AutoConfig.VideoPage.CanvasExplanation="Remarque : la résolution (de base) du canevas n'est pas nécessairement la même que la résolution avec laquelle vous allez diffuser (stream) ou enregistrer. La résolution actuelle de stream/enregistrement peut être réduite à partir de la résolution du canevas afin de diminuer  l'utilisation des ressources et de la bande passante."
24
+Basic.AutoConfig.VideoPage.CanvasExplanation="Remarque : la résolution (de base) du canevas n'est pas nécessairement la même que la résolution avec laquelle vous allez diffuser (stream) ou enregistrer. La résolution actuelle de stream/enregistrement peut être réduite à partir de la résolution du canevas afin de diminuer l'utilisation des ressources et de la bande passante."
25
 Basic.AutoConfig.StreamPage="Informations de flux"
26
 Basic.AutoConfig.StreamPage.SubTitle="Entrez vos informations de stream"
27
 Basic.AutoConfig.StreamPage.ConnectAccount="Connecter un compte (optionnel)"
28
@@ -185,6 +189,7 @@
29
 Basic.Stats.DroppedFrames="Images perdues (réseau)"
30
 Basic.Stats.MegabytesSent="Données transmises (total)"
31
 Basic.Stats.Bitrate="Débit"
32
+Basic.Stats.DiskFullIn="Disque plein dans (env.)"
33
 
34
 ResetUIWarning.Title="Êtes-vous sûr de vouloir réinitialiser l'interface graphique ?"
35
 ResetUIWarning.Text="Réinitialiser l'interface masquera vos docks supplémentaires. Vous devrez les réactiver depuis le menu Afficher si vous voulez qu'ils soient visibles.\n\nÊtes-vous sûr de vouloir réinitialiser l'interface ?"
36
@@ -200,7 +205,7 @@
37
 Updater.NoUpdatesAvailable.Text="Aucune mise à jour n’est actuellement disponible"
38
 Updater.FailedToLaunch="Impossible de démarrer la mise à jour"
39
 Updater.GameCaptureActive.Title="Capture de jeu active"
40
-Updater.GameCaptureActive.Text="La bibliothèque de capture de jeu est en cours d'utilisation. Veuillez fermer tous les jeux/programmes en cours de capture (ou redémarrez Windows) et réessayez."
41
+Updater.GameCaptureActive.Text="La bibliothèque de capture de jeu (« hook ») est en cours d'utilisation. Veuillez fermer tous les jeux/programmes en cours de capture (ou redémarrez Windows) et réessayez."
42
 
43
 QuickTransitions.SwapScenes="Permuter les scènes d'aperçu et de sortie après la transition"
44
 QuickTransitions.SwapScenesTT="Permute les scènes d'aperçu et de sortie après la transition (si la scène d'origine de la sortie existe toujours). \nCela n'annulera pas les modifications qui auront pu être faites sur la scène d'origine de la sortie."
45
@@ -239,7 +244,7 @@
46
 ConfirmBWTest.Text="Vous avez configuré OBS en mode \"test de bande passante\". Ce mode permet de tester le réseau sans que votre chaîne ne soit en direct. Une fois que vous aurez effectué les tests, vous devrez le désactiver afin que les spectateurs puissent voir votre stream.\n\nVoulez-vous continuer ?"
47
 
48
 ConfirmExit.Title="Quitter OBS ?"
49
-ConfirmExit.Text="OBS est actuellement actif.  Tous les streams/enregistrements vont être arrêtés.  Êtes-vous sûr de vouloir quitter ?"
50
+ConfirmExit.Text="OBS est actuellement actif. Tous les streams/enregistrements vont être arrêtés. Êtes-vous sûr de vouloir quitter ?"
51
 
52
 ConfirmRemove.Title="Confirmer la suppression"
53
 ConfirmRemove.Text="Êtes-vous sûr de vouloir supprimer « $1 » ?"
54
@@ -250,6 +255,7 @@
55
 Output.StartReplayFailed="Impossible de démarrer le tampon de relecture"
56
 Output.StartFailedGeneric="Le démarrage de la sortie a échoué. Veuillez consulter le journal pour plus de détails.\n\nRemarque : si vous utilisez les encodeurs NVENC ou AMD, assurez-vous que vos pilotes vidéo soient à jour."
57
 
58
+
59
 Output.ConnectFail.Title="Échec de la connexion"
60
 Output.ConnectFail.BadPath="Adresse de connexion ou chemin invalide. Veuillez vérifier vos paramètres afin de confirmer leur validité."
61
 Output.ConnectFail.ConnectFailed="Échec de la connexion au serveur"
62
@@ -257,12 +263,16 @@
63
 Output.ConnectFail.Error="Une erreur inattendue s'est produite en essayant de se connecter au serveur. Plus d'informations dans le fichier journal."
64
 Output.ConnectFail.Disconnected="Déconnecté du serveur."
65
 
66
+Output.StreamEncodeError.Title="Erreur d'encodage"
67
+Output.StreamEncodeError.Msg="L'encodeur a rencontré une erreur pendant la diffusion."
68
+
69
 Output.RecordFail.Title="Impossible de démarrer l'enregistrement"
70
-Output.RecordFail.Unsupported="Le format de sortie n'est pas pris en charge ou ne supporte qu'une piste audio.  Veuillez vérifier vos paramètres et réessayez."
71
+Output.RecordFail.Unsupported="Le format de sortie n'est pas pris en charge ou ne supporte qu'une piste audio. Veuillez vérifier vos paramètres et réessayez."
72
 Output.RecordNoSpace.Title="Espace disque insuffisant"
73
 Output.RecordNoSpace.Msg="Il n'y a pas suffisamment d'espace disque pour poursuivre l'enregistrement."
74
 Output.RecordError.Title="Erreur d'enregistrement"
75
 Output.RecordError.Msg="Une erreur non spécifiée s'est produite lors de l'enregistrement."
76
+Output.RecordError.EncodeErrorMsg="L'encodeur a rencontré une erreur pendant l'enregistrement."
77
 Output.ReplayBuffer.NoHotkey.Title="Aucun raccourci clavier défini !"
78
 Output.ReplayBuffer.NoHotkey.Msg="Aucun raccourci clavier défini pour le tampon de relecture. Veuillez en définir un pour utiliser cette fonction."
79
 
80
@@ -306,6 +316,8 @@
81
 
82
 Basic.Main.PreviewConextMenu.Enable="Activer l'aperçu"
83
 
84
+Basic.Main.Preview.Disable="Désactiver l'aperçu"
85
+
86
 ScaleFiltering="Filtre de mise à l'échelle"
87
 ScaleFiltering.Point="Point"
88
 ScaleFiltering.Bilinear="Bilinéaire"
89
@@ -476,6 +488,8 @@
90
 Basic.MainMenu.Edit.Transform.FitToScreen="Adapter à l'écran (&F)"
91
 Basic.MainMenu.Edit.Transform.StretchToScreen="Étirer à l'écran (&S)"
92
 Basic.MainMenu.Edit.Transform.CenterToScreen="&Centrer à l'écran"
93
+Basic.MainMenu.Edit.Transform.VerticalCenter="Centrer Verticalement"
94
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Centrer Horizontalement"
95
 Basic.MainMenu.Edit.Order="&Ordonner"
96
 Basic.MainMenu.Edit.Order.MoveUp="Monter d'&un cran"
97
 Basic.MainMenu.Edit.Order.MoveDown="&Descendre d'un cran"
98
@@ -598,7 +612,7 @@
99
 Basic.Settings.Output.Simple.Warn.VideoBitrate="Attention: le débit vidéo de streaming va être fixé à %1, qui est la limite maximale pour le service de streaming actuel. Si vous êtes surs de vouloir aller au delà de %1, activez les options avancées de l'encodeur & décochez \"Imposer les limites de débit du service de streaming\"."
100
 Basic.Settings.Output.Simple.Warn.AudioBitrate="Attention: le débit audio de streaming va être fixé à %1, qui est la limite maximale pour le service de streaming actuel. Si vous êtes surs de vouloir aller au delà de %1, activez les options avancées de l'encodeur & décochez \"Imposer les limites de débit du service de streaming\"."
101
 Basic.Settings.Output.Simple.Warn.Encoder="Attention : enregistrer via un encodeur logiciel avec une qualité autre que celle du stream sollicitera encore plus le CPU si vous streamez et enregistrez simultanément."
102
-Basic.Settings.Output.Simple.Warn.Lossless="Attention: la qualité sans perte génère des fichiers de taille énorme ! Elle peut utiliser jusqu'à  7 gigaoctets d'espace disque par minute pour de hautes résolutions et fréquences d'image. Cette qualité n'est pas recommandée pour de longs enregistrements à moins d'avoir énormément d'espace disque disponible."
103
+Basic.Settings.Output.Simple.Warn.Lossless="Attention: la qualité sans perte génère des fichiers de taille énorme ! Elle peut utiliser jusqu'à 7 gigaoctets d'espace disque par minute pour de hautes résolutions et fréquences d'image. Cette qualité n'est pas recommandée pour de longs enregistrements à moins d'avoir énormément d'espace disque disponible."
104
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Êtes-vous certain de vouloir utiliser la qualité sans perte ?"
105
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Avertissement de qualité sans perte"
106
 Basic.Settings.Output.Simple.Encoder.Software="Logiciel (x264)"
107
@@ -659,7 +673,7 @@
108
 
109
 FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
110
 
111
-FilenameFormatting.TT="%CCYY       Année, 4 chiffres\n%YY      Année, 2 derniers chiffres (00-99)\n%MM     Mois en nombre (01-12)\n%DD     Jour du mois(01-31)\n%hh        Heure au format 24h (00-23)\n%mm        Minute (00-59)\n%ss     Seconde (00-61)\n%%     Symbole %\n%a       Jour de la semaine en abrégé\n%A        Jour de la semaine\n%b      Mois abrégé\n%B     Mois\n%d        Jour du mois (01-31)\n%H        Heure au format 24h (00-23)\n%I     Heure au format 12h (01-12)\n%m     Mois en nombre (01-12)\n%M      Minute (00-59)\n%p      Désignation AM ou PM\n%S        Seconde (00-61)\n%y     Année, 2 derniers chiffres (00-99)\n%Y      Année\n%z       Nom ou abbréviation du fuseau horaire/n     ou décalage ISO 8601 par rapport à l'UTC\n%Z        Nom ou abbréviation du fuseau horaire\n"
112
+FilenameFormatting.TT="%CCYY   Année, 4 chiffres\n%YY      Année, 2 derniers chiffres (00-99)\n%MM     Mois en nombre (01-12)\n%DD     Jour du mois avec zéro d'alignement (01-31)\n%hh        Heure au format 24 heures (00-23)\n%mm      Minute (00-59)\n%ss     Seconde (00-61)\n%%     Symbole %\n%a       Jour de la semaine en abrégé\n%A        Jour de la semaine\n%b      Mois en abrégé\n%B      Mois\n%d        Jour du mois avec zéro d'alignement (01-31)\n%H     Heure au format 24 heures (00-23)\n%I       Heure au format 12 heures (01-12)\n%m       Mois en nombre (01-12)\n%M      Minute (00-59)\n%p      Désignation AM ou PM\n%S        Seconde (00-61)\n%y     Année, 2 derniers chiffres (00-99)\n%Y      Année\n%z       Décalage ISO 8601 par rapport à l'UTC\n%Z       Nom ou abréviation du fuseau horaire\n"
113
 
114
 Basic.Settings.Video="Vidéo"
115
 Basic.Settings.Video.Adapter="Périphérique vidéo"
116
@@ -674,7 +688,7 @@
117
 Basic.Settings.Video.Numerator="Numérateur"
118
 Basic.Settings.Video.Denominator="Dénominateur"
119
 Basic.Settings.Video.Renderer="Rendu"
120
-Basic.Settings.Video.InvalidResolution="Valeurs de résolution non-valides.  Elles doivent être au format [largeur]x[hauteur] (par exemple 1920x1080)"
121
+Basic.Settings.Video.InvalidResolution="Valeurs de résolution non-valides. Elles doivent être au format [largeur]x[hauteur] (par exemple 1920x1080)"
122
 Basic.Settings.Video.CurrentlyActive="La sortie vidéo est actuellement active. Veuillez éteindre toutes les sorties avant de modifier vos paramètres vidéo."
123
 Basic.Settings.Video.DisableAero="Désactiver Aero"
124
 
125
@@ -685,7 +699,8 @@
126
 Basic.Settings.Audio="Audio"
127
 Basic.Settings.Audio.SampleRate="Fréquence d'échantillonnage"
128
 Basic.Settings.Audio.Channels="Canaux"
129
-Basic.Settings.Audio.MeterDecayRate="Vitesse de dégradation audiométrique"
130
+Basic.Settings.Audio.Meters="Mesures"
131
+Basic.Settings.Audio.MeterDecayRate="Vitesse de relâche"
132
 Basic.Settings.Audio.MeterDecayRate.Fast="Rapide"
133
 Basic.Settings.Audio.MeterDecayRate.Medium="Moyenne (Type I PPM)"
134
 Basic.Settings.Audio.MeterDecayRate.Slow="Lente (Type II PPM)"
135
@@ -696,12 +711,13 @@
136
 Basic.Settings.Audio.MultichannelWarning="Pour de besoins de diffusion, vérifiez que votre service de diffusion supporte l'intégration et la lecture du son multicanal. Twitch, Facebook 360 Live, Mixer RTMP ou Smashcast sont des exemples de services où le son multicanal est entièrement supporté. Bien que Facebook Live et YouTube Live acceptent l'intégration de son multicanal, Facebook Live transcode en stéréo, et YouTube Live ne lit que deux canaux.\n\nLes filtres audio d'OBS sont compatibles avec le son multicanal, toutefois le support des plugins VST n'est pas garanti."
137
 Basic.Settings.Audio.MultichannelWarning.Title="Activer le son multicanal ?"
138
 Basic.Settings.Audio.MultichannelWarning.Confirm="Êtes vous sûr de vouloir activer le son multicanal ?"
139
-Basic.Settings.Audio.DesktopDevice="Périphérique Audio du Bureau"
140
-Basic.Settings.Audio.DesktopDevice2="Périphérique Audio du Bureau 2"
141
-Basic.Settings.Audio.AuxDevice="Périphérique Audio Micro/Auxiliaire"
142
-Basic.Settings.Audio.AuxDevice2="Périphérique Audio Micro/Auxiliaire 2"
143
-Basic.Settings.Audio.AuxDevice3="Périphérique Audio Micro/Auxiliaire 3"
144
-Basic.Settings.Audio.AuxDevice4="Périphérique Audio Micro/Auxiliaire 4"
145
+Basic.Settings.Audio.Devices="Périphériques"
146
+Basic.Settings.Audio.DesktopDevice="Audio du Bureau"
147
+Basic.Settings.Audio.DesktopDevice2="Audio du Bureau 2"
148
+Basic.Settings.Audio.AuxDevice="Audio Micro/Auxiliaire"
149
+Basic.Settings.Audio.AuxDevice2="Audio Micro/Auxiliaire 2"
150
+Basic.Settings.Audio.AuxDevice3="Audio Micro/Auxiliaire 3"
151
+Basic.Settings.Audio.AuxDevice4="Audio Micro/Auxiliaire 4"
152
 Basic.Settings.Audio.EnablePushToMute="Activer \"Appuyer-pour-désactiver\" (Push-to-mute)"
153
 Basic.Settings.Audio.PushToMuteDelay="Délai du \"Appuyer-pour-désactiver\" (Push-to-mute)"
154
 Basic.Settings.Audio.EnablePushToTalk="Activer le \"Appuyer-pour-parler\" (Push-to-talk)"
155
@@ -719,11 +735,11 @@
156
 Basic.Settings.Advanced.FormatWarning="Attention : les formats de couleur autres que NV12 sont principalement destinés à l'enregistrement, et ne sont pas recommandés pour le streaming. Le streaming peut pâtir d'une utilisation élevée du CPU due à la conversion de format de couleur."
157
 Basic.Settings.Advanced.Audio.BufferingTime="Temps de mise en mémoire tampon audio"
158
 Basic.Settings.Advanced.Video.ColorFormat="Format de couleur"
159
-Basic.Settings.Advanced.Video.ColorSpace="Espace de couleur YUV"
160
+Basic.Settings.Advanced.Video.ColorSpace="Espace de couleurs YUV"
161
 Basic.Settings.Advanced.Video.ColorRange="Gamme de couleurs YUV"
162
 Basic.Settings.Advanced.Video.ColorRange.Partial="Partielle"
163
 Basic.Settings.Advanced.Video.ColorRange.Full="Complète"
164
-Basic.Settings.Advanced.Audio.MonitoringDevice="Dispositif de Monitoring audio"
165
+Basic.Settings.Advanced.Audio.MonitoringDevice="Périphérique de Monitoring Audio"
166
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Par défaut"
167
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Désactiver l'atténuation audio de Windows (ducking)"
168
 Basic.Settings.Advanced.StreamDelay="Retard du stream"
169
@@ -740,7 +756,7 @@
170
 
171
 Basic.AdvAudio="Propriétés Audio Avancées"
172
 Basic.AdvAudio.Name="Nom"
173
-Basic.AdvAudio.Volume="Volume (%)"
174
+Basic.AdvAudio.Volume="Volume"
175
 Basic.AdvAudio.Mono="Convertir en mono"
176
 Basic.AdvAudio.Balance="Balance"
177
 Basic.AdvAudio.SyncOffset="Décalage de la synchronisation (ms)"
178
@@ -796,7 +812,7 @@
179
 Hotkeys.AppleKeypadDecimal=". (Pavé numérique)"
180
 Hotkeys.AppleKeypadEqual="= (Pavé numérique)"
181
 Hotkeys.MouseButton="Souris %1"
182
-Hotkeys.Escape="Echap"
183
+Hotkeys.Escape="Esc"
184
 
185
 Mute="Couper l'Audio"
186
 Unmute="Restaurer l'Audio"
187
@@ -816,6 +832,7 @@
188
 NoSources.Title="Aucune source"
189
 NoSources.Text="Il semble que vous n'ayez pas ajouté de source vidéo pour le moment, vous aurez donc un écran noir. Êtes-vous sûr de vouloir continuer ?"
190
 NoSources.Text.AddSource="Vous pouvez à tout moment ajouter des sources en cliquant sur l'icone + en bas du cadre Sources de la fenêtre principale."
191
+NoSources.Label="Vous n'avez aucune source.\nCliquez sur le bouton \"+\" ci-dessous,\nou cliquez avec le bouton droit ici pour en ajouter une."
192
 
193
 ChangeBG="Définir la couleur"
194
 CustomColor="Couleur personnalisée"
195
@@ -834,3 +851,5 @@
196
 ResizeOutputSizeOfSource.Text="Les résolutions de base et de sortie seront redimensionnées à la taille de la source actuelle."
197
 ResizeOutputSizeOfSource.Continue="Voulez-vous continuer ?"
198
 
199
+PreviewTransition="Prévisualiser la transition"
200
+
201
obs-studio-23.1.0.tar.xz/UI/data/locale/gd-GB.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/gd-GB.ini Changed
75
 
1
@@ -246,6 +246,7 @@
2
 Output.StartReplayFailed="Cha deach leinn tòiseachadh air bufair na h-ath-chluiche"
3
 Output.StartFailedGeneric="Cha deach leinn tòiseachadh air an às-chur. Thoir sùil air an loga airson barrachd fiosrachaidh.\n\nAn aire: Ma tha thu a’ cleachdadh inneal-còdachaidh NVENC no AMD, dèan cinneach gu bheil na draibhearan video agad cho ùr ’s a ghabhas."
4
 
5
+
6
 Output.ConnectFail.Title="Cha deach leinn ceangal a dhèanamh"
7
 Output.ConnectFail.BadPath="Tha slighe no URL a’ cheangail mì-dhligheach. Thoir sùil air na roghainnean agad feuch a bheil iad mar bu chòir."
8
 Output.ConnectFail.ConnectFailed="Dh’fhàillig an ceangal ris an fhrithealaiche"
9
@@ -253,6 +254,7 @@
10
 Output.ConnectFail.Error="Thachair mearachd ris nach robh dùil nuair a dh’fheuch sinn ri ceangal ris an fhrithealaiche. Tha barrachd fiosrachaidh ann am faidhle an loga."
11
 Output.ConnectFail.Disconnected="Chaidh an ceangal dhan fhrithealaiche a bhriseadh."
12
 
13
+
14
 Output.RecordFail.Title="Cha deach leinn tòiseachadh air a’ chlàradh"
15
 Output.RecordFail.Unsupported="Cha chuirear taic ri fòrmat an às-chuir no cha chuir e taic ri corr is aon traca fuaime. Thoir sùil air na roghainnean agad is feuch ris a-rithist."
16
 Output.RecordNoSpace.Title="Chan eil àite gu leòr air an diosga"
17
@@ -300,6 +302,7 @@
18
 
19
 Basic.Main.PreviewConextMenu.Enable="Cuir an ro-shealladh an comas"
20
 
21
+
22
 ScaleFiltering="Criathradh sgèilidh"
23
 ScaleFiltering.Point="Puing"
24
 ScaleFiltering.Bilinear="Dà-loidhneach"
25
@@ -677,7 +680,6 @@
26
 Basic.Settings.Audio="Fuaim"
27
 Basic.Settings.Audio.SampleRate="Reat shampallan"
28
 Basic.Settings.Audio.Channels="Seanailean"
29
-Basic.Settings.Audio.MeterDecayRate="Reat crìonaidh a’ mheidheadair-fhuaime"
30
 Basic.Settings.Audio.MeterDecayRate.Fast="Luath"
31
 Basic.Settings.Audio.MeterDecayRate.Medium="Meadhanach (PPM seòrsa I)"
32
 Basic.Settings.Audio.MeterDecayRate.Slow="Slaodach (PPM seòrsa II)"
33
@@ -688,12 +690,6 @@
34
 Basic.Settings.Audio.MultichannelWarning="Ma tha thu a’ dèanamh sruthadh, dearbh gun doir an t-seirbheis sruthaidh agad taic an dà chuid ri ion-chur is cluich fuaime cuairteachaidh. Mar eisimpleir, cuiridh Twitch, Facebook 360 Live, Mixer RTMP is Smashcast làn-taic ri fuaim cuairteachaidh. Ged a ghabhas Facebook Live is youTube Live ri sruthan fuaime cuairteachaidh, nì Facebook Live measgachadh sìos stereo dheth agus cha chluich YouTube live ach dà sheanail.\n\nTha criathragan fuaime OBS co-chòrdail ri fuaim cuairteachaidh ged nach doir sinn barantas gun obraich plugain VST."
35
 Basic.Settings.Audio.MultichannelWarning.Title="A bheil thu airson fuaim cuairteachaidh a chur an comas?"
36
 Basic.Settings.Audio.MultichannelWarning.Confirm="A bheil thu cinnteach gu bheil thu airson fuaim cuairteachaidh a chur an comas?"
37
-Basic.Settings.Audio.DesktopDevice="Uidheam fuaime an deasg"
38
-Basic.Settings.Audio.DesktopDevice2="Uidheam fuaime an deasg 2"
39
-Basic.Settings.Audio.AuxDevice="Uidheam fuaime micreofoin/taice"
40
-Basic.Settings.Audio.AuxDevice2="Uidheam fuaime micreofoin/taice 2"
41
-Basic.Settings.Audio.AuxDevice3="Uidheam fuaime micreofoin/taice 3"
42
-Basic.Settings.Audio.AuxDevice4="Uidheam fuaime micreofoin/taice 4"
43
 Basic.Settings.Audio.EnablePushToMute="Cuir an comas brùth-airson-mùchadh"
44
 Basic.Settings.Audio.PushToMuteDelay="Dàil air brùth-airson-mùchadh"
45
 Basic.Settings.Audio.EnablePushToTalk="Cuir an comas brùth-airson-bruidhinn"
46
@@ -708,14 +704,11 @@
47
 Basic.Settings.Advanced.General.ProcessPriority.Normal="Àbhaisteach"
48
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Nas ìsle na àbhaisteach"
49
 Basic.Settings.Advanced.General.ProcessPriority.Idle="’Na tàmh"
50
-Basic.Settings.Advanced.FormatWarning="Rabhadh: Chaidh fòrmatan datha seach NV12 a dhealbhachadh a chum clàraidh agus cha molamaid airson sruthadh iad.  Cleachdaidh an sruthadh barrachd dhen CPU ri linn iompachadh air fòrmat nan dathan."
51
+Basic.Settings.Advanced.FormatWarning="Rabhadh: Chaidh fòrmatan datha seach NV12 a dhealbhachadh a chum clàraidh agus cha molamaid airson sruthadh iad. Cleachdaidh an sruthadh barrachd dhen CPU ri linn iompachadh air fòrmat nan dathan."
52
 Basic.Settings.Advanced.Audio.BufferingTime="Ùine bufair na fuaime"
53
 Basic.Settings.Advanced.Video.ColorFormat="Fòrmat nan dathan"
54
-Basic.Settings.Advanced.Video.ColorSpace="Spàs dhathan YUV"
55
-Basic.Settings.Advanced.Video.ColorRange="Rainse dhathan YUV"
56
 Basic.Settings.Advanced.Video.ColorRange.Partial="Leth-phàirteach"
57
 Basic.Settings.Advanced.Video.ColorRange.Full="Làn"
58
-Basic.Settings.Advanced.Audio.MonitoringDevice="Uidheam sgrùdadh fuaime"
59
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Tùsail"
60
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Cuir à comas tumadh fuaime Windows"
61
 Basic.Settings.Advanced.StreamDelay="Dàil an t-sruthaidh"
62
@@ -732,7 +725,6 @@
63
 
64
 Basic.AdvAudio="Roghainnean adhartach na fuaime"
65
 Basic.AdvAudio.Name="Ainm"
66
-Basic.AdvAudio.Volume="Àirde (%)"
67
 Basic.AdvAudio.Mono="Measgaich sìos gu mono"
68
 Basic.AdvAudio.Balance="Balans"
69
 Basic.AdvAudio.SyncOffset="Frìth-àireamh an t-sioncronachaidh (ms)"
70
@@ -824,3 +816,4 @@
71
 ResizeOutputSizeOfSource.Text="Thèid meud na dùmhlachd-bhreacaidh bunasaich ’s tè an às-chuir a shuidheachadh air meud an tùis làithrich."
72
 ResizeOutputSizeOfSource.Continue="A bheil thu airson leantainn air adhart?"
73
 
74
+
75
obs-studio-23.1.0.tar.xz/UI/data/locale/gl-ES.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/gl-ES.ini Changed
73
 
1
@@ -88,12 +88,14 @@
2
 ConfirmRemove.Text="Tes a certeza de querer eliminar '$1'?"
3
 
4
 
5
+
6
 Output.ConnectFail.Title="Erro ao se conectar"
7
 Output.ConnectFail.BadPath="Camiño ou URL de conexión non válidos. Por favor, comproba a configuración para confirmar de que son correctos."
8
 Output.ConnectFail.ConnectFailed="Erro ao conectar co servidor"
9
 Output.ConnectFail.Error="Produciuse un erro inesperado ao tentar conectar co servidor. Máis información no ficheiro de rexistro."
10
 Output.ConnectFail.Disconnected="Desconectado do servidor."
11
 
12
+
13
 Output.RecordFail.Title="Erro ao iniciar a gravación"
14
 
15
 Output.BadPath.Title="Camiño do ficheiro incorrecto"
16
@@ -113,7 +115,7 @@
17
 Remux.ExitUnfinished="A conversión non rematou, detela agora podería provocar que o ficheiro final fose inutilizable.\nTes a certeza de querer deter a conversión?"
18
 
19
 UpdateAvailable="Nova actualización dispoñible"
20
-UpdateAvailable.Text="Versión %1.%2.%3 xa dispoñible.  <a href='%4'>Preme aquí para descargala</a>"
21
+UpdateAvailable.Text="Versión %1.%2.%3 xa dispoñible. <a href='%4'>Preme aquí para descargala</a>"
22
 
23
 Basic.DesktopDevice1="Audio do escritorio"
24
 Basic.DesktopDevice2="Audio do escritorio 2"
25
@@ -130,6 +132,7 @@
26
 
27
 
28
 
29
+
30
 Basic.Main.AddSceneDlg.Title="Engadir escena"
31
 Basic.Main.AddSceneDlg.Text="Por favor, insire un nome para a escena"
32
 
33
@@ -334,8 +337,8 @@
34
 Basic.Settings.Video.Numerator="Numerador"
35
 Basic.Settings.Video.Denominator="Denominador"
36
 Basic.Settings.Video.Renderer="Procesador"
37
-Basic.Settings.Video.InvalidResolution="Valor da resolución non válido.  Debe ser [width] x [height] (por exemplo, 1920 x 1080)"
38
-Basic.Settings.Video.CurrentlyActive="A saída de vídeo está actualmente activa.  Por favor, apaga calquera saída para cambiar a configuración de vídeo."
39
+Basic.Settings.Video.InvalidResolution="Valor da resolución non válido. Debe ser [width] x [height] (por exemplo, 1920 x 1080)"
40
+Basic.Settings.Video.CurrentlyActive="A saída de vídeo está actualmente activa. Por favor, apaga calquera saída para cambiar a configuración de vídeo."
41
 
42
 Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (máis rápido, pero borroso de se escalar a imaxe)"
43
 Basic.Settings.Video.DownscaleFilter.Bicubic="Bicúbico (escalamento fino, 16 mostras)"
44
@@ -344,23 +347,15 @@
45
 Basic.Settings.Audio="Audio"
46
 Basic.Settings.Audio.SampleRate="Intervalo da mostra"
47
 Basic.Settings.Audio.Channels="Canles"
48
-Basic.Settings.Audio.DesktopDevice="Dispositivo de audio de escritorio"
49
-Basic.Settings.Audio.DesktopDevice2="Dispositivo de audio de escritorio 2"
50
-Basic.Settings.Audio.AuxDevice="Dispositivo de audio mic./auxiliar"
51
-Basic.Settings.Audio.AuxDevice2="Dispositivo de audio mic./auxiliar 2"
52
-Basic.Settings.Audio.AuxDevice3="Dispositivo de audio mic./auxiliar 3"
53
 
54
 Basic.Settings.Advanced="Avanzado"
55
 Basic.Settings.Advanced.Audio.BufferingTime="Tempo do búfer de audio"
56
 Basic.Settings.Advanced.Video.ColorFormat="Formato da cor"
57
-Basic.Settings.Advanced.Video.ColorSpace="Espazo de cor YUV"
58
-Basic.Settings.Advanced.Video.ColorRange="Gama de cor YUV"
59
 Basic.Settings.Advanced.Video.ColorRange.Partial="Parcial"
60
 Basic.Settings.Advanced.Video.ColorRange.Full="Completo"
61
 
62
 Basic.AdvAudio="Propiedades de audio avanzadas"
63
 Basic.AdvAudio.Name="Nome"
64
-Basic.AdvAudio.Volume="Volume (%)"
65
 Basic.AdvAudio.Mono="Remesturar a mono"
66
 Basic.AdvAudio.SyncOffset="Sincronización Offset (ms)"
67
 Basic.AdvAudio.AudioTracks="Pistas"
68
@@ -411,3 +406,4 @@
69
 
70
 
71
 
72
+
73
obs-studio-23.1.0.tar.xz/UI/data/locale/he-IL.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/he-IL.ini Changed
220
 
1
@@ -49,7 +49,7 @@
2
 Enable="אפשר"
3
 DisableOSXVSync="בטל סנכרון אנכי OSX"
4
 ResetOSXVSyncOnExit="איפוס סנכרון אנכי OSX ביציאה"
5
-HighResourceUsage="קידוד עמוס מידי!  שקול להנמיך הגדרות וידאו או שימוש בקידוד מהיר יותר."
6
+HighResourceUsage="קידוד עמוס מידי! שקול להנמיך הגדרות וידאו או שימוש בקידוד מהיר יותר."
7
 Transition="מעבר"
8
 QuickTransitions="מעברים מהירים"
9
 Left="שמאל"
10
@@ -81,7 +81,7 @@
11
 Group="קבוצה"
12
 
13
 AlreadyRunning.Title="OBS פועל כבר"
14
-AlreadyRunning.Text="OBS פועל כבר!  אלא אם התכוונת לעשות את זה, אנא סגור כל מופע קיים לפני נסיון להפעיל מופע חדש.  אנא בדוק אם קיים מופע  הגדר ממוזער במגש המערכת."
15
+AlreadyRunning.Text="OBS פועל כבר! אלא אם התכוונת לעשות את זה, אנא סגור כל מופע קיים לפני נסיון להפעיל מופע חדש. אנא בדוק אם קיים מופע הגדר ממוזער במגש המערכת."
16
 AlreadyRunning.LaunchAnyway="הפעל בכל מקרה"
17
 
18
 
19
@@ -101,7 +101,7 @@
20
 BandwidthTest.Region.Asia="אסיה"
21
 BandwidthTest.Region.Other="אחר"
22
 
23
-Basic.FirstStartup.RunWizard="האם ברצונך להפעיל את אשף קביעת התצורה האוטומטית?  באפשרותך להגדיר את ההגדרות באופן ידני על ידי לחיצה על הלחצן ' קביעות ' בחלון הראשי."
24
+Basic.FirstStartup.RunWizard="האם ברצונך להפעיל את אשף קביעת התצורה האוטומטית? באפשרותך להגדיר את ההגדרות באופן ידני על ידי לחיצה על הלחצן ' קביעות ' בחלון הראשי."
25
 Basic.FirstStartup.RunWizard.NoClicked="אם תשנה את דעתך, באפשרותך להפעיל שוב את אשף קביעת התצורה האוטומטית בכל עת מתפריט הכלים."
26
 
27
 Basic.AutoConfig="אשף תצורה אוטומטית"
28
@@ -117,13 +117,13 @@
29
 Basic.AutoConfig.VideoPage.FPS.UseCurrent="השתמש בנוכחי (%1)"
30
 Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="60 או 30, אבל העדף 60 כאשר אפשרי"
31
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="60 או 30, אבל העדף רזולוציה גבוהה"
32
-Basic.AutoConfig.VideoPage.CanvasExplanation="הערה: רזוליית הבד (בסיס) הוא לא בהכרח זהה לרזולוצי ההזרמה או הקלטה.  ייתכן שרזולוציית הזרמה/הקלטה תוקטן בכדי להפחית את דרישות קצב הנתונים או המשאבים."
33
+Basic.AutoConfig.VideoPage.CanvasExplanation="הערה: רזוליית הבד (בסיס) הוא לא בהכרח זהה לרזולוצי ההזרמה או הקלטה. ייתכן שרזולוציית הזרמה/הקלטה תוקטן בכדי להפחית את דרישות קצב הנתונים או המשאבים."
34
 Basic.AutoConfig.StreamPage="מידע על הזרם"
35
 Basic.AutoConfig.StreamPage.SubTitle="אנא הזן את פרטי הזרם"
36
 Basic.AutoConfig.StreamPage.ConnectAccount="התחבר לחשבון (אופציונלי)"
37
 Basic.AutoConfig.StreamPage.DisconnectAccount="נתק את חשבון"
38
 Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Title="נתק את חשבון?"
39
-Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="שינוי זה יחול באופן מיידי.  האם אתה בטוח שברצונך לנתק את החשבון שלך?"
40
+Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="שינוי זה יחול באופן מיידי. האם אתה בטוח שברצונך לנתק את החשבון שלך?"
41
 Basic.AutoConfig.StreamPage.UseStreamKey="השתמש במפתח הזרמת נתונים"
42
 Basic.AutoConfig.StreamPage.Service="שירות"
43
 Basic.AutoConfig.StreamPage.Service.ShowAll="הצג הכל..."
44
@@ -150,7 +150,7 @@
45
 Basic.AutoConfig.TestPage.Result.StreamingEncoder="מקודד זרימה"
46
 Basic.AutoConfig.TestPage.Result.RecordingEncoder="מקודד הקלטה"
47
 Basic.AutoConfig.TestPage.Result.Header="התוכנית קבעה כי אלה ההגדרות המיטביות עבורך:"
48
-Basic.AutoConfig.TestPage.Result.Footer="כדי להשתמש בהגדרות אלה, לחץ על החל הגדרות.  כדי להגדיר מחדש את האשף ולנסות שוב, לחץ על אחורה.  להגדיר ידנית את הגדרות, לחץ על ביטול ולאחר מכן פתח את הגדרות."
49
+Basic.AutoConfig.TestPage.Result.Footer="כדי להשתמש בהגדרות אלה, לחץ על החל הגדרות. כדי להגדיר מחדש את האשף ולנסות שוב, לחץ על אחורה. להגדיר ידנית את הגדרות, לחץ על ביטול ולאחר מכן פתח את הגדרות."
50
 
51
 Basic.Stats="סטטיסטיקות"
52
 Basic.Stats.CPUUsage="שימוש במעבד"
53
@@ -181,7 +181,6 @@
54
 Updater.NoUpdatesAvailable.Text="אין עדכונים זמינים כעת"
55
 Updater.FailedToLaunch="נכשלה הפעלת העידכון"
56
 Updater.GameCaptureActive.Title="לכידת משחק פעיל"
57
-Updater.GameCaptureActive.Text="לכידת משחק נמצאת כעת בשימוש. בבקשה סגור את המשחקים/תוכנות שנמצאים בלכידה (או הפעל מחדש את ווינדוס) ונסה שינת."
58
 
59
 QuickTransitions.SwapScenes="החלף סצינות תצוגה מקדימה/פלט לאחר המעבר"
60
 QuickTransitions.SwapScenesTT="החלף הסצינות של התצוגה המקדימה ושל הפלט לאחר המעבר (באם הסצינה המקורית של הפלט עדיין קיימת). \n פעולה זו לא תבטל כל שינוי שייתכן ובוצע לסצינה המקורית של הפלט."
61
@@ -218,7 +217,7 @@
62
 
63
 
64
 ConfirmExit.Title="יציאה מ-OBS?"
65
-ConfirmExit.Text="תוכנת OBS פעילה כעת.  כל הזרמת נתונים/הקלטות ייסגרו.  האם אתה בטוח שאתה רוצה לצאת?"
66
+ConfirmExit.Text="תוכנת OBS פעילה כעת. כל הזרמת נתונים/הקלטות ייסגרו. האם אתה בטוח שאתה רוצה לצאת?"
67
 
68
 ConfirmRemove.Title="אשר הסרה"
69
 ConfirmRemove.Text="האם אתה בטוח שברצונך להסיר את '$1'?"
70
@@ -229,15 +228,17 @@
71
 Output.StartReplayFailed="נכשלה הפעלת מאגר החוזר"
72
 Output.StartFailedGeneric="הפלט נכשל. בבקשה בדוק את הרישומים עבור. \n\nNote: אם אתה משתמש בNVNEC או AMD מקודדים, הקפד שמנהלי ההתקן של הכרטיס מסך מעודכנים."
73
 
74
+
75
 Output.ConnectFail.Title="ההתחברות נכשלה"
76
-Output.ConnectFail.BadPath="URL לא חוקי של נתיב או חיבור.  נא בדוק את ההגדרות שלך כדי לוודא כי הם נכונים."
77
+Output.ConnectFail.BadPath="URL לא חוקי של נתיב או חיבור. נא בדוק את ההגדרות שלך כדי לוודא כי הם נכונים."
78
 Output.ConnectFail.ConnectFailed="ההתחברות לשרת נכשלה"
79
 Output.ConnectFail.InvalidStream="לא ניתן להתחבר לערוץ שצויין או למפתח זרם הנתונים, נא בדוק שנית את מפתח זרם הנתונים. אם הוא נכון, ככל הנראה יש בעיה בהתחברות לשרת."
80
-Output.ConnectFail.Error="אירעה שגיאה בלתי צפויה בעת ניסיון להתחבר לשרת.  מידע נוסף בקובץ יומן הרישום."
81
+Output.ConnectFail.Error="אירעה שגיאה בלתי צפויה בעת ניסיון להתחבר לשרת. מידע נוסף בקובץ יומן הרישום."
82
 Output.ConnectFail.Disconnected="התנתקת מהשרת."
83
 
84
+
85
 Output.RecordFail.Title="התחלת ההקלטה נכשלה"
86
-Output.RecordFail.Unsupported="תבנית הפלט לא נתמכת או לא תומכת ביותר מרצועת שמע אחת.  נא בדוק את ההגדרות ונסה שוב."
87
+Output.RecordFail.Unsupported="תבנית הפלט לא נתמכת או לא תומכת ביותר מרצועת שמע אחת. נא בדוק את ההגדרות ונסה שוב."
88
 Output.RecordNoSpace.Title="אין די שטח דיסק"
89
 Output.RecordNoSpace.Msg="אין די שטח דיסק כדי להמשיך הקלטה."
90
 Output.RecordError.Title="שגיאה הקלטה"
91
@@ -246,7 +247,7 @@
92
 Output.ReplayBuffer.NoHotkey.Msg="אין hotkey שמור למאגר החוזר. בבקשה הגדר את \"שמור\" hotkey לשימוש עבור שמירת מאגר חוזר להקלטות."
93
 
94
 Output.BadPath.Title="נתיב קובץ לא תקין"
95
-Output.BadPath.Text="נתיב פלט הקובץ שהוגדר אינו חוקי.  נא בדוק את הגדרות כדי לוודא שנתיב קובץ תקני נקבע."
96
+Output.BadPath.Text="נתיב פלט הקובץ שהוגדר אינו חוקי. נא בדוק את הגדרות כדי לוודא שנתיב קובץ תקני נקבע."
97
 
98
 LogReturnDialog="עידכון יומן הצליח"
99
 LogReturnDialog.CopyURL="העתק קישור"
100
@@ -263,7 +264,7 @@
101
 Remux.ExitUnfinished="ההמרה לא הסתיימה, עצירה עכשיו עלולה להפוך את קובץ היעד לא שמיש. \n אתה בטוח שאתה רוצה לעצור את ההמרה?"
102
 
103
 UpdateAvailable="עידכון חדש זמין"
104
-UpdateAvailable.Text="גירסה %1.%2.%3 זמין כעת.  <a href='%4'> לחץ כאן כדי להוריד</a>"
105
+UpdateAvailable.Text="גירסה %1.%2.%3 זמין כעת. <a href='%4'> לחץ כאן כדי להוריד</a>"
106
 
107
 Basic.DesktopDevice1="אודיו שולחן עבודה"
108
 Basic.DesktopDevice2="אודיו שולחן עבודה 2"
109
@@ -277,6 +278,7 @@
110
 
111
 Basic.Main.PreviewConextMenu.Enable="אפשר תצוגה מקדימה"
112
 
113
+
114
 ScaleFiltering="מסנן קנה מידה"
115
 ScaleFiltering.Point="נקודה"
116
 ScaleFiltering.Bilinear="ביליניארי"
117
@@ -331,7 +333,7 @@
118
 Basic.PropertiesWindow.SelectColor="בחר צבע"
119
 Basic.PropertiesWindow.SelectFont="בחר גופן"
120
 Basic.PropertiesWindow.ConfirmTitle="הגדרות שונו"
121
-Basic.PropertiesWindow.Confirm="יש שינויים שלא נשמרו.  האם ברצונך לשמור אותם?"
122
+Basic.PropertiesWindow.Confirm="יש שינויים שלא נשמרו. האם ברצונך לשמור אותם?"
123
 Basic.PropertiesWindow.NoProperties="אין מאפיינים זמינים"
124
 Basic.PropertiesWindow.AddFiles="הוסף קבצים"
125
 Basic.PropertiesWindow.AddDir="הוסף ספריה"
126
@@ -488,7 +490,7 @@
127
 
128
 Basic.Settings.ProgramRestart="יש להפעיל מחדש את התוכנה בכדי שהגדרות האלה ייכנסו לתוקף."
129
 Basic.Settings.ConfirmTitle="אשר את השינויים"
130
-Basic.Settings.Confirm="קיימים שינויים שלא נשמרו.  האם לשמור שינויים?"
131
+Basic.Settings.Confirm="קיימים שינויים שלא נשמרו. האם לשמור שינויים?"
132
 
133
 Basic.Settings.General="כללי"
134
 Basic.Settings.General.Theme="ערכת עיצוב"
135
@@ -536,7 +538,7 @@
136
 Basic.Settings.Output.ReplayBuffer.SecondsMax="זמן החוזר המרבי (בשניות)"
137
 Basic.Settings.Output.ReplayBuffer.MegabytesMax="זיכרון מרבי (מגה-בתים)"
138
 Basic.Settings.Output.ReplayBuffer.Estimate="הערך שימוש בזיכרון: %1 MB"
139
-Basic.Settings.Output.ReplayBuffer.EstimateUnknown="אין אפשרות להעריך את השימוש בזיכרון.  נא הגדר מגבלת זיכרון מירבי."
140
+Basic.Settings.Output.ReplayBuffer.EstimateUnknown="אין אפשרות להעריך את השימוש בזיכרון. נא הגדר מגבלת זיכרון מירבי."
141
 Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(הערה: הקפד להגדיר hotkey עבור מאגר החוזר במקטע מקשי הקיצור)"
142
 Basic.Settings.Output.ReplayBuffer.Prefix="קידומת שם קובץ מאגר החוזר"
143
 Basic.Settings.Output.ReplayBuffer.Suffix="סיומת"
144
@@ -549,7 +551,7 @@
145
 Basic.Settings.Output.Simple.Warn.VideoBitrate="אזהרה: קצב הזרמת הוידאו יוגדר ל %1, כאשר זה הגבול העליון עבור שירות הזרמת הנתונים הנוכחי. אם אתה בטוח שאתה רוצה לעבור מעל %1, אפשר את אפשרויות קידוד מתקדמות ובטל סימון \"אכוף הגבלות קצב הזרמת נתונים\"."
146
 Basic.Settings.Output.Simple.Warn.AudioBitrate="אזהרה: קצב הזרמת האודיו יוגדר ל %1, כאשר זה הגבול העליון עבור שירות הזרמת הנתונים הנוכחי. אם אתה בטוח שאתה רוצה לעבור מעל %1, אפשר את אפשרויות קידוד מתקדמות ובטל סימון \"אכוף הגבלות קצב הזרמת נתונים\"."
147
 Basic.Settings.Output.Simple.Warn.Encoder="אזהרה: הקלטה עם מקודד תוכנה באיכות שונה מאשר זרם הנתונים ידרוש שימוש במשאבי מעבד נוספים אם מתבצעת הקלטה וזרם נתונים במקביל."
148
-Basic.Settings.Output.Simple.Warn.Lossless="אזהרה: איכות ללא אובדן יוצר גדלי קבצים גדולים מאוד!  איכות ללא אובדן נתונים יכול להשתמש ביותר מ-7 ג'יגה-בתים של שטח דיסק לדקה ברזולוציות גבוהות ופריימים.  שימוש באיכות ללא אובדן אינו מומלץ  להקלטות ארוכות אלא אם קיים שטח דיסק פנוי גדול מאד."
149
+Basic.Settings.Output.Simple.Warn.Lossless="אזהרה: איכות ללא אובדן יוצר גדלי קבצים גדולים מאוד! איכות ללא אובדן נתונים יכול להשתמש ביותר מ-7 ג'יגה-בתים של שטח דיסק לדקה ברזולוציות גבוהות ופריימים. שימוש באיכות ללא אובדן אינו מומלץ להקלטות ארוכות אלא אם קיים שטח דיסק פנוי גדול מאד."
150
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="האם אתה בטוח שברצונך להשתמש באיכות ללא אובדן איכות?"
151
 Basic.Settings.Output.Simple.Warn.Lossless.Title="אזהרה איכות ללא אובדן איכות!"
152
 Basic.Settings.Output.Simple.Encoder.Software="תוכנה (x264)"
153
@@ -625,7 +627,7 @@
154
 Basic.Settings.Video.Denominator="מכנה"
155
 Basic.Settings.Video.Renderer="מעבד"
156
 Basic.Settings.Video.InvalidResolution="ערך רזולוציה לא חוקי. חייב להיות [width]x[height] (לדוגמה 1920x1080)"
157
-Basic.Settings.Video.CurrentlyActive="פלט וידאו פעיל כעת.  נא כבה את כל הפלטים בכדי לשנות הגדרות וידאו."
158
+Basic.Settings.Video.CurrentlyActive="פלט וידאו פעיל כעת. נא כבה את כל הפלטים בכדי לשנות הגדרות וידאו."
159
 Basic.Settings.Video.DisableAero="בטל את ממשק Aero"
160
 
161
 Basic.Settings.Video.DownscaleFilter.Bilinear="דו-ליניארי (מהיר ביותר, מטושטש בשינוי קנה מידה)"
162
@@ -635,7 +637,6 @@
163
 Basic.Settings.Audio="אודיו"
164
 Basic.Settings.Audio.SampleRate="קצב דגימה"
165
 Basic.Settings.Audio.Channels="ערוצים"
166
-Basic.Settings.Audio.MeterDecayRate="קצב דעיכה ממד שמע"
167
 Basic.Settings.Audio.MeterDecayRate.Fast="מהיר"
168
 Basic.Settings.Audio.MeterDecayRate.Medium="בינוני (סוג I PPM)"
169
 Basic.Settings.Audio.MeterDecayRate.Slow="איטי (סוג II PPM)"
170
@@ -643,11 +644,6 @@
171
 Basic.Settings.Audio.MultichannelWarning="אם הזרימה, בדוק את הזרמת השירות תומך בסראונד סאונד להבלע ואת היקפי הסראונד פלייבק. טוויץ',פייסבוק,360 Liev, מיקסר RTMP, Smashcast דוגמאות לאיפה שסראונד סאונד הוא נתמך. למרות פייסבוק לייב ויוטיוב לייב שניהם מאפשרים סראונד להבלע, פייסבוק לייב משנה לסטריאו ויוטיוב לייב מפעיל בשני ערוצים. \n\nOBS Studio מסנן עם הסראונד סאונד, למרות תמיכת תוסף VST אינו מאובטח."
172
 Basic.Settings.Audio.MultichannelWarning.Title="האם להפעיל שמע צליל היקפי?"
173
 Basic.Settings.Audio.MultichannelWarning.Confirm="אתה בטוח שאתה רוצה לאפשר קול שמע מקיף?"
174
-Basic.Settings.Audio.DesktopDevice="התקן שמע בשולחן עבודה"
175
-Basic.Settings.Audio.DesktopDevice2="התקן שמע בשולחן עבודה 2"
176
-Basic.Settings.Audio.AuxDevice="התקן שמע מיקרופון/עזר"
177
-Basic.Settings.Audio.AuxDevice2="התקן שמע מיקרופון/עזר 2"
178
-Basic.Settings.Audio.AuxDevice3="התקן שמע מיקרופון/עזר 3"
179
 Basic.Settings.Audio.EnablePushToMute="אפשר לחץ-להשתקה"
180
 Basic.Settings.Audio.PushToMuteDelay="השהיית לחץ-להשתקה"
181
 Basic.Settings.Audio.EnablePushToTalk="הפעל לחץ-כדי-לדבר"
182
@@ -661,14 +657,11 @@
183
 Basic.Settings.Advanced.General.ProcessPriority.Normal="רגיל"
184
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="מתחת לעדיפות רגילה"
185
 Basic.Settings.Advanced.General.ProcessPriority.Idle="לא פעיל"
186
-Basic.Settings.Advanced.FormatWarning="אזהרה: תבניות צבע שונות מ-NV12 נועדו בעיקר עבור הקלטה, והם אינם מומלצות בעת הזרמת נתונים.  הזרמת נתונים עלולה לגרום למשאבי עיבוד מוגברים כתוצאה מהמרת תבנית צבע."
187
+Basic.Settings.Advanced.FormatWarning="אזהרה: תבניות צבע שונות מ-NV12 נועדו בעיקר עבור הקלטה, והם אינם מומלצות בעת הזרמת נתונים. הזרמת נתונים עלולה לגרום למשאבי עיבוד מוגברים כתוצאה מהמרת תבנית צבע."
188
 Basic.Settings.Advanced.Audio.BufferingTime="זמן אוגר שמע"
189
 Basic.Settings.Advanced.Video.ColorFormat="תבנית צבע"
190
-Basic.Settings.Advanced.Video.ColorSpace="מרחב צבע YUV"
191
-Basic.Settings.Advanced.Video.ColorRange="טווח צבעים YUV"
192
 Basic.Settings.Advanced.Video.ColorRange.Partial="חלקי"
193
 Basic.Settings.Advanced.Video.ColorRange.Full="מלא"
194
-Basic.Settings.Advanced.Audio.MonitoringDevice="מכשיר ניטור אודיו"
195
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="ברירת מחדל"
196
 Basic.Settings.Advanced.Audio.DisableAudioDucking="בטל צימוד השמע של Windows"
197
 Basic.Settings.Advanced.StreamDelay="השהיית זרם נתונים"
198
@@ -682,7 +675,6 @@
199
 
200
 Basic.AdvAudio="מאפייני קול מתקדמים"
201
 Basic.AdvAudio.Name="שם"
202
-Basic.AdvAudio.Volume="עוצמת קול (%)"
203
 Basic.AdvAudio.Mono="הפוך למונו"
204
 Basic.AdvAudio.Balance="איזון"
205
 Basic.AdvAudio.SyncOffset="היסט סינכרון (מילישניות)"
206
@@ -701,7 +693,7 @@
207
 Basic.SystemTray.Show="הצג"
208
 Basic.SystemTray.Hide="הסתר"
209
 
210
-Basic.SystemTray.Message.Reconnecting="ההתקשרות נותקה.  התחברות מחדש..."
211
+Basic.SystemTray.Message.Reconnecting="ההתקשרות נותקה. התחברות מחדש..."
212
 
213
 Hotkeys.Insert="הוסף"
214
 Hotkeys.Delete="מחק"
215
@@ -766,3 +758,4 @@
216
 
217
 ResizeOutputSizeOfSource.Continue="האם אתה רוצה להמשיך?"
218
 
219
+
220
obs-studio-23.1.0.tar.xz/UI/data/locale/hi-IN.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/hi-IN.ini Changed
9
 
1
@@ -128,3 +128,7 @@
2
 
3
 
4
 
5
+
6
+
7
+
8
+
9
obs-studio-23.1.0.tar.xz/UI/data/locale/hr-HR.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/hr-HR.ini Changed
95
 
1
@@ -80,7 +80,7 @@
2
 Group="Grupa"
3
 
4
 AlreadyRunning.Title="OBS je već pokrenut"
5
-AlreadyRunning.Text="OBS je već pokrenut!  Osim ako si mislio da biste to učinili, isključite sve postojeće pojave OBS prije nego što pokušate pokrenuti novu instancu.  Ako imate OBS postavljen na smanjivanje u traku sustava, provjerite ako to još uvijek radi tamo."
6
+AlreadyRunning.Text="OBS je već pokrenut! Osim ako si mislio da biste to učinili, isključite sve postojeće pojave OBS prije nego što pokušate pokrenuti novu instancu. Ako imate OBS postavljen na smanjivanje u traku sustava, provjerite ako to još uvijek radi tamo."
7
 AlreadyRunning.LaunchAnyway="Svejedno pokreni"
8
 
9
 
10
@@ -100,7 +100,7 @@
11
 BandwidthTest.Region.Asia="Azija"
12
 BandwidthTest.Region.Other="Ostalo"
13
 
14
-Basic.FirstStartup.RunWizard="Želite li pokrenuti čarobnjak za automatsku konfiguraciju?  Možete također ručno konfigurirati postavke tako da kliknete gumb Postavke u glavnom prozoru."
15
+Basic.FirstStartup.RunWizard="Želite li pokrenuti čarobnjak za automatsku konfiguraciju? Možete također ručno konfigurirati postavke tako da kliknete gumb Postavke u glavnom prozoru."
16
 Basic.FirstStartup.RunWizard.NoClicked="Ako se predomislite, možete pokrenuti čarobnjaka za automatsku konfiguraciju bilo kada opet u Alat meni."
17
 
18
 Basic.AutoConfig="Čarobnjak za automatske konfiguraciju"
19
@@ -183,6 +183,7 @@
20
 ConfirmRemove.TextMultiple="Jeste li sigurni da želite ukloniti %1 stavke?"
21
 
22
 
23
+
24
 Output.ConnectFail.Title="Neuspješno povezivanje"
25
 Output.ConnectFail.BadPath="Neispravna putanja ili URL veze. Provjerite jesu li Vam postavke ispravne."
26
 Output.ConnectFail.ConnectFailed="Neuspješno povezivanje s poslužiteljem"
27
@@ -190,6 +191,7 @@
28
 Output.ConnectFail.Error="Neočekivana greška u povezivanju s poslužiteljem. Više informacija nalazi se u zapisniku."
29
 Output.ConnectFail.Disconnected="Prekinuta veza s poslužiteljem."
30
 
31
+
32
 Output.RecordFail.Title="Neuspješno započinjanje snimanja"
33
 Output.RecordFail.Unsupported="Izlazni format ili nije podržan ili ne podržava više od jedne zvučne trake. Provjerite postavke i pokušajte ponovno."
34
 Output.RecordNoSpace.Title="Nedovoljno prostora na disku"
35
@@ -217,7 +219,7 @@
36
 Remux.ExitUnfinished="Remux nije završen, ako sada zaustavite proces datoteka može biti neupotrebljiva.\nJeste li sigurni da želite zaustaviti remux?"
37
 
38
 UpdateAvailable="Dostupno je novo ažuriranje"
39
-UpdateAvailable.Text="Verzija %1.%2.%3 je dostupna.  <a href='%4'>Kliknite ovdje da ju preuzmete</a>"
40
+UpdateAvailable.Text="Verzija %1.%2.%3 je dostupna. <a href='%4'>Kliknite ovdje da ju preuzmete</a>"
41
 
42
 Basic.DesktopDevice1="Zvuk s računala"
43
 Basic.DesktopDevice2="Zvuk s računala 2"
44
@@ -231,6 +233,7 @@
45
 
46
 Basic.Main.PreviewConextMenu.Enable="Omogući pregled"
47
 
48
+
49
 ScaleFiltering="Filter uvećanja"
50
 ScaleFiltering.Point="Točka"
51
 ScaleFiltering.Bilinear="Bilinearno"
52
@@ -430,7 +433,7 @@
53
 
54
 Basic.Settings.ProgramRestart="Program se mora ponovno pokrenuti da bi ova postavka stupila na snagu."
55
 Basic.Settings.ConfirmTitle="Potvrdite promjene"
56
-Basic.Settings.Confirm="Niste spremili sve promjene.  Spremiti?"
57
+Basic.Settings.Confirm="Niste spremili sve promjene. Spremiti?"
58
 
59
 Basic.Settings.General="Općenito"
60
 Basic.Settings.General.Theme="Tema"
61
@@ -554,11 +557,6 @@
62
 Basic.Settings.Audio="Zvuk"
63
 Basic.Settings.Audio.SampleRate="Protok"
64
 Basic.Settings.Audio.Channels="Kanali"
65
-Basic.Settings.Audio.DesktopDevice="Zvuk sa računara"
66
-Basic.Settings.Audio.DesktopDevice2="Zvuk sa računara 2"
67
-Basic.Settings.Audio.AuxDevice="Mikrofon/Ulaz"
68
-Basic.Settings.Audio.AuxDevice2="Mikrofon/Ulaz 2"
69
-Basic.Settings.Audio.AuxDevice3="Mikrofon/Ulaz 3"
70
 Basic.Settings.Audio.EnablePushToMute="Omogući stisni-za-mutiranje"
71
 Basic.Settings.Audio.PushToMuteDelay="Stisni-za-mutiranje pauza"
72
 Basic.Settings.Audio.EnablePushToTalk="Omogući Stisni-za-govor"
73
@@ -574,8 +572,6 @@
74
 Basic.Settings.Advanced.FormatWarning="Upozorenje: Formati boja različiti od NV12 su prvenstveno namenjeni za snimanje i nisu preporučeni za strimovanje. Strimovanje može prouzrokovati povišeno zauzeće procesora zbog pretvaranja formata boja."
75
 Basic.Settings.Advanced.Audio.BufferingTime="Vreme baferovanja zvuka"
76
 Basic.Settings.Advanced.Video.ColorFormat="Format boja"
77
-Basic.Settings.Advanced.Video.ColorSpace="YUV prostor boja"
78
-Basic.Settings.Advanced.Video.ColorRange="YUV raspon boja"
79
 Basic.Settings.Advanced.Video.ColorRange.Partial="Delimično"
80
 Basic.Settings.Advanced.Video.ColorRange.Full="Potpuno"
81
 Basic.Settings.Advanced.StreamDelay="Odlaganje strima"
82
@@ -587,7 +583,6 @@
83
 
84
 Basic.AdvAudio="Napredna podešavanja zvuka"
85
 Basic.AdvAudio.Name="Ime"
86
-Basic.AdvAudio.Volume="Glasnoća (%)"
87
 Basic.AdvAudio.Mono="Spoji u mono"
88
 Basic.AdvAudio.SyncOffset="Razlika u sinhronizaciji (ms)"
89
 Basic.AdvAudio.AudioTracks="Izvori"
90
@@ -655,3 +650,4 @@
91
 
92
 
93
 
94
+
95
obs-studio-23.1.0.tar.xz/UI/data/locale/hu-HU.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/hu-HU.ini Changed
143
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Függőleges elrendezés"
3
 Group="Csoport"
4
 DoNotShowAgain="Ne jelenjen meg többet"
5
+Default="(Alapértelmezett)"
6
+Calculating="Számítás..."
7
 
8
 AlreadyRunning.Title="Az OBS már fut"
9
 AlreadyRunning.Text="Az OBS már fut! Ha nem teljesen biztos benne mit tesz, akkor állítsa le az összes már futó OBS programot. Ha a programot úgy állította be, hogy rendszertálcára minimalizálódjon, akkor ellenőrizze, hogy ott megtalálható e."
10
@@ -103,6 +105,8 @@
11
 Auth.StreamInfo="Stream információ"
12
 TwitchAuth.Stats="Twitch statisztika"
13
 TwitchAuth.Feed="Twitch Tevékenységnapló"
14
+TwitchAuth.TwoFactorFail.Title="Nem lehetett a stream kulcsot lekérni"
15
+TwitchAuth.TwoFactorFail.Text="Az OBS nem tudott kapcsolódni a Twitch felhasználódhoz. Kérem ellenőrizze, hogy a kétfaktoros authentikációja be van állítva a <a href='https://www.twitch.tv/settings/security'>Twitch biztonsági beállítások</a> között, hiszen az szükséges az adáshoz."
16
 
17
 Copy.Filters="Szűrők másolása"
18
 Paste.Filters="Szűrők beillesztése"
19
@@ -185,6 +189,7 @@
20
 Basic.Stats.DroppedFrames="Képkockák ejtve (Hálózat)"
21
 Basic.Stats.MegabytesSent="Összes kimeneti adat"
22
 Basic.Stats.Bitrate="Bitsebesség"
23
+Basic.Stats.DiskFullIn="Megtelt a lemez (Körülbelül...)"
24
 
25
 ResetUIWarning.Title="Biztosan alaphelyzetbe állítja a felületet?"
26
 ResetUIWarning.Text="Az UI visszaállítása lefedi a további dokkokat. Önnek fel kell fednie ezeket a dokkokat a nézet menüből, amennyiben láthatóvá tenné ezeket.\n\nBiztos benne, hogy visszaállítja az UI-t?"
27
@@ -200,7 +205,7 @@
28
 Updater.NoUpdatesAvailable.Text="Jelenleg nincs elérhető frissítés"
29
 Updater.FailedToLaunch="Frissítő alkalmazás indítása sikertelen"
30
 Updater.GameCaptureActive.Title="Játék felvétel aktív"
31
-Updater.GameCaptureActive.Text="Játékfelvétel hook könyvtár jelenleg használatban. Zárjon be minden játékot/programot, amelyet felvesz (vagy indítsa újra a számítógépét) és próbálkozzon újra."
32
+Updater.GameCaptureActive.Text="Játék felvétel kapcsolódó könyvtár még használatban van. Kérem zárjon be valamennyi játékot/programot, amely felvétel alatt áll (vagy indítsa újra a Windowst) és próbálja újra."
33
 
34
 QuickTransitions.SwapScenes="Előnézeti/Kimeneti Jelenetek cseréje átmenet után"
35
 QuickTransitions.SwapScenesTT="Az előnézet és a kimeneti jelenet cseréje átmenet után (ha a kimenet eredeti jelenete még létezik).\nEz nincs kihatással a kimenet eredeti jelenetére."
36
@@ -250,6 +255,7 @@
37
 Output.StartReplayFailed="Visszajátszás puffer indítása sikertelen"
38
 Output.StartFailedGeneric="Kimenet indítása sikertelen. Kérem ellenőrizze az eseménynaplóban a részleteket.\n\nMegjegyzés: NVENC vagy AMD kódoló használata esetén, győződjön meg róla, hogy az illesztőprogramok naprakészek!"
39
 
40
+
41
 Output.ConnectFail.Title="Csatlakozás sikertelen"
42
 Output.ConnectFail.BadPath="Érvénytelen elérési út vagy kapcsolati URL cím. Kérem, ellenőrizze a beállításokat és győződjön meg az érvényességükről."
43
 Output.ConnectFail.ConnectFailed="Nem sikerült kapcsolódni a szerverhez"
44
@@ -257,12 +263,16 @@
45
 Output.ConnectFail.Error="A szerverhez való kapcsolódás során váratlan hiba történt. További információért tekintse meg a naplófájlt."
46
 Output.ConnectFail.Disconnected="Kiszolgálóról lecsatlakoztatva."
47
 
48
+Output.StreamEncodeError.Title="Kódolási hiba"
49
+Output.StreamEncodeError.Msg="Kódolási hiba történt közvetítés közben."
50
+
51
 Output.RecordFail.Title="Felvétel indítása sikertelen"
52
 Output.RecordFail.Unsupported="A kimeneti formátum vagy nem támogatott, vagy nem támogatja az egynél több hangsávot. Kérem, ellenőrizze a beállításait és próbálkozzon újra."
53
 Output.RecordNoSpace.Title="Nincs elég szabad lemezterület"
54
 Output.RecordNoSpace.Msg="Nincs elegendő lemezterület a felvétel folytatásához."
55
 Output.RecordError.Title="Felvételi hiba"
56
 Output.RecordError.Msg="Ismeretlen hiba lépett fel a felvétel során."
57
+Output.RecordError.EncodeErrorMsg="Kódolási hiba történt felvétel készítése közben."
58
 Output.ReplayBuffer.NoHotkey.Title="Nincs gyorsbillentyű beállítva!"
59
 Output.ReplayBuffer.NoHotkey.Msg="Nincs mentés gyorsbillentyű a visszajátszási pufferhez. Kérem állítson be egy \"Mentés\" gyorsbillentyűt a visszajátszások felvételeinek mentésére."
60
 
61
@@ -306,6 +316,8 @@
62
 
63
 Basic.Main.PreviewConextMenu.Enable="Előnézet bekapcsolása"
64
 
65
+Basic.Main.Preview.Disable="Előnézet kikapcsolása"
66
+
67
 ScaleFiltering="Skála-szűrés"
68
 ScaleFiltering.Point="Pont"
69
 ScaleFiltering.Bilinear="Bilineáris"
70
@@ -476,6 +488,8 @@
71
 Basic.MainMenu.Edit.Transform.FitToScreen="Képernyőhöz igazítás (&F)"
72
 Basic.MainMenu.Edit.Transform.StretchToScreen="Képernyőhöz nyújtá&s"
73
 Basic.MainMenu.Edit.Transform.CenterToScreen="Képernyő középpontjához (&C)"
74
+Basic.MainMenu.Edit.Transform.VerticalCenter="Függőleges közép"
75
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Vízszintes közép"
76
 Basic.MainMenu.Edit.Order="Rendezés (&O)"
77
 Basic.MainMenu.Edit.Order.MoveUp="Mozgatás Fel (&U)"
78
 Basic.MainMenu.Edit.Order.MoveDown="Mozgatás Le (&D)"
79
@@ -685,7 +699,8 @@
80
 Basic.Settings.Audio="Hang"
81
 Basic.Settings.Audio.SampleRate="Mintavételezés"
82
 Basic.Settings.Audio.Channels="Csatornák"
83
-Basic.Settings.Audio.MeterDecayRate="Hangmérő halkulási aránya"
84
+Basic.Settings.Audio.Meters="Mérték"
85
+Basic.Settings.Audio.MeterDecayRate="Halkulási ráta"
86
 Basic.Settings.Audio.MeterDecayRate.Fast="Gyors"
87
 Basic.Settings.Audio.MeterDecayRate.Medium="Medium (Típus | PPM)"
88
 Basic.Settings.Audio.MeterDecayRate.Slow="Lassú (Típus II PPM)"
89
@@ -696,12 +711,13 @@
90
 Basic.Settings.Audio.MultichannelWarning="Ha közvetít, ellenőrizze, hogy a stream szolgáltatója támogatja mind a surround sound kezelést, mind pedig a surround sound lejátszást. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast a legjobb példa, hogy mely platformokon van teljes támogatás. Ellenben a Facebook Live és a YouTube Live minden elfogadja a térhangzású hangot, a Facebook Live lekeveri stereora és a YouTube Live csak két csatornát játszik le.\n\nOBS audio szűrők kompatibilisek a térhangzású hanggal, viszont a VST bővítmények támogatása nem garantált."
91
 Basic.Settings.Audio.MultichannelWarning.Title="Engedélyezi a surround hangzást?"
92
 Basic.Settings.Audio.MultichannelWarning.Confirm="Biztos benne, hogy engedélyezi a surround hangzást?"
93
-Basic.Settings.Audio.DesktopDevice="Asztali hangeszköz"
94
-Basic.Settings.Audio.DesktopDevice2="Asztali hangeszköz 2"
95
-Basic.Settings.Audio.AuxDevice="Mikrofon/Aux hangeszköz"
96
-Basic.Settings.Audio.AuxDevice2="Mikrofon/Aux hangeszköz 2"
97
-Basic.Settings.Audio.AuxDevice3="Mikrofon/Aux hangeszköz 3"
98
-Basic.Settings.Audio.AuxDevice4="Mikrofon/Aux hangeszköz 4"
99
+Basic.Settings.Audio.Devices="Eszközök"
100
+Basic.Settings.Audio.DesktopDevice="Asztal audio"
101
+Basic.Settings.Audio.DesktopDevice2="Asztal audio 2"
102
+Basic.Settings.Audio.AuxDevice="Mikrofon/Aux hang"
103
+Basic.Settings.Audio.AuxDevice2="Mikrofon/Aux hang 2"
104
+Basic.Settings.Audio.AuxDevice3="Mikrofon/Aux hang 3"
105
+Basic.Settings.Audio.AuxDevice4="Mikrofon/Aux hang 4"
106
 Basic.Settings.Audio.EnablePushToMute="Push-to-mute engedélyezése"
107
 Basic.Settings.Audio.PushToMuteDelay="Push-to-mute késleltetés"
108
 Basic.Settings.Audio.EnablePushToTalk="Push-to-talk engedélyezése"
109
@@ -719,8 +735,8 @@
110
 Basic.Settings.Advanced.FormatWarning="Figyelem: Az NV12-től eltérő színformátumok elsősorban felvételhez vannak és nem ajánlott a használatuk streamekhez. Adás közben megnövekedett processzor igényt okozhat a színkonverzió."
111
 Basic.Settings.Advanced.Audio.BufferingTime="Audio pufferelési idő"
112
 Basic.Settings.Advanced.Video.ColorFormat="Színformátum"
113
-Basic.Settings.Advanced.Video.ColorSpace="YUV színtér"
114
-Basic.Settings.Advanced.Video.ColorRange="YUV színtartomány"
115
+Basic.Settings.Advanced.Video.ColorSpace="Színtér"
116
+Basic.Settings.Advanced.Video.ColorRange="Színtartomány"
117
 Basic.Settings.Advanced.Video.ColorRange.Partial="Részleges"
118
 Basic.Settings.Advanced.Video.ColorRange.Full="Teljes"
119
 Basic.Settings.Advanced.Audio.MonitoringDevice="Hangfigyelő eszköz"
120
@@ -740,7 +756,7 @@
121
 
122
 Basic.AdvAudio="Speciális hangtulajdonságok"
123
 Basic.AdvAudio.Name="Név"
124
-Basic.AdvAudio.Volume="Hangerő (%)"
125
+Basic.AdvAudio.Volume="Hangerő"
126
 Basic.AdvAudio.Mono="Monora lekeverés"
127
 Basic.AdvAudio.Balance="Egyensúly"
128
 Basic.AdvAudio.SyncOffset="Szinkron eltolás (ms)"
129
@@ -816,6 +832,7 @@
130
 NoSources.Title="Nincsenek Források"
131
 NoSources.Text="Úgy fest, hogy nem adott hozzá valamilyen videoforrást, úgyhogy fekete képet fog adni. Biztos benne, hogy ezt kívánja tenni?"
132
 NoSources.Text.AddSource="Hozzáadhat forrásokat bármikor a + ikonra kattintva a Források doboz alatt a fő ablakban."
133
+NoSources.Label="Önnek nincsenek forrásai.\nKattintson alul a + gombra,\nvagy jobbklikkeljen ide, hogy hozzáadjon egyet."
134
 
135
 ChangeBG="Szín megadása"
136
 CustomColor="Egyedi szín"
137
@@ -834,3 +851,5 @@
138
 ResizeOutputSizeOfSource.Text="Az alap és a kimeneti felbontás átméretezése a jelenlegi forrásra."
139
 ResizeOutputSizeOfSource.Continue="Kívánja folytatni?"
140
 
141
+PreviewTransition="Átmenet előnézete"
142
+
143
obs-studio-23.1.0.tar.xz/UI/data/locale/it-IT.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/it-IT.ini Changed
147
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Disposizione verticale"
3
 Group="Gruppo"
4
 DoNotShowAgain="Non mostrare più"
5
+Default="(predefinito)"
6
+Calculating="Calcolo..."
7
 
8
 AlreadyRunning.Title="OBS è già in esecuzione"
9
 AlreadyRunning.Text="OBS è già in esecuzione! A meno che non intendevi effettuare questa operazione, ricordati sempre di chiudere tutte le istanze esistenti di OBS prima di eseguirne una nuova. Se hai impostato OBS per ridursi nell'area di notifica, controlla che non sia ancora in esecuzione."
10
@@ -103,6 +105,8 @@
11
 Auth.StreamInfo="Informazioni della diretta"
12
 TwitchAuth.Stats="Statistiche di Twitch"
13
 TwitchAuth.Feed="Feed attività di Twitch"
14
+TwitchAuth.TwoFactorFail.Title="Impossibile interrogare il codice della diretta"
15
+TwitchAuth.TwoFactorFail.Text="OBS non è stato in grado di connettersi al tuo account di Twitch. Assicurati che l'autenticazione a due fattori sia impostata nelle tue <a href='https://www.twitch.tv/settings/security'>impostazioni di sicurezza di Twitch</a> perché è necessaria per lo stream."
16
 
17
 Copy.Filters="Copia i filtri"
18
 Paste.Filters="Incolla i filtri"
19
@@ -185,6 +189,7 @@
20
 Basic.Stats.DroppedFrames="Perdita di fotogrammi (rete)"
21
 Basic.Stats.MegabytesSent="Uscita dati totale"
22
 Basic.Stats.Bitrate="Velocità in bit"
23
+Basic.Stats.DiskFullIn="Disco pieno in (appross.)"
24
 
25
 ResetUIWarning.Title="Sei sicuro di voler ripristinare l'interfaccia utente?"
26
 ResetUIWarning.Text="Se ripristini l'interfaccia utente, verranno nascosti dei pannelli. Dovrai rimostrare questi pannelli dal menù visualizza se vuoi che siano visibili.\n\nSei sicuro di voler ripristinare l'interfaccia utente?"
27
@@ -250,6 +255,7 @@
28
 Output.StartReplayFailed="Impossibile avviare il buffer di replay"
29
 Output.StartFailedGeneric="Impossibile creare il file di uscita. Controlla il log per i dettagli.\n\nNota: se utilizzi la codifica NVENC o AMD, assicurati che i driver video siano aggiornati all'ultima versione."
30
 
31
+
32
 Output.ConnectFail.Title="Impossibile connettersi"
33
 Output.ConnectFail.BadPath="Percorso o URL di connessione non valido. Controlla le tue impostazioni per confermare che siano valide."
34
 Output.ConnectFail.ConnectFailed="Connessione al server fallita"
35
@@ -257,12 +263,16 @@
36
 Output.ConnectFail.Error="Si è verificato un errore non previsto durante la connessione al server. Controlla il file di log per più informazioni."
37
 Output.ConnectFail.Disconnected="Disconnesso dal server."
38
 
39
+Output.StreamEncodeError.Title="Errore di codifica"
40
+Output.StreamEncodeError.Msg="Si è verificato un errore di codifica durante lo streaming."
41
+
42
 Output.RecordFail.Title="Impossibile avviare la registrazione"
43
 Output.RecordFail.Unsupported="Il formato del file di uscita non è supportato o non supporta più di una traccia audio. Per favore, controlla le tue impostazioni e riprova."
44
 Output.RecordNoSpace.Title="Spazio su disco insufficiente"
45
 Output.RecordNoSpace.Msg="Non c'è abbastanza spazio su disco per continuare la registrazione."
46
 Output.RecordError.Title="Errore di registrazione"
47
 Output.RecordError.Msg="Si è verificato un errore non specificato durante la registrazione."
48
+Output.RecordError.EncodeErrorMsg="Si è verificato un errore di codifica durante la registrazione."
49
 Output.ReplayBuffer.NoHotkey.Title="Nessuna scorciatoia assegnata!"
50
 Output.ReplayBuffer.NoHotkey.Msg="Nessuna scorciatoia impostata per salvare il buffer di replay. Imposta la scorciatoia «Salva» per poter salvare le registrazioni dei replay."
51
 
52
@@ -306,6 +316,8 @@
53
 
54
 Basic.Main.PreviewConextMenu.Enable="Attiva l'anteprima"
55
 
56
+Basic.Main.Preview.Disable="Disattiva l'anteprima"
57
+
58
 ScaleFiltering="Scala di filtraggio"
59
 ScaleFiltering.Point="Punto"
60
 ScaleFiltering.Bilinear="Bilineare"
61
@@ -476,6 +488,8 @@
62
 Basic.MainMenu.Edit.Transform.FitToScreen="Adatta allo schermo (&F)"
63
 Basic.MainMenu.Edit.Transform.StretchToScreen="Allunga per riempire lo &schermo"
64
 Basic.MainMenu.Edit.Transform.CenterToScreen="&Centra nello schermo"
65
+Basic.MainMenu.Edit.Transform.VerticalCenter="Centra verticalmente"
66
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Centra orizzontalmente"
67
 Basic.MainMenu.Edit.Order="&Ordine"
68
 Basic.MainMenu.Edit.Order.MoveUp="Sposta s&u"
69
 Basic.MainMenu.Edit.Order.MoveDown="Sposta giù (&D)"
70
@@ -659,7 +673,7 @@
71
 
72
 FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
73
 
74
-FilenameFormatting.TT="%CCYY   anno con quattro cifre\n%YY     anno con le ultime due cifre (00-99)\n%MM       mese in numero decimale (01-12)\n%DD        giorno del mese con due cifre (01-31)\n%hh      ore nel formato 24 ore (00-23)\n%mm     minuti (00-59)\n%ss     secondi (00-61)\n%%     il simbolo della percentuale (%)\n%a        giorno della settimana abbreviato\n%A       giorno della settimana intero\n%b       nome del mese abbreviato\n%B        nome del mese intero\n%d        giorno del mese con due cifre (01-31)\n%H       ore nel formato 24 ore (00-23)\n%I      ore nel formato 12 ore (01-12)\n%m      mese in numero decimale (01-12)\n%M     minuti (00-59)\n%p      sigle AM o PM\n%S       secondi (00-61)\n%y     anno con le ultime due cifre (00-99)\n%Y        anno\n%z        differenza di fuso orario da UTC (ISO 8601)\n       oppure il nome del fuso orario o la sua abbreviazione\n%Z       nome del fuso orario o la sua abbreviazione\n"
75
+FilenameFormatting.TT="%CCYY   Anno, quattro cifre\n%YY        Anno, ultime due cifre (00-99)\n%MM     Mese come numero decimale (01-12)\n%DD      Giorno del mese, due cifre (01-31)\n%hh     Ora in formato 24h (00-23)\n%mm     Minuti (00-59)\n%ss     Secondi (00-61)\n%%     Un simbolo %\n%a        Giorno della settimana abbreviato\n%A       Giorno della settimana completo\n%b     Nome del mese abbreviato\n%B        Nome del mese completo\n%d      Giorno del mese, due cifre (01-31)\n%H      Ora in formato 24h (00-23)\n%I      Ora in formato 12h (01-12)\n%m      Mese come numero decimale (01-12)\n%M       Minuti (00-59)\n%p      Designazione AM o PM\n%S        Secondi (00-61)\n%y     Anno, ultime due cifre (00-99)\n%Y      Anno\n%z        Offset del fuso orario da UTC secondo ISO 860\n%Z       Nome o abbreviazione del fuso orario\n"
76
 
77
 Basic.Settings.Video="Video"
78
 Basic.Settings.Video.Adapter="Adattatore video"
79
@@ -685,7 +699,8 @@
80
 Basic.Settings.Audio="Audio"
81
 Basic.Settings.Audio.SampleRate="Frequenza di campionamento"
82
 Basic.Settings.Audio.Channels="Canali"
83
-Basic.Settings.Audio.MeterDecayRate="Tasso di decadimento audio"
84
+Basic.Settings.Audio.Meters="Metrica"
85
+Basic.Settings.Audio.MeterDecayRate="Tasso di decadimento"
86
 Basic.Settings.Audio.MeterDecayRate.Fast="Veloce"
87
 Basic.Settings.Audio.MeterDecayRate.Medium="Medio (Tipo I PPM)"
88
 Basic.Settings.Audio.MeterDecayRate.Slow="Lento (Tipo II PPM)"
89
@@ -696,12 +711,13 @@
90
 Basic.Settings.Audio.MultichannelWarning="Se stai effettuando le modifiche per le dirette, controlla che il servizio di dirette offra l'integrazione e la riproduzione di audio surround. Twitch, Facebook 360 Live, Mixer RTMP e Smashcast sono esempi di servizi che offrono l'audio surround. Le dirette su Facebook e YouTube accettano l'audio surround, ma Facebook lo converte in stereo e YouTube riproduce solo due canali.\n\nI filtri audio di OBS sono compatibili con l'audio surround, ma il supporto al plugin VST non è garantito."
91
 Basic.Settings.Audio.MultichannelWarning.Title="Vuoi attivare l'audio surround?"
92
 Basic.Settings.Audio.MultichannelWarning.Confirm="Sei sicuro di voler attivare l'audio surround?"
93
-Basic.Settings.Audio.DesktopDevice="Dispositivo audio del desktop"
94
-Basic.Settings.Audio.DesktopDevice2="Dispositivo audio del desktop 2"
95
-Basic.Settings.Audio.AuxDevice="Dispositivo audio mic/ausiliario"
96
-Basic.Settings.Audio.AuxDevice2="Dispositivo audio mic/ausiliario 2"
97
-Basic.Settings.Audio.AuxDevice3="Dispositivo audio mic/ausiliario 3"
98
-Basic.Settings.Audio.AuxDevice4="Dispositivo audio mic/ausiliario 4"
99
+Basic.Settings.Audio.Devices="Dispositivi"
100
+Basic.Settings.Audio.DesktopDevice="Audio desktop"
101
+Basic.Settings.Audio.DesktopDevice2="Audio desktop 2"
102
+Basic.Settings.Audio.AuxDevice="Audio mic/ausiliario"
103
+Basic.Settings.Audio.AuxDevice2="Audio mic/ausiliario 2"
104
+Basic.Settings.Audio.AuxDevice3="Audio mic/ausiliario 3"
105
+Basic.Settings.Audio.AuxDevice4="Audio mic/ausiliario 4"
106
 Basic.Settings.Audio.EnablePushToMute="Attiva il push-to-mute"
107
 Basic.Settings.Audio.PushToMuteDelay="Ritardo del push-to-mute"
108
 Basic.Settings.Audio.EnablePushToTalk="Attiva il push-to-talk"
109
@@ -719,11 +735,11 @@
110
 Basic.Settings.Advanced.FormatWarning="Attenzione: i formati colore diversi da NV12 sono principalmente pensati per la registrazione, e non sono consigliati per le dirette. Le dirette richiedono un utilizzo maggiore delle CPU a causa della conversione del formato del colore."
111
 Basic.Settings.Advanced.Audio.BufferingTime="Tempo di buffer audio"
112
 Basic.Settings.Advanced.Video.ColorFormat="Formato colore"
113
-Basic.Settings.Advanced.Video.ColorSpace="Spazio colore YUV"
114
-Basic.Settings.Advanced.Video.ColorRange="Gamma di colore YUV"
115
+Basic.Settings.Advanced.Video.ColorSpace="Spazio colore"
116
+Basic.Settings.Advanced.Video.ColorRange="Gamma di colori"
117
 Basic.Settings.Advanced.Video.ColorRange.Partial="Parziale"
118
 Basic.Settings.Advanced.Video.ColorRange.Full="Intero"
119
-Basic.Settings.Advanced.Audio.MonitoringDevice="Dispositivo di monitoraggio audio"
120
+Basic.Settings.Advanced.Audio.MonitoringDevice="Dispositivo di monitoraggio"
121
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Predefinito"
122
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Disattiva la riduzione del volume di Windows"
123
 Basic.Settings.Advanced.StreamDelay="Ritardo delle dirette"
124
@@ -740,7 +756,7 @@
125
 
126
 Basic.AdvAudio="Proprietà audio avanzate"
127
 Basic.AdvAudio.Name="Nome"
128
-Basic.AdvAudio.Volume="Volume (%)"
129
+Basic.AdvAudio.Volume="Volume"
130
 Basic.AdvAudio.Mono="Trasforma in mono"
131
 Basic.AdvAudio.Balance="Bilanciamento"
132
 Basic.AdvAudio.SyncOffset="Ritardo per la sincronizzazione (ms)"
133
@@ -816,6 +832,7 @@
134
 NoSources.Title="Nessuna fonte"
135
 NoSources.Text="Sembra che tu non abbia ancora aggiunto alcuna fonte video, quindi vedrai solo una schermata nera. Sei sicuro di voler proseguire?"
136
 NoSources.Text.AddSource="Puoi aggiungere fonti cliccando l'icona + sotto il pannello delle fonti nella finestra principale in qualsiasi momento."
137
+NoSources.Label="Non hai nessuna fonte.\nClicca il pulsante + qui sotto,\no clicca col tasto destro per aggiungerne una."
138
 
139
 ChangeBG="Imposta un colore"
140
 CustomColor="Colore personalizzato"
141
@@ -834,3 +851,5 @@
142
 ResizeOutputSizeOfSource.Text="La risoluzione di base e quella effettiva verranno ridimensionate in base alla dimensione della fonte attuale."
143
 ResizeOutputSizeOfSource.Continue="Vuoi continuare?"
144
 
145
+PreviewTransition="Anteprima transizione"
146
+
147
obs-studio-23.1.0.tar.xz/UI/data/locale/ja-JP.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ja-JP.ini Changed
190
 
1
@@ -49,7 +49,7 @@
2
 Enable="有効にする"
3
 DisableOSXVSync="OSX の V-Sync を無効にする"
4
 ResetOSXVSyncOnExit="終了時に OSX の V-Sync をリセットする"
5
-HighResourceUsage="エンコードが高負荷です!  映像設定を下げるかより高速のエンコードプリセットの使用を検討してください。"
6
+HighResourceUsage="エンコードが高負荷です! 映像設定を下げるかより高速のエンコードプリセットの使用を検討してください。"
7
 Transition="トランジション"
8
 QuickTransitions="クイックトランジション"
9
 Left="左"
10
@@ -81,9 +81,11 @@
11
 VerticalLayout="垂直レイアウト"
12
 Group="グループ化"
13
 DoNotShowAgain="次回から表示しない"
14
+Default="(既定)"
15
+Calculating="計算中..."
16
 
17
 AlreadyRunning.Title="OBSは既に実行中です"
18
-AlreadyRunning.Text="OBSは既に実行されています!  この操作を行うつもりがない限り、新しいインスタンスを実行する前に既存のOBSインスタンスを終了してください。OBSがシステムトレイに最小化されるように設定されている場合は、まだ実行中であるかどうかを確認してください。"
19
+AlreadyRunning.Text="OBSは既に実行されています! この操作を行うつもりがない限り、新しいインスタンスを実行する前に既存のOBSインスタンスを終了してください。OBSがシステムトレイに最小化されるように設定されている場合は、まだ実行中であるかどうかを確認してください。"
20
 AlreadyRunning.LaunchAnyway="とにかく起動する"
21
 
22
 DockCloseWarning.Title="ドッキング可能ウィンドウを閉じる"
23
@@ -103,6 +105,8 @@
24
 Auth.StreamInfo="配信情報"
25
 TwitchAuth.Stats="Twitch統計"
26
 TwitchAuth.Feed="Twitch アクティビティフィード"
27
+TwitchAuth.TwoFactorFail.Title="ストリームキーを照会できませんでした"
28
+TwitchAuth.TwoFactorFail.Text="OBSはあなたのTwitchアカウントに接続できませんでした。 これは配信に必要なので、<a href='https://www.twitch.tv/settings/security'>Twitchセキュリティ設定</a>で2要素認証が設定されていることを確認してください。"
29
 
30
 Copy.Filters="フィルタをコピーする"
31
 Paste.Filters="フィルタを貼り付ける"
32
@@ -155,9 +159,9 @@
33
 Basic.AutoConfig.TestPage.SubTitle.Testing="プログラムは最も理想的な設定を推定するための一連のテストを現在実行中です"
34
 Basic.AutoConfig.TestPage.SubTitle.Complete="テスト完了"
35
 Basic.AutoConfig.TestPage.TestingBandwidth="帯域幅テストの実行、これには数分かかることがあります..."
36
-Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="接続先:  %1..."
37
+Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="接続先: %1..."
38
 Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="サーバーに接続できませんでした。インターネット接続を確認してからもう一度お試しください。"
39
-Basic.AutoConfig.TestPage.TestingBandwidth.Server="帯域幅のテスト:  %1"
40
+Basic.AutoConfig.TestPage.TestingBandwidth.Server="帯域幅のテスト: %1"
41
 Basic.AutoConfig.TestPage.TestingStreamEncoder="配信エンコーダのテスト中、これには数分かかることがあります..."
42
 Basic.AutoConfig.TestPage.TestingRecordingEncoder="録画エンコーダのテスト中、これには数分かかることがあります..."
43
 Basic.AutoConfig.TestPage.TestingRes="解像度のテスト中、これには数分かかることがあります..."
44
@@ -185,6 +189,7 @@
45
 Basic.Stats.DroppedFrames="ドロップフレーム (ネットワーク)"
46
 Basic.Stats.MegabytesSent="出力データの合計"
47
 Basic.Stats.Bitrate="ビットレート"
48
+Basic.Stats.DiskFullIn="ディスクがいっぱいになるまで後(約)"
49
 
50
 ResetUIWarning.Title="UIをリセットしてもよろしいですか?"
51
 ResetUIWarning.Text="UIをリセットすると追加のドックは非表示になります。表示したい場合表示メニューからこれらのドックを表示する必要があります。\n\nUIをリセットしてもよろしいですか?"
52
@@ -200,7 +205,7 @@
53
 Updater.NoUpdatesAvailable.Text="現在利用可能な更新はありません"
54
 Updater.FailedToLaunch="アップデータの起動に失敗しました"
55
 Updater.GameCaptureActive.Title="ゲームキャプチャがアクティブ"
56
-Updater.GameCaptureActive.Text="ゲームキャプチャフックライブラリが現在使用中です。キャプチャされているすべてのゲーム/プログラムを閉じて (またはwindowsを再起動して) からもう一度やり直してください。"
57
+Updater.GameCaptureActive.Text="ゲームキャプチャフックライブラリが現在使用中です。キャプチャされているすべてのゲーム/プログラムを閉じて (またはWindowsを再起動して) からもう一度やり直してください。"
58
 
59
 QuickTransitions.SwapScenes="トランジション後にプレビュー/出力シーンを入れ替え"
60
 QuickTransitions.SwapScenesTT="(出力のオリジナルシーンがまだ存在する場合)、トランジション後のプレビューと出力シーンを入れ替えます。\nこれは出力のオリジナルシーンに加えられた可能性があるすべての変更を元に戻しません。"
61
@@ -250,6 +255,7 @@
62
 Output.StartReplayFailed="リプレイバッファの開始に失敗しました"
63
 Output.StartFailedGeneric="出力開始に失敗しました。詳細はログを確認してください。\n\n注: NVENCまたはAMDエンコーダを使用している場合は、ビデオドライバが最新のものであるかを確認してください。"
64
 
65
+
66
 Output.ConnectFail.Title="接続失敗"
67
 Output.ConnectFail.BadPath="パスかURLが無効です。再確認して下さい。"
68
 Output.ConnectFail.ConnectFailed="サーバーへの接続に失敗しました"
69
@@ -257,12 +263,16 @@
70
 Output.ConnectFail.Error="サーバー接続時に予期しないエラーが発生しました。ログファイルを確認してください。"
71
 Output.ConnectFail.Disconnected="サーバーから切断されました。"
72
 
73
+Output.StreamEncodeError.Title="エンコードエラー"
74
+Output.StreamEncodeError.Msg="配信中にエンコーダでエラーが発生しました。"
75
+
76
 Output.RecordFail.Title="録画を開始できませんでした"
77
 Output.RecordFail.Unsupported="出力フォーマットがサポートされていないか複数のオーディオ トラックをサポートしていません。 設定を確認してもう一度やり直してください。"
78
 Output.RecordNoSpace.Title="ディスク領域の不足"
79
 Output.RecordNoSpace.Msg="録画を継続する十分なディスク領域がありません。"
80
 Output.RecordError.Title="録画エラー"
81
 Output.RecordError.Msg="録画中に不明なエラーが発生しました。"
82
+Output.RecordError.EncodeErrorMsg="録画中にエンコーダでエラーが発生しました。"
83
 Output.ReplayBuffer.NoHotkey.Title="ホットキーが設定されていません!"
84
 Output.ReplayBuffer.NoHotkey.Msg="リプレイバッファ保存のホットキー設定がありません。 リプレイ録画保存用に使用する「保存」のホットキーを設定してください。"
85
 
86
@@ -306,6 +316,8 @@
87
 
88
 Basic.Main.PreviewConextMenu.Enable="プレビュー有効化"
89
 
90
+Basic.Main.Preview.Disable="プレビュー無効化"
91
+
92
 ScaleFiltering="スケールフィルタ"
93
 ScaleFiltering.Point="ポイント"
94
 ScaleFiltering.Bilinear="バイリニア"
95
@@ -476,6 +488,8 @@
96
 Basic.MainMenu.Edit.Transform.FitToScreen="画面に合わせる(&F)"
97
 Basic.MainMenu.Edit.Transform.StretchToScreen="画面に引き延ばして置く(&S)"
98
 Basic.MainMenu.Edit.Transform.CenterToScreen="画面中央に置く(&C)"
99
+Basic.MainMenu.Edit.Transform.VerticalCenter="垂直方向に中央揃え"
100
+Basic.MainMenu.Edit.Transform.HorizontalCenter="水平方向に中央揃え"
101
 Basic.MainMenu.Edit.Order="順序(&O)"
102
 Basic.MainMenu.Edit.Order.MoveUp="上に移動(&U)"
103
 Basic.MainMenu.Edit.Order.MoveDown="下に移動(&D)"
104
@@ -659,7 +673,7 @@
105
 
106
 FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
107
 
108
-FilenameFormatting.TT="%CCYY       年, 4桁\n%YY      年, 下2桁 (00-99)\n%MM     月 数値 (01-12)\n%DD       日, 0埋め (01-31)\n%hh     時 24時間形式 (00-23)\n%mm       分 (00-59)\n%ss      秒 (00-61)\n%%       A % 記号\n%a      曜日 省略名\n%A      曜日 完全名\n%b      月 省略名\n%B       月 完全名\n%d       日, 0埋め (01-31)\n%H      時 24時間形式 (00-23)\n%I        時 12時間形式 (01-12)\n%m        月 数値 (01-12)\n%M        分 (00-59)\n%p       午前または午後の指定\n%S      秒 (00-61)\n%y       年, 下2桁 (00-99)\n%Y      年\n%z       ISO 8601 UTCタイムゾーンからのオフセット\n        名前または省略名\n%Z        タイムゾーン名または省略名\n"
109
+FilenameFormatting.TT="%CCYY   年, 4桁\n%YY      年, 下2桁 (00-99)\n%MM     月 数値 (01-12)\n%DD       日, 0埋め (01-31)\n%hh     時 24時間形式 (00-23)\n%mm       分 (00-59)\n%ss      秒 (00-61)\n%%       A % 記号\n%a      曜日 省略名\n%A      曜日 完全名\n%b      月 省略名\n%B       月 完全名\n%d       日, 0埋め (01-31)\n%H      時 24時間形式 (00-23)\n%I        時 12時間形式 (01-12)\n%m        月 数値 (01-12)\n%M        分 (00-59)\n%p       午前または午後の指定\n%S      秒 (00-61)\n%y       年, 下2桁 (00-99)\n%Y      年\n%z       ISO 8601 UTCからのオフセット\n%Z        タイムゾーン名または略称\n"
110
 
111
 Basic.Settings.Video="映像"
112
 Basic.Settings.Video.Adapter="ビデオアダプター"
113
@@ -685,7 +699,8 @@
114
 Basic.Settings.Audio="音声"
115
 Basic.Settings.Audio.SampleRate="サンプリングレート"
116
 Basic.Settings.Audio.Channels="チャンネル"
117
-Basic.Settings.Audio.MeterDecayRate="音声メーターの減衰率"
118
+Basic.Settings.Audio.Meters="メーター"
119
+Basic.Settings.Audio.MeterDecayRate="減衰率"
120
 Basic.Settings.Audio.MeterDecayRate.Fast="速い"
121
 Basic.Settings.Audio.MeterDecayRate.Medium="中 (タイプ I PPM)"
122
 Basic.Settings.Audio.MeterDecayRate.Slow="遅い (タイプ II PPM)"
123
@@ -696,12 +711,13 @@
124
 Basic.Settings.Audio.MultichannelWarning="配信する場合、配信サービスがサラウンド音声の取り込みと再生の両方をサポートしているかどうかを確認してください。Twitch、Facebook 360 Live、Mixer RTMP、Smashcastは、サラウンド音声が完全にサポートされている例です。しかしFacebook LiveとYouTube Liveはどちらもサラウンド取り込みを受信しますが、Facebook Liveはステレオにダウンミックスし、YouTube Liveは2チャンネルのみしか再生できません。\n\nVSTプラグインのサポートは保証されていませんが、OBS音声フィルタはサラウンド音声と互換性があります。"
125
 Basic.Settings.Audio.MultichannelWarning.Title="サラウンド音声を有効にしますか?"
126
 Basic.Settings.Audio.MultichannelWarning.Confirm="サラウンド音声を有効にしてもよろしいですか?"
127
-Basic.Settings.Audio.DesktopDevice="デスクトップ音声デバイス"
128
-Basic.Settings.Audio.DesktopDevice2="デスクトップ音声デバイス 2"
129
-Basic.Settings.Audio.AuxDevice="マイク音声デバイス"
130
-Basic.Settings.Audio.AuxDevice2="マイク音声デバイス 2"
131
-Basic.Settings.Audio.AuxDevice3="マイク音声デバイス 3"
132
-Basic.Settings.Audio.AuxDevice4="マイク音声デバイス 4"
133
+Basic.Settings.Audio.Devices="デバイス"
134
+Basic.Settings.Audio.DesktopDevice="デスクトップ音声"
135
+Basic.Settings.Audio.DesktopDevice2="デスクトップ音声 2"
136
+Basic.Settings.Audio.AuxDevice="マイク音声"
137
+Basic.Settings.Audio.AuxDevice2="マイク音声 2"
138
+Basic.Settings.Audio.AuxDevice3="マイク音声 3"
139
+Basic.Settings.Audio.AuxDevice4="マイク音声 4"
140
 Basic.Settings.Audio.EnablePushToMute="プッシュ-ミュートを有効にする"
141
 Basic.Settings.Audio.PushToMuteDelay="プッシュ-ミュート遅延"
142
 Basic.Settings.Audio.EnablePushToTalk="プッシュ-トークを有効にする"
143
@@ -719,11 +735,11 @@
144
 Basic.Settings.Advanced.FormatWarning="警告: NV12以外のカラーフォーマットは主に録画を想定しており、配信には非推奨です。配信ではカラーフォーマットの変換による CPU使用率の増加が発生する可能性があります。"
145
 Basic.Settings.Advanced.Audio.BufferingTime="音声バッファ処理時間"
146
 Basic.Settings.Advanced.Video.ColorFormat="カラーフォーマット"
147
-Basic.Settings.Advanced.Video.ColorSpace="YUV 色空間"
148
-Basic.Settings.Advanced.Video.ColorRange="YUV 色範囲"
149
+Basic.Settings.Advanced.Video.ColorSpace="色空間"
150
+Basic.Settings.Advanced.Video.ColorRange="色範囲"
151
 Basic.Settings.Advanced.Video.ColorRange.Partial="一部"
152
 Basic.Settings.Advanced.Video.ColorRange.Full="全部"
153
-Basic.Settings.Advanced.Audio.MonitoringDevice="音声モニタリングデバイス"
154
+Basic.Settings.Advanced.Audio.MonitoringDevice="モニタリングデバイス"
155
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="既定"
156
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Windowsの音量を自動で下げる機能を無効にする"
157
 Basic.Settings.Advanced.StreamDelay="遅延配信"
158
@@ -740,7 +756,7 @@
159
 
160
 Basic.AdvAudio="オーディオの詳細プロパティ"
161
 Basic.AdvAudio.Name="名称"
162
-Basic.AdvAudio.Volume="音量 (%)"
163
+Basic.AdvAudio.Volume="音量"
164
 Basic.AdvAudio.Mono="モノラルにダウンミックス"
165
 Basic.AdvAudio.Balance="バランス"
166
 Basic.AdvAudio.SyncOffset="同期オフセット (ミリ秒)"
167
@@ -759,7 +775,7 @@
168
 Basic.SystemTray.Show="表示"
169
 Basic.SystemTray.Hide="非表示"
170
 
171
-Basic.SystemTray.Message.Reconnecting="切断。  再接続..."
172
+Basic.SystemTray.Message.Reconnecting="切断。 再接続..."
173
 
174
 Hotkeys.Insert="Insertキー"
175
 Hotkeys.Delete="Deleteキー"
176
@@ -816,6 +832,7 @@
177
 NoSources.Title="ソース無し"
178
 NoSources.Text="映像ソースをまだ追加していないようなので、空白の画面だけが出力されます。よろしいですか?"
179
 NoSources.Text.AddSource="メインウィンドウのソースボックスの下にある + アイコンをクリックすると、いつでもソースを追加することができます。"
180
+NoSources.Label="ソースがありません。\n下の + ボタンをクリックするか、\nまたはここを右クリックして追加してください。"
181
 
182
 ChangeBG="色の設定"
183
 CustomColor="カスタム色"
184
@@ -834,3 +851,5 @@
185
 ResizeOutputSizeOfSource.Text="基本解像度と出力解像度は、現在のソースサイズにリサイズされます。"
186
 ResizeOutputSizeOfSource.Continue="続行しますか?"
187
 
188
+PreviewTransition="トランジションのプレビュー"
189
+
190
obs-studio-23.1.0.tar.xz/UI/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ka-GE.ini Changed
378
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="შვეული განლაგება"
3
 Group="დაჯგუფება"
4
 DoNotShowAgain="მომავალში ჩვენების გარეშე"
5
+Default="(ნაგულისხმევი)"
6
+Calculating="ითვლება..."
7
 
8
 AlreadyRunning.Title="OBS უკვე გაშვებულია"
9
 AlreadyRunning.Text="OBS უკვე გაშვებულია! გთხოვთ, ჯერ დახუროთ OBS-ის ყველა გაშვებული პროცესი, სანამ ახლის გაშვებას შეეცდებით. თუ მითითებული გაქვთ, რომ დახურვის ნაცვლად, OBS სისტემურ არეში უნდა ჩაიკეცოს, გთხოვთ მანდაც გადაამოწმოთ, დარჩენილი ხომ არაა."
10
@@ -94,7 +96,7 @@
11
 Auth.AuthFailure.Title="შესვლა ვერ მოხერხდა"
12
 Auth.AuthFailure.Text="ვერ მოხერხდა შესვლა %1-ზე:\n\n%2: %3"
13
 Auth.InvalidScope.Title="საჭიროებს ანგარიშზე შესვლას"
14
-Auth.InvalidScope.Text="შესვლის მოთხოვნები შეცვლილია მომსახურებისთვის %1.  ზოგი შესაძლებლობა, შეიძლება აღარ იყოს ხელმისაწვდომი."
15
+Auth.InvalidScope.Text="შესვლის მოთხოვნები შეცვლილია მომსახურებისთვის %1. ზოგი შესაძლებლობა, შეიძლება აღარ იყოს ხელმისაწვდომი."
16
 Auth.LoadingChannel.Title="არხის მონაცემების ჩატვირთვა..."
17
 Auth.LoadingChannel.Text="%1-ის არხის მონაცემები იტვირთება, გთხოვთ მოითმინოთ..."
18
 Auth.ChannelFailure.Title="მონაცემების ჩატვირთვა ვერ მოხერხდა"
19
@@ -103,6 +105,7 @@
20
 Auth.StreamInfo="ნაკადის მონაცემები"
21
 TwitchAuth.Stats="Twitch-ის სტატისტიკა"
22
 TwitchAuth.Feed="Twitch მოქმედებების არხი"
23
+TwitchAuth.TwoFactorFail.Title="ნაკადის გასაღების მოთხოვნა ვერ მოხერხდა"
24
 
25
 Copy.Filters="ფილტრების ასლი"
26
 Paste.Filters="ფილტრების ჩასმა"
27
@@ -138,7 +141,7 @@
28
 Basic.AutoConfig.StreamPage.ConnectAccount="ანგარიშის დაკავშირება (არასავალდებულო)"
29
 Basic.AutoConfig.StreamPage.DisconnectAccount="ანგარიშიდან გამოერთება"
30
 Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Title="გსურთ ანგარიშიდან გამოერთება?"
31
-Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="ცვლილება დაუყოვნებლივ აისახება.  ნამდვილად გსურთ, ანგარიშიდან გამოერთება?"
32
+Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="ცვლილება დაუყოვნებლივ აისახება. ნამდვილად გსურთ, ანგარიშიდან გამოერთება?"
33
 Basic.AutoConfig.StreamPage.UseStreamKey="ნაკადის გასაღების გამოყენება"
34
 Basic.AutoConfig.StreamPage.Service="მომსახურება"
35
 Basic.AutoConfig.StreamPage.Service.ShowAll="ყველას ჩვენება..."
36
@@ -185,9 +188,10 @@
37
 Basic.Stats.DroppedFrames="გამოტოვებული კადრები (ქსელი)"
38
 Basic.Stats.MegabytesSent="საერთო მოცულობა"
39
 Basic.Stats.Bitrate="ბიტური სიხშირე"
40
+Basic.Stats.DiskFullIn="დარჩენილი ადგილი დისკზე (დაახლ.)"
41
 
42
 ResetUIWarning.Title="ნამდვილად გსურთ იერსახის პარამეტრების ჩამოყრა?"
43
-ResetUIWarning.Text="შედეგად, დამატებითი ნაწილები დაიმალება.  მათი ხელახლა გამოჩენა, შესაძლებელი იქნება ხედის მენიუდან, სურვილის შემთხვევაში.\n\nნამდვილად გსურთ იერსახის პარამეტრების ჩამოყრა?"
44
+ResetUIWarning.Text="შედეგად, დამატებითი ნაწილები დაიმალება. მათი ხელახლა გამოჩენა, შესაძლებელი იქნება ხედის მენიუდან, სურვილის შემთხვევაში.\n\nნამდვილად გსურთ იერსახის პარამეტრების ჩამოყრა?"
45
 
46
 Updater.Title="ხელმისაწვდომია განახლება"
47
 Updater.Text="ხელმისაწვდომია განახლება:"
48
@@ -195,19 +199,19 @@
49
 Updater.RemindMeLater="მოგვიანებით შეხსენება"
50
 Updater.Skip="ვერსიის გამოტოვება"
51
 Updater.Running.Title="პროგრამა ამჟამად გაშვებულია"
52
-Updater.Running.Text="გაშვებულია გამომავალი სიგნალები, გთხოვთ, ჯერ გამორთოთ ყველა მოქმედი გამომავალი სიგნალი, სანამ განახლებას შეეცდებით"
53
+Updater.Running.Text="მიმდინარეობს სიგნალის გამოტანა, გთხოვთ, ჯერ გათიშოთ ყველა მოქმედი გამოტანა, სანამ განახლებას შეეცდებით"
54
 Updater.NoUpdatesAvailable.Title="განახლებები არაა ხელმისაწვდომი"
55
 Updater.NoUpdatesAvailable.Text="ამჟამად, განახლებები არაა ხელმისაწვდომი"
56
 Updater.FailedToLaunch="განახლების გაშვება ვერ მოხერხდა"
57
 Updater.GameCaptureActive.Title="მიმდინარეობს თამაშის ჩაწერა"
58
-Updater.GameCaptureActive.Text="ამჟამად გაშვებულია თამაშის ჩამწერი ბიბლიოთეკა. გთხოვთ, შეწყვიტოთ ყველა თამაშის/პროგრამის ჩაწერა (ან თავიდან ჩართოთ windows) და სცადოთ ხელახლა."
59
+Updater.GameCaptureActive.Text="ამჟამად გაშვებულია თამაშის ჩამწერი ბიბლიოთეკა. გთხოვთ, შეწყვიტოთ ყველა თამაშის/პროგრამის ჩაწერა (ან თავიდან ჩართოთ Windows) და სცადოთ ხელახლა."
60
 
61
-QuickTransitions.SwapScenes="გადასვლის შემდეგ, შესათვალიერებელი და გამომავალი სცენებისთვის ადგილის გაცვლა"
62
-QuickTransitions.SwapScenesTT="გადასვლის შემდეგ, შესათვალიერებელი და გამომავალი სცენებისთვის ადგილის გაცვლა (თუ ჯერ კიდევ არსებობს გამომავალი სცენის თავდაპირველი ასლი).\nამის შედეგად, გამომავალი სცენის თავდაპირველ ვარიანტზე გაკეთებული ცვლილებები, არ გაუქმდება."
63
+QuickTransitions.SwapScenes="გადასვლის შემდეგ, შესათვალიერებელი და გამოტანილი სცენებისთვის ადგილის გაცვლა"
64
+QuickTransitions.SwapScenesTT="გადასვლის შემდეგ, შესათვალიერებელი და გამოტანილი სცენებისთვის ადგილის გაცვლა (თუ ჯერ კიდევ არსებობს გამოტანის თავდაპირველი სცენა).\nგამოტანის თავდაპირველ სცენაზე გაკეთებული ცვლილებები, არ გაუქმდება."
65
 QuickTransitions.DuplicateScene="სცენის გაორკეცება"
66
-QuickTransitions.DuplicateSceneTT="ერთი და იმავე სცენის შესწორებისას, საშუალებას იძლევა წყარო გარდაიქმნას, გამომავალი შედეგის შეცვლის გარეშე.\nწყაროს პარამეტრების ჩასასწორებლად, გამომავალი შედეგის შეცვლის გარეშე, ჩართეთ 'წყაროს გაორკეცება'\nმოცემული მნიშვნელობის ცვლილება გამოიწვევს მიმდინარე გამომავალი სცენის საწყისზე დაბრუნებას (თუ ჯერ კიდევ არსებობს)."
67
+QuickTransitions.DuplicateSceneTT="ერთი და იმავე სცენის შესწორებისას, საშუალებას იძლევა წყაროები გარდაიქმნას, გამოტანის შეუცვლელად.\nწყაროს პარამეტრების ჩასასწორებლად, გამოტანის შეუცვლელად, ჩართეთ „წყაროს გაორკეცება“.\nამ მნიშვნელობის ცვლილება, გამოტანის მიმდინარე სცენას დააბრუნებს საწყისზე (თუ ჯერ კიდევ არსებობს)."
68
 QuickTransitions.EditProperties="წყაროს გაორკეცება"
69
-QuickTransitions.EditPropertiesTT="ერთი და იმავე სცენის შესწორებისას, საშუალებას იძლევა წყაროს პარამეტრები ჩასწორდეს, გამომავალი შედეგის შეცვლის გარეშე.\nმისი გამოყენება შესაძლებელია, მხოლოდ 'სცენის გაორკეცების' შემთხვევაში\nცალკეული წყაროები (მათ შორის გადაღებული ან არსებული მედიაფაილები) არ იძლევა ამის საშუალებას და მათი განცალკევებით ჩასწორება შეუძლებელია.\nმოცემული მნიშვნელობის ცვლილება გამოიწვევს მიმდინარე გამომავალი სცენის საწყისზე დაბრუნებას (თუ ჯერ კიდევ არსებობს).\n\nგაფრთხილება: წყაროს გაორკეცების შედეგად, შესაძლოა სისტემის და ვიდეოდაფის დატვირთვა გაიზარდოს."
70
+QuickTransitions.EditPropertiesTT="ერთი და იმავე სცენის შესწორებისას, საშუალებას იძლევა წყაროს პარამეტრები ჩასწორდეს, გამოტანის შეუცვლელად.\nმისი გამოყენება შესაძლებელია, მხოლოდ „სცენის გაორკეცებისას“.\nზოგიერთი წყარო (როგორიცაა მიმდინარე გადაღება ან მედიაფაილები) არ იძლევა ამის საშუალებას და ცალკე ვერ ჩასწორდება.\nამ მნიშვნელობის ცვლილება, მიმდინარე გამოტანის სცენას დააბრუნებს საწყისზე (თუ ჯერ კიდევ არსებობს).\n\nგაფრთხილება: წყაროს გაორკეცების შედეგად, შესაძლოა სისტემის და ვიდეოდაფის დატვირთვა გაიზარდოს."
71
 QuickTransitions.HotkeyName="სწრაფი გადასვლა: %1"
72
 
73
 Basic.AddTransition="გასამართი გადასვლის დამატება"
74
@@ -239,7 +243,7 @@
75
 ConfirmBWTest.Text="OBS-ისთვის მითითებული გაქვთ ქსელის გამტარუნარიანობის რეჟიმი. ეს რეჟიმი საშუალებას გაძლევთ, შეამოწმოთ ქსელის მუშაობა, თქვენს არხზე პირდაპირ ეთერში გასვლის გარეშე. შემოწმების დასრულებისთანავე, საჭიროა მისი გათიშვა, რომ მაყურებლებმა შეძლონ გაშვებული ნაკადის ხილვა\n\nგსურთ, განაგრძოთ?"
76
 
77
 ConfirmExit.Title="OBS-დან გასვლა?"
78
-ConfirmExit.Text="OBS ამჟამად მოქმედია.  ყველა გაშვებული ნაკადი/ჩაწერა შეწყდება.  ნამდვილად გსურთ გამოსვლა?"
79
+ConfirmExit.Text="OBS ამჟამად მოქმედია. ყველა გაშვებული ნაკადი/ჩაწერა შეწყდება. ნამდვილად გსურთ გამოსვლა?"
80
 
81
 ConfirmRemove.Title="წაშლის დადასტურება"
82
 ConfirmRemove.Text="ნამდვილად გსურთ, წაიშალოს „$1“?"
83
@@ -248,26 +252,31 @@
84
 Output.StartStreamFailed="ნაკადის გაშვება ვერ მოხერხდა"
85
 Output.StartRecordingFailed="ჩაწერის დაწყება ვერ მოხერხდა"
86
 Output.StartReplayFailed="გადახვევის ჩართვა ვერ მოხერხდა"
87
-Output.StartFailedGeneric="სიგნალის გაშვება ვერ მოხერხდა.  გთხოვთ, შეამოწმეთ აღრიცხვის ფაილი, დამატებითი ინფორმაციისთვის.\n\nშენიშვნა: თუ იყენებთ NVENC ან AMD დამშიფრავებს, დარწმუნდით რომ თქვენი ვიდეოდაფის პროგრამა განახლებულია."
88
+Output.StartFailedGeneric="სიგნალის გაშვება ვერ მოხერხდა. გთხოვთ, შეამოწმეთ აღრიცხვის ფაილი, დამატებითი ინფორმაციისთვის.\n\nშენიშვნა: თუ იყენებთ NVENC ან AMD დამშიფრავებს, დარწმუნდით რომ თქვენი ვიდეოდაფის პროგრამა განახლებულია."
89
+
90
 
91
 Output.ConnectFail.Title="დაკავშირება ვერ მოხერხდა"
92
-Output.ConnectFail.BadPath="არამართებული მისამართი ან დასაკავშირებელი URL ბმული.  გთხოვთ, გადაამოწმოთ თქვენი პარამეტრების სისწორე."
93
+Output.ConnectFail.BadPath="არამართებული მისამართი ან დასაკავშირებელი URL ბმული. გთხოვთ, გადაამოწმოთ თქვენი პარამეტრების სისწორე."
94
 Output.ConnectFail.ConnectFailed="სერვერთან დაკავშირება ვერ მოხერხდა"
95
-Output.ConnectFail.InvalidStream="ვერ ხერხდება მითითებულ არხთან ან ნაკადის გასაღებთან დაკავშირება, გთხოვთ, გადაამოწმოთ თქვენი ნაკადის გასაღები.  თუ სწორია, მაშინ შესაძლოა ხარვეზი იყოს სერვერთან დაკავშირებისას."
96
-Output.ConnectFail.Error="მოულოდნელი შეცდომა წარმოიქმნა სერვერთან დაკავშირებისას.  დამატებითი ინფორმაციისთვის იხილეთ აღრიცხვის ფაილი."
97
+Output.ConnectFail.InvalidStream="ვერ ხერხდება მითითებულ არხთან ან ნაკადის გასაღებთან დაკავშირება, გთხოვთ, გადაამოწმოთ თქვენი ნაკადის გასაღები. თუ სწორია, მაშინ შესაძლოა ხარვეზი იყოს სერვერთან დაკავშირებისას."
98
+Output.ConnectFail.Error="მოულოდნელი შეცდომა წარმოიქმნა სერვერთან დაკავშირებისას. დამატებითი ინფორმაციისთვის იხილეთ აღრიცხვის ფაილი."
99
 Output.ConnectFail.Disconnected="სერვერთან კავშირი გაწყვეტილია."
100
 
101
+Output.StreamEncodeError.Title="შეცდომა დაშიფვრისას"
102
+Output.StreamEncodeError.Msg="დამშიფრავის შეცდომა ნაკადის გაშვებისას."
103
+
104
 Output.RecordFail.Title="ჩაწერის დაწყება ვერ მოხერხდა"
105
-Output.RecordFail.Unsupported="ამ სახის გამომავალი სიგნალი ან არაა მხარდაჭერილი, ან არ იძლევა ერთზე მეტი ხმოვანი ფაილის გამოყენების საშუალებას.  გთხოვთ, გადაამოწმოთ თქვენი პარამეტრები და სცადოთ ხელახლა."
106
+Output.RecordFail.Unsupported="გამოტანის ეს სახეობა ან არაა მხარდაჭერილი, ან არ იძლევა ერთზე მეტი ხმოვანი ფაილის გამოყენების საშუალებას. გთხოვთ, გადაამოწმოთ თქვენი პარამეტრები და სცადოთ ხელახლა."
107
 Output.RecordNoSpace.Title="არასაკმარისი ადგილი დისკზე"
108
 Output.RecordNoSpace.Msg="დისკზე აღარაა საკმარისი ადგილი ჩაწერის გასაგრძელებლად."
109
 Output.RecordError.Title="შეცდომა ჩაწერისას"
110
 Output.RecordError.Msg="ჩაწერის დროს დაუდგენელი სახის შეცდომა წარმოიშვა."
111
+Output.RecordError.EncodeErrorMsg="დამშიფრავის შეცდომა წარმოიშვა ჩაწერისას."
112
 Output.ReplayBuffer.NoHotkey.Title="სწრაფი ღილაკი არაა მითითებული!"
113
-Output.ReplayBuffer.NoHotkey.Msg="სწრაფი ღილაკი არაა მითითებული გადახვევისთვის.  გთხოვთ, მიუთითოთ „შენახვის“ ღილაკი, გადასახვევი მასალის შესანახად."
114
+Output.ReplayBuffer.NoHotkey.Msg="სწრაფი ღილაკი არაა მითითებული გადახვევისთვის. გთხოვთ, მიუთითოთ „შენახვის“ ღილაკი, გადასახვევი მასალის შესანახად."
115
 
116
 Output.BadPath.Title="ფაილის არამართებული მისამართი"
117
-Output.BadPath.Text="ფაილის მითითებული მდებარეობა არასწორია.  გთხოვთ, გადაამოწმოთ თქვენი პარამეტრების სისწორე."
118
+Output.BadPath.Text="ფაილის მითითებული მდებარეობა არასწორია. გთხოვთ, გადაამოწმოთ თქვენი პარამეტრების სისწორე."
119
 
120
 LogReturnDialog="ჩანაწერი წარმატებით აიტვირთა"
121
 LogReturnDialog.CopyURL="ბმულის ასლი"
122
@@ -304,7 +313,9 @@
123
 Basic.Scene="სცენა"
124
 Basic.DisplayCapture="ეკრანის გადაღება"
125
 
126
-Basic.Main.PreviewConextMenu.Enable="შეთვალიერების შესაძლებლობა"
127
+Basic.Main.PreviewConextMenu.Enable="შეთვალიერების ჩართვა"
128
+
129
+Basic.Main.Preview.Disable="შეთვალიერების გამორთვა"
130
 
131
 ScaleFiltering="ზომის შეცვლის ფილტრი"
132
 ScaleFiltering.Point="წერტილოვანი"
133
@@ -325,8 +336,8 @@
134
 Deinterlacing.TopFieldFirst="ზედა ველიდან"
135
 Deinterlacing.BottomFieldFirst="ქვედა ველიდან"
136
 
137
-VolControl.SliderUnmuted="ხმის სამართავი '%1': %2"
138
-VolControl.SliderMuted="ხმის სამართავი '%1': %2 (ამჟამად დადუმებული)"
139
+VolControl.SliderUnmuted="ხმის სამართავი „%1“: %2"
140
+VolControl.SliderMuted="ხმის სამართავი „%1“: %2 (ამჟამად დადუმებული)"
141
 VolControl.Mute="'%1' დადუმება"
142
 VolControl.Properties="„%1“ – პარამეტრები"
143
 
144
@@ -361,7 +372,7 @@
145
 Basic.PropertiesWindow.SelectColor="ფერის შერჩევა"
146
 Basic.PropertiesWindow.SelectFont="შრიფტის შერჩევა"
147
 Basic.PropertiesWindow.ConfirmTitle="პარამეტრები შეცვლილია"
148
-Basic.PropertiesWindow.Confirm="ცვლილებები არაა დამახსოვრებული.  გსურთ მათი შენახვა?"
149
+Basic.PropertiesWindow.Confirm="ცვლილებები არაა დამახსოვრებული. გსურთ მათი შენახვა?"
150
 Basic.PropertiesWindow.NoProperties="პარამეტრები მიუწვდომელია"
151
 Basic.PropertiesWindow.AddFiles="ფაილების დამატება"
152
 Basic.PropertiesWindow.AddDir="საქაღალდის დამატება"
153
@@ -462,7 +473,7 @@
154
 Basic.MainMenu.Edit.Scale="შეთვალიერების ზომის შეცვლა (&S)"
155
 Basic.MainMenu.Edit.Scale.Window="ფანჯრის ზომამდე"
156
 Basic.MainMenu.Edit.Scale.Canvas="ფონის ზომამდე (%1x%2)"
157
-Basic.MainMenu.Edit.Scale.Output="გამომავალი ვიდეოს ზომამდე (%1x%2)"
158
+Basic.MainMenu.Edit.Scale.Output="გამოტანა (%1x%2)"
159
 Basic.MainMenu.Edit.Transform="გარდაქმნა (&T)"
160
 Basic.MainMenu.Edit.Transform.EditTransform="გარდაქმნის ჩასწორება... (&E)"
161
 Basic.MainMenu.Edit.Transform.CopyTransform="გარდაქმნის ასლი"
162
@@ -476,6 +487,8 @@
163
 Basic.MainMenu.Edit.Transform.FitToScreen="ეკრანის ზომაზე მორგება (&F)"
164
 Basic.MainMenu.Edit.Transform.StretchToScreen="ეკრანის ზომაზე გაწელვა (&S)"
165
 Basic.MainMenu.Edit.Transform.CenterToScreen="ეკრანის შუაში განთავსება (&C)"
166
+Basic.MainMenu.Edit.Transform.VerticalCenter="შუაში შვეულად"
167
+Basic.MainMenu.Edit.Transform.HorizontalCenter="შუაში თარაზულად"
168
 Basic.MainMenu.Edit.Order="დალაგება (&O)"
169
 Basic.MainMenu.Edit.Order.MoveUp="ზემოთ აწევა (&U)"
170
 Basic.MainMenu.Edit.Order.MoveDown="ქვემოთ ჩამოწევა (&D)"
171
@@ -514,14 +527,14 @@
172
 Basic.MainMenu.Help.Logs.UploadLastLog="ბოლო აღრიცხვის ფაილის ატვირთვა (&L)"
173
 Basic.MainMenu.Help.Logs.ViewCurrentLog="მიმდინარე აღრიცხვის ფაილის ნახვა (&V)"
174
 Basic.MainMenu.Help.CheckForUpdates="განახლებებზე შემოწმება"
175
-Basic.MainMenu.Help.CrashLogs="ავარიული დახურვების მოხსენებები (&R)"
176
-Basic.MainMenu.Help.CrashLogs.ShowLogs="ავარიული დახურვების მოხსენებების ჩვენება (&S)"
177
+Basic.MainMenu.Help.CrashLogs="უეცარი გათიშვების მოხსენებები (&R)"
178
+Basic.MainMenu.Help.CrashLogs.ShowLogs="უეცარი გათიშვების მოხსენებების ჩვენება (&S)"
179
 Basic.MainMenu.Help.CrashLogs.UploadLastLog="ბოლო მოხსენების ატვირთვა (&L)"
180
 Basic.MainMenu.Help.About="შესახებ (&A)"
181
 
182
 Basic.Settings.ProgramRestart="ამ ცვლილებების ასახვისთვის, საჭიროა პროგრამის ხელახლა გაშვება."
183
 Basic.Settings.ConfirmTitle="ცვლილებების დადასტურება"
184
-Basic.Settings.Confirm="ცვლილებები არაა დამახსოვრებული.  გსურთ მათი შენახვა?"
185
+Basic.Settings.Confirm="ცვლილებები არაა დამახსოვრებული. გსურთ მათი შენახვა?"
186
 
187
 Basic.Settings.General="მთავარი"
188
 Basic.Settings.General.Theme="იერსახე"
189
@@ -571,21 +584,21 @@
190
 Basic.Settings.Stream.Custom.Password="პაროლი"
191
 Basic.Settings.Stream.BandwidthTestMode="ქსელის გამტარუნარიანობის შემოწმების რეჟიმი"
192
 
193
-Basic.Settings.Output="გამომავალი სიგნალი"
194
+Basic.Settings.Output="გამოტანა"
195
 Basic.Settings.Output.Format="ჩაწერის ფორმატი"
196
 Basic.Settings.Output.Encoder="დამშიფრავი"
197
 Basic.Settings.Output.SelectDirectory="საქაღალდის არჩევა ჩანაწერისთვის"
198
 Basic.Settings.Output.SelectFile="ფაილის არჩევა ჩანაწერისთვის"
199
 Basic.Settings.Output.EnforceBitrate="ნაკადის გაშვების მომსახურების ბიტური სიხშირის ზღვრების დადგენა"
200
-Basic.Settings.Output.Mode="გამომავალი სიგნალის რეჟიმი"
201
+Basic.Settings.Output.Mode="გამოტანის რეჟიმი"
202
 Basic.Settings.Output.Mode.Simple="მარტივი"
203
 Basic.Settings.Output.Mode.Adv="გაფართოებული"
204
-Basic.Settings.Output.Mode.FFmpeg="FFmpeg გამომავალი სიგნალი"
205
+Basic.Settings.Output.Mode.FFmpeg="FFmpeg-გამოტანა"
206
 Basic.Settings.Output.UseReplayBuffer="გადახვევის შესაძლებლობა"
207
 Basic.Settings.Output.ReplayBuffer.SecondsMax="გადახვევის დასაშვები დრო (წამი)"
208
 Basic.Settings.Output.ReplayBuffer.MegabytesMax="მეხსიერების დასაშვები მოცულობა (მეგაბაიტებში)"
209
 Basic.Settings.Output.ReplayBuffer.Estimate="მეხსიერების მიახლოებითი მოხმარება: %1 MB"
210
-Basic.Settings.Output.ReplayBuffer.EstimateUnknown="შეუძლებელია მეხსიერების მიახლოებითი მოხმარების დადგენა.  გთხოვთ, მიუთითოთ მეხსიერების დასაშვები ზღვარი."
211
+Basic.Settings.Output.ReplayBuffer.EstimateUnknown="შეუძლებელია მეხსიერების მიახლოებითი მოხმარების დადგენა. გთხოვთ, მიუთითოთ მეხსიერების დასაშვები ზღვარი."
212
 Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(შენიშვნა: დარწმუნდით, რომ გადახვევისთვის სწრაფი ღილაკები დაყენებულია შესაბამის განყოფილებაში)"
213
 Basic.Settings.Output.ReplayBuffer.Prefix="გადასახვევი მასალის შესანახი ფაილის თავსართი"
214
 Basic.Settings.Output.ReplayBuffer.Suffix="ბოლოსართი"
215
@@ -617,7 +630,7 @@
216
 Basic.Settings.Output.CustomMuxerSettings="შემფუთავის პარამეტრების მითითება"
217
 Basic.Settings.Output.NoSpaceFileName="ფაილის სახელის შექმნა, გამოტოვებული ადგილების გარეშე"
218
 
219
-Basic.Settings.Output.Adv.Rescale="გამომავალი ვიდეოს ზომების შეცვლა"
220
+Basic.Settings.Output.Adv.Rescale="გამოტანის ზომების შეცვლა"
221
 Basic.Settings.Output.Adv.AudioTrack="ხმოვანი ბილიკი"
222
 Basic.Settings.Output.Adv.Streaming="ნაკადი"
223
 Basic.Settings.Output.Adv.ApplyServiceSettings="ნაკადის გაშვების მომსახურების პარამეტრების გამოყენება"
224
@@ -629,14 +642,14 @@
225
 Basic.Settings.Output.Adv.Audio.Track6="ბილიკი 6"
226
 
227
 Basic.Settings.Output.Adv.Recording="ჩაწერა"
228
-Basic.Settings.Output.Adv.Recording.Type="ტიპი"
229
-Basic.Settings.Output.Adv.Recording.Type.Standard="სტანდარტული"
230
-Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="მითითებული გამომავალი სიგნალი (FFmpeg)"
231
+Basic.Settings.Output.Adv.Recording.Type="სახეობა"
232
+Basic.Settings.Output.Adv.Recording.Type.Standard="ჩვეულებრივი"
233
+Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="მითითებული გამოტანა (FFmpeg)"
234
 Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(გაშვებული ნაკადის დამშიფრავის გამოყენება)"
235
 Basic.Settings.Output.Adv.Recording.Filename="ფაილის დასახელების ფორმატი"
236
 Basic.Settings.Output.Adv.Recording.OverwriteIfExists="არსებულ ფაილზე გადაწერა"
237
-Basic.Settings.Output.Adv.FFmpeg.Type="FFmpeg გამომავალი სიგნალის სახე"
238
-Basic.Settings.Output.Adv.FFmpeg.Type.URL="მითითებულ URL ბულზე"
239
+Basic.Settings.Output.Adv.FFmpeg.Type="FFmpeg-გამოტანის სახეობა"
240
+Basic.Settings.Output.Adv.FFmpeg.Type.URL="მითითებულ URL-ბმულზე"
241
 Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="ფაილში"
242
 Basic.Settings.Output.Adv.FFmpeg.SaveFilter.Common="ჩაწერის ცნობილი ფორმატები"
243
 Basic.Settings.Output.Adv.FFmpeg.SaveFilter.All="ყველა ფაილი"
244
@@ -664,7 +677,7 @@
245
 Basic.Settings.Video="ვიდეო"
246
 Basic.Settings.Video.Adapter="ვიდეოდაფა"
247
 Basic.Settings.Video.BaseResolution="ეკრანის (ფონის) ძირითადი გაფართოება"
248
-Basic.Settings.Video.ScaledResolution="გამომავალი ვიდეოს (ზომაშეცვლილის) გაფართოება"
249
+Basic.Settings.Video.ScaledResolution="გამოტანის (ზომაშეცვლილის) გაფართოება"
250
 Basic.Settings.Video.DownscaleFilter="ზომის შემცირების ფილტრი"
251
 Basic.Settings.Video.DisableAeroWindows="Aero გაფორმების გათიშვა (მხოლოდ Windows-ზე)"
252
 Basic.Settings.Video.FPS="FPS"
253
@@ -674,8 +687,8 @@
254
 Basic.Settings.Video.Numerator="მრიცხველი"
255
 Basic.Settings.Video.Denominator="მნიშვნელი"
256
 Basic.Settings.Video.Renderer="დამმუშავებელი"
257
-Basic.Settings.Video.InvalidResolution="გაფართოების არასწორი მნიშვნელობა.  უნდა იყოს [width]x[height] (მაგ. 1920x1080)"
258
-Basic.Settings.Video.CurrentlyActive="ვიდეო ამჟამად გაშვებულია.  გთხოვთ, გამორთოთ ყველა გამომავალი სიგნალი, ვიდეოს პარამეტრების ჩასასწორებლად."
259
+Basic.Settings.Video.InvalidResolution="გაფართოების არასწორი მნიშვნელობა. უნდა იყოს [width]x[height] (მაგ. 1920x1080)"
260
+Basic.Settings.Video.CurrentlyActive="მიმდინარეობს ვიდეოს გამოტანა. გთხოვთ, გათიშოთ ყველა გამოტანილი სიგნალი, ვიდეოს პარამეტრების ჩასასწორებლად."
261
 Basic.Settings.Video.DisableAero="Aero გაფორმების გათიშვა"
262
 
263
 Basic.Settings.Video.DownscaleFilter.Bilinear="ორხაზოვანი (უსწრაფესი, მაგრამ ბუნდოვანი მასშტაბირება)"
264
@@ -684,8 +697,9 @@
265
 
266
 Basic.Settings.Audio="ხმა"
267
 Basic.Settings.Audio.SampleRate="სიხშირე"
268
-Basic.Settings.Audio.Channels="არხები"
269
-Basic.Settings.Audio.MeterDecayRate="ხმის დონის მზომი ხაზების მილევის სიჩქარე"
270
+Basic.Settings.Audio.Channels="არხი"
271
+Basic.Settings.Audio.Meters="საზომები"
272
+Basic.Settings.Audio.MeterDecayRate="მილევის სიჩქარე"
273
 Basic.Settings.Audio.MeterDecayRate.Fast="სწრაფი"
274
 Basic.Settings.Audio.MeterDecayRate.Medium="საშუალო (I სახის PPM)"
275
 Basic.Settings.Audio.MeterDecayRate.Slow="ნელი (II სახის PPM)"
276
@@ -693,15 +707,16 @@
277
 Basic.Settings.Audio.PeakMeterType.SamplePeak="უბრალო"
278
 Basic.Settings.Audio.PeakMeterType.TruePeak="ზუსტი (პროცესორის მაღალი მოხმარებით)"
279
 Basic.Settings.Audio.MultiChannelWarning.Enabled="ყურადღება: ჩართულია მოცულობითი ხმა."
280
-Basic.Settings.Audio.MultichannelWarning="ნაკადის გაშვებისას, გადაამოწმეთ მომსახურების მომწოდებელთან, არის თუ არა მხარდაჭერილი მოცულობითი ხმოვანი სიგნალის როგორც მიღებაც, ასევე მოსმენა.  მაგალითად Twitch, Facebook 360 Live, Mixer RTMP და Smashcast მომსახურებების შემთხვევაში, მოცულობითი ხმოვანი სიგნალი, სრულადაა მხარდაჭერილი.  რაც შეეხება Facebook Live და YouTube Live მომსახურებებს, მიუხედავად იმისა, რომ ორივე იღებს მოცულობით ხმოვან სიგნალს, Facebook Live გარდაქმნის მას სტერეო-სიგნალად, ხოლო YouTube Live უშვებს მხოლოდ ორი არხით.\n\nOBS-ის ხმოვანი ფილტრები თავსებადია მოცულობით ხმოვან სიგნალთან, მაგრამ VST-მოდულის მხარდაჭერა, შესაძლოა არ იყოს უზრუნველყოფილი."
281
+Basic.Settings.Audio.MultichannelWarning="ნაკადის გაშვებისას გადაამოწმეთ, მომსახურების მომწოდებელი, იძლევა თუ არა მოცულობითი ხმოვანი სიგნალის როგორც მიღების, ასევე მოსმენის შესაძლებლობას. მაგალითად მომსახურებებზე, როგორიცაა Twitch, Facebook 360 Live, Mixer RTMP და Smashcast, სრულადაა მხარდაჭერილი მოცულობითი ხმოვანი სიგნალი. ხოლო Facebook Live და YouTube Live, მიუხედავად იმისა, რომ ორივე იღებს მოცულობით ხმოვან სიგნალს, Facebook Live გარდაქმნის მას სტერეო-სიგნალად, ხოლო YouTube Live უშვებს მხოლოდ ორი არხით.\n\nOBS-ის ხმოვანი ფილტრები თავსებადია მოცულობით ხმოვან სიგნალთან, მაგრამ VST-მოდულის მხარდაჭერა, შესაძლოა არ იყოს უზრუნველყოფილი."
282
 Basic.Settings.Audio.MultichannelWarning.Title="ჩაირთოს მოცულობითი ხმოვანი სიგნალი?"
283
 Basic.Settings.Audio.MultichannelWarning.Confirm="ნამდვილად გსურთ, ჩართოთ მოცულობითი ხმოვანი სიგნალი?"
284
+Basic.Settings.Audio.Devices="მოწყობილობები"
285
 Basic.Settings.Audio.DesktopDevice="ხმის მოწყობილობა"
286
 Basic.Settings.Audio.DesktopDevice2="ხმის მოწყობილობა 2"
287
-Basic.Settings.Audio.AuxDevice="მიკროფონი/ხმის დამატებითი მოწყობილობა"
288
-Basic.Settings.Audio.AuxDevice2="მიკროფონი/ხმის დამატებითი მოწყობილობა 2"
289
-Basic.Settings.Audio.AuxDevice3="მიკროფონი/ხმის დამატებითი მოწყობილობა 3"
290
-Basic.Settings.Audio.AuxDevice4="მიკროფონი/ხმის დამატებითი მოწყობილობა 4"
291
+Basic.Settings.Audio.AuxDevice="მიკროფონი/დამატებითი მოწყობილობა"
292
+Basic.Settings.Audio.AuxDevice2="მიკროფონი/დამატებითი მოწყობილობა 2"
293
+Basic.Settings.Audio.AuxDevice3="მიკროფონი/დამატებითი მოწყობილობა 3"
294
+Basic.Settings.Audio.AuxDevice4="მიკროფონი/დამატებითი მოწყობილობა 4"
295
 Basic.Settings.Audio.EnablePushToMute="დაჭერით დადუმების ჩართვა"
296
 Basic.Settings.Audio.PushToMuteDelay="დაჭერით დადუმების დაყოვნება"
297
 Basic.Settings.Audio.EnablePushToTalk="დაჭერით საუბრის ჩართვა"
298
@@ -716,14 +731,14 @@
299
 Basic.Settings.Advanced.General.ProcessPriority.Normal="საშუალო"
300
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="საშუალოზე დაბალი"
301
 Basic.Settings.Advanced.General.ProcessPriority.Idle="უმოქმედო"
302
-Basic.Settings.Advanced.FormatWarning="გაფრთხილება:  ფერთა ფორმატები, გარდა NV12-ისა, ძირითადად განკუთვნილია ჩაწერისთვის და არა ნაკადის გაშვებისთვის.  ნაკადის გაშვებისას, ფერთა ფორმატის გარდაქმნებმა შესაძლოა გამოიწვიოს პროცესორის მეტად დატვირთვა."
303
+Basic.Settings.Advanced.FormatWarning="გაფრთხილება: ფერთა ფორმატები, გარდა NV12-ისა, ძირითადად განკუთვნილია ჩაწერისთვის და არა ნაკადის გაშვებისთვის. ნაკადის გაშვებისას, ფერთა ფორმატის გარდაქმნებმა შესაძლოა გამოიწვიოს პროცესორის მეტად დატვირთვა."
304
 Basic.Settings.Advanced.Audio.BufferingTime="ხმის ბუფერის დრო"
305
 Basic.Settings.Advanced.Video.ColorFormat="ფერთა ფორმატი"
306
-Basic.Settings.Advanced.Video.ColorSpace="YUV ფერთა სისტემა"
307
-Basic.Settings.Advanced.Video.ColorRange="YUV ფერთა გამა"
308
+Basic.Settings.Advanced.Video.ColorSpace="ფერთა სივრცე"
309
+Basic.Settings.Advanced.Video.ColorRange="ფერთა გამა"
310
 Basic.Settings.Advanced.Video.ColorRange.Partial="ნაწილობრივი"
311
 Basic.Settings.Advanced.Video.ColorRange.Full="სრული"
312
-Basic.Settings.Advanced.Audio.MonitoringDevice="ხმის მოსასმენი მოწყობილობა"
313
+Basic.Settings.Advanced.Audio.MonitoringDevice="მოსასმენი მოწყობილობა"
314
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="ნაგულისხმევი"
315
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Windows-ის მიერ ხმის დონის დადაბლების არიდება"
316
 Basic.Settings.Advanced.StreamDelay="ნაკადის დაყოვნება"
317
@@ -731,7 +746,7 @@
318
 Basic.Settings.Advanced.StreamDelay.Preserve="მოსაჭრელი წერტილის მომარაგება (დაყოვნების გაზრდა) ხელახლა დაკავშირებისას"
319
 Basic.Settings.Advanced.StreamDelay.MemoryUsage="მეხსიერების მიახლოებითი მოხმარება: %1 MB"
320
 Basic.Settings.Advanced.Network="ქსელი"
321
-Basic.Settings.Advanced.Network.BindToIP="დაკავშირება IP მისამართზე"
322
+Basic.Settings.Advanced.Network.BindToIP="დაკავშირება IP-მისამართზე"
323
 Basic.Settings.Advanced.Network.EnableNewSocketLoop="ქსელის ახალი კოდის ჩართვა"
324
 Basic.Settings.Advanced.Network.EnableLowLatencyMode="დაყოვნების შემცირება"
325
 Basic.Settings.Advanced.Hotkeys.DisableHotkeysInFocus="სწრაფი ღილაკების გათიშვა, მთავარ ფანჯარაზე გადასვლისას"
326
@@ -740,19 +755,19 @@
327
 
328
 Basic.AdvAudio="ხმის გაფართოებული პარამეტრები"
329
 Basic.AdvAudio.Name="სახელი"
330
-Basic.AdvAudio.Volume="ხმის სიმაღლე (%)"
331
+Basic.AdvAudio.Volume="ხმის დონე"
332
 Basic.AdvAudio.Mono="ერთ არხში გაერთიანება"
333
 Basic.AdvAudio.Balance="წონასწორობა"
334
 Basic.AdvAudio.SyncOffset="სინქრონიზაციის გასწორება (მწ)"
335
 Basic.AdvAudio.Monitoring="ხმის მოსმენა"
336
 Basic.AdvAudio.Monitoring.None="მოსმენის გარეშე"
337
-Basic.AdvAudio.Monitoring.MonitorOnly="მხოლოდ მოსმენა (უხმო გამომავალი სიგნალით)"
338
+Basic.AdvAudio.Monitoring.MonitorOnly="მხოლოდ მოსმენა (უხმო გამოტანა)"
339
 Basic.AdvAudio.Monitoring.Both="მოსმენა და გამოტანა"
340
 Basic.AdvAudio.AudioTracks="ბილიკები"
341
 
342
 Basic.Settings.Hotkeys="ღილაკები"
343
 Basic.Settings.Hotkeys.Pair="გადამრთველის სახით იმუშავებს ღილაკთან „%1“"
344
-Basic.Settings.Hotkeys.Filter="ფილტრი"
345
+Basic.Settings.Hotkeys.Filter="გამორჩევა"
346
 
347
 Basic.Hotkeys.SelectScene="სცენაზე გადასვლა"
348
 
349
@@ -808,7 +823,7 @@
350
 
351
 OutputWarnings.NoTracksSelected="უნდა მიუთითოთ ერთი ხმოვანი ბილიკი მაინც"
352
 OutputWarnings.MultiTrackRecording="გაფრთხილება: ცალკეული სახის ფაილებში (როგორიცაა FLV), არაა მხარდაჭერილი რამდენიმე ბილიკი, თითოეული ჩაწერისას"
353
-OutputWarnings.MP4Recording="გაფრთხილება: MP4/MOV სახით შენახული ჩანაწერები ვეღარ აღდგება, მუშაობის შეწყვეტის შემთხვევაში (მაგ. ლურჯი ეკრანის ამოგდებისას, ძაბვის ვარდნისას და ა.შ.). თუ გსურთ რამდენიმე ხმოვანი ფაილის ჩაწერა, სასურველია ამისთვის გამოიყენოთ MKV და დასრულების შემდეგ გადაფუთოთ MP4/MOV-ად. (ფაილი → ჩანაწერების გადაფუთვა)"
354
+OutputWarnings.MP4Recording="გაფრთხილება: MP4/MOV სახით შენახული ჩანაწერები ვეღარ აღდგება, მუშაობის შეწყვეტის შემთხვევაში (მაგ. ლურჯი ეკრანის ამოგდებისას, ძაბვის ვარდნისას და ა.შ.). თუ გსურთ რამდენიმე ხმოვანი ფაილის ჩაწერა, სასურველია ამისთვის გამოიყენოთ MKV და დასრულების შემდეგ გადაფუთოთ MP4/MOV-ფაილად. (ფაილი → ჩანაწერების გადაფუთვა)"
355
 
356
 FinalScene.Title="სცენის წაშლა"
357
 FinalScene.Text="აუცილებელია სულ მცირე ერთ სცენა."
358
@@ -816,6 +831,7 @@
359
 NoSources.Title="წყაროები არაა"
360
 NoSources.Text="როგორც ჩანს, თქვენ ჯერ არ დაგიმატებიათ ვიდეოს არცერთი წყარო, შედეგად მიიღებთ ცარიელ ეკრანს. ნამდვილად გსურთ, განაგრძოთ?"
361
 NoSources.Text.AddSource="წყაროს დამატება შეგიძლიათ ნებისმიერ დროს + ნიშანზე დაწკაპებით, მთავარი ფანჯრის წყაროების არეში."
362
+NoSources.Label="წყაროები არ მიგითითებიათ.\nდაწკაპეთ + ღილაკზე ქვემოთ\nან დაამატეთ მარჯვენა წკაპით."
363
 
364
 ChangeBG="ფერის დაყენება"
365
 CustomColor="ფერის მითითება"
366
@@ -830,7 +846,9 @@
367
 About.License="ლიცენზია"
368
 About.Contribute="მხარი დაუჭირეთ OBS-პროექტს"
369
 
370
-ResizeOutputSizeOfSource="გამომავალი ვიდეოს ზომების შეცვლა (წყაროს ზომები)"
371
-ResizeOutputSizeOfSource.Text="ეკრანის ძირითადი და გამომავალი ვიდეოს გაფართოება ჩანაცვლდება მიმდინარე წყაროს ზომებით."
372
+ResizeOutputSizeOfSource="გამოტანის ზომების შეცვლა (წყაროს ზომები)"
373
+ResizeOutputSizeOfSource.Text="ეკრანის ძირითადი და გამოტანილი ვიდეოს გაფართოება ჩანაცვლდება მიმდინარე წყაროს ზომებით."
374
 ResizeOutputSizeOfSource.Continue="გსურთ, განაგრძოთ?"
375
 
376
+PreviewTransition="გადასვლის შეთვალიერება"
377
+
378
obs-studio-23.1.0.tar.xz/UI/data/locale/ko-KR.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ko-KR.ini Changed
171
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="수직으로 배치"
3
 Group="하나로 묶기"
4
 DoNotShowAgain="다시 표시하지 않기"
5
+Default="(기본)"
6
+Calculating="계산 중.."
7
 
8
 AlreadyRunning.Title="OBS가 이미 실행 중입니다"
9
 AlreadyRunning.Text="OBS가 이미 실행 중입니다! 의도한 것이 아니라면 새로운 OBS를 실행하기 전에 이미 동작 중인 프로그램을 종료하십시오. OBS가 시스템 트레이에 최소화되어 있는지도 확인하십시오."
10
@@ -103,6 +105,8 @@
11
 Auth.StreamInfo="방송 정보"
12
 TwitchAuth.Stats="트위치 통계"
13
 TwitchAuth.Feed="트위치 활동 피드"
14
+TwitchAuth.TwoFactorFail.Title="스트림 키를 질의할 수 없었습니다"
15
+TwitchAuth.TwoFactorFail.Text="OBS가 사용자의 트위치 계정에 접속할 수 없었습니다. <a href='https://www.twitch.tv/settings/security'>트위치 보안 설정</a> 에서 이중 인증을 거쳐야 방송이 가능합니다."
16
 
17
 Copy.Filters="필터를 복사"
18
 Paste.Filters="필터를 붙여넣기"
19
@@ -185,6 +189,7 @@
20
 Basic.Stats.DroppedFrames="드롭된 프레임 (네트워크)"
21
 Basic.Stats.MegabytesSent="데이터 출력 합계"
22
 Basic.Stats.Bitrate="비트레이트"
23
+Basic.Stats.DiskFullIn="디스크가 꽉차기 전까지 (추정)"
24
 
25
 ResetUIWarning.Title="정말로 모든 UI를 초기화하겠습니까?"
26
 ResetUIWarning.Text="UI를 초기화하면 추가한 독이 안보일 것입니다. '보기' 메뉴에서 다시 나타나게 설정할 수 있습니다.\n\nUI를 초기화하겠습니까?"
27
@@ -200,7 +205,7 @@
28
 Updater.NoUpdatesAvailable.Text="현재 사용가능한 판올림이 없습니다"
29
 Updater.FailedToLaunch="판올림 도우미를 실행할 수 없습니다"
30
 Updater.GameCaptureActive.Title="게임 캡쳐 기능이 활성화 중"
31
-Updater.GameCaptureActive.Text="게임 캡쳐 기능을 현재 사용 중입니다. 캡쳐 중인 게임이나 프로그램을 종료(혹은 윈도우를 재시작) 한 다음 다시 시도하세요."
32
+Updater.GameCaptureActive.Text="게임 캡쳐 라이브러리가 현재 사용 중입니다. 캡쳐 중인 게임/프로그램 혹은 윈도우를 종료 후 다시 시작하세요."
33
 
34
 QuickTransitions.SwapScenes="전환 후 미리 보기/출력 장면을 교체"
35
 QuickTransitions.SwapScenesTT="(만약 출력 쪽 원본 장면이 있을 때) 전환 작업 이후 미리 보기와 출력 장면을 교체합니다. \n출력 쪽 원본 장면에서 변경한 내용은 사라지지 않습니다."
36
@@ -250,6 +255,7 @@
37
 Output.StartReplayFailed="리플레이 버퍼를 시작하지 못했습니다"
38
 Output.StartFailedGeneric="출력을 시작하지 못했습니다. 기록 파일을 확인하십시오.\n\n참고: NVENC 혹은 AMD 인코더를 사용하고 있다면 드라이버를 최신 버전으로 유지하십시오."
39
 
40
+
41
 Output.ConnectFail.Title="연결에 실패했음"
42
 Output.ConnectFail.BadPath="잘못된 경로 혹은 연결 주소입니다. 유효한 값인지 설정을 확인하시기 바랍니다. "
43
 Output.ConnectFail.ConnectFailed="서버에 연결하지 못했습니다"
44
@@ -257,12 +263,16 @@
45
 Output.ConnectFail.Error="예기치 않은 오류가 서버에 접속을 시도하는 과정에서 발생했습니다. 자세한 정보는 기록 파일을 조회하십시오. "
46
 Output.ConnectFail.Disconnected="서버로부터 접속이 끊겼습니다. "
47
 
48
+Output.StreamEncodeError.Title="인코딩 오류"
49
+Output.StreamEncodeError.Msg="방송 중 인코더 오류가 발생했습니다."
50
+
51
 Output.RecordFail.Title="녹화에 실패했습니다"
52
 Output.RecordFail.Unsupported="이 출력 형식은 지원하지 않거나 하나 이상의 오디오 트랙을 지원하지 않습니다. 설정을 확인하여 다시 시도하십시오."
53
 Output.RecordNoSpace.Title="디스크 공간 부족"
54
 Output.RecordNoSpace.Msg="녹화를 계속하기 위한 디스크 공간이 부족합니다."
55
 Output.RecordError.Title="녹화 오류"
56
 Output.RecordError.Msg="녹화 중 예기치 못한 오류가 발생했습니다."
57
+Output.RecordError.EncodeErrorMsg="녹화 중 인코더 오류가 발생했습니다."
58
 Output.ReplayBuffer.NoHotkey.Title="단축키가 없습니다!"
59
 Output.ReplayBuffer.NoHotkey.Msg="리플레이를 저장하는 단축키를 지정하지 않았습니다. 리플레이 녹화 기능을 사용하려면 \"저장\" 단축키를 지정하십시오."
60
 
61
@@ -306,6 +316,8 @@
62
 
63
 Basic.Main.PreviewConextMenu.Enable="미리보기 활성화"
64
 
65
+Basic.Main.Preview.Disable="미리보기 끄기"
66
+
67
 ScaleFiltering="비율 필터링"
68
 ScaleFiltering.Point="점"
69
 ScaleFiltering.Bilinear="이중선형"
70
@@ -476,6 +488,8 @@
71
 Basic.MainMenu.Edit.Transform.FitToScreen="채우기(&F)"
72
 Basic.MainMenu.Edit.Transform.StretchToScreen="늘리기(&S)"
73
 Basic.MainMenu.Edit.Transform.CenterToScreen="가운데(&C)"
74
+Basic.MainMenu.Edit.Transform.VerticalCenter="수직으로 정렬"
75
+Basic.MainMenu.Edit.Transform.HorizontalCenter="수평으로 정렬"
76
 Basic.MainMenu.Edit.Order="순서(&O)"
77
 Basic.MainMenu.Edit.Order.MoveUp="위로 올리기(&U)"
78
 Basic.MainMenu.Edit.Order.MoveDown="아래로 내리기(&D)"
79
@@ -617,7 +631,7 @@
80
 Basic.Settings.Output.CustomMuxerSettings="사용자 임의 다중화 설정"
81
 Basic.Settings.Output.NoSpaceFileName="여백없이 파일 이름 짓기"
82
 
83
-Basic.Settings.Output.Adv.Rescale="출력  배율 재조정"
84
+Basic.Settings.Output.Adv.Rescale="출력 배율 재조정"
85
 Basic.Settings.Output.Adv.AudioTrack="오디오 트랙"
86
 Basic.Settings.Output.Adv.Streaming="방송"
87
 Basic.Settings.Output.Adv.ApplyServiceSettings="방송 서비스 인코더 설정 강제 적용"
88
@@ -685,7 +699,8 @@
89
 Basic.Settings.Audio="오디오"
90
 Basic.Settings.Audio.SampleRate="샘플 레이트"
91
 Basic.Settings.Audio.Channels="채널"
92
-Basic.Settings.Audio.MeterDecayRate="오디오 측정기 감퇴 속도"
93
+Basic.Settings.Audio.Meters="측정기"
94
+Basic.Settings.Audio.MeterDecayRate="감쇄 속도"
95
 Basic.Settings.Audio.MeterDecayRate.Fast="빠름"
96
 Basic.Settings.Audio.MeterDecayRate.Medium="중간 (Type I PPM)"
97
 Basic.Settings.Audio.MeterDecayRate.Slow="느림 (Type II PPM)"
98
@@ -696,12 +711,13 @@
99
 Basic.Settings.Audio.MultichannelWarning="방송 중이라면 서비스에서 서라운드 음향에 대한 입력 및 재생을 지원하는지 확인하세요. 트위치, 페이스북 360 라이브, Mixer RTMP, Smashcast 는 해당 기능을 사용할 수 있습니다. 페이스북 Live와 유튜브 Live 서비스는 입력은 할 수 있지만 스테레오로 전환하며 유튜브 Live는 오로지 2채널로만 재생합니다.\n\nOBS 오디오 필터는 서라운드 음향을 지원하지만 VST 플러그인 지원은 보장하지 않습니다."
100
 Basic.Settings.Audio.MultichannelWarning.Title="서라운드 음향을 활성화할까요?"
101
 Basic.Settings.Audio.MultichannelWarning.Confirm="정말로 서라운드 음향을 사용하겠습니까?"
102
-Basic.Settings.Audio.DesktopDevice="데스크탑 오디오 장치"
103
-Basic.Settings.Audio.DesktopDevice2="데스크탑 오디오 장치 2"
104
-Basic.Settings.Audio.AuxDevice="마이크/보조 오디오 장치"
105
-Basic.Settings.Audio.AuxDevice2="마이크/보조 오디오 장치 2"
106
-Basic.Settings.Audio.AuxDevice3="마이크/보조 오디오 장치 3"
107
-Basic.Settings.Audio.AuxDevice4="마이크/보조 오디오 장치 4"
108
+Basic.Settings.Audio.Devices="장치"
109
+Basic.Settings.Audio.DesktopDevice="데스크탑 오디오"
110
+Basic.Settings.Audio.DesktopDevice2="데스크탑 오디오 2"
111
+Basic.Settings.Audio.AuxDevice="마이크/보조 오디오"
112
+Basic.Settings.Audio.AuxDevice2="마이크/보조 오디오 2"
113
+Basic.Settings.Audio.AuxDevice3="마이크/보조 오디오 3"
114
+Basic.Settings.Audio.AuxDevice4="마이크/보조 오디오 4"
115
 Basic.Settings.Audio.EnablePushToMute="누르면 음소거 활성화"
116
 Basic.Settings.Audio.PushToMuteDelay="누르면 음소거 지연"
117
 Basic.Settings.Audio.EnablePushToTalk="누르며 말하기 활성화"
118
@@ -719,11 +735,11 @@
119
 Basic.Settings.Advanced.FormatWarning="경고: NV12 이외의 색상 형식은 주로 녹화를 위한 것이며, 방송에 적합하지 않습니다. 이대로 방송을 하게 되면 형식 전환을 위해 CPU 사용량이 증가할 수 있습니다."
120
 Basic.Settings.Advanced.Audio.BufferingTime="오디오 버퍼링 시간"
121
 Basic.Settings.Advanced.Video.ColorFormat="색상 형식"
122
-Basic.Settings.Advanced.Video.ColorSpace="YUV 색 공간"
123
-Basic.Settings.Advanced.Video.ColorRange="YUV 색상 범위"
124
+Basic.Settings.Advanced.Video.ColorSpace="색 공간"
125
+Basic.Settings.Advanced.Video.ColorRange="색상 범위"
126
 Basic.Settings.Advanced.Video.ColorRange.Partial="부분"
127
 Basic.Settings.Advanced.Video.ColorRange.Full="전체"
128
-Basic.Settings.Advanced.Audio.MonitoringDevice="오디오 모니터링 장치"
129
+Basic.Settings.Advanced.Audio.MonitoringDevice="감시 장치"
130
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="기본값"
131
 Basic.Settings.Advanced.Audio.DisableAudioDucking="윈도우 오디오 더킹 비활성화"
132
 Basic.Settings.Advanced.StreamDelay="방송 지연"
133
@@ -740,7 +756,7 @@
134
 
135
 Basic.AdvAudio="오디오 고급 설정"
136
 Basic.AdvAudio.Name="이름"
137
-Basic.AdvAudio.Volume="볼륨 (%)"
138
+Basic.AdvAudio.Volume="음량"
139
 Basic.AdvAudio.Mono="모노로 강제 송출"
140
 Basic.AdvAudio.Balance="균형"
141
 Basic.AdvAudio.SyncOffset="싱크 오프셋 (ms)"
142
@@ -784,10 +800,10 @@
143
 Hotkeys.Space="스페이스"
144
 Hotkeys.NumpadNum="숫자키 패드 %1"
145
 Hotkeys.NumpadMultiply="* (숫자키 패드)"
146
-Hotkeys.NumpadDivide="/  (숫자키 패드)"
147
-Hotkeys.NumpadAdd="+  (숫자키 패드)"
148
-Hotkeys.NumpadSubtract="-  (숫자키 패드)"
149
-Hotkeys.NumpadDecimal=".  (숫자키 패드)"
150
+Hotkeys.NumpadDivide="/ (숫자키 패드)"
151
+Hotkeys.NumpadAdd="+ (숫자키 패드)"
152
+Hotkeys.NumpadSubtract="- (숫자키 패드)"
153
+Hotkeys.NumpadDecimal=". (숫자키 패드)"
154
 Hotkeys.AppleKeypadNum="%1 (문자판)"
155
 Hotkeys.AppleKeypadMultiply="* (문자판)"
156
 Hotkeys.AppleKeypadDivide="/ (문자판)"
157
@@ -816,6 +832,7 @@
158
 NoSources.Title="소스 없음"
159
 NoSources.Text="어떠한 영상 소스도 추가하지 않아서 빈 화면만 송출할 것입니다. 그래도 계속하시겠습니까?"
160
 NoSources.Text.AddSource="주 화면 소스 목록에 있는 + 아이콘을 누르면 소스를 추가할 수 있습니다."
161
+NoSources.Label="방송이나 녹화에 송출할 소스가 지정되어 있지 않습니다.\n아래 + 버튼을 누르거나\n여기를 우클릭하여 소스를 추가하십시오."
162
 
163
 ChangeBG="색상 지정"
164
 CustomColor="사용자 색상"
165
@@ -834,3 +851,5 @@
166
 ResizeOutputSizeOfSource.Text="기본 및 출력 해상도가 현재 소스 크기로 조정됩니다."
167
 ResizeOutputSizeOfSource.Continue="계속하시겠습니까?"
168
 
169
+PreviewTransition="미리보기 변환"
170
+
171
obs-studio-23.1.0.tar.xz/UI/data/locale/ku-TR.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ku-TR.ini Changed
118
 
1
@@ -7,17 +7,23 @@
2
 Cancel="پاشگەزبونەوە"
3
 Close="داخستن"
4
 Save="پاراستن"
5
+Discard="ڕەتکردنەوە"
6
 Disable="ناچالاککردن"
7
 Yes="بەڵێ"
8
 No="نەخێر"
9
 Add="زیادکردن"
10
 Remove="سڕینەوە"
11
 Rename="ناونانەوە"
12
+Interact="کارلێکردن"
13
+Filters="فلتەرەکان"
14
+Properties="خاسیەتەکان"
15
 MoveUp="بۆ سەرەوە بجوڵێ"
16
 MoveDown="بۆ خوارەوە بجوڵێ"
17
 Settings="ڕێکخستنەکان"
18
+Display="پیشاندراو"
19
 Name="ناو"
20
 Exit="دهرچوون"
21
+Mixer="میکسەر"
22
 Browse="هێنان"
23
 Mono="یەک بڵندگۆ"
24
 Stereo="دوو بڵندگۆ"
25
@@ -33,6 +39,7 @@
26
 Right="ڕاست"
27
 Top="سەرەوە"
28
 Bottom="خوارەوە"
29
+Reset="ڕێکخستنەوه"
30
 Hours="کاژێرهکان"
31
 Minutes="خولەکەکان"
32
 Seconds="چرکەکان"
33
@@ -43,17 +50,33 @@
34
 Next="دواتر"
35
 Back="پێشتر"
36
 Defaults="بنهڕهتی"
37
+None="هیچ"
38
+StudioMode.Preview="پێشبینین"
39
 
40
 
41
 
42
+Auth.Chat="گفتوگۆکردن"
43
 
44
+Copy.Filters="لەبەرگرتنەوەی فلتەرەکان"
45
+Paste.Filters="دانانی فلتەرەکان"
46
 
47
 
48
+BandwidthTest.Region="ناوچه"
49
+BandwidthTest.Region.US="ویلایەتە یەکگرتوەکانی ئەمریکا"
50
+BandwidthTest.Region.EU="ئەوروپا"
51
+BandwidthTest.Region.Asia="ئاسیا"
52
+BandwidthTest.Region.Other="ئهوانی تر"
53
 
54
 
55
+Basic.AutoConfig.StreamPage.StreamKey.LinkToSite="(بەستەرە)"
56
 
57
+Basic.Stats="ئامار"
58
+Basic.Stats.Output.Recording="تۆماردەکرێت"
59
+Basic.Stats.Status.Recording="تۆماردەکرێت"
60
+Basic.Stats.Status.Live="ڕاستەوخۆ"
61
 
62
 
63
+Updater.UpdateNow="نوێکردنەوە ئێستا"
64
 
65
 
66
 Basic.TransitionDuration="ماوه"
67
@@ -66,6 +89,7 @@
68
 
69
 
70
 
71
+ConfirmExit.Title="دهرچوون لە OBS"
72
 
73
 
74
 
75
@@ -99,12 +123,42 @@
76
 
77
 
78
 
79
+Basic.TransformWindow.Position="شوێن"
80
+Basic.TransformWindow.Rotation="سوڕانهوه"
81
+Basic.TransformWindow.Size="قەبارە"
82
+Basic.TransformWindow.Crop="قرتاندن"
83
 
84
+Basic.TransformWindow.Alignment.TopLeft="لای چەپی سەرەوە"
85
+Basic.TransformWindow.Alignment.TopCenter="ناوەڕاستی سەرەوە"
86
+Basic.TransformWindow.Alignment.TopRight="لای ڕاستی سەرەوە"
87
+Basic.TransformWindow.Alignment.CenterLeft="ناوەڕاستی چەپ"
88
+Basic.TransformWindow.Alignment.Center="ناوەڕاست"
89
+Basic.TransformWindow.Alignment.CenterRight="نێوەندی ڕاست"
90
+Basic.TransformWindow.Alignment.BottomLeft="لای چەپی خوارەوە"
91
+Basic.TransformWindow.Alignment.BottomCenter="ناوەڕاستی خوارەوە"
92
+Basic.TransformWindow.Alignment.BottomRight="لای ڕاستی خوارەوە"
93
 
94
 
95
 
96
+Basic.Main.StopRecording="تۆمارکردن بوەستێنە"
97
+Basic.Main.StoppingRecording="چاوەروانبە بۆ وەستاندنی تۆمارکردن"
98
 
99
+Basic.MainMenu.File="پەرگە"
100
+Basic.MainMenu.File.Exit="دهرچوون"
101
 
102
+Basic.MainMenu.Edit="دەستکاریکردن"
103
+Basic.MainMenu.Edit.Undo="پاشگەزبوونەوە"
104
+Basic.MainMenu.Edit.Redo="گهڕانهوه بۆ ههنگاوی داهاتوو"
105
+
106
+Basic.MainMenu.View="نیشاندان"
107
+Basic.MainMenu.View.Toolbars="شریتی ئامرازەکان"
108
+
109
+Basic.MainMenu.SceneCollection="کۆکراوەی دیمەنەکان"
110
+Basic.MainMenu.Profile="پرۆفایل"
111
+
112
+Basic.MainMenu.Tools="ئامرازەکان"
113
+
114
+Basic.MainMenu.Help="یارمەتی"
115
 
116
 
117
 
118
obs-studio-23.1.0.tar.xz/UI/data/locale/lt-LT.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/lt-LT.ini Changed
58
 
1
@@ -42,7 +42,7 @@
2
 Enable="Įjungti"
3
 DisableOSXVSync="Išjungti OSX V-Sync"
4
 ResetOSXVSyncOnExit="Iš naujo nustatyti OSX V-Sync išeinant"
5
-HighResourceUsage="Kodavimas perkrautas!  Mažinkite vaizdo parametrus arba naudokite greitesnę kodavimo parengtį."
6
+HighResourceUsage="Kodavimas perkrautas! Mažinkite vaizdo parametrus arba naudokite greitesnę kodavimo parengtį."
7
 Transition="Perėjimas"
8
 QuickTransitions="Greitieji perėjimai"
9
 Left="Iš kairės"
10
@@ -105,12 +105,14 @@
11
 ConfirmRemove.Text="Ar tikrai norite pašalinti '$1'?"
12
 
13
 
14
+
15
 Output.ConnectFail.Title="Nepavyko prisijungti"
16
 Output.ConnectFail.BadPath="Neteisingas kelias arba jungimosi URL. Prašome patikrinti nustatymus ir įsitikinti, kad jie teisingi."
17
 Output.ConnectFail.ConnectFailed="Nepavyko prisijungti prie serverio"
18
 Output.ConnectFail.Error="Netikėta klaida bandant jungtis į serverį. Daugiau informacijos žurnalo faile."
19
 Output.ConnectFail.Disconnected="Atjungtas nuo serverio."
20
 
21
+
22
 Output.RecordFail.Title="Nepavyko pradėti įrašo"
23
 Output.RecordFail.Unsupported="Išvesties formatas nepalaikomas arba nepalaiko daugiau vieno garso takelio. Prašome patikrinti nustatymus ir bandyti vėl."
24
 Output.RecordNoSpace.Title="Nepakanka vietos diske"
25
@@ -150,6 +152,7 @@
26
 
27
 Basic.Main.PreviewConextMenu.Enable="Įjungti peržiūrą"
28
 
29
+
30
 ScaleFiltering="Mastelio filtras"
31
 ScaleFiltering.Point="Taškas"
32
 ScaleFiltering.Bilinear="Dvilinijinis"
33
@@ -287,11 +290,8 @@
34
 Basic.Settings.Advanced.General.ProcessPriority.Idle="Tolygus"
35
 Basic.Settings.Advanced.Audio.BufferingTime="Garso Sušvelninimo Laikas"
36
 Basic.Settings.Advanced.Video.ColorFormat="Spalvos formatas"
37
-Basic.Settings.Advanced.Video.ColorSpace="YUV Spalvų Erdvė"
38
-Basic.Settings.Advanced.Video.ColorRange="YUV Spalvų Diapazonas"
39
 Basic.Settings.Advanced.Video.ColorRange.Partial="Dalinis"
40
 Basic.Settings.Advanced.Video.ColorRange.Full="Pilnas"
41
-Basic.Settings.Advanced.Audio.MonitoringDevice="Garso prietaisas"
42
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Numatytas"
43
 Basic.Settings.Advanced.StreamDelay="Srauto Vėlavimas"
44
 Basic.Settings.Advanced.StreamDelay.Duration="Trukmė (sekundėmis)"
45
@@ -301,7 +301,6 @@
46
 Basic.Settings.Advanced.Network.BindToIP="Priskirti prie IP"
47
 
48
 Basic.AdvAudio.Name="Prietaisas"
49
-Basic.AdvAudio.Volume="Garsumas (%)"
50
 
51
 
52
 
53
@@ -326,3 +325,4 @@
54
 
55
 
56
 
57
+
58
obs-studio-23.1.0.tar.xz/UI/data/locale/mn-MN.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/mn-MN.ini Changed
33
 
1
@@ -126,8 +126,10 @@
2
 
3
 Output.StartStreamFailed="Цацалт хийж эхлэхгээд амжилтгүй болсон"
4
 
5
+
6
 Output.ConnectFail.Disconnected="Серверээс салгагдсан байна."
7
 
8
+
9
 Output.RecordFail.Title="Бичлэг хийх эхлэхгээд амжилтгүй болсон"
10
 Output.RecordError.Title="Бичлэгийн алдаа"
11
 Output.RecordError.Msg="Бичлэг хийж байх үед тодорхойгүй алдаа гарлаа."
12
@@ -145,6 +147,7 @@
13
 
14
 
15
 
16
+
17
 Basic.Main.AddSceneDlg.Title="Хөшиг нэмэх"
18
 Basic.Main.AddSceneDlg.Text="Хөшигний нэрийг оруулна уу"
19
 
20
@@ -281,7 +284,6 @@
21
 Basic.Settings.Advanced.Network.EnableLowLatencyMode="Бага зэрэгийн хоцрогдолтой горим"
22
 
23
 Basic.AdvAudio.Name="Нэр"
24
-Basic.AdvAudio.Volume="Дууны Хэмжээ (%)"
25
 Basic.AdvAudio.Balance="Тэнцвэржүүлэх"
26
 
27
 Basic.Settings.Hotkeys="Богино холбооc"
28
@@ -330,3 +332,4 @@
29
 About.License="Лиценз"
30
 
31
 
32
+
33
obs-studio-23.1.0.tar.xz/UI/data/locale/ms-MY.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ms-MY.ini Changed
30
 
1
@@ -129,6 +129,7 @@
2
 ConfirmRemove.TextMultiple="Adakah anda yakin untuk buang %1 barang?"
3
 
4
 
5
+
6
 Output.ConnectFail.Title="Penyambungan gagal"
7
 Output.ConnectFail.BadPath="Sambungan URL atau Laluan yang tidak sah. Sila semak semula tetapan anda to mengesahkan bahawa semuanya sah."
8
 Output.ConnectFail.ConnectFailed="Penyambungan ke pelayan gagal"
9
@@ -136,6 +137,7 @@
10
 Output.ConnectFail.Error="Ralat tidak dijangka berlaku sewaktu percubaan menyambung ke pelayan. Maklumat lanjut di dalam fail log."
11
 Output.ConnectFail.Disconnected="Terputus daripada pelayan."
12
 
13
+
14
 Output.RecordFail.Title="Gagal memulakan rakaman"
15
 Output.RecordFail.Unsupported="Format pengeluaran tidak disokong atau tidak membenarkan lebih daripada satu trek audio. Sila semak tetapan anda dan cuba lagi."
16
 Output.RecordNoSpace.Title="Ruang simpanan tidak cukup"
17
@@ -175,6 +177,7 @@
18
 
19
 Basic.Main.PreviewConextMenu.Enable="Benarkan Pratonton"
20
 
21
+
22
 ScaleFiltering="Skala Tapisan"
23
 ScaleFiltering.Point="Point"
24
 ScaleFiltering.Bilinear="Bilinear"
25
@@ -451,3 +454,4 @@
26
 
27
 
28
 
29
+
30
obs-studio-23.1.0.tar.xz/UI/data/locale/nb-NO.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/nb-NO.ini Changed
242
 
1
@@ -81,23 +81,32 @@
2
 VerticalLayout="Loddrett oppsett"
3
 Group="Gruppe"
4
 DoNotShowAgain="Ikke vis denne igjen"
5
+Default="(Standard)"
6
+Calculating="Kalkulerer..."
7
 
8
 AlreadyRunning.Title="OBS kjører allerede"
9
 AlreadyRunning.Text="OBS kjører allerede! Med mindre du ikke mente dette, vennligst lukk alle eksisterende kjørende tilfeller av OBS før du kjører noen nye. Hvis du har satt OBS til å minimere til systemkurven, vennligst sjekk om den fortsatt kjører der."
10
 AlreadyRunning.LaunchAnyway="Start uansett"
11
 
12
+DockCloseWarning.Title="Lukker festbart vindu"
13
+DockCloseWarning.Text="Du stengte nettopp et festbart vindu. Hvis du vil vise det igjen, kan du gå til Vis → Festede elementer i menylinjen."
14
 
15
 Auth.Authing.Title="Autentiserer..."
16
+Auth.Authing.Text="Autentiserer med %1, vennligst vent..."
17
 Auth.AuthFailure.Title="Autentiseringsfeil"
18
 Auth.AuthFailure.Text="Mislyktes i å autentiseres opp mot %1:\n\n%2: %3"
19
 Auth.InvalidScope.Title="Autentisering er påkrevd"
20
 Auth.InvalidScope.Text="Autentiseringskravene til %1 har blitt forandret. Noen egenskaper vil kanskje ikke være tilgjengelige."
21
 Auth.LoadingChannel.Title="Laster informasjon om kanalen..."
22
+Auth.LoadingChannel.Text="Laster kanalinformasjon for %1, vennligst vent..."
23
 Auth.ChannelFailure.Title="Mislyktes i å laste inn kanalen"
24
 Auth.ChannelFailure.Text="Mislyktes i å laste ned kanalinformasjon om %1\n\n%2: %3"
25
 Auth.Chat="Nettprat"
26
 Auth.StreamInfo="Informasjon om sendingen"
27
 TwitchAuth.Stats="Twitch-statistikker"
28
+TwitchAuth.Feed="Twitch-aktivitetsfeed"
29
+TwitchAuth.TwoFactorFail.Title="Kunne ikke etterspørre strømme-nøkkel"
30
+TwitchAuth.TwoFactorFail.Text="OBS kunne ikke koble til din Twitch-konto. Vennligst forsikre at to-faktorautentisering er satt opp i dine <a href='https://www.twitch.tv/settings/security'>Twitch sikkerhetsinstillinger</a>, siden dette er nødvendig for å strømme."
31
 
32
 Copy.Filters="Kopier filtre"
33
 Paste.Filters="Lim inn filtre"
34
@@ -161,7 +170,7 @@
35
 Basic.AutoConfig.TestPage.Result.StreamingEncoder="Kringkastingsenkoder"
36
 Basic.AutoConfig.TestPage.Result.RecordingEncoder="Opptakskoder"
37
 Basic.AutoConfig.TestPage.Result.Header="Programmet har estimert at disse innstillingene er den mest ideelle for deg:"
38
-Basic.AutoConfig.TestPage.Result.Footer="For å bruke disse innstillingene, klikker du Bruk innstillinger.  Å konfigurere veiviseren og prøv på nytt, klikker du tilbake.  For å konfigurer innstillinger manuelt selv, klikk Avbryt og åpne innstillinger."
39
+Basic.AutoConfig.TestPage.Result.Footer="For å bruke disse innstillingene, klikker du Bruk innstillinger. Å konfigurere veiviseren og prøv på nytt, klikker du tilbake. For å konfigurer innstillinger manuelt selv, klikk Avbryt og åpne innstillinger."
40
 
41
 Basic.Stats="Statistikk"
42
 Basic.Stats.CPUUsage="CPU-bruk"
43
@@ -180,6 +189,7 @@
44
 Basic.Stats.DroppedFrames="Tapte bilder (nettverk)"
45
 Basic.Stats.MegabytesSent="Total datamengde ut"
46
 Basic.Stats.Bitrate="Bitfrekvens"
47
+Basic.Stats.DiskFullIn="Lagringsplass fullt om (ca.)"
48
 
49
 ResetUIWarning.Title="Er du sikker på at du vil tilbakestille grensesnittet?"
50
 ResetUIWarning.Text="Å tilbakestille grensesnittet, vil skjule andre kildevisninger. Du vil måtte uskjule disse visningene fra visningsmenyen hvis du vil at de skal være synlige?\n\nEr du sikker på at du vil tilbakestille grensesnittet?"
51
@@ -230,6 +240,8 @@
52
 ConfirmStop.Title="Vil du avslutte sendingen?"
53
 ConfirmStop.Text="Er du sikker på at du vil avslutte sendingen?"
54
 
55
+ConfirmBWTest.Title="Start bredbåndstest?"
56
+ConfirmBWTest.Text="Du har konfigurert OBS i bredbåndstest-modus. Denne modusen tillater nettverkstesting uten at din kanal går live. Du må deaktivere modusen når du er ferdig å teste for at seere vil kunne se din strøm. \n\nVil du fortsette?"
57
 
58
 ConfirmExit.Title="Avslutt OBS?"
59
 ConfirmExit.Text="OBS-aktiviteter pågår akkurat nå. Alle sendinger og opptak vil bli stoppet. Er du sikker på at du vil avslutte?"
60
@@ -243,6 +255,7 @@
61
 Output.StartReplayFailed="Kunne ikke å starte opp omspillingsbufferen"
62
 Output.StartFailedGeneric="Oppstart av utdata har mislyktes. Vennligst se loggen for detaljer.\n\nBemerk at dersom du bruker NVENC- eller AMD-enkodere, pass på at skjermdriverne er oppdatert."
63
 
64
+
65
 Output.ConnectFail.Title="Tilkobling mislyktes"
66
 Output.ConnectFail.BadPath="Ugyldig filbane eller tilkoblings-URL. Vennligst sjekk at innstillingene dine er riktige."
67
 Output.ConnectFail.ConnectFailed="Klarte ikke å koble til tjeneren"
68
@@ -250,12 +263,16 @@
69
 Output.ConnectFail.Error="En uventet feil oppstod ved tilkobling til serveren. Detaljert informasjon kan du finne i loggfila."
70
 Output.ConnectFail.Disconnected="Koblet fra tjeneren."
71
 
72
+Output.StreamEncodeError.Title="Kodingsfeil"
73
+Output.StreamEncodeError.Msg="En kodingsfeil skjedde under strømmingen."
74
+
75
 Output.RecordFail.Title="Kunne ikke starte opptak"
76
 Output.RecordFail.Unsupported="Utgangsformatet støttes enten ikke eller støtter ikke mer enn ett lydspor. Kontroller innstillingene og prøv igjen."
77
 Output.RecordNoSpace.Title="Ikke nok diskplass"
78
 Output.RecordNoSpace.Msg="Det er ikke nok diskplass til å fortsette opptaket."
79
 Output.RecordError.Title="Innspillingsfeil"
80
 Output.RecordError.Msg="Det oppstod en uspesifisert feil under opptaket."
81
+Output.RecordError.EncodeErrorMsg="En kodingsfeil skjedde under opptaket."
82
 Output.ReplayBuffer.NoHotkey.Title="Ingen hurtigtast satt!"
83
 Output.ReplayBuffer.NoHotkey.Msg="Ingen lagringshurtigtast er valgt for omspillingsbufferen. Vennligst velg en \"Lagre\"-hurtigknapp, sånn at den kan brukes til å lagre opptak."
84
 
85
@@ -269,12 +286,14 @@
86
 Remux.SourceFile="OBS-opptak"
87
 Remux.TargetFile="Målfil"
88
 Remux.Remux="Remuks"
89
+Remux.Stop="Stopp remuxing"
90
 Remux.ClearFinished="Tøm fullførte elementer"
91
 Remux.ClearAll="Tøm alle elementer"
92
 Remux.OBSRecording="OBS-opptak"
93
 Remux.FinishedTitle="Remuksing ferdig"
94
 Remux.Finished="Opptak remukset"
95
 Remux.FinishedError="Opptak remukset, men filen kan være ufullstendig."
96
+Remux.SelectRecording="Velg OBS-opptak..."
97
 Remux.SelectTarget="Velg målfil..."
98
 Remux.FileExistsTitle="Målfiler finnes allerede"
99
 Remux.FileExists="De følgende målfilene finnes allerede. Vil du erstatte dem?"
100
@@ -297,11 +316,14 @@
101
 
102
 Basic.Main.PreviewConextMenu.Enable="Aktiver forhåndsvisning"
103
 
104
+Basic.Main.Preview.Disable="Deaktiver forhåndsvisning"
105
+
106
 ScaleFiltering="Skaleringsfiltrering"
107
 ScaleFiltering.Point="Punkt"
108
 ScaleFiltering.Bilinear="Bilineær"
109
 ScaleFiltering.Bicubic="Bikubisk"
110
 ScaleFiltering.Lanczos="Lanczos"
111
+ScaleFiltering.Area="Område"
112
 
113
 Deinterlacing="Avsammenfletting"
114
 Deinterlacing.Discard="Forkast"
115
@@ -466,6 +488,8 @@
116
 Basic.MainMenu.Edit.Transform.FitToScreen="Tilpass skjerm (&F)"
117
 Basic.MainMenu.Edit.Transform.StretchToScreen="&Strekk til skjerm"
118
 Basic.MainMenu.Edit.Transform.CenterToScreen="Midstill på skjermen (&C)"
119
+Basic.MainMenu.Edit.Transform.VerticalCenter="Sentrer vertikalt"
120
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Sentrer horisontalt"
121
 Basic.MainMenu.Edit.Order="Arrangér (&O)"
122
 Basic.MainMenu.Edit.Order.MoveUp="Flytt opp (&U)"
123
 Basic.MainMenu.Edit.Order.MoveDown="Flytt ne&d"
124
@@ -542,6 +566,7 @@
125
 Basic.Settings.General.OverflowSelectionHidden="Vis overflyt selv når kilden er usynlig"
126
 Basic.Settings.General.SwitchOnDoubleClick="Dobbeltklikking vil gå til scenen"
127
 Basic.Settings.General.StudioPortraitLayout="Aktiver portrett/loddrett vindu"
128
+Basic.Settings.General.TogglePreviewProgramLabels="Vis etikett for forhåndsvisning/program"
129
 Basic.Settings.General.Multiview="Flervisning"
130
 Basic.Settings.General.Multiview.MouseSwitch="Klikk for å bytte mellom scener"
131
 Basic.Settings.General.Multiview.DrawSourceNames="Vis scenenes navn"
132
@@ -555,8 +580,10 @@
133
 
134
 Basic.Settings.Stream="Strøm"
135
 Basic.Settings.Stream.StreamType="Strømmetype"
136
+Basic.Settings.Stream.Custom.UseAuthentication="Bruk autentisering"
137
 Basic.Settings.Stream.Custom.Username="Brukernavn"
138
 Basic.Settings.Stream.Custom.Password="Passord"
139
+Basic.Settings.Stream.BandwidthTestMode="Aktiver båndbreddetest-modus"
140
 
141
 Basic.Settings.Output="Utgang"
142
 Basic.Settings.Output.Format="Opptaksformat"
143
@@ -599,6 +626,7 @@
144
 Basic.Settings.Output.RetryDelay="Opphold mellom tilkoblingsforsøk (sekunder)"
145
 Basic.Settings.Output.MaxRetries="Høyst antall tilkoblingsforsøk"
146
 Basic.Settings.Output.Advanced="Aktiver avanserte koderinnstillinger"
147
+Basic.Settings.Output.EncoderPreset="Kodingsinstillinger"
148
 Basic.Settings.Output.CustomEncoderSettings="Egendefinerte koderinnstillinger"
149
 Basic.Settings.Output.CustomMuxerSettings="Egendefinerte mukserinnstillinger"
150
 Basic.Settings.Output.NoSpaceFileName="Lag filnavn uten mellomrom"
151
@@ -671,7 +699,8 @@
152
 Basic.Settings.Audio="Lyd"
153
 Basic.Settings.Audio.SampleRate="Samplingsfrekvens"
154
 Basic.Settings.Audio.Channels="Kanaler"
155
-Basic.Settings.Audio.MeterDecayRate="Audiometerets forfallsfrekvens"
156
+Basic.Settings.Audio.Meters="Metre"
157
+Basic.Settings.Audio.MeterDecayRate="Avfallshastighet"
158
 Basic.Settings.Audio.MeterDecayRate.Fast="Raskt"
159
 Basic.Settings.Audio.MeterDecayRate.Medium="Middels (Type I PPM)"
160
 Basic.Settings.Audio.MeterDecayRate.Slow="Tregt (Type II PPM)"
161
@@ -682,17 +711,19 @@
162
 Basic.Settings.Audio.MultichannelWarning="Hvis du strømmer, sjekk om strømmetjenesten din støtter både surround-lydinnføring og surround-lydavspilling. Twitch, Facebook 360 Live, Mixer RTMP, og Smashcast er eksempler hvor surroundlyd er full støttet. Selv om Facebook Live og YouTube Live begge støtter surround-innføring, nedmikser Facebook Live det ned til Stereo, og YouTube Live spiller bare av to kanaler.\n\nOBS-lydfiltre er kompatible med surroundlyd, selv om VST-tilleggsstøtte ikke er garantert."
163
 Basic.Settings.Audio.MultichannelWarning.Title="Vil du aktivere surround-lyd?"
164
 Basic.Settings.Audio.MultichannelWarning.Confirm="Er du sikker på at du vil aktivere surround-lyd?"
165
+Basic.Settings.Audio.Devices="Enheter"
166
 Basic.Settings.Audio.DesktopDevice="Skrivebordslyd"
167
 Basic.Settings.Audio.DesktopDevice2="Skrivebordslyd 2"
168
 Basic.Settings.Audio.AuxDevice="Mikrofon/Aux"
169
-Basic.Settings.Audio.AuxDevice2="Mikrofon/Aux 2"
170
-Basic.Settings.Audio.AuxDevice3="Mikrofon/Aux 3"
171
-Basic.Settings.Audio.AuxDevice4="Mikrofon/Aux 4"
172
+Basic.Settings.Audio.AuxDevice2="Mikrofon/Aux"
173
+Basic.Settings.Audio.AuxDevice3="Mikrofon/Aux"
174
+Basic.Settings.Audio.AuxDevice4="Mikrofon/Aux"
175
 Basic.Settings.Audio.EnablePushToMute="Aktiver demp-ved-trykk"
176
 Basic.Settings.Audio.PushToMuteDelay="Demp-ved-trykk forsinkelse"
177
 Basic.Settings.Audio.EnablePushToTalk="Aktiver snakk-ved-trykk"
178
 Basic.Settings.Audio.PushToTalkDelay="Snakk-ved-trykk forsinkelse"
179
 Basic.Settings.Audio.UnknownAudioDevice="[Enhet ikke tilkoblet eller ikke tilgjengelig]"
180
+Basic.Settings.Audio.Disabled="Deaktivert"
181
 
182
 Basic.Settings.Advanced="Avansert"
183
 Basic.Settings.Advanced.General.ProcessPriority="Prosessprioritet"
184
@@ -704,8 +735,8 @@
185
 Basic.Settings.Advanced.FormatWarning="Advarsel: Fargeformater andre enn NV12 er ment for opptak. Disse formatene anbefales ikke ved strømming, da det fører til økt prosessorbruk som følge av fargeformatkonvertering."
186
 Basic.Settings.Advanced.Audio.BufferingTime="Lydbuffertid"
187
 Basic.Settings.Advanced.Video.ColorFormat="Fargeformat"
188
-Basic.Settings.Advanced.Video.ColorSpace="YUV fargerom"
189
-Basic.Settings.Advanced.Video.ColorRange="YUV fargespekter"
190
+Basic.Settings.Advanced.Video.ColorSpace="Fargerom"
191
+Basic.Settings.Advanced.Video.ColorRange="Fargespekter"
192
 Basic.Settings.Advanced.Video.ColorRange.Partial="Delvis"
193
 Basic.Settings.Advanced.Video.ColorRange.Full="Full"
194
 Basic.Settings.Advanced.Audio.MonitoringDevice="Lydenhet for overvåking"
195
@@ -725,7 +756,7 @@
196
 
197
 Basic.AdvAudio="Avanserte lydinnstillinger"
198
 Basic.AdvAudio.Name="Navn"
199
-Basic.AdvAudio.Volume="Volum (%)"
200
+Basic.AdvAudio.Volume="Volum"
201
 Basic.AdvAudio.Mono="Nedmiks til mono"
202
 Basic.AdvAudio.Balance="Balanse"
203
 Basic.AdvAudio.SyncOffset="Synkroniseringsforskyvning (ms)"
204
@@ -781,6 +812,7 @@
205
 Hotkeys.AppleKeypadDecimal="."
206
 Hotkeys.AppleKeypadEqual="= (talltastatur)"
207
 Hotkeys.MouseButton="Museknapp %1"
208
+Hotkeys.Escape="Esc"
209
 
210
 Mute="Demp"
211
 Unmute="Udemp"
212
@@ -792,6 +824,7 @@
213
 
214
 OutputWarnings.NoTracksSelected="Du må velge minst ett spor"
215
 OutputWarnings.MultiTrackRecording="Advarsel: enkelte formater (som FLV) støtter ikke flere spor per opptak"
216
+OutputWarnings.MP4Recording="Advarsel: Opptak lagret i MP4/MOV vil bli slettet dersom filen ikke kan fullføres (f.eks. som følge av BSOD, tap av strøm, osv.) Hvis du vil registere flere lydspor, vurder å bruke MKV og remuks inspillingen til MP4/MOV etter at det er ferdig (Fil → Remuks opptak)"
217
 
218
 FinalScene.Title="Slett scene"
219
 FinalScene.Text="Det må være minst én scene."
220
@@ -799,6 +832,7 @@
221
 NoSources.Title="Ingen kilder"
222
 NoSources.Text="Det ser ut som du ikke har lagt til noen videokilder ennå, så du vil kun sende en blank skjerm. Er du sikker på at du vil gjøre dette?"
223
 NoSources.Text.AddSource="Du kan legge til kilder ved å klikke på +-ikonet under Kilder-boksen i hovedvinduet til enhver tid."
224
+NoSources.Label="Du har ingen kilder. \nKlikk + knappen nedenfor,\neller høyre-klikk her for å legge til."
225
 
226
 ChangeBG="Velg farge"
227
 CustomColor="Egendefinert farge"
228
@@ -807,6 +841,7 @@
229
 
230
 About="Om"
231
 About.Info="OBS Studio er en fri og åpen-kildet videoopptaks- og direktesendings-programvare."
232
+About.Donate="Bidra til projektet"
233
 About.GetInvolved="Involver deg"
234
 About.Authors="Skapere"
235
 About.License="Lisens"
236
@@ -816,3 +851,5 @@
237
 ResizeOutputSizeOfSource.Text="Grunn- og utdata-oppløsningene vil bli gitt samme størrelse som den nåværende kilden."
238
 ResizeOutputSizeOfSource.Continue="Vil du fortsette?"
239
 
240
+PreviewTransition="Forhåndsvis overgang"
241
+
242
obs-studio-23.1.0.tar.xz/UI/data/locale/nl-NL.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/nl-NL.ini Changed
156
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Verticale Lay-out"
3
 Group="Groep"
4
 DoNotShowAgain="Niet opnieuw tonen"
5
+Default="(Standaard)"
6
+Calculating="Berekenen..."
7
 
8
 AlreadyRunning.Title="OBS is al actief"
9
 AlreadyRunning.Text="OBS is al actief! Tenzij je dit wilde doen, sluit a.u.b. alle reeds draaiende instanties van OBS voor je een nieuwe instantie opstart. Als je OBS hebt ingesteld om naar het systeemvak te minimaliseren, controleer dan of hij daar nog uitgevoerd wordt."
10
@@ -103,6 +105,8 @@
11
 Auth.StreamInfo="Stream-informatie"
12
 TwitchAuth.Stats="Twitch statistieken"
13
 TwitchAuth.Feed="Twitch activiteitenfeed"
14
+TwitchAuth.TwoFactorFail.Title="Kon stream key niet opvragen"
15
+TwitchAuth.TwoFactorFail.Text="OBS kon geen verbinding maken met uw Twitch account. Zorg ervoor dat er twee-factor authenticatie is ingesteld in uw <a href='https://www.twitch.tv/settings/security'>Twitch beveiligingsinstellingen</a>, omdat dit nodig is om te streamen."
16
 
17
 Copy.Filters="Kopieer Filters"
18
 Paste.Filters="Plak filters"
19
@@ -150,7 +154,7 @@
20
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Geef de voorkeur aan hardware-encoding"
21
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Hardware-encoding elimineert het meeste CPU-gebruik, maar heeft wellicht een hogere bitrate nodig om hetzelfde kwaliteitsniveau te bereiken."
22
 Basic.AutoConfig.StreamPage.StreamWarning.Title="Streamwaarschuwing"
23
-Basic.AutoConfig.StreamPage.StreamWarning.Text="De bandbreedte-test is bezig met het streamen van willekeurige videogegevens zonder audio naar uw kanaal.  Indien mogelijk is het aanbevolen om tijdelijk het opslaan van video's van streams uit te schakelen en de stream privé  te maken tot de test is voltooid. Doorgaan?"
24
+Basic.AutoConfig.StreamPage.StreamWarning.Text="De bandbreedte-test is bezig met het streamen van willekeurige videogegevens zonder audio naar uw kanaal. Indien mogelijk is het aanbevolen om tijdelijk het opslaan van video's van streams uit te schakelen en de stream privé te maken tot de test is voltooid. Doorgaan?"
25
 Basic.AutoConfig.TestPage="Eindresultaat"
26
 Basic.AutoConfig.TestPage.SubTitle.Testing="Het programma voert nu een reeks testen uit om de meest ideale instellingen in te schatten"
27
 Basic.AutoConfig.TestPage.SubTitle.Complete="Testen is afgerond"
28
@@ -185,6 +189,7 @@
29
 Basic.Stats.DroppedFrames="Gedropte Frames (Netwerk)"
30
 Basic.Stats.MegabytesSent="Totale Gegevensuitvoer"
31
 Basic.Stats.Bitrate="Bitrate"
32
+Basic.Stats.DiskFullIn="Schijf vol (ca.)"
33
 
34
 ResetUIWarning.Title="Weet u zeker dat u de UI wilt herstellen?"
35
 ResetUIWarning.Text="Herstellen van de UI zal extra docks verbergen. Als u deze docks toch wilt zien, dan moet u ze in via het beeld menu weer zichtbaar maken.\n\nWeet u zeker dat u de UI wilt herstellen?"
36
@@ -250,6 +255,7 @@
37
 Output.StartReplayFailed="Het starten van de replay buffer is mislukt"
38
 Output.StartFailedGeneric="Het starten van de uitvoer is mislukt. Controleer de logbestanden voor meer informatie.\n\nLet op: Als je gebruik maakt van de NVENC of AMD encoders, controleer of de drivers up to date zijn."
39
 
40
+
41
 Output.ConnectFail.Title="Kan geen verbinding maken"
42
 Output.ConnectFail.BadPath="Ongeldig pad of verbindings-url. Controleer a.u.b. of je instellingen geldig zijn."
43
 Output.ConnectFail.ConnectFailed="Kan geen verbinding maken met de server"
44
@@ -257,12 +263,16 @@
45
 Output.ConnectFail.Error="Er is een onverwachte fout opgetreden bij het verbinden met de server. Meer informatie in het logbestand."
46
 Output.ConnectFail.Disconnected="verbinding met de server gesloten."
47
 
48
+Output.StreamEncodeError.Title="Coderingsfout"
49
+Output.StreamEncodeError.Msg="Er is een coderingsfout opgetreden tijdens het streamen."
50
+
51
 Output.RecordFail.Title="Kon de opname niet starten"
52
 Output.RecordFail.Unsupported="Het outputformaat wordt niet ondersteund, of ondersteunt niet meer dan een audiotrack. Controleer je instellingen en probeer het opnieuw."
53
 Output.RecordNoSpace.Title="Onvoldoende schijfruimte"
54
 Output.RecordNoSpace.Msg="Er is niet voldoende schijfruimte om door te gaan met opnemen."
55
 Output.RecordError.Title="Opnamefout"
56
 Output.RecordError.Msg="Er is een onbekende fout opgetreden tijdens het opnemen."
57
+Output.RecordError.EncodeErrorMsg="Er is een coderingsfout opgetreden tijdens het opnemen."
58
 Output.ReplayBuffer.NoHotkey.Title="Er is geen sneltoets ingesteld!"
59
 Output.ReplayBuffer.NoHotkey.Msg="Er is geen opslaan sneltoets ingesteld voor de replay buffer. Zet aub de \"Opslaan\" sneltoets voor het opslaan van replay-opnames."
60
 
61
@@ -306,6 +316,8 @@
62
 
63
 Basic.Main.PreviewConextMenu.Enable="Preview inschakelen"
64
 
65
+Basic.Main.Preview.Disable="Preview uitschakelen"
66
+
67
 ScaleFiltering="Schaal-filter"
68
 ScaleFiltering.Point="Point"
69
 ScaleFiltering.Bilinear="Bilinear"
70
@@ -476,6 +488,8 @@
71
 Basic.MainMenu.Edit.Transform.FitToScreen="In scherm passen (&F)"
72
 Basic.MainMenu.Edit.Transform.StretchToScreen="Uitrekken naar scherm (&S)"
73
 Basic.MainMenu.Edit.Transform.CenterToScreen="Centeren op scherm (&C)"
74
+Basic.MainMenu.Edit.Transform.VerticalCenter="Verticaal centreren"
75
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Horizontaal centreren"
76
 Basic.MainMenu.Edit.Order="V&olgorde"
77
 Basic.MainMenu.Edit.Order.MoveUp="Omhoog Schuiven (&U)"
78
 Basic.MainMenu.Edit.Order.MoveDown="Omlaag Schuiven (&D)"
79
@@ -674,7 +688,7 @@
80
 Basic.Settings.Video.Numerator="Teller"
81
 Basic.Settings.Video.Denominator="Noemer"
82
 Basic.Settings.Video.Renderer="Renderer"
83
-Basic.Settings.Video.InvalidResolution="Ongeldige resolutiewaarde.  Moet [breedte] x [hoogte] zijn (bijv. 1920 x 1080)"
84
+Basic.Settings.Video.InvalidResolution="Ongeldige resolutiewaarde. Moet [breedte] x [hoogte] zijn (bijv. 1920 x 1080)"
85
 Basic.Settings.Video.CurrentlyActive="Video-uitvoer is momenteel actief. Schakel a.u.b. alle uitvoeren uit om video-instellingen aan te passen."
86
 Basic.Settings.Video.DisableAero="Aero uitschakelen"
87
 
88
@@ -685,7 +699,8 @@
89
 Basic.Settings.Audio="Audio"
90
 Basic.Settings.Audio.SampleRate="Sample Rate"
91
 Basic.Settings.Audio.Channels="Kanalen"
92
-Basic.Settings.Audio.MeterDecayRate="Vervalsnelheid Volumemeter"
93
+Basic.Settings.Audio.Meters="Meters"
94
+Basic.Settings.Audio.MeterDecayRate="Verval snelheid"
95
 Basic.Settings.Audio.MeterDecayRate.Fast="Snel"
96
 Basic.Settings.Audio.MeterDecayRate.Medium="Gemiddeld (Type I PPM)"
97
 Basic.Settings.Audio.MeterDecayRate.Slow="Traag (Type II PPM)"
98
@@ -696,8 +711,9 @@
99
 Basic.Settings.Audio.MultichannelWarning="Als je streamt, controleer dan of je streaming service zowel surround sound ingest als surround sound afspelen ondersteunt. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast zijn voorbeelden waar surround sound volledig ondersteund is. Alhoewel Facebook Live en Youtube Live beide surround ingest ondersteunen, downmixt Facebook Live het naar stereo, terwijl Youtube Live slechts twee kanalen afspeelt.\n\nOBS audio filters kunnen overweg met surround sound, maar ondersteuning bij VST plugins is niet gegarandeerd."
100
 Basic.Settings.Audio.MultichannelWarning.Title="Surround sound audio inschakelen?"
101
 Basic.Settings.Audio.MultichannelWarning.Confirm="Weet je zeker dat je surround sound audio wil inschakelen?"
102
-Basic.Settings.Audio.DesktopDevice="Desktop Audioapparaat"
103
-Basic.Settings.Audio.DesktopDevice2="Desktop Audioapparaat 1"
104
+Basic.Settings.Audio.Devices="Apparaten"
105
+Basic.Settings.Audio.DesktopDevice="Desktop Audio"
106
+Basic.Settings.Audio.DesktopDevice2="Desktop Audio 2"
107
 Basic.Settings.Audio.AuxDevice="Mic/Aux Audioapparaat"
108
 Basic.Settings.Audio.AuxDevice2="Mic/Aux Audioapparaat 2"
109
 Basic.Settings.Audio.AuxDevice3="Mic/Aux Audioapparaat 3"
110
@@ -719,11 +735,11 @@
111
 Basic.Settings.Advanced.FormatWarning="Waarschuwing: Andere kleurformaten dan NV12 zijn hoofdzakelijk bedoeld voor opnemen en worden niet aanbevolen om mee te streamen. Streamen kan verhoogd CPU-gebruik opleveren vanwege kleurformaatconversie."
112
 Basic.Settings.Advanced.Audio.BufferingTime="Audio Buffertijd"
113
 Basic.Settings.Advanced.Video.ColorFormat="Kleurindeling"
114
-Basic.Settings.Advanced.Video.ColorSpace="YUV-Kleurruimte"
115
-Basic.Settings.Advanced.Video.ColorRange="YUV-Kleurbereik"
116
+Basic.Settings.Advanced.Video.ColorSpace="Kleurruimte"
117
+Basic.Settings.Advanced.Video.ColorRange="Kleurbereik"
118
 Basic.Settings.Advanced.Video.ColorRange.Partial="Partial"
119
 Basic.Settings.Advanced.Video.ColorRange.Full="Full"
120
-Basic.Settings.Advanced.Audio.MonitoringDevice="Audio monitoring apparaat"
121
+Basic.Settings.Advanced.Audio.MonitoringDevice="Monitoring apparaat"
122
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Standaard"
123
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Schakel Windows audio ducking uit"
124
 Basic.Settings.Advanced.StreamDelay="Streamvertraging"
125
@@ -740,7 +756,7 @@
126
 
127
 Basic.AdvAudio="Geavanceerde Audioinstellingen"
128
 Basic.AdvAudio.Name="Naam"
129
-Basic.AdvAudio.Volume="Volume (%)"
130
+Basic.AdvAudio.Volume="Volume"
131
 Basic.AdvAudio.Mono="Downmixen naar Mono"
132
 Basic.AdvAudio.Balance="Balans"
133
 Basic.AdvAudio.SyncOffset="Sync Offset (ms)"
134
@@ -796,6 +812,7 @@
135
 Hotkeys.AppleKeypadDecimal=". (Keypad)"
136
 Hotkeys.AppleKeypadEqual="= (Keypad)"
137
 Hotkeys.MouseButton="Muis %1"
138
+Hotkeys.Escape="Esc"
139
 
140
 Mute="Mute"
141
 Unmute="Unmute"
142
@@ -815,6 +832,7 @@
143
 NoSources.Title="Geen bronnen"
144
 NoSources.Text="Er zijn nog geen video bronnen toegevoegd, er zal dus een leeg scherm weergegeven worden. Weet je zeker dat je dit wilt doen?"
145
 NoSources.Text.AddSource="Bronnen kunnen toegevoegd worden door op het + icoon onder het vak \"Bronnen\" in het hoofdvenster te klikken."
146
+NoSources.Label="U heeft geen bronnen.\nKlik op de + knop hieronder\nof rechtsklik hier om er toe te voegen."
147
 
148
 ChangeBG="Kleur instellen"
149
 CustomColor="Aangepaste kleur"
150
@@ -833,3 +851,5 @@
151
 ResizeOutputSizeOfSource.Text="De basis en uitvoer resoluties worden aangepast naar de grootte van de huidige bron."
152
 ResizeOutputSizeOfSource.Continue="Wil je doorgaan?"
153
 
154
+PreviewTransition="Voorbeeld overgang"
155
+
156
obs-studio-23.1.0.tar.xz/UI/data/locale/nn-NO.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/nn-NO.ini Changed
23
 
1
@@ -119,6 +119,8 @@
2
 
3
 
4
 
5
+
6
+
7
 Basic.DesktopDevice1="Skrivebordslyd"
8
 Basic.AuxDevice1="Mikrofon/Aux"
9
 Basic.AuxDevice2="Mikrofon/Aux 2"
10
@@ -135,6 +137,7 @@
11
 
12
 
13
 
14
+
15
 AddProfile.Title="Legg til profil"
16
 
17
 
18
@@ -209,3 +212,4 @@
19
 
20
 
21
 
22
+
23
obs-studio-23.1.0.tar.xz/UI/data/locale/pa-IN.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/pa-IN.ini Changed
9
 
1
@@ -112,3 +112,7 @@
2
 
3
 
4
 
5
+
6
+
7
+
8
+
9
obs-studio-23.1.0.tar.xz/UI/data/locale/pl-PL.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/pl-PL.ini Changed
185
 
1
@@ -8,7 +8,7 @@
2
 Close="Zamknij"
3
 Save="Zapisz"
4
 Discard="Odrzuć"
5
-Disable="Wyłączone"
6
+Disable="Wyłącz"
7
 Yes="Tak"
8
 No="Nie"
9
 Add="Dodaj"
10
@@ -49,7 +49,7 @@
11
 Enable="Włącz"
12
 DisableOSXVSync="Wyłącz synchronizację pionową OSX"
13
 ResetOSXVSyncOnExit="Przywróć synchronizację pionową OSX po zamknięciu aplikacji"
14
-HighResourceUsage="Enkodowanie przeciążone! Zmień ustawienia video lub użyj szybszego presetu enkodowania."
15
+HighResourceUsage="Enkodowanie przeciążone! Zmień ustawienia wideo lub użyj szybszego presetu kodowania."
16
 Transition="Efekt przejścia"
17
 QuickTransitions="Szybkie efekty przejścia"
18
 Left="Od lewej"
19
@@ -81,6 +81,8 @@
20
 VerticalLayout="Układ pionowy"
21
 Group="Grupa"
22
 DoNotShowAgain="Nie pokazuj ponownie"
23
+Default="(Domyślnie)"
24
+Calculating="Obliczanie..."
25
 
26
 AlreadyRunning.Title="OBS jest już uruchomiony"
27
 AlreadyRunning.Text="OBS jest już uruchomiony! Sprawdź wszystkie uruchomione wystąpienia OBS zanim uruchomisz go jeszcze raz. Jeżeli OBS jest zminimalizowany do zasobnika systemowego, sprawdź czy nie jest uruchomiony także w tym miejscu."
28
@@ -103,6 +105,8 @@
29
 Auth.StreamInfo="Informacja o streamie"
30
 TwitchAuth.Stats="Statystyki Twitch"
31
 TwitchAuth.Feed="Lista aktywności Twitch"
32
+TwitchAuth.TwoFactorFail.Title="Nie można pobrać klucza strumienia"
33
+TwitchAuth.TwoFactorFail.Text="Powiązanie Twojego konta Twitch w OBS nie udało się. Sprawdź, czy masz włączone uwierzytelnianie dwuskładnikowe w <a href='https://www.twitch.tv/settings/security'>ustawieniach bezpieczeństwa Twitcha</a>. Wymagane jest to do streamowania przez tę platformę."
34
 
35
 Copy.Filters="Kopiuj filtry"
36
 Paste.Filters="Wklej filtry"
37
@@ -166,7 +170,7 @@
38
 Basic.AutoConfig.TestPage.Result.StreamingEncoder="Enkoder streamu"
39
 Basic.AutoConfig.TestPage.Result.RecordingEncoder="Enkoder nagrywania"
40
 Basic.AutoConfig.TestPage.Result.Header="Aplikacja ustaliła poniższe ustawienia jako najbardziej idealne dla Ciebie:"
41
-Basic.AutoConfig.TestPage.Result.Footer="Aby użyć tych ustawień, kliknij przycisk Zastosuj ustawienia.  Aby ponownie skonfigurować kreatora i spróbować ponownie, kliknij przycisk Wstecz. Aby ręcznie skonfigurować ustawienia, kliknij przycisk Anuluj i otwórz Ustawienia."
42
+Basic.AutoConfig.TestPage.Result.Footer="Aby użyć tych ustawień, kliknij przycisk Zastosuj ustawienia. Aby ponownie skonfigurować kreatora i spróbować ponownie, kliknij przycisk Wstecz. Aby ręcznie skonfigurować ustawienia, kliknij przycisk Anuluj i otwórz Ustawienia."
43
 
44
 Basic.Stats="Statystyki"
45
 Basic.Stats.CPUUsage="Użycie procesora"
46
@@ -185,6 +189,7 @@
47
 Basic.Stats.DroppedFrames="Zgubione klatki (sieć)"
48
 Basic.Stats.MegabytesSent="Całkowite dane wyjściowe"
49
 Basic.Stats.Bitrate="Przepływność (bitrate)"
50
+Basic.Stats.DiskFullIn="Dysk pełny za (około)"
51
 
52
 ResetUIWarning.Title="Czy na pewno chcesz zresetować wygląd aplikacji?"
53
 ResetUIWarning.Text="Reset ustawień wyglądu aplikacji ukryje dodatkowe okienka. Wymagane będzie ich przywrócenie z menu wyglądu, jeżeli mają być widoczne.\n\nCzy na pewno chcesz zresetować wygląd aplikacji?"
54
@@ -200,7 +205,7 @@
55
 Updater.NoUpdatesAvailable.Text="Brak dostępnych aktualizacji"
56
 Updater.FailedToLaunch="Nie udało się uruchomić aktualizacji"
57
 Updater.GameCaptureActive.Title="Przechwytywanie gry aktywne"
58
-Updater.GameCaptureActive.Text="Przechwytywanie gry jest aktywne. Proszę o zamknięcie wszelkich przechwytywanych gier/aplikacji (lub ponowne uruchomienie systemu) i spróbowanie później."
59
+Updater.GameCaptureActive.Text="Biblioteka zaczepiająca przechwytywanie gry jest w użyciu. Proszę zamknąć wszelkie przechwytywane gry lub inne programy (ewentualnie zrestartować system) i spróbować ponownie."
60
 
61
 QuickTransitions.SwapScenes="Zamień podgląd/wyjście scen po przejściu"
62
 QuickTransitions.SwapScenesTT="Zamienia podgląd i wyjście scen po przejściu (jeżeli wyjście oryginalnej sceny istnieje).\nNie przywraca to zmian jakie zostały dokonane w oryginalnej scenie."
63
@@ -250,19 +255,24 @@
64
 Output.StartReplayFailed="Nie udało się rozpocząć nagrywania powtórek"
65
 Output.StartFailedGeneric="Nie udało się uruchomić wyjścia. Sprawdź szczegóły w plikach dziennika.\n\nUwaga: Sprawdź, czy posiadasz aktualne sterowniki karty graficznej, jeżeli używasz enkodera NVENC lub AMD."
66
 
67
+
68
 Output.ConnectFail.Title="Nie udało się połączyć"
69
 Output.ConnectFail.BadPath="Nieprawidłowa ścieżka lub adres URL połączenia. Sprawdź poprawność ustawień."
70
 Output.ConnectFail.ConnectFailed="Nie udało się połączyć z serwerem"
71
 Output.ConnectFail.InvalidStream="Nie można uzyskać dostępu do wybranego kanału lub klucza streamu. Proszę sprawdzić klucz streamu. Jeżeli jest poprawny, to problemem może być połączenie do serwera."
72
-Output.ConnectFail.Error="Wystąpił nieoczekiwany błąd podczas próby połączenia z serwerem.  Więcej informacji w pliku dziennika."
73
+Output.ConnectFail.Error="Wystąpił nieoczekiwany błąd podczas próby połączenia z serwerem. Więcej informacji w pliku dziennika."
74
 Output.ConnectFail.Disconnected="Utracono połączenie z serwerem."
75
 
76
+Output.StreamEncodeError.Title="Błąd enkodowania"
77
+Output.StreamEncodeError.Msg="W trakcie transmisji nastąpił błąd enkodowania."
78
+
79
 Output.RecordFail.Title="Nie udało się rozpocząć nagrywania"
80
 Output.RecordFail.Unsupported="Format wyjściowy jest nieobsługiwany lub nie obsługuje więcej niż jednej ścieżki dźwiękowej. Sprawdź ustawienia i spróbuj ponownie."
81
 Output.RecordNoSpace.Title="Za mało miejsca na dysku"
82
 Output.RecordNoSpace.Msg="Za mało miejsca na dysku, aby kontynuować nagrywanie."
83
 Output.RecordError.Title="Błąd nagrywania"
84
 Output.RecordError.Msg="Wystąpił nieokreślony błąd podczas nagrywania."
85
+Output.RecordError.EncodeErrorMsg="W trakcie nagrywania nastąpił błąd enkodowania."
86
 Output.ReplayBuffer.NoHotkey.Title="Brak klawisza skrótu!"
87
 Output.ReplayBuffer.NoHotkey.Msg="Klawisz skrótu do zapisu nagranej powtórki nie został ustawiony. Ustaw skrót dla opcji \"Zapisz powtórkę\", aby móc używać go do zapisywania tego typu nagrań."
88
 
89
@@ -306,6 +316,8 @@
90
 
91
 Basic.Main.PreviewConextMenu.Enable="Włącz podgląd"
92
 
93
+Basic.Main.Preview.Disable="Wyłącz podgląd"
94
+
95
 ScaleFiltering="Filtrowanie skalowania"
96
 ScaleFiltering.Point="Punktowe"
97
 ScaleFiltering.Bilinear="Dwuliniowe"
98
@@ -476,6 +488,8 @@
99
 Basic.MainMenu.Edit.Transform.FitToScreen="Dopasuj do ekranu (&F)"
100
 Basic.MainMenu.Edit.Transform.StretchToScreen="Rozciągnij do ekranu (&S)"
101
 Basic.MainMenu.Edit.Transform.CenterToScreen="Wyśrodkuj na ekranie (&C)"
102
+Basic.MainMenu.Edit.Transform.VerticalCenter="Wyśrodkuj w pionie"
103
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Wyśrodkuj w poziomie"
104
 Basic.MainMenu.Edit.Order="K&olejność"
105
 Basic.MainMenu.Edit.Order.MoveUp="Przes&uń w górę"
106
 Basic.MainMenu.Edit.Order.MoveDown="Przesuń w &dół"
107
@@ -591,7 +605,7 @@
108
 Basic.Settings.Output.ReplayBuffer.Suffix="Sufiks"
109
 Basic.Settings.Output.Simple.SavePath="Ścieżka pliku"
110
 Basic.Settings.Output.Simple.RecordingQuality="Jakość nagrywania"
111
-Basic.Settings.Output.Simple.RecordingQuality.Stream="Taki sam jak stream"
112
+Basic.Settings.Output.Simple.RecordingQuality.Stream="Taka sama jak stream"
113
 Basic.Settings.Output.Simple.RecordingQuality.Small="Wysoka jakość, średni rozmiar pliku"
114
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Jakość nie do odróżnienia, duża wielkość pliku"
115
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Jakość bezstratna, ogromna wielkość pliku"
116
@@ -674,7 +688,7 @@
117
 Basic.Settings.Video.Numerator="Licznik"
118
 Basic.Settings.Video.Denominator="Mianownik"
119
 Basic.Settings.Video.Renderer="Renderowanie"
120
-Basic.Settings.Video.InvalidResolution="Nieprawidłowa rozdzielczość.  Wartość powinna mieć format [szerokość]x[wysokość] (np. 1920x1080)"
121
+Basic.Settings.Video.InvalidResolution="Nieprawidłowa rozdzielczość. Wartość powinna mieć format [szerokość]x[wysokość] (np. 1920x1080)"
122
 Basic.Settings.Video.CurrentlyActive="Wyjście wideo jest aktywne. Należy wyłączyć wszelkie wyjścia, aby zmienić ustawienia wideo."
123
 Basic.Settings.Video.DisableAero="Wyłącz Aero"
124
 
125
@@ -685,7 +699,8 @@
126
 Basic.Settings.Audio="Dźwięk"
127
 Basic.Settings.Audio.SampleRate="Częstotliwość próbkowania"
128
 Basic.Settings.Audio.Channels="Kanały"
129
-Basic.Settings.Audio.MeterDecayRate="Szybkość powrotu miernika audio"
130
+Basic.Settings.Audio.Meters="Mierniki"
131
+Basic.Settings.Audio.MeterDecayRate="Czas zanikania"
132
 Basic.Settings.Audio.MeterDecayRate.Fast="Szybko"
133
 Basic.Settings.Audio.MeterDecayRate.Medium="Średnio (PPM typu I)"
134
 Basic.Settings.Audio.MeterDecayRate.Slow="Wolno (PPM typu II)"
135
@@ -696,8 +711,9 @@
136
 Basic.Settings.Audio.MultichannelWarning="W przypadku streamowania sprawdź, czy docelowa usługa obsługuje wielokanałowe wejście oraz odtwarzanie dźwięku surround. Twitch, Facebook, 360 Live, Mixer RTMP, Smashcast to przykłady usług obsługujących dźwięk wielokanałowy. O ile Facebook Live i Youtube Live obsługują wejście dźwięku wielokanałowego, to w przypadku odtwarzania Facebook miksuje kanału do stereo a Youtube Live odtwarza tylko dwa kanały.\n\nFiltry dźwiękowe OBS są w pełni kompatybilne z dźwiękiem kanałowym, natomiast wsparcie pluginów VST nie jest gwarantowane."
137
 Basic.Settings.Audio.MultichannelWarning.Title="Włączyć dźwięk przestrzenny?"
138
 Basic.Settings.Audio.MultichannelWarning.Confirm="Czy na pewno chcesz włączyć dźwięk przestrzenny?"
139
-Basic.Settings.Audio.DesktopDevice="Urządzenie Audio"
140
-Basic.Settings.Audio.DesktopDevice2="Urządzenie Audio 2"
141
+Basic.Settings.Audio.Devices="Urządzenia"
142
+Basic.Settings.Audio.DesktopDevice="Urządzenie audio"
143
+Basic.Settings.Audio.DesktopDevice2="Urządzenie audio 2"
144
 Basic.Settings.Audio.AuxDevice="Mikrofon/dodatkowe urządzenie audio"
145
 Basic.Settings.Audio.AuxDevice2="Mikrofon/dodatkowe urządzenie audio 2"
146
 Basic.Settings.Audio.AuxDevice3="Mikrofon/dodatkowe urządzenie audio 3"
147
@@ -719,11 +735,11 @@
148
 Basic.Settings.Advanced.FormatWarning="Ostrzeżenie: Formaty koloru inne niż NV12 przeznaczone są głównie do nagrywania i nie są zalecane podczas przesyłania strumieniowego. Użycie innych formatów koloru podczas przesyłania strumieniowego wymagać będzie przekształcenia formatu w locie, co może znacząco zwiększyć obciążenie procesora."
149
 Basic.Settings.Advanced.Audio.BufferingTime="Czas buforowania dźwięku"
150
 Basic.Settings.Advanced.Video.ColorFormat="Format koloru"
151
-Basic.Settings.Advanced.Video.ColorSpace="Przestrzeń kolorów YUV"
152
-Basic.Settings.Advanced.Video.ColorRange="Zakres kolorów YUV"
153
+Basic.Settings.Advanced.Video.ColorSpace="Przestrzeń kolorów"
154
+Basic.Settings.Advanced.Video.ColorRange="Zakres kolorów"
155
 Basic.Settings.Advanced.Video.ColorRange.Partial="Częściowy"
156
 Basic.Settings.Advanced.Video.ColorRange.Full="Pełny"
157
-Basic.Settings.Advanced.Audio.MonitoringDevice="Monitorowane urządzenie audio"
158
+Basic.Settings.Advanced.Audio.MonitoringDevice="Urządzenie do monitorowania audio"
159
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Domyślne"
160
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Wyłącz systemowe obniżanie głośności innych źródeł dźwięków"
161
 Basic.Settings.Advanced.StreamDelay="Opóźnienie streamu"
162
@@ -740,7 +756,7 @@
163
 
164
 Basic.AdvAudio="Zaawansowane ustawienia dźwięku"
165
 Basic.AdvAudio.Name="Nazwa"
166
-Basic.AdvAudio.Volume="Głośność (%)"
167
+Basic.AdvAudio.Volume="Głośność"
168
 Basic.AdvAudio.Mono="Downmix do Mono"
169
 Basic.AdvAudio.Balance="Balans"
170
 Basic.AdvAudio.SyncOffset="Przesunięcie dźwięku (ms)"
171
@@ -816,6 +832,7 @@
172
 NoSources.Title="Brak źródeł"
173
 NoSources.Text="Wygląda na to, że nie dodano żadnych źródeł video. Na wyjściu otrzymasz tylko czarny ekran. Czy na pewno chcesz to zrobić?"
174
 NoSources.Text.AddSource="Źródła dodać można w każdym momencie klikając przycisk + w okienku Źródła głównego ekranu aplikacji."
175
+NoSources.Label="Nie masz żadnych źródeł.\nKliknij przycisk + poniżej lub kliknij tutaj\n prawym przyciskiem myszy, aby dodać źródło."
176
 
177
 ChangeBG="Ustaw kolor"
178
 CustomColor="Kolor niestandardowy"
179
@@ -834,3 +851,5 @@
180
 ResizeOutputSizeOfSource.Text="Rozdzielczość bazowa i docelowa zostaną zmienione do rozdzielczości bieżącego źródła."
181
 ResizeOutputSizeOfSource.Continue="Czy chcesz kontynuować?"
182
 
183
+PreviewTransition="Podgląd efektu przejścia"
184
+
185
obs-studio-23.1.0.tar.xz/UI/data/locale/pt-BR.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/pt-BR.ini Changed
218
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Disposição vertical"
3
 Group="Grupo"
4
 DoNotShowAgain="Não mostrar novamente"
5
+Default="(Padrão)"
6
+Calculating="Calculando..."
7
 
8
 AlreadyRunning.Title="OBS já está em execução"
9
 AlreadyRunning.Text="OBS já está em execução! A menos que você tenha a intenção de fazer isso, por favor, feche todas as instâncias existentes do OBS antes de tentar executar uma nova. Se você tiver definido para minimizar o OBS na bandeja do sistema, verifique se ainda está lá em execução."
10
@@ -103,6 +105,8 @@
11
 Auth.StreamInfo="Informação da transmissão"
12
 TwitchAuth.Stats="Estatísticas da Twitch"
13
 TwitchAuth.Feed="Feed de Atividade do Twitch"
14
+TwitchAuth.TwoFactorFail.Title="Não foi possível consultar a chave de transmissão"
15
+TwitchAuth.TwoFactorFail.Text="O OBS não foi capaz de se conectar à sua conta do Twitch. Por favor, certifique-se de que a autenticação de dois fatores está configurada em suas <a href='https://www.twitch.tv/settings/security'>Configurações de segurança do Twitch</a> pois isso é necessário para transmitir."
16
 
17
 Copy.Filters="Copiar Filtros"
18
 Paste.Filters="Colar Filtros"
19
@@ -116,7 +120,7 @@
20
 BandwidthTest.Region.Asia="Ásia"
21
 BandwidthTest.Region.Other="Outro"
22
 
23
-Basic.FirstStartup.RunWizard="Você gostaria de executar o assistente de configuração?  Você também pode definir manualmente suas configurações clicando no botão \"Configurações\" na janela principal."
24
+Basic.FirstStartup.RunWizard="Você gostaria de executar o assistente de configuração? Você também pode definir manualmente suas configurações clicando no botão \"Configurações\" na janela principal."
25
 Basic.FirstStartup.RunWizard.NoClicked="Se você mudar de ideia, você pode executar o assistente de configuração a qualquer momento no menu \"Ferramentas\"."
26
 
27
 Basic.AutoConfig="Assistente de configuração"
28
@@ -155,7 +159,7 @@
29
 Basic.AutoConfig.TestPage.SubTitle.Testing="O programa está executando um conjunto de testes para estimar as configurações ideais"
30
 Basic.AutoConfig.TestPage.SubTitle.Complete="Teste completo"
31
 Basic.AutoConfig.TestPage.TestingBandwidth="Executando teste de largura de banda, isso pode levar alguns minutos..."
32
-Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Conectando a:  %1..."
33
+Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Conectando a: %1..."
34
 Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Falha ao se conectar a qualquer servidor, verifique sua conexão com a Internet e tente novamente."
35
 Basic.AutoConfig.TestPage.TestingBandwidth.Server="Teste de largura de banda para: %1"
36
 Basic.AutoConfig.TestPage.TestingStreamEncoder="Testando codificador de transmissão, isto pode demorar um minuto..."
37
@@ -166,7 +170,7 @@
38
 Basic.AutoConfig.TestPage.Result.StreamingEncoder="Codificador da transmissão"
39
 Basic.AutoConfig.TestPage.Result.RecordingEncoder="Codificador da Gravação"
40
 Basic.AutoConfig.TestPage.Result.Header="O programa determinou que estas configurações estimadas são as mais ideais para você:"
41
-Basic.AutoConfig.TestPage.Result.Footer="Para usar essas configurações, clique em \"Aplicar Configurações\".  Para reconfigurar o assistente e tentar novamente, clique em \"Voltar\".  Para definir manualmente, clique em \"Cancelar\" e abra as \"Configurações\"."
42
+Basic.AutoConfig.TestPage.Result.Footer="Para usar essas configurações, clique em \"Aplicar Configurações\". Para reconfigurar o assistente e tentar novamente, clique em \"Voltar\". Para definir manualmente, clique em \"Cancelar\" e abra as \"Configurações\"."
43
 
44
 Basic.Stats="Estatísticas"
45
 Basic.Stats.CPUUsage="Uso de CPU"
46
@@ -185,6 +189,7 @@
47
 Basic.Stats.DroppedFrames="Quadros Perdidos (Rede)"
48
 Basic.Stats.MegabytesSent="Saída Total de Dados"
49
 Basic.Stats.Bitrate="Taxa de bits"
50
+Basic.Stats.DiskFullIn="Disco completo em (aprox.)"
51
 
52
 ResetUIWarning.Title="Tem certeza de que deseja redefinir a interface do usuário?"
53
 ResetUIWarning.Text="Redefinir a interface irá ocultar as âncoras adicionais. Você precisará mostra-las indo no menu de visualização se quiser que elas se tornem visíveis novamente.\n\nTem certeza de que deseja redefinir a interface do usuário?"
54
@@ -200,7 +205,7 @@
55
 Updater.NoUpdatesAvailable.Text="Não há atualizações disponíveis"
56
 Updater.FailedToLaunch="Falha ao iniciar o atualizador"
57
 Updater.GameCaptureActive.Title="Captura de jogo ativa"
58
-Updater.GameCaptureActive.Text="A biblioteca de captura de jogos está em uso. Feche todos os jogos / programas que estão sendo capturados (ou reinicie o computador) e tente novamente."
59
+Updater.GameCaptureActive.Text="A biblioteca de captura do jogo está em uso no momento. Por favor feche qualquer jogo/programa que esteja sendo capturado (ou reinicie o Windows) e tente novamente."
60
 
61
 QuickTransitions.SwapScenes="Trocar Cenas de Prévia/Saída após a Transição"
62
 QuickTransitions.SwapScenesTT="Troca a prévia e a saída após transicionar (se a a cena original de saída ainda exisitr).\nIsto não irá desfazer nenhuma mudança que foi feita na cena original da saída."
63
@@ -239,7 +244,7 @@
64
 ConfirmBWTest.Text="Você com o OBS configurado no modo de teste de largura de banda. Este modo permite o teste de rede sem que o seu canal entre em funcionamento. Uma vez terminado o teste, você precisará desativá-lo para que os espectadores possam ver sua transmissão.\n\nVocê quer continuar?"
65
 
66
 ConfirmExit.Title="Sair do OBS?"
67
-ConfirmExit.Text="OBS está ativo no momento.  Todos as streams/gravações serão encerradas.  Tem certeza que deseja sair?"
68
+ConfirmExit.Text="OBS está ativo no momento. Todos as streams/gravações serão encerradas. Tem certeza que deseja sair?"
69
 
70
 ConfirmRemove.Title="Confirmar a Remoção"
71
 ConfirmRemove.Text="Tem certeza que deseja remover '$1'?"
72
@@ -250,6 +255,7 @@
73
 Output.StartReplayFailed="Falha ao iniciar o buffer de repetição"
74
 Output.StartFailedGeneric="Impossível criar o arquivo de saída. Verifique o registro para mais detalhes do erro.\n\nAviso: se estiver utilizando os codificadores NVENC ou AMD, certifique-se de que os seus drivers estão atualizados."
75
 
76
+
77
 Output.ConnectFail.Title="Falha ao conectar"
78
 Output.ConnectFail.BadPath="Caminho ou URL inválida. Por favor, verifique suas configurações para confirmar que estão válidas."
79
 Output.ConnectFail.ConnectFailed="Falha ao conectar com o Servidor"
80
@@ -257,12 +263,16 @@
81
 Output.ConnectFail.Error="Ocorreu um erro inesperado ao tentar conectar-se ao servidor. Verifique o arquivo de registro para mais informações."
82
 Output.ConnectFail.Disconnected="Desconectado do Servidor."
83
 
84
+Output.StreamEncodeError.Title="Erro de codificação"
85
+Output.StreamEncodeError.Msg="Ocorreu um erro de codificação durante a transmissão."
86
+
87
 Output.RecordFail.Title="Falha ao iniciar a gravação"
88
 Output.RecordFail.Unsupported="O formato de saída ou não é compatível ou não suporta mais do que uma faixa de áudio. Por favor, verifique suas configurações e tente novamente."
89
 Output.RecordNoSpace.Title="Espaço em disco insuficiente"
90
 Output.RecordNoSpace.Msg="Não há espaço em disco suficiente para continuar a gravação."
91
 Output.RecordError.Title="Erro de gravação"
92
 Output.RecordError.Msg="Ocorreu um erro não especificado durante a gravação."
93
+Output.RecordError.EncodeErrorMsg="Ocorreu um erro de codificação durante a gravação."
94
 Output.ReplayBuffer.NoHotkey.Title="Nenhuma atalho adicionado!"
95
 Output.ReplayBuffer.NoHotkey.Msg="Tecla de Atalho para salvar o Buffer do replay não definida. Por favor, configure uma tecla de atalho para salvar gravações de replays."
96
 
97
@@ -292,7 +302,7 @@
98
 Remux.HelpText="Solte arquivos nesta janela para converter ou selecione uma célula \"Gravação do OBS\" para buscar um arquivo."
99
 
100
 UpdateAvailable="Nova Atualização Disponível"
101
-UpdateAvailable.Text="Versão %1. %2. %3 está agora disponível.  <a href='%4'> clique aqui para baixar</a>"
102
+UpdateAvailable.Text="Versão %1. %2. %3 está agora disponível. <a href='%4'> clique aqui para baixar</a>"
103
 
104
 Basic.DesktopDevice1="Desktop Áudio"
105
 Basic.DesktopDevice2="Desktop Áudio 2"
106
@@ -306,6 +316,8 @@
107
 
108
 Basic.Main.PreviewConextMenu.Enable="Ativar pré-vizualização"
109
 
110
+Basic.Main.Preview.Disable="Desativar pré-visualização"
111
+
112
 ScaleFiltering="Filtragem de escala"
113
 ScaleFiltering.Point="Ponto"
114
 ScaleFiltering.Bilinear="Bilinear"
115
@@ -476,6 +488,8 @@
116
 Basic.MainMenu.Edit.Transform.FitToScreen="Ajustar à Tela (&F)"
117
 Basic.MainMenu.Edit.Transform.StretchToScreen="E&stender à Tela"
118
 Basic.MainMenu.Edit.Transform.CenterToScreen="&Centralizar à Tela"
119
+Basic.MainMenu.Edit.Transform.VerticalCenter="Centralizar Verticalmente"
120
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Centralizar Horizontalmente"
121
 Basic.MainMenu.Edit.Order="&Ordem"
122
 Basic.MainMenu.Edit.Order.MoveUp="Mover para Cima (&U)"
123
 Basic.MainMenu.Edit.Order.MoveDown="Mover para Baixo (&D)"
124
@@ -521,7 +535,7 @@
125
 
126
 Basic.Settings.ProgramRestart="O Programa precisar ser reiniciado para que estas configurações surtam efeito."
127
 Basic.Settings.ConfirmTitle="Confirmar Alterações"
128
-Basic.Settings.Confirm="Você tem alterações não salvas.  Salvar as alterações?"
129
+Basic.Settings.Confirm="Você tem alterações não salvas. Salvar as alterações?"
130
 
131
 Basic.Settings.General="Geral"
132
 Basic.Settings.General.Theme="Tema"
133
@@ -595,10 +609,10 @@
134
 Basic.Settings.Output.Simple.RecordingQuality.Small="Alta qualidade, tamanho médio"
135
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Qualidade indistinguível, Tamanho grande"
136
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Qualidade Lossless, tremendamente grande"
137
-Basic.Settings.Output.Simple.Warn.VideoBitrate="Aviso: O bitrate de vídeo da transmissão será definido para %1, que é o limite superior para o serviço de transmissão atual.  Se você tem certeza que quer ir acima de %1, habilite opções de codificação avançadas e desmarque \"Impor limites de bitrate do serviço de transmissão\"."
138
-Basic.Settings.Output.Simple.Warn.AudioBitrate="Aviso: O bitrate de áudio da transmissão será definido para %1, que é o limite superior para o serviço de transmissão atual.  Se você tem certeza que quer ir acima de %1, habilite opções de codificação avançadas e desmarque \"Impor limites de bitrate do serviço de transmissão\"."
139
+Basic.Settings.Output.Simple.Warn.VideoBitrate="Aviso: O bitrate de vídeo da transmissão será definido para %1, que é o limite superior para o serviço de transmissão atual. Se você tem certeza que quer ir acima de %1, habilite opções de codificação avançadas e desmarque \"Impor limites de bitrate do serviço de transmissão\"."
140
+Basic.Settings.Output.Simple.Warn.AudioBitrate="Aviso: O bitrate de áudio da transmissão será definido para %1, que é o limite superior para o serviço de transmissão atual. Se você tem certeza que quer ir acima de %1, habilite opções de codificação avançadas e desmarque \"Impor limites de bitrate do serviço de transmissão\"."
141
 Basic.Settings.Output.Simple.Warn.Encoder="Aviso: Gravar com um codificador de software em uma qualidade diferente do que a stream vai exigir mais da CPU se você transmitir e gravar ao mesmo tempo."
142
-Basic.Settings.Output.Simple.Warn.Lossless="Aviso: Qualidade Lossless gera arquivos muito grandes!  A qualidade Lossless pode usar mais de 7 gigabytes de espaço em disco por minuto em altas resoluções e framerates.  Lossless não é recomendada para gravações longas, a menos que se tenha uma grande quantidade de espaço em disco disponível."
143
+Basic.Settings.Output.Simple.Warn.Lossless="Aviso: Qualidade Lossless gera arquivos muito grandes! A qualidade Lossless pode usar mais de 7 gigabytes de espaço em disco por minuto em altas resoluções e framerates. Lossless não é recomendada para gravações longas, a menos que se tenha uma grande quantidade de espaço em disco disponível."
144
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Tem certeza que deseja usar qualidade lossless?"
145
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Aviso de qualidade lossless!"
146
 Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
147
@@ -675,7 +689,7 @@
148
 Basic.Settings.Video.Denominator="Demoninador"
149
 Basic.Settings.Video.Renderer="Renderizador"
150
 Basic.Settings.Video.InvalidResolution="Resolução Inválida, Obrigatório ser [largura]x[altura] (ex. 1920x1080)"
151
-Basic.Settings.Video.CurrentlyActive="A saída de vídeo está atualmente ativa.  Por favor, desligue quaisquer saídas para alterar as configurações de vídeo."
152
+Basic.Settings.Video.CurrentlyActive="A saída de vídeo está atualmente ativa. Por favor, desligue quaisquer saídas para alterar as configurações de vídeo."
153
 Basic.Settings.Video.DisableAero="Desativar Aero"
154
 
155
 Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear(rápido, mas embaçado se redimensionando)"
156
@@ -685,7 +699,8 @@
157
 Basic.Settings.Audio="Áudio"
158
 Basic.Settings.Audio.SampleRate="Taxa de Amostragem"
159
 Basic.Settings.Audio.Channels="Canais"
160
-Basic.Settings.Audio.MeterDecayRate="Taxa de Decaimento do Medidor de Áudio"
161
+Basic.Settings.Audio.Meters="Metros"
162
+Basic.Settings.Audio.MeterDecayRate="Taxa de decaimento"
163
 Basic.Settings.Audio.MeterDecayRate.Fast="Rápida"
164
 Basic.Settings.Audio.MeterDecayRate.Medium="Média (PPM Tipo I)"
165
 Basic.Settings.Audio.MeterDecayRate.Slow="Devagar (PPM Tipo II)"
166
@@ -696,9 +711,10 @@
167
 Basic.Settings.Audio.MultichannelWarning="Antes de transmitir, verifique se o seu serviço de transmissão suporta tanto receber como reproduzir som surround. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast são exemplos onde o som surround é totalmente suportado. Embora o Facebook Live e o YouTube Live ambos aceitem receber som surround, o Facebook Live transformará para estéreo e o YouTube Live reproduz apenas dois canais.\n\nOs filtros de áudio do OBS são compatíveis com o som surround, embora o suporte do plugin VST não seja garantido."
168
 Basic.Settings.Audio.MultichannelWarning.Title="Ativar o som surround?"
169
 Basic.Settings.Audio.MultichannelWarning.Confirm="Você tem certeza de que deseja habilitar o som surround?"
170
-Basic.Settings.Audio.DesktopDevice="Dispositivo de áudio do desktop"
171
-Basic.Settings.Audio.DesktopDevice2="Dispositivo de áudio do desktop 2"
172
-Basic.Settings.Audio.AuxDevice="Dispositivo de áudio/microfone auxiliar"
173
+Basic.Settings.Audio.Devices="Dispositivos"
174
+Basic.Settings.Audio.DesktopDevice="Áudio da Área de Trabalho"
175
+Basic.Settings.Audio.DesktopDevice2="Áudio da Área de Trabalho 2"
176
+Basic.Settings.Audio.AuxDevice="Dispositivo de Áudio Mic/Auxiliar"
177
 Basic.Settings.Audio.AuxDevice2="Dispositivo de áudio/microfone auxiliar 2"
178
 Basic.Settings.Audio.AuxDevice3="Dispositivo de áudio/microfone auxiliar 3"
179
 Basic.Settings.Audio.AuxDevice4="Dispositivo de áudio/microfone auxiliar 4"
180
@@ -719,11 +735,11 @@
181
 Basic.Settings.Advanced.FormatWarning="Aviso: Formatos de cor diferentes do NV12 destinam-se principalmente para gravação e não são recomendados para transmissão. Durante a transmissão pode ocorrer aumento do uso da CPU devido a conversão do formato de cor."
182
 Basic.Settings.Advanced.Audio.BufferingTime="Tempo de buffer de áudio"
183
 Basic.Settings.Advanced.Video.ColorFormat="Formato de cor"
184
-Basic.Settings.Advanced.Video.ColorSpace="Espaço de cor YUV"
185
-Basic.Settings.Advanced.Video.ColorRange="Gama de cores YUV"
186
+Basic.Settings.Advanced.Video.ColorSpace="Espaço de cor"
187
+Basic.Settings.Advanced.Video.ColorRange="Faixa de cores"
188
 Basic.Settings.Advanced.Video.ColorRange.Partial="Limitado"
189
 Basic.Settings.Advanced.Video.ColorRange.Full="Completo"
190
-Basic.Settings.Advanced.Audio.MonitoringDevice="Dispositivo de Monitoramento de Áudio"
191
+Basic.Settings.Advanced.Audio.MonitoringDevice="Dispositivo de monitoramento"
192
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Padrão"
193
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Desativar a Oscilação de Áudio do Windows"
194
 Basic.Settings.Advanced.StreamDelay="Atraso da transmissão"
195
@@ -740,7 +756,7 @@
196
 
197
 Basic.AdvAudio="Propriedades de áudio avançadas"
198
 Basic.AdvAudio.Name="Nome"
199
-Basic.AdvAudio.Volume="Volume (%)"
200
+Basic.AdvAudio.Volume="Volume"
201
 Basic.AdvAudio.Mono="Downmix para Mono"
202
 Basic.AdvAudio.Balance="Balanço"
203
 Basic.AdvAudio.SyncOffset="Atraso de sincronização (ms)"
204
@@ -816,6 +832,7 @@
205
 NoSources.Title="Sem Fontes"
206
 NoSources.Text="Parece que você ainda não adicionou nenhuma fonte de vídeo, portanto, você só exibirá uma tela em branco. Você tem certeza de que quer fazer isso?"
207
 NoSources.Text.AddSource="Você pode adicionar fontes clicando no ícone + sob a caixa de Fontes na janela principal, a qualquer momento."
208
+NoSources.Label="Você não tem nenhuma fonte.\nClique no botão + abaixo,\nou clique direito aqui para adicionar uma."
209
 
210
 ChangeBG="Definir Cor"
211
 CustomColor="Cor personalizada"
212
@@ -834,3 +851,5 @@
213
 ResizeOutputSizeOfSource.Text="As resoluções base e de saída serão redimensionadas para o tamanho da fonte atual."
214
 ResizeOutputSizeOfSource.Continue="Você quer continuar?"
215
 
216
+PreviewTransition="Prévia da Transição"
217
+
218
obs-studio-23.1.0.tar.xz/UI/data/locale/pt-PT.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/pt-PT.ini Changed
90
 
1
@@ -49,7 +49,7 @@
2
 Enable="Ativar"
3
 DisableOSXVSync="Desabilitar o OSX V-Sync"
4
 ResetOSXVSyncOnExit="Redefinir o OSX V-Sync na saída"
5
-HighResourceUsage="Codificação sobrecarregado!  Considere diminuir a configurações de vídeo ou usar uma predefinição mais rápido de codificação."
6
+HighResourceUsage="Codificação sobrecarregado! Considere diminuir a configurações de vídeo ou usar uma predefinição mais rápido de codificação."
7
 Transition="Transição"
8
 QuickTransitions="Transições rápidas"
9
 Left="Esquerda"
10
@@ -250,13 +250,15 @@
11
 Output.StartReplayFailed="Falha ao iniciar o buffer de repetição"
12
 Output.StartFailedGeneric="Falha ao iniciar o output. Verifica o log para mais detalhes.\n\nNota: Se estás a usar codificadores NVENC ou AMD, certifica-te de que os drivers da placa gráfica estão atualizados."
13
 
14
+
15
 Output.ConnectFail.Title="Falha ao ligar"
16
 Output.ConnectFail.BadPath="Caminho ou endereço de ligação inválido. Por favor, verifique as suas definições para confirmar que são válidas."
17
 Output.ConnectFail.ConnectFailed="Falhou a ligação ao servidor"
18
-Output.ConnectFail.InvalidStream="Não foi possível acessar o canal especificado ou chave de transmissão, por favor ré-verifique a sua chave de transmissão.  Se é correto, pode haver um problema de conexão com o servidor."
19
+Output.ConnectFail.InvalidStream="Não foi possível acessar o canal especificado ou chave de transmissão, por favor ré-verifique a sua chave de transmissão. Se é correto, pode haver um problema de conexão com o servidor."
20
 Output.ConnectFail.Error="Ocurreu um erro inesperado ao ligar-se ao servidor. Mais informação no ficheiro Log."
21
 Output.ConnectFail.Disconnected="Desligado do servidor."
22
 
23
+
24
 Output.RecordFail.Title="Não foi possível iniciar a gravação"
25
 Output.RecordFail.Unsupported="O formato de saída ou não é suportado ou não suporta mais do que uma faixa de áudio. Por favor, verifique as suas definições e tente novamente."
26
 Output.RecordNoSpace.Title="Espaço em disco insuficiente"
27
@@ -292,7 +294,7 @@
28
 Remux.HelpText="Arrasta ficheiros para esta janela para fazer remux, ou selectiona uma célula \"Gravação do OBS\" vazia para procurar por um ficheiro."
29
 
30
 UpdateAvailable="Nova atualização disponível"
31
-UpdateAvailable.Text="Versão %1.%2.%3 está agora disponível.  <a href='%4'>Clique aqui para descarregar</a>"
32
+UpdateAvailable.Text="Versão %1.%2.%3 está agora disponível. <a href='%4'>Clique aqui para descarregar</a>"
33
 
34
 Basic.DesktopDevice1="Desktop Audio"
35
 Basic.DesktopDevice2="Desktop Audio 2"
36
@@ -306,6 +308,7 @@
37
 
38
 Basic.Main.PreviewConextMenu.Enable="Ativar pré-visualização"
39
 
40
+
41
 ScaleFiltering="Filtragem de escala"
42
 ScaleFiltering.Point="Ponto"
43
 ScaleFiltering.Bilinear="Bilinear"
44
@@ -685,7 +688,6 @@
45
 Basic.Settings.Audio="Áudio"
46
 Basic.Settings.Audio.SampleRate="Frequência de Samplagem"
47
 Basic.Settings.Audio.Channels="Canias"
48
-Basic.Settings.Audio.MeterDecayRate="Taxa de Decaimento do Medidor de Áudio"
49
 Basic.Settings.Audio.MeterDecayRate.Fast="Rápido"
50
 Basic.Settings.Audio.MeterDecayRate.Medium="Médio (Tipo I PPM)"
51
 Basic.Settings.Audio.MeterDecayRate.Slow="Lento (Tipo II PPM)"
52
@@ -696,12 +698,6 @@
53
 Basic.Settings.Audio.MultichannelWarning="Se transmitir, verifique se o seu serviço de transmissão suporta tanto ingestão de áudio surround como playback de áudio surround. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast são exemplos onde o áudio surround é totalmente suportado. Embora o Facebook Live e o YouTube Live aceitem os dois ingestão de áudio surround, o Facebook Live transforma-o em stereo, e o YouTube Live só toca dois canais.\n\nOs filtros de áudio do OBS são compatíveis com áudio surround, embora não esteja garantido o suporte para plugins VST."
54
 Basic.Settings.Audio.MultichannelWarning.Title="Ativar audio surround?"
55
 Basic.Settings.Audio.MultichannelWarning.Confirm="Tem a certeza que quer ativar audio surround?"
56
-Basic.Settings.Audio.DesktopDevice="Desktop Audio Device"
57
-Basic.Settings.Audio.DesktopDevice2="Desktop Audio Device 2"
58
-Basic.Settings.Audio.AuxDevice="Dispositivo de Áudio Mic/Auxiliar"
59
-Basic.Settings.Audio.AuxDevice2="Dispositivo de Áudio Mic/Auxiliar 2"
60
-Basic.Settings.Audio.AuxDevice3="Dispositivo de Áudio Mic/Auxiliar 3"
61
-Basic.Settings.Audio.AuxDevice4="Dispositivo de Áudio Mic/Auxiliar 4"
62
 Basic.Settings.Audio.EnablePushToMute="Ativar o push-to-mute"
63
 Basic.Settings.Audio.PushToMuteDelay="Atrado do push-to-mute"
64
 Basic.Settings.Audio.EnablePushToTalk="Ativar o push-to-talk"
65
@@ -719,11 +715,8 @@
66
 Basic.Settings.Advanced.FormatWarning="Aviso: Formatos de cor diferentes de NV12 destinam-se principalmente a gravação e não são recomendados durante a transmissão. A transmissão pode incorrer numa maior utilização do processador devido à conversão do formato de cor."
67
 Basic.Settings.Advanced.Audio.BufferingTime="Tempo de carregamento do áudio"
68
 Basic.Settings.Advanced.Video.ColorFormat="Formato de cor"
69
-Basic.Settings.Advanced.Video.ColorSpace="Espaço de cor YUV"
70
-Basic.Settings.Advanced.Video.ColorRange="Gama de cor YUV"
71
 Basic.Settings.Advanced.Video.ColorRange.Partial="Parcial"
72
 Basic.Settings.Advanced.Video.ColorRange.Full="Total"
73
-Basic.Settings.Advanced.Audio.MonitoringDevice="Dispositivo de monitorização de audio"
74
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Predefinição"
75
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Desativar o ducking de audio do Windows"
76
 Basic.Settings.Advanced.StreamDelay="Atraso na trasmissão"
77
@@ -740,7 +733,6 @@
78
 
79
 Basic.AdvAudio="Propriedades avançadas de áudio"
80
 Basic.AdvAudio.Name="Nome"
81
-Basic.AdvAudio.Volume="Volume (%)"
82
 Basic.AdvAudio.Mono="Diminuir para mono"
83
 Basic.AdvAudio.Balance="Equilíbrio"
84
 Basic.AdvAudio.SyncOffset="Atraso de sincronização (ms)"
85
@@ -833,3 +825,4 @@
86
 ResizeOutputSizeOfSource.Text="As resoluções base e de output serão redimensionadas para o tamanho da fonte atual."
87
 ResizeOutputSizeOfSource.Continue="Deseja continuar?"
88
 
89
+
90
obs-studio-23.1.0.tar.xz/UI/data/locale/ro-RO.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ro-RO.ini Changed
333
 
1
@@ -48,7 +48,7 @@
2
 Enable="Activează"
3
 DisableOSXVSync="Dezactivează V-Sync în OSX"
4
 ResetOSXVSyncOnExit="Resetează V-Sync în OSX la ieșire"
5
-HighResourceUsage="Codificare supraîncărcată!  Ia în considerare reducerea setărilor video sau folosirea unei presetări de codare mai rapidă."
6
+HighResourceUsage="Codificare supraîncărcată! Ia în considerare reducerea setărilor video sau folosirea unei presetări de codare mai rapidă."
7
 Transition="Tranziție"
8
 QuickTransitions="Tranziții rapide"
9
 Left="Stânga"
10
@@ -59,7 +59,7 @@
11
 Hours="Ore"
12
 Minutes="Minute"
13
 Seconds="Secunde"
14
-Deprecated="Invechit"
15
+Deprecated="Obsolet"
16
 ReplayBuffer="Reluare Buffer"
17
 Import="Importă"
18
 Export="Exportă"
19
@@ -89,6 +89,7 @@
20
 Auth.Authing.Title="Se autentifică..."
21
 Auth.Authing.Text="Se autentifică cu %1, te rugăm să aștepți..."
22
 Auth.AuthFailure.Title="Eșec la autentificare"
23
+Auth.InvalidScope.Title="Autentificare necesară"
24
 Auth.LoadingChannel.Title="Se încarcă informațiile canalului..."
25
 Auth.LoadingChannel.Text="Se încarcă informațiile canalului pentru %1, te rugăm să aștepți..."
26
 Auth.ChannelFailure.Title="Eșec la încărcarea canalului"
27
@@ -96,6 +97,7 @@
28
 Auth.Chat="Chat"
29
 Auth.StreamInfo="Informații privind transmisiunea"
30
 TwitchAuth.Stats="Statistici Twitch"
31
+TwitchAuth.Feed="Fluxul activității Twitch"
32
 
33
 Copy.Filters="Copiază filtrele"
34
 Paste.Filters="Lipește filtrele"
35
@@ -131,7 +133,7 @@
36
 Basic.AutoConfig.StreamPage.ConnectAccount="Conectează un cont (opțional)"
37
 Basic.AutoConfig.StreamPage.DisconnectAccount="Deconectează contul"
38
 Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Title="Deconectezi contul?"
39
-Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="Această modificare se va aplica imediat.  Ești sigur că vrei să deconectezi contul?"
40
+Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="Această modificare se va aplica imediat. Ești sigur că vrei să deconectezi contul?"
41
 Basic.AutoConfig.StreamPage.UseStreamKey="Folosește cheia de transmisiune"
42
 Basic.AutoConfig.StreamPage.Service="Serviciu"
43
 Basic.AutoConfig.StreamPage.Service.ShowAll="Afișează toate..."
44
@@ -139,18 +141,18 @@
45
 Basic.AutoConfig.StreamPage.Server="Server"
46
 Basic.AutoConfig.StreamPage.StreamKey="Cheie de transmisiune"
47
 Basic.AutoConfig.StreamPage.StreamKey.LinkToSite="(Link)"
48
-Basic.AutoConfig.StreamPage.PerformBandwidthTest="Estimează rata de biți cu un test al lățimii de bandă (poate dura câteva minute)"
49
+Basic.AutoConfig.StreamPage.PerformBandwidthTest="Estimează rata de biți cu o testare a lățimii de bandă (poate dura câteva minute)"
50
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Preferă codificarea hardware"
51
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Codificarea hardware elimină cea mai mare parte a utilizării CPU, însă ar putea avea nevoie de o rată de biți mai mare pentru a obține același nivel de calitate."
52
 Basic.AutoConfig.StreamPage.StreamWarning.Title="Avertizare transmisie"
53
-Basic.AutoConfig.StreamPage.StreamWarning.Text="Testul lățimii de bandă este pe cale să transmită semnal video aleator fără audio către canalul tău. Dacă ai posibilitatea, e recomandat să oprești temporar salvarea video-urilor transmisiilor și să setezi transmisia privată până când testul se încheie. Continui?"
54
+Basic.AutoConfig.StreamPage.StreamWarning.Text="Testarea lățimii de bandă este pe cale să transmită date video aleatorii fără audio către canalul tău. Dacă ai posibilitatea, este recomandat să oprești temporar salvarea videoclipurilor transmisiunilor și să setezi transmisiunea pe privat până la încheierea testării. Continui?"
55
 Basic.AutoConfig.TestPage="Rezultate finale"
56
 Basic.AutoConfig.TestPage.SubTitle.Testing="Programul rulează acum o serie de teste pentru identificarea setărilor ideale"
57
 Basic.AutoConfig.TestPage.SubTitle.Complete="Testare completă"
58
-Basic.AutoConfig.TestPage.TestingBandwidth="Execut testul lățimii de banda, poate dura câteva minute..."
59
-Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Conectare la %1..."
60
-Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Nu s-a putut realiza conexiune către niciun server, Verificați conexiunea la Internet și încercați din nou."
61
-Basic.AutoConfig.TestPage.TestingBandwidth.Server="Testare lățime de bandă pentru: %1"
62
+Basic.AutoConfig.TestPage.TestingBandwidth="Se efectuează testarea lățimii de bandă, acest lucru poate dura câteva minute..."
63
+Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Se conectează la: %1..."
64
+Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Nu s-a putut conecta la niciun server. Te rugăm să verifici conexiunea la Internet și să încerci din nou."
65
+Basic.AutoConfig.TestPage.TestingBandwidth.Server="Se testează lățimea de bandă pentru: %1"
66
 Basic.AutoConfig.TestPage.TestingStreamEncoder="Testare encoder transmisie, poate dura câteva minute..."
67
 Basic.AutoConfig.TestPage.TestingRecordingEncoder="Testare encoder înregistrare, poate dura câteva minute..."
68
 Basic.AutoConfig.TestPage.TestingRes="Testare rezoluții, aceasta ar putea dura câteva minute..."
69
@@ -159,7 +161,7 @@
70
 Basic.AutoConfig.TestPage.Result.StreamingEncoder="Codificator pentru transmisiune"
71
 Basic.AutoConfig.TestPage.Result.RecordingEncoder="Codificator pentru înregistrare"
72
 Basic.AutoConfig.TestPage.Result.Header="Programul a determinat că următoarele setări sunt cele mai potrivite:"
73
-Basic.AutoConfig.TestPage.Result.Footer="Pentru a folosi aceste setări, dă clic pe Aplică setările.  Pentru a reconfigura și a încerca din nou, dă clic pe Înapoi.  Pentru a configura manual setările, apasă Anulează și deschide Setările."
74
+Basic.AutoConfig.TestPage.Result.Footer="Pentru a folosi aceste setări, dă clic pe Aplică setările. Pentru a reconfigura și a încerca din nou, dă clic pe Înapoi. Pentru a configura manual setările, apasă Anulează și deschide Setările."
75
 
76
 Basic.Stats="Statistici"
77
 Basic.Stats.CPUUsage="Utilizare CPU"
78
@@ -222,26 +224,30 @@
79
 ConfirmStop.Title="Oprești streamul?"
80
 ConfirmStop.Text="Sigur vrei să oprești transmisiunea?"
81
 
82
+ConfirmBWTest.Title="Începi testarea pentru lățimea de bandă?"
83
+ConfirmBWTest.Text="Ai configurat OBS în modul de testare a lățimii de bandă. Acest mod permite testarea rețelei fără să transmiți live pe canal. Odată ce ai terminat testarea, va trebui să îl dezactivezi pentru ca spectatorii să îți poată vedea transmisiunea.\n\nVrei să continui?"
84
 
85
 ConfirmExit.Title="Ieși din OBS?"
86
-ConfirmExit.Text="OBS este în prezent activ.  Toate transmisiunile/înregistrările vor fi închise.  Sigur dorești să ieși?"
87
+ConfirmExit.Text="OBS este în prezent activ. Toate transmisiunile/înregistrările vor fi închise. Sigur vrei să ieși?"
88
 
89
 ConfirmRemove.Title="Confirmă eliminarea"
90
-ConfirmRemove.Text="Sigur dorești să elimini „$1”?"
91
+ConfirmRemove.Text="Sigur vrei să elimini „$1”?"
92
 ConfirmRemove.TextMultiple="Sigur doriți sa eliminați %1 obiecte?"
93
 
94
 Output.StartStreamFailed="Pornirea transmisiunii a eșuat"
95
 Output.StartRecordingFailed="Pornirea înregistrării a eșuat"
96
 
97
+
98
 Output.ConnectFail.Title="Eșec la conectare"
99
-Output.ConnectFail.BadPath="URL-ul conexiunii sau calea este invalidă.  Te rugăm să verifici setările pentru a confirma că acestea sunt valide."
100
+Output.ConnectFail.BadPath="URL-ul conexiunii sau calea este invalidă. Te rugăm să verifici setările pentru a confirma că acestea sunt valide."
101
 Output.ConnectFail.ConnectFailed="Nu se poate conecta la server"
102
-Output.ConnectFail.InvalidStream="Nu a putut fi accesat canalul sau cheia de transmisiune specificată, te rugăm să verifici cheia de transmisiune.  Dacă aceasta este corectă, poate fi o problemă cu conectarea la server."
103
-Output.ConnectFail.Error="Eroare neașteptată la încercarea de a conecta la server.  Mai multe informaţii în fişierul jurnal."
104
+Output.ConnectFail.InvalidStream="Nu a putut fi accesat canalul sau cheia de transmisiune specificată, te rugăm să verifici cheia de transmisiune. Dacă aceasta este corectă, poate fi o problemă cu conectarea la server."
105
+Output.ConnectFail.Error="Eroare neașteptată la încercarea de a conecta la server. Mai multe informaţii în fişierul jurnal."
106
 Output.ConnectFail.Disconnected="Deconectat de la server."
107
 
108
+
109
 Output.RecordFail.Title="Eșec la pornirea înregistrării"
110
-Output.RecordFail.Unsupported="Formatul de ieşire este fie nesuportat, fie nu suportă mai mult de o pistă audio.  Te rugăm să verifici setările şi să încerci din nou."
111
+Output.RecordFail.Unsupported="Formatul de ieşire este fie nesuportat, fie nu suportă mai mult de o pistă audio. Te rugăm să verifici setările şi să încerci din nou."
112
 Output.RecordNoSpace.Title="Spațiu insuficient pe disc"
113
 Output.RecordNoSpace.Msg="Nu există spațiu suficient pe disc pentru a continua înregistrarea."
114
 Output.RecordError.Title="Eroare de înregistrare"
115
@@ -249,7 +255,7 @@
116
 Output.ReplayBuffer.NoHotkey.Title="Nicio tastă rapidă setată!"
117
 
118
 Output.BadPath.Title="Calea fișierului greșită"
119
-Output.BadPath.Text="Calea de ieşire pentru fişiere invalidă.  Vă rugăm să verificaţi setările pentru a confirma că s-a stabilit o cale de fişier validă."
120
+Output.BadPath.Text="Calea de ieşire pentru fişiere invalidă. Vă rugăm să verificaţi setările pentru a confirma că s-a stabilit o cale de fişier validă."
121
 
122
 LogReturnDialog="Jurnal incărcat cu succes"
123
 LogReturnDialog.CopyURL="Copiază URL-ul"
124
@@ -259,22 +265,24 @@
125
 Remux.TargetFile="Fișier țintă"
126
 Remux.Remux="Remux"
127
 Remux.Stop="Oprește remuxarea"
128
-Remux.ClearFinished="Șterge elementele terminate"
129
+Remux.ClearFinished="Șterge elementele finalizate"
130
 Remux.ClearAll="Șterge toate elementele"
131
 Remux.OBSRecording="Înregistrare OBS"
132
 Remux.FinishedTitle="Remuxing încheiat"
133
 Remux.Finished="Înregistrare remuxată"
134
 Remux.FinishedError="Înregistrare remuxată, însă fișierul poate fi incomplet"
135
+Remux.SelectRecording="Selectează înregistrarea OBS..."
136
 Remux.FileExistsTitle="Fișierele țintă există deja"
137
 Remux.FileExists="Fișierele deja exista. Vreți să le înlocuiți?"
138
 Remux.ExitUnfinishedTitle="Remuxing în desfășurare"
139
 Remux.ExitUnfinished="Remuxingul nu este încheiat, oprirea în acest moment poate face fișierul țintă inutilizabil.\nSigur vrei să oprești remuxingul?"
140
+Remux.HelpText="Plasează fișierele în această fereastră pentru a remuxa ori selectează o celulă „Înregistrare OBS” goală pentru a răsfoi un fișier."
141
 
142
 UpdateAvailable="Actualizare nouă disponibilă"
143
-UpdateAvailable.Text="Versiunea %1.%2.%3 este acum disponibilă.  <a href='%4'> Clic aici pentru a descărca</a>"
144
+UpdateAvailable.Text="Versiunea %1.%2.%3 este acum disponibilă. <a href='%4'> Clic aici pentru a descărca</a>"
145
 
146
-Basic.DesktopDevice1="Desktop audio"
147
-Basic.DesktopDevice2="Desktop audio 2"
148
+Basic.DesktopDevice1="Audio desktop"
149
+Basic.DesktopDevice2="Audio desktop 2"
150
 Basic.AuxDevice1="Microfon/Aux"
151
 Basic.AuxDevice2="Microfon/Aux 2"
152
 Basic.AuxDevice3="Microfon/Aux 3"
153
@@ -285,6 +293,7 @@
154
 
155
 Basic.Main.PreviewConextMenu.Enable="Activează previzualizarea"
156
 
157
+
158
 ScaleFiltering.Point="Punct"
159
 ScaleFiltering.Bilinear="Biliniar"
160
 ScaleFiltering.Bicubic="Bicubic"
161
@@ -323,11 +332,11 @@
162
 Basic.Main.MixerRename.Text="Te rugăm să introduci numele sursei audio"
163
 
164
 
165
-Basic.Main.PreviewDisabled="Previzualizarea este în prezent dezactivată"
166
+Basic.Main.PreviewDisabled="Previzualizarea este dezactivată în prezent"
167
 
168
 Basic.SourceSelect="Creează/Selectează sursa"
169
-Basic.SourceSelect.CreateNew="Creează nouă"
170
-Basic.SourceSelect.AddExisting="Adaugă existentă"
171
+Basic.SourceSelect.CreateNew="Creează una nouă"
172
+Basic.SourceSelect.AddExisting="Adaugă una existentă"
173
 Basic.SourceSelect.AddVisible="Fă sursa vizibilă"
174
 
175
 Basic.PropertiesWindow="Proprietăți pentru '%1'"
176
@@ -335,7 +344,7 @@
177
 Basic.PropertiesWindow.SelectColor="Selectează culoarea"
178
 Basic.PropertiesWindow.SelectFont="Selectează fontul"
179
 Basic.PropertiesWindow.ConfirmTitle="Setări schimbate"
180
-Basic.PropertiesWindow.Confirm="Există modificări nesalvate.  Vrei să le păstrezi?"
181
+Basic.PropertiesWindow.Confirm="Există modificări nesalvate. Vrei să le păstrezi?"
182
 Basic.PropertiesWindow.NoProperties="Nicio proprietate disponibilă"
183
 Basic.PropertiesWindow.AddFiles="Adaugă fișiere"
184
 Basic.PropertiesWindow.AddDir="Adaugă un director"
185
@@ -410,6 +419,7 @@
186
 Basic.Main.StoppingStreaming="Se oprește transmisiunea..."
187
 Basic.Main.ForceStopStreaming="Oprește transmisiunea (renunță la întârziere)"
188
 Basic.Main.GroupItems="Grupează elementele selectate"
189
+Basic.Main.Ungroup="Anulează grupul"
190
 
191
 Basic.MainMenu.File="&Fișier"
192
 Basic.MainMenu.File.Export="&Exportă"
193
@@ -434,6 +444,7 @@
194
 Basic.MainMenu.Edit.Transform="&Transformare"
195
 Basic.MainMenu.Edit.Transform.EditTransform="&Editează transformarea..."
196
 Basic.MainMenu.Edit.Transform.CopyTransform="Copiază transformarea"
197
+Basic.MainMenu.Edit.Transform.PasteTransform="Lipește transformarea"
198
 Basic.MainMenu.Edit.Transform.ResetTransform="&Resetează transformarea"
199
 Basic.MainMenu.Edit.Transform.Rotate90CW="Rotește la 90° (în sensul acelor ceasornicului)"
200
 Basic.MainMenu.Edit.Transform.Rotate90CCW="Rotește la 90° (în sensul contrar acelor ceasornicului)"
201
@@ -467,6 +478,7 @@
202
 Basic.MainMenu.SceneCollection.Import="Importă colecție de scene"
203
 Basic.MainMenu.SceneCollection.Export="Exportă colecție de scene"
204
 Basic.MainMenu.Profile.Exists="Profilul există deja"
205
+Basic.MainMenu.SceneCollection.Exists="Colecția de scene există deja"
206
 
207
 Basic.MainMenu.Tools="Unel&te"
208
 
209
@@ -487,7 +499,7 @@
210
 
211
 Basic.Settings.ProgramRestart="Programul trebuie repornit pentru ca aceste setări să aibă efect."
212
 Basic.Settings.ConfirmTitle="Confirmă modificările"
213
-Basic.Settings.Confirm="Ai modificări nesalvate.  Salvezi modificările?"
214
+Basic.Settings.Confirm="Ai modificări nesalvate. Salvezi modificările?"
215
 
216
 Basic.Settings.General="Generale"
217
 Basic.Settings.General.Theme=" Temă"
218
@@ -517,6 +529,7 @@
219
 
220
 Basic.Settings.Stream="Transmisiune"
221
 Basic.Settings.Stream.StreamType="Tipul transmisiunii"
222
+Basic.Settings.Stream.BandwidthTestMode="Activează modul de testare a lățimii de bandă"
223
 
224
 Basic.Settings.Output="Ieșire"
225
 Basic.Settings.Output.Format="Format de înregistrare"
226
@@ -528,6 +541,7 @@
227
 Basic.Settings.Output.Mode.Simple="Simplu"
228
 Basic.Settings.Output.Mode.Adv="Avansat"
229
 Basic.Settings.Output.Mode.FFmpeg="Ieșire FFmpeg"
230
+Basic.Settings.Output.ReplayBuffer.MegabytesMax="Memorie maximă (megabyți)"
231
 Basic.Settings.Output.ReplayBuffer.Estimate="Utilizare estimată a memoriei: %1 MB"
232
 Basic.Settings.Output.ReplayBuffer.Suffix="Sufix"
233
 Basic.Settings.Output.Simple.SavePath="Cale de înregistrare"
234
@@ -536,10 +550,10 @@
235
 Basic.Settings.Output.Simple.RecordingQuality.Small="Calitate înaltă, dimensiune medie pentru fișiere"
236
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Calitate imposibil de distins, dimensiune mare pentru fișiere"
237
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Calitate lossless, dimensiune extrem de mare pentru fișiere"
238
-Basic.Settings.Output.Simple.Warn.VideoBitrate="Avertisment: Rata de biți a transmisiei video va fi setată la %1, care este limita superioară pentru serviciul de transmisiune actual.  Dacă ești sigur că vrei să depășești %1, activează opțiunile avansate ale codificatorului și debifează „Impune limitele ratei de biți pentru serviciul de transmisiune”."
239
-Basic.Settings.Output.Simple.Warn.AudioBitrate="Avertisment: Rata de biți a transmisiei audio va fi setată la %1, care este limita superioară pentru serviciul de transmisiune actual.  Dacă ești sigur că vrei să depășești %1, activează opțiunile avansate ale codificatorului și debifează „Impune limitele ratei de biți pentru serviciul de transmisiune”."
240
+Basic.Settings.Output.Simple.Warn.VideoBitrate="Avertisment: Rata de biți a transmisiei video va fi setată la %1, care este limita superioară pentru serviciul de transmisiune actual. Dacă ești sigur că vrei să depășești %1, activează opțiunile avansate ale codificatorului și debifează „Impune limitele ratei de biți pentru serviciul de transmisiune”."
241
+Basic.Settings.Output.Simple.Warn.AudioBitrate="Avertisment: Rata de biți a transmisiei audio va fi setată la %1, care este limita superioară pentru serviciul de transmisiune actual. Dacă ești sigur că vrei să depășești %1, activează opțiunile avansate ale codificatorului și debifează „Impune limitele ratei de biți pentru serviciul de transmisiune”."
242
 Basic.Settings.Output.Simple.Warn.Encoder="Avertisment: Înregistrarea cu un codificator software la o calitate diferită de cea a transmisiunii va necesita o utilizare CPU crescută dacă transmiți şi înregistrezi în același timp."
243
-Basic.Settings.Output.Simple.Warn.Lossless="Avertisment: Calitatea lossless generează dimensiuni extrem de mari de fișiere!  Calitatea lossless poate folosi până la 7GB spațiu de disc per minut la frecvențe de cadre și rezoluții ridicate. Lossless nu este recomandat pentru înregistrări lungi decât dacă ai o cantitate foarte mare de spațiu disponibil pe disc."
244
+Basic.Settings.Output.Simple.Warn.Lossless="Avertisment: Calitatea lossless generează dimensiuni extrem de mari de fișiere! Calitatea lossless poate folosi până la 7GB spațiu de disc per minut la frecvențe de cadre și rezoluții ridicate. Lossless nu este recomandat pentru înregistrări lungi decât dacă ai o cantitate foarte mare de spațiu disponibil pe disc."
245
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Sigur vrei să folosești calitatea lossless?"
246
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Avertizare privind calitatea lossless!"
247
 Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
248
@@ -614,8 +628,8 @@
249
 Basic.Settings.Video.Numerator="Numărător"
250
 Basic.Settings.Video.Denominator="Numitor"
251
 Basic.Settings.Video.Renderer="Renderer"
252
-Basic.Settings.Video.InvalidResolution="Valoare invalidă pentru rezoluție.  Trebuie să fie [lățime]x[înălțime] (de ex., 1920x1080)"
253
-Basic.Settings.Video.CurrentlyActive="Ieşirea video este în prezent activă.  Vă rugăm să opriţi orice ieşiri pentru a schimba setările video."
254
+Basic.Settings.Video.InvalidResolution="Valoare invalidă pentru rezoluție. Trebuie să fie [lățime]x[înălțime] (de ex., 1920x1080)"
255
+Basic.Settings.Video.CurrentlyActive="Ieşirea video este în prezent activă. Vă rugăm să opriţi orice ieşiri pentru a schimba setările video."
256
 Basic.Settings.Video.DisableAero="Dezactivează Aero"
257
 
258
 Basic.Settings.Video.DownscaleFilter.Bilinear="Biliniar (Cel mai rapid, dar neclar în cazul scalării)"
259
@@ -625,20 +639,17 @@
260
 Basic.Settings.Audio="Audio"
261
 Basic.Settings.Audio.SampleRate="Rată de eșantionare"
262
 Basic.Settings.Audio.Channels="Canale"
263
-Basic.Settings.Audio.MeterDecayRate="Rată de atenuare audiometrică"
264
 Basic.Settings.Audio.MeterDecayRate.Fast="Rapidă"
265
 Basic.Settings.Audio.MeterDecayRate.Medium="Medie (Type I PPM)"
266
 Basic.Settings.Audio.MeterDecayRate.Slow="Lentă (Type II PPM)"
267
-Basic.Settings.Audio.DesktopDevice="Dispozitiv audio desktop"
268
-Basic.Settings.Audio.DesktopDevice2="Dispozitiv audio desktop 2"
269
-Basic.Settings.Audio.AuxDevice="Dispozitiv audio microfon/auxiliar"
270
-Basic.Settings.Audio.AuxDevice2="Dispozitiv audio microfon/auxiliar 2"
271
-Basic.Settings.Audio.AuxDevice3="Dispozitiv audio microfon/auxiliar 3"
272
+Basic.Settings.Audio.DesktopDevice="Audio desktop"
273
+Basic.Settings.Audio.DesktopDevice2="Audio desktop 2"
274
 Basic.Settings.Audio.EnablePushToMute="Activează push-to-mute"
275
 Basic.Settings.Audio.PushToMuteDelay="Întârziere la push-to-mute"
276
 Basic.Settings.Audio.EnablePushToTalk="Activează push-to-talk"
277
 Basic.Settings.Audio.PushToTalkDelay="Întârziere la push-to-talk"
278
 Basic.Settings.Audio.UnknownAudioDevice="[Dispozitiv neconectat sau indisponibil]"
279
+Basic.Settings.Audio.Disabled="Dezactivat"
280
 
281
 Basic.Settings.Advanced="Avansate"
282
 Basic.Settings.Advanced.General.ProcessPriority="Prioritatea procesului"
283
@@ -648,13 +659,10 @@
284
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Sub normal"
285
 Basic.Settings.Advanced.General.ProcessPriority.Idle="Inactiv"
286
 Basic.Settings.Advanced.FormatWarning="Atentie: Formatele de culori diferite de NV12 sunt facute pentru inregistrare si nu sunt recomandate in cazul streaming-ului. Streaming-ul e posibil sa ceara mai multe resurse CPU datorita conversiei formatului culorii."
287
-Basic.Settings.Advanced.Audio.BufferingTime="Timp de buffering pentru audio"
288
+Basic.Settings.Advanced.Audio.BufferingTime="Timp pentru zona tampon audio"
289
 Basic.Settings.Advanced.Video.ColorFormat="Format de culori"
290
-Basic.Settings.Advanced.Video.ColorSpace="Spațiu de culori YUV"
291
-Basic.Settings.Advanced.Video.ColorRange="Gamă de culori YUV"
292
 Basic.Settings.Advanced.Video.ColorRange.Partial="Parțială"
293
 Basic.Settings.Advanced.Video.ColorRange.Full="Completă"
294
-Basic.Settings.Advanced.Audio.MonitoringDevice="Dispozitiv de monitorizare audio"
295
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Implicit"
296
 Basic.Settings.Advanced.StreamDelay="Întârziere pentru transmisiune"
297
 Basic.Settings.Advanced.StreamDelay.Duration="Durată (secunde)"
298
@@ -662,13 +670,14 @@
299
 Basic.Settings.Advanced.StreamDelay.MemoryUsage="Utilizare estimată a memoriei: %1 MB"
300
 Basic.Settings.Advanced.Network="Rețea"
301
 Basic.Settings.Advanced.Network.BindToIP="Leagă de IP"
302
+Basic.Settings.Advanced.Network.EnableNewSocketLoop="Activează noul cod pentru rețea"
303
 Basic.Settings.Advanced.Network.EnableLowLatencyMode="Mod de latență redusă"
304
+Basic.Settings.Advanced.Hotkeys.DisableHotkeysInFocus="Dezactivează tastele rapide când fereastra principală este în prim-plan"
305
 Basic.Settings.Advanced.AutoRemux="Remuxează automat în mp4"
306
 Basic.Settings.Advanced.AutoRemux.MP4="(înregistrează ca mkv)"
307
 
308
 Basic.AdvAudio="Proprietăți audio avansate"
309
 Basic.AdvAudio.Name="Nume"
310
-Basic.AdvAudio.Volume="Volum (%)"
311
 Basic.AdvAudio.Mono="Transformă în mono"
312
 Basic.AdvAudio.Balance="Balans"
313
 Basic.AdvAudio.SyncOffset="Decalajul sincronizării (ms)"
314
@@ -736,10 +745,13 @@
315
 OutputWarnings.NoTracksSelected="Trebuie să selectezi cel puțin o pistă"
316
 OutputWarnings.MultiTrackRecording="Atenție: Anumite formate (precum FLV) nu suportă multiple piste per înregistrare"
317
 
318
+FinalScene.Title="Șterge scena"
319
 FinalScene.Text="Trebuie să existe cel puțin o scenă."
320
 
321
 
322
+ChangeBG="Setează culoarea"
323
 
324
+BrowserSource.EnableHardwareAcceleration="Activează accelerarea hardware pentru Browser Source"
325
 
326
 About="Despre"
327
 About.Info="OBS Studio este un program gratuit și cu sursă deschisă de înregistrare video și transmisiune live."
328
@@ -750,3 +762,4 @@
329
 About.Contribute="Sprijină proiectul OBS"
330
 
331
 
332
+
333
obs-studio-23.1.0.tar.xz/UI/data/locale/ru-RU.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ru-RU.ini Changed
162
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Вертикальное расположение"
3
 Group="Группа"
4
 DoNotShowAgain="Не показывать снова"
5
+Default="(По умолчанию)"
6
+Calculating="Расчёт..."
7
 
8
 AlreadyRunning.Title="OBS уже запущен"
9
 AlreadyRunning.Text="OBS уже запущен! Пожалуйста, закройте все запущенные экземпляры OBS перед попыткой запустить новые (только если вы не хотели именно этого). Если вы настроили OBS на сворачивание в системный трей, пожалуйста, проверьте, возможно он до сих пор запущен."
10
@@ -103,6 +105,8 @@
11
 Auth.StreamInfo="Информация о трансляции"
12
 TwitchAuth.Stats="Статистика Twitch"
13
 TwitchAuth.Feed="Лента активности Twitch"
14
+TwitchAuth.TwoFactorFail.Title="Не удалось запросить ключ трансляции"
15
+TwitchAuth.TwoFactorFail.Text="Невозможно подключиться к учётной записи Twitch. Пожалуйста, убедитесь, что в <a href='https://www.twitch.tv/settings/security'>настройках безопасности</a> включена и настроена двухфакторная аутентификация."
16
 
17
 Copy.Filters="Копировать фильтры"
18
 Paste.Filters="Вставить фильтры"
19
@@ -185,6 +189,7 @@
20
 Basic.Stats.DroppedFrames="Пропущенные кадры (Сеть)"
21
 Basic.Stats.MegabytesSent="Данных отправлено"
22
 Basic.Stats.Bitrate="Битрейт"
23
+Basic.Stats.DiskFullIn="Диск заполнится (около)"
24
 
25
 ResetUIWarning.Title="Вы уверены, что хотите сбросить пользовательский интерфейс?"
26
 ResetUIWarning.Text="Сброс пользовательского интерфейса скроет дополнительные док-панели. Если вы хотите чтобы эти панели были видимыми, вам нужно будет отметить их в меню Вид.\n\nВы уверены, что хотите сбросить пользовательский интерфейс?"
27
@@ -250,6 +255,7 @@
28
 Output.StartReplayFailed="Не удалось запустить воспроизведение из буфера"
29
 Output.StartFailedGeneric="Сбой вывода. Подробности отражены в журнале.\n\nПримечание: Если вы используете кодировщики NVENC или AMD, убедитесь что у вас установлена последняя версия видеорайвера."
30
 
31
+
32
 Output.ConnectFail.Title="Не удалось подключиться"
33
 Output.ConnectFail.BadPath="Неверный путь или URL соединения. Пожалуйста, проверьте настройки, чтобы подтвердить, что они являются действительными."
34
 Output.ConnectFail.ConnectFailed="Не удалось подключиться к серверу"
35
@@ -257,17 +263,21 @@
36
 Output.ConnectFail.Error="Произошла непредвиденная ошибка при попытке подключиться к серверу. Более подробная информация в лог-файле."
37
 Output.ConnectFail.Disconnected="Отключен от сервера."
38
 
39
+Output.StreamEncodeError.Title="Ошибка кодирования"
40
+Output.StreamEncodeError.Msg="Произошла ошибка кодировщика во время трансляции."
41
+
42
 Output.RecordFail.Title="Не удалось начать запись"
43
 Output.RecordFail.Unsupported="Выходной формат либо не поддерживается, либо не поддерживает более одной звуковой дорожки. Пожалуйста, проверьте настройки и повторите попытку."
44
 Output.RecordNoSpace.Title="Недостаточно места на диске"
45
 Output.RecordNoSpace.Msg="На диске недостаточно места для продолжения записи."
46
 Output.RecordError.Title="Ошибка записи"
47
 Output.RecordError.Msg="Во время записи произошла неопознанная ошибка."
48
+Output.RecordError.EncodeErrorMsg="Произошла ошибка кодировщика во время записи."
49
 Output.ReplayBuffer.NoHotkey.Title="Нет набора горячих клавиш!"
50
 Output.ReplayBuffer.NoHotkey.Msg="Не установлено клавиши для сохранения повтора. Пожалуйста, установите горячую клавишу для сохранения записей повторов."
51
 
52
 Output.BadPath.Title="Неправильный путь к файлу"
53
-Output.BadPath.Text="Некорректный путь к файлу.  Пожалуйста, проверьте настройки, чтобы убедиться в корректности установленного пути."
54
+Output.BadPath.Text="Некорректный путь к файлу. Пожалуйста, проверьте настройки, чтобы убедиться в корректности установленного пути."
55
 
56
 LogReturnDialog="Log загружен успешно"
57
 LogReturnDialog.CopyURL="Скопировать URL"
58
@@ -306,6 +316,8 @@
59
 
60
 Basic.Main.PreviewConextMenu.Enable="Включить предпросмотр"
61
 
62
+Basic.Main.Preview.Disable="Отключить предпросмотр"
63
+
64
 ScaleFiltering="Фильтр масштабирования"
65
 ScaleFiltering.Point="Точечный"
66
 ScaleFiltering.Bilinear="Билинейный"
67
@@ -476,6 +488,8 @@
68
 Basic.MainMenu.Edit.Transform.FitToScreen="Подогнать по размеру экрана (&F)"
69
 Basic.MainMenu.Edit.Transform.StretchToScreen="Растянуть на весь экран (&S)"
70
 Basic.MainMenu.Edit.Transform.CenterToScreen="Разместить по центру экрана (&C)"
71
+Basic.MainMenu.Edit.Transform.VerticalCenter="Выровнять по вертикали"
72
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Выровнять по горизонтали"
73
 Basic.MainMenu.Edit.Order="Порядок (&O)"
74
 Basic.MainMenu.Edit.Order.MoveUp="Переместить выше (&U)"
75
 Basic.MainMenu.Edit.Order.MoveDown="Переместить ниже (&D)"
76
@@ -585,7 +599,7 @@
77
 Basic.Settings.Output.ReplayBuffer.SecondsMax="Максимальное время повтора (секунд)"
78
 Basic.Settings.Output.ReplayBuffer.MegabytesMax="Максимальный объем памяти (МБ)"
79
 Basic.Settings.Output.ReplayBuffer.Estimate="Предполагаемое использование памяти: %1 МБ"
80
-Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Невозможно оценить использование памяти.  Пожалуйста, установите максимальный объем памяти."
81
+Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Невозможно оценить использование памяти. Пожалуйста, установите максимальный объем памяти."
82
 Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(Примечание: Убедитесь, что установили горячую клавишу для воспроизведения буфера в разделе горячие клавиши)"
83
 Basic.Settings.Output.ReplayBuffer.Prefix="Префикс имени файла повтора"
84
 Basic.Settings.Output.ReplayBuffer.Suffix="Суффикс"
85
@@ -673,7 +687,7 @@
86
 Basic.Settings.Video.Numerator="Числитель"
87
 Basic.Settings.Video.Denominator="Знаменатель"
88
 Basic.Settings.Video.Renderer="Рендер"
89
-Basic.Settings.Video.InvalidResolution="Неверное разрешение.  Должно быть [Ширина]x[Высота] (т.е. 1920x1080)"
90
+Basic.Settings.Video.InvalidResolution="Неверное разрешение. Должно быть [Ширина]x[Высота] (т.е. 1920x1080)"
91
 Basic.Settings.Video.CurrentlyActive="Видео выход в данный момент активен. Пожалуйста, отключите все выходы, чтобы изменить настройки видео."
92
 Basic.Settings.Video.DisableAero="Отключить Aero"
93
 
94
@@ -684,7 +698,8 @@
95
 Basic.Settings.Audio="Аудио"
96
 Basic.Settings.Audio.SampleRate="Частота дискретизации"
97
 Basic.Settings.Audio.Channels="Каналы"
98
-Basic.Settings.Audio.MeterDecayRate="Скорость спада аудиометра"
99
+Basic.Settings.Audio.Meters="Измерители"
100
+Basic.Settings.Audio.MeterDecayRate="Скорость спада"
101
 Basic.Settings.Audio.MeterDecayRate.Fast="Быстро"
102
 Basic.Settings.Audio.MeterDecayRate.Medium="Средне (PPM типа I)"
103
 Basic.Settings.Audio.MeterDecayRate.Slow="Медленно (PPM типа II)"
104
@@ -695,12 +710,13 @@
105
 Basic.Settings.Audio.MultichannelWarning="При запуске стрима проверьте, поддерживает ли ваш сервис потокового вещания объемный звук (как запись, так и воспроизведение). Twitch, Facebook 360 Live, Mixer RTMP, Smashcast — примеры сервисов, полностью поддерживающих объемное звучание. Несмотря на то, что Facebook Live и Youtube Live принимают объёмный звук, Facebook Live микширует его в стерео, а Youtube Live воспроизводит только два канала.\n\nЗвуковые фильтры OBS совместимы с объемным звучанием, хотя поддержка плагинов VST не гарантируется."
106
 Basic.Settings.Audio.MultichannelWarning.Title="Включить объемный звук?"
107
 Basic.Settings.Audio.MultichannelWarning.Confirm="Хотите включить объемный звук?"
108
-Basic.Settings.Audio.DesktopDevice="Desktop Аудиоустройство"
109
-Basic.Settings.Audio.DesktopDevice2="Desktop Аудиоустройство 2"
110
-Basic.Settings.Audio.AuxDevice="Mic/Auxiliary Аудиоустройство"
111
-Basic.Settings.Audio.AuxDevice2="Mic/Auxiliary Аудиоустройство 2"
112
-Basic.Settings.Audio.AuxDevice3="Mic/Auxiliary Аудиоустройство 3"
113
-Basic.Settings.Audio.AuxDevice4="Mic/Auxiliary Аудиоустройство 4"
114
+Basic.Settings.Audio.Devices="Устройства"
115
+Basic.Settings.Audio.DesktopDevice="Аудио с рабочего стола"
116
+Basic.Settings.Audio.DesktopDevice2="Аудио с рабочего стола 2"
117
+Basic.Settings.Audio.AuxDevice="Микрофон/Дополнительное аудио"
118
+Basic.Settings.Audio.AuxDevice2="Микрофон/Дополнительное аудио 2"
119
+Basic.Settings.Audio.AuxDevice3="Микрофон/Дополнительное аудио 3"
120
+Basic.Settings.Audio.AuxDevice4="Микрофон/Дополнительное аудио 4"
121
 Basic.Settings.Audio.EnablePushToMute="Выключать микрофон по нажатии"
122
 Basic.Settings.Audio.PushToMuteDelay="Задержка выключения микрофона"
123
 Basic.Settings.Audio.EnablePushToTalk="Включать микрофон по нажатии"
124
@@ -718,11 +734,11 @@
125
 Basic.Settings.Advanced.FormatWarning="Предупреждение: цветовые форматы, отличные от NV12, прежде всего предназначены для записи и не рекомендуются для потокового вещания. Преобразование цветового формата во время вещания может потребовать дополнительную нагрузку на ЦП."
126
 Basic.Settings.Advanced.Audio.BufferingTime="Время буферизации аудио"
127
 Basic.Settings.Advanced.Video.ColorFormat="Цветовой формат"
128
-Basic.Settings.Advanced.Video.ColorSpace="Цветовое пространство YUV"
129
-Basic.Settings.Advanced.Video.ColorRange="Цветовой диапазон YUV"
130
+Basic.Settings.Advanced.Video.ColorSpace="Цветовое пространство"
131
+Basic.Settings.Advanced.Video.ColorRange="Цветовой диапазон"
132
 Basic.Settings.Advanced.Video.ColorRange.Partial="Частичный"
133
 Basic.Settings.Advanced.Video.ColorRange.Full="Полный"
134
-Basic.Settings.Advanced.Audio.MonitoringDevice="Устройство прослушивания аудио"
135
+Basic.Settings.Advanced.Audio.MonitoringDevice="Устройство прослушивания"
136
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="По умолчанию"
137
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Отключить приглушение звуков Windows"
138
 Basic.Settings.Advanced.StreamDelay="Задержка потока"
139
@@ -739,7 +755,7 @@
140
 
141
 Basic.AdvAudio="Расширенные свойства аудио"
142
 Basic.AdvAudio.Name="Название"
143
-Basic.AdvAudio.Volume="Громкость (%)"
144
+Basic.AdvAudio.Volume="Громкость"
145
 Basic.AdvAudio.Mono="Объединение в один канал"
146
 Basic.AdvAudio.Balance="Баланс"
147
 Basic.AdvAudio.SyncOffset="Смещение синхронизации (мс)"
148
@@ -815,6 +831,7 @@
149
 NoSources.Title="Нет источников"
150
 NoSources.Text="Похоже, вы еще не добавили ни одного источника. Вы будете выводить только пустой экран. Вы уверены, что хотите этого?"
151
 NoSources.Text.AddSource="Вы можете добавить источники, нажав иконку + под окном Источники в главном окне в любое время."
152
+NoSources.Label="У вас нет источников.\nНажмите кнопку + ниже,\nили нажмите правой кнопкой здесь, чтобы добавить его."
153
 
154
 ChangeBG="Установить цвет"
155
 CustomColor="Пользовательский цвет"
156
@@ -833,3 +850,5 @@
157
 ResizeOutputSizeOfSource.Text="Базовое и выходное разрешение будет изменено до размера текущего источника."
158
 ResizeOutputSizeOfSource.Continue="Хотите продолжить?"
159
 
160
+PreviewTransition="Предпросмотр перехода"
161
+
162
obs-studio-23.1.0.tar.xz/UI/data/locale/sk-SK.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/sk-SK.ini Changed
164
 
1
@@ -81,9 +81,11 @@
2
 VerticalLayout="Vertikálne rozloženie"
3
 Group="Skupina"
4
 DoNotShowAgain="Znovu neukazovať"
5
+Default="(Predvolené)"
6
+Calculating="Kalkulovanie..."
7
 
8
 AlreadyRunning.Title="OBS je už spustený"
9
-AlreadyRunning.Text="Aplikácia OBS je už spustená!  Prosím vypnite všetky existujúce inštancie OBS pred pokusom o spustenie novej inštancie. Ak máte OBS minimalizovaný do systémovej lišty, prosím skontrolujte, či tam stále beží."
10
+AlreadyRunning.Text="Aplikácia OBS je už spustená! Prosím vypnite všetky existujúce inštancie OBS pred pokusom o spustenie novej inštancie. Ak máte OBS minimalizovaný do systémovej lišty, prosím skontrolujte, či tam stále beží."
11
 AlreadyRunning.LaunchAnyway="Napriek tomu spustiť"
12
 
13
 DockCloseWarning.Title="Zatvorenie dokovateľného okna"
14
@@ -138,7 +140,7 @@
15
 Basic.AutoConfig.StreamPage.ConnectAccount="Prepojiť účet (voliteľné)"
16
 Basic.AutoConfig.StreamPage.DisconnectAccount="Odpojiť účet"
17
 Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Title="Odpojiť účet?"
18
-Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="Táto zmena sa uplatní okamžite.  Naozaj chcete odpojiť svoj účet?"
19
+Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="Táto zmena sa uplatní okamžite. Naozaj chcete odpojiť svoj účet?"
20
 Basic.AutoConfig.StreamPage.UseStreamKey="Použiť kľúč vysielania"
21
 Basic.AutoConfig.StreamPage.Service="Služba"
22
 Basic.AutoConfig.StreamPage.Service.ShowAll="Zobraziť všetky..."
23
@@ -185,9 +187,10 @@
24
 Basic.Stats.DroppedFrames="Stratené snímky (sieť)"
25
 Basic.Stats.MegabytesSent="Celkový dátový výstup"
26
 Basic.Stats.Bitrate="Dátový tok"
27
+Basic.Stats.DiskFullIn="Disk plný za (približne)"
28
 
29
 ResetUIWarning.Title="Naozaj chcete obnoviť používateľské rozhranie?"
30
-ResetUIWarning.Text="Obnovením používateľského rozhrania sa skryjú ďalšie doky.  Pre ich opätovné zobrazenie ich budete musieť povoliť v ponuke Zobraziť.\n\nNaozaj chcete resetovať používateľské rozhranie?"
31
+ResetUIWarning.Text="Obnovením používateľského rozhrania sa skryjú ďalšie doky. Pre ich opätovné zobrazenie ich budete musieť povoliť v ponuke Zobraziť.\n\nNaozaj chcete resetovať používateľské rozhranie?"
32
 
33
 Updater.Title="Nová aktualizácia k dispozícii"
34
 Updater.Text="Je dostupná nová aktualizácia:"
35
@@ -239,7 +242,7 @@
36
 ConfirmBWTest.Text="Vaše OBS je nakonfigurované pre režim testovania šírky pásma. Toto umožní zistiť parametre vašej siete bez spustenia živého vysielania na vašom kanáli. Po dokončení testovania musíte tento režim zakázať, ináč diváci neuvidia vami prenášaný obsah.\n\nNaozaj si želáte pokračovať?"
37
 
38
 ConfirmExit.Title="Ukončiť OBS?"
39
-ConfirmExit.Text="OBS je momentálne aktívny.  Všetky prúdy údajov/záznamy sa ukončia.  Naozaj pokračovať?"
40
+ConfirmExit.Text="OBS je momentálne aktívny. Všetky prúdy údajov/záznamy sa ukončia. Naozaj pokračovať?"
41
 
42
 ConfirmRemove.Title="Potvrdenie odobratia"
43
 ConfirmRemove.Text="Naozaj si prajete odobrať '$1'?"
44
@@ -250,24 +253,29 @@
45
 Output.StartReplayFailed="Nepodarilo sa spustiť medzipamäť znovunahrávania"
46
 Output.StartFailedGeneric="Nastala chyba pri spúšťaní nahrávania. Podrobnosti nájdete v textovom logu.\n\nPoznámka: Ak používate NVENC alebo AMD enkodér, uistite sa, že používate najnovšiu verziu grafického ovládača."
47
 
48
+
49
 Output.ConnectFail.Title="Spojenie sa nepodarilo"
50
 Output.ConnectFail.BadPath="Neplatná cesta alebo URL. Prosím, skontrolujte, či sú vaše nastavenia správne."
51
 Output.ConnectFail.ConnectFailed="Spojenie so serverom sa nepodarilo"
52
 Output.ConnectFail.InvalidStream="K nastavenému kanálu alebo kľúču sa nedá pristupovať. Skontrolujte, prosím, či je váš vysielací kľúč správny. Ak áno, mohol nastať problém s pripojením k serveru."
53
-Output.ConnectFail.Error="Pri pokuse o pripojenie k serveru nastala neočakávaná chyba.  Ďalšie informácie nájdete v textovom logu."
54
+Output.ConnectFail.Error="Pri pokuse o pripojenie k serveru nastala neočakávaná chyba. Ďalšie informácie nájdete v textovom logu."
55
 Output.ConnectFail.Disconnected="Odpojený od servera."
56
 
57
+Output.StreamEncodeError.Title="Chyba kódovania"
58
+Output.StreamEncodeError.Msg="Nastala chyba pri kódovaní počas vysielania."
59
+
60
 Output.RecordFail.Title="Nepodarilo sa spustiť nahrávanie"
61
 Output.RecordFail.Unsupported="Výstupný formát nie je podporovaný alebo nepodporuje viac ako jednu zvukovú stopu. Skontrolujte nastavenia a skúste to znovu."
62
 Output.RecordNoSpace.Title="Nedostatok miesta na disku"
63
 Output.RecordNoSpace.Msg="Pre pokračovanie nahrávania nie je dostatok miesta na disku."
64
 Output.RecordError.Title="Chyba nahrávania"
65
 Output.RecordError.Msg="Pri nahrávaní došlo k nešpecifikovanej chybe."
66
+Output.RecordError.EncodeErrorMsg="Nastala chyba pri kódovaní počas nahrávania."
67
 Output.ReplayBuffer.NoHotkey.Title="Nepriradená žiadna klávesová skratka!"
68
 Output.ReplayBuffer.NoHotkey.Msg="Nie je nastavená žiadna klávesová skratka pre uloženie záznamu. Nastavte ju, prosím, aby ste mohli ukladať záznam."
69
 
70
 Output.BadPath.Title="Nesprávna cesta k súboru"
71
-Output.BadPath.Text="Nastavená cesta k výstupnému súboru je chybná.  Prosím, skontrolujte správnosť nastavenej cesty."
72
+Output.BadPath.Text="Nastavená cesta k výstupnému súboru je chybná. Prosím, skontrolujte správnosť nastavenej cesty."
73
 
74
 LogReturnDialog="Nahranie logu bolo úspešné"
75
 LogReturnDialog.CopyURL="Kopírovať URL"
76
@@ -306,6 +314,8 @@
77
 
78
 Basic.Main.PreviewConextMenu.Enable="Zapnúť náhľad"
79
 
80
+Basic.Main.Preview.Disable="Vypnúť nahľad"
81
+
82
 ScaleFiltering="Filter škálovania"
83
 ScaleFiltering.Point="Bodové"
84
 ScaleFiltering.Bilinear="Bilineárne"
85
@@ -476,6 +486,8 @@
86
 Basic.MainMenu.Edit.Transform.FitToScreen="Prispôsobiť obrazovke (&F)"
87
 Basic.MainMenu.Edit.Transform.StretchToScreen="Roztiahnuť na celú obrazovku (&S)"
88
 Basic.MainMenu.Edit.Transform.CenterToScreen="Umiestniť na stred obrazovky (&C)"
89
+Basic.MainMenu.Edit.Transform.VerticalCenter="Centrovať zvislo"
90
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Centrovať vodorovne"
91
 Basic.MainMenu.Edit.Order="P&oradie"
92
 Basic.MainMenu.Edit.Order.MoveUp="Pos&unúť vyššie"
93
 Basic.MainMenu.Edit.Order.MoveDown="Posunúť nižšie (&D)"
94
@@ -547,6 +559,9 @@
95
 Basic.Settings.General.SystemTrayHideMinimize="Vždy minimalizovať do systémovej lišty namiesto panela úloh"
96
 Basic.Settings.General.SaveProjectors="Uložiť projektory pri skončení"
97
 Basic.Settings.General.Preview="Náhľad"
98
+Basic.Settings.General.OverflowHidden="Skryť pretečenie"
99
+Basic.Settings.General.OverflowAlwaysVisible="Pretečenie vždy viditeľné"
100
+Basic.Settings.General.OverflowSelectionHidden="Ukázať pretečenie aj keď je zdroj neviditeľný"
101
 Basic.Settings.General.SwitchOnDoubleClick="Prejsť do scény pri dvojkliku"
102
 Basic.Settings.General.StudioPortraitLayout="Zapnúť portrétové/vertikálne rozloženie"
103
 Basic.Settings.General.TogglePreviewProgramLabels="Zobraziť popisy okien náhľadu a programu"
104
@@ -682,7 +697,8 @@
105
 Basic.Settings.Audio="Zvuk"
106
 Basic.Settings.Audio.SampleRate="Vzorkovacia frekvencia"
107
 Basic.Settings.Audio.Channels="Kanály"
108
-Basic.Settings.Audio.MeterDecayRate="Rýchlosť útlmu snímača zvuku"
109
+Basic.Settings.Audio.Meters="Metre"
110
+Basic.Settings.Audio.MeterDecayRate="Rýchlosť slabnutia"
111
 Basic.Settings.Audio.MeterDecayRate.Fast="Rýchlo"
112
 Basic.Settings.Audio.MeterDecayRate.Medium="Stredne (typ I PPM)"
113
 Basic.Settings.Audio.MeterDecayRate.Slow="Pomaly (typ II PPM)"
114
@@ -693,8 +709,9 @@
115
 Basic.Settings.Audio.MultichannelWarning="Ak vysielate, uistite sa že vaša vysielacia služba podporuje prijímanie a aj prehrávanie priestorového zvuku. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast sú príklady služieb ktoré priestorový zvuk plne podporujú. Avšak Facebook Live a YouTube Live podporujú prijímanie priestorového zvuku, Facebook Live ho prevádza do stereo zvuku a YouTub Live prehráva iba 2 kanály.\n\nOBS zvukové filtre sú kompatibilné s priestorovým zvukom, no podpora u VST pluginu nie je garantovaná."
116
 Basic.Settings.Audio.MultichannelWarning.Title="Povoliť priestorový zvuk?"
117
 Basic.Settings.Audio.MultichannelWarning.Confirm="Naozaj si želáte povoliť priestorový zvuk?"
118
-Basic.Settings.Audio.DesktopDevice="Zvukové zariadenie plochy"
119
-Basic.Settings.Audio.DesktopDevice2="Zvukové zariadenie plochy 2"
120
+Basic.Settings.Audio.Devices="Zariadenia"
121
+Basic.Settings.Audio.DesktopDevice="Zvuk plochy"
122
+Basic.Settings.Audio.DesktopDevice2="Zvuk plochy 2"
123
 Basic.Settings.Audio.AuxDevice="Mikrofón/Aux - Zvukové zariadenie"
124
 Basic.Settings.Audio.AuxDevice2="Mikrofón/Aux - Zvukové zariadenie 2"
125
 Basic.Settings.Audio.AuxDevice3="Mikrofón/Aux - Zvukové zariadenie 3"
126
@@ -716,11 +733,11 @@
127
 Basic.Settings.Advanced.FormatWarning="Upozornenie: Formáty farieb iné ako NV12 sú primárne určené na nahrávanie a nie sú odporúčane pre vysielanie. Použitie iných formátov môže spôsobiť zvýšené využitie CPU pri vysielaní kvôli prevodu medzi formátmi."
128
 Basic.Settings.Advanced.Audio.BufferingTime="Čas medzipamäte zvuku"
129
 Basic.Settings.Advanced.Video.ColorFormat="Formát farieb"
130
-Basic.Settings.Advanced.Video.ColorSpace="Farebný priestor YUV"
131
-Basic.Settings.Advanced.Video.ColorRange="Rozsah farieb YUV"
132
+Basic.Settings.Advanced.Video.ColorSpace="Farebný priestor"
133
+Basic.Settings.Advanced.Video.ColorRange="Farebný rozsah"
134
 Basic.Settings.Advanced.Video.ColorRange.Partial="Čiastočný"
135
 Basic.Settings.Advanced.Video.ColorRange.Full="Úplný"
136
-Basic.Settings.Advanced.Audio.MonitoringDevice="Zariadenie na monitorovanie zvuku"
137
+Basic.Settings.Advanced.Audio.MonitoringDevice="Monitorovacie zariadenie"
138
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Predvolené"
139
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Vypnúť zvukové utišovanie Windowsu"
140
 Basic.Settings.Advanced.StreamDelay="Oneskorenie vysielania"
141
@@ -737,7 +754,7 @@
142
 
143
 Basic.AdvAudio="Pokročilé nastavenia zvuku"
144
 Basic.AdvAudio.Name="Názov"
145
-Basic.AdvAudio.Volume="Hlasitosť (%)"
146
+Basic.AdvAudio.Volume="Hlasitosť"
147
 Basic.AdvAudio.Mono="Previesť na Mono"
148
 Basic.AdvAudio.Balance="Vyváženie"
149
 Basic.AdvAudio.SyncOffset="Oneskorenie synchronizácie (ms)"
150
@@ -813,6 +830,7 @@
151
 NoSources.Title="Žiadne zdroje"
152
 NoSources.Text="Nepridali ste žiadne zdroje obrazu, takže výstup bude prázdny. Naozaj chcete pokračovať?"
153
 NoSources.Text.AddSource="Zdroje môžete kedykoľvek pridať kliknutím na ikonu + v zozname zdrojov v hlavnom okne."
154
+NoSources.Label="Nemáte žiadne zdroje.\nKliknite na tlačidlo + nižšie\nalebo pravým kliknite sem a nejaký pridajte."
155
 
156
 ChangeBG="Nastaviť farbu"
157
 CustomColor="Vlastná farba"
158
@@ -831,3 +849,5 @@
159
 ResizeOutputSizeOfSource.Text="Základné a výstupné rozlíšenie budú zmenené na veľkosť súčasného zdroja."
160
 ResizeOutputSizeOfSource.Continue="Chcete pokračovať?"
161
 
162
+PreviewTransition="Ukážka prechodu"
163
+
164
obs-studio-23.1.0.tar.xz/UI/data/locale/sl-SI.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/sl-SI.ini Changed
51
 
1
@@ -148,6 +148,7 @@
2
 ConfirmRemove.Text="Ali ste prepričani, da želite odstraniti '$ 1'?"
3
 
4
 
5
+
6
 Output.ConnectFail.Title="Povezava ni uspela"
7
 Output.ConnectFail.BadPath="Neveljavna pot ali URL povezava. Prosimo, preverite vaše nastavitve za potrditev, da so veljavne."
8
 Output.ConnectFail.ConnectFailed="Ni uspelo povezati s strežnikom"
9
@@ -155,6 +156,7 @@
10
 Output.ConnectFail.Disconnected="Odklopiti od strežnika."
11
 
12
 
13
+
14
 Output.BadPath.Title="Nepravilna pot do datoteke"
15
 Output.BadPath.Text="Pot izhodne konfiguracije ni veljavna. Prosimo, preverite vaše nastavitve, da je določena veljavna pot datoteke."
16
 
17
@@ -164,7 +166,7 @@
18
 
19
 
20
 UpdateAvailable="Nova posodobitev je na voljo"
21
-UpdateAvailable.Text="Verzija %1.%2.%3 je sedaj na voljo.  <a href='%4'>Klikni tukaj za prenos</a>"
22
+UpdateAvailable.Text="Verzija %1.%2.%3 je sedaj na voljo. <a href='%4'>Klikni tukaj za prenos</a>"
23
 
24
 Basic.DesktopDevice1="Namizni Zvok"
25
 Basic.DesktopDevice2="Namizni Zvok 2"
26
@@ -180,6 +182,7 @@
27
 
28
 
29
 
30
+
31
 Basic.Main.AddSceneDlg.Title="Dodaj seceno"
32
 Basic.Main.AddSceneDlg.Text="Prosimo, vnesite ime scene"
33
 
34
@@ -324,11 +327,6 @@
35
 Basic.Settings.Audio="Zvok"
36
 Basic.Settings.Audio.SampleRate="Sample Rate"
37
 Basic.Settings.Audio.Channels="Kanali"
38
-Basic.Settings.Audio.DesktopDevice="Namizna Zvočna Naprava"
39
-Basic.Settings.Audio.DesktopDevice2="Namizna Zvočna Naprava 2"
40
-Basic.Settings.Audio.AuxDevice="Mic / Dodatne Zvočne Naprave"
41
-Basic.Settings.Audio.AuxDevice2="Mic / Dodatne Zvočne Naprave 2"
42
-Basic.Settings.Audio.AuxDevice3="Mic / Dodatne Zvočne Naprave 3"
43
 
44
 Basic.Settings.Advanced.Video.ColorRange.Partial="Delno"
45
 Basic.Settings.Advanced.Video.ColorRange.Full="Celotno"
46
@@ -348,3 +346,4 @@
47
 
48
 
49
 
50
+
51
obs-studio-23.1.0.tar.xz/UI/data/locale/sq-AL.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/sq-AL.ini Changed
18
 
1
@@ -113,7 +113,7 @@
2
 Basic.AutoConfig.VideoPage.FPS.UseCurrent="Perdor Aktualen (%1)"
3
 Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="60 ose 30, por preferoj 60 kur eshte e mundur"
4
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="60 ose 30, por perferoj rezolucion te larte"
5
-Basic.AutoConfig.VideoPage.CanvasExplanation="Shenim: Revolucioni i kanvasit (baza)  nuk eshte domosdoshmerisht rezolucioni i njetje me te cilin transmeton ose rregjistron. Rezolucioni i transmetimit/rregjistrimit mund te shkallzohet qe te ulen resurset e perdorimit ose kerkesat e bitratit."
6
+Basic.AutoConfig.VideoPage.CanvasExplanation="Shenim: Revolucioni i kanvasit (baza) nuk eshte domosdoshmerisht rezolucioni i njetje me te cilin transmeton ose rregjistron. Rezolucioni i transmetimit/rregjistrimit mund te shkallzohet qe te ulen resurset e perdorimit ose kerkesat e bitratit."
7
 Basic.AutoConfig.StreamPage="Informacion mbi transmetimin"
8
 Basic.AutoConfig.StreamPage.SubTitle="Ju lutem shkruani informacionin e transmetimit"
9
 Basic.AutoConfig.StreamPage.Service="Sherbim"
10
@@ -214,3 +214,7 @@
11
 
12
 
13
 
14
+
15
+
16
+
17
+
18
obs-studio-23.1.0.tar.xz/UI/data/locale/sr-CS.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/sr-CS.ini Changed
125
 
1
@@ -80,6 +80,9 @@
2
 ShowInMultiview="Prikaži kao simultani pregled"
3
 VerticalLayout="Organizovano po vertikali"
4
 Group="Grupa objekata"
5
+DoNotShowAgain="Ne prikazuj ponovo"
6
+Default="(Podrazumevano)"
7
+Calculating="Proračunavam..."
8
 
9
 AlreadyRunning.Title="OBS je već porkenut"
10
 AlreadyRunning.Text="OBS je već pokrenut! Osim ako zaista želite da uradite ovo, molimo Vas da prekinete sve procese vezane za OBS pre nego što pokrenete nov zadatak. U slučaju da OBS radi u pozadini, molimo Vas da proverite system tray (ikonice dole desno, pored sata)."
11
@@ -151,9 +154,9 @@
12
 Basic.AutoConfig.TestPage.SubTitle.Testing="Program trenutno izvršava set testova kako bi procenio optimalna podešavanja"
13
 Basic.AutoConfig.TestPage.SubTitle.Complete="Testiranje je završeno"
14
 Basic.AutoConfig.TestPage.TestingBandwidth="U toku je izvođenje testa propusnog opsega, ovo može potrajati nekoliko minuta..."
15
-Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Povezivanje sa:  %1..."
16
+Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Povezivanje sa: %1..."
17
 Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Neuspеlo povеzivanjе sa sеrvеrom, molimo provеritе Vašu intеrnеt vеzu i pokušajtе ponovo."
18
-Basic.AutoConfig.TestPage.TestingBandwidth.Server="Testiranje propusnog opsega za:  %1"
19
+Basic.AutoConfig.TestPage.TestingBandwidth.Server="Testiranje propusnog opsega za: %1"
20
 Basic.AutoConfig.TestPage.TestingStreamEncoder="U toku je testiranje strim enkodera, ovo može potrajati par minuta..."
21
 Basic.AutoConfig.TestPage.TestingRecordingEncoder="U toku je testiranje enkodera za snimanje, ovo može potrajati par minuta..."
22
 Basic.AutoConfig.TestPage.TestingRes="U toku je testiranje rezolucije, ovo može potrajati nekoliko minuta..."
23
@@ -166,6 +169,7 @@
24
 
25
 Basic.Stats="Statistika"
26
 Basic.Stats.CPUUsage="Iskorišćenost procesora"
27
+Basic.Stats.HDDSpaceAvailable="Dostupan prostor na disku"
28
 Basic.Stats.MemoryUsage="Iskorišćenost memorije"
29
 Basic.Stats.AverageTimeToRender="Prosečno vreme potrebno da se prikaže frejm"
30
 Basic.Stats.SkippedFrames="Preskočeni frejmovi zbog zaostatka kodiranja"
31
@@ -243,6 +247,7 @@
32
 Output.StartReplayFailed="Neuspelo pokretanje bafera za ponovni prikaz"
33
 Output.StartFailedGeneric="Neuspelo pokretanje izlaza. Molimo proverite prijavu za detalje.\n\n Obaveštenje: Ukoliko koristite NVENC ili AMD enkodere, postarajte se da su Vaši video drajveri ažurirani."
34
 
35
+
36
 Output.ConnectFail.Title="Neuspešno povezivanje"
37
 Output.ConnectFail.BadPath="Neispravna putanja ili URL konekcije. Molim proverite vaša podešavanja da potvrdite njihovu ispravnost."
38
 Output.ConnectFail.ConnectFailed="Neuspešno povezivanje na server"
39
@@ -250,6 +255,7 @@
40
 Output.ConnectFail.Error="Neočekivana greška u povezivanju sa serverom. Više informacija se nalazi u log datoteci."
41
 Output.ConnectFail.Disconnected="Prekinuta veza sa serverom."
42
 
43
+
44
 Output.RecordFail.Title="Neuspešno započinjanje snimanja"
45
 Output.RecordFail.Unsupported="Izlazni format ili nije podržan ili ne podržava više od jedne zvučne trake. Molim proverite podešavanja i pokušajte ponovo."
46
 Output.RecordNoSpace.Title="Nedovoljno prostora na disku"
47
@@ -283,7 +289,7 @@
48
 Remux.HelpText="Priložite fajlove u ovaj prozor za remuks, ili izaberite praznu ''OBS Recording'' ćeliju da potražite fajl."
49
 
50
 UpdateAvailable="Dostupna je novija verzija programa"
51
-UpdateAvailable.Text="Verzija %1.%2.%3 je dostupna.  <a href='%4'>Kliknite ovde da preuzmete</a>"
52
+UpdateAvailable.Text="Verzija %1.%2.%3 je dostupna. <a href='%4'>Kliknite ovde da preuzmete</a>"
53
 
54
 Basic.DesktopDevice1="Zvuk sa računara"
55
 Basic.DesktopDevice2="Zvuk sa računara 2"
56
@@ -297,6 +303,7 @@
57
 
58
 Basic.Main.PreviewConextMenu.Enable="Omogući pregled"
59
 
60
+
61
 ScaleFiltering="Filter uvećanja"
62
 ScaleFiltering.Point="Tačka"
63
 ScaleFiltering.Bilinear="Bilinearno"
64
@@ -673,7 +680,6 @@
65
 Basic.Settings.Audio="Zvuk"
66
 Basic.Settings.Audio.SampleRate="Protok"
67
 Basic.Settings.Audio.Channels="Kanali"
68
-Basic.Settings.Audio.MeterDecayRate="Stopa audiometrijskih oštećenja"
69
 Basic.Settings.Audio.MeterDecayRate.Fast="Brza"
70
 Basic.Settings.Audio.MeterDecayRate.Medium="Srednja (Tip I PPM)"
71
 Basic.Settings.Audio.MeterDecayRate.Slow="Spora (Tip II PPM)"
72
@@ -684,17 +690,13 @@
73
 Basic.Settings.Audio.MultichannelWarning="Ako je strim u toku, proverite da li vaša striming usluga podržava integraciju i plejbek zvuka okruženja. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast su primeri gde je zvuk okruženja u potpunosti podržan. Iako i Facebook Live i YouTube Live podržavaju integraciju okruženja, Facebook Live miksuje kao stereo, a YouTube Live reprodukuje samo dva kanala.\n\nOBS zvučni filteri su kompatibilni sa zvukom okruženja, mada podrška za VST priključke nije zagarantovana."
74
 Basic.Settings.Audio.MultichannelWarning.Title="Da li želite da uključite zvuk okruženja?"
75
 Basic.Settings.Audio.MultichannelWarning.Confirm="Da li ste sigurni da želite da uključite zvuk okruženja?"
76
-Basic.Settings.Audio.DesktopDevice="Zvuk sa računara"
77
-Basic.Settings.Audio.DesktopDevice2="Zvuk sa računara 2"
78
-Basic.Settings.Audio.AuxDevice="Mikrofon/Ulaz"
79
-Basic.Settings.Audio.AuxDevice2="Mikrofon/Ulaz 2"
80
-Basic.Settings.Audio.AuxDevice3="Mikrofon/Ulaz 3"
81
-Basic.Settings.Audio.AuxDevice4="Mikrofon/Pomoćni audio uređaj 4"
82
+Basic.Settings.Audio.Devices="Uređaji"
83
 Basic.Settings.Audio.EnablePushToMute="Omogući stisni-za-mutiranje"
84
 Basic.Settings.Audio.PushToMuteDelay="Kašnjenje opcije stisni-za-mutiranje"
85
 Basic.Settings.Audio.EnablePushToTalk="Omogući Stisni-za-govor"
86
 Basic.Settings.Audio.PushToTalkDelay="Kašnjenje opcije stisni-za-govor"
87
 Basic.Settings.Audio.UnknownAudioDevice="[Uređaj nije povezan ili nije dostupan]"
88
+Basic.Settings.Audio.Disabled="Onemogućeno"
89
 
90
 Basic.Settings.Advanced="Napredno"
91
 Basic.Settings.Advanced.General.ProcessPriority="Prioritet procesa"
92
@@ -706,11 +708,8 @@
93
 Basic.Settings.Advanced.FormatWarning="Upozorenje: Formati boja različiti od NV12 su prvenstveno namenjeni za snimanje i nisu preporučeni za strimovanje. Strimovanje može prouzrokovati povišeno zauzeće procesora zbog pretvaranja formata boja."
94
 Basic.Settings.Advanced.Audio.BufferingTime="Vreme baferovanja zvuka"
95
 Basic.Settings.Advanced.Video.ColorFormat="Format boja"
96
-Basic.Settings.Advanced.Video.ColorSpace="YUV prostor boja"
97
-Basic.Settings.Advanced.Video.ColorRange="YUV raspon boja"
98
 Basic.Settings.Advanced.Video.ColorRange.Partial="Delimično"
99
 Basic.Settings.Advanced.Video.ColorRange.Full="Potpuno"
100
-Basic.Settings.Advanced.Audio.MonitoringDevice="Uređaj za audio nadzor"
101
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Podrazumevano"
102
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Isključi Windows audio ducking"
103
 Basic.Settings.Advanced.StreamDelay="Kašnjenje strimovanja"
104
@@ -727,7 +726,6 @@
105
 
106
 Basic.AdvAudio="Napredna podešavanja zvuka"
107
 Basic.AdvAudio.Name="Ime"
108
-Basic.AdvAudio.Volume="Glasnoća (%)"
109
 Basic.AdvAudio.Mono="Spoji u mono"
110
 Basic.AdvAudio.Balance="Balans"
111
 Basic.AdvAudio.SyncOffset="Razlika u sinhronizaciji (ms)"
112
@@ -783,6 +781,7 @@
113
 Hotkeys.AppleKeypadDecimal=". (Keypad)"
114
 Hotkeys.AppleKeypadEqual="= (Keypad)"
115
 Hotkeys.MouseButton="Miš %1"
116
+Hotkeys.Escape="Esc"
117
 
118
 Mute="Mutiraj"
119
 Unmute="Odmutiraj"
120
@@ -817,3 +816,4 @@
121
 ResizeOutputSizeOfSource.Text="Rezolucija izlaza i osnovna rezolucija će biti promenjene kako bi odgovarale veličini trenutnog izvora."
122
 ResizeOutputSizeOfSource.Continue="Da li želite da nastavite?"
123
 
124
+
125
obs-studio-23.1.0.tar.xz/UI/data/locale/sr-SP.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/sr-SP.ini Changed
92
 
1
@@ -151,9 +151,9 @@
2
 Basic.AutoConfig.TestPage.SubTitle.Testing="Програм тренутно извршава сет тестова како би проценио оптимална подешавања"
3
 Basic.AutoConfig.TestPage.SubTitle.Complete="Тестирање је завршено"
4
 Basic.AutoConfig.TestPage.TestingBandwidth="У току је извођење теста пропусног опсега, ово може потрајати неколико минута..."
5
-Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Повезивање са:  %1..."
6
+Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Повезивање са: %1..."
7
 Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Неуспело повезивање са сервером, молимо проверите Вашу интернет везу и покушајте поново."
8
-Basic.AutoConfig.TestPage.TestingBandwidth.Server="Тестирање пропусног опсега за:  %1"
9
+Basic.AutoConfig.TestPage.TestingBandwidth.Server="Тестирање пропусног опсега за: %1"
10
 Basic.AutoConfig.TestPage.TestingStreamEncoder="У току је тестирање стрим енкодера, ово може потрајати неколико минута..."
11
 Basic.AutoConfig.TestPage.TestingRecordingEncoder="У току је тестирање енкодера за снимање, ово може потрајати пар минута..."
12
 Basic.AutoConfig.TestPage.TestingRes="У току је тестирање резолуције, ово може потрајати неколико минута..."
13
@@ -243,6 +243,7 @@
14
 Output.StartReplayFailed="Неуспело покретање бафера за поновни приказ"
15
 Output.StartFailedGeneric="Неуспело покретање излаза. Молимо проверите пријaву за детаље.\n\n Обавештење: уколико користите NVENC или AMD енкодере, постарајте се да су Ваши видео драјвери ажурирани."
16
 
17
+
18
 Output.ConnectFail.Title="Неуспешно повезивање"
19
 Output.ConnectFail.BadPath="Неисправна путања или URL конекције. Молим проверите ваша подешавања да потврдите њихову исправност."
20
 Output.ConnectFail.ConnectFailed="Неуспешно повезивање на сервер"
21
@@ -250,6 +251,7 @@
22
 Output.ConnectFail.Error="Неочекивана грешка у повезивању са сервером. Више информација се налази у лог датотеци."
23
 Output.ConnectFail.Disconnected="Прекинута веза са сервером."
24
 
25
+
26
 Output.RecordFail.Title="Неуспешно започињање снимања"
27
 Output.RecordFail.Unsupported="Излазни формат или није подржан или не подржава више од једне звучне траке. Молим проверите подешавања и покушајте поново."
28
 Output.RecordNoSpace.Title="Недовољно простора на диску"
29
@@ -283,7 +285,7 @@
30
 Remux.HelpText="Приложите фајлове у овај прозор за ремукс, или изаберите празну \"OBS Recording\" ћелију да потражите фајл."
31
 
32
 UpdateAvailable="Доступна је новија верзија програма"
33
-UpdateAvailable.Text="Верзија %1.%2.%3 је доступна.  <a href='%4'>Кликните овде да преузмете</a>"
34
+UpdateAvailable.Text="Верзија %1.%2.%3 је доступна. <a href='%4'>Кликните овде да преузмете</a>"
35
 
36
 Basic.DesktopDevice1="Звук са рачунара"
37
 Basic.DesktopDevice2="Звук са рачунара 2"
38
@@ -297,6 +299,7 @@
39
 
40
 Basic.Main.PreviewConextMenu.Enable="Омогући преглед"
41
 
42
+
43
 ScaleFiltering="Филтер увећања"
44
 ScaleFiltering.Point="Тачка"
45
 ScaleFiltering.Bilinear="Билинеарно"
46
@@ -673,7 +676,6 @@
47
 Basic.Settings.Audio="Звук"
48
 Basic.Settings.Audio.SampleRate="Проток"
49
 Basic.Settings.Audio.Channels="Канали"
50
-Basic.Settings.Audio.MeterDecayRate="Стопа аудиометријских оштећења"
51
 Basic.Settings.Audio.MeterDecayRate.Fast="Брза"
52
 Basic.Settings.Audio.MeterDecayRate.Medium="Средња (Tип I PPM)"
53
 Basic.Settings.Audio.MeterDecayRate.Slow="Спора (Tип II PPM)"
54
@@ -684,12 +686,6 @@
55
 Basic.Settings.Audio.MultichannelWarning="Ако је стрим у току, проверите да ли ваша стриминг услуга подржава интеграцију и плејбек звука окружења. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast су примери где је звук окружења у потпуности подржан. Иако и Facebook Live i YouTube Live подржавају интеграцију окружења, Facebook Live миксује као стерео, а YouTube Live репродукује само два канала. \n\nOBS звучни филтери су компатибилни са звуком окружења, мада подршка за VST прикључке није загарантована."
56
 Basic.Settings.Audio.MultichannelWarning.Title="Да ли желите да укључите звук окружења?"
57
 Basic.Settings.Audio.MultichannelWarning.Confirm="Да ли сте сигурни да желите да укључите звук окружења?"
58
-Basic.Settings.Audio.DesktopDevice="Звук са рачунара"
59
-Basic.Settings.Audio.DesktopDevice2="Звук са рачунара 2"
60
-Basic.Settings.Audio.AuxDevice="Микрофон/Улаз"
61
-Basic.Settings.Audio.AuxDevice2="Микрофон/Улаз 2"
62
-Basic.Settings.Audio.AuxDevice3="Микрофон/Улаз 3"
63
-Basic.Settings.Audio.AuxDevice4="Микрофон/Помоћни аудио уређај 4"
64
 Basic.Settings.Audio.EnablePushToMute="Омогући стисни-за-мутирање"
65
 Basic.Settings.Audio.PushToMuteDelay="Кашњење опције стисни-за-мутирање"
66
 Basic.Settings.Audio.EnablePushToTalk="Омогући Стисни-за-говор"
67
@@ -706,11 +702,8 @@
68
 Basic.Settings.Advanced.FormatWarning="Упозорење: Формати боја различити од NV12 су првенствено намењени за снимање и нису препоручени за стримовање. Стримовање може проузроковати повишено заузеће процесора због претварања формата боја."
69
 Basic.Settings.Advanced.Audio.BufferingTime="Време баферовања звука"
70
 Basic.Settings.Advanced.Video.ColorFormat="Формат боја"
71
-Basic.Settings.Advanced.Video.ColorSpace="YUV простор боја"
72
-Basic.Settings.Advanced.Video.ColorRange="YUV распон боја"
73
 Basic.Settings.Advanced.Video.ColorRange.Partial="Делимично"
74
 Basic.Settings.Advanced.Video.ColorRange.Full="Потпуно"
75
-Basic.Settings.Advanced.Audio.MonitoringDevice="Уређај за аудио надзор"
76
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Подразумевано"
77
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Искључи Windows audio ducking"
78
 Basic.Settings.Advanced.StreamDelay="Кашњење стримовања"
79
@@ -727,7 +720,6 @@
80
 
81
 Basic.AdvAudio="Напредна подешавања звука"
82
 Basic.AdvAudio.Name="Име"
83
-Basic.AdvAudio.Volume="Гласноћа (%)"
84
 Basic.AdvAudio.Mono="Споји у моно"
85
 Basic.AdvAudio.Balance="Баланс"
86
 Basic.AdvAudio.SyncOffset="Разлика у синхронизацији (ms)"
87
@@ -817,3 +809,4 @@
88
 ResizeOutputSizeOfSource.Text="Резолуција излаза и основна резолуција ће бити промењене како би одговарале величини тренутног извора."
89
 ResizeOutputSizeOfSource.Continue="Да ли желите да наставите?"
90
 
91
+
92
obs-studio-23.1.0.tar.xz/UI/data/locale/sv-SE.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/sv-SE.ini Changed
257
 
1
@@ -81,9 +81,11 @@
2
 VerticalLayout="Vertikal layout"
3
 Group="Grupp"
4
 DoNotShowAgain="Visa inte igen"
5
+Default="(Standard)"
6
+Calculating="Beräknar..."
7
 
8
 AlreadyRunning.Title="OBS körs redan"
9
-AlreadyRunning.Text="OBS körs redan!  Såvida du gjorde detta med flit, stäng ned alla befintliga instanser av OBS innan du försöker köra en ny instans.  Om du har minimerat OBS till systemfältet, kontroller om det fortfarande körs där."
10
+AlreadyRunning.Text="OBS körs redan! Såvida du gjorde detta med flit, stäng ned alla befintliga instanser av OBS innan du försöker köra en ny instans. Om du har minimerat OBS till systemfältet, kontroller om det fortfarande körs där."
11
 AlreadyRunning.LaunchAnyway="Kör ändå"
12
 
13
 DockCloseWarning.Title="Stäng flytande fönster"
14
@@ -103,6 +105,8 @@
15
 Auth.StreamInfo="Ströminformation"
16
 TwitchAuth.Stats="Twitch-statistik"
17
 TwitchAuth.Feed="Aktivitetsflöde för Twitch"
18
+TwitchAuth.TwoFactorFail.Title="Kunde inte efterfråga strömnyckel"
19
+TwitchAuth.TwoFactorFail.Text="OBS kunde inte ansluta till ditt Twitch-konto. Se till att tvåfaktorsautentiseringen har ställts in i <a href='https://www.twitch.tv/settings/security'>säkerhetsinställningarna på Twitch</a> då detta är nödvändigt för att kunna strömma."
20
 
21
 Copy.Filters="Kopiera filter"
22
 Paste.Filters="Klistra in filter"
23
@@ -132,7 +136,7 @@
24
 Basic.AutoConfig.VideoPage.FPS.UseCurrent="Använd nuvarande (%1)"
25
 Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="Antingen 60 eller 30, men föredra 60 när det är möjligt"
26
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="Antingen 60 eller 30, men föredra hög upplösning"
27
-Basic.AutoConfig.VideoPage.CanvasExplanation="OBS: Kanvasens (grundens) upplösning är nödvändigtvis samma som upplösningen upp kommer att strömma eller spela in med.  Din riktiga upplösning för strömning/inspelning kan skalas ned från kanvasupplösningen för att reducera användning av resurser eller krav på bithastighet."
28
+Basic.AutoConfig.VideoPage.CanvasExplanation="OBS: Kanvasens (grundens) upplösning är nödvändigtvis samma som upplösningen upp kommer att strömma eller spela in med. Din riktiga upplösning för strömning/inspelning kan skalas ned från kanvasupplösningen för att reducera användning av resurser eller krav på bithastighet."
29
 Basic.AutoConfig.StreamPage="Ströminformation"
30
 Basic.AutoConfig.StreamPage.SubTitle="Var god ange din ströminformation"
31
 Basic.AutoConfig.StreamPage.ConnectAccount="Anslut konto (valfritt)"
32
@@ -185,6 +189,7 @@
33
 Basic.Stats.DroppedFrames="Förlorade bildrutor (nätverk)"
34
 Basic.Stats.MegabytesSent="Total datautmatning"
35
 Basic.Stats.Bitrate="Bithastighet"
36
+Basic.Stats.DiskFullIn="Hårddisk full om (ca.)"
37
 
38
 ResetUIWarning.Title="Är du säker på att du vill återställa gränssnittet?"
39
 ResetUIWarning.Text="När gränssnittet återställs dölj ytterligare komponenter. Du kommer behöva ta fram dessa komponenter från menyn Visa om du vill att de ska vara synliga.\n\nÄr du säker på att du vill återställa gränssnittet?"
40
@@ -239,16 +244,17 @@
41
 ConfirmBWTest.Text="Du har konfigurerat OBS i testläge för bandbredd. Detta läge låter dig testa nätverket utan att din kanal direktsänder. När du har testat färdigt behöver du inaktivera den för att att tittare ska kunna se din ström.\n\nVill du fortsätta?"
42
 
43
 ConfirmExit.Title="Avsluta OBS?"
44
-ConfirmExit.Text="OBS är aktivt.  Alla strömmar/inspelningar kommer att stängas av.  Är du säker på att du vill avsluta?"
45
+ConfirmExit.Text="OBS är aktivt. Alla strömmar/inspelningar kommer att stängas av. Är du säker på att du vill avsluta?"
46
 
47
 ConfirmRemove.Title="Bekräfta borttagning"
48
-ConfirmRemove.Text="Vill du verkligen ta bort '$1'?"
49
+ConfirmRemove.Text="Vill du verkligen ta bort \"$1\"?"
50
 ConfirmRemove.TextMultiple="Är du säker på att du vill ta bort %1 poster?"
51
 
52
 Output.StartStreamFailed="Misslyckades att starta strömning"
53
 Output.StartRecordingFailed="Misslyckades att starta inspelning"
54
 Output.StartReplayFailed="Misslyckades att starta reprisbuffert"
55
-Output.StartFailedGeneric="Misslyckades att starta utmatningen.  Kolla loggen för detaljer.\n\nOBS: Om du använder kodarna NVENC eller AMD, se till att dina grafikdrivrutiner är uppdaterade."
56
+Output.StartFailedGeneric="Misslyckades att starta utmatningen. Kolla loggen för detaljer.\n\nOBS: Om du använder kodarna NVENC eller AMD, se till att dina grafikdrivrutiner är uppdaterade."
57
+
58
 
59
 Output.ConnectFail.Title="Anslutning misslyckades"
60
 Output.ConnectFail.BadPath="Ogiltig sökväg eller anslutnings-URL. Kontrollera att dina inställningar är korrekta."
61
@@ -257,12 +263,16 @@
62
 Output.ConnectFail.Error="Ett oväntat fel uppstod vid anslutning till servern. Se loggfilen för ytterligare information."
63
 Output.ConnectFail.Disconnected="Nedkopplad från servern."
64
 
65
+Output.StreamEncodeError.Title="Kodningsfel"
66
+Output.StreamEncodeError.Msg="Ett kodarfel uppstod under strömmande."
67
+
68
 Output.RecordFail.Title="Det gick inte att starta inspelningen"
69
 Output.RecordFail.Unsupported="Antingen stöds inte utdataformatet eller så har det inte stöd för mer än ett ljudspår. Kontrollera dina inställningar och försök igen."
70
 Output.RecordNoSpace.Title="Otillräckligt diskutrymme"
71
 Output.RecordNoSpace.Msg="Det finns inte tillräckligt med diskutrymme för att fortsätta inspelningen."
72
 Output.RecordError.Title="Inspelningsfel"
73
 Output.RecordError.Msg="Ett okänt fel uppstod vid inspelning."
74
+Output.RecordError.EncodeErrorMsg="Ett kodarfel uppstod under inspelning."
75
 Output.ReplayBuffer.NoHotkey.Title="Ingen angivet kortkommando!"
76
 Output.ReplayBuffer.NoHotkey.Msg="Inget kortkommando för att spara reprisbufferten har angivits. Ange kortkommandot \"Spara\" för att kunna spara reprisinspelningar."
77
 
78
@@ -306,6 +316,8 @@
79
 
80
 Basic.Main.PreviewConextMenu.Enable="Aktivera förhandsvisning"
81
 
82
+Basic.Main.Preview.Disable="Inaktivera förhandsvisning"
83
+
84
 ScaleFiltering="Skalningsfiltrering"
85
 ScaleFiltering.Point="Punkt"
86
 ScaleFiltering.Bilinear="Bilinjär"
87
@@ -356,26 +368,26 @@
88
 Basic.SourceSelect.AddExisting="Lägg till befintlig"
89
 Basic.SourceSelect.AddVisible="Gör källan synlig"
90
 
91
-Basic.PropertiesWindow="Egenskaper för '%1'"
92
+Basic.PropertiesWindow="Egenskaper för \"%1\""
93
 Basic.PropertiesWindow.AutoSelectFormat="%1 (välj automatiskt: %2)"
94
 Basic.PropertiesWindow.SelectColor="Välj färg"
95
 Basic.PropertiesWindow.SelectFont="Välj typsnitt"
96
 Basic.PropertiesWindow.ConfirmTitle="Inställningarna har ändrats"
97
-Basic.PropertiesWindow.Confirm="Det finns osparade ändringar.  Vill du behålla dem?"
98
+Basic.PropertiesWindow.Confirm="Det finns osparade ändringar. Vill du behålla dem?"
99
 Basic.PropertiesWindow.NoProperties="Inga inställningar tillgängliga"
100
 Basic.PropertiesWindow.AddFiles="Lägg till Filer"
101
 Basic.PropertiesWindow.AddDir="Lägg till mapp"
102
 Basic.PropertiesWindow.AddURL="Lägg till Sökväg/URL"
103
-Basic.PropertiesWindow.AddEditableListDir="Lägg till mapp i '%1'"
104
-Basic.PropertiesWindow.AddEditableListFiles="Lägg till filer i '%1'"
105
-Basic.PropertiesWindow.AddEditableListEntry="Lägg till post i '%1'"
106
-Basic.PropertiesWindow.EditEditableListEntry="Redigera post från '%1'"
107
+Basic.PropertiesWindow.AddEditableListDir="Lägg till mapp i \"%1\""
108
+Basic.PropertiesWindow.AddEditableListFiles="Lägg till filer i \"%1\""
109
+Basic.PropertiesWindow.AddEditableListEntry="Lägg till post i \"%1\""
110
+Basic.PropertiesWindow.EditEditableListEntry="Redigera post från \"%1\""
111
 
112
 Basic.PropertiesView.FPS.Simple="Enkla bildfrekvensvärden"
113
 Basic.PropertiesView.FPS.Rational="Rationella bildfrekvensvärden"
114
 Basic.PropertiesView.FPS.ValidFPSRanges="Giltiga bildfrekvensintervall:"
115
 
116
-Basic.InteractionWindow="Interagerar med '%1'"
117
+Basic.InteractionWindow="Interagerar med \"%1\""
118
 
119
 Basic.StatusBar.Reconnecting="Frånkopplad, återansluter om %2 sekund(er) (försök %1)"
120
 Basic.StatusBar.AttemptingReconnect="Försöker att återansluta... (försök %1)"
121
@@ -389,7 +401,7 @@
122
 Basic.Filters.AsyncFilters="Audio/Video filter"
123
 Basic.Filters.AudioFilters="Ljudfilter"
124
 Basic.Filters.EffectFilters="Effektfilter"
125
-Basic.Filters.Title="Filter för '%1'"
126
+Basic.Filters.Title="Filter för \"%1\""
127
 Basic.Filters.AddFilter.Title="Filternamn"
128
 Basic.Filters.AddFilter.Text="Vänligen ange namnet på filtret"
129
 
130
@@ -476,6 +488,8 @@
131
 Basic.MainMenu.Edit.Transform.FitToScreen="Anpassa till skärmen (&F)"
132
 Basic.MainMenu.Edit.Transform.StretchToScreen="Anpa&ssa storlek till skärmen"
133
 Basic.MainMenu.Edit.Transform.CenterToScreen="&Centrera på skärmen"
134
+Basic.MainMenu.Edit.Transform.VerticalCenter="Centrera vertikalt"
135
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Centrera horisontalt"
136
 Basic.MainMenu.Edit.Order="&Ordning"
137
 Basic.MainMenu.Edit.Order.MoveUp="Flytta &upp"
138
 Basic.MainMenu.Edit.Order.MoveDown="Flytta ne&d"
139
@@ -598,7 +612,7 @@
140
 Basic.Settings.Output.Simple.Warn.VideoBitrate="Varning: Streamens videobit-rate kommer att sättas till %1, vilket är den övre gränsen för den nuvarande streaming-tjänsten. Om du är säker på att du vill gå över %1, aktivera \"avancerade kodarinställningar\" och avaktivera \"Tvinga streaming-tjänstens bit-rategränser\"."
141
 Basic.Settings.Output.Simple.Warn.AudioBitrate="Varning: Streamens ljudbit-rate kommer att sättas till %1, vilket är den övre gränsen för den nuvarande streaming-tjänsten. Om du är säker på att du vill gå över %1, aktivera \"avancerade kodarinställningar\" och avaktivera \"Tvinga streaming-tjänstens bit-rategränser\"."
142
 Basic.Settings.Output.Simple.Warn.Encoder="Varning: Inspelning med en mjukvaru-kodare i annan kvalitet än streamen kräver mer CPU-använding om du streamar och spelar in samtidigt."
143
-Basic.Settings.Output.Simple.Warn.Lossless="Varning: Förlustfri kvalitet generar oerhört stora filstorlekar!  Förlustfri kvalitet kan använda upp till 7 gigabyte hårddiskutrymme per minut vid höga upplösningar och bildfrekvenser.  Detta rekommenderas inte för långa inspelningar såvida du har riktigt mycket hårddiskutrymme tillgängligt."
144
+Basic.Settings.Output.Simple.Warn.Lossless="Varning: Förlustfri kvalitet generar oerhört stora filstorlekar! Förlustfri kvalitet kan använda upp till 7 gigabyte hårddiskutrymme per minut vid höga upplösningar och bildfrekvenser. Detta rekommenderas inte för långa inspelningar såvida du har riktigt mycket hårddiskutrymme tillgängligt."
145
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Är du säker på att du vill använda förlustfri kvalitet?"
146
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Varning angående förlustfri kvalitet!"
147
 Basic.Settings.Output.Simple.Encoder.Software="Programvara (x264)"
148
@@ -685,7 +699,8 @@
149
 Basic.Settings.Audio="Ljud"
150
 Basic.Settings.Audio.SampleRate="Samplingsfrekvens"
151
 Basic.Settings.Audio.Channels="Kanaler"
152
-Basic.Settings.Audio.MeterDecayRate="Ljudmätarens förfallfrekvens"
153
+Basic.Settings.Audio.Meters="Mätare"
154
+Basic.Settings.Audio.MeterDecayRate="Sänkningshastighet"
155
 Basic.Settings.Audio.MeterDecayRate.Fast="Snabb"
156
 Basic.Settings.Audio.MeterDecayRate.Medium="Medium (Type I PPM)"
157
 Basic.Settings.Audio.MeterDecayRate.Slow="Långsam (Type II PPM)"
158
@@ -696,12 +711,13 @@
159
 Basic.Settings.Audio.MultichannelWarning="Om du strömmar, se till att kolla om din strömtjänst stöder både inmatning och uppspelning av surroundljud. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast är några exempel på tjänster som har fullt stöd. Fastän Facebook Live och YouTube Live stöder inmatning för surroundljud mixar Facebook Live ned till stereo och YouTube Live spelar upp i bara två kanaler.\n\nLjudfiltren i OBS är kompatibla med surroundljud, fast stöd för VST-insticksmodulen garanteras inte."
160
 Basic.Settings.Audio.MultichannelWarning.Title="Aktivera surroundljud?"
161
 Basic.Settings.Audio.MultichannelWarning.Confirm="Är du säker på att du vill aktivera surroundljud?"
162
-Basic.Settings.Audio.DesktopDevice="Skrivbordsljudenhet"
163
-Basic.Settings.Audio.DesktopDevice2="Skrivbordsljudenhet 2"
164
-Basic.Settings.Audio.AuxDevice="Mikrofon/extra ljudenhet"
165
-Basic.Settings.Audio.AuxDevice2="Mikrofon/extra ljudenhet 2"
166
-Basic.Settings.Audio.AuxDevice3="Mikrofon/extra ljudenhet 3"
167
-Basic.Settings.Audio.AuxDevice4="Mikrofon/extra ljudenhet 4"
168
+Basic.Settings.Audio.Devices="Enheter"
169
+Basic.Settings.Audio.DesktopDevice="Skrivbordsljud"
170
+Basic.Settings.Audio.DesktopDevice2="Skrivbordsljud 2"
171
+Basic.Settings.Audio.AuxDevice="Mikrofon/extra ljud"
172
+Basic.Settings.Audio.AuxDevice2="Mikrofon/extra ljud 2"
173
+Basic.Settings.Audio.AuxDevice3="Mikrofon/extra ljud 3"
174
+Basic.Settings.Audio.AuxDevice4="Mikrofon/extra ljud 4"
175
 Basic.Settings.Audio.EnablePushToMute="Aktivera tryck för att tysta"
176
 Basic.Settings.Audio.PushToMuteDelay="Fördröjning för tryck för att tysta"
177
 Basic.Settings.Audio.EnablePushToTalk="Aktivera tryck för att tala"
178
@@ -719,11 +735,11 @@
179
 Basic.Settings.Advanced.FormatWarning="Varning: Andra färgformat än NV12 är avsedda för inspelning och rekommenderas inte för att strömma. Högre processoranvändning kan uppstå vid strömning p.g.a. konvertering av färgformat."
180
 Basic.Settings.Advanced.Audio.BufferingTime="Ljudbuffringstid"
181
 Basic.Settings.Advanced.Video.ColorFormat="Färgformat"
182
-Basic.Settings.Advanced.Video.ColorSpace="YUV-färgrymd"
183
-Basic.Settings.Advanced.Video.ColorRange="YUV-färgområde"
184
+Basic.Settings.Advanced.Video.ColorSpace="Färgrymd"
185
+Basic.Settings.Advanced.Video.ColorRange="Färgintervall"
186
 Basic.Settings.Advanced.Video.ColorRange.Partial="Partiell"
187
 Basic.Settings.Advanced.Video.ColorRange.Full="Full"
188
-Basic.Settings.Advanced.Audio.MonitoringDevice="Ljuduppspelningsenhet"
189
+Basic.Settings.Advanced.Audio.MonitoringDevice="Uppspelningsenhet"
190
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Standard"
191
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Inaktivera audio ducking i Windows"
192
 Basic.Settings.Advanced.StreamDelay="Strömfördröjning"
193
@@ -740,7 +756,7 @@
194
 
195
 Basic.AdvAudio="Avancerade ljudinställningar"
196
 Basic.AdvAudio.Name="Namn"
197
-Basic.AdvAudio.Volume="Volym (%)"
198
+Basic.AdvAudio.Volume="Volym"
199
 Basic.AdvAudio.Mono="Nedmixa till mono"
200
 Basic.AdvAudio.Balance="Balans"
201
 Basic.AdvAudio.SyncOffset="Sync Offset (ms)"
202
@@ -780,7 +796,7 @@
203
 Hotkeys.Down="Ned"
204
 Hotkeys.Windows="Windows"
205
 Hotkeys.Super="Super"
206
-Hotkeys.Menu="Meny"
207
+Hotkeys.Menu="Menu"
208
 Hotkeys.Space="Mellanslag"
209
 Hotkeys.NumpadNum="%1 (Numpad)"
210
 Hotkeys.NumpadMultiply="* (Numpad)"
211
@@ -788,13 +804,13 @@
212
 Hotkeys.NumpadAdd="+ (Numpad)"
213
 Hotkeys.NumpadSubtract="- (Numpad)"
214
 Hotkeys.NumpadDecimal=", (Numpad)"
215
-Hotkeys.AppleKeypadNum="%1 (Keypad)"
216
-Hotkeys.AppleKeypadMultiply="* (Keypad)"
217
-Hotkeys.AppleKeypadDivide="/ (Keypad)"
218
-Hotkeys.AppleKeypadAdd="+ (Keypad)"
219
-Hotkeys.AppleKeypadSubtract="- (Keypad)"
220
-Hotkeys.AppleKeypadDecimal=". (Keypad)"
221
-Hotkeys.AppleKeypadEqual="= (Keypad)"
222
+Hotkeys.AppleKeypadNum="%1 (numpad)"
223
+Hotkeys.AppleKeypadMultiply="* (numpad)"
224
+Hotkeys.AppleKeypadDivide="/ (numpad)"
225
+Hotkeys.AppleKeypadAdd="+ (numpad)"
226
+Hotkeys.AppleKeypadSubtract="- (numpad)"
227
+Hotkeys.AppleKeypadDecimal=". (numpad)"
228
+Hotkeys.AppleKeypadEqual="= (numpad)"
229
 Hotkeys.MouseButton="Musknapp %1"
230
 Hotkeys.Escape="Esc"
231
 
232
@@ -803,8 +819,8 @@
233
 Push-to-mute="Tryck för att tysta"
234
 Push-to-talk="Tryck för att tala"
235
 
236
-SceneItemShow="Visa '%1'"
237
-SceneItemHide="Dölj '%1'"
238
+SceneItemShow="Visa \"%1\""
239
+SceneItemHide="Dölj \"%1\""
240
 
241
 OutputWarnings.NoTracksSelected="Du måste välja minst ett spår"
242
 OutputWarnings.MultiTrackRecording="Varning: En del format (t.ex. FLV) stöder inte flera spår för varje inspelning"
243
@@ -816,6 +832,7 @@
244
 NoSources.Title="Inga källor"
245
 NoSources.Text="Det verkar som om du inte har lagt till några videokällor än, så du kommer endast att visa en tom skärm. Är du säker på att du vill göra detta?"
246
 NoSources.Text.AddSource="Du kan lägga till källor genom att klicka på plusikonen under rutan \"källor\" i huvudfönstret när som helst."
247
+NoSources.Label="Du har inga källor.\nKlicka på plusknappen nedan eller\nhögerklicka för att lägga till en."
248
 
249
 ChangeBG="Ändra färg"
250
 CustomColor="Anpassad färg"
251
@@ -834,3 +851,5 @@
252
 ResizeOutputSizeOfSource.Text="Grund- och utmatningsupplösningarna kommer att ändras till storleken för den nuvarande källan."
253
 ResizeOutputSizeOfSource.Continue="Vill du fortsätta?"
254
 
255
+PreviewTransition="Förhandsvisa övergång"
256
+
257
obs-studio-23.1.0.tar.xz/UI/data/locale/ta-IN.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ta-IN.ini Changed
117
 
1
@@ -94,7 +94,7 @@
2
 Auth.AuthFailure.Title="அங்கீகரிப்பு தோல்வி"
3
 Auth.AuthFailure.Text="%1:\n\n%2: %3 உடன் அங்கீகரிக்க தோல்வி"
4
 Auth.InvalidScope.Title="அங்கீகாரம் தேவை"
5
-Auth.InvalidScope.Text="%1 அங்கீகார தேவைகள் மாறிவிட்டன.  சில அம்சங்கள் கிடைக்காது."
6
+Auth.InvalidScope.Text="%1 அங்கீகார தேவைகள் மாறிவிட்டன. சில அம்சங்கள் கிடைக்காது."
7
 Auth.LoadingChannel.Title="சேனல் தகவல் ஏற்றுகிறது..."
8
 Auth.LoadingChannel.Text="சேனல் தகவல் %1ஏற்றுகிறது, தயவுசெய்து காத்திருக்கவும்..."
9
 Auth.ChannelFailure.Title="சேனல் நினைவேற்றுவது தோல்வியுற்றது"
10
@@ -116,7 +116,7 @@
11
 BandwidthTest.Region.Asia="ஆசியா"
12
 BandwidthTest.Region.Other="மற்ற"
13
 
14
-Basic.FirstStartup.RunWizard="தானியங்கு உள்ளமைவு வழிகாட்டியை இயக்க விரும்புகிறீர்களா?  நீங்கள் கைமுறையாக மேலும் உங்கள் அமைப்புகளை பிரதான சாளரத்தில் அமைப்புகள் பொத்தானை கிளிக் செய்வதன் மூலம் உள்ளமைக்கலாம்."
15
+Basic.FirstStartup.RunWizard="தானியங்கு உள்ளமைவு வழிகாட்டியை இயக்க விரும்புகிறீர்களா? நீங்கள் கைமுறையாக மேலும் உங்கள் அமைப்புகளை பிரதான சாளரத்தில் அமைப்புகள் பொத்தானை கிளிக் செய்வதன் மூலம் உள்ளமைக்கலாம்."
16
 Basic.FirstStartup.RunWizard.NoClicked="உங்கள் மனதை மாற்றினால், நீங்கள் தானியங்கு உள்ளமைவு வழிகாட்டி எந்த நேரத்திலும் மீண்டும் பட்டியலிருந்து கருவிகளை இயக்கலாம்."
17
 
18
 Basic.AutoConfig="தானியங்கு உள்ளமைவு வழிகாட்டி"
19
@@ -132,13 +132,13 @@
20
 Basic.AutoConfig.VideoPage.FPS.UseCurrent="தற்போதையதை பயன்படுத்தவும் (%1)"
21
 Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="ஒன்று 60 அல்லது 30, ஆனால் முடிந்தால் 60 தெரிந்தெடுக்கவும்"
22
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="ஒன்று 60 அல்லது 30, ஆனால் உயர் தெளிவுத்திறனை தெரிந்தெடுக்கவும்"
23
-Basic.AutoConfig.VideoPage.CanvasExplanation="குறிப்பு: சுற்றளவு (அடிப்படை) தெளிவுதிறனானது  நேரலை அல்லது பதிவுக்கான தெளிவுதிறனுக்கு  சமமாக இருக்கவேண்டிய  அவசியம் இல்லை. உங்கள் உண்மையான  நேரலை அல்லது பதிவுக்கான தெளிவுதிறன் சுற்றளவு தெளிவுதிறனிலிருந்து ஆதார பயன்பாடு அல்லது பிட்ரேட் தேவைகளுக்கு குறைக்கப்பட்டு இருக்கலாம்."
24
+Basic.AutoConfig.VideoPage.CanvasExplanation="குறிப்பு: சுற்றளவு (அடிப்படை) தெளிவுதிறனானது நேரலை அல்லது பதிவுக்கான தெளிவுதிறனுக்கு சமமாக இருக்கவேண்டிய அவசியம் இல்லை. உங்கள் உண்மையான நேரலை அல்லது பதிவுக்கான தெளிவுதிறன் சுற்றளவு தெளிவுதிறனிலிருந்து ஆதார பயன்பாடு அல்லது பிட்ரேட் தேவைகளுக்கு குறைக்கப்பட்டு இருக்கலாம்."
25
 Basic.AutoConfig.StreamPage="அலை தகவல்"
26
 Basic.AutoConfig.StreamPage.SubTitle="உங்கள் அலை தகவலை உள்ளிடவும்"
27
 Basic.AutoConfig.StreamPage.ConnectAccount="இணைய கணக்கு (விருப்ப)"
28
 Basic.AutoConfig.StreamPage.DisconnectAccount="கணக்கைத் துண்டிக்கவும்"
29
 Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Title="கணக்கைத் துண்டிக்கவா?"
30
-Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="இந்த மாற்றம் உடனடியாக பொருந்தும்.  உங்கள் கணக்கு துண்டிக்க விரும்புகிறீர்களா?"
31
+Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="இந்த மாற்றம் உடனடியாக பொருந்தும். உங்கள் கணக்கு துண்டிக்க விரும்புகிறீர்களா?"
32
 Basic.AutoConfig.StreamPage.UseStreamKey="நேரலை குறியீட்டை பயன்படுத்தவும்"
33
 Basic.AutoConfig.StreamPage.Service="சேவை"
34
 Basic.AutoConfig.StreamPage.Service.ShowAll="அனைத்தும் காண்பி..."
35
@@ -150,14 +150,14 @@
36
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding="விரும்பிய வன்பொருள் குறியீடு"
37
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="வன்பொருள் குறியீட்டு முறை அதிக CPU பயன்பாட்டை நீக்குகிறது, ஆனால் அதே அளவு தரத்தை பெற bitrate தேவைப்படலாம்."
38
 Basic.AutoConfig.StreamPage.StreamWarning.Title="நேரலை எச்சரிக்கை"
39
-Basic.AutoConfig.StreamPage.StreamWarning.Text="அலைவரிசை சோதனை உங்கள் சேனலுக்கு ஆடியோ இல்லாமல் சீரற்ற வீடியோ தரவை நேரலை செய்ய உள்ளது. நீங்கள் முடிந்தால், சோதனை வீடியோக்களைத் தற்காலிகமாக நிறுத்துமாறு பரிந்துரைக்கிறோம், சோதனையை  முடிந்தவரை,  தனிப்பட்ட நேரலையாக அமைக்கலாம். தொடர்ந்து?"
40
+Basic.AutoConfig.StreamPage.StreamWarning.Text="அலைவரிசை சோதனை உங்கள் சேனலுக்கு ஆடியோ இல்லாமல் சீரற்ற வீடியோ தரவை நேரலை செய்ய உள்ளது. நீங்கள் முடிந்தால், சோதனை வீடியோக்களைத் தற்காலிகமாக நிறுத்துமாறு பரிந்துரைக்கிறோம், சோதனையை முடிந்தவரை, தனிப்பட்ட நேரலையாக அமைக்கலாம். தொடர்ந்து?"
41
 Basic.AutoConfig.TestPage="இறுதி முடிவுகள்"
42
 Basic.AutoConfig.TestPage.SubTitle.Testing="இந்த நிகழ்ச்சி மிகவும் சிறந்த அமைப்புகளை மதிப்பிடுவதற்கான சோதனைகளின் தொகுப்பை இப்போது செயல்படுத்துகிறது"
43
 Basic.AutoConfig.TestPage.SubTitle.Complete="சோதனை முடிந்தது"
44
 Basic.AutoConfig.TestPage.TestingBandwidth="அலைவரிசை சோதனை செய்கிறது, இதற்கு சில நிமிடங்கள் ஆகலாம்..."
45
-Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="இணைப்பதற்கு:  %1..."
46
+Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="இணைப்பதற்கு: %1..."
47
 Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="எந்த சேவையகங்களுடன் இணைப்பதில் தோல்வி, உங்கள் இணைய இணைப்பைச் சரிபார்த்து, மீண்டும் முயற்சிக்கவும்."
48
-Basic.AutoConfig.TestPage.TestingBandwidth.Server="அலைவரிசை பரிசோதனை:  %1"
49
+Basic.AutoConfig.TestPage.TestingBandwidth.Server="அலைவரிசை பரிசோதனை: %1"
50
 Basic.AutoConfig.TestPage.TestingStreamEncoder="அலை குறியாக்கி பரிசோதனை, இது ஒரு நிமிடம் ஆகலாம்..."
51
 Basic.AutoConfig.TestPage.TestingRecordingEncoder="பதிவு குறியாக்கி பரிசோதனை, இது ஒரு நிமிடம் ஆகலாம்..."
52
 Basic.AutoConfig.TestPage.TestingRes="தெளிவுத்திறன் பரிசோதனை, இது சில நிமிடங்கள் எடுக்கலாம்..."
53
@@ -200,7 +200,6 @@
54
 Updater.NoUpdatesAvailable.Text="மேம்படுத்தல்கள் ஏதும் நடப்பில் இல்லை"
55
 Updater.FailedToLaunch="மேம்படுத்தல் தோல்வியுற்றது"
56
 Updater.GameCaptureActive.Title="விளையாட்டு பிடிப்பு செயலில்"
57
-Updater.GameCaptureActive.Text="விளையாட்டு பிடிப்பு நூலகம் தற்போது பயன்படுத்தப்படுகிறது. பிடிக்கப்பட்ட எந்த விளையாட்டுகள் / நிகழ்ச்சிகளை மூடுக (அல்லது சாளரங்கள் மறுதொடக்கம் செய்க) மீண்டும் முயற்சிக்கவும்."
58
 
59
 QuickTransitions.SwapScenes="முன்னோட்டம் / வெளியீடு காட்சிகள் இடமாற்றத்திற்கு பிறகு மாற்றவும்"
60
 QuickTransitions.SwapScenesTT="(வெளியீடு-உண்மையான காட்சியில் நீடித்தால்) வெளியீடு மற்றும் காட்சிகள் swaps பின்னர் இடம் பெயர்கிறது.\nஇது, வெளியீடு உண்மையான காட்சியில் கணக்கிற்குரியதாய் எந்த மாற்றங்களை செயல்தவிர்க்க வேண்டும்.\n\n(வெளியீட்டு அசல் காட்சி இன்னும் இருந்தால்) முன்னோட்டம் மற்றும் வெளியீட்டு காட்சிகளை இடமாற்றத்திற்குப் பிறகு மாற்றும். \n வெளியீட்டின் அசல் காட்சிக்கு மாற்றப்பட்ட எந்த மாற்றத்தையும் இது சரிசெய்யாது."
61
@@ -247,12 +246,14 @@
62
 Output.StartRecordingFailed="பதிவு துவக்க இயலவில்லை"
63
 Output.StartReplayFailed="மறுபகிர்வு தாங்கலை தொடங்க முடியவில்லை"
64
 
65
+
66
 Output.ConnectFail.Title="இணைக்க இயலவில்லை"
67
 Output.ConnectFail.BadPath="தவறான URL பாதை அல்லது இணைப்பு. அவை செல்லுபடியாகிறதா என்று உறுதிப்படுத்த உங்கள் அமைப்புகளை சரிபார்க்கவும்."
68
 Output.ConnectFail.ConnectFailed="சேவகையத்திடம் தொடர்பு கொள்ள முடியவில்லை"
69
-Output.ConnectFail.Error="சேவையகத்துடன் இணைக்க முயற்சிக்கும் போது எதிர்பாராத பிழை ஏற்பட்டது.  மேலும் தகவல்கள் பதிவு கோப்பில் உள்ளன."
70
+Output.ConnectFail.Error="சேவையகத்துடன் இணைக்க முயற்சிக்கும் போது எதிர்பாராத பிழை ஏற்பட்டது. மேலும் தகவல்கள் பதிவு கோப்பில் உள்ளன."
71
 Output.ConnectFail.Disconnected="சேவையகத்திலிருந்து துண்டிக்கப்பட்டது."
72
 
73
+
74
 Output.RecordFail.Title="பதிவு துவக்க இயலவில்லை"
75
 Output.RecordFail.Unsupported="வெளியீட்டு வடிவமைப்பு ஒன்று ஆதரிக்கப்படவில்லை அல்லது ஒன்றுக்கு மேற்பட்ட ஒலி தடங்கள் ஆதரிக்கவில்லை. தயவுசெய்து உங்கள் அமைப்புகளை சரிபார்த்து மீண்டும் முயற்சிக்கவும்."
76
 Output.RecordNoSpace.Title="போதுமான வட்டு இடம் இல்லை"
77
@@ -286,7 +287,7 @@
78
 Remux.HelpText="கோப்புகளை வடிவமாற்றம் செய்ய இந்த சாளரத்தில் விடவும், அல்லது கோப்பை உலாவ ஒரு வெற்று \"OBS பதிவு\" செல்லை தேர்ந்தெடுக்கவும்."
79
 
80
 UpdateAvailable="புதிய மேம்படுத்தல்கள் கிடைக்கிறது"
81
-UpdateAvailable.Text="பதிப்பு %1.%2.%3 தற்போது கிடைக்கிறது.  <a href='%4'>பதிவிறக்கம் செய்ய இங்கே சொடுக்கிடுக</a>"
82
+UpdateAvailable.Text="பதிப்பு %1.%2.%3 தற்போது கிடைக்கிறது. <a href='%4'>பதிவிறக்கம் செய்ய இங்கே சொடுக்கிடுக</a>"
83
 
84
 Basic.DesktopDevice1="திரைப்பலக ஒலி"
85
 Basic.DesktopDevice2="திரைப்பலக ஒலி 2"
86
@@ -300,6 +301,7 @@
87
 
88
 Basic.Main.PreviewConextMenu.Enable="முன்னோட்டம் இயக்கு"
89
 
90
+
91
 ScaleFiltering="அளவு வடிகட்டுதல்"
92
 ScaleFiltering.Point="புள்ளி"
93
 ScaleFiltering.Bilinear="இருநேர்கோடு"
94
@@ -515,7 +517,7 @@
95
 
96
 Basic.Settings.ProgramRestart="இந்த அமைப்புகள் நடைமுறைக்கு வர நிகழச்சி நிரலை மறுதொடக்கம் செய்ய வேண்டும்."
97
 Basic.Settings.ConfirmTitle="மாற்றம் உறுதி செய்தல்"
98
-Basic.Settings.Confirm="சேமிக்கப்படாத மாற்றங்கள் உள்ளன.  மாற்றங்களை சேமிக்கவா?"
99
+Basic.Settings.Confirm="சேமிக்கப்படாத மாற்றங்கள் உள்ளன. மாற்றங்களை சேமிக்கவா?"
100
 
101
 Basic.Settings.General="பொதுவானவை"
102
 Basic.Settings.General.Theme="வண்ண அமைப்பு"
103
@@ -606,8 +608,6 @@
104
 Basic.Settings.Audio="ஒலி"
105
 Basic.Settings.Audio.SampleRate="மாதிரி விகிதம்"
106
 Basic.Settings.Audio.MeterDecayRate.Fast="வேகமாக"
107
-Basic.Settings.Audio.DesktopDevice="திரைப்பலக ஒலி 2"
108
-Basic.Settings.Audio.DesktopDevice2="திரைப்பலக ஒலி 2"
109
 Basic.Settings.Audio.Disabled="முடக்கப்பட்டது"
110
 
111
 Basic.Settings.Advanced="மேம்பட்டவை"
112
@@ -648,3 +648,4 @@
113
 
114
 ResizeOutputSizeOfSource.Text="அடிப்படை மற்றும் வெளியீடு தெளிவுத்திறன்கள் தற்போதைய மூலத்தின் அளவிற்கு மாற்றப்படும்."
115
 
116
+
117
obs-studio-23.1.0.tar.xz/UI/data/locale/th-TH.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/th-TH.ini Changed
36
 
1
@@ -72,7 +72,7 @@
2
 BandwidthTest.Region.Asia="เอเชีย"
3
 BandwidthTest.Region.Other="อื่นๆ"
4
 
5
-Basic.FirstStartup.RunWizard="คุณต้องการเรียกใช้ตัวช่วยสร้างการกำหนดค่าอัตโนมัติ  นอกจากนี้คุณด้วยตนเองสามารถกำหนดค่าการตั้งค่า โดยคลิกปุ่มการตั้งค่าในหน้าต่างหลัก"
6
+Basic.FirstStartup.RunWizard="คุณต้องการเรียกใช้ตัวช่วยสร้างการกำหนดค่าอัตโนมัติ นอกจากนี้คุณด้วยตนเองสามารถกำหนดค่าการตั้งค่า โดยคลิกปุ่มการตั้งค่าในหน้าต่างหลัก"
7
 
8
 Basic.AutoConfig="การปรับแต่งอัตโนมัติ"
9
 Basic.AutoConfig.ApplySettings="ใช้การตั้งค่า"
10
@@ -119,10 +119,12 @@
11
 ConfirmRemove.Text="คุณแน่ใจแล้วหรือที่จะลบ '$1'?"
12
 
13
 
14
+
15
 Output.ConnectFail.Title="ไม่สามารถเชื่อมต่อได้"
16
 Output.ConnectFail.ConnectFailed="ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์"
17
 Output.ConnectFail.Disconnected="ถูกตัดออกจากเซิร์ฟเวอร์"
18
 
19
+
20
 Output.RecordNoSpace.Title="พื้นที่เก็บข้อมูลไม่เพียงพอ"
21
 Output.RecordError.Title="บันทึกข้อผิดพลาด"
22
 Output.ReplayBuffer.NoHotkey.Title="ไม่มีการตั้งค่าคีย์ลัด"
23
@@ -140,6 +142,7 @@
24
 
25
 
26
 
27
+
28
 Deinterlacing.Discard="ยกเลิก"
29
 
30
 
31
@@ -245,3 +248,4 @@
32
 
33
 
34
 
35
+
36
obs-studio-23.1.0.tar.xz/UI/data/locale/tl-PH.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/tl-PH.ini Changed
79
 
1
@@ -170,7 +170,7 @@
2
 Updater.NoUpdatesAvailable.Text="Walang mga update ang kasalukuyang magagamit"
3
 Updater.FailedToLaunch="Bigong malunsad ang updater"
4
 Updater.GameCaptureActive.Title="Ang Game capture ay aktibo"
5
-Updater.GameCaptureActive.Text="Ang hook library ng game capture ay kasalukuyang ginagamit. Mangyari lamang isara ang anumang mga laro/programang nahuli (o i-start muli ang windows) at subukan muli."
6
+Updater.GameCaptureActive.Text="Ang hook library ng game capture ay kasalukuyang ginagamit. Mangyari lamang isara ang anumang mga laro/programang nahuli (o i-start muli ang Windows) at subukan muli."
7
 
8
 QuickTransitions.SwapScenes="Pagpalitin ang Preview/Output ng mga Eksena Matapos ang Pag-transisyon"
9
 QuickTransitions.SwapScenesTT="Pinagpapalit ang preview at output ng mga eksena matapos ang pagtransisyon (kung ang orihinal na eksena ng output ay nariyan pa).\nHindi nito mapapawalang-bisa ang mga pagbabagong napatupad sa orihinal na eksena ng output."
10
@@ -218,6 +218,7 @@
11
 Output.StartReplayFailed="Bigong masimulan ang replay buffer"
12
 Output.StartFailedGeneric="Bigong masimulan ang output. Mangyari lamang tingnan ang log para sa mga detalye. \n\nTandaan: Kung ikaw ay gumagamit ng NVENC o AMD na mga encoder, siguraduhing ang iyong mga video driver ay naka-update."
13
 
14
+
15
 Output.ConnectFail.Title="Bigong kumonekta"
16
 Output.ConnectFail.BadPath="Hindi wasto ang Path o Connection URL. Mangyari lamang tingnan ang iyong mga setting upang makumpirma na sila ay balido."
17
 Output.ConnectFail.ConnectFailed="Bigong kumonekta sa serber"
18
@@ -225,6 +226,7 @@
19
 Output.ConnectFail.Error="Isang di-inaasahang error ang naganap habang sinusubukang kumonekta sa serber. Karagdagang impormasyon ay nasa log file."
20
 Output.ConnectFail.Disconnected="Nadiskonek mula sa serber."
21
 
22
+
23
 Output.RecordFail.Title="Bigong masimulan ang pa-rerekord"
24
 Output.RecordFail.Unsupported="Ang output format ay maaaring hindi suportado o di kaya'y hindi nagsusuporta ng higit sa isang audio track. Mangyari lamang tingnan ang iyong mga setting at subukan muli."
25
 Output.RecordNoSpace.Title="Hindi sapat ang espasyo sa disk"
26
@@ -266,6 +268,7 @@
27
 
28
 Basic.Main.PreviewConextMenu.Enable="Paganahin ang Preview"
29
 
30
+
31
 ScaleFiltering="I-scale ang pag-fifilter"
32
 ScaleFiltering.Point="Punto"
33
 ScaleFiltering.Bilinear="Bilinear"
34
@@ -617,7 +620,6 @@
35
 Basic.Settings.Audio="Audio"
36
 Basic.Settings.Audio.SampleRate="Sample Rate"
37
 Basic.Settings.Audio.Channels="Mga Channel"
38
-Basic.Settings.Audio.MeterDecayRate="Audio Meter Decay Rate"
39
 Basic.Settings.Audio.MeterDecayRate.Fast="Mabilis"
40
 Basic.Settings.Audio.MeterDecayRate.Medium="Medium (Type I PPM)"
41
 Basic.Settings.Audio.MeterDecayRate.Slow="Mabagal (Type II PPM)"
42
@@ -625,11 +627,6 @@
43
 Basic.Settings.Audio.MultichannelWarning="Kung nagsi-stream, tingnan kung ang streaming service ay sinusuportahan ang parehong surround sound ingest pat ang surround sound playback. Ang Twitch, Facebook 360 Live, Mixer RTMP, Smashcast ay mga halimbawa kung saan ang surround sound ay sinusuportahan ng buo. Kahit na ang Facebook Live at YouTube live ay parehong tumatanggap ng surround ingest, ang Facebook Live ay nagda-downmix sa stereo, at ang YouTube Live ay nagpapakita lamang ng dalawang channel. \n\nAng OBS audio na mga filter ay akma sa surround sound, pero ang suporta sa VST plugin ay hindi garantisado."
44
 Basic.Settings.Audio.MultichannelWarning.Title="Mapapagana ba ang tunog ng palibot ng audio?"
45
 Basic.Settings.Audio.MultichannelWarning.Confirm="Sigurado ka ba na gusto mong paganahin ang tunog ng palibot ng audio?"
46
-Basic.Settings.Audio.DesktopDevice="Apatarong Desktop Awdiyo"
47
-Basic.Settings.Audio.DesktopDevice2="Aparatong Desktop Awdiyo 2"
48
-Basic.Settings.Audio.AuxDevice="Mic/Katulong na Aparato ng Awdiyo"
49
-Basic.Settings.Audio.AuxDevice2="Mic/Katulong na Aparato ng Awdiyo 2"
50
-Basic.Settings.Audio.AuxDevice3="Mic/Katulong na Aparato ng Awdiyo 3"
51
 Basic.Settings.Audio.EnablePushToMute="Paganahin Itulak-para-ma-i-mute"
52
 Basic.Settings.Audio.PushToMuteDelay="Pag-antala sa pagtulak-sa-walang tunog"
53
 Basic.Settings.Audio.EnablePushToTalk="Paganahin itulak-sa-usapan"
54
@@ -646,11 +643,8 @@
55
 Basic.Settings.Advanced.FormatWarning="Babala: Ang mga format ng mga kulay maliban sa NV12 ay ginawa unsa lahat para sa pagrerekord, at hindi nirerekomenda para sa pag-stream. Ang pag-stream ay maaaring magdulot ng dagdag na gamit sa CPU dahil sa pagbago ng format ng kulay."
56
 Basic.Settings.Advanced.Audio.BufferingTime="Bilis ng Pag-buffer ng Audio"
57
 Basic.Settings.Advanced.Video.ColorFormat="Fomat ng Kulay"
58
-Basic.Settings.Advanced.Video.ColorSpace="YUV Espasyo ng Kulay"
59
-Basic.Settings.Advanced.Video.ColorRange="YUV Hanay ng Kulay"
60
 Basic.Settings.Advanced.Video.ColorRange.Partial="Panguna"
61
 Basic.Settings.Advanced.Video.ColorRange.Full="Buo"
62
-Basic.Settings.Advanced.Audio.MonitoringDevice="Kagamitang Pangsubaybay ng Audio"
63
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Default"
64
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Huwag paganahin ang audio ducking ng Windows"
65
 Basic.Settings.Advanced.StreamDelay="Antala sa Pag-stream"
66
@@ -664,7 +658,6 @@
67
 
68
 Basic.AdvAudio="Pinahusay na mga Katangian ng Audio"
69
 Basic.AdvAudio.Name="Pangalan"
70
-Basic.AdvAudio.Volume="Lakas ng tunog (%)"
71
 Basic.AdvAudio.Mono="I-downmix para maging Mono"
72
 Basic.AdvAudio.SyncOffset="Sync Offset (ms)"
73
 Basic.AdvAudio.Monitoring="Pagsubaybay sa Audio"
74
@@ -738,3 +731,4 @@
75
 
76
 
77
 
78
+
79
obs-studio-23.1.0.tar.xz/UI/data/locale/tr-TR.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/tr-TR.ini Changed
251
 
1
@@ -49,7 +49,7 @@
2
 Enable="Etkinleştir"
3
 DisableOSXVSync="OSX V-Sync'i Devre Dışı Bırak"
4
 ResetOSXVSyncOnExit="OSX V-Sync'i Çıkışta Sıfırla"
5
-HighResourceUsage="Kodlama aşırı yüklendi!  Video ayarlarını kapatmayı veya daha hızlı bir kodlama ön ayarını kullanmayı düşünün."
6
+HighResourceUsage="Kodlama aşırı yüklendi! Video ayarlarını kapatmayı veya daha hızlı bir kodlama ön ayarını kullanmayı düşünün."
7
 Transition="Geçiş"
8
 QuickTransitions="Hızlı Geçiş"
9
 Left="Sol"
10
@@ -81,23 +81,32 @@
11
 VerticalLayout="Dikey Düzen"
12
 Group="Grup"
13
 DoNotShowAgain="Tekrar gösterme"
14
+Default="(Varsayılan)"
15
+Calculating="Hesaplanıyor..."
16
 
17
 AlreadyRunning.Title="OBS zaten çalışıyor"
18
-AlreadyRunning.Text="OBS zaten çalışıyor!  Bunu yapmak istemediyseniz, lütfen yeni bir örneği çalıştırmayı denemeden önce varolan tüm OBS örneklerini  kapatın. OBS'yi sistem tablasına küçülmesi için ayarladıysanız, lütfen hala çalışıp çalışmadığını görmek için orayı kontrol edin."
19
+AlreadyRunning.Text="OBS zaten çalışıyor! Bunu yapmak istemediyseniz, lütfen yeni bir örneği çalıştırmayı denemeden önce varolan tüm OBS örneklerini kapatın. OBS'yi sistem tablasına küçülmesi için ayarladıysanız, lütfen hala çalışıp çalışmadığını görmek için orayı kontrol edin."
20
 AlreadyRunning.LaunchAnyway="Yine de Başlat"
21
 
22
+DockCloseWarning.Title="Yuvalanabilir Pencere Kapatma"
23
+DockCloseWarning.Text="Az önce yuvalanabilir bir pencere kapattınız. Eğer tekrardan göstermek istiyorsanız, Menü çubuğundan Görüntüle → Paneller menüsünü kullanın."
24
 
25
 Auth.Authing.Title="Kimlik doğrulanıyor..."
26
+Auth.Authing.Text="%1 ile doğrulanıyor, lütfen bekleyin..."
27
 Auth.AuthFailure.Title="Kimlik Doğrulaması Başarısız"
28
 Auth.AuthFailure.Text="%1 kimliği doğrulanamadı:\n\n%2: %3"
29
 Auth.InvalidScope.Title="Kimlik Doğrulaması Gerekli"
30
 Auth.InvalidScope.Text="%1 için kimlik doğrulama gereksinimleri değişti. Bazı özellikler kullanılamayabilir."
31
+Auth.LoadingChannel.Title="Kanal bilgileri yükleniyor..."
32
+Auth.LoadingChannel.Text="%1 için kanal bilgileri yükleniyor, lütfen bekleyin..."
33
 Auth.ChannelFailure.Title="Kanal yüklenemedi"
34
 Auth.ChannelFailure.Text="%1 için kanal bilgisi yüklenemedi\n\n%2: %3"
35
 Auth.Chat="Sohbet"
36
 Auth.StreamInfo="Yayın Bilgisi"
37
 TwitchAuth.Stats="Twitch İstatistikleri"
38
 TwitchAuth.Feed="Twitch Etkinlik akışı"
39
+TwitchAuth.TwoFactorFail.Title="Yayın anahtarı sorgulanamadı"
40
+TwitchAuth.TwoFactorFail.Text="OBS Twitch hesabına bağlanamadı. Lütfen iki-faktörlü doğrulamanın <a href='https://www.twitch.tv/settings/security'>Twitch güvenlik ayarlarında ayarlandığından emin olun </a> Bu yayın yapmanız için gereklidir."
41
 
42
 Copy.Filters="Filtreleri Kopyala"
43
 Paste.Filters="Filtreleri Yapıştır"
44
@@ -230,6 +239,8 @@
45
 ConfirmStop.Title="Yayın Durdurulsun Mu?"
46
 ConfirmStop.Text="Yayını gerçekten durdurmak istiyor musunuz?"
47
 
48
+ConfirmBWTest.Title="Bant genişliği testini başlat?"
49
+ConfirmBWTest.Text="OBS'i bant genişliği test modunda yapılandırdınız. Bu mod, kanalınız yayına girmeden ağ testi yapmanıza olanak sağlar. Test tamamlandıktan sonra, izleyicilerin yayını görebilmesi için bu modu devre dışı bırakmanız gerekecektir.\n\nDevam etmek istiyor musunuz?"
50
 
51
 ConfirmExit.Title="OBS'den Çıkılsın mı?"
52
 ConfirmExit.Text="OBS şu anda etkin. Tüm yayınlar/kayıtlar kapatılacaktır. Çıkmak istediğinize emin misiniz?"
53
@@ -243,19 +254,24 @@
54
 Output.StartReplayFailed="Tekrar oynatma arabelleği başlatılamadı"
55
 Output.StartFailedGeneric="Çıkışı başlatma başarısız oldu. Detaylar için lütfen günlüğe bakın: \n\nNVENC veya AMD kodlayıcılarını kullanıyorsanız, video sürücülerinin güncel olduğundan emin olun."
56
 
57
+
58
 Output.ConnectFail.Title="Bağlantı kurulamadı"
59
 Output.ConnectFail.BadPath="Bağlantı adresiniz geçersiz. Ayarlarınızı kontrol edin ve geçerli bir adres giriniz."
60
 Output.ConnectFail.ConnectFailed="Sunucuya bağlanılamadı"
61
 Output.ConnectFail.InvalidStream="Belirtilen kanal veya yayın anahtarına erişilemedi, lütfen yayın anahtarınızı iyi kontrol edin. Eğer doğruysa, sunucuya bağlanırken sorun oluyor olabilir."
62
-Output.ConnectFail.Error="Sunucuya bağlanmaya çalışırken beklenmeyen bir hata oluştu.  Daha fazla bilgi için günlük dosyasına bakınız."
63
+Output.ConnectFail.Error="Sunucuya bağlanmaya çalışırken beklenmeyen bir hata oluştu. Daha fazla bilgi için günlük dosyasına bakınız."
64
 Output.ConnectFail.Disconnected="Sunucu bağlantısı kesildi."
65
 
66
+Output.StreamEncodeError.Title="Kodlama hatası"
67
+Output.StreamEncodeError.Msg="Yayın sırasında bir kodlayıcı hatası oluştu."
68
+
69
 Output.RecordFail.Title="Kayıt başlatılamadı"
70
 Output.RecordFail.Unsupported="Çıkış biçimi ya desteklenmiyor ya da birden fazla sesi desteklemiyor. Lütfen ayarlarınızı kontrol edip tekrar deneyin."
71
 Output.RecordNoSpace.Title="Yetersiz disk alanı"
72
 Output.RecordNoSpace.Msg="Kayıt'aa devam etmek yeterli disk alanı yok."
73
 Output.RecordError.Title="Kayıt Hatası"
74
 Output.RecordError.Msg="Kayıt anında bir hata oluştu."
75
+Output.RecordError.EncodeErrorMsg="Kayıt sırasında bir kodlayıcı hatası oluştu."
76
 Output.ReplayBuffer.NoHotkey.Title="Kısayol tuşu ayarlanmadı!"
77
 Output.ReplayBuffer.NoHotkey.Msg="Yeniden oynatma arabelleği için ayarlı bir kısayol tuşu yok. Lütfen yeniden oynatma kayıtlarını kaydetmek için \"Kaydet\" kısayol tuşunu ayarlayın."
78
 
79
@@ -276,6 +292,8 @@
80
 Remux.FinishedTitle="Remux tamamlandı"
81
 Remux.Finished="Kayıt remux edildi"
82
 Remux.FinishedError="Kayıt remux edildi, ancak dosya tamamlanmamış olabilir"
83
+Remux.SelectRecording="OBS Kaydı seçin..."
84
+Remux.SelectTarget="Hedef dosyayı seçin..."
85
 Remux.FileExistsTitle="Hedef dosyalar var"
86
 Remux.FileExists="Aşağıdaki hedef dosyalar zaten var. Var olan dosyaları değiştirmek istiyor musunuz?"
87
 Remux.ExitUnfinishedTitle="Remux devam ediyor"
88
@@ -283,7 +301,7 @@
89
 Remux.HelpText="Remux etmek için dosyaları bu pencereye sürükleyip bırakın veya bir dosyaya göz atmak için boş bir \"OBS Kaydı\" hücresini seçin."
90
 
91
 UpdateAvailable="Yeni Güncelleştirme Mevcut"
92
-UpdateAvailable.Text="%1.%2.%3 sürümü şimdi kullanılabilir.  <a href='%4'>İndirmek için tıklayın</a>"
93
+UpdateAvailable.Text="%1.%2.%3 sürümü şimdi kullanılabilir. <a href='%4'>İndirmek için tıklayın</a>"
94
 
95
 Basic.DesktopDevice1="Masaüstü Ses"
96
 Basic.DesktopDevice2="Masaüstü Ses 2"
97
@@ -297,11 +315,14 @@
98
 
99
 Basic.Main.PreviewConextMenu.Enable="Önizlemeyi Etkinleştir"
100
 
101
+Basic.Main.Preview.Disable="Önizlemeyi Devre dışı bırak"
102
+
103
 ScaleFiltering="Boyut Filtreleme"
104
 ScaleFiltering.Point="Nokta"
105
 ScaleFiltering.Bilinear="Bilinear"
106
 ScaleFiltering.Bicubic="Bikübik"
107
 ScaleFiltering.Lanczos="Lanczos"
108
+ScaleFiltering.Area="Alan"
109
 
110
 Deinterlacing="Deinterlacing"
111
 Deinterlacing.Discard="Discard"
112
@@ -466,6 +487,8 @@
113
 Basic.MainMenu.Edit.Transform.FitToScreen="Ekrana Sığdır (&F)"
114
 Basic.MainMenu.Edit.Transform.StretchToScreen="Ekrana genişlet (&S)"
115
 Basic.MainMenu.Edit.Transform.CenterToScreen="Ekrana Ortala (&C)"
116
+Basic.MainMenu.Edit.Transform.VerticalCenter="Dikeye Hizala"
117
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Yataya Hizala"
118
 Basic.MainMenu.Edit.Order="Sırala (&O)"
119
 Basic.MainMenu.Edit.Order.MoveUp="Y&ukarı Taşı"
120
 Basic.MainMenu.Edit.Order.MoveDown="Aşağı Taşı (&D)"
121
@@ -542,6 +565,7 @@
122
 Basic.Settings.General.OverflowSelectionHidden="Kaynak görünmese bile taşmayı göster"
123
 Basic.Settings.General.SwitchOnDoubleClick="Çift tıklamada sahneye geçiş yap"
124
 Basic.Settings.General.StudioPortraitLayout="Dikey düzeni etkinleştir"
125
+Basic.Settings.General.TogglePreviewProgramLabels="Önizlemeyi göster/program etiketleri"
126
 Basic.Settings.General.Multiview="Çoklu görüntü"
127
 Basic.Settings.General.Multiview.MouseSwitch="Sahneler arası geçiş için tıkla"
128
 Basic.Settings.General.Multiview.DrawSourceNames="Sahne adlarını göster"
129
@@ -558,7 +582,7 @@
130
 Basic.Settings.Stream.Custom.UseAuthentication="Kimlik doğrulaması kullan"
131
 Basic.Settings.Stream.Custom.Username="Kullanıcı adı"
132
 Basic.Settings.Stream.Custom.Password="Şifre"
133
-Basic.Settings.Stream.BandwidthTestMode="Bant genişliği Test modunu etkinleştir"
134
+Basic.Settings.Stream.BandwidthTestMode="Bant Genişliği Test Modunu Etkinleştir"
135
 
136
 Basic.Settings.Output="Çıkış"
137
 Basic.Settings.Output.Format="Kayıt Biçimi"
138
@@ -576,16 +600,16 @@
139
 Basic.Settings.Output.ReplayBuffer.Estimate="Tahmini bellek kullanımı: %1 MB"
140
 Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Bellek kullanımını tahmin edemezsin. Lütfen maksimum bellek sınırını ayarlayın."
141
 Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(Not: kısayol tuşları bölümünde yeniden oynatma ara belleği için kısayol tuşu ayarladığınızdan emin olun)"
142
-Basic.Settings.Output.ReplayBuffer.Prefix="Tekrar Oynatma Arabelleği Dosya Adı Öneki"
143
-Basic.Settings.Output.ReplayBuffer.Suffix="Suffix"
144
+Basic.Settings.Output.ReplayBuffer.Prefix="Tekrar Oynatma Arabelleği Dosya Adı Ön Eki"
145
+Basic.Settings.Output.ReplayBuffer.Suffix="Son Eki"
146
 Basic.Settings.Output.Simple.SavePath="Kayıt Yolu"
147
 Basic.Settings.Output.Simple.RecordingQuality="Kayıt Kalitesi"
148
 Basic.Settings.Output.Simple.RecordingQuality.Stream="Canlı Yayın ile Aynı"
149
 Basic.Settings.Output.Simple.RecordingQuality.Small="Yüksek Kalite, Normal Dosya Boyutu"
150
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Aynı Kaliteye Yakın, Büyük Dosya Boyutu"
151
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Kayıpsız Kalite, Çok Büyük Dosya Boyutu"
152
-Basic.Settings.Output.Simple.Warn.VideoBitrate="Uyarı: Yayın video bit hızı  %1 olarak ayarlanacak, bu şu anki yayın hizmeti için üst sınırdır. Eğer %1 değerinin üstüne çıkmak istediğinizden eminseniz, gelişmiş kodlayıcı seçeneklerini etkinleştirin ve \"Yayın hizmetini bit hızı sınırlarına zorla\" işaretini kaldırın."
153
-Basic.Settings.Output.Simple.Warn.AudioBitrate="Uyarı: Yayın audio bit hızı  %1 olarak ayarlanacak, bu şu anki yayın hizmeti için üst sınırdır. Eğer %1 değerinin üstüne çıkmak istediğinizden eminseniz, gelişmiş kodlayıcı seçeneklerini etkinleştirin ve \"Yayın hizmetini bit hızı sınırlarına zorla\" işaretini kaldırın."
154
+Basic.Settings.Output.Simple.Warn.VideoBitrate="Uyarı: Yayın video bit hızı %1 olarak ayarlanacak, bu şu anki yayın hizmeti için üst sınırdır. Eğer %1 değerinin üstüne çıkmak istediğinizden eminseniz, gelişmiş kodlayıcı seçeneklerini etkinleştirin ve \"Yayın hizmetini bit hızı sınırlarına zorla\" işaretini kaldırın."
155
+Basic.Settings.Output.Simple.Warn.AudioBitrate="Uyarı: Yayın audio bit hızı %1 olarak ayarlanacak, bu şu anki yayın hizmeti için üst sınırdır. Eğer %1 değerinin üstüne çıkmak istediğinizden eminseniz, gelişmiş kodlayıcı seçeneklerini etkinleştirin ve \"Yayın hizmetini bit hızı sınırlarına zorla\" işaretini kaldırın."
156
 Basic.Settings.Output.Simple.Warn.Encoder="Uyarı: Bir yazılım kodlayıcı ile yayın kalitesinden farklı kayıt yapmak eğer aynı anda hem kayıt hem de yayın yapıyorsanız ilave CPU kullanımı gerektirecektir."
157
 Basic.Settings.Output.Simple.Warn.Lossless="Uyarı: Kayıpsız kalite muazzam büyük dosya boyutları oluşturur! Kayıpsız kalite, yüksek çözünürlüklerde ve kare hızlarında, dakikada 7 gigabyte'a kadar disk alanı kullanabilir. Kayıpsız, kullanılabilir disk alanınız çok büyük değilse, uzun kayıtlar için tavsiye edilmez."
158
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Kayıpsız kalitede kullanmak istediğinizden emin misiniz?"
159
@@ -664,7 +688,7 @@
160
 Basic.Settings.Video.Denominator="Payda"
161
 Basic.Settings.Video.Renderer="İşleyici"
162
 Basic.Settings.Video.InvalidResolution="Geçersiz çözünürlük değeri. [Genişlik]x[Yükseklik] şeklinde olmalıdır. (örnek 1920x1080)"
163
-Basic.Settings.Video.CurrentlyActive="Video çıkışı şu anda etkin durumda.  Video ayarlarını değiştirmek için lütfen bütün çıkışları kapalı duruma getirin."
164
+Basic.Settings.Video.CurrentlyActive="Video çıkışı şu anda etkin durumda. Video ayarlarını değiştirmek için lütfen bütün çıkışları kapalı duruma getirin."
165
 Basic.Settings.Video.DisableAero="Aero'yu Devre Dışı Bırak"
166
 
167
 Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (En hızlı, ancak boyutlandırmada bulanık görüntü)"
168
@@ -674,7 +698,6 @@
169
 Basic.Settings.Audio="Ses"
170
 Basic.Settings.Audio.SampleRate="Örnekleme Sıklığı"
171
 Basic.Settings.Audio.Channels="Kanallar"
172
-Basic.Settings.Audio.MeterDecayRate="Ses Ölçer Sönüm Hızı"
173
 Basic.Settings.Audio.MeterDecayRate.Fast="Hızlı"
174
 Basic.Settings.Audio.MeterDecayRate.Medium="Orta (Tür I PPM)"
175
 Basic.Settings.Audio.MeterDecayRate.Slow="Yavaş (Tür II PPM)"
176
@@ -685,12 +708,13 @@
177
 Basic.Settings.Audio.MultichannelWarning="Yayın yapılıyorsa, yayın hizmetinizin hem surround ses alınımını hem de surround ses geri oynatımını desteklediğinden emin olun. Twitch, Facebook 360 Live, Karıştırıcı RTMP, Smashcast, surround sesin tam desteklendiği örneklerdir. Facebook Live'ın ve YouTube Live'ın her ikisi de surround alınımını desteklese de, Facebook Live stereo'ya indirger, ve YouTube Live sadece iki kanal oynatır.\n\nOBS ses filtreleri surround sesle uyumludur, ancak VST eklenti desteği kesin değildir."
178
 Basic.Settings.Audio.MultichannelWarning.Title="Surround ses etkinleştirilsin mi?"
179
 Basic.Settings.Audio.MultichannelWarning.Confirm="Surround sesi etkinleştirmek istediğinize emin misiniz?"
180
-Basic.Settings.Audio.DesktopDevice="Masaüstü Ses Aygıtı"
181
-Basic.Settings.Audio.DesktopDevice2="Masaüstü Ses Aygıtı 2"
182
-Basic.Settings.Audio.AuxDevice="Mic/yardımcı ses aygıtı"
183
-Basic.Settings.Audio.AuxDevice2="Mic/yardımcı ses aygıtı 2"
184
-Basic.Settings.Audio.AuxDevice3="Mic/yardımcı ses aygıtı 3"
185
-Basic.Settings.Audio.AuxDevice4="Mikrofon/Yardımcı Ses Aygıtı 4"
186
+Basic.Settings.Audio.Devices="Cihazlar"
187
+Basic.Settings.Audio.DesktopDevice="Masaüstü Sesi"
188
+Basic.Settings.Audio.DesktopDevice2="Masaüstü Sesi 2"
189
+Basic.Settings.Audio.AuxDevice="Mikrofon/Yardımcı Ses"
190
+Basic.Settings.Audio.AuxDevice2="Mikrofon/Yardımcı Ses 2"
191
+Basic.Settings.Audio.AuxDevice3="Mikrofon/Yardımcı Ses 3"
192
+Basic.Settings.Audio.AuxDevice4="Mikrofon/Yardımcı Ses 4"
193
 Basic.Settings.Audio.EnablePushToMute="Bas sustur'u etkinleştir"
194
 Basic.Settings.Audio.PushToMuteDelay="Bas sustur gecikmesi"
195
 Basic.Settings.Audio.EnablePushToTalk="Bas-Konuş'u Etkinleştir"
196
@@ -708,11 +732,11 @@
197
 Basic.Settings.Advanced.FormatWarning="Uyarı: NV12 dışındaki renk biçimleri esas olarak kayıt için tasarlanmıştır ve yayın anında kullanma önerilmez. Yayın nedeni ile renk biçimini dönüştürme çok fazla İŞLEMCİ kullanımına sebep olabilir."
198
 Basic.Settings.Advanced.Audio.BufferingTime="Ses Arabelleğe Alma Süresi"
199
 Basic.Settings.Advanced.Video.ColorFormat="Renk Biçimi"
200
-Basic.Settings.Advanced.Video.ColorSpace="YUV Renk Alanı"
201
-Basic.Settings.Advanced.Video.ColorRange="YUV Renk Aralığı"
202
+Basic.Settings.Advanced.Video.ColorSpace="Renk Uzayı"
203
+Basic.Settings.Advanced.Video.ColorRange="Renk Aralığı"
204
 Basic.Settings.Advanced.Video.ColorRange.Partial="Kısmi"
205
 Basic.Settings.Advanced.Video.ColorRange.Full="Tam"
206
-Basic.Settings.Advanced.Audio.MonitoringDevice="Ses İzleme Aygıtı"
207
+Basic.Settings.Advanced.Audio.MonitoringDevice="İzleme Aygıtı"
208
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Varsayılan"
209
 Basic.Settings.Advanced.Audio.DisableAudioDucking="Windows ses alçaltmasını devre dışı bırak"
210
 Basic.Settings.Advanced.StreamDelay="Yayın Gecikmesi"
211
@@ -729,7 +753,7 @@
212
 
213
 Basic.AdvAudio="Gelişmiş Ses Özellikleri"
214
 Basic.AdvAudio.Name="İsim"
215
-Basic.AdvAudio.Volume="Ses Düzeyi (%)"
216
+Basic.AdvAudio.Volume="Ses"
217
 Basic.AdvAudio.Mono="Mono Karıştırmayı Azalt"
218
 Basic.AdvAudio.Balance="Denge"
219
 Basic.AdvAudio.SyncOffset="Eşitleme Uzaklığı (ms)"
220
@@ -748,7 +772,7 @@
221
 Basic.SystemTray.Show="Göster"
222
 Basic.SystemTray.Hide="Gizle"
223
 
224
-Basic.SystemTray.Message.Reconnecting="Bağlantı kesildi.  Yeniden bağlanılıyor..."
225
+Basic.SystemTray.Message.Reconnecting="Bağlantı kesildi. Yeniden bağlanılıyor..."
226
 
227
 Hotkeys.Insert="Ekle"
228
 Hotkeys.Delete="Sil"
229
@@ -785,6 +809,7 @@
230
 Hotkeys.AppleKeypadDecimal=". (Tuş takımı)"
231
 Hotkeys.AppleKeypadEqual="= (Tuş takımı)"
232
 Hotkeys.MouseButton="%1 Fare"
233
+Hotkeys.Escape="Esc"
234
 
235
 Mute="Sesi Kapat"
236
 Unmute="Sesi Aç"
237
@@ -804,6 +829,7 @@
238
 NoSources.Title="Kaynak Yok"
239
 NoSources.Text="Henüz hiç video kaynağı eklemediniz gibi görünüyor, bu yüzden sadece boş bir ekran çıktısı alacaksınız. Bunu yapmak istediğinize emin misiniz?"
240
 NoSources.Text.AddSource="Ana pencerede Kaynaklar kutusundaki + simgesine tıklayarak istediğiniz zaman kaynak ekleyebilirsiniz."
241
+NoSources.Label="Herhangi bir kaynağınız yok. \n Bir kaynak eklemek için aşağıdaki tuşlara basın yada sağ tıklayın."
242
 
243
 ChangeBG="Renk Ayarla"
244
 CustomColor="Özel Renk"
245
@@ -822,3 +848,5 @@
246
 ResizeOutputSizeOfSource.Text="Temel ve çıkış çözünürlüğü mevcut kaynağın boyutuna göre yeniden boyutlandırılacaktır."
247
 ResizeOutputSizeOfSource.Continue="Devam etmek istiyor musunuz?"
248
 
249
+PreviewTransition="Geçişi Önizle"
250
+
251
obs-studio-23.1.0.tar.xz/UI/data/locale/uk-UA.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/uk-UA.ini Changed
210
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="Вертикальне компонування"
3
 Group="Група"
4
 DoNotShowAgain="Більше не показувати"
5
+Default="(За замовчуванням)"
6
+Calculating="Обчислення..."
7
 
8
 AlreadyRunning.Title="OBS вже виконується"
9
 AlreadyRunning.Text="OBS вже запущено! Тільки якщо ви дійсно не намагаєтесь цього зробити, будь ласка позакривайте всі відкриті OBS перед тим як запускати нову копію. Якщо OBS налаштовано згортатися в трей, перевірте чи не виконується він там й досі."
10
@@ -102,6 +104,8 @@
11
 Auth.Chat="Розмова (мій чат)"
12
 Auth.StreamInfo="Інформація про Трансляцію"
13
 TwitchAuth.Stats="Статистика Twitch"
14
+TwitchAuth.Feed="Стрічка активності Twitch"
15
+TwitchAuth.TwoFactorFail.Title="Не вдалося запросити ключ трансляції"
16
 
17
 Copy.Filters="Копіювати фільтри"
18
 Paste.Filters="Вставити фільтри"
19
@@ -131,7 +135,7 @@
20
 Basic.AutoConfig.VideoPage.FPS.UseCurrent="Використовувати поточне (%1)"
21
 Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="60 або 30, але краще 60, коли це можливо"
22
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="60 або 30, але краще висока роздільна здатність"
23
-Basic.AutoConfig.VideoPage.CanvasExplanation="Примітка: Роздільна здатність (Полотно), не обов'язково повинно дорівнювати роздільної здатності з якою ви плануєте транслювати  або записувати.  Роздільну здатність фактичної трансляції/запису може бути зменшено від роздільною здатності полотна задля зменшення використання ресурсів або зменшення вимог до бітрейту."
24
+Basic.AutoConfig.VideoPage.CanvasExplanation="Примітка: Роздільна здатність (Полотно), не обов'язково повинно дорівнювати роздільної здатності з якою ви плануєте транслювати або записувати. Роздільну здатність фактичної трансляції/запису може бути зменшено від роздільною здатності полотна задля зменшення використання ресурсів або зменшення вимог до бітрейту."
25
 Basic.AutoConfig.StreamPage="Інформація про Трансляцію"
26
 Basic.AutoConfig.StreamPage.SubTitle="Будь ласка, введіть інформацію щодо вашої Трансляції"
27
 Basic.AutoConfig.StreamPage.ConnectAccount="Підключити обліковий запис (за бажанням)"
28
@@ -149,7 +153,7 @@
29
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Віддати перевагу апаратному енкодеру"
30
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Апаратне кодування зменшує використання ЦП, але може вимагати більший бітрейт для отримання того ж рівня якості."
31
 Basic.AutoConfig.StreamPage.StreamWarning.Title="Попередження, Трансляція"
32
-Basic.AutoConfig.StreamPage.StreamWarning.Text="Тест пропускної здатності буде транслювати випадкові відеодані без аудіо на ваш канал.  Якщо ви можете, рекомендується, щоб ви тимчасово вимкнути збереження відео потоків і встановили потік як приватний допоки тест не буде завершено. Продовжити?"
33
+Basic.AutoConfig.StreamPage.StreamWarning.Text="Тест пропускної здатності буде транслювати випадкові відеодані без аудіо на ваш канал. Якщо ви можете, рекомендується, щоб ви тимчасово вимкнути збереження відео потоків і встановили потік як приватний допоки тест не буде завершено. Продовжити?"
34
 Basic.AutoConfig.TestPage="Остаточні результати"
35
 Basic.AutoConfig.TestPage.SubTitle.Testing="Програма зараз виконує набір тестів, щоб знайти ідеальні налаштування"
36
 Basic.AutoConfig.TestPage.SubTitle.Complete="Тестування завершено"
37
@@ -165,7 +169,7 @@
38
 Basic.AutoConfig.TestPage.Result.StreamingEncoder="Енкодер Трансляцій"
39
 Basic.AutoConfig.TestPage.Result.RecordingEncoder="Енкодер Записів"
40
 Basic.AutoConfig.TestPage.Result.Header="Програма визначила, що дані налаштування є ідеальним для вас:"
41
-Basic.AutoConfig.TestPage.Result.Footer="Щоб використовувати ці параметри, натисніть кнопку Застосувати Налаштування.  Щоб переналаштувати майстра та спробувати знов, натисніть кнопку Назад.  Можна вручну вказати всі параметри, для цього натисніть кнопку Скасувати та відкрите Налаштування."
42
+Basic.AutoConfig.TestPage.Result.Footer="Щоб використовувати ці параметри, натисніть кнопку Застосувати Налаштування. Щоб переналаштувати майстра та спробувати знов, натисніть кнопку Назад. Можна вручну вказати всі параметри, для цього натисніть кнопку Скасувати та відкрите Налаштування."
43
 
44
 Basic.Stats="Статистика"
45
 Basic.Stats.CPUUsage="Використання ЦП"
46
@@ -247,7 +251,8 @@
47
 Output.StartStreamFailed="Не вдалося розпочати трансляцію"
48
 Output.StartRecordingFailed="Не вдалося розпочати запис"
49
 Output.StartReplayFailed="Не вдалося запустити Буфер Повторів"
50
-Output.StartFailedGeneric="Помилка. Вивід не було розпочато.  За додатковою інформацією, будь ласка зверніться до файлу журналу.\n\nПримітка: якщо ви використовуєте NVENC або AMD енкодер, перевірте чи оновлений драйвер відео."
51
+Output.StartFailedGeneric="Помилка. Вивід не було розпочато. За додатковою інформацією, будь ласка зверніться до файлу журналу.\n\nПримітка: якщо ви використовуєте NVENC або AMD енкодер, перевірте чи оновлений драйвер відео."
52
+
53
 
54
 Output.ConnectFail.Title="Не вдалося підключитися"
55
 Output.ConnectFail.BadPath="Шлях або URL-адреса недосяжні. Будь ласка, перевірте налаштування програмного забезпечення."
56
@@ -256,6 +261,7 @@
57
 Output.ConnectFail.Error="Під час зв'язку з сервером відбулася несподівана помилка. Подробиці знаходяться у лог-файлі."
58
 Output.ConnectFail.Disconnected="Від'єднаний від серверу."
59
 
60
+
61
 Output.RecordFail.Title="Не вдалося розпочати запис"
62
 Output.RecordFail.Unsupported="Формат виводу на жаль не підтримується або форматом не підтримується більш однієї звукової доріжки. Будь ласка, перевірте налаштування та повторіть спробу."
63
 Output.RecordNoSpace.Title="Недостатньо простору на диску"
64
@@ -263,7 +269,7 @@
65
 Output.RecordError.Title="Помилка запису"
66
 Output.RecordError.Msg="Під час запису відбулася несподівана помилка."
67
 Output.ReplayBuffer.NoHotkey.Title="Гарячу клавішу не вказано!"
68
-Output.ReplayBuffer.NoHotkey.Msg="Гарячу клавішу для Буферу Повторів не вказано.  Будь ласка, встановіть гарячу клавішу на дію \"Зберегти Повтор\", щоб використовувати її для збереження повторів."
69
+Output.ReplayBuffer.NoHotkey.Msg="Гарячу клавішу для Буферу Повторів не вказано. Будь ласка, встановіть гарячу клавішу на дію \"Зберегти Повтор\", щоб використовувати її для збереження повторів."
70
 
71
 Output.BadPath.Title="Недійсний шлях до файлу"
72
 Output.BadPath.Text="Шлях вказаний для виводу файлу недійсний. Будь ласка, перевірте у налаштуваннях, що шлях було вказано вірно."
73
@@ -291,7 +297,7 @@
74
 Remux.HelpText="Перетягніть файли до цього вікна щоб ремультиплексувати їх, або клацніть пусту клітинку з графи \"OBS запис\" щоб обрати файл."
75
 
76
 UpdateAvailable="Доступне оновлення"
77
-UpdateAvailable.Text="Доступна версія %1.%2.%3.  <a href='%4'>Натисніть тут, щоб завантажити</a>"
78
+UpdateAvailable.Text="Доступна версія %1.%2.%3. <a href='%4'>Натисніть тут, щоб завантажити</a>"
79
 
80
 Basic.DesktopDevice1="Системне аудіо"
81
 Basic.DesktopDevice2="Системне аудіо 2"
82
@@ -305,6 +311,8 @@
83
 
84
 Basic.Main.PreviewConextMenu.Enable="Увімкнути вікно Перегляду"
85
 
86
+Basic.Main.Preview.Disable="Відключити попередній перегляд"
87
+
88
 ScaleFiltering="Фільтр масштабування"
89
 ScaleFiltering.Point="Ступінчастий"
90
 ScaleFiltering.Bilinear="Білінійний"
91
@@ -475,6 +483,8 @@
92
 Basic.MainMenu.Edit.Transform.FitToScreen="Умістити на екрані (&F)"
93
 Basic.MainMenu.Edit.Transform.StretchToScreen="Розтягнути на весь екран (&S)"
94
 Basic.MainMenu.Edit.Transform.CenterToScreen="По центру екрана (&C)"
95
+Basic.MainMenu.Edit.Transform.VerticalCenter="Центрувати по вертикалі"
96
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Центрувати по горизонталі"
97
 Basic.MainMenu.Edit.Order="Упорядкувати (&O)"
98
 Basic.MainMenu.Edit.Order.MoveUp="Нагору (&U)"
99
 Basic.MainMenu.Edit.Order.MoveDown="Донизу (&D)"
100
@@ -520,7 +530,7 @@
101
 
102
 Basic.Settings.ProgramRestart="Програма потребує перезапуску, щоб нові налаштування набрали сили."
103
 Basic.Settings.ConfirmTitle="Підтвердження змін"
104
-Basic.Settings.Confirm="Є незбережені зміни.  Зберегти ці зміни?"
105
+Basic.Settings.Confirm="Є незбережені зміни. Зберегти ці зміни?"
106
 
107
 Basic.Settings.General="Загальні"
108
 Basic.Settings.General.Theme="Тема"
109
@@ -594,10 +604,10 @@
110
 Basic.Settings.Output.Simple.RecordingQuality.Small="Висока якість, середній розмір файлу"
111
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Якість майже без втрат, великий розмір файлу"
112
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Без втрат якості, надзвичайно великий розмір файлу"
113
-Basic.Settings.Output.Simple.Warn.VideoBitrate="Увага! Буде встановлено відео бітрейт трансляції %1, що є верхней межою для обраного сервісу трансляцій.  Якщо ви хочете встановити бітрейт вищий за %1, то увімкніть Додаткові Налаштування Енкодера та зніміть прапорець \"Застосувати примусовий бітрейт з сервісу трансляцій\"."
114
-Basic.Settings.Output.Simple.Warn.AudioBitrate="Увага! Буде встановлено аудіо бітрейт трансляції %1, що є верхней межою для обраного сервісу трансляцій.  Якщо ви хочете встановити бітрейт вищий за %1, то увімкніть Додаткові Налаштування Енкодера та зніміть прапорець \"Застосувати примусовий бітрейт з сервісу трансляцій\"."
115
+Basic.Settings.Output.Simple.Warn.VideoBitrate="Увага! Буде встановлено відео бітрейт трансляції %1, що є верхней межою для обраного сервісу трансляцій. Якщо ви хочете встановити бітрейт вищий за %1, то увімкніть Додаткові Налаштування Енкодера та зніміть прапорець \"Застосувати примусовий бітрейт з сервісу трансляцій\"."
116
+Basic.Settings.Output.Simple.Warn.AudioBitrate="Увага! Буде встановлено аудіо бітрейт трансляції %1, що є верхней межою для обраного сервісу трансляцій. Якщо ви хочете встановити бітрейт вищий за %1, то увімкніть Додаткові Налаштування Енкодера та зніміть прапорець \"Застосувати примусовий бітрейт з сервісу трансляцій\"."
117
 Basic.Settings.Output.Simple.Warn.Encoder="Попередження: Запис програмним енкодером з якістю не \"Так само як трансляція\", здійснює додаткове навантаження на ЦП при використовуванні трансляції і запису одночасно."
118
-Basic.Settings.Output.Simple.Warn.Lossless="Попередження: Відео Без втрат якості генерує надзвичайно великі розміри файлів!  Воно може використовувати понад 7 гігабайт дискового простору на хвилину при високих роздільній здатності зображення та частоти кадрів.  Відео Без втрат якості не рекомендується для довгого запису, тільки якщо у вас є дуже великий обсяг вільного дискового простору."
119
+Basic.Settings.Output.Simple.Warn.Lossless="Попередження: Відео Без втрат якості генерує надзвичайно великі розміри файлів! Воно може використовувати понад 7 гігабайт дискового простору на хвилину при високих роздільній здатності зображення та частоти кадрів. Відео Без втрат якості не рекомендується для довгого запису, тільки якщо у вас є дуже великий обсяг вільного дискового простору."
120
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Ви впевнені, що ви хочете використовувати якість \"Без втрат якості\"?"
121
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Якість Без втрат, попередження!"
122
 Basic.Settings.Output.Simple.Encoder.Software="Програмний (x264)"
123
@@ -673,8 +683,8 @@
124
 Basic.Settings.Video.Numerator="Чисельник"
125
 Basic.Settings.Video.Denominator="Знаменник"
126
 Basic.Settings.Video.Renderer="Візуалізація"
127
-Basic.Settings.Video.InvalidResolution="Неприпустиме значення роздільної здатності.  Повинно бути [ширина]x[висота] (тобто, 1920x1080)"
128
-Basic.Settings.Video.CurrentlyActive="Вивід відео в даний час активний.  Будь ласка, зупинить весь вивід відео, щоб змінити настройки відео."
129
+Basic.Settings.Video.InvalidResolution="Неприпустиме значення роздільної здатності. Повинно бути [ширина]x[висота] (тобто, 1920x1080)"
130
+Basic.Settings.Video.CurrentlyActive="Вивід відео в даний час активний. Будь ласка, зупинить весь вивід відео, щоб змінити настройки відео."
131
 Basic.Settings.Video.DisableAero="Вимкнути Aero"
132
 
133
 Basic.Settings.Video.DownscaleFilter.Bilinear="Білінійний (найшвидший, але розмито, якщо масштабувати)"
134
@@ -684,7 +694,8 @@
135
 Basic.Settings.Audio="Аудіо"
136
 Basic.Settings.Audio.SampleRate="Частота дискретизації"
137
 Basic.Settings.Audio.Channels="Канали"
138
-Basic.Settings.Audio.MeterDecayRate="Швидкість спаду індикатору звуку"
139
+Basic.Settings.Audio.Meters="Індикатори"
140
+Basic.Settings.Audio.MeterDecayRate="Швидкість спаду"
141
 Basic.Settings.Audio.MeterDecayRate.Fast="Швидко"
142
 Basic.Settings.Audio.MeterDecayRate.Medium="Середньо (PPM типу I)"
143
 Basic.Settings.Audio.MeterDecayRate.Slow="Повільно (PPM типу II)"
144
@@ -692,15 +703,16 @@
145
 Basic.Settings.Audio.PeakMeterType.SamplePeak="З точністю до вибірки"
146
 Basic.Settings.Audio.PeakMeterType.TruePeak="Істинно-піковий (більше навантаження на ЦП)"
147
 Basic.Settings.Audio.MultiChannelWarning.Enabled="ПОПЕРЕДЖЕННЯ: Увімкнуто об'ємний звук."
148
-Basic.Settings.Audio.MultichannelWarning="Якщо робите трансляції, перевірте чи підтримує ваш сервіс трансляцій об'ємний звук на вході та виході.  Twitch, Facebook 360 Live, Mixer RTMP, Smashcast - це приклади сервісів де об'ємний звук цілком підтримується. Навпаки, Facebook Live і YouTube Live обидва підтримують вхідний об'ємний звук, але Facebook Live мікшує його до стерео, а YouTube Live відтворює лише два канали.\n\nАудіо фільтри самої OBS сумісні з об'ємним звуком, хоча підтримку VST плагінами не гарантовано."
149
+Basic.Settings.Audio.MultichannelWarning="Якщо робите трансляції, перевірте чи підтримує ваш сервіс трансляцій об'ємний звук на вході та виході. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast - це приклади сервісів де об'ємний звук цілком підтримується. Навпаки, Facebook Live і YouTube Live обидва підтримують вхідний об'ємний звук, але Facebook Live мікшує його до стерео, а YouTube Live відтворює лише два канали.\n\nАудіо фільтри самої OBS сумісні з об'ємним звуком, хоча підтримку VST плагінами не гарантовано."
150
 Basic.Settings.Audio.MultichannelWarning.Title="Увімкнути об'ємний звук для виводу аудіо?"
151
 Basic.Settings.Audio.MultichannelWarning.Confirm="Ви справді бажаєте увімкнути об'ємний звук для виводу аудіо?"
152
-Basic.Settings.Audio.DesktopDevice="Системний аудіопристрій"
153
-Basic.Settings.Audio.DesktopDevice2="Системний аудіопристрій 2"
154
-Basic.Settings.Audio.AuxDevice="Мікрофон/допоміжні аудіопристрої"
155
-Basic.Settings.Audio.AuxDevice2="Мікрофон/допоміжні аудіопристрої 2"
156
-Basic.Settings.Audio.AuxDevice3="Мікрофон/допоміжні аудіопристрої 3"
157
-Basic.Settings.Audio.AuxDevice4="Мікрофон/допоміжні аудіопристрої 4"
158
+Basic.Settings.Audio.Devices="Пристрої"
159
+Basic.Settings.Audio.DesktopDevice="Системне аудіо"
160
+Basic.Settings.Audio.DesktopDevice2="Системне аудіо 2"
161
+Basic.Settings.Audio.AuxDevice="Мікрофон/допоміжне аудіо"
162
+Basic.Settings.Audio.AuxDevice2="Мікрофон/допоміжне аудіо 2"
163
+Basic.Settings.Audio.AuxDevice3="Мікрофон/допоміжне аудіо 3"
164
+Basic.Settings.Audio.AuxDevice4="Мікрофон/допоміжне аудіо 4"
165
 Basic.Settings.Audio.EnablePushToMute="Увімкнути Натисніть-щоб-відключити"
166
 Basic.Settings.Audio.PushToMuteDelay="Натисніть-щоб-відключити, затримка"
167
 Basic.Settings.Audio.EnablePushToTalk="Увімкнути Натисніть-щоб-говорити"
168
@@ -715,11 +727,9 @@
169
 Basic.Settings.Advanced.General.ProcessPriority.Normal="Нормальний"
170
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Нижче нормального"
171
 Basic.Settings.Advanced.General.ProcessPriority.Idle="Очікування"
172
-Basic.Settings.Advanced.FormatWarning="Попередження: Формати кольору, які відрізняються від NV12, в першу чергу призначені для запису, і не рекомендуються для трансляцій.  Трансляція може додатково навантажити ЦП через перетворення форматів."
173
+Basic.Settings.Advanced.FormatWarning="Попередження: Формати кольору, які відрізняються від NV12, в першу чергу призначені для запису, і не рекомендуються для трансляцій. Трансляція може додатково навантажити ЦП через перетворення форматів."
174
 Basic.Settings.Advanced.Audio.BufferingTime="Розмір аудіо буфера, (мс)"
175
 Basic.Settings.Advanced.Video.ColorFormat="Формат кольору"
176
-Basic.Settings.Advanced.Video.ColorSpace="YUV, колірний простір"
177
-Basic.Settings.Advanced.Video.ColorRange="YUV, колірний діапазон"
178
 Basic.Settings.Advanced.Video.ColorRange.Partial="Частковий"
179
 Basic.Settings.Advanced.Video.ColorRange.Full="Повний"
180
 Basic.Settings.Advanced.Audio.MonitoringDevice="Пристрій Тестування Аудіо (на слух)"
181
@@ -739,7 +749,6 @@
182
 
183
 Basic.AdvAudio="Розширені Налаштування Аудіо"
184
 Basic.AdvAudio.Name="Назва"
185
-Basic.AdvAudio.Volume="Гучність (%)"
186
 Basic.AdvAudio.Mono="Мікшувати до псевдо-Моно"
187
 Basic.AdvAudio.Balance="Баланс"
188
 Basic.AdvAudio.SyncOffset="Зсув синхронізації (мс)"
189
@@ -795,6 +804,7 @@
190
 Hotkeys.AppleKeypadDecimal=". (Keypad)"
191
 Hotkeys.AppleKeypadEqual="= (Keypad)"
192
 Hotkeys.MouseButton="Mouse %1"
193
+Hotkeys.Escape="Esc"
194
 
195
 Mute="Вимкнути звук"
196
 Unmute="Увімкнути звук"
197
@@ -814,6 +824,7 @@
198
 NoSources.Title="Немає Джерел"
199
 NoSources.Text="Схоже, що ви не ще додали будь-якого відео Джерела. Таким чином на виводі буде лише порожній екран. Ви справді бажаєте це зробити?"
200
 NoSources.Text.AddSource="Ви можете будь-коли додати Джерела, натиснувши на значок (+) під панеллю Джерела в головному вікні."
201
+NoSources.Label="У вас немає джерел.\nКлацніть кнопку + , що нижче,\nчи клацніть правою та додайте нове."
202
 
203
 ChangeBG="Позначити кольором"
204
 CustomColor="Особливий колір"
205
@@ -832,3 +843,4 @@
206
 ResizeOutputSizeOfSource.Text="Параметри: Роздільна здатність (Полотно) та Роздільна здатність (Вивід), буде встановлено у розмір обраного Джерела."
207
 ResizeOutputSizeOfSource.Continue="Ви хочете продовжити?"
208
 
209
+
210
obs-studio-23.1.0.tar.xz/UI/data/locale/ur-PK.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/ur-PK.ini Changed
48
 
1
@@ -51,10 +51,42 @@
2
 ResetOSXVSyncOnExit="باہر نکلیں پرOSX V-Sync ری سیٹ کریں"
3
 HighResourceUsage="انکوڈنگ زیادہ اوورلوڈ! ویڈیو ترتیبات کو تبدیل کرنے یا تیزی سے انکوڈنگ کے پیش سیٹ کا استعمال کرتے ہوئے غور کریں."
4
 Transition="منتقلی"
5
-
6
-
7
-
8
-
9
+Left="بائیں"
10
+Right="دائیں"
11
+Top="اوپر"
12
+Bottom="نیچے"
13
+Reset="ری سیٹ کریں"
14
+Hours="گھنٹے"
15
+Minutes="منٹ"
16
+Seconds="سیکنڈز"
17
+Import="درآمد کریں"
18
+Export="برآمد کریں"
19
+Copy="کاپی"
20
+Paste="پیسٹ کریں"
21
+PasteDuplicate="جوڑیں (مثنی)"
22
+Next="اگلا"
23
+Back="واپس"
24
+Defaults="طے شدہ"
25
+None="کوئی بھی نہیں"
26
+StudioMode.Program="پروگرام"
27
+Group="گروپس"
28
+DoNotShowAgain="دوبارہ مت دکھائیں"
29
+
30
+AlreadyRunning.LaunchAnyway="ویسے بھی شروع"
31
+
32
+
33
+Auth.Authing.Title="توثیق کر رہا ہے..."
34
+Auth.AuthFailure.Title="تصدیق کی ناکامی"
35
+Auth.Chat="گفتگو"
36
+
37
+
38
+
39
+BandwidthTest.Region.EU="یورپ"
40
+BandwidthTest.Region.Asia="ایشیا"
41
+BandwidthTest.Region.Other="دیگر"
42
+
43
+
44
+Basic.AutoConfig.VideoPage="ویڈیو سیٹنگز"
45
 
46
 
47
 
48
obs-studio-23.1.0.tar.xz/UI/data/locale/vi-VN.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/vi-VN.ini Changed
369
 
1
@@ -49,7 +49,7 @@
2
 Enable="Bật"
3
 DisableOSXVSync="Tắt OSX V-Sync"
4
 ResetOSXVSyncOnExit="Đặt lại OSX V-Sync khi Thoát"
5
-HighResourceUsage="Bộ mã hóa bị quá tải!  Hãy xem xét giảm chất lượng video hoặc sử dụng  bộ mã hóa nhanh hơn."
6
+HighResourceUsage="Bộ mã hóa bị quá tải! Hãy xem xét giảm chất lượng video hoặc sử dụng bộ mã hóa nhanh hơn."
7
 Transition="Chuyển cảnh"
8
 QuickTransitions="C. cảnh nhanh"
9
 Left="Trái"
10
@@ -72,22 +72,33 @@
11
 Next="Tiếp tục"
12
 Back="Quay lại"
13
 Defaults="Mặc định"
14
+TransitionOverride="Ghi đè chuyển tiếp"
15
 None="Không có"
16
 StudioMode.Preview="Xem trước"
17
 StudioMode.Program="Chương trình"
18
 ShowInMultiview="Xem trong Đa góc nhìn"
19
 VerticalLayout="Bố cục dọc"
20
 Group="Nhóm"
21
+DoNotShowAgain="Không hiện lại thông báo nữa"
22
+Default="(Mặc định)"
23
+Calculating="Đang tính toán..."
24
 
25
 AlreadyRunning.Title="OBS đã chạy"
26
-AlreadyRunning.Text="OBS đã chạy rồi!  Trừ khi bạn muốn làm điều này, xin vui lòng tắt mọi chương trình hiện tại của OBS trước khi cố gắng chạy một chương trình mới.  Nếu bạn có OBS thiết lập để thu nhỏ trên khay hệ thống, xin vui lòng kiểm tra để xem nếu nó vẫn đang chạy hay không."
27
+AlreadyRunning.Text="OBS đã chạy rồi! Trừ khi bạn muốn làm điều này, xin vui lòng tắt mọi chương trình hiện tại của OBS trước khi cố gắng chạy một chương trình mới. Nếu bạn có OBS thiết lập để thu nhỏ trên khay hệ thống, xin vui lòng kiểm tra để xem nếu nó vẫn đang chạy hay không."
28
 AlreadyRunning.LaunchAnyway="Khởi động luôn"
29
 
30
+DockCloseWarning.Title="Đóng cửa sổ gắn đế được"
31
+DockCloseWarning.Text="Bạn vừa đóng một cửa số gắn đế được. Nếu bạn muốn hiển thị lại lần nữa, sử dụng trình đơn Hiển thị → Thanh đế trên thanh trình đơn."
32
 
33
 Auth.Authing.Title="Đang xác thực..."
34
 Auth.AuthFailure.Title="Xác thực không thành công"
35
 Auth.InvalidScope.Title="Bắt buộc phải xác thực"
36
+Auth.LoadingChannel.Title="Đang tải thông tin kênh..."
37
+Auth.ChannelFailure.Title="Bị lỗi khi nạp kênh"
38
 Auth.Chat="Tán gẫu"
39
+Auth.StreamInfo="Thông tin luồng phát"
40
+TwitchAuth.Stats="Thống kê Twitch"
41
+TwitchAuth.TwoFactorFail.Title="Không thể truy vấn khóa luồng"
42
 
43
 Copy.Filters="Sao chép các bộ lọc"
44
 Paste.Filters="Dán các bộ lọc"
45
@@ -101,7 +112,7 @@
46
 BandwidthTest.Region.Asia="Châu Á"
47
 BandwidthTest.Region.Other="Khác"
48
 
49
-Basic.FirstStartup.RunWizard="Bạn có muốn chạy trình cấu hình tự động?  Bạn có thể cấu hình bằng tay cài đặt của bạn bằng cách nhấn vào nút Cài đặt trong cửa sổ chính."
50
+Basic.FirstStartup.RunWizard="Bạn có muốn chạy trình cấu hình tự động? Bạn có thể cấu hình bằng tay cài đặt của bạn bằng cách nhấn vào nút Cài đặt trong cửa sổ chính."
51
 Basic.FirstStartup.RunWizard.NoClicked="Nếu bạn thay đổi, bạn có thể chạy trình cấu hình tự động bất kỳ lúc nào từ menu Công cụ."
52
 
53
 Basic.AutoConfig="Trình cấu hình tự động"
54
@@ -119,6 +130,11 @@
55
 Basic.AutoConfig.VideoPage.FPS.PreferHighRes="60 hoặc 30, nhưng ưu tiên độ phân giải cao"
56
 Basic.AutoConfig.StreamPage="Thông tin stream"
57
 Basic.AutoConfig.StreamPage.SubTitle="Vui lòng nhập thông tin máy chủ stream của bạn"
58
+Basic.AutoConfig.StreamPage.ConnectAccount="Kết nối tài khoản (tùy chọn)"
59
+Basic.AutoConfig.StreamPage.DisconnectAccount="Ngắt kết nối tài khoản"
60
+Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Title="Ngắt kết nối tài khoản?"
61
+Basic.AutoConfig.StreamPage.DisconnectAccount.Confirm.Text="Thay đổi này sẽ được áp dụng ngay lập tức. Bạn có chắc là bạn muốn ngắt kết nối tài khoản của bạn?"
62
+Basic.AutoConfig.StreamPage.UseStreamKey="Dùng khóa luồng phát"
63
 Basic.AutoConfig.StreamPage.Service="Dịch vụ"
64
 Basic.AutoConfig.StreamPage.Service.ShowAll="Hiện tất cả..."
65
 Basic.AutoConfig.StreamPage.Service.Custom="Tự chọn..."
66
@@ -143,10 +159,11 @@
67
 Basic.AutoConfig.TestPage.Result.StreamingEncoder="Mã hóa streaming"
68
 Basic.AutoConfig.TestPage.Result.RecordingEncoder="Mã hóa quay video"
69
 Basic.AutoConfig.TestPage.Result.Header="Chương trình đã xác định được cài đặt lý tưởng nhất dành cho bạn:"
70
-Basic.AutoConfig.TestPage.Result.Footer="Để sử dụng các thiết lập này, nhấp vào Áp dụng cài đặt.  Để cấu hình lại và thử lại, bấm Lùi lại.  Để cấu hình thiết lập bằng tay, bấm Hủy bỏ và mở Cài đặt."
71
+Basic.AutoConfig.TestPage.Result.Footer="Để sử dụng các thiết lập này, nhấp vào Áp dụng cài đặt. Để cấu hình lại và thử lại, bấm Lùi lại. Để cấu hình thiết lập bằng tay, bấm Hủy bỏ và mở Cài đặt."
72
 
73
 Basic.Stats="Thống kê"
74
 Basic.Stats.CPUUsage="Sử dụng CPU"
75
+Basic.Stats.HDDSpaceAvailable="Không gian đĩa còn trống"
76
 Basic.Stats.MemoryUsage="Bộ nhớ đã sử dụng"
77
 Basic.Stats.AverageTimeToRender="Thời gian trung bình để vẽ hình"
78
 Basic.Stats.SkippedFrames="Khung hình bị bỏ qua do mã hóa bị lag"
79
@@ -162,6 +179,8 @@
80
 Basic.Stats.MegabytesSent="Tổng dung lượng"
81
 Basic.Stats.Bitrate="Bitrate"
82
 
83
+ResetUIWarning.Title="Bạn có chắc bạn muốn thiết lập lại giao diện người dùng?"
84
+ResetUIWarning.Text="Việc đặt lại giao diện người dùng (UI) sẽ ẩn các thanh đế nâng cao. Bạn cần hiện lại chúng từ trình đơn Hiển thị nếu muốn nhìn thấy chúng.\n\nBạn có chắc là muốn đặt lại UI không?"
85
 
86
 Updater.Title="Có bản cập nhật mới"
87
 Updater.Text="Có sẵn một bản cập nhật mới:"
88
@@ -184,6 +203,7 @@
89
 
90
 Basic.AddTransition="Thêm cấu hình chuyển cảnh"
91
 Basic.RemoveTransition="Xóa cấu hình chuyển cảnh"
92
+Basic.TransitionProperties="Thuộc tính chuyển tiếp"
93
 Basic.SceneTransitions="Chuyển cảnh"
94
 Basic.TransitionDuration="Thời gian"
95
 Basic.TogglePreviewProgramMode="Chế độ Studio"
96
@@ -206,9 +226,10 @@
97
 ConfirmStop.Title="Ngừng Stream?"
98
 ConfirmStop.Text="Bạn có chắc muốn dừng stream?"
99
 
100
+ConfirmBWTest.Title="Bắt đầu kiểm tra băng thông?"
101
 
102
 ConfirmExit.Title="Thoát OBS?"
103
-ConfirmExit.Text="OBS hiện đang hoạt động.  Tất cả các stream/quay video sẽ bị tắt.  Bạn có chắc muốn thoát không?"
104
+ConfirmExit.Text="OBS hiện đang hoạt động. Tất cả các stream/quay video sẽ bị tắt. Bạn có chắc muốn thoát không?"
105
 
106
 ConfirmRemove.Title="Xác nhận loại bỏ"
107
 ConfirmRemove.Text="Bạn có chắc bạn muốn loại bỏ '$1' không?"
108
@@ -219,24 +240,29 @@
109
 Output.StartReplayFailed="Không thể khởi động replay buffer"
110
 Output.StartFailedGeneric="Bắt đầu đầu ra đã thất bại. Vui lòng kiểm tra các bản ghi để biết thêm chi tiết.\n\nGhi chú: nếu bạn đang sử dụng bộ mã hóa NVENC hoặc AMD, hãy chắc chắn rằng các trình điều khiển GPU được cập nhật phiên bản mới nhất."
111
 
112
+
113
 Output.ConnectFail.Title="Không thể kết nối"
114
-Output.ConnectFail.BadPath="URL không hợp lệ của đường dẫn hoặc kết nối.  Xin vui lòng kiểm tra cài đặt của bạn để xác nhận rằng họ là hợp lệ."
115
+Output.ConnectFail.BadPath="URL không hợp lệ của đường dẫn hoặc kết nối. Xin vui lòng kiểm tra cài đặt của bạn để xác nhận rằng họ là hợp lệ."
116
 Output.ConnectFail.ConnectFailed="Không thể kết nối tới hệ phục vụ"
117
-Output.ConnectFail.InvalidStream="Không thể truy cập kênh chỉ định hoặc khóa stream, Vui lòng kiểm tra khóa stream của bạn.  Nếu nó đúng, có thể có một vấn đề về kết nối với máy chủ."
118
-Output.ConnectFail.Error="1 lỗi bất ngờ xảy ra khi thử kết nối tới máy chủ.  Thông tin thêm nằm trong log file."
119
+Output.ConnectFail.InvalidStream="Không thể truy cập kênh chỉ định hoặc khóa stream, Vui lòng kiểm tra khóa stream của bạn. Nếu nó đúng, có thể có một vấn đề về kết nối với máy chủ."
120
+Output.ConnectFail.Error="1 lỗi bất ngờ xảy ra khi thử kết nối tới máy chủ. Thông tin thêm nằm trong log file."
121
 Output.ConnectFail.Disconnected="Ngắt kết nối từ máy chủ."
122
 
123
+Output.StreamEncodeError.Title="Lỗi mã hóa"
124
+Output.StreamEncodeError.Msg="Xảy ra lỗi mã hóa trong khi truyền phát."
125
+
126
 Output.RecordFail.Title="Không thể bắt đầu ghi âm"
127
-Output.RecordFail.Unsupported="Định dạng đầu ra là một trong hai không được hỗ trợ hoặc không hỗ trợ nhiều hơn một rãnh âm thanh.  Xin vui lòng kiểm tra cài đặt của bạn và thử lại."
128
+Output.RecordFail.Unsupported="Định dạng đầu ra là một trong hai không được hỗ trợ hoặc không hỗ trợ nhiều hơn một rãnh âm thanh. Xin vui lòng kiểm tra cài đặt của bạn và thử lại."
129
 Output.RecordNoSpace.Title="Không gian đĩa không đủ"
130
 Output.RecordNoSpace.Msg="Không còn đủ không gian đĩa để tiếp tục ghi âm."
131
 Output.RecordError.Title="Lỗi ghi âm"
132
 Output.RecordError.Msg="Một lỗi không xác định xảy ra trong khi ghi âm."
133
+Output.RecordError.EncodeErrorMsg="Xảy ra lỗi mã hóa trong khi ghi."
134
 Output.ReplayBuffer.NoHotkey.Title="Không có hotkey!"
135
-Output.ReplayBuffer.NoHotkey.Msg="Không hotkey lưu replay buffer.  Vui lòng đặt hotkey \"Lưu\" để sử dụng để lưu video."
136
+Output.ReplayBuffer.NoHotkey.Msg="Không hotkey lưu replay buffer. Vui lòng đặt hotkey \"Lưu\" để sử dụng để lưu video."
137
 
138
 Output.BadPath.Title="Đường dẫn tệp xấu"
139
-Output.BadPath.Text="Đường dẫn đầu ra của cấu hình tệp không hợp lệ.  Xin vui lòng kiểm tra cài đặt của bạn để xác nhận rằng một đường dẫn hợp lệ tập tin đã được thiết lập."
140
+Output.BadPath.Text="Đường dẫn đầu ra của cấu hình tệp không hợp lệ. Xin vui lòng kiểm tra cài đặt của bạn để xác nhận rằng một đường dẫn hợp lệ tập tin đã được thiết lập."
141
 
142
 LogReturnDialog="Đăng tải lên thành công"
143
 LogReturnDialog.CopyURL="Chép địa chỉ"
144
@@ -245,15 +271,19 @@
145
 Remux.SourceFile="Ghi âm OBS"
146
 Remux.TargetFile="Tệp đích"
147
 Remux.Remux="Remux"
148
+Remux.Stop="Ngừng làm lại"
149
+Remux.ClearFinished="Xóa thành phẩm"
150
+Remux.ClearAll="Xóa tất cả các mục"
151
 Remux.OBSRecording="Ghi OBS"
152
 Remux.FinishedTitle="Remuxing đã hoàn thành"
153
 Remux.Finished="Ghi remuxed"
154
 Remux.FinishedError="Ghi âm remuxed, nhưng các tập tin có thể không đầy đủ"
155
+Remux.SelectRecording="Chọn Ghi âm OBS..."
156
 Remux.ExitUnfinishedTitle="Remuxing trong tiến trình"
157
 Remux.ExitUnfinished="Remuxing không được hoàn tất, dừng bây giờ có thể hiển thị các tập tin mục tiêu không sử dụng được. \nAre bạn có chắc bạn muốn dừng remuxing?"
158
 
159
 UpdateAvailable="Bản cập nhật mới"
160
-UpdateAvailable.Text="Phiên bản %1.%2.%3 có sẵn.  <a href='%4'> Click vào đây để tải về</a>"
161
+UpdateAvailable.Text="Phiên bản %1.%2.%3 có sẵn. <a href='%4'> Click vào đây để tải về</a>"
162
 
163
 Basic.DesktopDevice1="Âm thanh máy tính để bàn"
164
 Basic.DesktopDevice2="Máy tính để bàn âm thanh 2"
165
@@ -267,11 +297,14 @@
166
 
167
 Basic.Main.PreviewConextMenu.Enable="Bật xem trước"
168
 
169
+Basic.Main.Preview.Disable="Tắt xem trước"
170
+
171
 ScaleFiltering="Scale Filtering"
172
 ScaleFiltering.Point="Point"
173
 ScaleFiltering.Bilinear="Bilinear"
174
 ScaleFiltering.Bicubic="Bicubic"
175
 ScaleFiltering.Lanczos="Lanczos"
176
+ScaleFiltering.Area="Khu vực"
177
 
178
 Deinterlacing="Deinterlacing"
179
 Deinterlacing.Discard="Discard"
180
@@ -282,6 +315,8 @@
181
 Deinterlacing.Linear2x="Linear 2x"
182
 Deinterlacing.Yadif="Yadif"
183
 Deinterlacing.Yadif2x="Yadif 2x"
184
+Deinterlacing.TopFieldFirst="Trường đầu tiên"
185
+Deinterlacing.BottomFieldFirst="Trường dưới cùng trước"
186
 
187
 VolControl.Mute="Tắt tiếng '%1'"
188
 VolControl.Properties="Thuộc tính '%1'"
189
@@ -317,7 +352,7 @@
190
 Basic.PropertiesWindow.SelectColor="Chọn Màu"
191
 Basic.PropertiesWindow.SelectFont="Chọn font"
192
 Basic.PropertiesWindow.ConfirmTitle="Thay đổi cài đặt"
193
-Basic.PropertiesWindow.Confirm="Có được lưu thay đổi.  Bạn có muốn giữ họ?"
194
+Basic.PropertiesWindow.Confirm="Có được lưu thay đổi. Bạn có muốn giữ họ?"
195
 Basic.PropertiesWindow.NoProperties="Không có tài sản có sẵn"
196
 Basic.PropertiesWindow.AddFiles="Thêm tập tin"
197
 Basic.PropertiesWindow.AddDir="Thêm thư mục"
198
@@ -395,6 +430,7 @@
199
 Basic.Main.StoppingStreaming="Đang dừng stream..."
200
 Basic.Main.ForceStopStreaming="Ngừng Stream (huỷ chậm trễ)"
201
 Basic.Main.Group="Nhóm %1"
202
+Basic.Main.GroupItems="Nhóm đã chọn"
203
 Basic.Main.Ungroup="Tháo nhóm"
204
 
205
 Basic.MainMenu.File="Tập tin (&F)"
206
@@ -419,6 +455,8 @@
207
 Basic.MainMenu.Edit.Scale.Output="Đầu ra (%1x%2)"
208
 Basic.MainMenu.Edit.Transform="Biến đổi (&T)"
209
 Basic.MainMenu.Edit.Transform.EditTransform="Chỉnh sửa biến đổi... (&E)"
210
+Basic.MainMenu.Edit.Transform.CopyTransform="Sao chép chuyển đổi"
211
+Basic.MainMenu.Edit.Transform.PasteTransform="Dán chuyển đổi"
212
 Basic.MainMenu.Edit.Transform.ResetTransform="Đặt lại biến đổi (&R)"
213
 Basic.MainMenu.Edit.Transform.Rotate90CW="Xoay 90 độ bên phải"
214
 Basic.MainMenu.Edit.Transform.Rotate90CCW="Xoay 90 độ bên trái"
215
@@ -428,6 +466,8 @@
216
 Basic.MainMenu.Edit.Transform.FitToScreen="Vừa với màn hình (&F)"
217
 Basic.MainMenu.Edit.Transform.StretchToScreen="Giãn ra để lấp đầy m.hình (&S)"
218
 Basic.MainMenu.Edit.Transform.CenterToScreen="Trung tâm màn hình (&C)"
219
+Basic.MainMenu.Edit.Transform.VerticalCenter="Giữa theo chiều dọc"
220
+Basic.MainMenu.Edit.Transform.HorizontalCenter="Giữa theo chiều ngang"
221
 Basic.MainMenu.Edit.Order="Đặt (&O)"
222
 Basic.MainMenu.Edit.Order.MoveUp="Ch&uyển Lên"
223
 Basic.MainMenu.Edit.Order.MoveDown="Chuyển Xuống (&D)"
224
@@ -437,9 +477,11 @@
225
 
226
 Basic.MainMenu.View="Hiển thị (&V)"
227
 Basic.MainMenu.View.Toolbars="&Thanh công cụ"
228
+Basic.MainMenu.View.Docks="Thanh đế"
229
 Basic.MainMenu.View.Docks.ResetUI="Đặt lại UI"
230
 Basic.MainMenu.View.Docks.LockUI="Khóa UI"
231
 Basic.MainMenu.View.Toolbars.Listboxes="&Listboxes"
232
+Basic.MainMenu.View.SceneTransitions="Chuyển cảnh"
233
 Basic.MainMenu.View.StatusBar="Thanh trạng thái (&S)"
234
 Basic.MainMenu.View.Fullscreen.Interface="Giao diện toàn màn hình"
235
 
236
@@ -455,18 +497,21 @@
237
 Basic.MainMenu.Tools="Công cụ (&T)"
238
 
239
 Basic.MainMenu.Help="Trợ giúp (&H)"
240
+Basic.MainMenu.Help.HelpPortal="Trợ giúp & Cổng thông tin"
241
 Basic.MainMenu.Help.Website="Ghé thăm &Website"
242
+Basic.MainMenu.Help.Discord="Tham gia & Discord Server"
243
 Basic.MainMenu.Help.Logs="Tập tin đăng nhập (&L)"
244
 Basic.MainMenu.Help.Logs.ShowLogs="Hiển thị tập tin đăng nhập (&S)"
245
 Basic.MainMenu.Help.Logs.UploadCurrentLog="Tải lên tệp sổ ghi hiện tại (&C)"
246
 Basic.MainMenu.Help.Logs.UploadLastLog="Tải &lên cuối đăng nhập tập tin"
247
 Basic.MainMenu.Help.Logs.ViewCurrentLog="Xem sổ ghi hiện tại (&V)"
248
 Basic.MainMenu.Help.CheckForUpdates="Kiểm tra cập nhật mới"
249
+Basic.MainMenu.Help.CrashLogs="Sự cố & Báo cáo"
250
 Basic.MainMenu.Help.About="Giới thiệu (&A)"
251
 
252
 Basic.Settings.ProgramRestart="Chương trình phải được khởi động lại để những thiết đặt có hiệu lực."
253
 Basic.Settings.ConfirmTitle="Xác nhận thay đổi"
254
-Basic.Settings.Confirm="Bạn đã lưu thay đổi.  Lưu thay đổi?"
255
+Basic.Settings.Confirm="Bạn đã lưu thay đổi. Lưu thay đổi?"
256
 
257
 Basic.Settings.General="Chung"
258
 Basic.Settings.General.Theme="Theme"
259
@@ -475,8 +520,12 @@
260
 Basic.Settings.General.OpenStatsOnStartup="Mở hộp thoại thống kê khi khởi động"
261
 Basic.Settings.General.WarnBeforeStartingStream="Hiển thị hộp thoại xác nhận khi bắt đầu stream"
262
 Basic.Settings.General.WarnBeforeStoppingStream="Hiển thị hộp thoại xác nhận khi dừng lại stream"
263
+Basic.Settings.General.Projectors="Máy chiếu"
264
 Basic.Settings.General.HideProjectorCursor="Ẩn con trỏ chuột trên màn chiếu"
265
 Basic.Settings.General.ProjectorAlwaysOnTop="Làm cho màn chiếu luôn luôn trên đầu"
266
+Basic.Settings.General.Snapping="Chụp liên kết nguồn"
267
+Basic.Settings.General.ScreenSnapping="Nguồn Snap đến cạnh màn hình"
268
+Basic.Settings.General.CenterSnapping="Chụp nguồn vào trung tâm ngang và dọc"
269
 Basic.Settings.General.RecordWhenStreaming="Tự động quay video khi stream"
270
 Basic.Settings.General.KeepRecordingWhenStreamStops="Quay tiếp khi dừng stream"
271
 Basic.Settings.General.ReplayBufferWhileStreaming="Tự động bắt đầu replay buffer khi stream"
272
@@ -517,7 +566,7 @@
273
 Basic.Settings.Output.Simple.RecordingQuality.HQ="Không thể phân biệt chất lượng, lớn kích thước"
274
 Basic.Settings.Output.Simple.RecordingQuality.Lossless="Lossless chất lượng, rất lớn tập tin kích thước"
275
 Basic.Settings.Output.Simple.Warn.Encoder="Chú ý: Ghi âm với một phần mềm mã hóa ở một chất lượng khác nhau hơn dòng sẽ yêu cầu phụ CPU sử dụng nếu bạn suối và hồ sơ cùng một lúc."
276
-Basic.Settings.Output.Simple.Warn.Lossless="Cảnh báo: Lossless chất lượng tạo ra kích thước tập tin rất lớn!  Lossless chất lượng có thể sử dụng upward of 7 GB không gian đĩa cho một phút ở độ phân giải cao và framerates.  Lossless không nên dùng cho bản ghi âm dài trừ khi bạn có một số lượng rất lớn của không gian đĩa sẵn dùng."
277
+Basic.Settings.Output.Simple.Warn.Lossless="Cảnh báo: Lossless chất lượng tạo ra kích thước tập tin rất lớn! Lossless chất lượng có thể sử dụng upward of 7 GB không gian đĩa cho một phút ở độ phân giải cao và framerates. Lossless không nên dùng cho bản ghi âm dài trừ khi bạn có một số lượng rất lớn của không gian đĩa sẵn dùng."
278
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Bạn có chắc bạn muốn sử dụng lossless chất lượng?"
279
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Lossless chất lượng cảnh báo!"
280
 Basic.Settings.Output.Simple.Encoder.Software="Phần mềm (x 264)"
281
@@ -590,8 +639,8 @@
282
 Basic.Settings.Video.Numerator="Tử số"
283
 Basic.Settings.Video.Denominator="Mẫu số"
284
 Basic.Settings.Video.Renderer="Renderer"
285
-Basic.Settings.Video.InvalidResolution="Giá trị độ phân giải không hợp lệ.  Phải là [width]x[height] (tức là năm 1920 x 1080)"
286
-Basic.Settings.Video.CurrentlyActive="Đầu ra video là hiện đang hoạt động.  Hãy tắt vào bất kỳ kết quả đầu ra để thay đổi thiết đặt video."
287
+Basic.Settings.Video.InvalidResolution="Giá trị độ phân giải không hợp lệ. Phải là [width]x[height] (tức là năm 1920 x 1080)"
288
+Basic.Settings.Video.CurrentlyActive="Đầu ra video là hiện đang hoạt động. Hãy tắt vào bất kỳ kết quả đầu ra để thay đổi thiết đặt video."
289
 Basic.Settings.Video.DisableAero="Vô hiệu hóa Aero"
290
 
291
 Basic.Settings.Video.DownscaleFilter.Bilinear="Bilinear (nhanh nhất, nhưng mờ nếu rộng)"
292
@@ -602,16 +651,12 @@
293
 Basic.Settings.Audio.SampleRate="Tỷ lệ mẫu"
294
 Basic.Settings.Audio.Channels="Kênh Tivi"
295
 Basic.Settings.Audio.MeterDecayRate.Fast="Nhanh"
296
-Basic.Settings.Audio.DesktopDevice="Thiết bị âm thanh máy tính"
297
-Basic.Settings.Audio.DesktopDevice2="Thiết bị âm thanh máy tính 2"
298
-Basic.Settings.Audio.AuxDevice="Thiết bị âm thanh mic/phụ trợ"
299
-Basic.Settings.Audio.AuxDevice2="Thiết bị âm thanh mic/phụ trợ 2"
300
-Basic.Settings.Audio.AuxDevice3="Thiết bị âm thanh mic/phụ trợ 3"
301
 Basic.Settings.Audio.EnablePushToMute="Bật bấm để tắt tiếng"
302
 Basic.Settings.Audio.PushToMuteDelay="Bấm để tắt tiếng trễ"
303
 Basic.Settings.Audio.EnablePushToTalk="Bật bắm để nói"
304
 Basic.Settings.Audio.PushToTalkDelay="Bấm để nói trễ"
305
 Basic.Settings.Audio.UnknownAudioDevice="[Thiết bị không được kết nối hoặc không sẵn dùng]"
306
+Basic.Settings.Audio.Disabled="Đã vô hiệu"
307
 
308
 Basic.Settings.Advanced="Nâng cao"
309
 Basic.Settings.Advanced.General.ProcessPriority="Chương trình ưu tiên"
310
@@ -620,14 +665,11 @@
311
 Basic.Settings.Advanced.General.ProcessPriority.Normal="Thường"
312
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Dưới trung bình"
313
 Basic.Settings.Advanced.General.ProcessPriority.Idle="Rảnh"
314
-Basic.Settings.Advanced.FormatWarning="Cảnh báo: Định dạng màu sắc khác với NV12 chủ yếu dành cho ghi âm và không được khuyến cáo khi streaming.  Stream có thể làm tăng sử dụng CPU do phải chuyển đổi định dạng màu sắc."
315
+Basic.Settings.Advanced.FormatWarning="Cảnh báo: Định dạng màu sắc khác với NV12 chủ yếu dành cho ghi âm và không được khuyến cáo khi streaming. Stream có thể làm tăng sử dụng CPU do phải chuyển đổi định dạng màu sắc."
316
 Basic.Settings.Advanced.Audio.BufferingTime="Âm thanh thời gian đệm"
317
 Basic.Settings.Advanced.Video.ColorFormat="Định dạng màu sắc"
318
-Basic.Settings.Advanced.Video.ColorSpace="Không gian màu YUV"
319
-Basic.Settings.Advanced.Video.ColorRange="Phạm vi màu YUV"
320
 Basic.Settings.Advanced.Video.ColorRange.Partial="Một phần"
321
 Basic.Settings.Advanced.Video.ColorRange.Full="Đầy đủ"
322
-Basic.Settings.Advanced.Audio.MonitoringDevice="Thiết bị giám sát âm thanh"
323
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="Mặc định"
324
 Basic.Settings.Advanced.StreamDelay="Stream trễ"
325
 Basic.Settings.Advanced.StreamDelay.Duration="Thời gian (giây)"
326
@@ -637,11 +679,12 @@
327
 Basic.Settings.Advanced.Network.BindToIP="Liên kết với IP"
328
 Basic.Settings.Advanced.Network.EnableNewSocketLoop="Sử dụng mã mạng mới"
329
 Basic.Settings.Advanced.Network.EnableLowLatencyMode="Chế độ độ trễ thấp"
330
+Basic.Settings.Advanced.AutoRemux.MP4="(ghi với định dạng mkv)"
331
 
332
 Basic.AdvAudio="Thuộc tính âm thanh nâng cao"
333
 Basic.AdvAudio.Name="Tên"
334
-Basic.AdvAudio.Volume="Khối lượng (%)"
335
 Basic.AdvAudio.Mono="Downmix để Mono"
336
+Basic.AdvAudio.Balance="Cân bằng"
337
 Basic.AdvAudio.SyncOffset="Bù đắp đồng bộ (ms)"
338
 Basic.AdvAudio.Monitoring="Giám sát âm thanh"
339
 Basic.AdvAudio.Monitoring.None="Tắt giám sát"
340
@@ -658,7 +701,7 @@
341
 Basic.SystemTray.Show="Hiện"
342
 Basic.SystemTray.Hide="Ẩn"
343
 
344
-Basic.SystemTray.Message.Reconnecting="Ngắt kết nối.  Đang kết nối lại..."
345
+Basic.SystemTray.Message.Reconnecting="Ngắt kết nối. Đang kết nối lại..."
346
 
347
 Hotkeys.Insert="Chèn"
348
 Hotkeys.Delete="Xoá"
349
@@ -695,6 +738,7 @@
350
 Hotkeys.AppleKeypadDecimal=". (Bàn phím)"
351
 Hotkeys.AppleKeypadEqual="= (Bàn phím)"
352
 Hotkeys.MouseButton="Chuột %1"
353
+Hotkeys.Escape="Esc (Thoát)"
354
 
355
 Mute="Tắt Tiếng"
356
 Unmute="Bật tiếng"
357
@@ -717,5 +761,11 @@
358
 
359
 
360
 About="Giới thiệu"
361
+About.GetInvolved="Tham gia"
362
+About.Authors="Các tác giả"
363
+About.License="Giấy phép"
364
+About.Contribute="Hỗ trợ dự án OBS"
365
+
366
+ResizeOutputSizeOfSource.Continue="Bạn có muốn tiếp tục không?"
367
 
368
 
369
obs-studio-23.1.0.tar.xz/UI/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/zh-CN.ini Changed
916
 
1
@@ -1,6 +1,6 @@
2
 
3
-Language="英语"
4
-Region="美国"
5
+Language="简体中文"
6
+Region="中华人民共和国"
7
 
8
 OK="确定"
9
 Apply="应用"
10
@@ -15,43 +15,43 @@
11
 Remove="移除"
12
 Rename="重命名"
13
 Interact="互动"
14
-Filters="筛选"
15
+Filters="滤镜"
16
 Properties="属性"
17
 MoveUp="上移"
18
 MoveDown="下移"
19
 Settings="设置"
20
-Display="显示"
21
+Display="显示器"
22
 Name="名称"
23
 Exit="退出"
24
 Mixer="混音器"
25
 Browse="浏览"
26
 Mono="单声道"
27
 Stereo="立体声"
28
-DroppedFrames="丢帧 %1 (%2%)"
29
-StudioProgramProjector="全屏投影仪(输出)"
30
-PreviewProjector="全屏投影仪(预览)"
31
-SceneProjector="全屏投影仪 (场景)"
32
-SourceProjector="全屏投影仪(源)"
33
-StudioProgramWindow="窗口式投影仪 (输出)"
34
-PreviewWindow="窗口化投影仪 (预览)"
35
-SceneWindow="窗口化投影仪 (场景)"
36
-SourceWindow="窗口化投影仪 (源)"
37
-MultiviewProjector="多屏显示 (全屏)"
38
-MultiviewWindowed="多屏显示 (窗口化)"
39
+DroppedFrames="丢帧 %1(%2%)"
40
+StudioProgramProjector="全屏投影(输出)"
41
+PreviewProjector="全屏投影(预览)"
42
+SceneProjector="全屏投影(场景)"
43
+SourceProjector="全屏投影(源)"
44
+StudioProgramWindow="窗口投影(输出)"
45
+PreviewWindow="窗口投影(预览)"
46
+SceneWindow="窗口投影(场景)"
47
+SourceWindow="窗口投影(源)"
48
+MultiviewProjector="多视图(全屏)"
49
+MultiviewWindowed="多视图(窗口)"
50
 Clear="清除"
51
 Revert="还原"
52
 Show="显示"
53
 Hide="隐藏"
54
-UnhideAll="取消所有隐藏"
55
+UnhideAll="全部取消隐藏"
56
 Untitled="未命名"
57
 New="新建"
58
 Duplicate="复制"
59
 Enable="启用"
60
 DisableOSXVSync="禁用 OSX V-Sync"
61
 ResetOSXVSyncOnExit="退出时重置 OSX V-Sync"
62
-HighResourceUsage="编码过载! 请考虑降低视频设置或使用更快的编码预设"
63
-Transition="过渡动画"
64
-QuickTransitions="快速过渡动画"
65
+HighResourceUsage="编码过载!请考虑降低视频设置或使用更快的编码预设。"
66
+Transition="转场特效"
67
+QuickTransitions="快速转场特效"
68
 Left="左"
69
 Right="右"
70
 Top="上"
71
@@ -68,31 +68,33 @@
72
 Paste="粘贴"
73
 PasteReference="粘贴(引用)"
74
 PasteDuplicate="粘贴(重复)"
75
-RemuxRecordings="转封装录像"
76
-Next="下一个"
77
-Back="返回"
78
-Defaults="默认值"
79
-HideMixer="混合器中隐藏"
80
-TransitionOverride="过渡覆盖模式"
81
+RemuxRecordings="录像转封装"
82
+Next="前进"
83
+Back="后退"
84
+Defaults="默认"
85
+HideMixer="在混音器中隐藏"
86
+TransitionOverride="覆盖默认转场特效"
87
 None="无"
88
 StudioMode.Preview="预览"
89
 StudioMode.Program="输出"
90
-ShowInMultiview="多屏中显示"
91
+ShowInMultiview="在多视图中显示"
92
 VerticalLayout="垂直布局"
93
 Group="分组"
94
 DoNotShowAgain="不再显示"
95
+Default="(默认)"
96
+Calculating="计算中……"
97
 
98
 AlreadyRunning.Title="OBS 已在运行"
99
 AlreadyRunning.Text="OBS 已经在运行中!若你真的想要这样做,请在启动新的 OBS 前关闭其他正在在运行中的 OBS。如果你把 OBS 设置成最小化到系统托盘,请检查它是否仍在运行。"
100
-AlreadyRunning.LaunchAnyway="始终启动"
101
+AlreadyRunning.LaunchAnyway="仍然启动"
102
 
103
 DockCloseWarning.Title="关闭可停靠窗口"
104
-DockCloseWarning.Text="刚刚关闭了一个可停靠的窗口。如果想要再次显示它,请使用菜单栏上的 查看→停靠 菜单。"
105
+DockCloseWarning.Text="您刚关闭了一个可停靠的窗口。如果想要再次显示它,请使用菜单栏上的 查看→停靠部件 菜单。"
106
 
107
 Auth.Authing.Title="正在验证…"
108
-Auth.Authing.Text="正在使用 %1 进行身份验证,请稍候…"
109
+Auth.Authing.Text="正在与 %1 进行身份验证,请稍候…"
110
 Auth.AuthFailure.Title="身份验证失败"
111
-Auth.AuthFailure.Text="无法用 %1 进行身份验证:\n\n%2: %3"
112
+Auth.AuthFailure.Text="无法与 %1 进行身份验证:\n\n%2: %3"
113
 Auth.InvalidScope.Title="需要身份验证"
114
 Auth.InvalidScope.Text="%1 的身份验证要求已更改。某些功能可能不可用。"
115
 Auth.LoadingChannel.Title="正在加载频道信息…"
116
@@ -103,9 +105,11 @@
117
 Auth.StreamInfo="串流资讯"
118
 TwitchAuth.Stats="Twitch 统计"
119
 TwitchAuth.Feed="Twitch 活动订阅源"
120
+TwitchAuth.TwoFactorFail.Title="无法查询流密钥"
121
+TwitchAuth.TwoFactorFail.Text="OBS 无法连接到您的 Twitch 账户。请确保在 <a href='https://www.twitch.tv/settings/security'>Twitch 安全性设置</a>中开启了双重身份验证,只有开启后才能开始推流。"
122
 
123
-Copy.Filters="复制筛选器"
124
-Paste.Filters="粘贴筛选器"
125
+Copy.Filters="复制滤镜"
126
+Paste.Filters="粘贴滤镜"
127
 
128
 BrowserPanelInit.Title="正在初始化浏览器…"
129
 BrowserPanelInit.Text="正在初始化浏览器,请稍候…"
130
@@ -116,23 +120,23 @@
131
 BandwidthTest.Region.Asia="亚洲"
132
 BandwidthTest.Region.Other="其他"
133
 
134
-Basic.FirstStartup.RunWizard="你想要运行自动配置向导吗? 你也可手动可以通过单击主窗口中的设置按钮来配置你的设置."
135
-Basic.FirstStartup.RunWizard.NoClicked="如果你改变主意, 你可以随时从工具菜单再次运行自动配置向导."
136
+Basic.FirstStartup.RunWizard="你想要运行自动配置向导吗?你也可以通过单击主窗口中的设置按钮来手动调节你的设置。"
137
+Basic.FirstStartup.RunWizard.NoClicked="如果你改变了主意,可以随时从工具菜单再次运行自动配置向导。"
138
 
139
 Basic.AutoConfig="自动配置向导"
140
 Basic.AutoConfig.ApplySettings="应用设置"
141
-Basic.AutoConfig.StartPage="使用信息"
142
+Basic.AutoConfig.StartPage="使用情况"
143
 Basic.AutoConfig.StartPage.SubTitle="选择你使用此程序的目的"
144
 Basic.AutoConfig.StartPage.PrioritizeStreaming="优先优化串流,其次为录像"
145
 Basic.AutoConfig.StartPage.PrioritizeRecording="仅优化录像,将不会进行串流"
146
 Basic.AutoConfig.VideoPage="视频设置"
147
-Basic.AutoConfig.VideoPage.SubTitle="指定你想要使用视频设置"
148
-Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="使用当前 (%1x%2)"
149
-Basic.AutoConfig.VideoPage.BaseResolution.Display="显示 %1 (%2x%3)"
150
-Basic.AutoConfig.VideoPage.FPS.UseCurrent="使用当前 (%1)"
151
-Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="60 或 30,但尽可能选择 60"
152
-Basic.AutoConfig.VideoPage.FPS.PreferHighRes="60 或 30, 但优先选择高分辨率"
153
-Basic.AutoConfig.VideoPage.CanvasExplanation="注意:画布(基础)分辨率并不一定需要与推流或者录像的分辨率相同。实际的推流/录像的分辨率可通过缩小画布分辨率来降低资源的使用或对比特率的需求。"
154
+Basic.AutoConfig.VideoPage.SubTitle="指定你想要使用的视频设置"
155
+Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="使用当前的(%1x%2)"
156
+Basic.AutoConfig.VideoPage.BaseResolution.Display="显示器 %1(%2x%3)"
157
+Basic.AutoConfig.VideoPage.FPS.UseCurrent="使用当前(%1)"
158
+Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="60或30,但尽可能选择60"
159
+Basic.AutoConfig.VideoPage.FPS.PreferHighRes="60或30,但优先选择高分辨率"
160
+Basic.AutoConfig.VideoPage.CanvasExplanation="注意:画布(基础)分辨率并不一定要与推流或录像的分辨率相同。实际推流或录像的分辨率可从画布分辨率缩小,以降低对资源的使用或对比特率的需求。"
161
 Basic.AutoConfig.StreamPage="串流资讯"
162
 Basic.AutoConfig.StreamPage.SubTitle="请输入你的串流信息"
163
 Basic.AutoConfig.StreamPage.ConnectAccount="连接帐户(可选)"
164
@@ -148,7 +152,7 @@
165
 Basic.AutoConfig.StreamPage.StreamKey.LinkToSite="(链接)"
166
 Basic.AutoConfig.StreamPage.PerformBandwidthTest="通过带宽测试估计比特率(可能需要几分钟)"
167
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding="优先选择硬件编码"
168
-Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="硬件编码降低了大多数的 CPU 使用率, 但可能需要更多的比特率, 来获得同等的质量."
169
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="硬件编码可大量降低 CPU 的使用率,但要获得与软件编码相同的质量,可能需要更多的比特率。"
170
 Basic.AutoConfig.StreamPage.StreamWarning.Title="串流警告"
171
 Basic.AutoConfig.StreamPage.StreamWarning.Text="带宽测试将开始串流无音频的随机视频数据。如果可以,建议你暂时关闭视频保存功能并把串流设置成私人直到测试结束。要继续吗?"
172
 Basic.AutoConfig.TestPage="最终结果"
173
@@ -166,7 +170,7 @@
174
 Basic.AutoConfig.TestPage.Result.StreamingEncoder="串流编码器"
175
 Basic.AutoConfig.TestPage.Result.RecordingEncoder="录像编码器"
176
 Basic.AutoConfig.TestPage.Result.Header="程序已确定这些估计设置是最适合你:"
177
-Basic.AutoConfig.TestPage.Result.Footer="要使用这些设置, 单击应用设置. 要重新配置向导并再试一次, 单击后退. 要自己手动配置设置, 单击取消, 然后打开设置."
178
+Basic.AutoConfig.TestPage.Result.Footer="要使用这些设置,单击“应用设置”。要重新配置向导并再试一次,单击“后退”。要自己手动配置设置,单击“取消”,然后打开设置。"
179
 
180
 Basic.Stats="统计"
181
 Basic.Stats.CPUUsage="CPU 使用率"
182
@@ -178,16 +182,17 @@
183
 Basic.Stats.Output.Stream="串流"
184
 Basic.Stats.Output.Recording="录像"
185
 Basic.Stats.Status="状态"
186
-Basic.Stats.Status.Recording="录像"
187
+Basic.Stats.Status.Recording="录像中"
188
 Basic.Stats.Status.Live="直播中"
189
 Basic.Stats.Status.Reconnecting="重新连接中"
190
 Basic.Stats.Status.Inactive="未激活"
191
 Basic.Stats.DroppedFrames="丢弃的帧(网络)"
192
 Basic.Stats.MegabytesSent="总数据输出"
193
 Basic.Stats.Bitrate="比特率"
194
+Basic.Stats.DiskFullIn="硬盘装满前剩余录制时间(约)"
195
 
196
-ResetUIWarning.Title="您确定要重置 UI 吗?"
197
-ResetUIWarning.Text="重置UI将隐藏其他停靠。如果希望这些停靠可见,则需要从“视图”菜单中取消隐藏它们。\n\n您确定要重置 UI 吗?"
198
+ResetUIWarning.Title="您确定要重置界面吗?"
199
+ResetUIWarning.Text="重置界面将隐藏额外的停靠窗口。如果希望重新显示这些停靠窗口,则需要从“查看”菜单中取消隐藏它们。\n\n您确定要重置界面吗?"
200
 
201
 Updater.Title="有可用的更新"
202
 Updater.Text="有可用的新版本:"
203
@@ -197,28 +202,28 @@
204
 Updater.Running.Title="程序当前处于活跃状态"
205
 Updater.Running.Text="输出当前处于活动状态, 请关闭任何活跃的输出, 然后尝试更新"
206
 Updater.NoUpdatesAvailable.Title="无可用更新"
207
-Updater.NoUpdatesAvailable.Text="没有更新当前可用"
208
+Updater.NoUpdatesAvailable.Text="当前没有可用更新"
209
 Updater.FailedToLaunch="启动更新程序失败"
210
 Updater.GameCaptureActive.Title="游戏捕获活跃"
211
-Updater.GameCaptureActive.Text="游戏捕获钩子库正在使用中, 请关闭所有正在被捕获的游戏/程序(或重新启动 windows), 然后重试."
212
+Updater.GameCaptureActive.Text="游戏捕获钩子库正在使用中。请关闭所有正在被捕获的游戏/程序(或重新启动 Windows),然后重试。"
213
 
214
-QuickTransitions.SwapScenes="在过渡动画后交换预览/输出场景"
215
-QuickTransitions.SwapScenesTT="在过渡后交换预览和输出场景(如果输出的原始场景仍然存在)。 \n这将不会撤消任何对输出的原始场景做出的更改."
216
+QuickTransitions.SwapScenes="在转场后交换预览/输出场景"
217
+QuickTransitions.SwapScenesTT="(如果输出的原始场景仍存在)在转场后交换预览和输出场景。\n这将不会撤消任何对输出的原始场景的更改。"
218
 QuickTransitions.DuplicateScene="复制场景"
219
-QuickTransitions.DuplicateSceneTT="当编辑同一场景, 允许编辑来源的可见性/变换而无需修改源输出. \n 为了编辑源属性而无需修改输出, 启动 ' 复制源'. \n 改变这个值将会重置当前的输出场景(如果它仍然存在)."
220
+QuickTransitions.DuplicateSceneTT="当编辑同一场景时,可以修改源的变换/可见性,而不会影响输出。\n若要修改源属性而不影响输出,请打开“复制源”。\n改变这个值将会重置当前的输出场景(如果仍存在)。"
221
 QuickTransitions.EditProperties="复制源"
222
-QuickTransitions.EditPropertiesTT="当编辑同一场景, 允许编辑来源的属性而不修改输出. \n 只有启用了'复制场景',才能使用这项设置. \n 某些来源 (如捕获或媒体源) 并不支持这个, 并不能单独编辑. \n 修改这个值将重置当前输出场景 (如果它仍然存在). \n\n 警告: 因为源将被复制这可能需要额外的系统或视频资源."
223
-QuickTransitions.HotkeyName="快速过渡: %1"
224
+QuickTransitions.EditPropertiesTT="当编辑同一场景时,可以修改源的属性,而不会影响输出。\n只有启用了“复制场景”之后才能使用这项设置。\n某些源(如捕获或媒体源)并不支持此功能,且不能单独修改。\n改变这个值将会重置当前的输出场景(如果仍存在)。\n\n警告:因为源将被复制,可能需要额外的系统或视频资源。"
225
+QuickTransitions.HotkeyName="快速转场:%1"
226
 
227
-Basic.AddTransition="添加可配置的过渡动画"
228
-Basic.RemoveTransition="删除可配置的过渡动画"
229
-Basic.TransitionProperties="过渡动画属性"
230
-Basic.SceneTransitions="场景过渡"
231
+Basic.AddTransition="添加可配置的转场特效"
232
+Basic.RemoveTransition="删除可配置的转场特效"
233
+Basic.TransitionProperties="转场特效属性"
234
+Basic.SceneTransitions="转场特效"
235
 Basic.TransitionDuration="时长"
236
 Basic.TogglePreviewProgramMode="工作室模式"
237
 
238
-TransitionNameDlg.Text="请输入过渡动画的名称"
239
-TransitionNameDlg.Title="过渡动画名称"
240
+TransitionNameDlg.Text="请输入转场特效的名称"
241
+TransitionNameDlg.Title="转场特效名称"
242
 
243
 TitleBar.Profile="配置文件"
244
 TitleBar.Scenes="场景"
245
@@ -250,6 +255,7 @@
246
 Output.StartReplayFailed="启动回放缓存失败"
247
 Output.StartFailedGeneric="启动输出失败. 请检查日志来了解细节.\n\n注意: 如果你使用的是 NVENC 或 AMD 编码器, 请确保您的视频驱动程序是最新的."
248
 
249
+
250
 Output.ConnectFail.Title="连接失败"
251
 Output.ConnectFail.BadPath="无效的路径或URL。请检查您的设置以确认它们是有效的。"
252
 Output.ConnectFail.ConnectFailed="无法连接到服务器"
253
@@ -257,17 +263,21 @@
254
 Output.ConnectFail.Error="试图连接到服务器时出现意外的错误。详细信息记录在日志文件中。"
255
 Output.ConnectFail.Disconnected="已从服务器断开。"
256
 
257
+Output.StreamEncodeError.Title="编码错误"
258
+Output.StreamEncodeError.Msg="推流时发生了编码器错误。"
259
+
260
 Output.RecordFail.Title="未能开始录制"
261
 Output.RecordFail.Unsupported="输出格式不支持或者不支持超过一个音轨. 请检查你的设置, 然后重试"
262
 Output.RecordNoSpace.Title="磁盘空间不足"
263
 Output.RecordNoSpace.Msg="没有足够磁盘空间来继续录像."
264
 Output.RecordError.Title="录像错误"
265
 Output.RecordError.Msg="录像时发生了预料外的错误。"
266
-Output.ReplayBuffer.NoHotkey.Title="没有快捷键设置!"
267
-Output.ReplayBuffer.NoHotkey.Msg="没有为回放缓存设置快捷键. 请设置保存跨借鉴来用于保存回放录像."
268
+Output.RecordError.EncodeErrorMsg="录制时发生了编码器错误。"
269
+Output.ReplayBuffer.NoHotkey.Title="没有设置快捷键!"
270
+Output.ReplayBuffer.NoHotkey.Msg="没有为回放缓存设置保存快捷键。请设置“保存回放”的快捷键,用于保存回放录像。"
271
 
272
-Output.BadPath.Title="错误的文件路径"
273
-Output.BadPath.Text="无效的输出路径。请检查您的设置,确认文件路径是否有效。"
274
+Output.BadPath.Title="文件路径错误"
275
+Output.BadPath.Text="输出路径无效。请检查您的设置,并确认文件路径有效。"
276
 
277
 LogReturnDialog="日志上传成功"
278
 LogReturnDialog.CopyURL="复制链接"
279
@@ -275,37 +285,39 @@
280
 
281
 Remux.SourceFile="OBS 录像"
282
 Remux.TargetFile="目标文件"
283
-Remux.Remux="重新封装"
284
-Remux.Stop="停止 Remuxing"
285
+Remux.Remux="转换封装"
286
+Remux.Stop="停止封装转换"
287
 Remux.ClearFinished="清除已完成项目"
288
 Remux.ClearAll="清除所有项目"
289
 Remux.OBSRecording="OBS 录像"
290
 Remux.FinishedTitle="转封装完成"
291
 Remux.Finished="录像已经转封装"
292
-Remux.FinishedError="录像已经转封装, 但是文件可能不完整."
293
-Remux.SelectRecording="选择 OBS 录制…"
294
+Remux.FinishedError="录像封装已转换,但文件可能不完整"
295
+Remux.SelectRecording="选择 OBS 录像文件…"
296
 Remux.SelectTarget="选择目标文件…"
297
-Remux.FileExistsTitle="选定的文件已存在"
298
-Remux.FileExists="选定的文件已存在。你想替换它们吗?"
299
+Remux.FileExistsTitle="目标文件已存在"
300
+Remux.FileExists="目标文件已存在。你想替换它们吗?"
301
 Remux.ExitUnfinishedTitle="转封装在进行中"
302
-Remux.ExitUnfinished="转封装没有完成, 现在停止可能使目标文件不可用.\n你确定要停止转封装吗?"
303
-Remux.HelpText="拖动文件到此窗口以无损提取或选择空 “OBS 录制” 单元以浏览文件。"
304
+Remux.ExitUnfinished="转封装尚未完成,现在停止可能会使目标文件无法使用。\n你确定要停止封装转换吗?"
305
+Remux.HelpText="拖动文件到此窗口以转换封装格式,或选择空“OBS 录像”单元以浏览文件。"
306
 
307
 UpdateAvailable="有可用的更新"
308
 UpdateAvailable.Text="新的版本 %1.%2.%3 已可用。<a href='%4'> 点击这里下载</a>"
309
 
310
-Basic.DesktopDevice1="台式音响"
311
-Basic.DesktopDevice2="台式音响 2"
312
+Basic.DesktopDevice1="桌面音频"
313
+Basic.DesktopDevice2="桌面音频 2"
314
 Basic.AuxDevice1="麦克风/Aux"
315
 Basic.AuxDevice2="麦克风/Aux 2"
316
 Basic.AuxDevice3="麦克风/Aux 3"
317
 Basic.AuxDevice4="麦克风/Aux 4"
318
 
319
 Basic.Scene="场景"
320
-Basic.DisplayCapture="显示捕获"
321
+Basic.DisplayCapture="显示器捕获"
322
 
323
 Basic.Main.PreviewConextMenu.Enable="开启预览"
324
 
325
+Basic.Main.Preview.Disable="关闭预览"
326
+
327
 ScaleFiltering="尺度滤波"
328
 ScaleFiltering.Point="点"
329
 ScaleFiltering.Bilinear="双线性算法"
330
@@ -328,7 +340,7 @@
331
 VolControl.SliderUnmuted="音量滑动条 '%1': %2"
332
 VolControl.SliderMuted="音量滑动条 '%1': %2 (当前静音)"
333
 VolControl.Mute="静音 '%1'"
334
-VolControl.Properties="属性 '%1'"
335
+VolControl.Properties="'%1' 的属性"
336
 
337
 Basic.Main.AddSceneDlg.Title="添加场景"
338
 Basic.Main.AddSceneDlg.Text="请输入场景名称"
339
@@ -385,49 +397,49 @@
340
 Basic.StatusBar.DelayStoppingIn="延迟 (在 %1 秒后停止)"
341
 Basic.StatusBar.DelayStartingStoppingIn="延迟 (在%1 秒后停止,在 %2 秒后开始)"
342
 
343
-Basic.Filters="过滤器"
344
-Basic.Filters.AsyncFilters="音频/视频 过滤器"
345
-Basic.Filters.AudioFilters="音频过滤器"
346
+Basic.Filters="滤镜"
347
+Basic.Filters.AsyncFilters="音频/视频滤镜"
348
+Basic.Filters.AudioFilters="音频滤镜"
349
 Basic.Filters.EffectFilters="效果滤镜"
350
-Basic.Filters.Title="'%1' 的过滤器"
351
-Basic.Filters.AddFilter.Title="过滤器名称"
352
-Basic.Filters.AddFilter.Text="请指定过滤器的名称"
353
+Basic.Filters.Title="'%1' 的滤镜"
354
+Basic.Filters.AddFilter.Title="滤镜名称"
355
+Basic.Filters.AddFilter.Text="请指定滤镜的名称"
356
 
357
-Basic.TransformWindow="现场项目变换"
358
+Basic.TransformWindow="场景物体变换"
359
 Basic.TransformWindow.Position="位置"
360
 Basic.TransformWindow.Rotation="旋转"
361
 Basic.TransformWindow.Size="大小"
362
-Basic.TransformWindow.Alignment="位置对齐"
363
-Basic.TransformWindow.BoundsType="边界框类型"
364
-Basic.TransformWindow.BoundsAlignment="边界框对齐方式"
365
-Basic.TransformWindow.Bounds="边界框大小"
366
+Basic.TransformWindow.Alignment="对齐点"
367
+Basic.TransformWindow.BoundsType="边框类型"
368
+Basic.TransformWindow.BoundsAlignment="边框内对齐方式"
369
+Basic.TransformWindow.Bounds="边框大小"
370
 Basic.TransformWindow.Crop="裁剪"
371
 
372
 Basic.TransformWindow.Alignment.TopLeft="左上"
373
-Basic.TransformWindow.Alignment.TopCenter="顶上"
374
+Basic.TransformWindow.Alignment.TopCenter="中上"
375
 Basic.TransformWindow.Alignment.TopRight="右上"
376
-Basic.TransformWindow.Alignment.CenterLeft="靠左居中"
377
+Basic.TransformWindow.Alignment.CenterLeft="左中"
378
 Basic.TransformWindow.Alignment.Center="居中"
379
-Basic.TransformWindow.Alignment.CenterRight="靠右居中"
380
+Basic.TransformWindow.Alignment.CenterRight="右中"
381
 Basic.TransformWindow.Alignment.BottomLeft="左下"
382
-Basic.TransformWindow.Alignment.BottomCenter="正下"
383
+Basic.TransformWindow.Alignment.BottomCenter="中下"
384
 Basic.TransformWindow.Alignment.BottomRight="右下"
385
 
386
-Basic.TransformWindow.BoundsType.None="没有界限"
387
-Basic.TransformWindow.BoundsType.MaxOnly="最大大小"
388
-Basic.TransformWindow.BoundsType.ScaleInner="缩放到内部边界"
389
-Basic.TransformWindow.BoundsType.ScaleOuter="扩展到外部界限"
390
-Basic.TransformWindow.BoundsType.ScaleToWidth="缩放到边界宽度"
391
-Basic.TransformWindow.BoundsType.ScaleToHeight="缩放到边界高度"
392
+Basic.TransformWindow.BoundsType.None="无边框"
393
+Basic.TransformWindow.BoundsType.MaxOnly="等比缩放到框内,不超过原始大小"
394
+Basic.TransformWindow.BoundsType.ScaleInner="等比缩放到框内"
395
+Basic.TransformWindow.BoundsType.ScaleOuter="等比缩放到框外"
396
+Basic.TransformWindow.BoundsType.ScaleToWidth="等比缩放到边框宽度"
397
+Basic.TransformWindow.BoundsType.ScaleToHeight="等比缩放到边框高度"
398
 Basic.TransformWindow.BoundsType.Stretch="拉伸"
399
 
400
 Basic.Main.AddSourceHelp.Title="无法添加源"
401
-Basic.Main.AddSourceHelp.Text="你需要至少一个场景来添加源。"
402
+Basic.Main.AddSourceHelp.Text="你需要至少一个场景才能添加源。"
403
 
404
 Basic.Main.Scenes="场景"
405
 Basic.Main.Sources="来源"
406
 Basic.Main.Controls="控件"
407
-Basic.Main.Connecting="连接中..."
408
+Basic.Main.Connecting="连接中……"
409
 Basic.Main.StartRecording="开始录制"
410
 Basic.Main.StartReplayBuffer="开始回放缓存"
411
 Basic.Main.StartStreaming="开始推流"
412
@@ -446,73 +458,75 @@
413
 Basic.MainMenu.File.Export="导出(&E)"
414
 Basic.MainMenu.File.Import="导入(&I)"
415
 Basic.MainMenu.File.ShowRecordings="显示录像(&R)"
416
-Basic.MainMenu.File.Remux="转封装录像 (&M)"
417
+Basic.MainMenu.File.Remux="录像转封装(&M)"
418
 Basic.MainMenu.File.Settings="设置(&S)"
419
-Basic.MainMenu.File.ShowSettingsFolder="打开设置所在路径(&F)"
420
-Basic.MainMenu.File.ShowProfileFolder="打开配置文件所在路径(&P)"
421
-Basic.MainMenu.AlwaysOnTop="窗口置顶 (&A)"
422
+Basic.MainMenu.File.ShowSettingsFolder="打开设置文件夹"
423
+Basic.MainMenu.File.ShowProfileFolder="打开配置文件文件夹"
424
+Basic.MainMenu.AlwaysOnTop="窗口置顶(&A)"
425
 Basic.MainMenu.File.Exit="退出(&X)"
426
 
427
-Basic.MainMenu.Edit="编辑 (&E)"
428
-Basic.MainMenu.Edit.Undo="撤销 (&U)"
429
-Basic.MainMenu.Edit.Redo="重做 (&R)"
430
+Basic.MainMenu.Edit="编辑(&E)"
431
+Basic.MainMenu.Edit.Undo="撤消(&U)"
432
+Basic.MainMenu.Edit.Redo="重做(&R)"
433
 Basic.MainMenu.Edit.UndoAction="撤消 $1 (&U)"
434
-Basic.MainMenu.Edit.RedoAction="重做 $1(&R)"
435
-Basic.MainMenu.Edit.LockPreview="锁定预览 (&L)"
436
-Basic.MainMenu.Edit.Scale="预览 缩放(&S)"
437
+Basic.MainMenu.Edit.RedoAction="重做 $1 (&R)"
438
+Basic.MainMenu.Edit.LockPreview="锁定预览(&L)"
439
+Basic.MainMenu.Edit.Scale="预览缩放(&S)"
440
 Basic.MainMenu.Edit.Scale.Window="缩放至窗口"
441
-Basic.MainMenu.Edit.Scale.Canvas="背景 (%1x%2)"
442
-Basic.MainMenu.Edit.Scale.Output="输出 (%1x%2)"
443
-Basic.MainMenu.Edit.Transform="变换 (&T)"
444
-Basic.MainMenu.Edit.Transform.EditTransform="编辑变换 (&E)"
445
+Basic.MainMenu.Edit.Scale.Canvas="画布(%1x%2)"
446
+Basic.MainMenu.Edit.Scale.Output="输出(%1x%2)"
447
+Basic.MainMenu.Edit.Transform="变换(&T)"
448
+Basic.MainMenu.Edit.Transform.EditTransform="编辑变换(&E)..."
449
 Basic.MainMenu.Edit.Transform.CopyTransform="复制变换"
450
 Basic.MainMenu.Edit.Transform.PasteTransform="粘贴变换"
451
-Basic.MainMenu.Edit.Transform.ResetTransform="重置变换 (&R)"
452
-Basic.MainMenu.Edit.Transform.Rotate90CW="顺时针旋转 90 度(&9)"
453
-Basic.MainMenu.Edit.Transform.Rotate90CCW="逆时针旋转 90 度(&D)"
454
-Basic.MainMenu.Edit.Transform.Rotate180="旋转 180 度(&1)"
455
-Basic.MainMenu.Edit.Transform.FlipHorizontal="水平翻转 (&H)"
456
-Basic.MainMenu.Edit.Transform.FlipVertical="垂直翻转 (&V)"
457
-Basic.MainMenu.Edit.Transform.FitToScreen="比例适配屏幕 (&F)"
458
-Basic.MainMenu.Edit.Transform.StretchToScreen="拉伸到全屏 (&S)"
459
-Basic.MainMenu.Edit.Transform.CenterToScreen="屏幕居中 (&C)"
460
-Basic.MainMenu.Edit.Order="排序 (&O)"
461
-Basic.MainMenu.Edit.Order.MoveUp="上移 (&U)"
462
-Basic.MainMenu.Edit.Order.MoveDown="下移 (&D)"
463
-Basic.MainMenu.Edit.Order.MoveToTop="移至顶部 (&T)"
464
-Basic.MainMenu.Edit.Order.MoveToBottom="移至底部 (&B)"
465
+Basic.MainMenu.Edit.Transform.ResetTransform="重置变换(&R)"
466
+Basic.MainMenu.Edit.Transform.Rotate90CW="顺时针旋转 90 度"
467
+Basic.MainMenu.Edit.Transform.Rotate90CCW="逆时针旋转 90 度"
468
+Basic.MainMenu.Edit.Transform.Rotate180="旋转 180 度"
469
+Basic.MainMenu.Edit.Transform.FlipHorizontal="水平翻转(&H)"
470
+Basic.MainMenu.Edit.Transform.FlipVertical="垂直翻转(&V)"
471
+Basic.MainMenu.Edit.Transform.FitToScreen="比例适配屏幕(&F)"
472
+Basic.MainMenu.Edit.Transform.StretchToScreen="拉伸到全屏(&S)"
473
+Basic.MainMenu.Edit.Transform.CenterToScreen="屏幕居中(&C)"
474
+Basic.MainMenu.Edit.Transform.VerticalCenter="垂直居中"
475
+Basic.MainMenu.Edit.Transform.HorizontalCenter="水平居中"
476
+Basic.MainMenu.Edit.Order="排序(&O)"
477
+Basic.MainMenu.Edit.Order.MoveUp="上移(&U)"
478
+Basic.MainMenu.Edit.Order.MoveDown="下移(&D)"
479
+Basic.MainMenu.Edit.Order.MoveToTop="移至顶层(&T)"
480
+Basic.MainMenu.Edit.Order.MoveToBottom="移至底层(&B)"
481
 Basic.MainMenu.Edit.AdvAudio="高级音频属性(&A)"
482
 
483
-Basic.MainMenu.View="查看 (&V)"
484
-Basic.MainMenu.View.Toolbars="工具栏 (&T)"
485
+Basic.MainMenu.View="查看(&V)"
486
+Basic.MainMenu.View.Toolbars="工具栏(&T)"
487
 Basic.MainMenu.View.Docks="停靠部件"
488
 Basic.MainMenu.View.Docks.ResetUI="重置界面"
489
 Basic.MainMenu.View.Docks.LockUI="锁定界面"
490
-Basic.MainMenu.View.Toolbars.Listboxes="列表框 (&L)"
491
-Basic.MainMenu.View.SceneTransitions="场景过渡 (&C)"
492
-Basic.MainMenu.View.StatusBar="状态栏 (&S)"
493
+Basic.MainMenu.View.Toolbars.Listboxes="列表框(&L)"
494
+Basic.MainMenu.View.SceneTransitions="转场特效(&C)"
495
+Basic.MainMenu.View.StatusBar="状态栏(&S)"
496
 Basic.MainMenu.View.Fullscreen.Interface="全屏界面"
497
 
498
-Basic.MainMenu.SceneCollection="场景集合 (&S)"
499
-Basic.MainMenu.Profile="配置文件 (&P)"
500
+Basic.MainMenu.SceneCollection="场景集合(&S)"
501
+Basic.MainMenu.Profile="配置文件(&P)"
502
 Basic.MainMenu.Profile.Import="导入配置文件"
503
 Basic.MainMenu.Profile.Export="导出配置文件"
504
 Basic.MainMenu.SceneCollection.Import="导入场景集合"
505
 Basic.MainMenu.SceneCollection.Export="导出场景集合"
506
 Basic.MainMenu.Profile.Exists="配置文件已存在"
507
-Basic.MainMenu.SceneCollection.Exists="场景机会已存在"
508
+Basic.MainMenu.SceneCollection.Exists="场景集合已存在"
509
 
510
-Basic.MainMenu.Tools="工具 (&T)"
511
+Basic.MainMenu.Tools="工具(&T)"
512
 
513
-Basic.MainMenu.Help="帮助 (&H)"
514
+Basic.MainMenu.Help="帮助(&H)"
515
 Basic.MainMenu.Help.HelpPortal="帮助门户(&P)"
516
-Basic.MainMenu.Help.Website="访问OBS主页 (&W)"
517
+Basic.MainMenu.Help.Website="访问 OBS 主页(&W)"
518
 Basic.MainMenu.Help.Discord="加入 &Discord 服务器"
519
-Basic.MainMenu.Help.Logs="日志文件 (&L)"
520
-Basic.MainMenu.Help.Logs.ShowLogs="显示日志文件 (&S)"
521
-Basic.MainMenu.Help.Logs.UploadCurrentLog="上传当前日志文件 (&C)"
522
-Basic.MainMenu.Help.Logs.UploadLastLog="上传最后一个日志文件 (&L)"
523
-Basic.MainMenu.Help.Logs.ViewCurrentLog="查看当前日志 (&V)"
524
+Basic.MainMenu.Help.Logs="日志文件(&L)"
525
+Basic.MainMenu.Help.Logs.ShowLogs="显示日志文件(&S)"
526
+Basic.MainMenu.Help.Logs.UploadCurrentLog="上传当前日志文件(&C)"
527
+Basic.MainMenu.Help.Logs.UploadLastLog="上传上次日志文件(&L)"
528
+Basic.MainMenu.Help.Logs.ViewCurrentLog="查看当前日志(&V)"
529
 Basic.MainMenu.Help.CheckForUpdates="检查升级(&C)"
530
 Basic.MainMenu.Help.CrashLogs="错误报告(&R)"
531
 Basic.MainMenu.Help.CrashLogs.ShowLogs="查看错误报告(&S)"
532
@@ -530,42 +544,42 @@
533
 Basic.Settings.General.OpenStatsOnStartup="在启动时打开统计对话框"
534
 Basic.Settings.General.WarnBeforeStartingStream="启动流时显示确认对话框"
535
 Basic.Settings.General.WarnBeforeStoppingStream="停止流时显示确认对话框"
536
-Basic.Settings.General.Projectors="投影仪"
537
-Basic.Settings.General.HideProjectorCursor="隐藏投影仪上的光标"
538
-Basic.Settings.General.ProjectorAlwaysOnTop="使投影器总是置顶"
539
-Basic.Settings.General.Snapping="源对齐方式"
540
-Basic.Settings.General.ScreenSnapping="对齐源到屏幕边缘"
541
-Basic.Settings.General.CenterSnapping="水平和垂直居中对齐源"
542
-Basic.Settings.General.SourceSnapping="对齐源跟其他的源"
543
-Basic.Settings.General.SnapDistance="对齐的敏感性"
544
-Basic.Settings.General.RecordWhenStreaming="当推流时自动录像"
545
-Basic.Settings.General.KeepRecordingWhenStreamStops="当推流停止时保持录像"
546
+Basic.Settings.General.Projectors="投影窗口"
547
+Basic.Settings.General.HideProjectorCursor="投影窗口中隐藏光标"
548
+Basic.Settings.General.ProjectorAlwaysOnTop="使投影窗口置顶"
549
+Basic.Settings.General.Snapping="源对齐吸附"
550
+Basic.Settings.General.ScreenSnapping="吸附源到屏幕边缘"
551
+Basic.Settings.General.CenterSnapping="吸附源到水平和垂直中心"
552
+Basic.Settings.General.SourceSnapping="吸附源到其他的源"
553
+Basic.Settings.General.SnapDistance="吸附敏感度"
554
+Basic.Settings.General.RecordWhenStreaming="推流时自动录像"
555
+Basic.Settings.General.KeepRecordingWhenStreamStops="推流停止后继续录像"
556
 Basic.Settings.General.ReplayBufferWhileStreaming="推流时自动启动重播缓冲区"
557
-Basic.Settings.General.KeepReplayBufferStreamStops="推流停止时重播缓冲区保持活动状态"
558
+Basic.Settings.General.KeepReplayBufferStreamStops="推流停止后保持重播缓冲区启用"
559
 Basic.Settings.General.SysTray="系统托盘"
560
 Basic.Settings.General.SysTrayWhenStarted="开始时最小化到系统托盘"
561
-Basic.Settings.General.SystemTrayHideMinimize="总是最小化到系统托盘, 而不是任务栏"
562
-Basic.Settings.General.SaveProjectors="退出时保存投影仪"
563
-Basic.Settings.General.Preview="停止混流"
564
+Basic.Settings.General.SystemTrayHideMinimize="总是最小化到系统托盘,而不是任务栏"
565
+Basic.Settings.General.SaveProjectors="退出时保存投影窗口设置"
566
+Basic.Settings.General.Preview="预览"
567
 Basic.Settings.General.OverflowHidden="隐藏溢出"
568
 Basic.Settings.General.OverflowAlwaysVisible="溢出始终可见"
569
 Basic.Settings.General.OverflowSelectionHidden="即使源不可见,也会显示溢出"
570
 Basic.Settings.General.SwitchOnDoubleClick="双击时切换到场景"
571
 Basic.Settings.General.StudioPortraitLayout="启用纵向布局"
572
-Basic.Settings.General.TogglePreviewProgramLabels="显示 预览/程序 标签"
573
+Basic.Settings.General.TogglePreviewProgramLabels="显示 预览/输出 标签"
574
 Basic.Settings.General.Multiview="多视图"
575
-Basic.Settings.General.Multiview.MouseSwitch="点击切换场景"
576
-Basic.Settings.General.Multiview.DrawSourceNames="显示场景名"
577
-Basic.Settings.General.Multiview.DrawSafeAreas="显示安全区域(EBU R 95)"
578
+Basic.Settings.General.Multiview.MouseSwitch="单击以切换场景"
579
+Basic.Settings.General.Multiview.DrawSourceNames="显示场景名称"
580
+Basic.Settings.General.Multiview.DrawSafeAreas="显示安全区域(EBU R 95)"
581
 Basic.Settings.General.MultiviewLayout="多视图布局"
582
-Basic.Settings.General.MultiviewLayout.Horizontal.Top="水平, 顶部(8 场景)"
583
-Basic.Settings.General.MultiviewLayout.Horizontal.Bottom="水平, 底部(8 场景)"
584
-Basic.Settings.General.MultiviewLayout.Vertical.Left="垂直, 左侧(8 场景)"
585
-Basic.Settings.General.MultiviewLayout.Vertical.Right="垂直, 右侧(8 场景)"
586
-Basic.Settings.General.MultiviewLayout.Horizontal.Extended.Top="水平, 顶部(24 场景)"
587
-
588
-Basic.Settings.Stream="串流"
589
-Basic.Settings.Stream.StreamType="串流类型"
590
+Basic.Settings.General.MultiviewLayout.Horizontal.Top="横向平铺,顶部(8 场景)"
591
+Basic.Settings.General.MultiviewLayout.Horizontal.Bottom="横向平铺,底部(8 场景)"
592
+Basic.Settings.General.MultiviewLayout.Vertical.Left="纵向平铺,左侧(8 场景)"
593
+Basic.Settings.General.MultiviewLayout.Vertical.Right="纵向平铺,右侧(8 场景)"
594
+Basic.Settings.General.MultiviewLayout.Horizontal.Extended.Top="横向平铺,顶部(24 场景)"
595
+
596
+Basic.Settings.Stream="推流"
597
+Basic.Settings.Stream.StreamType="推流类型"
598
 Basic.Settings.Stream.Custom.UseAuthentication="使用身份验证"
599
 Basic.Settings.Stream.Custom.Username="用户名"
600
 Basic.Settings.Stream.Custom.Password="密码"
601
@@ -582,11 +596,11 @@
602
 Basic.Settings.Output.Mode.Adv="高级"
603
 Basic.Settings.Output.Mode.FFmpeg="FFmpeg 输出"
604
 Basic.Settings.Output.UseReplayBuffer="启用回放缓存"
605
-Basic.Settings.Output.ReplayBuffer.SecondsMax="最大回放时间(秒)"
606
-Basic.Settings.Output.ReplayBuffer.MegabytesMax="最大内存(Mb)"
607
-Basic.Settings.Output.ReplayBuffer.Estimate="估计内存使用率: %1 MB"
608
-Basic.Settings.Output.ReplayBuffer.EstimateUnknown="无法估计内存使用率. 请设置最大内存限制."
609
-Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(注意: 确保在快捷键部分设置一个回放缓冲区的快捷键)"
610
+Basic.Settings.Output.ReplayBuffer.SecondsMax="最大回放时间(秒)"
611
+Basic.Settings.Output.ReplayBuffer.MegabytesMax="最大内存(MB)"
612
+Basic.Settings.Output.ReplayBuffer.Estimate="估计内存使用量:%1 MB"
613
+Basic.Settings.Output.ReplayBuffer.EstimateUnknown="无法估计内存使用量。请设置最大内存限制。"
614
+Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(注意:一定要在快捷键部分为保存回放缓存设置快捷键)"
615
 Basic.Settings.Output.ReplayBuffer.Prefix="回放缓存文件名前缀"
616
 Basic.Settings.Output.ReplayBuffer.Suffix="后缀"
617
 Basic.Settings.Output.Simple.SavePath="录像路径"
618
@@ -598,29 +612,29 @@
619
 Basic.Settings.Output.Simple.Warn.VideoBitrate="警告: 视频比特率将设置为 %1, 这是当前的流媒体服务的上限值. 如果你确定你想要超过 %1, 启用高级的编码器选项并取消选中\"强制流媒体服务比特率限制\"."
620
 Basic.Settings.Output.Simple.Warn.AudioBitrate="警告: 音频比特率将设置为 %1, 这是当前的流媒体服务的上限值. 如果你确定你想要超过 %1, 启用高级的编码器选项并取消选中\"强制流媒体服务比特率限制\"."
621
 Basic.Settings.Output.Simple.Warn.Encoder="警告: 同时传输流和录像, 并使用软件编码器编码与流不同的质量, 将会需要额外的CPU使用."
622
-Basic.Settings.Output.Simple.Warn.Lossless="警告: 无损质量产生的文件大小非常大! 无损质量在高分辨率和帧速率的情况下可以使用超过7GB的磁盘空间每分钟。 无损不适合长时间录像,除非你有很多可用的磁盘空间。"
623
+Basic.Settings.Output.Simple.Warn.Lossless="警告:无损质量产生的文件大小非常大!无损质量在高分辨率和帧速率的情况下每分钟可使用超过 7GB 的磁盘空间。无损不适合长时间录像,除非你有很多可用的磁盘空间。"
624
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="你确定你想要使用无损质量?"
625
 Basic.Settings.Output.Simple.Warn.Lossless.Title="无损质量警告!"
626
-Basic.Settings.Output.Simple.Encoder.Software="软件 (x264)"
627
-Basic.Settings.Output.Simple.Encoder.Hardware.QSV="硬件 (QSV)"
628
-Basic.Settings.Output.Simple.Encoder.Hardware.AMD="硬件 (AMD)"
629
-Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="硬件 (NVENC)"
630
-Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="软件 (x 264 低 CPU 使用率预设,增加文件大小)"
631
+Basic.Settings.Output.Simple.Encoder.Software="软件(x264)"
632
+Basic.Settings.Output.Simple.Encoder.Hardware.QSV="硬件(QSV)"
633
+Basic.Settings.Output.Simple.Encoder.Hardware.AMD="硬件(AMD)"
634
+Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="硬件(NVENC)"
635
+Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="软件(x264 低 CPU 使用率预设,将会增加文件大小)"
636
 Basic.Settings.Output.VideoBitrate="视频比特率"
637
 Basic.Settings.Output.AudioBitrate="音频比特率"
638
 Basic.Settings.Output.Reconnect="自动重连"
639
-Basic.Settings.Output.RetryDelay="重试延迟时间 (秒)"
640
+Basic.Settings.Output.RetryDelay="重试间隔(秒)"
641
 Basic.Settings.Output.MaxRetries="最大重试次数"
642
 Basic.Settings.Output.Advanced="启用高级编码器设置"
643
 Basic.Settings.Output.EncoderPreset="编码器预设"
644
 Basic.Settings.Output.CustomEncoderSettings="自定义编码器设置"
645
-Basic.Settings.Output.CustomMuxerSettings="自定义 Muxer 设置"
646
-Basic.Settings.Output.NoSpaceFileName="生成没有空格文件名"
647
+Basic.Settings.Output.CustomMuxerSettings="自定义混流器设置"
648
+Basic.Settings.Output.NoSpaceFileName="生成没有空格的文件名"
649
 
650
 Basic.Settings.Output.Adv.Rescale="重新缩放输出"
651
 Basic.Settings.Output.Adv.AudioTrack="音轨"
652
 Basic.Settings.Output.Adv.Streaming="串流"
653
-Basic.Settings.Output.Adv.ApplyServiceSettings="强制流服务编码器设置"
654
+Basic.Settings.Output.Adv.ApplyServiceSettings="强制执行流媒体服务编码器设置"
655
 Basic.Settings.Output.Adv.Audio.Track1="轨道 1"
656
 Basic.Settings.Output.Adv.Audio.Track2="轨道 2"
657
 Basic.Settings.Output.Adv.Audio.Track3="轨道 3"
658
@@ -634,7 +648,7 @@
659
 Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput="自定义输出 (FFmpeg)"
660
 Basic.Settings.Output.Adv.Recording.UseStreamEncoder="(使用串流编码器)"
661
 Basic.Settings.Output.Adv.Recording.Filename="文件名格式"
662
-Basic.Settings.Output.Adv.Recording.OverwriteIfExists="如果文件存在, 覆盖"
663
+Basic.Settings.Output.Adv.Recording.OverwriteIfExists="如果文件存在则覆盖"
664
 Basic.Settings.Output.Adv.FFmpeg.Type="FFmpeg 输出类型"
665
 Basic.Settings.Output.Adv.FFmpeg.Type.URL="输出到 URL"
666
 Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile="输出到文件"
667
@@ -646,37 +660,37 @@
668
 Basic.Settings.Output.Adv.FFmpeg.FormatVideo="视频"
669
 Basic.Settings.Output.Adv.FFmpeg.FormatDefault="默认格式"
670
 Basic.Settings.Output.Adv.FFmpeg.FormatDesc="容器格式说明"
671
-Basic.Settings.Output.Adv.FFmpeg.FormatDescDef="通过文件路径或者URL推断音频/视频格式"
672
+Basic.Settings.Output.Adv.FFmpeg.FormatDescDef="通过文件路径或 URL 推断音频/视频格式"
673
 Basic.Settings.Output.Adv.FFmpeg.AVEncoderDefault="默认编码器"
674
 Basic.Settings.Output.Adv.FFmpeg.AVEncoderDisable="禁用编码器"
675
 Basic.Settings.Output.Adv.FFmpeg.VEncoder="视频编码器"
676
-Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="视频编码器设置 (如果有)"
677
+Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="视频编码器设置(如果有)"
678
 Basic.Settings.Output.Adv.FFmpeg.AEncoder="音频编码器"
679
-Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="视频编码器设置 (如果有)"
680
-Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Muxer 设置 (如果有)"
681
-Basic.Settings.Output.Adv.FFmpeg.GOPSize="关键帧间隔 (帧)"
682
-Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat="显示所有编解码器 (即使可能不兼容)"
683
+Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="音频编码器设置(如果有)"
684
+Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="混流器设置(如果有)"
685
+Basic.Settings.Output.Adv.FFmpeg.GOPSize="关键帧间隔(帧)"
686
+Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat="显示所有编码器(即使可能不兼容)"
687
 
688
 FilenameFormatting.completer="%CCYY-%MM-%DD %hh-%mm-%ss\n%YY-%MM-%DD %hh-%mm-%ss\n%Y-%m-%d %H-%M-%S\n%y-%m-%d %H-%M-%S\n%a %Y-%m-%d %H-%M-%S\n%A %Y-%m-%d %H-%M-%S\n%Y-%b-%d %H-%M-%S\n%Y-%B-%d %H-%M-%S\n%Y-%m-%d %I-%M-%S-%p\n%Y-%m-%d %H-%M-%S-%z\n%Y-%m-%d %H-%M-%S-%Z"
689
 
690
-FilenameFormatting.TT="%CCYY       年, 4位\n%YY      年, 后两位 (00-99)\n%MM     月份 (01-12)\n%DD     日, 用0补充 (01-31)\n%hh        24小时制小时 (00-23)\n%mm        分钟 (00-59)\n%ss     秒 (00-61)\n%%       A % sign\n%a        缩写工作日名称\n%A     完整工作日名称\n%b     缩写月份名称\n%B      完整月份名称\n%d      日, 用0补充 (01-31)\n%H     24小时制小时 (00-23)\n%I     12小时制小时 (01-12)\n%m     月份 (01-12)\n%M      分支 (00-59)\n%p      AM 或 PM\n%S     秒 (00-61)\n%y       年, 后两位 (00-99)\n%Y      年\n%z       ISO 8601 offset from UTC 或者 时区\n        名称或缩写\n%Z       时区名称或缩写\n"
691
+FilenameFormatting.TT="%CCYY       年,4位\n%YY       年,后两位(00-99)\n%MM       月份(01-12)\n%DD      日,用0补全(01-31)\n%hh      24小时制小时(00-23)\n%mm     分钟(00-59)\n%ss      秒(00-61)\n%%        一个“%”符号\n%a     缩写工作日名称\n%A     完整工作日名称\n%b     缩写月份名称\n%B      完整月份名称\n%d      日,用0补全(01-31)\n%H       24小时制小时(00-23)\n%I      12小时制小时(01-12)\n%m      月份(01-12)\n%M       分钟(00-59)\n%p       AM 或 PM\n%S     秒(00-61)\n%y        年,后两位(00-99)\n%Y        年\n%z       与UTC的时差(ISO 8601 格式)\n%Z        时区名称或缩写\n"
692
 
693
 Basic.Settings.Video="视频"
694
 Basic.Settings.Video.Adapter="视频适配器"
695
-Basic.Settings.Video.BaseResolution="基础 (Canvas) 分辨率"
696
+Basic.Settings.Video.BaseResolution="基础(画布)分辨率"
697
 Basic.Settings.Video.ScaledResolution="输出 (缩放) 分辨率"
698
-Basic.Settings.Video.DownscaleFilter="缩放过滤器"
699
+Basic.Settings.Video.DownscaleFilter="缩小方法"
700
 Basic.Settings.Video.DisableAeroWindows="禁用 Aero (仅限 Windows)"
701
-Basic.Settings.Video.FPS="每秒帧数"
702
-Basic.Settings.Video.FPSCommon="常见的 FPS 值"
703
-Basic.Settings.Video.FPSInteger="整数 FPS 值"
704
-Basic.Settings.Video.FPSFraction="分数帧率值"
705
+Basic.Settings.Video.FPS="FPS(每秒帧数)"
706
+Basic.Settings.Video.FPSCommon="常用 FPS 值(帧率)"
707
+Basic.Settings.Video.FPSInteger="整数 FPS 值(帧率)"
708
+Basic.Settings.Video.FPSFraction="分数 FPS 值(帧率)"
709
 Basic.Settings.Video.Numerator="分子:"
710
 Basic.Settings.Video.Denominator="分母:"
711
 Basic.Settings.Video.Renderer="渲染器:"
712
-Basic.Settings.Video.InvalidResolution="无效的分辨率值。必须是 [宽]x[高] (如 1920 x 1080)"
713
+Basic.Settings.Video.InvalidResolution="无效的分辨率值。必须是 [宽]x[高](如 1920x1080)"
714
 Basic.Settings.Video.CurrentlyActive="视频输出处于活动状态。请关闭任何输出以更改视频设置。"
715
-Basic.Settings.Video.DisableAero="禁用Aero"
716
+Basic.Settings.Video.DisableAero="禁用 Aero"
717
 
718
 Basic.Settings.Video.DownscaleFilter.Bilinear="双直线法(最快, 但如果缩放会模糊)"
719
 Basic.Settings.Video.DownscaleFilter.Bicubic="两次立方(削尖缩放, 16 个样本)"
720
@@ -685,7 +699,8 @@
721
 Basic.Settings.Audio="音频"
722
 Basic.Settings.Audio.SampleRate="采样率"
723
 Basic.Settings.Audio.Channels="声道"
724
-Basic.Settings.Audio.MeterDecayRate="音频表衰减率"
725
+Basic.Settings.Audio.Meters="电平表"
726
+Basic.Settings.Audio.MeterDecayRate="衰减速率"
727
 Basic.Settings.Audio.MeterDecayRate.Fast="快速"
728
 Basic.Settings.Audio.MeterDecayRate.Medium="中速(峰值电平表I型)"
729
 Basic.Settings.Audio.MeterDecayRate.Slow="慢速(峰值电平表II型)"
730
@@ -693,15 +708,16 @@
731
 Basic.Settings.Audio.PeakMeterType.SamplePeak="采样峰值"
732
 Basic.Settings.Audio.PeakMeterType.TruePeak="真峰值 (更高的的 CPU 使用率)"
733
 Basic.Settings.Audio.MultiChannelWarning.Enabled="警告: 已启用环绕声音频。"
734
-Basic.Settings.Audio.MultichannelWarning="如果是串流,请检查你的串流服务是否支持环绕立体声的接收与播放。Twitch,Facebook 360 Live,Mixer RTMP,Smashcast 皆完全支持环绕立体声。虽然 Facebook Live 和 Youtube Live 都支持对环绕立体声的接收,但是 Facebook Live 将把声音混音成立体声,而 Youtube Live 则只播放两个声道。\n\n虽然无法保证对 VST 插件的支持,但 OBS 的音频过滤器与环绕立体声兼容。"
735
+Basic.Settings.Audio.MultichannelWarning="如果是串流,请检查你的串流服务是否支持环绕立体声的接收与播放。Twitch、Facebook 360 Live、Mixer RTMP、Smashcast 皆完全支持环绕立体声。虽然 Facebook Live 和 YouTube Live 都支持对环绕立体声的接收,但是 Facebook Live 将把声音混音成立体声,而 YouTube Live 则只播放两个声道。\n\n虽然无法保证 VST 插件对其的支持,但 OBS 的音频滤镜与环绕立体声兼容。"
736
 Basic.Settings.Audio.MultichannelWarning.Title="是否启用环绕立体声?"
737
 Basic.Settings.Audio.MultichannelWarning.Confirm="确实要启用环绕立体声吗?"
738
-Basic.Settings.Audio.DesktopDevice="桌面音频设备"
739
-Basic.Settings.Audio.DesktopDevice2="桌面音频设备 2"
740
-Basic.Settings.Audio.AuxDevice="麦克风/辅助音频设备"
741
-Basic.Settings.Audio.AuxDevice2="麦克风/辅助音频设备 2"
742
-Basic.Settings.Audio.AuxDevice3="麦克风/辅助音频设备 3"
743
-Basic.Settings.Audio.AuxDevice4="麦克风/辅助音频设备 4"
744
+Basic.Settings.Audio.Devices="设备"
745
+Basic.Settings.Audio.DesktopDevice="桌面音频"
746
+Basic.Settings.Audio.DesktopDevice2="桌面音频 2"
747
+Basic.Settings.Audio.AuxDevice="麦克风/辅助音频"
748
+Basic.Settings.Audio.AuxDevice2="麦克风/辅助音频 2"
749
+Basic.Settings.Audio.AuxDevice3="麦克风/辅助音频 3"
750
+Basic.Settings.Audio.AuxDevice4="麦克风/辅助音频 4"
751
 Basic.Settings.Audio.EnablePushToMute="启用按住静音"
752
 Basic.Settings.Audio.PushToMuteDelay="按住静音延迟"
753
 Basic.Settings.Audio.EnablePushToTalk="启动按住讲话"
754
@@ -716,22 +732,22 @@
755
 Basic.Settings.Advanced.General.ProcessPriority.Normal="常规"
756
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="低于正常"
757
 Basic.Settings.Advanced.General.ProcessPriority.Idle="空闲"
758
-Basic.Settings.Advanced.FormatWarning="警告: NV12 之外的颜色格式主要用于录像, 并不推荐在流式传输时使用. 流可能导致更多的 CPU 使用率, 因为需要颜色格式转换."
759
+Basic.Settings.Advanced.FormatWarning="警告:NV12 之外的色彩格式主要用于录像,并不推荐在串流时使用。因为串流时需要进行色彩格式转换,可能会导致 CPU 使用率增加。"
760
 Basic.Settings.Advanced.Audio.BufferingTime="音频缓冲时间"
761
 Basic.Settings.Advanced.Video.ColorFormat="颜色格式"
762
-Basic.Settings.Advanced.Video.ColorSpace="YUV 颜色空间"
763
-Basic.Settings.Advanced.Video.ColorRange="YUV 颜色范围"
764
+Basic.Settings.Advanced.Video.ColorSpace="色彩空间"
765
+Basic.Settings.Advanced.Video.ColorRange="色彩范围"
766
 Basic.Settings.Advanced.Video.ColorRange.Partial="局部"
767
 Basic.Settings.Advanced.Video.ColorRange.Full="全部"
768
 Basic.Settings.Advanced.Audio.MonitoringDevice="监听设备"
769
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="默认"
770
-Basic.Settings.Advanced.Audio.DisableAudioDucking="禁用 Windows 音频闪避"
771
+Basic.Settings.Advanced.Audio.DisableAudioDucking="禁用 Windows 音频闪避(检测到通信活动时降低其他声音的音量)"
772
 Basic.Settings.Advanced.StreamDelay="串流延迟"
773
-Basic.Settings.Advanced.StreamDelay.Duration="持续时间 (秒)"
774
+Basic.Settings.Advanced.StreamDelay.Duration="延迟时间(秒)"
775
 Basic.Settings.Advanced.StreamDelay.Preserve="重新连接时保持截止点 (增加延迟)"
776
-Basic.Settings.Advanced.StreamDelay.MemoryUsage="估计的内存使用率: %1 MB"
777
+Basic.Settings.Advanced.StreamDelay.MemoryUsage="估计内存使用量:%1 MB"
778
 Basic.Settings.Advanced.Network="网络"
779
-Basic.Settings.Advanced.Network.BindToIP="绑定 IP"
780
+Basic.Settings.Advanced.Network.BindToIP="绑定到 IP"
781
 Basic.Settings.Advanced.Network.EnableNewSocketLoop="启用新的网络代码"
782
 Basic.Settings.Advanced.Network.EnableLowLatencyMode="低延迟模式"
783
 Basic.Settings.Advanced.Hotkeys.DisableHotkeysInFocus="当主窗口获得焦点时禁用热键"
784
@@ -740,8 +756,8 @@
785
 
786
 Basic.AdvAudio="高级音频属性"
787
 Basic.AdvAudio.Name="名称"
788
-Basic.AdvAudio.Volume="音量 (%)"
789
-Basic.AdvAudio.Mono="下降混合为单声道"
790
+Basic.AdvAudio.Volume="音量"
791
+Basic.AdvAudio.Mono="混缩为单声道"
792
 Basic.AdvAudio.Balance="平衡"
793
 Basic.AdvAudio.SyncOffset="同步偏移 (毫秒)"
794
 Basic.AdvAudio.Monitoring="音频监听"
795
@@ -751,7 +767,7 @@
796
 Basic.AdvAudio.AudioTracks="轨道"
797
 
798
 Basic.Settings.Hotkeys="热键"
799
-Basic.Settings.Hotkeys.Pair="作为切换的键组合与 '%1' 共享"
800
+Basic.Settings.Hotkeys.Pair="当按键组合与“%1”相同时,作为切换开关使用"
801
 Basic.Settings.Hotkeys.Filter="筛选"
802
 
803
 Basic.Hotkeys.SelectScene="切换到场景"
804
@@ -759,35 +775,35 @@
805
 Basic.SystemTray.Show="显示"
806
 Basic.SystemTray.Hide="隐藏"
807
 
808
-Basic.SystemTray.Message.Reconnecting="已断开连接。 重新连接..."
809
-
810
-Hotkeys.Insert="插入"
811
-Hotkeys.Delete="删除"
812
-Hotkeys.Home="首页"
813
-Hotkeys.End="结束"
814
-Hotkeys.PageUp="上一页"
815
-Hotkeys.PageDown="下一页"
816
-Hotkeys.NumLock="Num Lock 键"
817
-Hotkeys.ScrollLock="滚动锁定"
818
-Hotkeys.CapsLock="大写锁定"
819
-Hotkeys.Backspace="退格键"
820
-Hotkeys.Tab="选项卡"
821
-Hotkeys.Print="打印"
822
-Hotkeys.Pause="暂停"
823
+Basic.SystemTray.Message.Reconnecting="已断开连接。 正在重新连接…"
824
+
825
+Hotkeys.Insert="Insert"
826
+Hotkeys.Delete="Delete"
827
+Hotkeys.Home="Home"
828
+Hotkeys.End="End"
829
+Hotkeys.PageUp="Page Up"
830
+Hotkeys.PageDown="Page Down"
831
+Hotkeys.NumLock="Num Lock"
832
+Hotkeys.ScrollLock="Scroll Lock"
833
+Hotkeys.CapsLock="Caps Lock"
834
+Hotkeys.Backspace="Backspace"
835
+Hotkeys.Tab="Tab"
836
+Hotkeys.Print="Print"
837
+Hotkeys.Pause="Pause"
838
 Hotkeys.Left="左"
839
 Hotkeys.Right="右"
840
 Hotkeys.Up="上"
841
 Hotkeys.Down="下"
842
-Hotkeys.Windows="窗口"
843
-Hotkeys.Super="超级"
844
-Hotkeys.Menu="菜单"
845
+Hotkeys.Windows="Windows"
846
+Hotkeys.Super="Super"
847
+Hotkeys.Menu="Menu"
848
 Hotkeys.Space="空格"
849
-Hotkeys.NumpadNum="数字键 %1"
850
-Hotkeys.NumpadMultiply="数字键 乘"
851
-Hotkeys.NumpadDivide="数字键 除"
852
-Hotkeys.NumpadAdd="数字键 加"
853
-Hotkeys.NumpadSubtract="数字键 减"
854
-Hotkeys.NumpadDecimal="数字键 十进制"
855
+Hotkeys.NumpadNum="小键盘 %1"
856
+Hotkeys.NumpadMultiply="小键盘 乘"
857
+Hotkeys.NumpadDivide="小键盘 除"
858
+Hotkeys.NumpadAdd="小键盘 加"
859
+Hotkeys.NumpadSubtract="小键盘 减"
860
+Hotkeys.NumpadDecimal="小键盘 点"
861
 Hotkeys.AppleKeypadNum="%1 (键盘)"
862
 Hotkeys.AppleKeypadMultiply="* (键盘)"
863
 Hotkeys.AppleKeypadDivide="/ (键盘)"
864
@@ -796,25 +812,27 @@
865
 Hotkeys.AppleKeypadDecimal=".(键盘)"
866
 Hotkeys.AppleKeypadEqual="= (键盘)"
867
 Hotkeys.MouseButton="鼠标 %1"
868
+Hotkeys.Escape="Esc"
869
 
870
 Mute="静音"
871
 Unmute="取消静音"
872
 Push-to-mute="按住静音"
873
 Push-to-talk="按住讲话"
874
 
875
-SceneItemShow="显示 '%1'"
876
-SceneItemHide="隐藏 '%1'"
877
+SceneItemShow="显示“%1”"
878
+SceneItemHide="隐藏“%1”"
879
 
880
 OutputWarnings.NoTracksSelected="您必须选择至少一个轨道"
881
 OutputWarnings.MultiTrackRecording="警告: 某些格式 (如 FLV) 不支持每个录像多个轨道"
882
-OutputWarnings.MP4Recording="警告:如果文件无法完成(例如,由于蓝屏BSOD,掉电等),保存到 MP4/MOV 的记录将无法恢复。如果要录制多个音轨,请考虑使用 MKV 并在完成后将录制重新录制到 MP4/MOV(文件→混流录制)"
883
+OutputWarnings.MP4Recording="警告:如果文件无法完成(例如,由于蓝屏BSOD,掉电等),保存到 MP4/MOV 的记录将无法恢复。如果要录制多个音轨,请考虑使用 MKV 录制,并在完成后将录像重新封装为 MP4/MOV(文件→录像转封装)"
884
 
885
 FinalScene.Title="删除场景"
886
 FinalScene.Text="至少要有一个场景."
887
 
888
 NoSources.Title="无来源"
889
-NoSources.Text="看起来您未添加任何视频源,所以我们将只会输出黑色萤幕。确实要这样做吗?"
890
+NoSources.Text="看起来您未添加任何视频源,所以我们将只会输出黑色画面。确实要这样做吗?"
891
 NoSources.Text.AddSource="您可以通过单击主窗口中“来源”框下的“+”图标以添加来源。"
892
+NoSources.Label="您还没有添加任何源。\n点击下面的 + 按钮,\n或者右击此处添加一个。"
893
 
894
 ChangeBG="设置颜色"
895
 CustomColor="自定义颜色"
896
@@ -822,14 +840,16 @@
897
 BrowserSource.EnableHardwareAcceleration="启用浏览器源硬件加速"
898
 
899
 About="关于"
900
-About.Info="OBS Studio是一个免费、开放源码的视频录制与直播软件。"
901
+About.Info="OBS Studio是一个自由、开源的视频录制与直播软件。"
902
 About.Donate="做出贡献"
903
 About.GetInvolved="参与贡献"
904
 About.Authors="作者"
905
 About.License="许可"
906
-About.Contribute="支持OBS项目"
907
+About.Contribute="支持 OBS 项目"
908
 
909
-ResizeOutputSizeOfSource="调整输出 (源大小)"
910
+ResizeOutputSizeOfSource="调整输出大小(到源大小)"
911
 ResizeOutputSizeOfSource.Text="基准与输出分辨率将调整为当前源大小。"
912
 ResizeOutputSizeOfSource.Continue="您是否想要继续?"
913
 
914
+PreviewTransition="预览转场"
915
+
916
obs-studio-23.1.0.tar.xz/UI/data/locale/zh-TW.ini -> obs-studio-23.2.0.tar.xz/UI/data/locale/zh-TW.ini Changed
178
 
1
@@ -81,6 +81,8 @@
2
 VerticalLayout="垂直排版"
3
 Group="群組"
4
 DoNotShowAgain="不再顯示"
5
+Default="(預設)"
6
+Calculating="正在計算……"
7
 
8
 AlreadyRunning.Title="OBS 已在執行中"
9
 AlreadyRunning.Text="OBS 已在執行中!除非這是您的意圖,請在執行新的 OBS 前關閉現存的 OBS 。如果有設定 OBS 最小化到系統工具列,請確認是否仍在該處執行。"
10
@@ -103,6 +105,8 @@
11
 Auth.StreamInfo="實況資訊"
12
 TwitchAuth.Stats="Twitch狀態"
13
 TwitchAuth.Feed="Twitch 活動摘要"
14
+TwitchAuth.TwoFactorFail.Title="無法查詢串流金鑰"
15
+TwitchAuth.TwoFactorFail.Text="OBS 無法連線至您的 Twitch 帳號。請確保您已經在 <a href='https://www.twitch.tv/settings/security'>Twitch 安全性設定</a> 中設定串流所需的兩步驟驗證。"
16
 
17
 Copy.Filters="複製過濾器"
18
 Paste.Filters="貼上篩選器"
19
@@ -185,6 +189,7 @@
20
 Basic.Stats.DroppedFrames="丟棄的訊框 (網路)"
21
 Basic.Stats.MegabytesSent="總輸出資料"
22
 Basic.Stats.Bitrate="位元率"
23
+Basic.Stats.DiskFullIn="(估計)硬碟空間用盡前剩餘錄影時長"
24
 
25
 ResetUIWarning.Title="確定要重置介面嗎?"
26
 ResetUIWarning.Text="重設介面將隱藏額外的停駐視窗。若想重新顯示這些停駐視窗,則需要進入「檢視」選單解除隱藏。\n\n是否重設介面?"
27
@@ -200,7 +205,7 @@
28
 Updater.NoUpdatesAvailable.Text="沒有更新"
29
 Updater.FailedToLaunch="啟動更新程式失敗"
30
 Updater.GameCaptureActive.Title="遊戲擷取使用中"
31
-Updater.GameCaptureActive.Text="遊戲擷取函式庫正在使用中。 請關閉所有被擷取的遊戲/程式 (或重新開機 windows),然後重試。"
32
+Updater.GameCaptureActive.Text="遊戲擷取函式庫正在使用中。 請關閉所有被擷取的遊戲/程式 (或重新開機 Windows),然後重試。"
33
 
34
 QuickTransitions.SwapScenes="轉場後交換預覽/輸出場景"
35
 QuickTransitions.SwapScenesTT="(如果輸出的原始場景仍然存在) 轉場後交換預覽和輸出場景。\n這並不會復原任何對輸出原始場景所作的改動。"
36
@@ -250,6 +255,7 @@
37
 Output.StartReplayFailed="無法啟動重播緩衝區"
38
 Output.StartFailedGeneric="啟動輸出失敗。 詳情請看 Log 檔。\n\n注意︰ 如果你使用 NVENC 或 AMD 編碼器,請確保您的視頻驅動程式是最新。"
39
 
40
+
41
 Output.ConnectFail.Title="連線失敗"
42
 Output.ConnectFail.BadPath="無效的路徑或 URL。 請確認您的設定是正確的。"
43
 Output.ConnectFail.ConnectFailed="與伺服器連線失敗。"
44
@@ -257,12 +263,16 @@
45
 Output.ConnectFail.Error="發生無法預期的連線錯誤。 參見 Log 檔以便獲取更多資訊。"
46
 Output.ConnectFail.Disconnected="與伺服器連線中斷。"
47
 
48
+Output.StreamEncodeError.Title="編碼錯誤"
49
+Output.StreamEncodeError.Msg="直播時編碼器發生錯誤。"
50
+
51
 Output.RecordFail.Title="無法開始錄影"
52
 Output.RecordFail.Unsupported="輸出格式不被支援或不支援超過一個音軌。請確認你的設定後再試一次。"
53
 Output.RecordNoSpace.Title="硬碟空間不足"
54
 Output.RecordNoSpace.Msg="沒有足夠的空間存放錄製影片"
55
 Output.RecordError.Title="錄製錯誤"
56
 Output.RecordError.Msg="在錄製時發生了預料外的錯誤。"
57
+Output.RecordError.EncodeErrorMsg="錄影時編碼器發生錯誤。"
58
 Output.ReplayBuffer.NoHotkey.Title="沒有設定熱鍵 !"
59
 Output.ReplayBuffer.NoHotkey.Msg="沒有為重播緩衝設定儲存重播熱鍵。請設定\"儲存重播\"熱鍵以保存重播。"
60
 
61
@@ -292,7 +302,7 @@
62
 Remux.HelpText="將檔案拖曳到此視窗中進行 Remux,或是選擇一個空白的「OBS 錄製」元件來瀏覽檔案。"
63
 
64
 UpdateAvailable="現有新版本更新"
65
-UpdateAvailable.Text="版本 %1.%2.%3 已釋出。  <a href='%4'>請點此下載</a>"
66
+UpdateAvailable.Text="版本 %1.%2.%3 已釋出。 <a href='%4'>請點此下載</a>"
67
 
68
 Basic.DesktopDevice1="輸出音效 1"
69
 Basic.DesktopDevice2="輸出音效 2"
70
@@ -306,6 +316,8 @@
71
 
72
 Basic.Main.PreviewConextMenu.Enable="啟用預覽"
73
 
74
+Basic.Main.Preview.Disable="停用預覽"
75
+
76
 ScaleFiltering="縮放濾鏡"
77
 ScaleFiltering.Point="點"
78
 ScaleFiltering.Bilinear="雙線性插值"
79
@@ -476,6 +488,8 @@
80
 Basic.MainMenu.Edit.Transform.FitToScreen="縮放到螢幕大小,不改變比例 (&F)"
81
 Basic.MainMenu.Edit.Transform.StretchToScreen="拉伸到螢幕大小 (&S)"
82
 Basic.MainMenu.Edit.Transform.CenterToScreen="置中畫面 (&C)"
83
+Basic.MainMenu.Edit.Transform.VerticalCenter="垂直置中"
84
+Basic.MainMenu.Edit.Transform.HorizontalCenter="水平置中"
85
 Basic.MainMenu.Edit.Order="排序 (&O)"
86
 Basic.MainMenu.Edit.Order.MoveUp="向上移動 (&U)"
87
 Basic.MainMenu.Edit.Order.MoveDown="向下移動 (&D)"
88
@@ -485,7 +499,7 @@
89
 
90
 Basic.MainMenu.View="檢視(&V)"
91
 Basic.MainMenu.View.Toolbars="工具列(&T)"
92
-Basic.MainMenu.View.Docks="固定"
93
+Basic.MainMenu.View.Docks="停駐視窗"
94
 Basic.MainMenu.View.Docks.ResetUI="重設使用者介面"
95
 Basic.MainMenu.View.Docks.LockUI="鎖定使用者介面"
96
 Basic.MainMenu.View.Toolbars.Listboxes="列表控制項(&L)"
97
@@ -685,7 +699,8 @@
98
 Basic.Settings.Audio="音效"
99
 Basic.Settings.Audio.SampleRate="取樣頻率"
100
 Basic.Settings.Audio.Channels="通道數"
101
-Basic.Settings.Audio.MeterDecayRate="音量計衰減速率"
102
+Basic.Settings.Audio.Meters="計量器"
103
+Basic.Settings.Audio.MeterDecayRate="衰變率"
104
 Basic.Settings.Audio.MeterDecayRate.Fast="快速"
105
 Basic.Settings.Audio.MeterDecayRate.Medium="中 (Type I PPM)"
106
 Basic.Settings.Audio.MeterDecayRate.Slow="慢 (Type II PPM)"
107
@@ -696,12 +711,13 @@
108
 Basic.Settings.Audio.MultichannelWarning="如果是流媒體,請檢查您的流媒體服務是否同時支持環繞聲攝取和環繞聲播放。 Twitch,Facebook 360 Live,Mixer RTMP,Smashcast都是完全支持環繞聲的例子。 儘管Facebook Live和YouTube Live都接受環繞聲攝取,但是Facebook Live會混音為立體聲,而YouTube Live只播放兩個聲道。\n\n 儘管不支持VST插件,但OBS音頻濾波器與環繞聲兼容。"
109
 Basic.Settings.Audio.MultichannelWarning.Title="是否啟用環繞聲音訊?"
110
 Basic.Settings.Audio.MultichannelWarning.Confirm="確實要啟用環繞聲音訊嗎?"
111
-Basic.Settings.Audio.DesktopDevice="輸出音效 1"
112
-Basic.Settings.Audio.DesktopDevice2="輸出音效 2"
113
-Basic.Settings.Audio.AuxDevice="麥克風/輸入音效 1"
114
-Basic.Settings.Audio.AuxDevice2="麥克風/輸入音效 2"
115
-Basic.Settings.Audio.AuxDevice3="麥克風/輸入音效 3"
116
-Basic.Settings.Audio.AuxDevice4="麥克風/輔助音效裝置 4"
117
+Basic.Settings.Audio.Devices="裝置"
118
+Basic.Settings.Audio.DesktopDevice="桌面音效"
119
+Basic.Settings.Audio.DesktopDevice2="桌面音效 2"
120
+Basic.Settings.Audio.AuxDevice="麥克風 / 輔助音效"
121
+Basic.Settings.Audio.AuxDevice2="麥克風 / 輔助音效 2"
122
+Basic.Settings.Audio.AuxDevice3="麥克風 / 輔助音效 3"
123
+Basic.Settings.Audio.AuxDevice4="麥克風 / 輔助音效 4"
124
 Basic.Settings.Audio.EnablePushToMute="啟用 按壓時靜音"
125
 Basic.Settings.Audio.PushToMuteDelay="按壓時靜音 延遲"
126
 Basic.Settings.Audio.EnablePushToTalk="啟用 按壓時說話"
127
@@ -719,11 +735,11 @@
128
 Basic.Settings.Advanced.FormatWarning="警告: NV12以外的色彩格式主要用於錄影,並不推薦在串流時使用。串流時可能會因需要轉換色彩格式而增加CPU使用率。"
129
 Basic.Settings.Advanced.Audio.BufferingTime="音訊緩衝時間"
130
 Basic.Settings.Advanced.Video.ColorFormat="色彩格式"
131
-Basic.Settings.Advanced.Video.ColorSpace="YUV 色彩空間"
132
-Basic.Settings.Advanced.Video.ColorRange="YUV 顏色範圍"
133
+Basic.Settings.Advanced.Video.ColorSpace="色彩空間"
134
+Basic.Settings.Advanced.Video.ColorRange="顏色範圍"
135
 Basic.Settings.Advanced.Video.ColorRange.Partial="部份"
136
 Basic.Settings.Advanced.Video.ColorRange.Full="完整"
137
-Basic.Settings.Advanced.Audio.MonitoringDevice="音訊監測設備"
138
+Basic.Settings.Advanced.Audio.MonitoringDevice="監測裝置"
139
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="預設裝置"
140
 Basic.Settings.Advanced.Audio.DisableAudioDucking="停用 Windows 雙層次音量自動調整"
141
 Basic.Settings.Advanced.StreamDelay="實況延遲"
142
@@ -736,11 +752,11 @@
143
 Basic.Settings.Advanced.Network.EnableLowLatencyMode="低延遲模式"
144
 Basic.Settings.Advanced.Hotkeys.DisableHotkeysInFocus="當主視窗處於焦點,則停用熱鍵"
145
 Basic.Settings.Advanced.AutoRemux="自動 remux 到 mp4"
146
-Basic.Settings.Advanced.AutoRemux.MP4="(以 mkv 格式錄製)"
147
+Basic.Settings.Advanced.AutoRemux.MP4="(錄成 mkv 格式)"
148
 
149
 Basic.AdvAudio="進階音訊屬性"
150
 Basic.AdvAudio.Name="名稱"
151
-Basic.AdvAudio.Volume="音量(%)"
152
+Basic.AdvAudio.Volume="音量"
153
 Basic.AdvAudio.Mono="混降為單聲道"
154
 Basic.AdvAudio.Balance="聲道平衡"
155
 Basic.AdvAudio.SyncOffset="同步位移(ms)"
156
@@ -796,6 +812,7 @@
157
 Hotkeys.AppleKeypadDecimal=". (九宮鍵)"
158
 Hotkeys.AppleKeypadEqual="+ (九宮鍵)"
159
 Hotkeys.MouseButton="滑鼠 %1"
160
+Hotkeys.Escape="Esc 鍵"
161
 
162
 Mute="靜音"
163
 Unmute="取消靜音"
164
@@ -815,6 +832,7 @@
165
 NoSources.Title="沒有來源"
166
 NoSources.Text="看起來您尚未增加任何視訊來源,所以我們只會輸出黑畫面。確定?"
167
 NoSources.Text.AddSource="您可以透過點一下主視窗「來源」框底下的 + 按鈕,隨時增加來源。"
168
+NoSources.Label="您未設定任何來源。\n按下方 + 鍵,\n或在此按下右鍵新增一個來源。"
169
 
170
 ChangeBG="設定顏色"
171
 CustomColor="自訂顏色"
172
@@ -833,3 +851,5 @@
173
 ResizeOutputSizeOfSource.Text="來源和輸出解析度將會縮放到目前來源的大小。"
174
 ResizeOutputSizeOfSource.Continue="是否繼續?"
175
 
176
+PreviewTransition="預覽轉場"
177
+
178
obs-studio-23.1.0.tar.xz/UI/data/themes/Acri.qss -> obs-studio-23.2.0.tar.xz/UI/data/themes/Acri.qss Changed
212
 
1
@@ -330,27 +330,27 @@
2
 }
3
 
4
 * [themeID="addIconSmall"] {
5
-   qproperty-icon: url(./Acri/plus.png);
6
+   qproperty-icon: url(./Dark/plus.svg);
7
 }
8
 
9
 * [themeID="removeIconSmall"] {
10
-   qproperty-icon: url(./Acri/minus.png);
11
+   qproperty-icon: url(./Dark/minus.svg);
12
 }
13
 
14
 * [themeID="propertiesIconSmall"] {
15
-   qproperty-icon: url(./Acri/cogwheel.png);
16
+   qproperty-icon: url(./Dark/settings/general.svg);
17
 }
18
 
19
 * [themeID="configIconSmall"] {
20
-   qproperty-icon: url(./Acri/cogwheel.png);
21
+   qproperty-icon: url(./Dark/settings/general.svg);
22
 }
23
 
24
 * [themeID="upArrowIconSmall"] {
25
-   qproperty-icon: url(./Acri/up_arrow.png);
26
+   qproperty-icon: url(./Dark/up.svg);
27
 }
28
 
29
 * [themeID="downArrowIconSmall"] {
30
-   qproperty-icon: url(./Acri/down_arrow.png);
31
+   qproperty-icon: url(./Dark/down.svg);
32
 }
33
 
34
 /* Tab Widget */
35
@@ -409,7 +409,7 @@
36
 
37
 QComboBox::down-arrow {
38
    qproperty-alignment: AlignTop;
39
-   image: url(./Acri/updown.png);
40
+   image: url(./Dark/updown.svg);
41
    width: 100%;
42
 }
43
 
44
@@ -429,7 +429,7 @@
45
 
46
 QComboBox::down-arrow:editable {
47
    qproperty-alignment: AlignTop;
48
-   image: url(./Acri/down_arrow.png);
49
+   image: url(./Dark/down.svg);
50
    width: 8%;
51
 }
52
 
53
@@ -495,12 +495,12 @@
54
 }
55
 
56
 QSpinBox::up-arrow, QDoubleSpinBox::up-arrow {
57
-   image: url(./Acri/up_arrow.png);
58
+   image: url(./Dark/up.svg);
59
    width: 100%;
60
 }
61
 
62
 QSpinBox::down-arrow, QDoubleSpinBox::down-arrow {
63
-   image: url(./Acri/down_arrow.png);
64
+   image: url(./Dark/down.svg);
65
    width: 100%;
66
 }
67
 
68
@@ -772,34 +772,34 @@
69
 }
70
 
71
 MuteCheckBox::indicator:checked {
72
-   image: url(./Dark/mute.png);
73
+   image: url(./Dark/mute.svg);
74
 }
75
 
76
 MuteCheckBox::indicator:unchecked {
77
-   image: url(./Dark/unmute.png);
78
+   image: url(./Dark/settings/audio.svg);
79
 }
80
 
81
 MuteCheckBox::indicator:unchecked:hover {
82
-   image: url(./Dark/unmute.png);
83
+   image: url(./Dark/settings/audio.svg);
84
 }
85
 
86
 MuteCheckBox::indicator:unchecked:focus {
87
-   image: url(./Dark/unmute.png);
88
+   image: url(./Dark/settings/audio.svg);
89
 }
90
 MuteCheckBox::indicator:checked:hover {
91
-   image: url(./Dark/mute.png);
92
+   image: url(./Dark/mute.svg);
93
 }
94
 
95
 MuteCheckBox::indicator:checked:focus {
96
-   image: url(./Dark/mute.png);
97
+   image: url(./Dark/mute.svg);
98
 }
99
 
100
 MuteCheckBox::indicator:checked:disabled {
101
-   image: url(./Dark/mute.png);
102
+   image: url(./Dark/mute.svg);
103
 }
104
 
105
 MuteCheckBox::indicator:unchecked:disabled {
106
-   image: url(./Dark/unmute.png);
107
+   image: url(./Dark/settings/audio.svg);
108
 }
109
 
110
 OBSHotkeyLabel[hotkeyPairHover=true] {
111
@@ -822,12 +822,12 @@
112
 
113
 SourceTreeSubItemCheckBox::indicator:checked,
114
 SourceTreeSubItemCheckBox::indicator:checked:hover {
115
-    image: url(./Dark/expand.png);
116
+    image: url(./Dark/expand.svg);
117
 }
118
 
119
 SourceTreeSubItemCheckBox::indicator:unchecked,
120
 SourceTreeSubItemCheckBox::indicator:unchecked:hover {
121
-    image: url(./Dark/collapse.png);
122
+    image: url(./Dark/down.svg);
123
 }
124
 
125
 
126
@@ -904,8 +904,8 @@
127
 
128
 /* Preview background color */
129
 
130
-* [themeID="displayBackgroundColor"] {
131
-    qproperty-displayBackgroundColor: #28282A;
132
+OBSQTDisplay {
133
+   qproperty-displayBackgroundColor: #28282A;
134
 }
135
 
136
 /* Preview/Program labels */
137
@@ -927,3 +927,74 @@
138
     qproperty-hotkeysIcon: url(./Dark/settings/hotkeys.svg);
139
     qproperty-advancedIcon: url(./Dark/settings/advanced.svg);
140
 }
141
+
142
+OBSBasicSettings QListWidget::item {
143
+    padding-top: 5px;
144
+    padding-bottom: 5px;
145
+}
146
+
147
+/* Locked CheckBox */
148
+
149
+LockedCheckBox {
150
+    outline: none;
151
+    background: transparent;
152
+    padding: 0px;
153
+}
154
+
155
+LockedCheckBox::indicator {
156
+    width: 16px;
157
+    height: 16px;
158
+}
159
+
160
+LockedCheckBox::indicator:checked {
161
+    image: url(./Dark/locked.svg);
162
+}
163
+
164
+LockedCheckBox::indicator:unchecked {
165
+    image: url(:res/images/unlocked.svg);
166
+}
167
+
168
+LockedCheckBox::indicator:checked:hover {
169
+    image: url(./Dark/locked.svg);
170
+}
171
+
172
+LockedCheckBox::indicator:unchecked:hover {
173
+    image: url(:res/images/unlocked.svg);
174
+}
175
+
176
+/* Visibilty CheckBox */
177
+
178
+VisibilityCheckBox {
179
+    outline: none;
180
+    background: transparent;
181
+    padding: 0px;
182
+}
183
+
184
+VisibilityCheckBox::indicator {
185
+    width: 16px;
186
+    height: 16px;
187
+}
188
+
189
+VisibilityCheckBox::indicator:checked {
190
+    image: url(./Dark/visible.svg);
191
+}
192
+
193
+VisibilityCheckBox::indicator:unchecked {
194
+    image: url(:res/images/invisible.svg);
195
+}
196
+
197
+VisibilityCheckBox::indicator:checked:hover {
198
+    image: url(./Dark/visible.svg);
199
+}
200
+
201
+VisibilityCheckBox::indicator:unchecked:hover {
202
+    image: url(:res/images/invisible.svg);
203
+}
204
+
205
+* [themeID="trashIcon"] {
206
+    qproperty-icon: url(./Dark/trash.svg);
207
+}
208
+
209
+* [themeID="revertIcon"] {
210
+    qproperty-icon: url(./Dark/revert.svg);
211
+}
212
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark.qss -> obs-studio-23.2.0.tar.xz/UI/data/themes/Dark.qss Changed
453
 
1
@@ -100,12 +100,14 @@
2
     background-color: rgb(58,57,58); /* dark */
3
 }
4
 
5
-QListWidget::item:selected:!active {
6
+QListWidget::item:selected:!active,
7
+SourceTree::item:selected:!active {
8
     color: rgb(255, 255, 255);
9
     background-color: rgb(48,47,48);
10
 }
11
 
12
-QListWidget QLineEdit {
13
+QListWidget QLineEdit,
14
+SourceTree QLineEdit {
15
     padding-top: 0px;
16
     padding-bottom: 0px;
17
     padding-right: 0;
18
@@ -114,17 +116,11 @@
19
     border-radius: none;
20
 }
21
 
22
-
23
 /* Dock Widget */
24
 
25
 QDockWidget::title {
26
     text-align: center;
27
-    background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1,
28
-        stop: 0 rgb(86,85,86),
29
-        stop: 0.1 rgb(82,81,82),
30
-        stop: 0.5 rgb(78,77,78),
31
-        stop: 0.9 rgb(74,73,74),
32
-        stop: 1 rgb(70,69,70));
33
+    background-color: rgb(70,69,70);
34
 }
35
 
36
 QDockWidget::close-button, QDockWidget::float-button {
37
@@ -158,21 +154,18 @@
38
 }
39
 
40
 QScrollBar:vertical {
41
-    background-color: rgb(58,57,58); /* dark */
42
+    background-color: rgb(58,57,58);
43
     width: 14px;
44
     margin: 0px;
45
 }
46
 
47
 QScrollBar::handle:vertical {
48
-    background-color: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 0,
49
-        stop: 0 rgb(122,121,122), /* light */
50
-        stop: 0.25 rgb(100, 99, 100),
51
-        stop: 1 rgb(88,87,88)); /* kindaDark */
52
+    background-color: rgb(76,76,76);
53
     min-height: 20px;
54
     margin: 2px;
55
     border-radius: 5px;
56
     border-width: 1px;
57
-    border: 1px solid rgb(31,30,31); /* veryDark */
58
+    border: 1px solid rgb(76,76,76);
59
 }
60
 
61
 QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
62
@@ -194,15 +187,12 @@
63
 }
64
 
65
 QScrollBar::handle:horizontal {
66
-    background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1,
67
-        stop: 0 rgb(122,121,122), /* light */
68
-        stop: 0.25 rgb(100, 99, 100),
69
-        stop: 1 rgb(88,87,88)); /* kindaDark */
70
+    background-color: rgb(76,76,76);
71
     min-width: 20px;
72
     margin: 2px;
73
     border-radius: 5px;
74
     border-width: 1px;
75
-    border: 1px solid rgb(31,30,31); /* veryDark */
76
+    border: 1px solid rgb(76,76,76);
77
 }
78
 
79
 QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
80
@@ -236,31 +226,31 @@
81
 }
82
 
83
 * [themeID="addIconSmall"] {
84
-    qproperty-icon: url(./Dark/plus.png);
85
+    qproperty-icon: url(./Dark/plus.svg);
86
 }
87
 
88
 * [themeID="removeIconSmall"] {
89
-    qproperty-icon: url(./Dark/minus.png);
90
+    qproperty-icon: url(./Dark/minus.svg);
91
 }
92
 
93
 * [themeID="propertiesIconSmall"] {
94
-    qproperty-icon: url(./Dark/cogwheel.png);
95
+    qproperty-icon: url(./Dark/settings/general.svg);
96
 }
97
 
98
 * [themeID="configIconSmall"] {
99
-    qproperty-icon: url(./Dark/cogwheel.png);
100
+    qproperty-icon: url(./Dark/settings/general.svg);
101
 }
102
 
103
 * [themeID="refreshIconSmall"] {
104
-    qproperty-icon: url(./Dark/refresh.png);
105
+    qproperty-icon: url(./Dark/refresh.svg);
106
 }
107
 
108
 * [themeID="upArrowIconSmall"] {
109
-    qproperty-icon: url(./Dark/up_arrow.png);
110
+    qproperty-icon: url(./Dark/up.svg);
111
 }
112
 
113
 * [themeID="downArrowIconSmall"] {
114
-    qproperty-icon: url(./Dark/down_arrow.png);
115
+    qproperty-icon: url(./Dark/down.svg);
116
 }
117
 
118
 
119
@@ -271,11 +261,11 @@
120
 }
121
 
122
 QTabWidget::tab-bar {
123
-    alignment: center;
124
+    alignment: left;
125
 }
126
 
127
 QTabBar::tab {
128
-    background-color: rgb(88,87,88); /* kindaDark */
129
+    background-color: rgb(76,76,76);
130
     border: none;
131
     padding: 5px;
132
     min-width: 50px;
133
@@ -284,16 +274,16 @@
134
 
135
 QTabBar::tab:top {
136
     border-bottom: 1px transparent;
137
-    border-top-left-radius: 5px;
138
-    border-top-right-radius: 5px;
139
+    border-top-left-radius: 3px;
140
+    border-top-right-radius: 3px;
141
 
142
 }
143
 
144
 QTabBar::tab:bottom {
145
     padding-top: 1px;
146
     margin-bottom: 4px;
147
-    border-bottom-left-radius: 5px;
148
-    border-bottom-right-radius: 5px;
149
+    border-bottom-left-radius: 3px;
150
+    border-bottom-right-radius: 3px;
151
     height: 14px;
152
 }
153
 
154
@@ -313,25 +303,17 @@
155
 /* ComboBox */
156
 
157
 QComboBox {
158
-    background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1,
159
-        stop: 0 rgb(86,85,86),
160
-        stop: 0.1 rgb(82,81,82),
161
-        stop: 0.5 rgb(78,77,78),
162
-        stop: 0.9 rgb(74,73,74),
163
-        stop: 1 rgb(70,69,70));
164
+    background-color: rgb(76,76,76);
165
     border-style: solid;
166
     border: 1px;
167
     border-radius: 3px;
168
-    border-color: rgb(31,30,31); /* veryDark */
169
+    border-color: rgb(76,76,76); /* veryDark */
170
     padding: 2px;
171
     padding-left: 10px;
172
 }
173
 
174
 QComboBox:hover {
175
-    background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1,
176
-        stop: 0 rgb(111, 110, 101),
177
-        stop: 0.25 rgb(100, 99, 100),
178
-        stop: 1 rgb(88,87,88)); 
179
+    background-color: rgb(88,87,88);
180
 }
181
 
182
 QComboBox::drop-down {
183
@@ -342,7 +324,7 @@
184
 
185
 QComboBox::down-arrow {
186
     qproperty-alignment: AlignTop;
187
-    image: url(./Dark/updown.png);
188
+    image: url(./Dark/updown.svg);
189
     width: 100%;
190
 }
191
 
192
@@ -362,7 +344,7 @@
193
 
194
 QComboBox::down-arrow:editable {
195
     qproperty-alignment: AlignTop;
196
-    image: url(./Dark/down_arrow.png);
197
+    image: url(./Dark/down.svg);
198
     width: 8%;
199
 }
200
 
201
@@ -376,11 +358,6 @@
202
     padding: 2px 2px 3px 7px;
203
 }
204
 
205
-OBSHotkeyWidget QLineEdit {
206
-    margin: 0px 3px 0px 0px;
207
-}
208
-
209
-
210
 /* Spinbox and doubleSpinbox */
211
 
212
 QSpinBox, QDoubleSpinBox {
213
@@ -395,7 +372,7 @@
214
     subcontrol-origin: margin;
215
     subcontrol-position: top right; /* position at the top right corner */
216
 
217
-    background-color: rgb(88,87,88); /* kindaDark */
218
+    background-color: rgb(76,76,76);
219
     border: 1px solid rgb(31,30,31); /* veryDark */
220
     border-radius: 3px;
221
     border-width: 0;
222
@@ -407,7 +384,7 @@
223
 QSpinBox::down-button, QDoubleSpinBox::down-button {
224
     subcontrol-origin: margin;
225
     subcontrol-position: bottom right; /* position at the top right corner */
226
-    background-color: rgb(88,87,88); /* kindaDark */
227
+    background-color: rgb(76,76,76);
228
     border: 1px solid rgb(31,30,31); /* veryDark */
229
     border-radius: 3px;
230
     border-width: 0;
231
@@ -433,12 +410,12 @@
232
 }
233
 
234
 QSpinBox::up-arrow, QDoubleSpinBox::up-arrow {
235
-    image: url(./Dark/up_arrow.png);
236
+    image: url(./Dark/up.svg);
237
     width: 100%;
238
 }
239
 
240
 QSpinBox::down-arrow, QDoubleSpinBox::down-arrow {
241
-    image: url(./Dark/down_arrow.png);
242
+    image: url(./Dark/down.svg);
243
     width: 100%;
244
 }
245
 
246
@@ -447,7 +424,7 @@
247
 
248
 QPushButton {
249
     color: rgb(225,224,225); /* veryLight */
250
-    background-color: rgb(88,87,88); /* kindaDark */
251
+    background-color: rgb(76,76,76);
252
     border: none;
253
     border-radius: 3px;
254
     padding: 4px;
255
@@ -472,33 +449,24 @@
256
 }
257
 
258
 QPushButton::menu-indicator {
259
-    image: url(./Dark/down_arrow.png);
260
+    image: url(./Dark/down.svg);
261
     subcontrol-position: right;
262
     subcontrol-origin: padding;
263
     width: 25px;
264
 }
265
 
266
-QPushButton[themeID="hotkeyButtons"] {
267
-    margin: 1px  2px;
268
-}
269
-
270
 /* Sliders */
271
 
272
 QSlider::groove:horizontal {
273
-    background-color: QLinearGradient(x1: 0, y1: 1, x2: 0, y2: 0,
274
-        stop: 0 rgb(50, 49, 50), /* dark */
275
-        stop: 0.75 rgb(88,87,88)); /* kindaDark */
276
+    background-color: rgb(76,76,76);
277
     height: 4px;
278
     border: none;
279
     border-radius: 2px;
280
 }
281
 
282
 QSlider::handle:horizontal {
283
-    background-color: QLinearGradient(x1: 0, y1: 0, x2: 0, y2: 1,
284
-        stop: 0 rgb(240,239,240), /* lighter */
285
-        stop: 0.25 rgb(200,199,200),
286
-        stop: 1 rgb(162,161,162)); /* light */
287
-    border: 1px solid rgb(58,57,58); /* dark */
288
+    background-color: #d2d2d2;
289
+    border: 1px solid rgb(58,57,58);
290
     border-radius: 3px;
291
     height: 10px;
292
     width: 18px;
293
@@ -506,10 +474,7 @@
294
 }
295
 
296
 QSlider::handle:horizontal:pressed {
297
-    background-color: QLinearGradient(x1: 0, y1: 1, x2: 0, y2: 0,
298
-        stop: 0 rgb(240,239,240), /* lighter */
299
-        stop: 0.25 rgb(200,199,200),
300
-        stop: 1 rgb(162,161,162)); /* light */
301
+    background-color: #d2d2d2;
302
 }
303
 
304
 QSlider::sub-page:horizontal {
305
@@ -518,27 +483,20 @@
306
 }
307
 
308
 QSlider::sub-page:horizontal:disabled {
309
-    background-color: QLinearGradient(x1: 0, y1: 1, x2: 0, y2: 0,
310
-        stop: 0 rgb(31,30,31), /* veryDark */
311
-        stop: 0.75 rgb(50, 49, 50)); /* dark */
312
+    background-color: rgb(50, 49, 50); /* dark */
313
     border-radius: 2px;
314
 }
315
 
316
 QSlider::groove:vertical {
317
-    background-color: QLinearGradient(x1: 1, y1: 0, x2: 0, y2: 0,
318
-        stop: 0 rgb(50, 49, 50), /* dark */
319
-        stop: 0.75 rgb(88,87,88)); /* kindaDark */
320
+    background-color: rgb(76,76,76);
321
     width: 4px;
322
     border: none;
323
     border-radius: 2px;
324
 }
325
 
326
 QSlider::handle:vertical {
327
-    background-color: QLinearGradient(x1: 1, y1: 0, x2: 0, y2: 0,
328
-        stop: 0 rgb(240,239,240), /* lighter */
329
-        stop: 0.25 rgb(200,199,200),
330
-        stop: 1 rgb(162,161,162)); /* light */
331
-    border: 1px solid rgb(58,57,58); /* dark */
332
+    background-color: #d2d2d2;
333
+    border: 1px solid rgb(58,57,58);
334
     border-radius: 3px;
335
     width: 10px;
336
     height: 18px;
337
@@ -546,10 +504,7 @@
338
 }
339
 
340
 QSlider::handle:vertical:pressed {
341
-    background-color: QLinearGradient(x1: 1, y1: 0, x2: 0, y2: 0,
342
-        stop: 0 rgb(240,239,240), /* lighter */
343
-        stop: 0.25 rgb(200,199,200),
344
-        stop: 1 rgb(162,161,162)); /* light */
345
+    background-color: #d2d2d2;
346
 }
347
 
348
 QSlider::add-page:vertical {
349
@@ -558,9 +513,7 @@
350
 }
351
 
352
 QSlider::add-page:vertical:disabled {
353
-    background-color: QLinearGradient(x1: 1, y1: 0, x2: 0, y2: 0,
354
-        stop: 0 rgb(31,30,31), /* veryDark */
355
-        stop: 0.75 rgb(50, 49, 50)); /* dark */
356
+    background-color: rgb(50, 49, 50); /* dark */
357
     border-radius: 2px;
358
 }
359
 
360
@@ -613,18 +566,17 @@
361
 }
362
 
363
 MuteCheckBox::indicator:checked {
364
-    image: url(./Dark/mute.png);
365
+    image: url(./Dark/mute.svg);
366
 }
367
 
368
 MuteCheckBox::indicator:unchecked {
369
-    image: url(./Dark/unmute.png);
370
+    image: url(./Dark/settings/audio.svg);
371
 }
372
 
373
 OBSHotkeyLabel[hotkeyPairHover=true] {
374
     color: red;
375
 }
376
 
377
-
378
 /* Group Collapse Checkbox */
379
 
380
 SourceTreeSubItemCheckBox {
381
@@ -638,11 +590,11 @@
382
 }
383
 
384
 SourceTreeSubItemCheckBox::indicator:checked {
385
-    image: url(./Dark/expand.png);
386
+    image: url(./Dark/expand.svg);
387
 }
388
 
389
 SourceTreeSubItemCheckBox::indicator:unchecked {
390
-    image: url(./Dark/collapse.png);
391
+    image: url(./Dark/down.svg);
392
 }
393
 
394
 
395
@@ -695,8 +647,8 @@
396
 
397
 /* Preview background color */
398
 
399
-* [themeID="displayBackgroundColor"] {
400
-    qproperty-displayBackgroundColor: rgb(76, 76, 76);
401
+OBSQTDisplay {
402
+   qproperty-displayBackgroundColor: rgb(76, 76, 76);
403
 }
404
 
405
 /* Preview/Program labels */
406
@@ -718,3 +670,46 @@
407
     qproperty-hotkeysIcon: url(./Dark/settings/hotkeys.svg);
408
     qproperty-advancedIcon: url(./Dark/settings/advanced.svg);
409
 }
410
+
411
+OBSBasicSettings QListWidget::item {
412
+    padding-top: 5px;
413
+    padding-bottom: 5px;
414
+}
415
+
416
+/* Locked CheckBox */
417
+
418
+LockedCheckBox {
419
+    outline: none;
420
+    background: transparent;
421
+}
422
+
423
+LockedCheckBox::indicator:checked {
424
+    image: url(./Dark/locked.svg);
425
+}
426
+
427
+LockedCheckBox::indicator:unchecked {
428
+    image: url(:res/images/unlocked.svg);
429
+}
430
+
431
+/* Visibilty CheckBox */
432
+
433
+VisibilityCheckBox {
434
+    outline: none;
435
+    background: transparent;
436
+}
437
+
438
+VisibilityCheckBox::indicator:checked {
439
+    image: url(./Dark/visible.svg);
440
+}
441
+
442
+VisibilityCheckBox::indicator:unchecked {
443
+    image: url(:res/images/invisible.svg);
444
+}
445
+
446
+* [themeID="trashIcon"] {
447
+    qproperty-icon: url(./Dark/trash.svg);
448
+}
449
+
450
+* [themeID="revertIcon"] {
451
+    qproperty-icon: url(./Dark/revert.svg);
452
+}
453
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/down.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-chevron-down" fill="none" stroke="#d2d2d2" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline transform="matrix(1.7072 0 0 1.7538 -8.5187 -9.0369)" points="6 9 12 15 18 9"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/expand.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-chevron-down" fill="none" stroke="#d2d2d2" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline transform="matrix(0 -1.7072 1.7538 0 -9.0782 32.495)" points="6 9 12 15 18 9"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/locked.svg Added
8
 
1
@@ -0,0 +1,6 @@
2
+<?xml version="1.0" encoding="UTF-8"?>
3
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16pt" height="16pt" viewBox="0 0 16 16" version="1.1">
4
+<g id="surface1">
5
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(82.352941%,82.352941%,82.352941%);fill-opacity:1;" d="M 8 1 C 5.800781 1 4 2.800781 4 5 L 4 7 L 2 7 L 2 15 L 14 15 L 14 7 L 12 7 L 12 5 C 12 2.800781 10.199219 1 8 1 Z M 8 3 C 9.121094 3 10 3.878906 10 5 L 10 7 L 6 7 L 6 5 C 6 3.878906 6.878906 3 8 3 Z M 8 3 "/>
6
+</g>
7
+</svg>
8
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/minus.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-plus" fill="none" stroke="#d2d2d2" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><line x1="1.5187" x2="22.481" y1="12" y2="12" stroke-width="2.4473"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/mute.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-volume-x" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19" fill="#d40000" stroke="#d40000" stroke-opacity="1"/><line x1="23" x2="17" y1="9" y2="15" stroke="#d40000" stroke-opacity="1"/><line x1="17" x2="23" y1="9" y2="15" fill="#d40000" stroke="#d40000" stroke-opacity="1"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/no_sources.svg Added
20
 
1
@@ -0,0 +1,18 @@
2
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
3
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+<svg width="125" height="40" viewBox="0 0 125 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
5
+    <g transform="matrix(1.3524,0,0,1.3524,-40.8078,-17.9807)">
6
+        <g transform="matrix(0.0855581,0,0,0.0855581,29.3907,17.4063)">
7
+            <path d="M128,80L160,80L160,112L128,112L128,80ZM224,72L224,224C224,232.8 216.8,240 208,240L48,240C39.2,240 32,232.8 32,224L32,32C32,23.2 39.2,16 48,16L168,16L224,72ZM208,80L160,32L48,32L48,208L96,128L128,192L160,160L208,208L208,80Z" style="fill:#d2d2d2;"/>
8
+        </g>
9
+        <g transform="matrix(0.0859541,0,0,0.0859541,98.7496,17.3555)">
10
+            <path d="M240,48L112,48C112,39.2 104.8,32 96,32L32,32C23.2,32 16,39.2 16,48C7.2,48 0,55.2 0,64L0,208C0,216.8 7.2,224 16,224L240,224C248.8,224 256,216.8 256,208L256,64C256,55.2 248.8,48 240,48ZM96,80L32,80L32,64L96,64L96,80ZM168,192C136.96,192 112,167.04 112,136C112,104.96 136.96,80 168,80C199.04,80 224,104.96 224,136C224,167.04 199.04,192 168,192ZM208,136C208,158.08 189.92,176 168,176C146.08,176 128,157.92 128,136C128,114.08 146.08,96 168,96C189.92,96 208,114.08 208,136Z" style="fill:#d2d2d2;"/>
11
+        </g>
12
+        <g transform="matrix(0.0855581,0,0,0.0855581,75.3166,17.4063)">
13
+            <path d="M128,16C66.24,16 16,66.24 16,128C16,189.76 66.24,240 128,240C135.68,240 143.04,239.2 150.08,237.76C147.36,236.48 146.88,226.08 149.76,220.32C152.8,213.76 162.72,197.12 152.96,191.52C143.2,185.92 145.92,183.52 140,176.96C134.08,170.4 136.48,169.44 136,167.68C134.72,162.24 141.76,153.44 142.24,152.64C142.56,151.68 142.56,148.32 142.24,147.36C142.24,146.08 137.92,143.84 136.8,143.68C135.84,143.68 135.04,145.44 133.6,145.76C132.16,146.08 125.6,141.76 124.16,140.48C122.72,139.2 121.92,136.8 119.84,135.04C117.76,132.96 117.6,134.56 114.56,133.28C111.52,132 101.76,128.32 94.08,125.6C86.4,122.56 85.76,118.08 85.76,115.04C85.44,111.84 80.96,107.52 79.04,104.32C76.8,101.12 76.48,96.8 75.84,97.76C75.2,98.72 79.84,110.24 79.04,110.72C78.24,111.04 76.48,107.52 74.24,104.64C72,101.6 76.48,103.2 69.44,89.44C62.4,75.68 71.68,68.64 72.16,61.44C72.64,54.24 78.24,64.16 75.2,59.36C72.16,54.56 75.2,45.12 72.96,41.6C70.88,38.08 58.88,45.6 58.88,45.6C59.2,42.08 69.92,36.32 77.44,30.88C84.96,25.44 89.92,29.92 96,31.68C102.24,33.76 102.56,33.12 100.48,30.88C98.4,28.8 101.44,28.16 106.24,28.8C110.72,29.6 112.32,35.36 119.52,34.56C127.04,34.08 120.32,36 121.28,38.08C122.24,40.16 120.32,39.84 115.2,42.88C110.4,46.08 115.52,46.4 124,52.64C132.48,58.88 130.08,48.64 128.96,43.84C127.84,39.04 135.2,42.88 135.2,42.88C140.48,46.4 139.52,43.2 143.2,44.16C146.88,45.12 157.76,54.4 157.76,54.4C144.48,61.44 152.8,62.08 155.04,63.84C157.28,65.6 150.56,68.64 150.56,68.64C147.84,65.92 147.52,68.96 145.76,69.92C144,70.88 145.44,73.44 145.44,73.44C136.48,74.88 138.4,84.48 138.72,86.72C138.72,88.96 132.64,92.48 131.2,96C129.76,99.2 135.2,106.24 132.16,106.56C129.12,107.04 126.72,96 111.2,100C106.4,101.28 96.16,106.56 101.76,117.28C107.52,128.32 116.48,114.24 119.52,115.84C122.56,117.44 118.56,124.32 119.2,124.64C119.84,124.96 127.68,124.96 128.16,134.4C128.64,143.84 140.48,142.88 142.88,143.2C145.6,143.2 154.08,136.16 155.2,136C156.16,135.52 161.28,131.52 171.68,137.44C182.24,143.2 187.36,142.4 190.88,144.96C194.4,147.52 192.16,152.48 195.36,154.24C198.56,156 212.32,153.76 215.84,159.2C219.36,164.64 201.76,192.64 196.32,195.68C190.88,198.72 188.64,205.92 182.88,210.4C177.12,214.88 169.92,220.64 162.56,224.96C156,228.64 155.04,235.52 152,237.76C202.24,226.56 239.68,181.76 239.68,128.32C239.68,66.56 189.44,16.32 127.68,16.32L128,16ZM154.24,120.96C152.8,121.44 149.76,124.48 141.76,119.68C134.08,114.88 128.8,116 128,115.2C128,115.2 127.2,113.44 130.72,112.96C137.76,112.16 146.4,119.52 148.48,119.52C150.56,119.52 151.52,117.44 155.04,118.72C158.56,120 155.84,120.8 154.24,120.96ZM117.44,27.2C116.64,26.72 117.92,25.92 118.88,24.96C119.36,24.48 119.2,23.2 119.68,22.72C121.44,20.96 129.44,18.72 128,23.2C126.24,27.52 118.72,28 117.44,27.2ZM137.12,41.44C134.08,41.12 127.84,40.64 128.8,39.2C133.6,34.72 127.36,33.12 123.36,33.12C119.36,32.8 117.92,30.56 119.84,30.08C121.76,29.6 129.6,30.4 131.04,31.36C132.32,32.32 139.36,35.36 139.84,37.44C140.16,39.52 139.84,41.44 137.12,41.44ZM160.64,40.64C158.4,42.08 147.36,34.08 145.44,32.32C136.48,24.64 131.2,27.36 129.44,25.76C127.68,24.16 128.16,22.72 131.2,20.32C134.24,17.92 142.24,21.28 147.2,21.76C152,22.24 157.76,26.08 157.76,30.56C158.08,34.56 163.04,38.56 160.8,40.64L160.64,40.64Z" style="fill:#d2d2d2;"/>
14
+        </g>
15
+        <g transform="matrix(0.0914992,0,0,0.0914992,51.1921,15.9137)">
16
+            <path d="M240,32L16,32C7.2,32 0,39.2 0,48L0,192C0,200.8 7.2,208 16,208L101.44,208C97.44,217.76 87.68,230.24 64,240L192,240C168.32,230.24 158.56,217.76 154.56,208L240,208C248.8,208 256,200.8 256,192L256,48C256,39.2 248.8,32 240,32ZM240,176L16,176L16,48L240,48L240,176Z" style="fill:#d2d2d2;"/>
17
+        </g>
18
+    </g>
19
+</svg>
20
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/plus.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-plus" fill="none" stroke="#d2d2d2" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><line x1="12" x2="12" y1="1.5187" y2="22.481" stroke-width="2.4473"/><line x1="1.5187" x2="22.481" y1="12" y2="12" stroke-width="2.4473"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/refresh.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#d2d2d2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-refresh-ccw"><polyline points="1 4 1 10 7 10"></polyline><polyline points="23 20 23 14 17 14"></polyline><path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"></path></svg>
3
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/revert.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#d2d2d2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rotate-ccw"><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path></svg>
3
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/settings/advanced.svg -> obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/settings/advanced.svg Changed
5
 
1
@@ -1,1 +1,1 @@
2
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="white" d="M4.48 7.27c.26.26 1.28 1.33 1.28 1.33l.56-.58-.88-.91 1.69-1.8s-.76-.74-.43-.45c.32-1.19.03-2.51-.87-3.44C4.93.5 3.66.2 2.52.51l1.93 2-.51 1.96-1.89.52-1.93-2C-.19 4.17.1 5.48 1 6.4c.94.98 2.29 1.26 3.48.87zm6.44 1.94l-2.33 2.3 3.84 3.98c.31.33.73.49 1.14.49.41 0 .82-.16 1.14-.49.63-.65.63-1.7 0-2.35l-3.79-3.93zM16 2.53L13.55 0 6.33 7.46l.88.91-4.31 4.46-.99.53-1.39 2.27.35.37 2.2-1.44.51-1.02L7.9 9.08l.88.91L16 2.53z"/></svg>
3
\ No newline at end of file
4
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="#d2d2d2" d="M4.48 7.27c.26.26 1.28 1.33 1.28 1.33l.56-.58-.88-.91 1.69-1.8s-.76-.74-.43-.45c.32-1.19.03-2.51-.87-3.44C4.93.5 3.66.2 2.52.51l1.93 2-.51 1.96-1.89.52-1.93-2C-.19 4.17.1 5.48 1 6.4c.94.98 2.29 1.26 3.48.87zm6.44 1.94l-2.33 2.3 3.84 3.98c.31.33.73.49 1.14.49.41 0 .82-.16 1.14-.49.63-.65.63-1.7 0-2.35l-3.79-3.93zM16 2.53L13.55 0 6.33 7.46l.88.91-4.31 4.46-.99.53-1.39 2.27.35.37 2.2-1.44.51-1.02L7.9 9.08l.88.91L16 2.53z"/></svg>
5
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/settings/audio.svg -> obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/settings/audio.svg Changed
5
 
1
@@ -1,1 +1,1 @@
2
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="white" d="M12 8.02c0 1.09-.45 2.09-1.17 2.83l-.67-.67c.55-.56.89-1.31.89-2.16 0-.85-.34-1.61-.89-2.16l.67-.67A3.99 3.99 0 0 1 12 8.02zM7.72 2.28L4 6H2c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2l3.72 3.72c.47.47 1.28.14 1.28-.53V2.81c0-.67-.81-1-1.28-.53zm5.94.08l-.67.67a6.996 6.996 0 0 1 2.06 4.98c0 1.94-.78 3.7-2.06 4.98l.67.67A7.973 7.973 0 0 0 16 8c0-2.22-.89-4.22-2.34-5.66v.02zm-1.41 1.41l-.69.67a5.05 5.05 0 0 1 1.48 3.58c0 1.39-.56 2.66-1.48 3.56l.69.67A5.971 5.971 0 0 0 14 8.02c0-1.65-.67-3.16-1.75-4.25z"/></svg>
3
\ No newline at end of file
4
+<svg class="feather feather-volume-2" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19" fill="#d2d2d2" stroke="#d2d2d2"/><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07" stroke="#d2d2d2"/></svg>
5
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/settings/general.svg -> obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/settings/general.svg Changed
64
 
1
@@ -1,61 +1,1 @@
2
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
3
-<svg
4
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
5
-   xmlns:cc="http://creativecommons.org/ns#"
6
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7
-   xmlns:svg="http://www.w3.org/2000/svg"
8
-   xmlns="http://www.w3.org/2000/svg"
9
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11
-   width="16"
12
-   height="16"
13
-   viewBox="0 0 32 32"
14
-   version="1.1"
15
-   id="svg5"
16
-   sodipodi:docname="general.svg"
17
-   inkscape:version="0.92.3 (2405546, 2018-03-11)">
18
-  <metadata
19
-     id="metadata11">
20
-    <rdf:RDF>
21
-      <cc:Work
22
-         rdf:about="">
23
-        <dc:format>image/svg+xml</dc:format>
24
-        <dc:type
25
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
26
-        <dc:title></dc:title>
27
-      </cc:Work>
28
-    </rdf:RDF>
29
-  </metadata>
30
-  <defs
31
-     id="defs9" />
32
-  <sodipodi:namedview
33
-     pagecolor="#ffffff"
34
-     bordercolor="#666666"
35
-     borderopacity="1"
36
-     objecttolerance="10"
37
-     gridtolerance="10"
38
-     guidetolerance="10"
39
-     inkscape:pageopacity="0"
40
-     inkscape:pageshadow="2"
41
-     inkscape:window-width="1920"
42
-     inkscape:window-height="998"
43
-     id="namedview7"
44
-     showgrid="false"
45
-     inkscape:zoom="5.53125"
46
-     inkscape:cx="21.333333"
47
-     inkscape:cy="21.333333"
48
-     inkscape:window-x="0"
49
-     inkscape:window-y="0"
50
-     inkscape:window-maximized="1"
51
-     inkscape:current-layer="svg5" />
52
-  <g
53
-     id="surface1"
54
-     style="fill:#ffffff"
55
-     transform="matrix(1,0,0,1.1456034,0,-2.3279489)">
56
-    <path
57
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
58
-       d="M 32,17.542969 V 14.339844 L 27.566406,13.058594 26.539062,10.878906 28.546875,7.203125 25.964844,4.941406 21.828125,6.761719 19.335938,5.859375 17.761719,2.019531 H 14.101562 L 12.664062,5.898438 10.125,6.796875 5.921875,5.042969 3.335938,7.296875 l 2.082031,3.625 -1.03125,2.179687 L 0,14.457031 v 3.183594 l 4.433594,1.28125 1.027344,2.179687 -2.007813,3.679688 2.582031,2.261719 4.136719,-1.824219 2.492187,0.902344 1.574219,3.835937 H 17.875 l 1.4375,-3.878906 2.539062,-0.898437 4.207032,1.761718 2.582031,-2.261718 -2.101563,-3.621094 1.074219,-2.179688 L 32,17.5 Z M 16,22 c -3.792969,0 -6.855469,-2.679688 -6.855469,-6 0,-3.320312 3.0625,-6 6.855469,-6 3.792969,0 6.855469,2.679688 6.855469,6 0,3.320312 -3.0625,6 -6.855469,6 z m 0,0"
59
-       id="path2"
60
-       inkscape:connector-curvature="0" />
61
-  </g>
62
-</svg>
63
+<svg width="16" height="16" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(1 0 0 1.1456 0 -2.3279)" fill="#d2d2d2"><path d="m32 17.543v-3.2031l-4.4336-1.2812-1.0273-2.1797 2.0078-3.6758-2.582-2.2617-4.1367 1.8203-2.4922-0.90234-1.5742-3.8398h-3.6602l-1.4375 3.8789-2.5391 0.89844-4.2031-1.7539-2.5859 2.2539 2.082 3.625-1.0312 2.1797-4.3867 1.3555v3.1836l4.4336 1.2812 1.0273 2.1797-2.0078 3.6797 2.582 2.2617 4.1367-1.8242 2.4922 0.90234 1.5742 3.8359h3.6367l1.4375-3.8789 2.5391-0.89844 4.207 1.7617 2.582-2.2617-2.1016-3.6211 1.0742-2.1797 4.3867-1.3789zm-16 4.457c-3.793 0-6.8555-2.6797-6.8555-6s3.0625-6 6.8555-6 6.8555 2.6797 6.8555 6-3.0625 6-6.8555 6z" fill="#d2d2d2" fill-rule="evenodd"/></g></svg>
64
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/settings/hotkeys.svg -> obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/settings/hotkeys.svg Changed
5
 
1
@@ -1,1 +1,1 @@
2
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="white" d="M10 5H9V4h1v1zM3 6H2v1h1V6zm5-2H7v1h1V4zM4 4H2v1h2V4zm8 7h2v-1h-2v1zM8 7h1V6H8v1zm-4 3H2v1h2v-1zm8-6h-1v1h1V4zm2 0h-1v1h1V4zm-2 5h2V6h-2v3zm4-6v9c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h14c.55 0 1 .45 1 1zm-1 0H1v9h14V3zM6 7h1V6H6v1zm0-3H5v1h1V4zM4 7h1V6H4v1zm1 4h6v-1H5v1zm5-4h1V6h-1v1zM3 8H2v1h1V8zm5 0v1h1V8H8zM6 8v1h1V8H6zM5 8H4v1h1V8zm5 1h1V8h-1v1z"/></svg>
3
\ No newline at end of file
4
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="#d2d2d2" d="M10 5H9V4h1v1zM3 6H2v1h1V6zm5-2H7v1h1V4zM4 4H2v1h2V4zm8 7h2v-1h-2v1zM8 7h1V6H8v1zm-4 3H2v1h2v-1zm8-6h-1v1h1V4zm2 0h-1v1h1V4zm-2 5h2V6h-2v3zm4-6v9c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h14c.55 0 1 .45 1 1zm-1 0H1v9h14V3zM6 7h1V6H6v1zm0-3H5v1h1V4zM4 7h1V6H4v1zm1 4h6v-1H5v1zm5-4h1V6h-1v1zM3 8H2v1h1V8zm5 0v1h1V8H8zM6 8v1h1V8H6zM5 8H4v1h1V8zm5 1h1V8h-1v1z"/></svg>
5
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/settings/output.svg -> obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/settings/output.svg Changed
9
 
1
@@ -1,5 +1,5 @@
2
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
3
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
-<svg width="100%" height="100%" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
5
-    <path d="M12,15L4,15C5.48,14.39 6.09,13.61 6.34,13L1,13C0.45,13 0,12.55 0,12L0,3C0,2.45 0.45,2 1,2L15,2C15.55,2 16,2.45 16,3L16,4.191L15,4.191L15,3L1,3L1,11L15,11L15,9.752L16,9.752L16,12C16,12.55 15.55,13 15,13L9.66,13C9.91,13.61 10.52,14.39 12,15ZM11.981,10.35L11.981,7.849L5.965,7.849L5.965,6.182L11.981,6.182L11.981,3.681L15.992,7.015L11.981,10.35Z" style="fill:white;"/>
6
+<svg width="16" height="16" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
7
+    <path d="M12,15L4,15C5.48,14.39 6.09,13.61 6.34,13L1,13C0.45,13 0,12.55 0,12L0,3C0,2.45 0.45,2 1,2L15,2C15.55,2 16,2.45 16,3L16,4.191L15,4.191L15,3L1,3L1,11L15,11L15,9.752L16,9.752L16,12C16,12.55 15.55,13 15,13L9.66,13C9.91,13.61 10.52,14.39 12,15ZM11.981,10.35L11.981,7.849L5.965,7.849L5.965,6.182L11.981,6.182L11.981,3.681L15.992,7.015L11.981,10.35Z" style="fill:#d2d2d2;"/>
8
 </svg>
9
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/settings/stream.svg -> obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/settings/stream.svg Changed
5
 
1
@@ -1,1 +1,1 @@
2
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="white" d="M4.79 6.11c.25-.25.25-.67 0-.92-.32-.33-.48-.76-.48-1.19 0-.43.16-.86.48-1.19.25-.26.25-.67 0-.92a.613.613 0 0 0-.45-.19c-.16 0-.33.06-.45.19-.57.58-.85 1.35-.85 2.11 0 .76.29 1.53.85 2.11.25.25.66.25.9 0zM2.33.52a.651.651 0 0 0-.92 0C.48 1.48.01 2.74.01 3.99c0 1.26.47 2.52 1.4 3.48.25.26.66.26.91 0s.25-.68 0-.94c-.68-.7-1.02-1.62-1.02-2.54 0-.92.34-1.84 1.02-2.54a.66.66 0 0 0 .01-.93zm5.69 5.1A1.62 1.62 0 1 0 6.4 4c-.01.89.72 1.62 1.62 1.62zM14.59.53a.628.628 0 0 0-.91 0c-.25.26-.25.68 0 .94.68.7 1.02 1.62 1.02 2.54 0 .92-.34 1.83-1.02 2.54-.25.26-.25.68 0 .94a.651.651 0 0 0 .92 0c.93-.96 1.4-2.22 1.4-3.48A5.048 5.048 0 0 0 14.59.53zM8.02 6.92c-.41 0-.83-.1-1.2-.3l-3.15 8.37h1.49l.86-1h4l.84 1h1.49L9.21 6.62c-.38.2-.78.3-1.19.3zm-.01.48L9.02 11h-2l.99-3.6zm-1.99 5.59l1-1h2l1 1h-4zm5.19-11.1c-.25.25-.25.67 0 .92.32.33.48.76.48 1.19 0 .43-.16.86-.48 1.19-.25.26-.25.67 0 .92a.63.63 0 0 0 .9 0c.57-.58.85-1.35.85-2.11 0-.76-.28-1.53-.85-2.11a.634.634 0 0 0-.9 0z"/></svg>
3
\ No newline at end of file
4
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="#d2d2d2" d="M4.79 6.11c.25-.25.25-.67 0-.92-.32-.33-.48-.76-.48-1.19 0-.43.16-.86.48-1.19.25-.26.25-.67 0-.92a.613.613 0 0 0-.45-.19c-.16 0-.33.06-.45.19-.57.58-.85 1.35-.85 2.11 0 .76.29 1.53.85 2.11.25.25.66.25.9 0zM2.33.52a.651.651 0 0 0-.92 0C.48 1.48.01 2.74.01 3.99c0 1.26.47 2.52 1.4 3.48.25.26.66.26.91 0s.25-.68 0-.94c-.68-.7-1.02-1.62-1.02-2.54 0-.92.34-1.84 1.02-2.54a.66.66 0 0 0 .01-.93zm5.69 5.1A1.62 1.62 0 1 0 6.4 4c-.01.89.72 1.62 1.62 1.62zM14.59.53a.628.628 0 0 0-.91 0c-.25.26-.25.68 0 .94.68.7 1.02 1.62 1.02 2.54 0 .92-.34 1.83-1.02 2.54-.25.26-.25.68 0 .94a.651.651 0 0 0 .92 0c.93-.96 1.4-2.22 1.4-3.48A5.048 5.048 0 0 0 14.59.53zM8.02 6.92c-.41 0-.83-.1-1.2-.3l-3.15 8.37h1.49l.86-1h4l.84 1h1.49L9.21 6.62c-.38.2-.78.3-1.19.3zm-.01.48L9.02 11h-2l.99-3.6zm-1.99 5.59l1-1h2l1 1h-4zm5.19-11.1c-.25.25-.25.67 0 .92.32.33.48.76.48 1.19 0 .43-.16.86-.48 1.19-.25.26-.25.67 0 .92a.63.63 0 0 0 .9 0c.57-.58.85-1.35.85-2.11 0-.76-.28-1.53-.85-2.11a.634.634 0 0 0-.9 0z"/></svg>
5
obs-studio-23.1.0.tar.xz/UI/data/themes/Dark/settings/video.svg -> obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/settings/video.svg Changed
5
 
1
@@ -1,1 +1,1 @@
2
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="white" d="M15 2H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5.34c-.25.61-.86 1.39-2.34 2h8c-1.48-.61-2.09-1.39-2.34-2H15c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 9H1V3h14v8z"/></svg>
3
\ No newline at end of file
4
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="#d2d2d2" d="M15 2H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5.34c-.25.61-.86 1.39-2.34 2h8c-1.48-.61-2.09-1.39-2.34-2H15c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 9H1V3h14v8z"/></svg>
5
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/trash.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#d2d2d2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-trash-2"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line></svg>
3
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/up.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-chevron-down" fill="none" stroke="#d2d2d2" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline transform="matrix(-1.7072 0 0 -1.7538 32.454 33.055)" points="6 9 12 15 18 9"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/updown.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-chevron-down" fill="none" stroke="#d2d2d2" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 8 16" xmlns="http://www.w3.org/2000/svg"><polyline transform="matrix(.57465 0 0 .495 -2.8958 7.08)" points="6 9 12 15 18 9"/><polyline transform="matrix(-.57465 0 0 -.495 10.896 8.955)" points="6 9 12 15 18 9" fill="none" stroke="#d2d2d2" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/data/themes/Dark/visible.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#d2d2d2"><path d="m8.06 3c-5.06 0-8.06 5-8.06 5s3 5 8.06 5c4.94 0 7.94-5 7.94-5s-3-5-7.94-5zm-0.06 8.3333c-2.2 0-4-1.4833-4-3.3333 0-1.8333 1.8-3.3333 4-3.3333 2.22 0 4 1.5 4 3.3333 0 1.85-1.78 3.3333-4 3.3333zm2-3.3333c0 0.925-0.89 1.6667-2 1.6667s-2-0.74167-2-1.6667c0-0.925 0.89-1.6667 2-1.6667s2 0.74167 2 1.6667z" fill-rule="evenodd" stroke-width=".91287"/></svg>
3
obs-studio-23.1.0.tar.xz/UI/data/themes/Rachni.qss -> obs-studio-23.2.0.tar.xz/UI/data/themes/Rachni.qss Changed
253
 
1
@@ -231,9 +231,9 @@
2
 QGroupBox::title {
3
    color: rgb(240, 98, 146); /* Pink (Secondary) */
4
    left: 20px;
5
+   top: -7px;
6
    padding-left: 5px;
7
    padding-right: 4px;
8
-   padding-top: -14px;
9
 }
10
 
11
 /*****************/
12
@@ -480,31 +480,31 @@
13
 }
14
 
15
 * [themeID="addIconSmall"] {
16
-   qproperty-icon: url(./Dark/plus.png);
17
+   qproperty-icon: url(./Dark/plus.svg);
18
 }
19
 
20
 * [themeID="removeIconSmall"] {
21
-   qproperty-icon: url(./Dark/minus.png);
22
+   qproperty-icon: url(./Dark/minus.svg);
23
 }
24
 
25
 * [themeID="propertiesIconSmall"] {
26
-   qproperty-icon: url(./Dark/cogwheel.png);
27
+   qproperty-icon: url(./Dark/settings/general.svg);
28
 }
29
 
30
 * [themeID="configIconSmall"] {
31
-   qproperty-icon: url(./Dark/cogwheel.png);
32
+   qproperty-icon: url(./Dark/settings/general.svg);
33
 }
34
 
35
 * [themeID="refreshIconSmall"] {
36
-   qproperty-icon: url(./Dark/refresh.png);
37
+   qproperty-icon: url(./Dark/refresh.svg);
38
 }
39
 
40
 * [themeID="upArrowIconSmall"] {
41
-   qproperty-icon: url(./Dark/up_arrow.png);
42
+   qproperty-icon: url(./Dark/up.svg);
43
 }
44
 
45
 * [themeID="downArrowIconSmall"] {
46
-   qproperty-icon: url(./Dark/down_arrow.png);
47
+   qproperty-icon: url(./Dark/down.svg);
48
 }
49
 
50
 /***********************/
51
@@ -738,36 +738,36 @@
52
 }
53
 
54
 MuteCheckBox::indicator:checked {
55
-   image: url(./Dark/mute.png);
56
+   image: url(./Dark/mute.svg);
57
 }
58
 
59
 MuteCheckBox::indicator:unchecked {
60
-   image: url(./Dark/unmute.png);
61
+   image: url(./Dark/settings/audio.svg);
62
 }
63
 
64
 MuteCheckBox::indicator:unchecked:hover {
65
    background-color: rgba(240, 98, 146, 0.5); /* Pink (Secondary) */
66
-   image: url(./Dark/unmute.png);
67
+   image: url(./Dark/settings/audio.svg);
68
 }
69
 
70
 MuteCheckBox::indicator:unchecked:focus {
71
-   image: url(./Dark/unmute.png);
72
+   image: url(./Dark/settings/audio.svg);
73
 }
74
 MuteCheckBox::indicator:checked:hover {
75
    background-color: rgba(240, 98, 146, 0.5); /* Pink (Secondary) */
76
-   image: url(./Dark/mute.png);
77
+   image: url(./Dark/mute.svg);
78
 }
79
 
80
 MuteCheckBox::indicator:checked:focus {
81
-   image: url(./Dark/mute.png);
82
+   image: url(./Dark/mute.svg);
83
 }
84
 
85
 MuteCheckBox::indicator:checked:disabled {
86
-   image: url(./Dark/mute.png);
87
+   image: url(./Dark/mute.svg);
88
 }
89
 
90
 MuteCheckBox::indicator:unchecked:disabled {
91
-   image: url(./Dark/unmute.png);
92
+   image: url(./Dark/settings/audio.svg);
93
 }
94
 
95
 /****************************/
96
@@ -786,12 +786,12 @@
97
 
98
 SourceTreeSubItemCheckBox::indicator:checked,
99
 SourceTreeSubItemCheckBox::indicator:checked:hover {
100
-   image: url(./Dark/expand.png);
101
+   image: url(./Dark/expand.svg);
102
 }
103
 
104
 SourceTreeSubItemCheckBox::indicator:unchecked,
105
 SourceTreeSubItemCheckBox::indicator:unchecked:hover {
106
-   image: url(./Dark/collapse.png);
107
+   image: url(./Dark/down.svg);
108
 }
109
 
110
 /*************************/
111
@@ -969,6 +969,8 @@
112
 QPushButton[themeID="addIconSmall"],
113
 QPushButton[themeID="removeIconSmall"],
114
 QPushButton[themeID="configIconSmall"],
115
+QPushButton[themeID="trashIcon"],
116
+QPushButton[themeID="revertIcon"],
117
 QPushButton#transitionRemove,
118
 QPushButton#moveAsyncFilterUp,
119
 QPushButton#moveAsyncFilterDown,
120
@@ -982,6 +984,8 @@
121
 QPushButton:hover[themeID="addIconSmall"],
122
 QPushButton:hover[themeID="removeIconSmall"],
123
 QPushButton:hover[themeID="configIconSmall"],
124
+QPushButton:hover[themeID="trashIcon"],
125
+QPushButton:hover[themeID="revertIcon"],
126
 QPushButton:hover#transitionRemove,
127
 QPushButton:hover#moveAsyncFilterUp,
128
 QPushButton:hover#moveAsyncFilterDown,
129
@@ -995,39 +999,6 @@
130
    outline: none;
131
 }
132
 
133
-/******************************/
134
-/*   --- Hotkey Buttons ---   */
135
-/******************************/
136
-/* Fix for the hotkey buttons */
137
-/* looking terrible with my   */
138
-/* color choices.             */
139
-/******************************/
140
-
141
-QPushButton[themeID="hotkeyButtons"] {
142
-   background-color: rgb(58, 64, 69); /* Light Blue-gray */
143
-   color: rgb(239, 240, 241); /* White */
144
-   border-radius: 2px;
145
-   border: none;
146
-   margin: 4px;
147
-   padding-top: 6px;
148
-   padding-bottom: 6px;
149
-}
150
-
151
-QPushButton:hover[themeID="hotkeyButtons"] {
152
-   background-color: rgba(240, 98, 146, 0.5); /* Pink (Secondary) */
153
-   border: 1px solid rgba(240, 98, 146, 0.5); /* Pink (Secondary) */
154
-}
155
-
156
-QPushButton:pressed[themeID="hotkeyButtons"] {
157
-   background-color: rgb(240, 98, 146); /* Pink (Secondary) */
158
-   border: 1px solid rgb(240, 98, 146); /* Pink (Secondary) */
159
-}
160
-
161
-QPushButton:disabled[themeID="hotkeyButtons"] {
162
-   background-color: rgb(58, 64, 69); /* Light Blue-gray */
163
-   color: rgb(162, 161, 162); /* Lighter Gray */
164
-}
165
-
166
 /******************/
167
 /* --- Labels --- */
168
 /******************/
169
@@ -1260,8 +1231,8 @@
170
 
171
 /* Preview background color */
172
 
173
-* [themeID="displayBackgroundColor"] {
174
-    qproperty-displayBackgroundColor: rgb(35, 38, 41);
175
+OBSQTDisplay {
176
+   qproperty-displayBackgroundColor: rgb(35, 38, 41);
177
 }
178
 
179
 /* Preview/Program labels */
180
@@ -1283,3 +1254,72 @@
181
     qproperty-hotkeysIcon: url(./Dark/settings/hotkeys.svg);
182
     qproperty-advancedIcon: url(./Dark/settings/advanced.svg);
183
 }
184
+
185
+OBSBasicSettings QListWidget::item {
186
+    padding-top: 5px;
187
+    padding-bottom: 5px;
188
+}
189
+
190
+/* Locked CheckBox */
191
+
192
+LockedCheckBox {
193
+    outline: none;
194
+    background: transparent;
195
+}
196
+
197
+LockedCheckBox::indicator {
198
+    width: 16px;
199
+    height: 16px;
200
+}
201
+
202
+LockedCheckBox::indicator:checked {
203
+    image: url(./Dark/locked.svg);
204
+}
205
+
206
+LockedCheckBox::indicator:unchecked {
207
+    image: url(:res/images/unlocked.svg);
208
+}
209
+
210
+LockedCheckBox::indicator:checked:hover {
211
+    image: url(./Dark/locked.svg);
212
+}
213
+
214
+LockedCheckBox::indicator:unchecked:hover {
215
+    image: url(:res/images/unlocked.svg);
216
+}
217
+
218
+/* Visibilty CheckBox */
219
+
220
+VisibilityCheckBox {
221
+    outline: none;
222
+    background: transparent;
223
+}
224
+
225
+VisibilityCheckBox::indicator {
226
+    width: 16px;
227
+    height: 16px;
228
+}
229
+
230
+VisibilityCheckBox::indicator:checked {
231
+    image: url(./Dark/visible.svg);
232
+}
233
+
234
+VisibilityCheckBox::indicator:unchecked {
235
+    image: url(:res/images/invisible.svg);
236
+}
237
+
238
+VisibilityCheckBox::indicator:checked:hover {
239
+    image: url(./Dark/visible.svg);
240
+}
241
+
242
+VisibilityCheckBox::indicator:unchecked:hover {
243
+    image: url(:res/images/invisible.svg);
244
+}
245
+
246
+* [themeID="trashIcon"] {
247
+    qproperty-icon: url(./Dark/trash.svg);
248
+}
249
+
250
+* [themeID="revertIcon"] {
251
+    qproperty-icon: url(./Dark/revert.svg);
252
+}
253
obs-studio-23.2.0.tar.xz/UI/data/themes/System.qss Added
208
 
1
@@ -0,0 +1,206 @@
2
+/* Intentionnally left blank */
3
+/* Themes are created using Qt CSS, you can visit */
4
+/* http://doc.qt.io/qt-5/stylesheet-reference.html and */
5
+/* http://doc.qt.io/qt-5/stylesheet-examples.html for examples. */
6
+
7
+/* OBS will use the theme filename for the settings. */
8
+/* You can ship images using relative paths in qss. */
9
+/* Dark Theme is a good place to start if you need */
10
+/* a template. */
11
+
12
+
13
+/* We need to set back the icons, or the preview wont stick. */
14
+
15
+* [themeID="addIconSmall"] {
16
+    qproperty-icon: url(:/res/images/plus.svg);
17
+}
18
+
19
+* [themeID="removeIconSmall"] {
20
+    qproperty-icon: url(:/res/images/minus.svg);
21
+}
22
+
23
+* [themeID="propertiesIconSmall"] {
24
+    qproperty-icon: url(:/settings/images/settings/general.svg);
25
+}
26
+
27
+* [themeID="configIconSmall"] {
28
+    qproperty-icon: url(:/settings/images/settings/general.svg);
29
+}
30
+
31
+* [themeID="upArrowIconSmall"] {
32
+    qproperty-icon: url(:/res/images/up.svg);
33
+}
34
+
35
+* [themeID="refreshIconSmall"] {
36
+    qproperty-icon: url(:/res/images/refresh.svg);
37
+}
38
+
39
+* [themeID="downArrowIconSmall"] {
40
+    qproperty-icon: url(:/res/images/down.svg);
41
+}
42
+
43
+MuteCheckBox {
44
+    outline: none;
45
+}
46
+
47
+MuteCheckBox::indicator:checked {
48
+    image: url(:/res/images/mute.svg);
49
+}
50
+
51
+MuteCheckBox::indicator:unchecked {
52
+    image: url(:/settings/images/settings/audio.svg);
53
+}
54
+
55
+SourceTreeSubItemCheckBox {
56
+    background: transparent;
57
+    outline: none;
58
+}
59
+
60
+SourceTreeSubItemCheckBox::indicator {
61
+    width: 10px;
62
+    height: 10px;
63
+}
64
+
65
+SourceTreeSubItemCheckBox::indicator:checked {
66
+    image: url(:/res/images/expand.svg);
67
+}
68
+
69
+SourceTreeSubItemCheckBox::indicator:unchecked {
70
+    image: url(:/res/images/down.svg);
71
+}
72
+
73
+OBSHotkeyLabel[hotkeyPairHover=true] {
74
+    color: red;
75
+}
76
+
77
+
78
+/* Volume Control */
79
+
80
+VolumeMeter {
81
+    qproperty-backgroundNominalColor: rgb(15, 100, 15);
82
+    qproperty-backgroundWarningColor: rgb(100, 100, 15);
83
+    qproperty-backgroundErrorColor: rgb(100, 15, 15);
84
+    qproperty-foregroundNominalColor: rgb(50, 200, 50);
85
+    qproperty-foregroundWarningColor: rgb(255, 200, 50);
86
+    qproperty-foregroundErrorColor: rgb(200, 50, 50);
87
+    qproperty-magnitudeColor: rgb(0, 0, 0);
88
+    qproperty-majorTickColor: rgb(0, 0, 0);
89
+    qproperty-minorTickColor: rgb(50, 50, 50);
90
+}
91
+
92
+
93
+/* Label warning/error */
94
+
95
+QLabel#warningLabel {
96
+    color: rgb(192, 128, 0);
97
+    font-weight: bold;
98
+}
99
+
100
+QLabel#errorLabel {
101
+    color: rgb(192, 0, 0);
102
+    font-weight: bold;
103
+}
104
+
105
+* [themeID="warning"] {
106
+    color: rgb(192, 128, 0);
107
+    font-weight: bold;
108
+}
109
+
110
+* [themeID="error"] {
111
+    color: rgb(192, 0, 0);
112
+    font-weight: bold;
113
+}
114
+
115
+* [themeID="good"] {
116
+    color: rgb(0, 128, 0);
117
+    font-weight: bold;
118
+}
119
+
120
+/* About dialog */
121
+
122
+* [themeID="aboutName"] {
123
+    font-size: 36px;
124
+    font-weight: bold;
125
+}
126
+
127
+* [themeID="aboutVersion"] {
128
+    font-size: 16px;
129
+    margin-bottom: 20px;
130
+}
131
+
132
+* [themeID="aboutInfo"] {
133
+    margin-bottom: 20px;
134
+}
135
+
136
+* [themeID="aboutHLayout"] {
137
+   background-color: #DCD9D7;
138
+}
139
+
140
+/* Preview background color */
141
+
142
+OBSQTDisplay {
143
+   qproperty-displayBackgroundColor: rgb(76, 76, 76);
144
+}
145
+
146
+/* Preview/Program labels */
147
+
148
+* [themeID="previewProgramLabels"] {
149
+    font-size: 18px;
150
+    font-weight: bold;
151
+    color: rgb(122,121,122);
152
+}
153
+
154
+/* Settings Icons */
155
+
156
+OBSBasicSettings {
157
+    qproperty-generalIcon: url(:settings/images/settings/general.svg);
158
+    qproperty-streamIcon: url(:settings/images/settings/stream.svg);
159
+    qproperty-outputIcon: url(:settings/images/settings/output.svg);
160
+    qproperty-audioIcon: url(:settings/images/settings/audio.svg);
161
+    qproperty-videoIcon: url(:settings/images/settings/video.svg);
162
+    qproperty-hotkeysIcon: url(:settings/images/settings/hotkeys.svg);
163
+    qproperty-advancedIcon: url(:settings/images/settings/advanced.svg);
164
+}
165
+
166
+OBSBasicSettings QListWidget::item {
167
+    padding-top: 5px;
168
+    padding-bottom: 5px;
169
+}
170
+
171
+/* Locked CheckBox */
172
+
173
+LockedCheckBox {
174
+    outline: none;
175
+    background: transparent;
176
+}
177
+
178
+LockedCheckBox::indicator:checked {
179
+    image: url(:res/images/locked.svg);
180
+}
181
+
182
+LockedCheckBox::indicator:unchecked {
183
+    image: url(:res/images/unlocked.svg);
184
+}
185
+
186
+/* Visibilty CheckBox */
187
+
188
+VisibilityCheckBox {
189
+    outline: none;
190
+    background: transparent;
191
+}
192
+
193
+VisibilityCheckBox::indicator:checked {
194
+    image: url(:res/images/visible.svg);
195
+}
196
+
197
+VisibilityCheckBox::indicator:unchecked {
198
+    image: url(:res/images/invisible.svg);
199
+}
200
+
201
+* [themeID="trashIcon"] {
202
+    qproperty-icon: url(:res/images/trash.svg);
203
+}
204
+
205
+* [themeID="revertIcon"] {
206
+    qproperty-icon: url(:res/images/revert.svg);
207
+}
208
obs-studio-23.1.0.tar.xz/UI/double-slider.cpp -> obs-studio-23.2.0.tar.xz/UI/double-slider.cpp Changed
10
 
1
@@ -2,7 +2,7 @@
2
 
3
 #include <cmath>
4
 
5
-DoubleSlider::DoubleSlider(QWidget *parent) : QSlider(parent)
6
+DoubleSlider::DoubleSlider(QWidget *parent) : SliderIgnoreScroll(parent)
7
 {
8
    connect(this, SIGNAL(valueChanged(int)),
9
            this, SLOT(intValChanged(int)));
10
obs-studio-23.1.0.tar.xz/UI/double-slider.hpp -> obs-studio-23.2.0.tar.xz/UI/double-slider.hpp Changed
12
 
1
@@ -1,8 +1,9 @@
2
 #pragma once
3
 
4
 #include <QSlider>
5
+#include "slider-ignorewheel.hpp"
6
 
7
-class DoubleSlider : public QSlider {
8
+class DoubleSlider : public SliderIgnoreScroll {
9
    Q_OBJECT
10
 
11
    double minVal, maxVal, minStep;
12
obs-studio-23.1.0.tar.xz/UI/expand-checkbox.hpp -> obs-studio-23.2.0.tar.xz/UI/expand-checkbox.hpp Changed
7
 
1
@@ -1,3 +1,5 @@
2
+#pragma once
3
+
4
 #include <QCheckBox>
5
 
6
 class ExpandCheckBox : public QCheckBox {
7
obs-studio-23.1.0.tar.xz/UI/forms/OBSAbout.ui -> obs-studio-23.2.0.tar.xz/UI/forms/OBSAbout.ui Changed
352
 
1
@@ -1,158 +1,211 @@
2
 <?xml version="1.0" encoding="UTF-8"?>
3
 <ui version="4.0">
4
  <class>OBSAbout</class>
5
- <widget class="QDialog" name="OBSAbout">
6
+ <widget class="QWidget" name="OBSAbout">
7
   <property name="geometry">
8
    <rect>
9
     <x>0</x>
10
     <y>0</y>
11
-    <width>792</width>
12
-    <height>389</height>
13
+    <width>840</width>
14
+    <height>519</height>
15
    </rect>
16
   </property>
17
   <property name="windowTitle">
18
    <string>About</string>
19
   </property>
20
-  <widget class="QLabel" name="icon">
21
-   <property name="geometry">
22
-    <rect>
23
-     <x>30</x>
24
-     <y>30</y>
25
-     <width>261</width>
26
-     <height>261</height>
27
-    </rect>
28
+  <layout class="QVBoxLayout" name="verticalLayout_2">
29
+   <property name="leftMargin">
30
+    <number>0</number>
31
    </property>
32
-   <property name="text">
33
-    <string/>
34
+   <property name="topMargin">
35
+    <number>0</number>
36
    </property>
37
-   <property name="pixmap">
38
-    <pixmap>:res/images/obs.png</pixmap>
39
+   <property name="rightMargin">
40
+    <number>0</number>
41
    </property>
42
-  </widget>
43
-  <widget class="QWidget" name="verticalLayoutWidget">
44
-   <property name="geometry">
45
-    <rect>
46
-     <x>320</x>
47
-     <y>30</y>
48
-     <width>441</width>
49
-     <height>261</height>
50
-    </rect>
51
+   <property name="bottomMargin">
52
+    <number>0</number>
53
    </property>
54
-   <layout class="QVBoxLayout" name="verticalLayout">
55
-    <property name="spacing">
56
-     <number>0</number>
57
-    </property>
58
-    <item>
59
-     <widget class="QLabel" name="name">
60
-      <property name="text">
61
-       <string>OBS Studio</string>
62
-      </property>
63
-     </widget>
64
-    </item>
65
-    <item>
66
-     <widget class="QLabel" name="version">
67
-      <property name="text">
68
-       <string>Version</string>
69
-      </property>
70
-     </widget>
71
-    </item>
72
-    <item>
73
-     <widget class="QLabel" name="info">
74
-      <property name="text">
75
-       <string>About.Info</string>
76
-      </property>
77
-      <property name="wordWrap">
78
-       <bool>true</bool>
79
-      </property>
80
-     </widget>
81
-    </item>
82
-    <item>
83
-     <widget class="QLabel" name="contribute">
84
-      <property name="text">
85
-       <string>Contribute</string>
86
-      </property>
87
-      <property name="wordWrap">
88
-       <bool>true</bool>
89
-      </property>
90
-     </widget>
91
-    </item>
92
-    <item>
93
-     <widget class="QLabel" name="donate">
94
-      <property name="text">
95
-       <string>Donate</string>
96
-      </property>
97
-     </widget>
98
-    </item>
99
-    <item>
100
-     <widget class="QLabel" name="getInvolved">
101
-      <property name="text">
102
-       <string>Get Involved</string>
103
-      </property>
104
-     </widget>
105
-    </item>
106
-    <item>
107
-     <widget class="QTextBrowser" name="textBrowser"/>
108
-    </item>
109
-    <item>
110
-     <spacer name="verticalSpacer">
111
-      <property name="orientation">
112
-       <enum>Qt::Vertical</enum>
113
-      </property>
114
-      <property name="sizeHint" stdset="0">
115
-       <size>
116
-        <width>20</width>
117
-        <height>40</height>
118
-       </size>
119
-      </property>
120
-     </spacer>
121
-    </item>
122
-   </layout>
123
-  </widget>
124
-  <widget class="QWidget" name="horizontalLayoutWidget">
125
-   <property name="geometry">
126
-    <rect>
127
-     <x>0</x>
128
-     <y>320</y>
129
-     <width>791</width>
130
-     <height>71</height>
131
-    </rect>
132
-   </property>
133
-   <layout class="QHBoxLayout" name="horizontalLayout">
134
-    <property name="spacing">
135
-     <number>0</number>
136
-    </property>
137
-    <item>
138
-     <widget class="ClickableLabel" name="about">
139
-      <property name="text">
140
-       <string>About</string>
141
-      </property>
142
-      <property name="alignment">
143
-       <set>Qt::AlignCenter</set>
144
-      </property>
145
-     </widget>
146
-    </item>
147
-    <item>
148
-     <widget class="ClickableLabel" name="authors">
149
-      <property name="text">
150
-       <string>Authors</string>
151
-      </property>
152
-      <property name="alignment">
153
-       <set>Qt::AlignCenter</set>
154
-      </property>
155
-     </widget>
156
-    </item>
157
-    <item>
158
-     <widget class="ClickableLabel" name="license">
159
-      <property name="text">
160
-       <string>License</string>
161
-      </property>
162
-      <property name="alignment">
163
-       <set>Qt::AlignCenter</set>
164
-      </property>
165
-     </widget>
166
-    </item>
167
-   </layout>
168
-  </widget>
169
+   <item>
170
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
171
+     <property name="spacing">
172
+      <number>30</number>
173
+     </property>
174
+     <property name="leftMargin">
175
+      <number>30</number>
176
+     </property>
177
+     <property name="topMargin">
178
+      <number>10</number>
179
+     </property>
180
+     <property name="rightMargin">
181
+      <number>6</number>
182
+     </property>
183
+     <property name="bottomMargin">
184
+      <number>6</number>
185
+     </property>
186
+     <item>
187
+      <widget class="QLabel" name="icon">
188
+       <property name="minimumSize">
189
+        <size>
190
+         <width>256</width>
191
+         <height>256</height>
192
+        </size>
193
+       </property>
194
+       <property name="maximumSize">
195
+        <size>
196
+         <width>256</width>
197
+         <height>256</height>
198
+        </size>
199
+       </property>
200
+       <property name="text">
201
+        <string/>
202
+       </property>
203
+       <property name="pixmap">
204
+        <pixmap>:res/images/obs.png</pixmap>
205
+       </property>
206
+       <property name="scaledContents">
207
+        <bool>true</bool>
208
+       </property>
209
+      </widget>
210
+     </item>
211
+     <item>
212
+      <layout class="QVBoxLayout" name="verticalLayout">
213
+       <property name="spacing">
214
+        <number>0</number>
215
+       </property>
216
+       <item>
217
+        <widget class="QLabel" name="name">
218
+         <property name="text">
219
+          <string notr="true">OBS Studio</string>
220
+         </property>
221
+        </widget>
222
+       </item>
223
+       <item>
224
+        <widget class="QLabel" name="version">
225
+         <property name="text">
226
+          <string notr="true">Version</string>
227
+         </property>
228
+        </widget>
229
+       </item>
230
+       <item>
231
+        <widget class="QLabel" name="info">
232
+         <property name="text">
233
+          <string>About.Info</string>
234
+         </property>
235
+         <property name="wordWrap">
236
+          <bool>true</bool>
237
+         </property>
238
+        </widget>
239
+       </item>
240
+       <item>
241
+        <widget class="QLabel" name="contribute">
242
+         <property name="text">
243
+          <string notr="true">Contribute</string>
244
+         </property>
245
+         <property name="wordWrap">
246
+          <bool>true</bool>
247
+         </property>
248
+        </widget>
249
+       </item>
250
+       <item>
251
+        <widget class="QLabel" name="donate">
252
+         <property name="text">
253
+          <string notr="true">Donate</string>
254
+         </property>
255
+        </widget>
256
+       </item>
257
+       <item>
258
+        <widget class="QLabel" name="getInvolved">
259
+         <property name="text">
260
+          <string notr="true">Get Involved</string>
261
+         </property>
262
+        </widget>
263
+       </item>
264
+       <item>
265
+        <spacer name="verticalSpacer">
266
+         <property name="orientation">
267
+          <enum>Qt::Vertical</enum>
268
+         </property>
269
+         <property name="sizeType">
270
+          <enum>QSizePolicy::Fixed</enum>
271
+         </property>
272
+         <property name="sizeHint" stdset="0">
273
+          <size>
274
+           <width>20</width>
275
+           <height>20</height>
276
+          </size>
277
+         </property>
278
+        </spacer>
279
+       </item>
280
+       <item>
281
+        <widget class="QTextBrowser" name="textBrowser">
282
+         <property name="openExternalLinks">
283
+          <bool>true</bool>
284
+         </property>
285
+        </widget>
286
+       </item>
287
+      </layout>
288
+     </item>
289
+    </layout>
290
+   </item>
291
+   <item>
292
+    <widget class="QWidget" name="widget" native="true">
293
+     <property name="minimumSize">
294
+      <size>
295
+       <width>0</width>
296
+       <height>60</height>
297
+      </size>
298
+     </property>
299
+     <layout class="QHBoxLayout" name="horizontalLayout">
300
+      <property name="spacing">
301
+       <number>0</number>
302
+      </property>
303
+      <property name="leftMargin">
304
+       <number>0</number>
305
+      </property>
306
+      <property name="topMargin">
307
+       <number>0</number>
308
+      </property>
309
+      <property name="rightMargin">
310
+       <number>0</number>
311
+      </property>
312
+      <property name="bottomMargin">
313
+       <number>0</number>
314
+      </property>
315
+      <item>
316
+       <widget class="ClickableLabel" name="about">
317
+        <property name="text">
318
+         <string>About</string>
319
+        </property>
320
+        <property name="alignment">
321
+         <set>Qt::AlignCenter</set>
322
+        </property>
323
+       </widget>
324
+      </item>
325
+      <item>
326
+       <widget class="ClickableLabel" name="authors">
327
+        <property name="text">
328
+         <string>Authors</string>
329
+        </property>
330
+        <property name="alignment">
331
+         <set>Qt::AlignCenter</set>
332
+        </property>
333
+       </widget>
334
+      </item>
335
+      <item>
336
+       <widget class="ClickableLabel" name="license">
337
+        <property name="text">
338
+         <string>License</string>
339
+        </property>
340
+        <property name="alignment">
341
+         <set>Qt::AlignCenter</set>
342
+        </property>
343
+       </widget>
344
+      </item>
345
+     </layout>
346
+    </widget>
347
+   </item>
348
+  </layout>
349
  </widget>
350
  <customwidgets>
351
   <customwidget>
352
obs-studio-23.1.0.tar.xz/UI/forms/OBSBasic.ui -> obs-studio-23.2.0.tar.xz/UI/forms/OBSBasic.ui Changed
63
 
1
@@ -67,13 +67,16 @@
2
         <item>
3
          <layout class="QVBoxLayout" name="previewTextLayout">
4
           <property name="spacing">
5
-           <number>4</number>
6
+           <number>0</number>
7
           </property>
8
           <item>
9
            <widget class="QLabel" name="previewLabel">
10
             <property name="text">
11
              <string>StudioMode.Preview</string>
12
             </property>
13
+            <property name="alignment">
14
+             <set>Qt::AlignBottom|Qt::AlignHCenter</set>
15
+            </property>
16
            </widget>
17
           </item>
18
           <item>
19
@@ -113,7 +116,7 @@
20
      <x>0</x>
21
      <y>0</y>
22
      <width>1079</width>
23
-     <height>21</height>
24
+     <height>22</height>
25
     </rect>
26
    </property>
27
    <widget class="QMenu" name="menu_File">
28
@@ -185,6 +188,8 @@
29
      <addaction name="actionFitToScreen"/>
30
      <addaction name="actionStretchToScreen"/>
31
      <addaction name="actionCenterToScreen"/>
32
+     <addaction name="actionVerticalCenter"/>
33
+     <addaction name="actionHorizontalCenter"/>
34
     </widget>
35
     <widget class="QMenu" name="orderMenu">
36
      <property name="title">
37
@@ -651,7 +656,7 @@
38
           <rect>
39
            <x>0</x>
40
            <y>0</y>
41
-           <width>80</width>
42
+           <width>64</width>
43
            <height>16</height>
44
           </rect>
45
          </property>
46
@@ -1361,6 +1366,16 @@
47
     <string>Ctrl+D</string>
48
    </property>
49
   </action>
50
+  <action name="actionVerticalCenter">
51
+   <property name="text">
52
+    <string>Basic.MainMenu.Edit.Transform.VerticalCenter</string>
53
+   </property>
54
+  </action>
55
+  <action name="actionHorizontalCenter">
56
+   <property name="text">
57
+    <string>Basic.MainMenu.Edit.Transform.HorizontalCenter</string>
58
+   </property>
59
+  </action>
60
   <action name="actionFlipHorizontal">
61
    <property name="text">
62
     <string>Basic.MainMenu.Edit.Transform.FlipHorizontal</string>
63
obs-studio-23.1.0.tar.xz/UI/forms/OBSBasicSettings.ui -> obs-studio-23.2.0.tar.xz/UI/forms/OBSBasicSettings.ui Changed
907
 
1
@@ -137,6 +137,12 @@
2
          </property>
3
          <item>
4
           <widget class="QScrollArea" name="scrollArea_2">
5
+           <property name="frameShape">
6
+             <enum>QFrame::NoFrame</enum>
7
+           </property>
8
+           <property name="frameShadow">
9
+            <enum>QFrame::Plain</enum>
10
+           </property>
11
            <property name="widgetResizable">
12
             <bool>true</bool>
13
            </property>
14
@@ -1156,6 +1162,12 @@
15
            <property name="widgetResizable">
16
             <bool>true</bool>
17
            </property>
18
+           <property name="frameShape">
19
+             <enum>QFrame::NoFrame</enum>
20
+           </property>
21
+           <property name="frameShadow">
22
+            <enum>QFrame::Plain</enum>
23
+           </property>
24
            <widget class="QWidget" name="scrollAreaWidgetContents_3">
25
             <property name="geometry">
26
              <rect>
27
@@ -1239,13 +1251,6 @@
28
               </widget>
29
              </item>
30
              <item>
31
-              <widget class="Line" name="line_2">
32
-               <property name="orientation">
33
-                <enum>Qt::Horizontal</enum>
34
-               </property>
35
-              </widget>
36
-             </item>
37
-             <item>
38
               <widget class="QStackedWidget" name="outputModePages">
39
                <property name="currentIndex">
40
                 <number>0</number>
41
@@ -2019,13 +2024,6 @@
42
                       </widget>
43
                      </item>
44
                      <item>
45
-                      <widget class="Line" name="line_3">
46
-                       <property name="orientation">
47
-                        <enum>Qt::Horizontal</enum>
48
-                       </property>
49
-                      </widget>
50
-                     </item>
51
-                     <item>
52
                       <widget class="QStackedWidget" name="stackedWidget">
53
                        <property name="currentIndex">
54
                         <number>0</number>
55
@@ -3486,13 +3484,6 @@
56
                       </widget>
57
                      </item>
58
                      <item>
59
-                      <widget class="Line" name="line_4">
60
-                       <property name="orientation">
61
-                        <enum>Qt::Horizontal</enum>
62
-                       </property>
63
-                      </widget>
64
-                     </item>
65
-                     <item>
66
                       <widget class="QGroupBox" name="advReplayBufferGroupBox">
67
                        <property name="sizePolicy">
68
                         <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
69
@@ -3601,271 +3592,475 @@
70
         </layout>
71
        </widget>
72
        <widget class="QWidget" name="audioPage">
73
-        <layout class="QFormLayout" name="formLayout">
74
-         <property name="fieldGrowthPolicy">
75
-          <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
76
+        <layout class="QVBoxLayout" name="formLayout">
77
+         <property name="leftMargin">
78
+          <number>0</number>
79
          </property>
80
-         <property name="labelAlignment">
81
-          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
82
+         <property name="topMargin">
83
+          <number>0</number>
84
          </property>
85
-         <item row="0" column="0">
86
-          <widget class="QLabel" name="label_14">
87
-           <property name="text">
88
-            <string>Basic.Settings.Audio.SampleRate</string>
89
-           </property>
90
-           <property name="buddy">
91
-            <cstring>sampleRate</cstring>
92
-           </property>
93
-          </widget>
94
-         </item>
95
-         <item row="0" column="1">
96
-          <widget class="QComboBox" name="sampleRate">
97
-           <property name="currentText">
98
-            <string notr="true">44.1khz</string>
99
-           </property>
100
-           <property name="currentIndex">
101
-            <number>0</number>
102
-           </property>
103
-           <item>
104
-            <property name="text">
105
-             <string>44.1khz</string>
106
-            </property>
107
-           </item>
108
-           <item>
109
-            <property name="text">
110
-             <string>48khz</string>
111
-            </property>
112
-           </item>
113
-          </widget>
114
-         </item>
115
-         <item row="1" column="0">
116
-          <widget class="QLabel" name="label_15">
117
-           <property name="text">
118
-            <string>Basic.Settings.Audio.Channels</string>
119
-           </property>
120
-           <property name="buddy">
121
-            <cstring>channelSetup</cstring>
122
-           </property>
123
-          </widget>
124
-         </item>
125
-         <item row="1" column="1">
126
-          <widget class="QComboBox" name="channelSetup">
127
-           <property name="currentText">
128
-            <string>Mono</string>
129
-           </property>
130
-           <property name="currentIndex">
131
-            <number>0</number>
132
-           </property>
133
-           <item>
134
-            <property name="text">
135
-             <string>Mono</string>
136
-            </property>
137
-           </item>
138
-           <item>
139
-            <property name="text">
140
-             <string>Stereo</string>
141
-            </property>
142
-           </item>
143
-           <item>
144
-            <property name="text">
145
-             <string>2.1</string>
146
-            </property>
147
-           </item>
148
-           <item>
149
-            <property name="text">
150
-             <string>4.0</string>
151
-            </property>
152
-           </item>
153
-           <item>
154
-            <property name="text">
155
-             <string>4.1</string>
156
-            </property>
157
-           </item>
158
-           <item>
159
-            <property name="text">
160
-             <string>5.1</string>
161
-            </property>
162
-           </item>
163
-           <item>
164
-            <property name="text">
165
-             <string>7.1</string>
166
-            </property>
167
-           </item>
168
-          </widget>
169
-         </item>
170
-         <item row="2" column="0">
171
-          <widget class="QLabel" name="label_2">
172
-           <property name="minimumSize">
173
-            <size>
174
-             <width>170</width>
175
-             <height>0</height>
176
-            </size>
177
-           </property>
178
-           <property name="text">
179
-            <string>Basic.Settings.Audio.DesktopDevice</string>
180
-           </property>
181
-           <property name="alignment">
182
-            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
183
-           </property>
184
-           <property name="buddy">
185
-            <cstring>desktopAudioDevice1</cstring>
186
-           </property>
187
-          </widget>
188
-         </item>
189
-         <item row="2" column="1">
190
-          <widget class="QComboBox" name="desktopAudioDevice1">
191
-           <property name="enabled">
192
-            <bool>true</bool>
193
-           </property>
194
-          </widget>
195
-         </item>
196
-         <item row="3" column="0">
197
-          <widget class="QLabel" name="label_3">
198
-           <property name="text">
199
-            <string>Basic.Settings.Audio.DesktopDevice2</string>
200
-           </property>
201
-           <property name="alignment">
202
-            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
203
-           </property>
204
-           <property name="buddy">
205
-            <cstring>desktopAudioDevice2</cstring>
206
-           </property>
207
-          </widget>
208
-         </item>
209
-         <item row="3" column="1">
210
-          <widget class="QComboBox" name="desktopAudioDevice2">
211
-           <property name="enabled">
212
-            <bool>true</bool>
213
-           </property>
214
-          </widget>
215
-         </item>
216
-         <item row="4" column="0">
217
-          <widget class="QLabel" name="label_4">
218
-           <property name="text">
219
-            <string>Basic.Settings.Audio.AuxDevice</string>
220
-           </property>
221
-           <property name="buddy">
222
-            <cstring>auxAudioDevice1</cstring>
223
-           </property>
224
-          </widget>
225
-         </item>
226
-         <item row="4" column="1">
227
-          <widget class="QComboBox" name="auxAudioDevice1">
228
-           <property name="enabled">
229
-            <bool>true</bool>
230
-           </property>
231
-          </widget>
232
-         </item>
233
-         <item row="5" column="0">
234
-          <widget class="QLabel" name="label_5">
235
-           <property name="text">
236
-            <string>Basic.Settings.Audio.AuxDevice2</string>
237
-           </property>
238
-           <property name="buddy">
239
-            <cstring>auxAudioDevice2</cstring>
240
-           </property>
241
-          </widget>
242
-         </item>
243
-         <item row="5" column="1">
244
-          <widget class="QComboBox" name="auxAudioDevice2">
245
-           <property name="enabled">
246
-            <bool>true</bool>
247
-           </property>
248
-          </widget>
249
-         </item>
250
-         <item row="6" column="0">
251
-          <widget class="QLabel" name="label_6">
252
-           <property name="text">
253
-            <string>Basic.Settings.Audio.AuxDevice3</string>
254
+         <property name="rightMargin">
255
+          <number>0</number>
256
+         </property>
257
+         <property name="bottomMargin">
258
+          <number>0</number>
259
+         </property>
260
+         <item>
261
+          <widget class="QScrollArea" name="scrollArea_50">
262
+           <property name="frameShape">
263
+             <enum>QFrame::NoFrame</enum>
264
            </property>
265
-           <property name="buddy">
266
-            <cstring>auxAudioDevice3</cstring>
267
+           <property name="frameShadow">
268
+            <enum>QFrame::Plain</enum>
269
            </property>
270
-          </widget>
271
-         </item>
272
-         <item row="6" column="1">
273
-          <widget class="QComboBox" name="auxAudioDevice3">
274
-           <property name="enabled">
275
+           <property name="widgetResizable">
276
             <bool>true</bool>
277
            </property>
278
-          </widget>
279
-         </item>
280
-         <item row="8" column="0">
281
-          <widget class="QLabel" name="label_65">
282
-           <property name="text">
283
-            <string>Basic.Settings.Audio.MeterDecayRate</string>
284
-           </property>
285
-           <property name="buddy">
286
-            <cstring>meterDecayRate</cstring>
287
-           </property>
288
-          </widget>
289
-         </item>
290
-         <item row="8" column="1">
291
-          <widget class="QComboBox" name="meterDecayRate">
292
-           <property name="currentText">
293
-            <string>Basic.Settings.Audio.MeterDecayRate.Fast</string>
294
-           </property>
295
-           <property name="currentIndex">
296
-            <number>0</number>
297
-           </property>
298
-           <item>
299
-            <property name="text">
300
-             <string>Basic.Settings.Audio.MeterDecayRate.Fast</string>
301
-            </property>
302
-           </item>
303
-           <item>
304
-            <property name="text">
305
-             <string>Basic.Settings.Audio.MeterDecayRate.Medium</string>
306
-            </property>
307
-           </item>
308
-           <item>
309
-            <property name="text">
310
-             <string>Basic.Settings.Audio.MeterDecayRate.Slow</string>
311
-            </property>
312
-           </item>
313
-          </widget>
314
-         </item>
315
-         <item row="9" column="0">
316
-          <widget class="QLabel" name="label_66">
317
-           <property name="text">
318
-            <string>Basic.Settings.Audio.PeakMeterType</string>
319
-           </property>
320
-           <property name="buddy">
321
-            <cstring>peakMeterType</cstring>
322
+           <property name="geometry">
323
+            <rect>
324
+             <x>0</x>
325
+             <y>0</y>
326
+             <width>594</width>
327
+             <height>807</height>
328
+            </rect>
329
            </property>
330
-          </widget>
331
-         </item>
332
-         <item row="9" column="1">
333
-          <widget class="QComboBox" name="peakMeterType">
334
-           <property name="currentIndex">
335
-            <number>0</number>
336
+           <property name="frameShadow">
337
+            <enum>QFrame::Plain</enum>
338
            </property>
339
-           <item>
340
-            <property name="text">
341
-             <string>Basic.Settings.Audio.PeakMeterType.SamplePeak</string>
342
-            </property>
343
-           </item>
344
-           <item>
345
-            <property name="text">
346
-             <string>Basic.Settings.Audio.PeakMeterType.TruePeak</string>
347
-            </property>
348
-           </item>
349
-          </widget>
350
-         </item>
351
-         <item row="10" column="0" colspan="2">
352
-          <widget class="QScrollArea" name="audioSourceScrollArea">
353
            <property name="widgetResizable">
354
             <bool>true</bool>
355
            </property>
356
-           <widget class="QWidget" name="audioSourceWidget">
357
+           <widget class="QWidget" name="scrollAreaWidgetContents_50">
358
             <property name="geometry">
359
              <rect>
360
               <x>0</x>
361
               <y>0</y>
362
-              <width>98</width>
363
-              <height>28</height>
364
+              <width>594</width>
365
+              <height>807</height>
366
              </rect>
367
             </property>
368
+            <layout class="QVBoxLayout" name="verticalLayout_50">
369
+             <property name="leftMargin">
370
+              <number>0</number>
371
+             </property>
372
+             <property name="topMargin">
373
+              <number>0</number>
374
+             </property>
375
+             <property name="rightMargin">
376
+              <number>0</number>
377
+             </property>
378
+             <property name="bottomMargin">
379
+              <number>9</number>
380
+             </property>
381
+             <item alignment="Qt::AlignTop">
382
+              <widget class="QWidget" name="widget_50" native="true">
383
+               <layout class="QVBoxLayout" name="verticalLayout_51">
384
+                <item>
385
+                 <widget class="QGroupBox" name="audioGeneralGroupBox">
386
+                  <property name="title">
387
+                   <string>Basic.Settings.General</string>
388
+                  </property>
389
+                  <layout class="QFormLayout" name="formLayout_52">
390
+                   <property name="fieldGrowthPolicy">
391
+                    <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
392
+                   </property>
393
+                   <property name="labelAlignment">
394
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
395
+                   </property>
396
+                   <property name="topMargin">
397
+                    <number>2</number>
398
+                   </property>
399
+                   <item row="0" column="0">
400
+                    <widget class="QLabel" name="label_14">
401
+                     <property name="minimumSize">
402
+                      <size>
403
+                       <width>170</width>
404
+                       <height>0</height>
405
+                      </size>
406
+                     </property>
407
+                     <property name="text">
408
+                      <string>Basic.Settings.Audio.SampleRate</string>
409
+                     </property>
410
+                     <property name="alignment">
411
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
412
+                     </property>
413
+                     <property name="buddy">
414
+                      <cstring>sampleRate</cstring>
415
+                     </property>
416
+                    </widget>
417
+                   </item>
418
+                   <item row="0" column="1">
419
+                    <widget class="QComboBox" name="sampleRate">
420
+                     <property name="currentText">
421
+                      <string notr="true">44.1khz</string>
422
+                     </property>
423
+                     <property name="currentIndex">
424
+                      <number>0</number>
425
+                     </property>
426
+                     <item>
427
+                      <property name="text">
428
+                       <string>44.1khz</string>
429
+                      </property>
430
+                     </item>
431
+                     <item>
432
+                      <property name="text">
433
+                       <string>48khz</string>
434
+                      </property>
435
+                     </item>
436
+                    </widget>
437
+                   </item>
438
+                   <item row="1" column="0">
439
+                    <widget class="QLabel" name="label_15">
440
+                     <property name="text">
441
+                      <string>Basic.Settings.Audio.Channels</string>
442
+                     </property>
443
+                     <property name="buddy">
444
+                      <cstring>channelSetup</cstring>
445
+                     </property>
446
+                    </widget>
447
+                   </item>
448
+                   <item row="1" column="1">
449
+                    <widget class="QComboBox" name="channelSetup">
450
+                     <property name="currentText">
451
+                      <string>Mono</string>
452
+                     </property>
453
+                     <property name="currentIndex">
454
+                      <number>0</number>
455
+                     </property>
456
+                     <item>
457
+                      <property name="text">
458
+                       <string>Mono</string>
459
+                      </property>
460
+                     </item>
461
+                     <item>
462
+                      <property name="text">
463
+                       <string>Stereo</string>
464
+                      </property>
465
+                     </item>
466
+                     <item>
467
+                      <property name="text">
468
+                       <string>2.1</string>
469
+                      </property>
470
+                     </item>
471
+                     <item>
472
+                      <property name="text">
473
+                       <string>4.0</string>
474
+                      </property>
475
+                     </item>
476
+                     <item>
477
+                      <property name="text">
478
+                       <string>4.1</string>
479
+                      </property>
480
+                     </item>
481
+                     <item>
482
+                      <property name="text">
483
+                       <string>5.1</string>
484
+                      </property>
485
+                     </item>
486
+                     <item>
487
+                      <property name="text">
488
+                       <string>7.1</string>
489
+                      </property>
490
+                     </item>
491
+                    </widget>
492
+                   </item>
493
+                  </layout>
494
+                 </widget>
495
+                </item>
496
+                <item>
497
+                 <widget class="QGroupBox" name="audioDevicesGroupBox">
498
+                  <property name="title">
499
+                   <string>Basic.Settings.Audio.Devices</string>
500
+                  </property>
501
+                  <layout class="QFormLayout" name="formLayout_53">
502
+                   <property name="fieldGrowthPolicy">
503
+                    <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
504
+                   </property>
505
+                   <property name="labelAlignment">
506
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
507
+                   </property>
508
+                   <property name="topMargin">
509
+                    <number>2</number>
510
+                   </property>
511
+                   <item row="0" column="0">
512
+                    <widget class="QLabel" name="label_2">
513
+                     <property name="minimumSize">
514
+                      <size>
515
+                       <width>170</width>
516
+                       <height>0</height>
517
+                      </size>
518
+                     </property>
519
+                     <property name="text">
520
+                      <string>Basic.Settings.Audio.DesktopDevice</string>
521
+                     </property>
522
+                     <property name="alignment">
523
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
524
+                     </property>
525
+                     <property name="buddy">
526
+                      <cstring>desktopAudioDevice1</cstring>
527
+                     </property>
528
+                    </widget>
529
+                   </item>
530
+                   <item row="0" column="1">
531
+                    <widget class="QComboBox" name="desktopAudioDevice1">
532
+                     <property name="enabled">
533
+                      <bool>true</bool>
534
+                     </property>
535
+                    </widget>
536
+                   </item>
537
+                   <item row="1" column="0">
538
+                    <widget class="QLabel" name="label_3">
539
+                     <property name="text">
540
+                      <string>Basic.Settings.Audio.DesktopDevice2</string>
541
+                     </property>
542
+                     <property name="alignment">
543
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
544
+                     </property>
545
+                     <property name="buddy">
546
+                      <cstring>desktopAudioDevice2</cstring>
547
+                     </property>
548
+                    </widget>
549
+                   </item>
550
+                   <item row="1" column="1">
551
+                    <widget class="QComboBox" name="desktopAudioDevice2">
552
+                     <property name="enabled">
553
+                      <bool>true</bool>
554
+                     </property>
555
+                    </widget>
556
+                   </item>
557
+                   <item row="2" column="0">
558
+                    <widget class="QLabel" name="label_4">
559
+                     <property name="text">
560
+                      <string>Basic.Settings.Audio.AuxDevice</string>
561
+                     </property>
562
+                     <property name="buddy">
563
+                      <cstring>auxAudioDevice1</cstring>
564
+                     </property>
565
+                    </widget>
566
+                   </item>
567
+                   <item row="2" column="1">
568
+                    <widget class="QComboBox" name="auxAudioDevice1">
569
+                     <property name="enabled">
570
+                      <bool>true</bool>
571
+                     </property>
572
+                    </widget>
573
+                   </item>
574
+                   <item row="3" column="0">
575
+                    <widget class="QLabel" name="label_5">
576
+                     <property name="text">
577
+                      <string>Basic.Settings.Audio.AuxDevice2</string>
578
+                     </property>
579
+                     <property name="buddy">
580
+                      <cstring>auxAudioDevice2</cstring>
581
+                     </property>
582
+                    </widget>
583
+                   </item>
584
+                   <item row="3" column="1">
585
+                    <widget class="QComboBox" name="auxAudioDevice2">
586
+                     <property name="enabled">
587
+                      <bool>true</bool>
588
+                     </property>
589
+                    </widget>
590
+                   </item>
591
+                   <item row="4" column="0">
592
+                    <widget class="QLabel" name="label_6">
593
+                     <property name="text">
594
+                      <string>Basic.Settings.Audio.AuxDevice3</string>
595
+                     </property>
596
+                     <property name="buddy">
597
+                      <cstring>auxAudioDevice3</cstring>
598
+                     </property>
599
+                    </widget>
600
+                   </item>
601
+                   <item row="4" column="1">
602
+                    <widget class="QComboBox" name="auxAudioDevice3">
603
+                     <property name="enabled">
604
+                      <bool>true</bool>
605
+                     </property>
606
+                    </widget>
607
+                   </item>
608
+                   <item row="5" column="1">
609
+                    <widget class="QComboBox" name="auxAudioDevice4">
610
+                     <property name="enabled">
611
+                      <bool>true</bool>
612
+                     </property>
613
+                    </widget>
614
+                   </item>
615
+                   <item row="5" column="0">
616
+                    <widget class="QLabel" name="label_67">
617
+                     <property name="text">
618
+                      <string>Basic.Settings.Audio.AuxDevice4</string>
619
+                     </property>
620
+                     <property name="buddy">
621
+                      <cstring>auxAudioDevice4</cstring>
622
+                     </property>
623
+                    </widget>
624
+                   </item>
625
+                  </layout>
626
+                 </widget>
627
+                </item>
628
+                <item>
629
+                 <widget class="QGroupBox" name="audioMetersGroupBox">
630
+                  <property name="title">
631
+                   <string>Basic.Settings.Audio.Meters</string>
632
+                  </property>
633
+                  <layout class="QFormLayout" name="formLayout_54">
634
+                   <property name="fieldGrowthPolicy">
635
+                    <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
636
+                   </property>
637
+                   <property name="labelAlignment">
638
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
639
+                   </property>
640
+                   <property name="topMargin">
641
+                    <number>2</number>
642
+                   </property>
643
+                   <item row="0" column="0">
644
+                    <widget class="QLabel" name="label_65">
645
+                     <property name="minimumSize">
646
+                      <size>
647
+                       <width>170</width>
648
+                       <height>0</height>
649
+                      </size>
650
+                     </property>
651
+                     <property name="text">
652
+                      <string>Basic.Settings.Audio.MeterDecayRate</string>
653
+                     </property>
654
+                     <property name="alignment">
655
+                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
656
+                     </property>
657
+                     <property name="buddy">
658
+                      <cstring>meterDecayRate</cstring>
659
+                     </property>
660
+                    </widget>
661
+                   </item>
662
+                   <item row="0" column="1">
663
+                    <widget class="QComboBox" name="meterDecayRate">
664
+                     <property name="currentText">
665
+                      <string>Basic.Settings.Audio.MeterDecayRate.Fast</string>
666
+                     </property>
667
+                     <property name="currentIndex">
668
+                      <number>0</number>
669
+                     </property>
670
+                     <item>
671
+                      <property name="text">
672
+                       <string>Basic.Settings.Audio.MeterDecayRate.Fast</string>
673
+                      </property>
674
+                     </item>
675
+                     <item>
676
+                      <property name="text">
677
+                       <string>Basic.Settings.Audio.MeterDecayRate.Medium</string>
678
+                      </property>
679
+                     </item>
680
+                     <item>
681
+                      <property name="text">
682
+                       <string>Basic.Settings.Audio.MeterDecayRate.Slow</string>
683
+                      </property>
684
+                     </item>
685
+                    </widget>
686
+                   </item>
687
+                   <item row="1" column="0">
688
+                    <widget class="QLabel" name="label_66">
689
+                     <property name="text">
690
+                      <string>Basic.Settings.Audio.PeakMeterType</string>
691
+                     </property>
692
+                     <property name="buddy">
693
+                      <cstring>peakMeterType</cstring>
694
+                     </property>
695
+                    </widget>
696
+                   </item>
697
+                   <item row="1" column="1">
698
+                    <widget class="QComboBox" name="peakMeterType">
699
+                     <property name="currentIndex">
700
+                      <number>0</number>
701
+                     </property>
702
+                     <item>
703
+                      <property name="text">
704
+                       <string>Basic.Settings.Audio.PeakMeterType.SamplePeak</string>
705
+                      </property>
706
+                     </item>
707
+                     <item>
708
+                      <property name="text">
709
+                       <string>Basic.Settings.Audio.PeakMeterType.TruePeak</string>
710
+                      </property>
711
+                     </item>
712
+                    </widget>
713
+                   </item>
714
+                  </layout>
715
+                 </widget>
716
+                </item>
717
+                <item>
718
+                 <widget class="QGroupBox" name="audioAdvGroupBox">
719
+                  <property name="title">
720
+                   <string>Basic.Settings.Advanced</string>
721
+                  </property>
722
+                  <layout class="QFormLayout" name="formLayout_56">
723
+                   <property name="fieldGrowthPolicy">
724
+                    <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
725
+                   </property>
726
+                   <property name="labelAlignment">
727
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
728
+                   </property>
729
+                   <property name="topMargin">
730
+                    <number>2</number>
731
+                   </property>
732
+                   <item row="0" column="0">
733
+                    <widget class="QLabel" name="monitoringDeviceLabel">
734
+                     <property name="text">
735
+                      <string>Basic.Settings.Advanced.Audio.MonitoringDevice</string>
736
+                     </property>
737
+                     <property name="buddy">
738
+                      <cstring>monitoringDevice</cstring>
739
+                     </property>
740
+                    </widget>
741
+                   </item>
742
+                   <item row="0" column="1">
743
+                    <widget class="QComboBox" name="monitoringDevice"/>
744
+                   </item>
745
+                   <item row="1" column="0">
746
+                    <spacer name="horizontalSpacer_11">
747
+                     <property name="orientation">
748
+                      <enum>Qt::Horizontal</enum>
749
+                     </property>
750
+                     <property name="sizeHint" stdset="0">
751
+                      <size>
752
+                       <width>170</width>
753
+                       <height>20</height>
754
+                      </size>
755
+                     </property>
756
+                    </spacer>
757
+                   </item>
758
+                   <item row="1" column="1">
759
+                    <widget class="QCheckBox" name="disableAudioDucking">
760
+                     <property name="text">
761
+                      <string>Basic.Settings.Advanced.Audio.DisableAudioDucking</string>
762
+                     </property>
763
+                    </widget>
764
+                   </item>
765
+                  </layout>
766
+                 </widget>
767
+                </item>
768
+                <item>
769
+                 <widget class="QGroupBox" name="audioHotkeysGroupBox">
770
+                  <property name="title">
771
+                   <string>Basic.Settings.Hotkeys</string>
772
+                  </property>
773
+                  <layout class="QFormLayout" name="audioSourceLayout">
774
+                   <property name="fieldGrowthPolicy">
775
+                    <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
776
+                   </property>
777
+                   <property name="labelAlignment">
778
+                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
779
+                   </property>
780
+                   <property name="topMargin">
781
+                    <number>2</number>
782
+                   </property>
783
+                  </layout>
784
+                 </widget>
785
+                </item>
786
+               </layout>
787
+              </widget>
788
+             </item>
789
+            </layout>
790
            </widget>
791
           </widget>
792
          </item>
793
@@ -3895,36 +4090,6 @@
794
            </property>
795
           </widget>
796
          </item>
797
-         <item row="13" column="1">
798
-          <spacer name="verticalSpacer_3">
799
-           <property name="orientation">
800
-            <enum>Qt::Vertical</enum>
801
-           </property>
802
-           <property name="sizeHint" stdset="0">
803
-            <size>
804
-             <width>20</width>
805
-             <height>40</height>
806
-            </size>
807
-           </property>
808
-          </spacer>
809
-         </item>
810
-         <item row="7" column="1">
811
-          <widget class="QComboBox" name="auxAudioDevice4">
812
-           <property name="enabled">
813
-            <bool>true</bool>
814
-           </property>
815
-          </widget>
816
-         </item>
817
-         <item row="7" column="0">
818
-          <widget class="QLabel" name="label_67">
819
-           <property name="text">
820
-            <string>Basic.Settings.Audio.AuxDevice4</string>
821
-           </property>
822
-           <property name="buddy">
823
-            <cstring>auxAudioDevice4</cstring>
824
-           </property>
825
-          </widget>
826
-         </item>
827
         </layout>
828
        </widget>
829
        <widget class="QWidget" name="videoPage">
830
@@ -4554,57 +4719,6 @@
831
                  </widget>
832
                 </item>
833
                 <item>
834
-                 <widget class="QGroupBox" name="advAudioGroupBox">
835
-                  <property name="title">
836
-                   <string>Basic.Settings.Audio</string>
837
-                  </property>
838
-                  <layout class="QFormLayout" name="formLayout_27">
839
-                   <property name="fieldGrowthPolicy">
840
-                    <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
841
-                   </property>
842
-                   <property name="labelAlignment">
843
-                    <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
844
-                   </property>
845
-                   <property name="topMargin">
846
-                    <number>2</number>
847
-                   </property>
848
-                   <item row="0" column="0">
849
-                    <widget class="QLabel" name="monitoringDeviceLabel">
850
-                     <property name="text">
851
-                      <string>Basic.Settings.Advanced.Audio.MonitoringDevice</string>
852
-                     </property>
853
-                     <property name="buddy">
854
-                      <cstring>monitoringDevice</cstring>
855
-                     </property>
856
-                    </widget>
857
-                   </item>
858
-                   <item row="0" column="1">
859
-                    <widget class="QComboBox" name="monitoringDevice"/>
860
-                   </item>
861
-                   <item row="1" column="1">
862
-                    <widget class="QCheckBox" name="disableAudioDucking">
863
-                     <property name="text">
864
-                      <string>Basic.Settings.Advanced.Audio.DisableAudioDucking</string>
865
-                     </property>
866
-                    </widget>
867
-                   </item>
868
-                   <item row="1" column="0">
869
-                    <spacer name="horizontalSpacer_11">
870
-                     <property name="orientation">
871
-                      <enum>Qt::Horizontal</enum>
872
-                     </property>
873
-                     <property name="sizeHint" stdset="0">
874
-                      <size>
875
-                       <width>170</width>
876
-                       <height>20</height>
877
-                      </size>
878
-                     </property>
879
-                    </spacer>
880
-                   </item>
881
-                  </layout>
882
-                 </widget>
883
-                </item>
884
-                <item>
885
                  <widget class="QGroupBox" name="groupBox_6">
886
                   <property name="title">
887
                    <string>Basic.Settings.Output.Adv.Recording</string>
888
@@ -5262,7 +5376,8 @@
889
   <tabstop>auxAudioDevice4</tabstop>
890
   <tabstop>meterDecayRate</tabstop>
891
   <tabstop>peakMeterType</tabstop>
892
-  <tabstop>audioSourceScrollArea</tabstop>
893
+  <tabstop>monitoringDevice</tabstop>
894
+  <tabstop>disableAudioDucking</tabstop>
895
   <tabstop>baseResolution</tabstop>
896
   <tabstop>outputResolution</tabstop>
897
   <tabstop>downscaleFilter</tabstop>
898
@@ -5280,8 +5395,6 @@
899
   <tabstop>colorRange</tabstop>
900
   <tabstop>disableOSXVSync</tabstop>
901
   <tabstop>resetOSXVSync</tabstop>
902
-  <tabstop>monitoringDevice</tabstop>
903
-  <tabstop>disableAudioDucking</tabstop>
904
   <tabstop>filenameFormatting</tabstop>
905
   <tabstop>overwriteIfExists</tabstop>
906
   <tabstop>autoRemux</tabstop>
907
obs-studio-23.2.0.tar.xz/UI/forms/images/down.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-chevron-down" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline transform="matrix(1.7072 0 0 1.7538 -8.5187 -9.0369)" points="6 9 12 15 18 9"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/forms/images/expand.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-chevron-down" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline transform="matrix(0 -1.7072 1.7538 0 -9.0782 32.495)" points="6 9 12 15 18 9"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/forms/images/invisible.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m14.822 2.7361a0.50028 0.43099 0 1 0 -0.707 -0.60995l-2.11 1.8178c-1.115-0.66595-2.44-1.1458-3.945-1.1458-5.06 0-8.06 5.1691-8.06 5.1691s1.162 2.0013 3.258 3.5132l-2.064 1.779a0.5 0.43076 0 1 0 0.707 0.60909zm-9.962 7.3651 1.432-1.2345a1.999 1.7222 0 0 1 -0.292 -0.90028c0-0.95628 0.89-1.723 2-1.723 0.384 0 0.741 0.09132 1.045 0.25156l1.433-1.2345a3.98 3.4288 0 0 0 -2.478 -0.74004c-2.2 0-4 1.5507-4 3.446 0 0.8081 0.321 1.549 0.859 2.1348zm7.005-3.0273 1.993-1.7161a14.873 12.813 0 0 1 2.142 2.6087s-3 5.1691-7.94 5.1691a6.609 5.6937 0 0 1 -2.661 -0.49106l1.565-1.3491c0.33 0.07668 0.678 0.11717 1.036 0.11717 2.22 0 4-1.5335 4-3.446 0-0.30842-0.047-0.60737-0.136-0.89253zm-2.527 2.1762 0.152-0.13009a1.996 1.7196 0 0 1 -0.152 0.13009z" fill="#807f80" fill-rule="evenodd" stroke-width=".92818"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/forms/images/locked.svg Added
8
 
1
@@ -0,0 +1,6 @@
2
+<?xml version="1.0" encoding="UTF-8"?>
3
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16pt" height="16pt" viewBox="0 0 16 16" version="1.1">
4
+<g id="surface1">
5
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 8 1 C 5.800781 1 4 2.800781 4 5 L 4 7 L 2 7 L 2 15 L 14 15 L 14 7 L 12 7 L 12 5 C 12 2.800781 10.199219 1 8 1 Z M 8 3 C 9.121094 3 10 3.878906 10 5 L 10 7 L 6 7 L 6 5 C 6 3.878906 6.878906 3 8 3 Z M 8 3 "/>
6
+</g>
7
+</svg>
8
obs-studio-23.2.0.tar.xz/UI/forms/images/minus.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-plus" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><line x1="1.5187" x2="22.481" y1="12" y2="12" stroke-width="2.4473"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/forms/images/mute.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-volume-x" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19" fill="#d40000" stroke="#d40000" stroke-opacity="1"/><line x1="23" x2="17" y1="9" y2="15" stroke="#d40000" stroke-opacity="1"/><line x1="17" x2="23" y1="9" y2="15" fill="#d40000" stroke="#d40000" stroke-opacity="1"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/forms/images/no_sources.svg Added
20
 
1
@@ -0,0 +1,18 @@
2
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
3
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+<svg width="125" height="40" viewBox="0 0 125 40" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
5
+    <g transform="matrix(1.3524,0,0,1.3524,-40.8078,-17.9807)">
6
+        <g transform="matrix(0.0855581,0,0,0.0855581,29.3907,17.4063)">
7
+            <path d="M128,80L160,80L160,112L128,112L128,80ZM224,72L224,224C224,232.8 216.8,240 208,240L48,240C39.2,240 32,232.8 32,224L32,32C32,23.2 39.2,16 48,16L168,16L224,72ZM208,80L160,32L48,32L48,208L96,128L128,192L160,160L208,208L208,80Z" style="fill:#000000;"/>
8
+        </g>
9
+        <g transform="matrix(0.0859541,0,0,0.0859541,98.7496,17.3555)">
10
+            <path d="M240,48L112,48C112,39.2 104.8,32 96,32L32,32C23.2,32 16,39.2 16,48C7.2,48 0,55.2 0,64L0,208C0,216.8 7.2,224 16,224L240,224C248.8,224 256,216.8 256,208L256,64C256,55.2 248.8,48 240,48ZM96,80L32,80L32,64L96,64L96,80ZM168,192C136.96,192 112,167.04 112,136C112,104.96 136.96,80 168,80C199.04,80 224,104.96 224,136C224,167.04 199.04,192 168,192ZM208,136C208,158.08 189.92,176 168,176C146.08,176 128,157.92 128,136C128,114.08 146.08,96 168,96C189.92,96 208,114.08 208,136Z" style="fill:#000000;"/>
11
+        </g>
12
+        <g transform="matrix(0.0855581,0,0,0.0855581,75.3166,17.4063)">
13
+            <path d="M128,16C66.24,16 16,66.24 16,128C16,189.76 66.24,240 128,240C135.68,240 143.04,239.2 150.08,237.76C147.36,236.48 146.88,226.08 149.76,220.32C152.8,213.76 162.72,197.12 152.96,191.52C143.2,185.92 145.92,183.52 140,176.96C134.08,170.4 136.48,169.44 136,167.68C134.72,162.24 141.76,153.44 142.24,152.64C142.56,151.68 142.56,148.32 142.24,147.36C142.24,146.08 137.92,143.84 136.8,143.68C135.84,143.68 135.04,145.44 133.6,145.76C132.16,146.08 125.6,141.76 124.16,140.48C122.72,139.2 121.92,136.8 119.84,135.04C117.76,132.96 117.6,134.56 114.56,133.28C111.52,132 101.76,128.32 94.08,125.6C86.4,122.56 85.76,118.08 85.76,115.04C85.44,111.84 80.96,107.52 79.04,104.32C76.8,101.12 76.48,96.8 75.84,97.76C75.2,98.72 79.84,110.24 79.04,110.72C78.24,111.04 76.48,107.52 74.24,104.64C72,101.6 76.48,103.2 69.44,89.44C62.4,75.68 71.68,68.64 72.16,61.44C72.64,54.24 78.24,64.16 75.2,59.36C72.16,54.56 75.2,45.12 72.96,41.6C70.88,38.08 58.88,45.6 58.88,45.6C59.2,42.08 69.92,36.32 77.44,30.88C84.96,25.44 89.92,29.92 96,31.68C102.24,33.76 102.56,33.12 100.48,30.88C98.4,28.8 101.44,28.16 106.24,28.8C110.72,29.6 112.32,35.36 119.52,34.56C127.04,34.08 120.32,36 121.28,38.08C122.24,40.16 120.32,39.84 115.2,42.88C110.4,46.08 115.52,46.4 124,52.64C132.48,58.88 130.08,48.64 128.96,43.84C127.84,39.04 135.2,42.88 135.2,42.88C140.48,46.4 139.52,43.2 143.2,44.16C146.88,45.12 157.76,54.4 157.76,54.4C144.48,61.44 152.8,62.08 155.04,63.84C157.28,65.6 150.56,68.64 150.56,68.64C147.84,65.92 147.52,68.96 145.76,69.92C144,70.88 145.44,73.44 145.44,73.44C136.48,74.88 138.4,84.48 138.72,86.72C138.72,88.96 132.64,92.48 131.2,96C129.76,99.2 135.2,106.24 132.16,106.56C129.12,107.04 126.72,96 111.2,100C106.4,101.28 96.16,106.56 101.76,117.28C107.52,128.32 116.48,114.24 119.52,115.84C122.56,117.44 118.56,124.32 119.2,124.64C119.84,124.96 127.68,124.96 128.16,134.4C128.64,143.84 140.48,142.88 142.88,143.2C145.6,143.2 154.08,136.16 155.2,136C156.16,135.52 161.28,131.52 171.68,137.44C182.24,143.2 187.36,142.4 190.88,144.96C194.4,147.52 192.16,152.48 195.36,154.24C198.56,156 212.32,153.76 215.84,159.2C219.36,164.64 201.76,192.64 196.32,195.68C190.88,198.72 188.64,205.92 182.88,210.4C177.12,214.88 169.92,220.64 162.56,224.96C156,228.64 155.04,235.52 152,237.76C202.24,226.56 239.68,181.76 239.68,128.32C239.68,66.56 189.44,16.32 127.68,16.32L128,16ZM154.24,120.96C152.8,121.44 149.76,124.48 141.76,119.68C134.08,114.88 128.8,116 128,115.2C128,115.2 127.2,113.44 130.72,112.96C137.76,112.16 146.4,119.52 148.48,119.52C150.56,119.52 151.52,117.44 155.04,118.72C158.56,120 155.84,120.8 154.24,120.96ZM117.44,27.2C116.64,26.72 117.92,25.92 118.88,24.96C119.36,24.48 119.2,23.2 119.68,22.72C121.44,20.96 129.44,18.72 128,23.2C126.24,27.52 118.72,28 117.44,27.2ZM137.12,41.44C134.08,41.12 127.84,40.64 128.8,39.2C133.6,34.72 127.36,33.12 123.36,33.12C119.36,32.8 117.92,30.56 119.84,30.08C121.76,29.6 129.6,30.4 131.04,31.36C132.32,32.32 139.36,35.36 139.84,37.44C140.16,39.52 139.84,41.44 137.12,41.44ZM160.64,40.64C158.4,42.08 147.36,34.08 145.44,32.32C136.48,24.64 131.2,27.36 129.44,25.76C127.68,24.16 128.16,22.72 131.2,20.32C134.24,17.92 142.24,21.28 147.2,21.76C152,22.24 157.76,26.08 157.76,30.56C158.08,34.56 163.04,38.56 160.8,40.64L160.64,40.64Z" style="fill:#000000;"/>
14
+        </g>
15
+        <g transform="matrix(0.0914992,0,0,0.0914992,51.1921,15.9137)">
16
+            <path d="M240,32L16,32C7.2,32 0,39.2 0,48L0,192C0,200.8 7.2,208 16,208L101.44,208C97.44,217.76 87.68,230.24 64,240L192,240C168.32,230.24 158.56,217.76 154.56,208L240,208C248.8,208 256,200.8 256,192L256,48C256,39.2 248.8,32 240,32ZM240,176L16,176L16,48L240,48L240,176Z" style="fill:#000000;"/>
17
+        </g>
18
+    </g>
19
+</svg>
20
obs-studio-23.2.0.tar.xz/UI/forms/images/plus.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-plus" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><line x1="12" x2="12" y1="1.5187" y2="22.481" stroke-width="2.4473"/><line x1="1.5187" x2="22.481" y1="12" y2="12" stroke-width="2.4473"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/forms/images/refresh.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-refresh-ccw"><polyline points="1 4 1 10 7 10"></polyline><polyline points="23 20 23 14 17 14"></polyline><path d="M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"></path></svg>
3
obs-studio-23.2.0.tar.xz/UI/forms/images/revert.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-rotate-ccw"><polyline points="1 4 1 10 7 10"></polyline><path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"></path></svg>
3
obs-studio-23.1.0.tar.xz/UI/forms/images/settings/advanced.svg -> obs-studio-23.2.0.tar.xz/UI/forms/images/settings/advanced.svg Changed
5
 
1
@@ -1,1 +1,1 @@
2
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M4.48 7.27c.26.26 1.28 1.33 1.28 1.33l.56-.58-.88-.91 1.69-1.8s-.76-.74-.43-.45c.32-1.19.03-2.51-.87-3.44C4.93.5 3.66.2 2.52.51l1.93 2-.51 1.96-1.89.52-1.93-2C-.19 4.17.1 5.48 1 6.4c.94.98 2.29 1.26 3.48.87zm6.44 1.94l-2.33 2.3 3.84 3.98c.31.33.73.49 1.14.49.41 0 .82-.16 1.14-.49.63-.65.63-1.7 0-2.35l-3.79-3.93zM16 2.53L13.55 0 6.33 7.46l.88.91-4.31 4.46-.99.53-1.39 2.27.35.37 2.2-1.44.51-1.02L7.9 9.08l.88.91L16 2.53z"/></svg>
3
\ No newline at end of file
4
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="#000000" d="M4.48 7.27c.26.26 1.28 1.33 1.28 1.33l.56-.58-.88-.91 1.69-1.8s-.76-.74-.43-.45c.32-1.19.03-2.51-.87-3.44C4.93.5 3.66.2 2.52.51l1.93 2-.51 1.96-1.89.52-1.93-2C-.19 4.17.1 5.48 1 6.4c.94.98 2.29 1.26 3.48.87zm6.44 1.94l-2.33 2.3 3.84 3.98c.31.33.73.49 1.14.49.41 0 .82-.16 1.14-.49.63-.65.63-1.7 0-2.35l-3.79-3.93zM16 2.53L13.55 0 6.33 7.46l.88.91-4.31 4.46-.99.53-1.39 2.27.35.37 2.2-1.44.51-1.02L7.9 9.08l.88.91L16 2.53z"/></svg>
5
obs-studio-23.1.0.tar.xz/UI/forms/images/settings/audio.svg -> obs-studio-23.2.0.tar.xz/UI/forms/images/settings/audio.svg Changed
5
 
1
@@ -1,1 +1,1 @@
2
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M12 8.02c0 1.09-.45 2.09-1.17 2.83l-.67-.67c.55-.56.89-1.31.89-2.16 0-.85-.34-1.61-.89-2.16l.67-.67A3.99 3.99 0 0 1 12 8.02zM7.72 2.28L4 6H2c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2l3.72 3.72c.47.47 1.28.14 1.28-.53V2.81c0-.67-.81-1-1.28-.53zm5.94.08l-.67.67a6.996 6.996 0 0 1 2.06 4.98c0 1.94-.78 3.7-2.06 4.98l.67.67A7.973 7.973 0 0 0 16 8c0-2.22-.89-4.22-2.34-5.66v.02zm-1.41 1.41l-.69.67a5.05 5.05 0 0 1 1.48 3.58c0 1.39-.56 2.66-1.48 3.56l.69.67A5.971 5.971 0 0 0 14 8.02c0-1.65-.67-3.16-1.75-4.25z"/></svg>
3
\ No newline at end of file
4
+<svg class="feather feather-volume-2" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19" fill="#000000" stroke="#000000"/><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07" stroke="#000000"/></svg>
5
obs-studio-23.1.0.tar.xz/UI/forms/images/settings/general.svg -> obs-studio-23.2.0.tar.xz/UI/forms/images/settings/general.svg Changed
64
 
1
@@ -1,61 +1,1 @@
2
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
3
-<svg
4
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
5
-   xmlns:cc="http://creativecommons.org/ns#"
6
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7
-   xmlns:svg="http://www.w3.org/2000/svg"
8
-   xmlns="http://www.w3.org/2000/svg"
9
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11
-   width="16"
12
-   height="16"
13
-   viewBox="0 0 32 32"
14
-   version="1.1"
15
-   id="svg5"
16
-   sodipodi:docname="general2.svg"
17
-   inkscape:version="0.92.3 (2405546, 2018-03-11)">
18
-  <metadata
19
-     id="metadata11">
20
-    <rdf:RDF>
21
-      <cc:Work
22
-         rdf:about="">
23
-        <dc:format>image/svg+xml</dc:format>
24
-        <dc:type
25
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
26
-        <dc:title></dc:title>
27
-      </cc:Work>
28
-    </rdf:RDF>
29
-  </metadata>
30
-  <defs
31
-     id="defs9" />
32
-  <sodipodi:namedview
33
-     pagecolor="#ffffff"
34
-     bordercolor="#666666"
35
-     borderopacity="1"
36
-     objecttolerance="10"
37
-     gridtolerance="10"
38
-     guidetolerance="10"
39
-     inkscape:pageopacity="0"
40
-     inkscape:pageshadow="2"
41
-     inkscape:window-width="1920"
42
-     inkscape:window-height="998"
43
-     id="namedview7"
44
-     showgrid="false"
45
-     inkscape:zoom="5.53125"
46
-     inkscape:cx="21.333333"
47
-     inkscape:cy="21.333333"
48
-     inkscape:window-x="0"
49
-     inkscape:window-y="0"
50
-     inkscape:window-maximized="1"
51
-     inkscape:current-layer="svg5" />
52
-  <g
53
-     id="surface1"
54
-     style="fill:#000000"
55
-     transform="matrix(1,0,0,1.1456034,0,-2.3279489)">
56
-    <path
57
-       style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
58
-       d="M 32,17.542969 V 14.339844 L 27.566406,13.058594 26.539062,10.878906 28.546875,7.203125 25.964844,4.941406 21.828125,6.761719 19.335938,5.859375 17.761719,2.019531 H 14.101562 L 12.664062,5.898438 10.125,6.796875 5.921875,5.042969 3.335938,7.296875 l 2.082031,3.625 -1.03125,2.179687 L 0,14.457031 v 3.183594 l 4.433594,1.28125 1.027344,2.179687 -2.007813,3.679688 2.582031,2.261719 4.136719,-1.824219 2.492187,0.902344 1.574219,3.835937 H 17.875 l 1.4375,-3.878906 2.539062,-0.898437 4.207032,1.761718 2.582031,-2.261718 -2.101563,-3.621094 1.074219,-2.179688 L 32,17.5 Z M 16,22 c -3.792969,0 -6.855469,-2.679688 -6.855469,-6 0,-3.320312 3.0625,-6 6.855469,-6 3.792969,0 6.855469,2.679688 6.855469,6 0,3.320312 -3.0625,6 -6.855469,6 z m 0,0"
59
-       id="path2"
60
-       inkscape:connector-curvature="0" />
61
-  </g>
62
-</svg>
63
+<svg width="16" height="16" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(1 0 0 1.1456 0 -2.3279)" fill="#000000"><path d="m32 17.543v-3.2031l-4.4336-1.2812-1.0273-2.1797 2.0078-3.6758-2.582-2.2617-4.1367 1.8203-2.4922-0.90234-1.5742-3.8398h-3.6602l-1.4375 3.8789-2.5391 0.89844-4.2031-1.7539-2.5859 2.2539 2.082 3.625-1.0312 2.1797-4.3867 1.3555v3.1836l4.4336 1.2812 1.0273 2.1797-2.0078 3.6797 2.582 2.2617 4.1367-1.8242 2.4922 0.90234 1.5742 3.8359h3.6367l1.4375-3.8789 2.5391-0.89844 4.207 1.7617 2.582-2.2617-2.1016-3.6211 1.0742-2.1797 4.3867-1.3789zm-16 4.457c-3.793 0-6.8555-2.6797-6.8555-6s3.0625-6 6.8555-6 6.8555 2.6797 6.8555 6-3.0625 6-6.8555 6z" fill="#000000" fill-rule="evenodd"/></g></svg>
64
obs-studio-23.1.0.tar.xz/UI/forms/images/settings/hotkeys.svg -> obs-studio-23.2.0.tar.xz/UI/forms/images/settings/hotkeys.svg Changed
5
 
1
@@ -1,1 +1,1 @@
2
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M10 5H9V4h1v1zM3 6H2v1h1V6zm5-2H7v1h1V4zM4 4H2v1h2V4zm8 7h2v-1h-2v1zM8 7h1V6H8v1zm-4 3H2v1h2v-1zm8-6h-1v1h1V4zm2 0h-1v1h1V4zm-2 5h2V6h-2v3zm4-6v9c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h14c.55 0 1 .45 1 1zm-1 0H1v9h14V3zM6 7h1V6H6v1zm0-3H5v1h1V4zM4 7h1V6H4v1zm1 4h6v-1H5v1zm5-4h1V6h-1v1zM3 8H2v1h1V8zm5 0v1h1V8H8zM6 8v1h1V8H6zM5 8H4v1h1V8zm5 1h1V8h-1v1z"/></svg>
3
\ No newline at end of file
4
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="#000000" d="M10 5H9V4h1v1zM3 6H2v1h1V6zm5-2H7v1h1V4zM4 4H2v1h2V4zm8 7h2v-1h-2v1zM8 7h1V6H8v1zm-4 3H2v1h2v-1zm8-6h-1v1h1V4zm2 0h-1v1h1V4zm-2 5h2V6h-2v3zm4-6v9c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h14c.55 0 1 .45 1 1zm-1 0H1v9h14V3zM6 7h1V6H6v1zm0-3H5v1h1V4zM4 7h1V6H4v1zm1 4h6v-1H5v1zm5-4h1V6h-1v1zM3 8H2v1h1V8zm5 0v1h1V8H8zM6 8v1h1V8H6zM5 8H4v1h1V8zm5 1h1V8h-1v1z"/></svg>
5
obs-studio-23.1.0.tar.xz/UI/forms/images/settings/output.svg -> obs-studio-23.2.0.tar.xz/UI/forms/images/settings/output.svg Changed
9
 
1
@@ -1,5 +1,5 @@
2
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
3
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
-<svg width="100%" height="100%" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
5
-    <path d="M12,15L4,15C5.48,14.39 6.09,13.61 6.34,13L1,13C0.45,13 0,12.55 0,12L0,3C0,2.45 0.45,2 1,2L15,2C15.55,2 16,2.45 16,3L16,4.191L15,4.191L15,3L1,3L1,11L15,11L15,9.752L16,9.752L16,12C16,12.55 15.55,13 15,13L9.66,13C9.91,13.61 10.52,14.39 12,15ZM11.981,10.35L11.981,7.849L5.965,7.849L5.965,6.182L11.981,6.182L11.981,3.681L15.992,7.015L11.981,10.35Z"/>
6
+<svg width="16" height="16" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
7
+    <path d="M12,15L4,15C5.48,14.39 6.09,13.61 6.34,13L1,13C0.45,13 0,12.55 0,12L0,3C0,2.45 0.45,2 1,2L15,2C15.55,2 16,2.45 16,3L16,4.191L15,4.191L15,3L1,3L1,11L15,11L15,9.752L16,9.752L16,12C16,12.55 15.55,13 15,13L9.66,13C9.91,13.61 10.52,14.39 12,15ZM11.981,10.35L11.981,7.849L5.965,7.849L5.965,6.182L11.981,6.182L11.981,3.681L15.992,7.015L11.981,10.35Z" style="fill:#000000;"/>
8
 </svg>
9
obs-studio-23.1.0.tar.xz/UI/forms/images/settings/stream.svg -> obs-studio-23.2.0.tar.xz/UI/forms/images/settings/stream.svg Changed
5
 
1
@@ -1,1 +1,1 @@
2
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M4.79 6.11c.25-.25.25-.67 0-.92-.32-.33-.48-.76-.48-1.19 0-.43.16-.86.48-1.19.25-.26.25-.67 0-.92a.613.613 0 0 0-.45-.19c-.16 0-.33.06-.45.19-.57.58-.85 1.35-.85 2.11 0 .76.29 1.53.85 2.11.25.25.66.25.9 0zM2.33.52a.651.651 0 0 0-.92 0C.48 1.48.01 2.74.01 3.99c0 1.26.47 2.52 1.4 3.48.25.26.66.26.91 0s.25-.68 0-.94c-.68-.7-1.02-1.62-1.02-2.54 0-.92.34-1.84 1.02-2.54a.66.66 0 0 0 .01-.93zm5.69 5.1A1.62 1.62 0 1 0 6.4 4c-.01.89.72 1.62 1.62 1.62zM14.59.53a.628.628 0 0 0-.91 0c-.25.26-.25.68 0 .94.68.7 1.02 1.62 1.02 2.54 0 .92-.34 1.83-1.02 2.54-.25.26-.25.68 0 .94a.651.651 0 0 0 .92 0c.93-.96 1.4-2.22 1.4-3.48A5.048 5.048 0 0 0 14.59.53zM8.02 6.92c-.41 0-.83-.1-1.2-.3l-3.15 8.37h1.49l.86-1h4l.84 1h1.49L9.21 6.62c-.38.2-.78.3-1.19.3zm-.01.48L9.02 11h-2l.99-3.6zm-1.99 5.59l1-1h2l1 1h-4zm5.19-11.1c-.25.25-.25.67 0 .92.32.33.48.76.48 1.19 0 .43-.16.86-.48 1.19-.25.26-.25.67 0 .92a.63.63 0 0 0 .9 0c.57-.58.85-1.35.85-2.11 0-.76-.28-1.53-.85-2.11a.634.634 0 0 0-.9 0z"/></svg>
3
\ No newline at end of file
4
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="#000000" d="M4.79 6.11c.25-.25.25-.67 0-.92-.32-.33-.48-.76-.48-1.19 0-.43.16-.86.48-1.19.25-.26.25-.67 0-.92a.613.613 0 0 0-.45-.19c-.16 0-.33.06-.45.19-.57.58-.85 1.35-.85 2.11 0 .76.29 1.53.85 2.11.25.25.66.25.9 0zM2.33.52a.651.651 0 0 0-.92 0C.48 1.48.01 2.74.01 3.99c0 1.26.47 2.52 1.4 3.48.25.26.66.26.91 0s.25-.68 0-.94c-.68-.7-1.02-1.62-1.02-2.54 0-.92.34-1.84 1.02-2.54a.66.66 0 0 0 .01-.93zm5.69 5.1A1.62 1.62 0 1 0 6.4 4c-.01.89.72 1.62 1.62 1.62zM14.59.53a.628.628 0 0 0-.91 0c-.25.26-.25.68 0 .94.68.7 1.02 1.62 1.02 2.54 0 .92-.34 1.83-1.02 2.54-.25.26-.25.68 0 .94a.651.651 0 0 0 .92 0c.93-.96 1.4-2.22 1.4-3.48A5.048 5.048 0 0 0 14.59.53zM8.02 6.92c-.41 0-.83-.1-1.2-.3l-3.15 8.37h1.49l.86-1h4l.84 1h1.49L9.21 6.62c-.38.2-.78.3-1.19.3zm-.01.48L9.02 11h-2l.99-3.6zm-1.99 5.59l1-1h2l1 1h-4zm5.19-11.1c-.25.25-.25.67 0 .92.32.33.48.76.48 1.19 0 .43-.16.86-.48 1.19-.25.26-.25.67 0 .92a.63.63 0 0 0 .9 0c.57-.58.85-1.35.85-2.11 0-.76-.28-1.53-.85-2.11a.634.634 0 0 0-.9 0z"/></svg>
5
obs-studio-23.1.0.tar.xz/UI/forms/images/settings/video.svg -> obs-studio-23.2.0.tar.xz/UI/forms/images/settings/video.svg Changed
5
 
1
@@ -1,1 +1,1 @@
2
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" d="M15 2H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5.34c-.25.61-.86 1.39-2.34 2h8c-1.48-.61-2.09-1.39-2.34-2H15c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 9H1V3h14v8z"/></svg>
3
\ No newline at end of file
4
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill-rule="evenodd" fill="#000000" d="M15 2H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5.34c-.25.61-.86 1.39-2.34 2h8c-1.48-.61-2.09-1.39-2.34-2H15c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 9H1V3h14v8z"/></svg>
5
obs-studio-23.2.0.tar.xz/UI/forms/images/trash.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-trash-2"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path><line x1="10" y1="11" x2="10" y2="17"></line><line x1="14" y1="11" x2="14" y2="17"></line></svg>
3
obs-studio-23.2.0.tar.xz/UI/forms/images/unlocked.svg Added
8
 
1
@@ -0,0 +1,6 @@
2
+<?xml version="1.0" encoding="UTF-8"?>
3
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16pt" height="16pt" viewBox="0 0 16 16" version="1.1">
4
+<g id="surface1">
5
+<path style=" stroke:none;fill-rule:nonzero;fill:rgb(50.196078%,49.803922%,50.196078%);fill-opacity:1;" d="M 8 1 C 5.925781 1 4.230469 2.605469 4.039062 4.628906 L 6.074219 4.628906 C 6.25 3.699219 7.011719 3 8 3 C 9.121094 3 10 3.878906 10 5 L 10 7 L 2 7 L 2 15 L 14 15 L 14 7 L 12 7 L 12 5 C 12 2.800781 10.199219 1 8 1 Z M 8 1 "/>
6
+</g>
7
+</svg>
8
obs-studio-23.2.0.tar.xz/UI/forms/images/up.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg class="feather feather-chevron-down" fill="none" stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><polyline transform="matrix(-1.7072 0 0 -1.7538 32.454 33.055)" points="6 9 12 15 18 9"/></svg>
3
obs-studio-23.2.0.tar.xz/UI/forms/images/visible.svg Added
3
 
1
@@ -0,0 +1,1 @@
2
+<svg version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="m8.06 3c-5.06 0-8.06 5-8.06 5s3 5 8.06 5c4.94 0 7.94-5 7.94-5s-3-5-7.94-5zm-0.06 8.3333c-2.2 0-4-1.4833-4-3.3333 0-1.8333 1.8-3.3333 4-3.3333 2.22 0 4 1.5 4 3.3333 0 1.85-1.78 3.3333-4 3.3333zm2-3.3333c0 0.925-0.89 1.6667-2 1.6667s-2-0.74167-2-1.6667c0-0.925 0.89-1.6667 2-1.6667s2 0.74167 2 1.6667z" fill-rule="evenodd" stroke-width=".91287"/></svg>
3
obs-studio-23.1.0.tar.xz/UI/forms/obs.qrc -> obs-studio-23.2.0.tar.xz/UI/forms/obs.qrc Changed
46
 
1
@@ -1,30 +1,21 @@
2
 <RCC>
3
   <qresource prefix="/res">
4
-    <file>images/mute.png</file>
5
-    <file>images/unmute.png</file>
6
-    <file>images/refresh.png</file>
7
-    <file>images/configuration21_16.png</file>
8
-    <file>images/configuration21_16_2x.png</file>
9
-    <file>images/invisible_mask.png</file>
10
-    <file>images/invisible_mask_2x.png</file>
11
-    <file>images/visible_mask.png</file>
12
-    <file>images/visible_mask_2x.png</file>
13
-    <file>images/list_remove.png</file>
14
-    <file>images/add.png</file>
15
-    <file>images/down.png</file>
16
-    <file>images/editscene.png</file>
17
-    <file>images/live.png</file>
18
-    <file>images/properties.png</file>
19
-    <file>images/properties_2x.png</file>
20
-    <file>images/up.png</file>
21
+    <file>images/mute.svg</file>
22
+    <file>images/refresh.svg</file>
23
+    <file>images/no_sources.svg</file>
24
+    <file>images/minus.svg</file>
25
+    <file>images/plus.svg</file>
26
+    <file>images/down.svg</file>
27
+    <file>images/up.svg</file>
28
     <file>images/obs.png</file>
29
     <file>images/tray_active.png</file>
30
-    <file>images/locked_mask.png</file>
31
-    <file>images/locked_mask_2x.png</file>
32
-    <file>images/unlocked_mask.png</file>
33
-    <file>images/unlocked_mask_2x.png</file>
34
-    <file>images/collapse.png</file>
35
-    <file>images/expand.png</file>
36
+    <file>images/expand.svg</file>
37
+    <file>images/unlocked.svg</file>
38
+    <file>images/locked.svg</file>
39
+    <file>images/invisible.svg</file>
40
+    <file>images/visible.svg</file>
41
+    <file>images/trash.svg</file>
42
+    <file>images/revert.svg</file>
43
   </qresource>
44
   <qresource prefix="/settings">
45
     <file>images/settings/output.svg</file>
46
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/decklink-output-ui/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/decklink-output-ui/CMakeLists.txt Changed
21
 
1
@@ -17,6 +17,9 @@
2
    ../../properties-view.moc.hpp
3
    ../../vertical-scroll-area.hpp
4
    ../../double-slider.hpp
5
+   ../../slider-ignorewheel.hpp
6
+   ../../combobox-ignorewheel.hpp
7
+   ../../spinbox-ignorewheel.hpp
8
    ./DecklinkOutputUI.h
9
    decklink-ui-main.h
10
    )
11
@@ -25,6 +28,9 @@
12
    ../../properties-view.cpp
13
    ../../vertical-scroll-area.cpp
14
    ../../double-slider.cpp
15
+   ../../slider-ignorewheel.cpp
16
+   ../../combobox-ignorewheel.cpp
17
+   ../../spinbox-ignorewheel.cpp
18
    ./DecklinkOutputUI.cpp
19
    decklink-ui-main.cpp
20
    )
21
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/decklink-output-ui/DecklinkOutputUI.cpp -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/decklink-output-ui/DecklinkOutputUI.cpp Changed
92
 
1
@@ -10,17 +10,24 @@
2
 {
3
    ui->setupUi(this);
4
 
5
+   setSizeGripEnabled(true);
6
+
7
    setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
8
 
9
    propertiesView = nullptr;
10
+   previewPropertiesView = nullptr;
11
 
12
    connect(ui->startOutput, SIGNAL(released()), this, SLOT(StartOutput()));
13
    connect(ui->stopOutput, SIGNAL(released()), this, SLOT(StopOutput()));
14
+
15
+   connect(ui->startPreviewOutput, SIGNAL(released()), this, SLOT(StartPreviewOutput()));
16
+   connect(ui->stopPreviewOutput, SIGNAL(released()), this, SLOT(StopPreviewOutput()));
17
 }
18
 
19
 void DecklinkOutputUI::ShowHideDialog()
20
 {
21
    SetupPropertiesView();
22
+   SetupPreviewPropertiesView();
23
 
24
    setVisible(!isVisible());
25
 }
26
@@ -61,6 +68,43 @@
27
        obs_data_save_json_safe(settings, path, "tmp", "bak");
28
 }
29
 
30
+void DecklinkOutputUI::SetupPreviewPropertiesView()
31
+{
32
+   if (previewPropertiesView)
33
+       delete previewPropertiesView;
34
+
35
+   obs_data_t *settings = obs_data_create();
36
+
37
+   OBSData data = load_preview_settings();
38
+   if (data)
39
+       obs_data_apply(settings, data);
40
+
41
+   previewPropertiesView = new OBSPropertiesView(settings,
42
+       "decklink_output",
43
+       (PropertiesReloadCallback) obs_get_output_properties,
44
+       170);
45
+
46
+   ui->previewPropertiesLayout->addWidget(previewPropertiesView);
47
+   obs_data_release(settings);
48
+
49
+   connect(previewPropertiesView, SIGNAL(Changed()), this, SLOT(PreviewPropertiesChanged()));
50
+}
51
+
52
+void DecklinkOutputUI::SavePreviewSettings()
53
+{
54
+   char *modulePath = obs_module_get_config_path(obs_current_module(), "");
55
+
56
+   os_mkdirs(modulePath);
57
+
58
+   char *path = obs_module_get_config_path(obs_current_module(),
59
+           "decklinkPreviewOutputProps.json");
60
+
61
+   obs_data_t *settings = previewPropertiesView->GetSettings();
62
+   if (settings)
63
+       obs_data_save_json_safe(settings, path, "tmp", "bak");
64
+}
65
+
66
+
67
 void DecklinkOutputUI::StartOutput()
68
 {
69
    SaveSettings();
70
@@ -76,3 +120,20 @@
71
 {
72
    SaveSettings();
73
 }
74
+
75
+
76
+void DecklinkOutputUI::StartPreviewOutput()
77
+{
78
+   SavePreviewSettings();
79
+   preview_output_start();
80
+}
81
+
82
+void DecklinkOutputUI::StopPreviewOutput()
83
+{
84
+   preview_output_stop();
85
+}
86
+
87
+void DecklinkOutputUI::PreviewPropertiesChanged()
88
+{
89
+   SavePreviewSettings();
90
+}
91
\ No newline at end of file
92
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/decklink-output-ui/DecklinkOutputUI.h -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/decklink-output-ui/DecklinkOutputUI.h Changed
28
 
1
@@ -9,17 +9,26 @@
2
 Q_OBJECT
3
 private:
4
    OBSPropertiesView *propertiesView;
5
+   OBSPropertiesView *previewPropertiesView;
6
 
7
 public slots:
8
    void StartOutput();
9
    void StopOutput();
10
    void PropertiesChanged();
11
 
12
+   void StartPreviewOutput();
13
+   void StopPreviewOutput();
14
+   void PreviewPropertiesChanged();
15
+
16
 public:
17
    std::unique_ptr<Ui_Output> ui;
18
    DecklinkOutputUI(QWidget *parent);
19
 
20
    void ShowHideDialog();
21
+
22
    void SetupPropertiesView();
23
    void SaveSettings();
24
+
25
+   void SetupPreviewPropertiesView();
26
+   void SavePreviewSettings();
27
 };
28
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.cpp -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.cpp Changed
234
 
1
@@ -4,7 +4,10 @@
2
 #include <QAction>
3
 #include <util/util.hpp>
4
 #include <util/platform.h>
5
+#include <media-io/video-io.h>
6
+#include <media-io/video-frame.h>
7
 #include "DecklinkOutputUI.h"
8
+#include "../../../plugins/decklink/const.h"
9
 
10
 OBS_DECLARE_MODULE()
11
 OBS_MODULE_USE_DEFAULT_LOCALE("decklink-output-ui", "en-US")
12
@@ -12,9 +15,26 @@
13
 DecklinkOutputUI *doUI;
14
 
15
 bool main_output_running = false;
16
+bool preview_output_running = false;
17
 
18
 obs_output_t *output;
19
 
20
+struct preview_output {
21
+   bool enabled;
22
+   obs_source_t *current_source;
23
+   obs_output_t *output;
24
+
25
+   video_t *video_queue;
26
+   gs_texrender_t *texrender;
27
+   gs_stagesurf_t *stagesurface;
28
+   uint8_t *video_data;
29
+   uint32_t video_linesize;
30
+
31
+   obs_video_info ovi;
32
+};
33
+
34
+static struct preview_output context = {0};
35
+
36
 OBSData load_settings()
37
 {
38
    BPtr<char> path = obs_module_get_config_path(obs_current_module(),
39
@@ -57,6 +77,172 @@
40
    }
41
 }
42
 
43
+
44
+OBSData load_preview_settings()
45
+{
46
+   BPtr<char> path = obs_module_get_config_path(obs_current_module(),
47
+           "decklinkPreviewOutputProps.json");
48
+   BPtr<char> jsonData = os_quick_read_utf8_file(path);
49
+   if (!!jsonData) {
50
+       obs_data_t *data = obs_data_create_from_json(jsonData);
51
+       OBSData dataRet(data);
52
+       obs_data_release(data);
53
+
54
+       return dataRet;
55
+   }
56
+
57
+   return nullptr;
58
+}
59
+
60
+void on_preview_scene_changed(enum obs_frontend_event event, void *param);
61
+void render_preview_source(void *param, uint32_t cx, uint32_t cy);
62
+
63
+void preview_output_start()
64
+{
65
+   if (!preview_output_running) {
66
+       OBSData settings = load_preview_settings();
67
+
68
+       if (settings != nullptr) {
69
+           context.output = obs_output_create("decklink_output",
70
+                   "decklink_preview_output", settings, NULL);
71
+
72
+           obs_get_video_info(&context.ovi);
73
+
74
+           uint32_t width = context.ovi.base_width;
75
+           uint32_t height = context.ovi.base_height;
76
+
77
+           obs_enter_graphics();
78
+           context.texrender = gs_texrender_create(GS_BGRA, GS_ZS_NONE);
79
+           context.stagesurface = gs_stagesurface_create(width, height, GS_BGRA);
80
+           obs_leave_graphics();
81
+
82
+           const video_output_info *mainVOI = video_output_get_info(obs_get_video());
83
+
84
+           video_output_info vi = {0};
85
+           vi.format = VIDEO_FORMAT_BGRA;
86
+           vi.width = width;
87
+           vi.height = height;
88
+           vi.fps_den = context.ovi.fps_den;
89
+           vi.fps_num = context.ovi.fps_num;
90
+           vi.cache_size = 16;
91
+           vi.colorspace = mainVOI->colorspace;
92
+           vi.range = mainVOI->range;
93
+           vi.name = "decklink_preview_output";
94
+
95
+           video_output_open(&context.video_queue, &vi);
96
+
97
+           obs_frontend_add_event_callback(on_preview_scene_changed, &context);
98
+           if (obs_frontend_preview_program_mode_active()) {
99
+               context.current_source = obs_frontend_get_current_preview_scene();
100
+           } else {
101
+               context.current_source = obs_frontend_get_current_scene();
102
+           }
103
+           obs_add_main_render_callback(render_preview_source, &context);
104
+
105
+           obs_output_set_media(context.output, context.video_queue, obs_get_audio());
106
+           obs_output_start(context.output);
107
+
108
+           preview_output_running = true;
109
+       }
110
+   }
111
+}
112
+
113
+void preview_output_stop()
114
+{
115
+   if (preview_output_running) {
116
+       obs_output_stop(context.output);
117
+       video_output_stop(context.video_queue);
118
+
119
+       obs_remove_main_render_callback(render_preview_source, &context);
120
+       obs_frontend_remove_event_callback(on_preview_scene_changed, &context);
121
+
122
+       obs_source_release(context.current_source);
123
+
124
+       obs_enter_graphics();
125
+       gs_stagesurface_destroy(context.stagesurface);
126
+       gs_texrender_destroy(context.texrender);
127
+       obs_leave_graphics();
128
+
129
+       video_output_close(context.video_queue);
130
+
131
+       preview_output_running = false;
132
+   }
133
+}
134
+
135
+void on_preview_scene_changed(enum obs_frontend_event event, void *param)
136
+{
137
+   auto ctx = (struct preview_output*)param;
138
+   switch (event) {
139
+       case OBS_FRONTEND_EVENT_STUDIO_MODE_ENABLED:
140
+       case OBS_FRONTEND_EVENT_PREVIEW_SCENE_CHANGED:
141
+           obs_source_release(ctx->current_source);
142
+           ctx->current_source = obs_frontend_get_current_preview_scene();
143
+           break;
144
+       case OBS_FRONTEND_EVENT_STUDIO_MODE_DISABLED:
145
+           obs_source_release(ctx->current_source);
146
+           ctx->current_source = obs_frontend_get_current_scene();
147
+           break;
148
+       case OBS_FRONTEND_EVENT_SCENE_CHANGED:
149
+           if (!obs_frontend_preview_program_mode_active()) {
150
+               obs_source_release(ctx->current_source);
151
+               ctx->current_source = obs_frontend_get_current_scene();
152
+           }
153
+           break;
154
+       default:
155
+           break;
156
+   }
157
+}
158
+
159
+void render_preview_source(void *param, uint32_t cx, uint32_t cy)
160
+{
161
+   auto ctx = (struct preview_output*)param;
162
+
163
+   if (!ctx->current_source) return;
164
+
165
+   uint32_t width = obs_source_get_base_width(ctx->current_source);
166
+   uint32_t height = obs_source_get_base_height(ctx->current_source);
167
+
168
+   gs_texrender_reset(ctx->texrender);
169
+
170
+   if (gs_texrender_begin(ctx->texrender, width, height)) {
171
+       struct vec4 background;
172
+       vec4_zero(&background);
173
+
174
+       gs_clear(GS_CLEAR_COLOR, &background, 0.0f, 0);
175
+       gs_ortho(0.0f, (float)width, 0.0f, (float)height, -100.0f, 100.0f);
176
+
177
+       gs_blend_state_push();
178
+       gs_blend_function(GS_BLEND_ONE, GS_BLEND_ZERO);
179
+
180
+       obs_source_video_render(ctx->current_source);
181
+
182
+       gs_blend_state_pop();
183
+       gs_texrender_end(ctx->texrender);
184
+
185
+       struct video_frame output_frame;
186
+       if (video_output_lock_frame(ctx->video_queue, &output_frame, 1, os_gettime_ns()))
187
+       {
188
+           gs_stage_texture(ctx->stagesurface, gs_texrender_get_texture(ctx->texrender));
189
+
190
+           if (gs_stagesurface_map(ctx->stagesurface, &ctx->video_data, &ctx->video_linesize)) {
191
+               uint32_t linesize = output_frame.linesize[0];
192
+               for (uint32_t i = 0; i < ctx->ovi.base_height; i++) {
193
+                   uint32_t dst_offset = linesize * i;
194
+                   uint32_t src_offset = ctx->video_linesize * i;
195
+                   memcpy(output_frame.data[0] + dst_offset,
196
+                   ctx->video_data + src_offset,
197
+                   linesize);
198
+               }
199
+
200
+               gs_stagesurface_unmap(ctx->stagesurface);
201
+               ctx->video_data = nullptr;
202
+           }
203
+
204
+           video_output_unlock_frame(ctx->video_queue);
205
+       }
206
+   }
207
+}
208
+
209
 void addOutputUI(void)
210
 {
211
    QAction *action = (QAction*)obs_frontend_add_tools_menu_qaction(
212
@@ -64,7 +250,9 @@
213
 
214
    QMainWindow *window = (QMainWindow*)obs_frontend_get_main_window();
215
 
216
+   obs_frontend_push_ui_translation(obs_module_get_string);
217
    doUI = new DecklinkOutputUI(window);
218
+   obs_frontend_pop_ui_translation();
219
 
220
    auto cb = []() {
221
        doUI->ShowHideDialog();
222
@@ -80,6 +268,11 @@
223
 
224
        if (settings && obs_data_get_bool(settings, "auto_start"))
225
            output_start();
226
+
227
+       OBSData previewSettings = load_preview_settings();
228
+
229
+       if (previewSettings && obs_data_get_bool(previewSettings, "auto_start"))
230
+           preview_output_start();
231
    }
232
 }
233
 
234
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.h -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/decklink-output-ui/decklink-ui-main.h Changed
11
 
1
@@ -1,3 +1,8 @@
2
+#pragma once
3
+
4
 void output_start();
5
 void output_stop();
6
 OBSData load_settings();
7
+void preview_output_start();
8
+void preview_output_stop();
9
+OBSData load_preview_settings();
10
\ No newline at end of file
11
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/decklink-output-ui/forms/output.ui -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/decklink-output-ui/forms/output.ui Changed
175
 
1
@@ -6,63 +6,122 @@
2
    <rect>
3
     <x>0</x>
4
     <y>0</y>
5
-    <width>793</width>
6
-    <height>328</height>
7
+    <width>785</width>
8
+    <height>497</height>
9
    </rect>
10
   </property>
11
+  <property name="sizePolicy">
12
+   <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
13
+    <horstretch>0</horstretch>
14
+    <verstretch>0</verstretch>
15
+   </sizepolicy>
16
+  </property>
17
   <property name="windowTitle">
18
    <string>Decklink Output</string>
19
   </property>
20
-  <widget class="QWidget" name="verticalLayoutWidget">
21
-   <property name="geometry">
22
-    <rect>
23
-     <x>20</x>
24
-     <y>10</y>
25
-     <width>751</width>
26
-     <height>221</height>
27
-    </rect>
28
-   </property>
29
-   <layout class="QVBoxLayout" name="propertiesLayout"/>
30
-  </widget>
31
-  <widget class="QPushButton" name="startOutput">
32
-   <property name="geometry">
33
-    <rect>
34
-     <x>520</x>
35
-     <y>250</y>
36
-     <width>113</width>
37
-     <height>32</height>
38
-    </rect>
39
-   </property>
40
-   <property name="text">
41
-    <string>Start</string>
42
-   </property>
43
-  </widget>
44
-  <widget class="QPushButton" name="stopOutput">
45
-   <property name="geometry">
46
-    <rect>
47
-     <x>650</x>
48
-     <y>250</y>
49
-     <width>113</width>
50
-     <height>32</height>
51
-    </rect>
52
-   </property>
53
-   <property name="text">
54
-    <string>Stop</string>
55
-   </property>
56
-  </widget>
57
-  <widget class="QLabel" name="label">
58
-   <property name="geometry">
59
-    <rect>
60
-     <x>420</x>
61
-     <y>290</y>
62
-     <width>351</width>
63
-     <height>20</height>
64
-    </rect>
65
-   </property>
66
-   <property name="text">
67
-    <string>Keyer output requires RGB mode in advanced settings.</string>
68
+  <property name="sizeGripEnabled">
69
+   <bool>true</bool>
70
+  </property>
71
+  <property name="modal">
72
+   <bool>false</bool>
73
+  </property>
74
+  <layout class="QVBoxLayout" name="verticalLayout">
75
+   <property name="sizeConstraint">
76
+    <enum>QLayout::SetDefaultConstraint</enum>
77
    </property>
78
-  </widget>
79
+   <item>
80
+    <widget class="QLabel" name="label">
81
+     <property name="text">
82
+      <string>Output</string>
83
+     </property>
84
+    </widget>
85
+   </item>
86
+   <item>
87
+    <layout class="QVBoxLayout" name="propertiesLayout"/>
88
+   </item>
89
+   <item>
90
+    <layout class="QHBoxLayout" name="horizontalLayout">
91
+     <property name="spacing">
92
+      <number>-1</number>
93
+     </property>
94
+     <item>
95
+      <spacer name="horizontalSpacer">
96
+       <property name="orientation">
97
+        <enum>Qt::Horizontal</enum>
98
+       </property>
99
+       <property name="sizeHint" stdset="0">
100
+        <size>
101
+         <width>40</width>
102
+         <height>20</height>
103
+        </size>
104
+       </property>
105
+      </spacer>
106
+     </item>
107
+     <item>
108
+      <widget class="QPushButton" name="startOutput">
109
+       <property name="text">
110
+        <string>Start</string>
111
+       </property>
112
+      </widget>
113
+     </item>
114
+     <item>
115
+      <widget class="QPushButton" name="stopOutput">
116
+       <property name="text">
117
+        <string>Stop</string>
118
+       </property>
119
+      </widget>
120
+     </item>
121
+    </layout>
122
+   </item>
123
+   <item>
124
+    <widget class="QLabel" name="label_2">
125
+     <property name="text">
126
+      <string>Preview Output</string>
127
+     </property>
128
+    </widget>
129
+   </item>
130
+   <item>
131
+    <layout class="QVBoxLayout" name="previewPropertiesLayout"/>
132
+   </item>
133
+   <item>
134
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
135
+     <item>
136
+      <spacer name="horizontalSpacer_2">
137
+       <property name="orientation">
138
+        <enum>Qt::Horizontal</enum>
139
+       </property>
140
+       <property name="sizeHint" stdset="0">
141
+        <size>
142
+         <width>40</width>
143
+         <height>20</height>
144
+        </size>
145
+       </property>
146
+      </spacer>
147
+     </item>
148
+     <item>
149
+      <widget class="QPushButton" name="startPreviewOutput">
150
+       <property name="text">
151
+        <string>Start</string>
152
+       </property>
153
+      </widget>
154
+     </item>
155
+     <item>
156
+      <widget class="QPushButton" name="stopPreviewOutput">
157
+       <property name="text">
158
+        <string>Stop</string>
159
+       </property>
160
+      </widget>
161
+     </item>
162
+    </layout>
163
+   </item>
164
+   <item>
165
+    <widget class="QLabel" name="label">
166
+     <property name="text">
167
+      <string>Keyer output requires RGB mode in advanced settings.</string>
168
+     </property>
169
+    </widget>
170
+   </item>
171
+  </layout>
172
  </widget>
173
  <resources/>
174
  <connections/>
175
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/frontend-tools/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/frontend-tools/CMakeLists.txt Changed
21
 
1
@@ -28,6 +28,9 @@
2
    ../../horizontal-scroll-area.hpp
3
    ../../vertical-scroll-area.hpp
4
    ../../double-slider.hpp
5
+   ../../slider-ignorewheel.hpp
6
+   ../../combobox-ignorewheel.hpp
7
+   ../../spinbox-ignorewheel.hpp
8
    )
9
 set(frontend-tools_SOURCES
10
    ${frontend-tools_SOURCES}
11
@@ -38,6 +41,9 @@
12
    ../../horizontal-scroll-area.cpp
13
    ../../vertical-scroll-area.cpp
14
    ../../double-slider.cpp
15
+   ../../slider-ignorewheel.cpp
16
+   ../../combobox-ignorewheel.cpp
17
+   ../../spinbox-ignorewheel.cpp
18
    )
19
 set(frontend-tools_UI
20
    ${frontend-tools_UI}
21
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/da-DK.ini Changed
23
 
1
@@ -1,9 +1,9 @@
2
-SceneSwitcher="Automatisk sceneomskifter"
3
+SceneSwitcher="Automatisk sceneskifter"
4
 SceneSwitcher.OnNoMatch="Når intet vindue matcher:"
5
 SceneSwitcher.OnNoMatch.DontSwitch="Skift ikke"
6
 SceneSwitcher.OnNoMatch.SwitchTo="Skift til:"
7
-SceneSwitcher.CheckInterval="Tjek aktiv vinduestitel for hver:"
8
-SceneSwitcher.ActiveOrNotActive="Sceneomskifter er:"
9
+SceneSwitcher.CheckInterval="Tjek aktiv vinduestitel hver:"
10
+SceneSwitcher.ActiveOrNotActive="Sceneskifter er:"
11
 InvalidRegex.Title="Ugyldigt regulært udtryk"
12
 InvalidRegex.Text="Det af dig angivne regulære udtryk er ugyldigt."
13
 Active="Aktiv"
14
@@ -33,7 +33,7 @@
15
 PythonSettings="Python-indstillinger"
16
 PythonSettings.PythonInstallPath32bit="Python-installationssti (32bit)"
17
 PythonSettings.PythonInstallPath64bit="Python-installationssti (64bit)"
18
-PythonSettings.BrowsePythonPath="Gennemse efter Python-sti"
19
+PythonSettings.BrowsePythonPath="Find Python-sti"
20
 ScriptLogWindow="Scriptlog"
21
 Description="Beskrivelse"
22
 
23
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/pl-PL.ini -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/pl-PL.ini Changed
7
 
1
@@ -1,4 +1,4 @@
2
-SceneSwitcher="Automatyczne Przełączanie Scen"
3
+SceneSwitcher="Automatyczne przełączanie scen"
4
 SceneSwitcher.OnNoMatch="Gdy nie pasuje żadne okno:"
5
 SceneSwitcher.OnNoMatch.DontSwitch="Nie przełączaj"
6
 SceneSwitcher.OnNoMatch.SwitchTo="Przełącz na:"
7
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/ro-RO.ini -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/ro-RO.ini Changed
40
 
1
@@ -1,26 +1,33 @@
2
-SceneSwitcher="Schimbator automat de scenă"
3
+SceneSwitcher="Schimbător automat de scene"
4
 SceneSwitcher.OnNoMatch="Când nicio fereastră nu se potrivește:"
5
+SceneSwitcher.OnNoMatch.DontSwitch="Nu schimba"
6
 SceneSwitcher.OnNoMatch.SwitchTo="Schimbă la:"
7
 SceneSwitcher.CheckInterval="Verifică titlul ferestrei active la fiecare:"
8
+SceneSwitcher.ActiveOrNotActive="Schimbătorul de scene este:"
9
 Active="Activ"
10
 Inactive="Inactiv"
11
-Start="Pornire"
12
-Stop="Oprire"
13
+Start="Pornește"
14
+Stop="Oprește"
15
 
16
 Captions="Subtitrări (experimentale)"
17
 Captions.AudioSource="Sursa audio"
18
-Captions.CurrentSystemLanguage="Limba curentă a sistemului (%1)"
19
+Captions.CurrentSystemLanguage="Limba actuală a sistemului (%1)"
20
 Captions.Provider="Furnizor"
21
 
22
 OutputTimer.Record="Opriți înregistrarea după:"
23
 OutputTimer.Stream.StoppingIn="Se oprește transmisiunea în:"
24
-OutputTimer.Record.StoppingIn="Oprire înregistrare în:"
25
+OutputTimer.Record.StoppingIn="Înregistrarea se oprește în:"
26
 
27
 Scripts="Scripturi"
28
 LoadedScripts="Scripturi încărcate"
29
 AddScripts="Adaugă scripturi"
30
 RemoveScripts="Elimină scripturi"
31
 ReloadScripts="Reîncarcă scripturile"
32
+PythonSettings="Setări Python"
33
+PythonSettings.PythonInstallPath32bit="Calea instalării Python (32bit)"
34
+PythonSettings.PythonInstallPath64bit="Calea instalării Python (64bit)"
35
+PythonSettings.BrowsePythonPath="Răsfoiește calea Python"
36
+ScriptLogWindow="Jurnalul scripturilor"
37
 Description="Descriere"
38
 
39
 
40
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/zh-CN.ini Changed
10
 
1
@@ -15,7 +15,7 @@
2
 Captions.AudioSource="音频源"
3
 Captions.CurrentSystemLanguage="当前系统语言 (%1)"
4
 Captions.Provider="提供程序"
5
-Captions.Error.GenericFail="启动捕获失败"
6
+Captions.Error.GenericFail="字幕启动失败"
7
 
8
 OutputTimer="输出计时器"
9
 OutputTimer.Stream="停止流处理后:"
10
obs-studio-23.1.0.tar.xz/UI/frontend-plugins/frontend-tools/scripts.hpp -> obs-studio-23.2.0.tar.xz/UI/frontend-plugins/frontend-tools/scripts.hpp Changed
7
 
1
@@ -1,3 +1,5 @@
2
+#pragma once
3
+
4
 #include <QWidget>
5
 #include <QString>
6
 
7
obs-studio-23.1.0.tar.xz/UI/hotkey-edit.cpp -> obs-studio-23.2.0.tar.xz/UI/hotkey-edit.cpp Changed
53
 
1
@@ -272,13 +272,17 @@
2
    edit->setToolTip(toolTip);
3
 
4
    auto revert = new QPushButton;
5
-   revert->setProperty("themeID", "hotkeyButtons");
6
-   revert->setText(QTStr("Revert"));
7
+   revert->setProperty("themeID", "revertIcon");
8
+   revert->setToolTip(QTStr("Revert"));
9
+   revert->setFixedSize(24, 24);
10
+   revert->setFlat(true);
11
    revert->setEnabled(false);
12
 
13
    auto clear = new QPushButton;
14
-   clear->setProperty("themeID", "hotkeyButtons");
15
-   clear->setText(QTStr("Clear"));
16
+   clear->setProperty("themeID", "trashIcon");
17
+   clear->setToolTip(QTStr("Clear"));
18
+   clear->setFixedSize(24, 24);
19
+   clear->setFlat(true);
20
    clear->setEnabled(!obs_key_combination_is_empty(combo));
21
 
22
    QObject::connect(edit, &OBSHotkeyEdit::KeyChanged,
23
@@ -289,15 +293,15 @@
24
    });
25
 
26
    auto add = new QPushButton;
27
-   add->setProperty("themeID", "hotkeyButtons");
28
-   add->setText("+");
29
-   add->setMinimumWidth(50);
30
+   add->setProperty("themeID", "addIconSmall");
31
+   add->setFixedSize(24, 24);
32
+   add->setFlat(true);
33
 
34
    auto remove = new QPushButton;
35
-   remove->setProperty("themeID", "hotkeyButtons");
36
-   remove->setText("-");
37
+   remove->setProperty("themeID", "removeIconSmall");
38
    remove->setEnabled(removeButtons.size() > 0);
39
-   remove->setMinimumWidth(50);
40
+   remove->setFixedSize(24, 24);
41
+   remove->setFlat(true);
42
 
43
    auto CurrentIndex = [&, remove]
44
    {
45
@@ -320,6 +324,7 @@
46
    });
47
 
48
    QHBoxLayout *subLayout = new QHBoxLayout;
49
+   subLayout->setContentsMargins(0, 4, 0, 0);
50
    subLayout->addWidget(edit);
51
    subLayout->addWidget(revert);
52
    subLayout->addWidget(clear);
53
obs-studio-23.1.0.tar.xz/UI/hotkey-edit.hpp -> obs-studio-23.2.0.tar.xz/UI/hotkey-edit.hpp Changed
10
 
1
@@ -15,6 +15,8 @@
2
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
3
 ******************************************************************************/
4
 
5
+#pragma once
6
+
7
 #include <QLineEdit>
8
 #include <QKeyEvent>
9
 #include <QPushButton>
10
obs-studio-23.1.0.tar.xz/UI/locked-checkbox.hpp -> obs-studio-23.2.0.tar.xz/UI/locked-checkbox.hpp Changed
21
 
1
@@ -1,17 +1,7 @@
2
-#include <QCheckBox>
3
-#include <QPixmap>
4
+#pragma once
5
 
6
-class QPaintEvernt;
7
+#include <QCheckBox>
8
 
9
 class LockedCheckBox : public QCheckBox {
10
    Q_OBJECT
11
-
12
-   QPixmap lockedImage;
13
-   QPixmap unlockedImage;
14
-
15
-public:
16
-   LockedCheckBox();
17
-
18
-protected:
19
-   void paintEvent(QPaintEvent *event) override;
20
 };
21
obs-studio-23.1.0.tar.xz/UI/obs-app.cpp -> obs-studio-23.2.0.tar.xz/UI/obs-app.cpp Changed
69
 
1
@@ -50,10 +50,13 @@
2
 #include <windows.h>
3
 #else
4
 #include <signal.h>
5
+#include <pthread.h>
6
 #endif
7
 
8
 #include <iostream>
9
 
10
+#include "ui-config.h"
11
+
12
 using namespace std;
13
 
14
 static log_handler_t def_log_handler;
15
@@ -423,7 +426,7 @@
16
 
17
    if (!config_get_bool(globalConfig, "General", "Pre21Defaults")) {
18
        config_set_default_string(globalConfig, "General",
19
-               "CurrentTheme", "Dark");
20
+               "CurrentTheme", DEFAULT_THEME);
21
    }
22
 
23
    config_set_default_bool(globalConfig, "BasicWindow",
24
@@ -1026,18 +1029,21 @@
25
 
26
    const char *themeName = config_get_string(globalConfig, "General",
27
            "CurrentTheme");
28
+
29
    if (!themeName) {
30
        /* Use deprecated "Theme" value if available */
31
        themeName = config_get_string(globalConfig,
32
                "General", "Theme");
33
        if (!themeName)
34
-           themeName = "Default";
35
+           themeName = DEFAULT_THEME;
36
+       if (!themeName)
37
+           themeName = "Dark";
38
    }
39
 
40
-   if (strcmp(themeName, "Default") != 0 && SetTheme(themeName))
41
-       return true;
42
+   if (strcmp(themeName, "Default") == 0)
43
+       themeName = "System";
44
 
45
-   return SetTheme("Default");
46
+   return SetTheme(themeName);
47
 }
48
 
49
 OBSApp::OBSApp(int &argc, char **argv, profiler_name_store_t *store)
50
@@ -2240,6 +2246,18 @@
51
    sig_handler.sa_flags = 0;
52
 
53
    sigaction(SIGINT, &sig_handler, NULL);
54
+
55
+
56
+   /* Block SIGPIPE in all threads, this can happen if a thread calls write on
57
+   a closed pipe. */
58
+   sigset_t sigpipe_mask;
59
+   sigemptyset(&sigpipe_mask);
60
+   sigaddset(&sigpipe_mask, SIGPIPE);
61
+   sigset_t saved_mask;
62
+   if (pthread_sigmask(SIG_BLOCK, &sigpipe_mask, &saved_mask) == -1) {
63
+       perror("pthread_sigmask");
64
+       exit(1);
65
+   }
66
 #endif
67
 
68
 #ifdef _WIN32
69
obs-studio-23.1.0.tar.xz/UI/obs-frontend-api/obs-frontend-api.cpp -> obs-studio-23.2.0.tar.xz/UI/obs-frontend-api/obs-frontend-api.cpp Changed
48
 
1
@@ -71,6 +71,13 @@
2
        : nullptr;
3
 }
4
 
5
+void *obs_frontend_get_system_tray(void)
6
+{
7
+   return !!callbacks_valid()
8
+       ? c->obs_frontend_get_system_tray()
9
+       : nullptr;
10
+}
11
+
12
 char **obs_frontend_get_scene_names(void)
13
 {
14
    if (!callbacks_valid())
15
@@ -125,6 +132,19 @@
16
        c->obs_frontend_set_current_transition(transition);
17
 }
18
 
19
+int obs_frontend_get_transition_duration(void)
20
+{
21
+   return !!callbacks_valid()
22
+       ? c->obs_frontend_get_transition_duration()
23
+       : 0;
24
+}
25
+
26
+void obs_frontend_set_transition_duration(int duration)
27
+{
28
+   if (callbacks_valid())
29
+       c->obs_frontend_set_transition_duration(duration);
30
+}
31
+
32
 char **obs_frontend_get_scene_collections(void)
33
 {
34
    if (!callbacks_valid())
35
@@ -388,6 +408,12 @@
36
        c->obs_frontend_set_preview_program_mode(enable);
37
 }
38
 
39
+void obs_frontend_preview_program_trigger_transition(void)
40
+{
41
+   if (callbacks_valid())
42
+       c->obs_frontend_preview_program_trigger_transition();
43
+}
44
+
45
 void obs_frontend_set_preview_enabled(bool enable)
46
 {
47
    if (callbacks_valid())
48
obs-studio-23.1.0.tar.xz/UI/obs-frontend-api/obs-frontend-api.h -> obs-studio-23.2.0.tar.xz/UI/obs-frontend-api/obs-frontend-api.h Changed
26
 
1
@@ -82,6 +82,7 @@
2
 
3
 EXPORT void *obs_frontend_get_main_window(void);
4
 EXPORT void *obs_frontend_get_main_window_handle(void);
5
+EXPORT void *obs_frontend_get_system_tray(void);
6
 
7
 EXPORT char **obs_frontend_get_scene_names(void);
8
 EXPORT void obs_frontend_get_scenes(struct obs_frontend_source_list *sources);
9
@@ -92,6 +93,8 @@
10
        struct obs_frontend_source_list *sources);
11
 EXPORT obs_source_t *obs_frontend_get_current_transition(void);
12
 EXPORT void obs_frontend_set_current_transition(obs_source_t *transition);
13
+EXPORT int obs_frontend_get_transition_duration(void);
14
+EXPORT void obs_frontend_set_transition_duration(int duration);
15
 
16
 EXPORT char **obs_frontend_get_scene_collections(void);
17
 EXPORT char *obs_frontend_get_current_scene_collection(void);
18
@@ -168,6 +171,7 @@
19
 
20
 EXPORT bool obs_frontend_preview_program_mode_active(void);
21
 EXPORT void obs_frontend_set_preview_program_mode(bool enable);
22
+EXPORT void obs_frontend_preview_program_trigger_transition(void);
23
 
24
 EXPORT void obs_frontend_set_preview_enabled(bool enable);
25
 EXPORT bool obs_frontend_preview_enabled(void);
26
obs-studio-23.1.0.tar.xz/UI/obs-frontend-api/obs-frontend-internal.hpp -> obs-studio-23.2.0.tar.xz/UI/obs-frontend-api/obs-frontend-internal.hpp Changed
27
 
1
@@ -9,6 +9,7 @@
2
    virtual ~obs_frontend_callbacks() {}
3
    virtual void *obs_frontend_get_main_window(void)=0;
4
    virtual void *obs_frontend_get_main_window_handle(void)=0;
5
+   virtual void *obs_frontend_get_system_tray(void)=0;
6
 
7
    virtual void obs_frontend_get_scenes(
8
            struct obs_frontend_source_list *sources)=0;
9
@@ -20,6 +21,8 @@
10
    virtual obs_source_t *obs_frontend_get_current_transition(void)=0;
11
    virtual void obs_frontend_set_current_transition(
12
            obs_source_t *transition)=0;
13
+   virtual int obs_frontend_get_transition_duration(void)=0;
14
+   virtual void obs_frontend_set_transition_duration(int duration)=0;
15
 
16
    virtual void obs_frontend_get_scene_collections(
17
            std::vector<std::string> &strings)=0;
18
@@ -86,6 +89,8 @@
19
 
20
    virtual bool obs_frontend_preview_program_mode_active(void)=0;
21
    virtual void obs_frontend_set_preview_program_mode(bool enable)=0;
22
+   virtual void obs_frontend_preview_program_trigger_transition(void)=0;
23
+
24
    virtual bool obs_frontend_preview_enabled(void)=0;
25
    virtual void obs_frontend_set_preview_enabled(bool enable)=0;
26
 
27
obs-studio-23.1.0.tar.xz/UI/properties-view.cpp -> obs-studio-23.2.0.tar.xz/UI/properties-view.cpp Changed
211
 
1
@@ -19,7 +19,11 @@
2
 #include <QMenu>
3
 #include <QStackedWidget>
4
 #include <QDir>
5
+#include <QGroupBox>
6
 #include "double-slider.hpp"
7
+#include "slider-ignorewheel.hpp"
8
+#include "spinbox-ignorewheel.hpp"
9
+#include "combobox-ignorewheel.hpp"
10
 #include "qt-wrappers.hpp"
11
 #include "properties-view.hpp"
12
 #include "properties-view.moc.hpp"
13
@@ -148,6 +152,8 @@
14
        QLabel *noPropertiesLabel = new QLabel(NO_PROPERTIES_STRING);
15
        layout->addWidget(noPropertiesLabel);
16
    }
17
+
18
+   emit PropertiesRefreshed();
19
 }
20
 
21
 void OBSPropertiesView::SetScrollPos(int h, int v)
22
@@ -321,7 +327,7 @@
23
 
24
    const char *name = obs_property_name(prop);
25
    int        val   = (int)obs_data_get_int(settings, name);
26
-   QSpinBox   *spin = new QSpinBox();
27
+   QSpinBox   *spin = new SpinBoxIgnoreScroll();
28
 
29
    if (!obs_property_enabled(prop))
30
        spin->setEnabled(false);
31
@@ -329,18 +335,20 @@
32
    int minVal = obs_property_int_min(prop);
33
    int maxVal = obs_property_int_max(prop);
34
    int stepVal = obs_property_int_step(prop);
35
+   const char *suffix = obs_property_int_suffix(prop);
36
 
37
    spin->setMinimum(minVal);
38
    spin->setMaximum(maxVal);
39
    spin->setSingleStep(stepVal);
40
    spin->setValue(val);
41
    spin->setToolTip(QT_UTF8(obs_property_long_description(prop)));
42
+   spin->setSuffix(QT_UTF8(suffix));
43
 
44
    WidgetInfo *info = new WidgetInfo(this, prop, spin);
45
    children.emplace_back(info);
46
 
47
    if (type == OBS_NUMBER_SLIDER) {
48
-       QSlider *slider = new QSlider();
49
+       QSlider *slider = new SliderIgnoreScroll();
50
        slider->setMinimum(minVal);
51
        slider->setMaximum(maxVal);
52
        slider->setPageStep(stepVal);
53
@@ -378,12 +386,14 @@
54
    double minVal = obs_property_float_min(prop);
55
    double maxVal = obs_property_float_max(prop);
56
    double stepVal = obs_property_float_step(prop);
57
+   const char *suffix = obs_property_float_suffix(prop);
58
 
59
    spin->setMinimum(minVal);
60
    spin->setMaximum(maxVal);
61
    spin->setSingleStep(stepVal);
62
    spin->setValue(val);
63
    spin->setToolTip(QT_UTF8(obs_property_long_description(prop)));
64
+   spin->setSuffix(QT_UTF8(suffix));
65
 
66
    WidgetInfo *info = new WidgetInfo(this, prop, spin);
67
    children.emplace_back(info);
68
@@ -481,7 +491,7 @@
69
 QWidget *OBSPropertiesView::AddList(obs_property_t *prop, bool &warning)
70
 {
71
    const char       *name  = obs_property_name(prop);
72
-   QComboBox        *combo = new QComboBox();
73
+   QComboBox        *combo = new ComboBoxIgnoreScroll();
74
    obs_combo_type   type   = obs_property_list_type(prop);
75
    obs_combo_format format = obs_property_list_format(prop);
76
    size_t           count  = obs_property_list_item_count(prop);
77
@@ -913,7 +923,7 @@
78
    auto items = vector<common_frame_rate>{};
79
    items.reserve(sizeof(common_fps)/sizeof(common_frame_rate));
80
 
81
-   auto combo = fpsProps->simpleFPS = new QComboBox{};
82
+   auto combo = fpsProps->simpleFPS = new ComboBoxIgnoreScroll{};
83
 
84
    combo->addItem("", QVariant::fromValue(make_fps(0, 0)));
85
    for (const auto &fps : common_fps) {
86
@@ -993,7 +1003,7 @@
87
    auto str = QTStr("Basic.PropertiesView.FPS.ValidFPSRanges");
88
    auto rlabel = new QLabel{str};
89
 
90
-   auto combo = fpsProps->fpsRange = new QComboBox{};
91
+   auto combo = fpsProps->fpsRange = new ComboBoxIgnoreScroll{};
92
    auto convert_fps = media_frames_per_second_to_fps;
93
    //auto convert_fi  = media_frames_per_second_to_frame_interval;
94
 
95
@@ -1014,8 +1024,8 @@
96
 
97
    layout->addRow(rlabel, combo);
98
 
99
-   auto num_edit = fpsProps->numEdit = new QSpinBox{};
100
-   auto den_edit = fpsProps->denEdit = new QSpinBox{};
101
+   auto num_edit = fpsProps->numEdit = new SpinBoxIgnoreScroll{};
102
+   auto den_edit = fpsProps->denEdit = new SpinBoxIgnoreScroll{};
103
 
104
    num_edit->setRange(0, INT_MAX);
105
    den_edit->setRange(0, INT_MAX);
106
@@ -1044,7 +1054,7 @@
107
 
108
    swap(widget->fps_ranges, fps_ranges);
109
 
110
-   auto combo = widget->modeSelect = new QComboBox{};
111
+   auto combo = widget->modeSelect = new ComboBoxIgnoreScroll{};
112
    combo->addItem(QTStr("Basic.PropertiesView.FPS.Simple"),
113
            QVariant::fromValue(frame_rate_tag::simple()));
114
    combo->addItem(QTStr("Basic.PropertiesView.FPS.Rational"),
115
@@ -1329,6 +1339,44 @@
116
    });
117
 }
118
 
119
+void OBSPropertiesView::AddGroup(obs_property_t *prop, QFormLayout *layout)
120
+{
121
+   const char *name = obs_property_name(prop);
122
+   bool val = obs_data_get_bool(settings, name);
123
+   const char *desc = obs_property_description(prop);
124
+   enum obs_group_type type = obs_property_group_type(prop);
125
+
126
+   // Create GroupBox
127
+   QGroupBox *groupBox = new QGroupBox(QT_UTF8(desc));
128
+   groupBox->setCheckable(type == OBS_GROUP_CHECKABLE);
129
+   groupBox->setChecked(groupBox->isCheckable() ? val : true);
130
+   groupBox->setAccessibleName("group");
131
+   groupBox->setEnabled(obs_property_enabled(prop));
132
+
133
+   // Create Layout and build content
134
+   QFormLayout *subLayout = new QFormLayout();
135
+   subLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
136
+   groupBox->setLayout(subLayout);
137
+
138
+   obs_properties_t *content = obs_property_group_content(prop);
139
+   obs_property_t *el = obs_properties_first(content);
140
+   while (el != nullptr) {
141
+       AddProperty(el, subLayout);
142
+       obs_property_next(&el);
143
+   }
144
+
145
+   // Insert into UI
146
+   layout->setWidget(layout->rowCount(),
147
+           QFormLayout::ItemRole::SpanningRole, groupBox);
148
+
149
+   // Register Group Widget
150
+   WidgetInfo *info = new WidgetInfo(this, prop, groupBox);
151
+   children.emplace_back(info);
152
+
153
+   // Signals
154
+   connect(groupBox, SIGNAL(toggled()), info, SLOT(ControlChanged()));
155
+}
156
+
157
 void OBSPropertiesView::AddProperty(obs_property_t *property,
158
        QFormLayout *layout)
159
 {
160
@@ -1378,6 +1426,8 @@
161
    case OBS_PROPERTY_FRAME_RATE:
162
        AddFrameRate(property, warning, layout, label);
163
        break;
164
+   case OBS_PROPERTY_GROUP:
165
+       AddGroup(property, layout);
166
    }
167
 
168
    if (widget && !obs_property_enabled(property))
169
@@ -1385,7 +1435,8 @@
170
 
171
    if (!label &&
172
        type != OBS_PROPERTY_BOOL &&
173
-       type != OBS_PROPERTY_BUTTON)
174
+       type != OBS_PROPERTY_BUTTON &&
175
+       type != OBS_PROPERTY_GROUP)
176
        label = new QLabel(QT_UTF8(obs_property_description(property)));
177
 
178
    if (warning && label) //TODO: select color based on background color
179
@@ -1626,8 +1677,7 @@
180
    long long  val   = obs_data_get_int(view->settings, setting);
181
    QColor     color = color_from_int(val);
182
 
183
-   QColorDialog::ColorDialogOptions options =
184
-       QColorDialog::ShowAlphaChannel;
185
+   QColorDialog::ColorDialogOptions options = 0;
186
 
187
    /* The native dialog on OSX has all kinds of problems, like closing
188
     * other open QDialogs on exit, and
189
@@ -1704,6 +1754,13 @@
190
    return true;
191
 }
192
 
193
+void WidgetInfo::GroupChanged(const char *setting)
194
+{
195
+   QGroupBox *groupbox = static_cast<QGroupBox*>(widget);
196
+   obs_data_set_bool(view->settings, setting,
197
+       groupbox->isCheckable() ? groupbox->isChecked() : true);
198
+}
199
+
200
 void WidgetInfo::EditableListChanged()
201
 {
202
    const char *setting = obs_property_name(property);
203
@@ -1773,6 +1830,7 @@
204
        if (!FrameRateChanged(widget, setting, view->settings))
205
            return;
206
        break;
207
+   case OBS_PROPERTY_GROUP:  GroupChanged(setting); return;
208
    }
209
 
210
    if (view->callback && !view->deferUpdate)
211
obs-studio-23.1.0.tar.xz/UI/properties-view.hpp -> obs-studio-23.2.0.tar.xz/UI/properties-view.hpp Changed
26
 
1
@@ -33,6 +33,7 @@
2
    void ListChanged(const char *setting);
3
    bool ColorChanged(const char *setting);
4
    bool FontChanged(const char *setting);
5
+   void GroupChanged(const char *setting);
6
    void EditableListChanged();
7
    void ButtonClicked();
8
 
9
@@ -103,6 +104,8 @@
10
    void AddFrameRate(obs_property_t *prop, bool &warning,
11
            QFormLayout *layout, QLabel *&label);
12
 
13
+   void AddGroup(obs_property_t *prop, QFormLayout *layout);
14
+
15
    void AddProperty(obs_property_t *property, QFormLayout *layout);
16
 
17
    void resizeEvent(QResizeEvent *event) override;
18
@@ -118,6 +121,7 @@
19
 signals:
20
    void PropertiesResized();
21
    void Changed();
22
+   void PropertiesRefreshed();
23
 
24
 public:
25
    OBSPropertiesView(OBSData settings, void *obj,
26
obs-studio-23.1.0.tar.xz/UI/qt-display.cpp -> obs-studio-23.2.0.tar.xz/UI/qt-display.cpp Changed
43
 
1
@@ -19,6 +19,13 @@
2
        shift(color.alpha(), 24);
3
 }
4
 
5
+static inline QColor rgba_to_color(uint32_t rgba)
6
+{
7
+   return QColor::fromRgb(rgba & 0xFF,
8
+                          (rgba >> 8) & 0xFF,
9
+                          (rgba >> 16) & 0xFF,
10
+                          (rgba >> 24) & 0xFF);
11
+}
12
 
13
 OBSQTDisplay::OBSQTDisplay(QWidget *parent, Qt::WindowFlags flags)
14
    : QWidget(parent, flags)
15
@@ -53,13 +60,25 @@
16
 
17
    connect(windowHandle(), &QWindow::visibleChanged, windowVisible);
18
    connect(windowHandle(), &QWindow::screenChanged, sizeChanged);
19
+}
20
 
21
-   this->setProperty("themeID", "displayBackgroundColor");
22
+QColor OBSQTDisplay::GetDisplayBackgroundColor() const
23
+{
24
+   return rgba_to_color(backgroundColor);
25
 }
26
 
27
 void OBSQTDisplay::SetDisplayBackgroundColor(const QColor &color)
28
 {
29
-   backgroundColor = (uint32_t)color_to_int(color);
30
+   uint32_t newBackgroundColor = (uint32_t)color_to_int(color);
31
+
32
+   if (newBackgroundColor != backgroundColor) {
33
+       backgroundColor = newBackgroundColor;
34
+       UpdateDisplayBackgroundColor();
35
+   }
36
+}
37
+
38
+void OBSQTDisplay::UpdateDisplayBackgroundColor()
39
+{
40
    obs_display_set_background_color(display, backgroundColor);
41
 }
42
 
43
obs-studio-23.1.0.tar.xz/UI/qt-display.hpp -> obs-studio-23.2.0.tar.xz/UI/qt-display.hpp Changed
37
 
1
@@ -3,10 +3,13 @@
2
 #include <QWidget>
3
 #include <obs.hpp>
4
 
5
+#define GREY_COLOR_BACKGROUND 0xFF4C4C4C
6
+
7
 class OBSQTDisplay : public QWidget {
8
    Q_OBJECT
9
-   Q_PROPERTY(QColor displayBackgroundColor WRITE SetDisplayBackgroundColor
10
-           NOTIFY SetDisplayBackgroundColor)
11
+   Q_PROPERTY(QColor displayBackgroundColor MEMBER backgroundColor
12
+           READ GetDisplayBackgroundColor
13
+           WRITE SetDisplayBackgroundColor)
14
 
15
    OBSDisplay display;
16
 
17
@@ -20,14 +23,16 @@
18
    void DisplayResized();
19
 
20
 public:
21
-   OBSQTDisplay(QWidget *parent = 0, Qt::WindowFlags flags = 0);
22
+   OBSQTDisplay(QWidget *parent = nullptr,
23
+           Qt::WindowFlags flags = nullptr);
24
 
25
    virtual QPaintEngine *paintEngine() const override;
26
 
27
    inline obs_display_t *GetDisplay() const {return display;}
28
 
29
-   uint32_t backgroundColor;
30
+   uint32_t backgroundColor = GREY_COLOR_BACKGROUND;
31
 
32
-private slots:
33
+   QColor GetDisplayBackgroundColor() const;
34
    void SetDisplayBackgroundColor(const QColor &color);
35
+   void UpdateDisplayBackgroundColor();
36
 };
37
obs-studio-23.1.0.tar.xz/UI/qt-wrappers.cpp -> obs-studio-23.2.0.tar.xz/UI/qt-wrappers.cpp Changed
35
 
1
@@ -90,6 +90,33 @@
2
    mb.exec();
3
 }
4
 
5
+void OBSMessageBox::warning(
6
+   QWidget *parent,
7
+   const QString &title,
8
+   const QString &text,
9
+   bool enableRichText)
10
+{
11
+   QMessageBox mb(QMessageBox::Warning,
12
+       title, text, QMessageBox::Ok,
13
+       parent);
14
+   if (enableRichText)
15
+       mb.setTextFormat(Qt::RichText);
16
+   mb.setButtonText(QMessageBox::Ok, QTStr("OK"));
17
+   mb.exec();
18
+}
19
+
20
+void OBSMessageBox::critical(
21
+   QWidget *parent,
22
+   const QString &title,
23
+   const QString &text)
24
+{
25
+   QMessageBox mb(QMessageBox::Critical,
26
+       title, text, QMessageBox::Ok,
27
+       parent);
28
+   mb.setButtonText(QMessageBox::Ok, QTStr("OK"));
29
+   mb.exec();
30
+}
31
+
32
 void QTToGSWindow(WId windowId, gs_window &gswindow)
33
 {
34
 #ifdef _WIN32
35
obs-studio-23.1.0.tar.xz/UI/qt-wrappers.hpp -> obs-studio-23.2.0.tar.xz/UI/qt-wrappers.hpp Changed
17
 
1
@@ -48,6 +48,15 @@
2
            QWidget *parent,
3
            const QString &title,
4
            const QString &text);
5
+   static void warning(
6
+       QWidget *parent,
7
+       const QString &title,
8
+       const QString &text,
9
+       bool enableRichText = false);
10
+   static void critical(
11
+       QWidget *parent,
12
+       const QString &title,
13
+       const QString &text);
14
 };
15
 
16
 void OBSErrorBox(QWidget *parent, const char *msg, ...);
17
obs-studio-23.2.0.tar.xz/UI/slider-ignorewheel.cpp Added
24
 
1
@@ -0,0 +1,22 @@
2
+#include "slider-ignorewheel.hpp"
3
+
4
+SliderIgnoreScroll::SliderIgnoreScroll(QWidget *parent) : QSlider(parent)
5
+{
6
+   setFocusPolicy(Qt::StrongFocus);
7
+}
8
+
9
+SliderIgnoreScroll::SliderIgnoreScroll(Qt::Orientation orientation,
10
+       QWidget *parent)
11
+   : QSlider(parent)
12
+{
13
+   setFocusPolicy(Qt::StrongFocus);
14
+   setOrientation(orientation);
15
+}
16
+
17
+void SliderIgnoreScroll::wheelEvent(QWheelEvent *event)
18
+{
19
+   if (!hasFocus())
20
+       event->ignore();
21
+   else
22
+       QSlider::wheelEvent(event);
23
+}
24
obs-studio-23.2.0.tar.xz/UI/slider-ignorewheel.hpp Added
18
 
1
@@ -0,0 +1,16 @@
2
+#pragma once
3
+
4
+#include <QSlider>
5
+#include <QInputEvent>
6
+#include <QtCore/QObject>
7
+
8
+class SliderIgnoreScroll : public QSlider {
9
+   Q_OBJECT
10
+
11
+public:
12
+   SliderIgnoreScroll(QWidget *parent = nullptr);
13
+   SliderIgnoreScroll(Qt::Orientation orientation, QWidget *parent = nullptr);
14
+
15
+protected:
16
+   virtual void wheelEvent(QWheelEvent *event) override;
17
+};
18
obs-studio-23.1.0.tar.xz/UI/source-label.hpp -> obs-studio-23.2.0.tar.xz/UI/source-label.hpp Changed
10
 
1
@@ -15,6 +15,8 @@
2
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
3
 ******************************************************************************/
4
 
5
+#pragma once
6
+
7
 #include <QLabel>
8
 #include <obs.hpp>
9
 
10
obs-studio-23.1.0.tar.xz/UI/source-tree.cpp -> obs-studio-23.2.0.tar.xz/UI/source-tree.cpp Changed
113
 
1
@@ -5,6 +5,7 @@
2
 #include "visibility-checkbox.hpp"
3
 #include "locked-checkbox.hpp"
4
 #include "expand-checkbox.hpp"
5
+#include "platform.hpp"
6
 
7
 #include <obs-frontend-api.h>
8
 #include <obs.h>
9
@@ -59,12 +60,12 @@
10
 
11
    vis = new VisibilityCheckBox();
12
    vis->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
13
-   vis->setMaximumSize(16, 16);
14
+   vis->setFixedSize(16, 16);
15
    vis->setChecked(obs_sceneitem_visible(sceneitem));
16
 
17
    lock = new LockedCheckBox();
18
    lock->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
19
-   lock->setMaximumSize(16, 16);
20
+   lock->setFixedSize(16, 16);
21
    lock->setChecked(obs_sceneitem_locked(sceneitem));
22
 
23
    label = new QLabel(QT_UTF8(name));
24
@@ -78,10 +79,11 @@
25
 #endif
26
 
27
    boxLayout = new QHBoxLayout();
28
-   boxLayout->setContentsMargins(1, 1, 2, 1);
29
+   boxLayout->setContentsMargins(1, 1, 1, 1);
30
    boxLayout->setSpacing(1);
31
    boxLayout->addWidget(label);
32
    boxLayout->addWidget(vis);
33
+   boxLayout->setSpacing(2);
34
    boxLayout->addWidget(lock);
35
 #ifdef __APPLE__
36
    /* Hack: Fixes a bug where scrollbars would be above the lock icon */
37
@@ -259,6 +261,7 @@
38
    setFocusPolicy(Qt::StrongFocus);
39
    boxLayout->removeWidget(label);
40
    editor = new QLineEdit(label->text());
41
+   editor->selectAll();
42
    editor->installEventFilter(this);
43
    boxLayout->insertWidget(1, editor);
44
    setFocusProxy(editor);
45
@@ -914,6 +917,10 @@
46
        "*[bgColor=\"8\"]{background-color:rgba(255,255,255,33%);}"));
47
 
48
    setMouseTracking(true);
49
+
50
+   UpdateNoSourcesMessage();
51
+   connect(App(), &OBSApp::StyleChanged,
52
+           this, &SourceTree::UpdateNoSourcesMessage);
53
 }
54
 
55
 void SourceTree::ResetWidgets()
56
@@ -1428,3 +1435,56 @@
57
 {
58
    GetStm()->AddGroup();
59
 }
60
+
61
+void SourceTree::UpdateNoSourcesMessage()
62
+{
63
+   std::string darkPath;
64
+   GetDataFilePath("themes/Dark/no_sources.svg", darkPath);
65
+
66
+   QColor color = palette().text().color();
67
+   bool lightTheme = (color.redF() < 0.5);
68
+   QString file = lightTheme
69
+       ? ":res/images/no_sources.svg"
70
+       : darkPath.c_str();
71
+   iconNoSources.load(file);
72
+
73
+   QTextOption opt(Qt::AlignHCenter);
74
+   opt.setWrapMode(QTextOption::WordWrap);
75
+   textNoSources.setTextOption(opt);
76
+   textNoSources.setText(QTStr("NoSources.Label").replace("\n", "<br/>"));
77
+
78
+   textPrepared = false;
79
+}
80
+
81
+void SourceTree::paintEvent(QPaintEvent *event)
82
+{
83
+   SourceTreeModel *stm = GetStm();
84
+   if (stm && !stm->items.count()) {
85
+       QPainter p(viewport());
86
+
87
+       if (!textPrepared) {
88
+           textNoSources.prepare(QTransform(), p.font());
89
+           textPrepared = true;
90
+       }
91
+
92
+       QRectF iconRect = iconNoSources.viewBoxF();
93
+
94
+       QSizeF iconSize = iconRect.size();
95
+       QSizeF textSize = textNoSources.size();
96
+       QSizeF thisSize = size();
97
+
98
+       qreal totalHeight = textSize.height() + iconSize.height();
99
+
100
+       qreal x = thisSize.width() / 2.0 - textSize.width() / 2.0;
101
+       qreal y = thisSize.height() / 2.0 - totalHeight / 2.0;
102
+       p.drawStaticText(x, y, textNoSources);
103
+
104
+       x = thisSize.width() / 2.0 - iconSize.width() / 2.0;
105
+       y += textSize.height();
106
+       iconRect.moveTo(x, y);
107
+
108
+       iconNoSources.render(&p, iconRect);
109
+   } else {
110
+       QListView::paintEvent(event);
111
+   }
112
+}
113
obs-studio-23.1.0.tar.xz/UI/source-tree.hpp -> obs-studio-23.2.0.tar.xz/UI/source-tree.hpp Changed
31
 
1
@@ -5,6 +5,8 @@
2
 #include <QPointer>
3
 #include <QListView>
4
 #include <QCheckBox>
5
+#include <QStaticText>
6
+#include <QSvgRenderer>
7
 #include <QAbstractListModel>
8
 
9
 class QLabel;
10
@@ -133,6 +135,12 @@
11
    friend class SourceTreeModel;
12
    friend class SourceTreeItem;
13
 
14
+   bool textPrepared = false;
15
+   QStaticText textNoSources;
16
+   QSvgRenderer iconNoSources;
17
+
18
+   void UpdateNoSourcesMessage();
19
+
20
    void ResetWidgets();
21
    void UpdateWidget(const QModelIndex &idx, obs_sceneitem_t *item);
22
    void UpdateWidgets(bool force = false);
23
@@ -177,6 +185,7 @@
24
    virtual void dropEvent(QDropEvent *event) override;
25
    virtual void mouseMoveEvent(QMouseEvent *event) override;
26
    virtual void leaveEvent(QEvent *event) override;
27
+   virtual void paintEvent(QPaintEvent *event) override;
28
 
29
    virtual void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override;
30
 };
31
obs-studio-23.2.0.tar.xz/UI/spinbox-ignorewheel.cpp Added
16
 
1
@@ -0,0 +1,14 @@
2
+#include "spinbox-ignorewheel.hpp"
3
+
4
+SpinBoxIgnoreScroll::SpinBoxIgnoreScroll(QWidget *parent) : QSpinBox(parent)
5
+{
6
+   setFocusPolicy(Qt::StrongFocus);
7
+}
8
+
9
+void SpinBoxIgnoreScroll::wheelEvent(QWheelEvent *event)
10
+{
11
+   if (!hasFocus())
12
+       event->ignore();
13
+   else
14
+       QSpinBox::wheelEvent(event);
15
+}
16
obs-studio-23.2.0.tar.xz/UI/spinbox-ignorewheel.hpp Added
17
 
1
@@ -0,0 +1,15 @@
2
+#pragma once
3
+
4
+#include <QSpinBox>
5
+#include <QInputEvent>
6
+#include <QtCore/QObject>
7
+
8
+class SpinBoxIgnoreScroll : public QSpinBox {
9
+   Q_OBJECT
10
+
11
+public:
12
+   SpinBoxIgnoreScroll(QWidget *parent = nullptr);
13
+
14
+protected:
15
+   virtual void wheelEvent(QWheelEvent *event) override;
16
+};
17
obs-studio-23.1.0.tar.xz/UI/ui-config.h.in -> obs-studio-23.2.0.tar.xz/UI/ui-config.h.in Changed
7
 
1
@@ -27,3 +27,5 @@
2
 #define RESTREAM_ENABLED  @RESTREAM_ENABLED@
3
 #define RESTREAM_CLIENTID "@RESTREAM_CLIENTID@"
4
 #define RESTREAM_HASH     0x@RESTREAM_HASH@
5
+
6
+#define DEFAULT_THEME "Dark"
7
obs-studio-23.1.0.tar.xz/UI/visibility-checkbox.hpp -> obs-studio-23.2.0.tar.xz/UI/visibility-checkbox.hpp Changed
21
 
1
@@ -1,17 +1,7 @@
2
-#include <QCheckBox>
3
-#include <QPixmap>
4
+#pragma once
5
 
6
-class QPaintEvernt;
7
+#include <QCheckBox>
8
 
9
 class VisibilityCheckBox : public QCheckBox {
10
    Q_OBJECT
11
-
12
-   QPixmap checkedImage;
13
-   QPixmap uncheckedImage;
14
-
15
-public:
16
-   VisibilityCheckBox();
17
-
18
-protected:
19
-   void paintEvent(QPaintEvent *event) override;
20
 };
21
obs-studio-23.1.0.tar.xz/UI/volume-control.cpp -> obs-studio-23.2.0.tar.xz/UI/volume-control.cpp Changed
121
 
1
@@ -2,11 +2,11 @@
2
 #include "qt-wrappers.hpp"
3
 #include "obs-app.hpp"
4
 #include "mute-checkbox.hpp"
5
+#include "slider-ignorewheel.hpp"
6
 #include "slider-absoluteset-style.hpp"
7
 #include <QFontDatabase>
8
 #include <QHBoxLayout>
9
 #include <QPushButton>
10
-#include <QSlider>
11
 #include <QLabel>
12
 #include <QPainter>
13
 #include <QStyleFactory>
14
@@ -14,6 +14,7 @@
15
 using namespace std;
16
 
17
 #define CLAMP(x, min, max) ((x) < (min) ? (min) : ((x) > (max) ? (max) : (x)))
18
+#define FADER_PRECISION 4096.0
19
 
20
 QWeakPointer<VolumeMeterTimer> VolumeMeter::updateTimer;
21
 
22
@@ -47,7 +48,8 @@
23
 void VolControl::VolumeChanged()
24
 {
25
    slider->blockSignals(true);
26
-   slider->setValue((int) (obs_fader_get_deflection(obs_fader) * 100.0f));
27
+   slider->setValue((int) (obs_fader_get_deflection(obs_fader) *
28
+           FADER_PRECISION));
29
    slider->blockSignals(false);
30
 
31
    updateText();
32
@@ -66,7 +68,7 @@
33
 
34
 void VolControl::SliderChanged(int vol)
35
 {
36
-   obs_fader_set_deflection(obs_fader, float(vol) * 0.01f);
37
+   obs_fader_set_deflection(obs_fader, float(vol) / FADER_PRECISION);
38
    updateText();
39
 }
40
 
41
@@ -116,13 +118,14 @@
42
        : source      (std::move(source_)),
43
        levelTotal    (0.0f),
44
        levelCount    (0.0f),
45
-       obs_fader     (obs_fader_create(OBS_FADER_CUBIC)),
46
+       obs_fader     (obs_fader_create(OBS_FADER_LOG)),
47
        obs_volmeter  (obs_volmeter_create(OBS_FADER_LOG)),
48
        vertical      (vertical)
49
 {
50
    nameLabel = new QLabel();
51
    volLabel  = new QLabel();
52
    mute      = new MuteCheckBox();
53
+
54
    QString sourceName = obs_source_get_name(source);
55
    setObjectName(sourceName);
56
 
57
@@ -153,7 +156,7 @@
58
        QHBoxLayout *meterLayout  = new QHBoxLayout;
59
 
60
        volMeter  = new VolumeMeter(nullptr, obs_volmeter, true);
61
-       slider    = new QSlider(Qt::Vertical);
62
+       slider    = new SliderIgnoreScroll(Qt::Vertical);
63
 
64
        nameLayout->setAlignment(Qt::AlignCenter);
65
        meterLayout->setAlignment(Qt::AlignCenter);
66
@@ -188,6 +191,8 @@
67
        mainLayout->addItem(meterLayout);
68
        mainLayout->addItem(controlLayout);
69
 
70
+       volMeter->setFocusProxy(slider);
71
+
72
        setMaximumWidth(110);
73
    } else {
74
        QHBoxLayout *volLayout  = new QHBoxLayout;
75
@@ -195,7 +200,7 @@
76
        QHBoxLayout *botLayout  = new QHBoxLayout;
77
 
78
        volMeter  = new VolumeMeter(nullptr, obs_volmeter, false);
79
-       slider    = new QSlider(Qt::Horizontal);
80
+       slider    = new SliderIgnoreScroll(Qt::Horizontal);
81
 
82
        textLayout->setContentsMargins(0, 0, 0, 0);
83
        textLayout->addWidget(nameLabel);
84
@@ -217,6 +222,8 @@
85
        mainLayout->addItem(textLayout);
86
        mainLayout->addWidget(volMeter);
87
        mainLayout->addItem(botLayout);
88
+
89
+       volMeter->setFocusProxy(slider);
90
    }
91
 
92
    setLayout(mainLayout);
93
@@ -227,8 +234,9 @@
94
    nameLabel->setText(sourceName);
95
    nameLabel->setFont(font);
96
    volLabel->setFont(font);
97
+
98
    slider->setMinimum(0);
99
-   slider->setMaximum(100);
100
+   slider->setMaximum(int(FADER_PRECISION));
101
 
102
    bool muted = obs_source_muted(source);
103
    mute->setChecked(muted);
104
@@ -498,6 +506,16 @@
105
    }
106
 }
107
 
108
+void VolumeMeter::mousePressEvent(QMouseEvent *event)
109
+{
110
+   setFocus(Qt::MouseFocusReason);
111
+}
112
+
113
+void VolumeMeter::wheelEvent(QWheelEvent *event)
114
+{
115
+   QApplication::sendEvent(focusProxy(), event);
116
+}
117
+
118
 VolumeMeter::VolumeMeter(QWidget *parent, obs_volmeter_t *obs_volmeter,
119
        bool vertical)
120
        : QWidget(parent), obs_volmeter(obs_volmeter),
121
obs-studio-23.1.0.tar.xz/UI/volume-control.hpp -> obs-studio-23.2.0.tar.xz/UI/volume-control.hpp Changed
10
 
1
@@ -198,6 +198,8 @@
2
    qreal getInputPeakHoldDuration() const;
3
    void setInputPeakHoldDuration(qreal v);
4
    void setPeakMeterType(enum obs_peak_meter_type peakMeterType);
5
+   virtual void mousePressEvent(QMouseEvent *event) override;
6
+   virtual void wheelEvent(QWheelEvent *event) override;
7
 
8
 protected:
9
    void paintEvent(QPaintEvent *event) override;
10
obs-studio-23.1.0.tar.xz/UI/win-update/updater/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/UI/win-update/updater/CMakeLists.txt Changed
9
 
1
@@ -28,6 +28,7 @@
2
    http.cpp
3
    hash.cpp
4
    updater.rc
5
+   updater.manifest
6
    )
7
 
8
 add_definitions(-DNOMINMAX -DUNICODE -D_UNICODE)
9
obs-studio-23.1.0.tar.xz/UI/win-update/updater/updater.cpp -> obs-studio-23.2.0.tar.xz/UI/win-update/updater/updater.cpp Changed
49
 
1
@@ -1141,6 +1141,12 @@
2
    SetDlgItemTextW(hwndMain, IDC_STATUS,
3
            L"Searching for available updates...");
4
 
5
+   HWND hProgress = GetDlgItem(hwndMain, IDC_PROGRESS);
6
+   LONG_PTR style = GetWindowLongPtr(hProgress, GWL_STYLE);
7
+   SetWindowLongPtr(hProgress, GWL_STYLE, style | PBS_MARQUEE);
8
+
9
+   SendDlgItemMessage(hwndMain, IDC_PROGRESS, PBM_SETMARQUEE, 1, 0);
10
+
11
    /* ------------------------------------- *
12
     * Check if updating portable build      */
13
 
14
@@ -1245,16 +1251,20 @@
15
 
16
    for (size_t i = 0; i < packageCount; i++) {
17
        if (!AddPackageUpdateFiles(packages, i, tempPath)) {
18
-           Status(L"Failed to process update packages");
19
+           Status(L"Update failed: Failed to process update packages");
20
            return false;
21
        }
22
    }
23
 
24
+   SendDlgItemMessage(hwndMain, IDC_PROGRESS, PBM_SETMARQUEE, 0, 0);
25
+   SetWindowLongPtr(hProgress, GWL_STYLE, style);
26
+
27
    /* ------------------------------------- *
28
     * Exit if updates already installed     */
29
 
30
    if (!updates.size()) {
31
        Status(L"All available updates are already installed.");
32
+       SetDlgItemText(hwndMain, IDC_BUTTON, L"Launch OBS");
33
        return true;
34
    }
35
 
36
@@ -1460,8 +1470,10 @@
37
        if (WaitForSingleObject(cancelRequested, 0) == WAIT_OBJECT_0)
38
            Status(L"Update aborted.");
39
 
40
-       SendDlgItemMessage(hwndMain, IDC_PROGRESS, PBM_SETSTATE,
41
-               PBST_ERROR, 0);
42
+       HWND hProgress = GetDlgItem(hwndMain, IDC_PROGRESS);
43
+       LONG_PTR style = GetWindowLongPtr(hProgress, GWL_STYLE);
44
+       SetWindowLongPtr(hProgress, GWL_STYLE, style & ~PBS_MARQUEE);
45
+       SendMessage(hProgress, PBM_SETSTATE, PBST_ERROR, 0);
46
 
47
        SetDlgItemText(hwndMain, IDC_BUTTON, L"Exit");
48
        EnableWindow(GetDlgItem(hwndMain, IDC_BUTTON), true);
49
obs-studio-23.2.0.tar.xz/UI/win-update/updater/updater.manifest Added
28
 
1
@@ -0,0 +1,25 @@
2
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
3
+<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
4
+
5
+<asmv3:application>
6
+   <asmv3:windowsSettings xmlns="https://schemas.microsoft.com/SMI/2005/WindowsSettings">
7
+       <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">system</dpiAwareness>
8
+       <dpiAware>true</dpiAware>
9
+   </asmv3:windowsSettings>
10
+</asmv3:application>
11
+
12
+<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
13
+   <application>
14
+       <!-- Windows 10 -->
15
+       <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
16
+       <!-- Windows 8.1 -->
17
+       <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
18
+       <!-- Windows Vista -->
19
+       <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
20
+       <!-- Windows 7 -->
21
+       <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
22
+       <!-- Windows 8 -->
23
+       <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
24
+   </application>
25
+</compatibility>
26
+</assembly>
27
\ No newline at end of file
28
obs-studio-23.1.0.tar.xz/UI/window-basic-about.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-about.cpp Changed
166
 
1
@@ -1,10 +1,13 @@
2
 #include "window-basic-about.hpp"
3
 #include "window-basic-main.hpp"
4
 #include "qt-wrappers.hpp"
5
-#include <string>
6
+#include "remote-text.hpp"
7
 #include <util/util.hpp>
8
 #include <util/platform.h>
9
 #include <platform.hpp>
10
+#include <json11.hpp>
11
+
12
+using namespace json11;
13
 
14
 OBSAbout::OBSAbout(QWidget *parent)
15
    : QDialog(parent),
16
@@ -12,30 +15,33 @@
17
 {
18
    ui->setupUi(this);
19
 
20
-   setFixedSize(size());
21
-
22
    setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
23
 
24
    QString bitness;
25
+   QString ver;
26
 
27
    if(sizeof(void*) == 4)
28
        bitness = " (32 bit)";
29
    else if(sizeof(void*) == 8)
30
        bitness = " (64 bit)";
31
 
32
-   ui->version->setText(
33
-           QString::number(LIBOBS_API_MAJOR_VER) + "." +
34
-           QString::number(LIBOBS_API_MINOR_VER) + "." +
35
-           QString::number(LIBOBS_API_PATCH_VER) +
36
-           bitness);
37
+#ifdef HAVE_OBSCONFIG_H
38
+   ver +=  OBS_VERSION;
39
+#else
40
+   ver +=  LIBOBS_API_MAJOR_VER + "." +
41
+       LIBOBS_API_MINOR_VER + "." +
42
+       LIBOBS_API_PATCH_VER;
43
+#endif
44
+
45
+   ui->version->setText(ver + bitness);
46
 
47
    ui->contribute->setText(QTStr("About.Contribute"));
48
-   ui->donate->setText("<a href='https://obsproject.com/donate'>" +
49
+   ui->donate->setText("&nbsp;&nbsp;<a href='https://obsproject.com/donate'>" +
50
            QTStr("About.Donate") + "</a>");
51
    ui->donate->setTextInteractionFlags(Qt::TextBrowserInteraction);
52
    ui->donate->setOpenExternalLinks(true);
53
 
54
-   ui->getInvolved->setText("<a href='https://github.com/obsproject/obs-studio/blob/master/CONTRIBUTING.rst'>" +
55
+   ui->getInvolved->setText("&nbsp;&nbsp;<a href='https://github.com/obsproject/obs-studio/blob/master/CONTRIBUTING.rst'>" +
56
            QTStr("About.GetInvolved") + "</a>");
57
    ui->getInvolved->setTextInteractionFlags(Qt::TextBrowserInteraction);
58
    ui->getInvolved->setOpenExternalLinks(true);
59
@@ -44,8 +50,6 @@
60
    ui->authors->setText("<a href='#'>" + QTStr("About.Authors") + "</a>");
61
    ui->license->setText("<a href='#'>" + QTStr("About.License") + "</a>");
62
 
63
-   ui->textBrowser->hide();
64
-
65
    ui->name->setProperty("themeID", "aboutName");
66
    ui->version->setProperty("themeID", "aboutVersion");
67
    ui->about->setProperty("themeID", "aboutHLayout");
68
@@ -56,15 +60,68 @@
69
    connect(ui->about, SIGNAL(clicked()), this, SLOT(ShowAbout()));
70
    connect(ui->authors, SIGNAL(clicked()), this, SLOT(ShowAuthors()));
71
    connect(ui->license, SIGNAL(clicked()), this, SLOT(ShowLicense()));
72
+
73
+   QPointer<OBSAbout> about(this);
74
+
75
+   OBSBasic *main = OBSBasic::Get();
76
+   if (main->patronJson.empty() && !main->patronJsonThread) {
77
+       RemoteTextThread *thread = new RemoteTextThread(
78
+               "https://obsproject.com/patreon/about-box.json",
79
+               "application/json");
80
+       QObject::connect(thread, &RemoteTextThread::Result,
81
+               main, &OBSBasic::UpdatePatronJson);
82
+       QObject::connect(thread, SIGNAL(Result(const QString &, const QString &)),
83
+               this, SLOT(ShowAbout()));
84
+       main->patronJsonThread.reset(thread);
85
+       thread->start();
86
+   } else {
87
+       ShowAbout();
88
+   }
89
 }
90
 
91
 void OBSAbout::ShowAbout()
92
 {
93
-   ui->textBrowser->hide();
94
-   ui->info->show();
95
-   ui->contribute->show();
96
-   ui->donate->show();
97
-   ui->getInvolved->show();
98
+   OBSBasic *main = OBSBasic::Get();
99
+
100
+   if (main->patronJson.empty())
101
+       return;
102
+
103
+   std::string error;
104
+   Json json = Json::parse(main->patronJson, error);
105
+   const Json::array &patrons = json.array_items();
106
+   QString text;
107
+
108
+   text += "<h1>Top Patreon contributors:</h1>";
109
+   text += "<p style=\"font-size:16px;\">";
110
+   bool first = true;
111
+   bool top = true;
112
+
113
+   for (const Json &patron : patrons) {
114
+       std::string name = patron["name"].string_value();
115
+       std::string link = patron["link"].string_value();
116
+       int amount = patron["amount"].int_value();
117
+
118
+       if (top && amount < 10000) {
119
+           text += "</p>";
120
+           top = false;
121
+       } else if (!first) {
122
+           text += "<br/>";
123
+       }
124
+
125
+       if (!link.empty()) {
126
+           text += "<a href=\"";
127
+           text += QT_UTF8(link.c_str()).toHtmlEscaped();
128
+           text += "\">";
129
+       }
130
+       text += QT_UTF8(name.c_str()).toHtmlEscaped();
131
+       if (!link.empty())
132
+           text += "</a>";
133
+
134
+       if (first)
135
+           first = false;
136
+   }
137
+
138
+   ui->textBrowser->setHtml(text);
139
 }
140
 
141
 void OBSAbout::ShowAuthors()
142
@@ -88,12 +145,6 @@
143
    }
144
 
145
    ui->textBrowser->setPlainText(QT_UTF8(text));
146
-
147
-   ui->info->hide();
148
-   ui->contribute->hide();
149
-   ui->donate->hide();
150
-   ui->getInvolved->hide();
151
-   ui->textBrowser->show();
152
 }
153
 
154
 void OBSAbout::ShowLicense()
155
@@ -115,10 +166,4 @@
156
    }
157
 
158
    ui->textBrowser->setPlainText(QT_UTF8(text));
159
-
160
-   ui->info->hide();
161
-   ui->contribute->hide();
162
-   ui->donate->hide();
163
-   ui->getInvolved->hide();
164
-   ui->textBrowser->show();
165
 }
166
obs-studio-23.1.0.tar.xz/UI/window-basic-about.hpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-about.hpp Changed
9
 
1
@@ -11,7 +11,6 @@
2
 public:
3
    explicit OBSAbout(QWidget *parent = 0);
4
 
5
-private:
6
    std::unique_ptr<Ui::OBSAbout> ui;
7
 
8
 private slots:
9
obs-studio-23.1.0.tar.xz/UI/window-basic-filters.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-filters.cpp Changed
19
 
1
@@ -434,7 +434,7 @@
2
            return;
3
 
4
        if (name.empty()) {
5
-           OBSMessageBox::information(this,
6
+           OBSMessageBox::warning(this,
7
                    QTStr("NoNameEntered.Title"),
8
                    QTStr("NoNameEntered.Text"));
9
            AddNewFilter(id);
10
@@ -444,7 +444,7 @@
11
        existing_filter = obs_source_get_filter_by_name(source,
12
                name.c_str());
13
        if (existing_filter) {
14
-           OBSMessageBox::information(this,
15
+           OBSMessageBox::warning(this,
16
                    QTStr("NameExists.Title"),
17
                    QTStr("NameExists.Text"));
18
            obs_source_release(existing_filter);
19
obs-studio-23.1.0.tar.xz/UI/window-basic-main-dropfiles.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-main-dropfiles.cpp Changed
10
 
1
@@ -148,7 +148,7 @@
2
    if (mimeData->hasUrls()) {
3
        QList<QUrl> urls = mimeData->urls();
4
 
5
-       for (int i = 0; i < urls.size() && i < 5; i++) {
6
+       for (int i = 0; i < urls.size(); i++) {
7
            QString file = urls.at(i).toLocalFile();
8
            QFileInfo fileInfo(file);
9
 
10
obs-studio-23.1.0.tar.xz/UI/window-basic-main-outputs.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-main-outputs.cpp Changed
220
 
1
@@ -63,7 +63,8 @@
2
    output->delayActive = false;
3
    os_atomic_set_bool(&streaming_active, false);
4
    QMetaObject::invokeMethod(output->main,
5
-           "StreamingStop", Q_ARG(int, code), Q_ARG(QString, arg_last_error));
6
+           "StreamingStop", Q_ARG(int, code),
7
+           Q_ARG(QString, arg_last_error));
8
 }
9
 
10
 static void OBSStartRecording(void *data, calldata_t *params)
11
@@ -81,11 +82,15 @@
12
 {
13
    BasicOutputHandler *output = static_cast<BasicOutputHandler*>(data);
14
    int code = (int)calldata_int(params, "code");
15
+   const char *last_error = calldata_string(params, "last_error");
16
+
17
+   QString arg_last_error = QString::fromUtf8(last_error);
18
 
19
    output->recordingActive = false;
20
    os_atomic_set_bool(&recording_active, false);
21
    QMetaObject::invokeMethod(output->main,
22
-           "RecordingStop", Q_ARG(int, code));
23
+           "RecordingStop", Q_ARG(int, code),
24
+           Q_ARG(QString, arg_last_error));
25
 
26
    UNUSED_PARAMETER(params);
27
 }
28
@@ -714,28 +719,39 @@
29
                obs_output_get_signal_handler(streamOutput),
30
                "stop", OBSStopStreaming, this);
31
 
32
-       const char *codec =
33
-           obs_output_get_supported_audio_codecs(streamOutput);
34
-       if (!codec) {
35
-           return false;
36
-       }
37
+       bool isEncoded = obs_output_get_flags(streamOutput)
38
+           & OBS_OUTPUT_ENCODED;
39
 
40
-       if (strcmp(codec, "aac") != 0) {
41
-           const char *id = FindAudioEncoderFromCodec(codec);
42
-           int audioBitrate = GetAudioBitrate();
43
-           obs_data_t *settings = obs_data_create();
44
-           obs_data_set_int(settings, "bitrate", audioBitrate);
45
-
46
-           aacStreaming = obs_audio_encoder_create(id,
47
-                   "alt_audio_enc", nullptr, 0, nullptr);
48
-           obs_encoder_release(aacStreaming);
49
-           if (!aacStreaming)
50
+       if (isEncoded) {
51
+           const char *codec =
52
+               obs_output_get_supported_audio_codecs(
53
+                       streamOutput);
54
+           if (!codec) {
55
+               blog(LOG_WARNING, "Failed to load audio codec");
56
                return false;
57
+           }
58
 
59
-           obs_encoder_update(aacStreaming, settings);
60
-           obs_encoder_set_audio(aacStreaming, obs_get_audio());
61
-
62
-           obs_data_release(settings);
63
+           if (strcmp(codec, "aac") != 0) {
64
+               const char *id = FindAudioEncoderFromCodec(
65
+                       codec);
66
+               int audioBitrate = GetAudioBitrate();
67
+               obs_data_t *settings = obs_data_create();
68
+               obs_data_set_int(settings, "bitrate",
69
+                       audioBitrate);
70
+
71
+               aacStreaming = obs_audio_encoder_create(id,
72
+                       "alt_audio_enc", nullptr, 0,
73
+                       nullptr);
74
+               obs_encoder_release(aacStreaming);
75
+               if (!aacStreaming)
76
+                   return false;
77
+
78
+               obs_encoder_update(aacStreaming, settings);
79
+               obs_encoder_set_audio(aacStreaming,
80
+                       obs_get_audio());
81
+
82
+               obs_data_release(settings);
83
+           }
84
        }
85
 
86
        outputType = type;
87
@@ -789,12 +805,15 @@
88
    }
89
 
90
    const char *error = obs_output_get_last_error(streamOutput);
91
-   bool has_last_error = error && *error;
92
+   bool hasLastError = error && *error;
93
+   if (hasLastError)
94
+       lastError = error;
95
+   else
96
+       lastError = string();
97
 
98
-   blog(LOG_WARNING, "Stream output type '%s' failed to start!%s%s",
99
-           type,
100
-           has_last_error ? "  Last Error: " : "",
101
-           has_last_error ? error : "");
102
+   blog(LOG_WARNING, "Stream output type '%s' failed to start!%s%s", type,
103
+           hasLastError ? "  Last Error: " : "",
104
+           hasLastError ? error : "");
105
    return false;
106
 }
107
 
108
@@ -877,7 +896,7 @@
109
 
110
    if (!dir) {
111
        if (main->isVisible())
112
-           OBSMessageBox::information(main,
113
+           OBSMessageBox::warning(main,
114
                    QTStr("Output.BadPath.Title"),
115
                    QTStr("Output.BadPath.Text"));
116
        else
117
@@ -1506,30 +1525,42 @@
118
                obs_output_get_signal_handler(streamOutput),
119
                "stop", OBSStopStreaming, this);
120
 
121
-       const char *codec =
122
-           obs_output_get_supported_audio_codecs(streamOutput);
123
-       if (!codec) {
124
-           return false;
125
-       }
126
+       bool isEncoded = obs_output_get_flags(streamOutput)
127
+           & OBS_OUTPUT_ENCODED;
128
 
129
-       if (strcmp(codec, "aac") == 0) {
130
-           streamAudioEnc = aacTrack[trackIndex - 1];
131
-       } else {
132
-           const char *id = FindAudioEncoderFromCodec(codec);
133
-           int audioBitrate = GetAudioBitrate(trackIndex - 1);
134
-           obs_data_t *settings = obs_data_create();
135
-           obs_data_set_int(settings, "bitrate", audioBitrate);
136
-
137
-           streamAudioEnc = obs_audio_encoder_create(id,
138
-                   "alt_audio_enc", nullptr,
139
-                   trackIndex - 1, nullptr);
140
-           if (!streamAudioEnc)
141
+       if (isEncoded) {
142
+           const char *codec =
143
+               obs_output_get_supported_audio_codecs(
144
+                       streamOutput);
145
+           if (!codec) {
146
+               blog(LOG_WARNING, "Failed to load audio codec");
147
                return false;
148
+           }
149
 
150
-           obs_encoder_update(streamAudioEnc, settings);
151
-           obs_encoder_set_audio(streamAudioEnc, obs_get_audio());
152
-
153
-           obs_data_release(settings);
154
+           if (strcmp(codec, "aac") == 0) {
155
+               streamAudioEnc = aacTrack[trackIndex - 1];
156
+           } else {
157
+               obs_data_t *settings = obs_data_create();
158
+               const char *id =
159
+                   FindAudioEncoderFromCodec(codec);
160
+               int audioBitrate =
161
+                   GetAudioBitrate(trackIndex - 1);
162
+               
163
+               obs_data_set_int(settings, "bitrate",
164
+                       audioBitrate);
165
+               streamAudioEnc = obs_audio_encoder_create(id,
166
+                       "alt_audio_enc", nullptr,
167
+                       trackIndex - 1, nullptr);
168
+
169
+               if (!streamAudioEnc)
170
+                   return false;
171
+
172
+               obs_encoder_update(streamAudioEnc, settings);
173
+               obs_encoder_set_audio(streamAudioEnc,
174
+                       obs_get_audio());
175
+
176
+               obs_data_release(settings);
177
+           }
178
        }
179
 
180
        outputType = type;
181
@@ -1581,12 +1612,15 @@
182
    }
183
 
184
    const char *error = obs_output_get_last_error(streamOutput);
185
-   bool has_last_error = error && *error;
186
+   bool hasLastError = error && *error;
187
+   if (hasLastError)
188
+       lastError = error;
189
+   else
190
+       lastError = string();
191
 
192
-   blog(LOG_WARNING, "Stream output type '%s' failed to start!%s%s",
193
-           type,
194
-           has_last_error ? "  Last Error: " : "",
195
-           has_last_error ? error : "");
196
+   blog(LOG_WARNING, "Stream output type '%s' failed to start!%s%s", type,
197
+           hasLastError ? "  Last Error: " : "",
198
+           hasLastError ? error : "");
199
    return false;
200
 }
201
 
202
@@ -1629,7 +1663,7 @@
203
 
204
        if (!dir) {
205
            if (main->isVisible())
206
-               OBSMessageBox::information(main,
207
+               OBSMessageBox::warning(main,
208
                        QTStr("Output.BadPath.Title"),
209
                        QTStr("Output.BadPath.Text"));
210
            else
211
@@ -1729,7 +1763,7 @@
212
 
213
        if (!dir) {
214
            if (main->isVisible())
215
-               OBSMessageBox::information(main,
216
+               OBSMessageBox::warning(main,
217
                        QTStr("Output.BadPath.Title"),
218
                        QTStr("Output.BadPath.Text"));
219
            else
220
obs-studio-23.1.0.tar.xz/UI/window-basic-main-outputs.hpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-main-outputs.hpp Changed
9
 
1
@@ -15,6 +15,7 @@
2
    OBSBasic               *main;
3
 
4
    std::string            outputType;
5
+   std::string            lastError;
6
 
7
    OBSSignal              startRecording;
8
    OBSSignal              stopRecording;
9
obs-studio-23.1.0.tar.xz/UI/window-basic-main-profiles.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-main-profiles.cpp Changed
26
 
1
@@ -107,13 +107,13 @@
2
            return false;
3
        }
4
        if (name.empty()) {
5
-           OBSMessageBox::information(parent,
6
+           OBSMessageBox::warning(parent,
7
                    QTStr("NoNameEntered.Title"),
8
                    QTStr("NoNameEntered.Text"));
9
            continue;
10
        }
11
        if (ProfileExists(name.c_str())) {
12
-           OBSMessageBox::information(parent,
13
+           OBSMessageBox::warning(parent,
14
                    QTStr("NameExists.Title"),
15
                    QTStr("NameExists.Text"));
16
            continue;
17
@@ -526,7 +526,7 @@
18
                    profileDir + "/recordEncoder.json");
19
            RefreshProfiles();
20
        } else {
21
-           OBSMessageBox::information(this,
22
+           OBSMessageBox::warning(this,
23
                    QTStr("Basic.MainMenu.Profile.Import"),
24
                    QTStr("Basic.MainMenu.Profile.Exists"));
25
        }
26
obs-studio-23.1.0.tar.xz/UI/window-basic-main-scene-collections.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-main-scene-collections.cpp Changed
17
 
1
@@ -114,13 +114,13 @@
2
            return false;
3
        }
4
        if (name.empty()) {
5
-           OBSMessageBox::information(parent,
6
+           OBSMessageBox::warning(parent,
7
                    QTStr("NoNameEntered.Title"),
8
                    QTStr("NoNameEntered.Text"));
9
            continue;
10
        }
11
        if (SceneCollectionExists(name.c_str())) {
12
-           OBSMessageBox::information(parent,
13
+           OBSMessageBox::warning(parent,
14
                    QTStr("NameExists.Title"),
15
                    QTStr("NameExists.Text"));
16
            continue;
17
obs-studio-23.1.0.tar.xz/UI/window-basic-main-transitions.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-main-transitions.cpp Changed
73
 
1
@@ -453,7 +453,7 @@
2
 
3
    if (accepted) {
4
        if (name.empty()) {
5
-           OBSMessageBox::information(this,
6
+           OBSMessageBox::warning(this,
7
                    QTStr("NoNameEntered.Title"),
8
                    QTStr("NoNameEntered.Text"));
9
            AddTransition();
10
@@ -462,7 +462,7 @@
11
 
12
        source = FindTransition(name.c_str());
13
        if (source) {
14
-           OBSMessageBox::information(this,
15
+           OBSMessageBox::warning(this,
16
                    QTStr("NameExists.Title"),
17
                    QTStr("NameExists.Text"));
18
 
19
@@ -559,7 +559,7 @@
20
 
21
    if (accepted) {
22
        if (name.empty()) {
23
-           OBSMessageBox::information(this,
24
+           OBSMessageBox::warning(this,
25
                    QTStr("NoNameEntered.Title"),
26
                    QTStr("NoNameEntered.Text"));
27
            RenameTransition();
28
@@ -568,7 +568,7 @@
29
 
30
        source = FindTransition(name.c_str());
31
        if (source) {
32
-           OBSMessageBox::information(this,
33
+           OBSMessageBox::warning(this,
34
                    QTStr("NameExists.Title"),
35
                    QTStr("NameExists.Text"));
36
 
37
@@ -1234,13 +1234,16 @@
38
        RefreshQuickTransitions();
39
 
40
        programLabel = new QLabel(QTStr("StudioMode.Program"));
41
-       programLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
42
+       programLabel->setSizePolicy(QSizePolicy::Preferred,
43
+               QSizePolicy::Preferred);
44
+       programLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
45
        programLabel->setProperty("themeID", "previewProgramLabels");
46
 
47
        programWidget = new QWidget();
48
        programLayout = new QVBoxLayout();
49
 
50
        programLayout->setContentsMargins(0, 0, 0, 0);
51
+       programLayout->setSpacing(0);
52
 
53
        programLayout->addWidget(programLabel);
54
        programLayout->addWidget(program);
55
@@ -1305,6 +1308,8 @@
56
 
57
 void OBSBasic::RenderProgram(void *data, uint32_t cx, uint32_t cy)
58
 {
59
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_DEFAULT, "RenderProgram");
60
+
61
    OBSBasic *window = static_cast<OBSBasic*>(data);
62
    obs_video_info ovi;
63
 
64
@@ -1333,6 +1338,8 @@
65
    gs_projection_pop();
66
    gs_viewport_pop();
67
 
68
+   GS_DEBUG_MARKER_END();
69
+
70
    UNUSED_PARAMETER(cx);
71
    UNUSED_PARAMETER(cy);
72
 }
73
obs-studio-23.1.0.tar.xz/UI/window-basic-main.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-main.cpp Changed
676
 
1
@@ -258,6 +258,8 @@
2
    ui->scenes->setAttribute(Qt::WA_MacShowFocusRect, false);
3
    ui->sources->setAttribute(Qt::WA_MacShowFocusRect, false);
4
 
5
+   ui->scenes->setItemDelegate(new SceneRenameDelegate(ui->scenes));
6
+
7
    auto displayResize = [this]() {
8
        struct obs_video_info ovi;
9
 
10
@@ -378,7 +380,6 @@
11
    QPoint newPos = curPos + statsDockPos;
12
    statsDock->move(newPos);
13
 
14
-   ui->previewLabel->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
15
    ui->previewLabel->setProperty("themeID", "previewProgramLabels");
16
 
17
    bool labels = config_get_bool(GetGlobalConfig(),
18
@@ -788,13 +789,18 @@
19
    blog(LOG_INFO, "%s- filter: '%s' (%s)", indent.c_str(), name, id);
20
 }
21
 
22
-static bool LogSceneItem(obs_scene_t*, obs_sceneitem_t *item, void*)
23
+static bool LogSceneItem(obs_scene_t*, obs_sceneitem_t *item, void *v_val)
24
 {
25
    obs_source_t *source = obs_sceneitem_get_source(item);
26
    const char *name = obs_source_get_name(source);
27
    const char *id = obs_source_get_id(source);
28
+   int indent_count = (int)(intptr_t)v_val;
29
+   string indent;
30
+
31
+   for (int i = 0; i < indent_count; i++)
32
+       indent += "    ";
33
 
34
-   blog(LOG_INFO, "    - source: '%s' (%s)", name, id);
35
+   blog(LOG_INFO, "%s- source: '%s' (%s)", indent.c_str(), name, id);
36
 
37
    obs_monitoring_type monitoring_type =
38
        obs_source_get_monitoring_type(source);
39
@@ -805,10 +811,12 @@
40
            ? "monitor only"
41
            : "monitor and output";
42
 
43
-       blog(LOG_INFO, "        - monitoring: %s", type);
44
+       blog(LOG_INFO, "    %s- monitoring: %s", indent.c_str(), type);
45
    }
46
-
47
-   obs_source_enum_filters(source, LogFilter, (void*)(intptr_t)2);
48
+   int child_indent = 1 + indent_count;
49
+   obs_source_enum_filters(source, LogFilter, (void*)(intptr_t)child_indent);
50
+   if (obs_sceneitem_is_group(item))
51
+       obs_sceneitem_group_enum_items(item, LogSceneItem, (void*)(intptr_t)child_indent);
52
    return true;
53
 }
54
 
55
@@ -825,7 +833,7 @@
56
        const char *name = obs_source_get_name(source);
57
 
58
        blog(LOG_INFO, "- scene '%s':", name);
59
-       obs_scene_enum_items(scene, LogSceneItem, nullptr);
60
+       obs_scene_enum_items(scene, LogSceneItem, (void*)(intptr_t)1);
61
        obs_source_enum_filters(source, LogFilter, (void*)(intptr_t)1);
62
    }
63
 
64
@@ -1033,6 +1041,9 @@
65
        opt_start_replaybuffer = false;
66
    }
67
 
68
+   copyString = nullptr;
69
+   copyFiltersString = nullptr;
70
+
71
    LogScenes();
72
 
73
    disableSaving--;
74
@@ -1629,14 +1640,12 @@
75
    SET_VISIBILITY("ShowStatusBar", toggleStatusBar);
76
 #undef SET_VISIBILITY
77
 
78
-#ifndef __APPLE__
79
    {
80
        ProfileScope("OBSBasic::Load");
81
        disableSaving--;
82
        Load(savePath);
83
        disableSaving++;
84
    }
85
-#endif
86
 
87
    TimedCheckForUpdates();
88
    loaded = true;
89
@@ -1658,9 +1667,7 @@
90
    }
91
 #endif
92
 
93
-#ifndef __APPLE__
94
    RefreshSceneCollections();
95
-#endif
96
    RefreshProfiles();
97
    disableSaving--;
98
 
99
@@ -1798,28 +1805,12 @@
100
    ui->actionCheckForUpdates = nullptr;
101
 #endif
102
 
103
+   OnFirstLoad();
104
+
105
 #ifdef __APPLE__
106
-   /* This is an incredibly unpleasant hack for macOS to isolate CEF
107
-    * initialization until after all tasks related to Qt startup and main
108
-    * window initialization have completed.  There is a macOS-specific bug
109
-    * within either CEF and/or Qt that can cause a crash if both Qt and
110
-    * CEF are loading at the same time.
111
-    *
112
-    * CEF will typically load fine after about two iterations from this
113
-    * point, and all Qt tasks are typically fully completed after about
114
-    * four or five iterations, but to be "ultra" safe, an arbitrarily
115
-    * large number such as 10 is used.  This hack is extremely unpleasant,
116
-    * but is worth doing instead of being forced to isolate the entire
117
-    * browser plugin in to a separate process as before.
118
-    *
119
-    * Again, this hack is specific to macOS only.  Fortunately, on other
120
-    * operating systems, such issues do not occur. */
121
-   QMetaObject::invokeMethod(this, "DeferredLoad",
122
+   QMetaObject::invokeMethod(this, "DeferredSysTrayLoad",
123
            Qt::QueuedConnection,
124
-           Q_ARG(QString, QT_UTF8(savePath)),
125
            Q_ARG(int, 10));
126
-#else
127
-   OnFirstLoad();
128
 #endif
129
 }
130
 
131
@@ -1828,7 +1819,7 @@
132
    if (api)
133
        api->on_event(OBS_FRONTEND_EVENT_FINISHED_LOADING);
134
 
135
-#ifdef BROWSER_AVAILABLE
136
+#if defined(BROWSER_AVAILABLE) && defined(_WIN32)
137
    /* Attempt to load init screen if available */
138
    if (cef) {
139
        WhatsNewInfoThread *wnit = new WhatsNewInfoThread();
140
@@ -1846,20 +1837,15 @@
141
    Auth::Load();
142
 }
143
 
144
-void OBSBasic::DeferredLoad(const QString &file, int requeueCount)
145
+void OBSBasic::DeferredSysTrayLoad(int requeueCount)
146
 {
147
    if (--requeueCount > 0) {
148
-       QMetaObject::invokeMethod(this, "DeferredLoad",
149
+       QMetaObject::invokeMethod(this, "DeferredSysTrayLoad",
150
                Qt::QueuedConnection,
151
-               Q_ARG(QString, file),
152
                Q_ARG(int, requeueCount));
153
        return;
154
    }
155
 
156
-   Load(QT_TO_UTF8(file));
157
-   RefreshSceneCollections();
158
-   OnFirstLoad();
159
-
160
    /* Minimizng to tray on initial startup does not work on mac
161
     * unless it is done in the deferred load */
162
    SystemTray(true);
163
@@ -2173,6 +2159,19 @@
164
            this, this);
165
    LoadHotkeyPair(replayBufHotkeys,
166
            "OBSBasic.StartReplayBuffer", "OBSBasic.StopReplayBuffer");
167
+
168
+   togglePreviewHotkeys = obs_hotkey_pair_register_frontend(
169
+           "OBSBasic.EnablePreview",
170
+           Str("Basic.Main.PreviewConextMenu.Enable"),
171
+           "OBSBasic.DisablePreview",
172
+           Str("Basic.Main.Preview.Disable"),
173
+           MAKE_CALLBACK(!basic.previewEnabled,
174
+               basic.EnablePreview, "Enabling preview"),
175
+           MAKE_CALLBACK(basic.previewEnabled,
176
+               basic.DisablePreview, "Disabling preview"),
177
+           this, this);
178
+   LoadHotkeyPair(togglePreviewHotkeys,
179
+           "OBSBasic.EnablePreview", "OBSBasic.DisablePreview");
180
 #undef MAKE_CALLBACK
181
 
182
    auto togglePreviewProgram = [] (void *data, obs_hotkey_id,
183
@@ -2210,6 +2209,7 @@
184
    obs_hotkey_pair_unregister(streamingHotkeys);
185
    obs_hotkey_pair_unregister(recordingHotkeys);
186
    obs_hotkey_pair_unregister(replayBufHotkeys);
187
+   obs_hotkey_pair_unregister(togglePreviewHotkeys);
188
    obs_hotkey_unregister(forceStreamingStopHotkey);
189
    obs_hotkey_unregister(togglePreviewProgramHotkey);
190
    obs_hotkey_unregister(transitionHotkey);
191
@@ -2768,7 +2768,7 @@
192
            return;
193
 
194
        if (name.empty()) {
195
-           OBSMessageBox::information(this,
196
+           OBSMessageBox::warning(this,
197
                    QTStr("NoNameEntered.Title"),
198
                    QTStr("NoNameEntered.Text"));
199
            continue;
200
@@ -2778,7 +2778,7 @@
201
        obs_source_release(sourceTest);
202
 
203
        if (sourceTest) {
204
-           OBSMessageBox::information(this,
205
+           OBSMessageBox::warning(this,
206
                    QTStr("NameExists.Title"),
207
                    QTStr("NameExists.Text"));
208
            continue;
209
@@ -3143,7 +3143,7 @@
210
            return;
211
 
212
        if (name.empty()) {
213
-           OBSMessageBox::information(this,
214
+           OBSMessageBox::warning(this,
215
                    QTStr("NoNameEntered.Title"),
216
                    QTStr("NoNameEntered.Text"));
217
            continue;
218
@@ -3151,7 +3151,7 @@
219
 
220
        obs_source_t *source = obs_get_source_by_name(name.c_str());
221
        if (source) {
222
-           OBSMessageBox::information(this,
223
+           OBSMessageBox::warning(this,
224
                    QTStr("NameExists.Title"),
225
                    QTStr("NameExists.Text"));
226
 
227
@@ -3311,6 +3311,8 @@
228
    if (!box)
229
        return;
230
 
231
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_DEFAULT, "DrawBackdrop");
232
+
233
    gs_effect_t    *solid = obs_get_base_effect(OBS_EFFECT_SOLID);
234
    gs_eparam_t    *color = gs_effect_get_param_by_name(solid, "color");
235
    gs_technique_t *tech  = gs_effect_get_technique(solid, "Solid");
236
@@ -3333,10 +3335,14 @@
237
    gs_technique_end(tech);
238
 
239
    gs_load_vertexbuffer(nullptr);
240
+
241
+   GS_DEBUG_MARKER_END();
242
 }
243
 
244
 void OBSBasic::RenderMain(void *data, uint32_t cx, uint32_t cy)
245
 {
246
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_DEFAULT, "RenderMain");
247
+
248
    OBSBasic *window = static_cast<OBSBasic*>(data);
249
    obs_video_info ovi;
250
 
251
@@ -3348,9 +3354,11 @@
252
    gs_viewport_push();
253
    gs_projection_push();
254
 
255
-   QSize previewSize = GetPixelSize(window->ui->preview);
256
-   float right  = float(previewSize.width())  - window->previewX;
257
-   float bottom = float(previewSize.height()) - window->previewY;
258
+   obs_display_t *display = window->ui->preview->GetDisplay();
259
+   uint32_t width, height;
260
+   obs_display_size(display, &width, &height);
261
+   float right  = float(width)  - window->previewX;
262
+   float bottom = float(height) - window->previewY;
263
 
264
    gs_ortho(-window->previewX, right,
265
        -window->previewY, bottom,
266
@@ -3367,7 +3375,6 @@
267
 
268
    window->DrawBackdrop(float(ovi.base_width), float(ovi.base_height));
269
 
270
-
271
    if (window->IsPreviewProgramMode()) {
272
        OBSScene scene = window->GetCurrentScene();
273
        obs_source_t *source = obs_scene_get_source(scene);
274
@@ -3393,6 +3400,8 @@
275
    gs_projection_pop();
276
    gs_viewport_pop();
277
 
278
+   GS_DEBUG_MARKER_END();
279
+
280
    UNUSED_PARAMETER(cx);
281
    UNUSED_PARAMETER(cy);
282
 }
283
@@ -3415,6 +3424,11 @@
284
        service = newService;
285
 }
286
 
287
+int OBSBasic::GetTransitionDuration()
288
+{
289
+   return ui->transitionDuration->value();
290
+}
291
+
292
 bool OBSBasic::StreamingActive() const
293
 {
294
    if (!outputHandler)
295
@@ -3984,9 +3998,19 @@
296
            this, SLOT(on_actionAddScene_triggered()));
297
 
298
    if (item) {
299
+       QAction *pasteFilters = new QAction(
300
+               QTStr("Paste.Filters"), this);
301
+       pasteFilters->setEnabled(copyFiltersString);
302
+       connect(pasteFilters, SIGNAL(triggered()), this,
303
+               SLOT(ScenePasteFilters()));
304
+
305
        popup.addSeparator();
306
        popup.addAction(QTStr("Duplicate"),
307
                this, SLOT(DuplicateSelectedScene()));
308
+       popup.addAction(QTStr("Copy.Filters"),
309
+               this, SLOT(SceneCopyFilters()));
310
+       popup.addAction(pasteFilters);
311
+       popup.addSeparator();
312
        popup.addAction(QTStr("Rename"),
313
                this, SLOT(EditSceneName()));
314
        popup.addAction(QTStr("Remove"),
315
@@ -4080,7 +4104,7 @@
316
 
317
    if (accepted) {
318
        if (name.empty()) {
319
-           OBSMessageBox::information(this,
320
+           OBSMessageBox::warning(this,
321
                    QTStr("NoNameEntered.Title"),
322
                    QTStr("NoNameEntered.Text"));
323
            on_actionAddScene_triggered();
324
@@ -4089,7 +4113,7 @@
325
 
326
        obs_source_t *source = obs_get_source_by_name(name.c_str());
327
        if (source) {
328
-           OBSMessageBox::information(this,
329
+           OBSMessageBox::warning(this,
330
                    QTStr("NameExists.Title"),
331
                    QTStr("NameExists.Text"));
332
 
333
@@ -4840,7 +4864,7 @@
334
    ui->menuLogFiles->setEnabled(true);
335
 
336
    if (text.isEmpty()) {
337
-       OBSMessageBox::information(this,
338
+       OBSMessageBox::critical(this,
339
                QTStr("LogReturnDialog.ErrorUploadingLog"),
340
                error);
341
        return;
342
@@ -4869,11 +4893,11 @@
343
        listItem->setText(QT_UTF8(prevName));
344
 
345
        if (foundSource) {
346
-           OBSMessageBox::information(parent,
347
+           OBSMessageBox::warning(parent,
348
                QTStr("NameExists.Title"),
349
                QTStr("NameExists.Text"));
350
        } else if (name.empty()) {
351
-           OBSMessageBox::information(parent,
352
+           OBSMessageBox::warning(parent,
353
                QTStr("NoNameEntered.Title"),
354
                QTStr("NoNameEntered.Text"));
355
        }
356
@@ -4954,6 +4978,9 @@
357
    }
358
 
359
    if (!outputHandler->StartStreaming(service)) {
360
+       QString message = !outputHandler->lastError.empty()
361
+           ? QTStr(outputHandler->lastError.c_str())
362
+           : QTStr("Output.StartFailedGeneric");
363
        ui->streamButton->setText(QTStr("Basic.Main.StartStreaming"));
364
        ui->streamButton->setEnabled(true);
365
        ui->streamButton->setChecked(false);
366
@@ -4963,9 +4990,8 @@
367
            sysTrayStream->setEnabled(true);
368
        }
369
 
370
-       QMessageBox::critical(this,
371
-               QTStr("Output.StartStreamFailed"),
372
-               QTStr("Output.StartFailedGeneric"));
373
+       QMessageBox::critical(this, QTStr("Output.StartStreamFailed"),
374
+               message);
375
        return;
376
    }
377
 
378
@@ -5164,9 +5190,10 @@
379
 
380
 void OBSBasic::StreamingStop(int code, QString last_error)
381
 {
382
-   const char *errorDescription;
383
+   const char *errorDescription = "";
384
    DStr errorMessage;
385
    bool use_last_error = false;
386
+   bool encode_error = false;
387
 
388
    switch (code) {
389
    case OBS_OUTPUT_BAD_PATH:
390
@@ -5182,6 +5209,10 @@
391
        errorDescription = Str("Output.ConnectFail.InvalidStream");
392
        break;
393
 
394
+   case OBS_OUTPUT_ENCODE_ERROR:
395
+       encode_error = true;
396
+       break;
397
+
398
    default:
399
    case OBS_OUTPUT_ERROR:
400
        use_last_error = true;
401
@@ -5220,10 +5251,16 @@
402
 
403
    blog(LOG_INFO, STREAMING_STOP);
404
 
405
-   if (code != OBS_OUTPUT_SUCCESS && isVisible()) {
406
+   if (encode_error) {
407
+       OBSMessageBox::information(this,
408
+               QTStr("Output.StreamEncodeError.Title"),
409
+               QTStr("Output.StreamEncodeError.Msg"));
410
+
411
+   } else if (code != OBS_OUTPUT_SUCCESS && isVisible()) {
412
        OBSMessageBox::information(this,
413
                QTStr("Output.ConnectFail.Title"),
414
                QT_UTF8(errorMessage));
415
+
416
    } else if (code != OBS_OUTPUT_SUCCESS && !isVisible()) {
417
        SysTrayNotify(QT_UTF8(errorDescription), QSystemTrayIcon::Warning);
418
    }
419
@@ -5332,7 +5369,7 @@
420
    blog(LOG_INFO, RECORDING_START);
421
 }
422
 
423
-void OBSBasic::RecordingStop(int code)
424
+void OBSBasic::RecordingStop(int code, QString last_error)
425
 {
426
    ui->statusbar->RecordingStopped();
427
    ui->recordButton->setText(QTStr("Basic.Main.StartRecording"));
428
@@ -5344,19 +5381,37 @@
429
    blog(LOG_INFO, RECORDING_STOP);
430
 
431
    if (code == OBS_OUTPUT_UNSUPPORTED && isVisible()) {
432
-       OBSMessageBox::information(this,
433
+       OBSMessageBox::critical(this,
434
                QTStr("Output.RecordFail.Title"),
435
                QTStr("Output.RecordFail.Unsupported"));
436
 
437
+   } else if (code == OBS_OUTPUT_ENCODE_ERROR && isVisible()) {
438
+       OBSMessageBox::warning(this,
439
+               QTStr("Output.RecordError.Title"),
440
+               QTStr("Output.RecordError.EncodeErrorMsg"));
441
+
442
    } else if (code == OBS_OUTPUT_NO_SPACE && isVisible()) {
443
-       OBSMessageBox::information(this,
444
+       OBSMessageBox::warning(this,
445
                QTStr("Output.RecordNoSpace.Title"),
446
                QTStr("Output.RecordNoSpace.Msg"));
447
 
448
    } else if (code != OBS_OUTPUT_SUCCESS && isVisible()) {
449
-       OBSMessageBox::information(this,
450
+
451
+       const char *errorDescription;
452
+       DStr errorMessage;
453
+       bool use_last_error = true;
454
+
455
+       errorDescription = Str("Output.RecordError.Msg");
456
+
457
+       if (use_last_error && !last_error.isEmpty())
458
+           dstr_printf(errorMessage, "%s\n\n%s", errorDescription,
459
+               QT_TO_UTF8(last_error));
460
+       else
461
+           dstr_copy(errorMessage, errorDescription);
462
+
463
+       OBSMessageBox::critical(this,
464
                QTStr("Output.RecordError.Title"),
465
-               QTStr("Output.RecordError.Msg"));
466
+               QT_UTF8(errorMessage));
467
 
468
    } else if (code == OBS_OUTPUT_UNSUPPORTED && !isVisible()) {
469
        SysTrayNotify(QTStr("Output.RecordFail.Unsupported"),
470
@@ -5497,17 +5552,17 @@
471
    blog(LOG_INFO, REPLAY_BUFFER_STOP);
472
 
473
    if (code == OBS_OUTPUT_UNSUPPORTED && isVisible()) {
474
-       OBSMessageBox::information(this,
475
+       OBSMessageBox::critical(this,
476
                QTStr("Output.RecordFail.Title"),
477
                QTStr("Output.RecordFail.Unsupported"));
478
 
479
    } else if (code == OBS_OUTPUT_NO_SPACE && isVisible()) {
480
-       OBSMessageBox::information(this,
481
+       OBSMessageBox::warning(this,
482
                QTStr("Output.RecordNoSpace.Title"),
483
                QTStr("Output.RecordNoSpace.Msg"));
484
 
485
    } else if (code != OBS_OUTPUT_SUCCESS && isVisible()) {
486
-       OBSMessageBox::information(this,
487
+       OBSMessageBox::critical(this,
488
                QTStr("Output.RecordError.Title"),
489
                QTStr("Output.RecordError.Msg"));
490
 
491
@@ -6090,20 +6145,39 @@
492
            &boundsType);
493
 }
494
 
495
-static bool center_to_scene(obs_scene_t *, obs_sceneitem_t *item, void *)
496
+enum class CenterType {
497
+   Scene,
498
+   Vertical,
499
+   Horizontal
500
+};
501
+
502
+static bool center_to_scene(obs_scene_t *, obs_sceneitem_t *item, void *param)
503
 {
504
+   CenterType centerType = *reinterpret_cast<CenterType*>(param);
505
+
506
    vec3 tl, br, itemCenter, screenCenter, offset;
507
    obs_video_info ovi;
508
+   obs_transform_info oti;
509
 
510
    if (obs_sceneitem_is_group(item))
511
-       obs_sceneitem_group_enum_items(item, center_to_scene, nullptr);
512
+       obs_sceneitem_group_enum_items(item, center_to_scene,
513
+               &centerType);
514
    if (!obs_sceneitem_selected(item))
515
        return true;
516
 
517
    obs_get_video_info(&ovi);
518
+   obs_sceneitem_get_info(item, &oti);
519
+
520
+   if (centerType == CenterType::Scene)
521
+       vec3_set(&screenCenter, float(ovi.base_width),
522
+               float(ovi.base_height), 0.0f);
523
+   else if (centerType == CenterType::Vertical)
524
+       vec3_set(&screenCenter, float(oti.bounds.x),
525
+               float(ovi.base_height), 0.0f);
526
+   else if (centerType == CenterType::Horizontal)
527
+       vec3_set(&screenCenter, float(ovi.base_width),
528
+               float(oti.bounds.y), 0.0f);
529
 
530
-   vec3_set(&screenCenter, float(ovi.base_width),
531
-           float(ovi.base_height), 0.0f);
532
    vec3_mulf(&screenCenter, &screenCenter, 0.5f);
533
 
534
    GetItemBox(item, tl, br);
535
@@ -6115,13 +6189,31 @@
536
    vec3_sub(&offset, &screenCenter, &itemCenter);
537
    vec3_add(&tl, &tl, &offset);
538
 
539
+   if (centerType == CenterType::Vertical)
540
+       tl.x = oti.pos.x;
541
+   else if (centerType == CenterType::Horizontal)
542
+       tl.y = oti.pos.y;
543
+
544
    SetItemTL(item, tl);
545
    return true;
546
 };
547
 
548
 void OBSBasic::on_actionCenterToScreen_triggered()
549
 {
550
-   obs_scene_enum_items(GetCurrentScene(), center_to_scene, nullptr);
551
+   CenterType centerType = CenterType::Scene;
552
+   obs_scene_enum_items(GetCurrentScene(), center_to_scene, &centerType);
553
+}
554
+
555
+void OBSBasic::on_actionVerticalCenter_triggered()
556
+{
557
+   CenterType centerType = CenterType::Vertical;
558
+   obs_scene_enum_items(GetCurrentScene(), center_to_scene, &centerType);
559
+}
560
+
561
+void OBSBasic::on_actionHorizontalCenter_triggered()
562
+{
563
+   CenterType centerType = CenterType::Horizontal;
564
+   obs_scene_enum_items(GetCurrentScene(), center_to_scene, &centerType);
565
 }
566
 
567
 void OBSBasic::EnablePreviewDisplay(bool enable)
568
@@ -6137,6 +6229,24 @@
569
    EnablePreviewDisplay(previewEnabled);
570
 }
571
 
572
+void OBSBasic::EnablePreview()
573
+{
574
+   if (previewProgramMode)
575
+       return;
576
+
577
+   previewEnabled = true;
578
+   EnablePreviewDisplay(true);
579
+}
580
+
581
+void OBSBasic::DisablePreview()
582
+{
583
+   if (previewProgramMode)
584
+       return;
585
+
586
+   previewEnabled = false;
587
+   EnablePreviewDisplay(false);
588
+}
589
+
590
 static bool nudge_callback(obs_scene_t*, obs_sceneitem_t *item, void *param)
591
 {
592
    if (obs_sceneitem_locked(item))
593
@@ -6744,7 +6854,7 @@
594
 void OBSBasic::SysTrayNotify(const QString &text,
595
        QSystemTrayIcon::MessageIcon n)
596
 {
597
-   if (QSystemTrayIcon::supportsMessages()) {
598
+   if (trayIcon && QSystemTrayIcon::supportsMessages()) {
599
        QSystemTrayIcon::MessageIcon icon =
600
                QSystemTrayIcon::MessageIcon(n);
601
        trayIcon->showMessage("OBS Studio", text, icon, 10000);
602
@@ -6755,6 +6865,8 @@
603
 {
604
    if (!QSystemTrayIcon::isSystemTrayAvailable())
605
        return;
606
+   if (!trayIcon && !firstStarted)
607
+       return;
608
 
609
    bool sysTrayWhenStarted = config_get_bool(GetGlobalConfig(),
610
            "BasicWindow", "SysTrayWhenStarted");
611
@@ -6861,6 +6973,24 @@
612
    obs_source_copy_filters(dstSource, source);
613
 }
614
 
615
+void OBSBasic::SceneCopyFilters()
616
+{
617
+   copyFiltersString = obs_source_get_name(GetCurrentSceneSource());
618
+}
619
+
620
+void OBSBasic::ScenePasteFilters()
621
+{
622
+   OBSSource source = obs_get_source_by_name(copyFiltersString);
623
+   obs_source_release(source);
624
+
625
+   OBSSource dstSource = GetCurrentSceneSource();
626
+
627
+   if (source == dstSource)
628
+       return;
629
+
630
+   obs_source_copy_filters(dstSource, source);
631
+}
632
+
633
 void OBSBasic::on_actionCopyFilters_triggered()
634
 {
635
    OBSSceneItem item = GetCurrentSceneItem();
636
@@ -7178,3 +7308,39 @@
637
        return false;
638
    return outputHandler->ReplayBufferActive();
639
 }
640
+
641
+SceneRenameDelegate::SceneRenameDelegate(QObject *parent)
642
+   : QStyledItemDelegate(parent)
643
+{
644
+}
645
+
646
+void SceneRenameDelegate::setEditorData(QWidget *editor,
647
+       const QModelIndex &index) const
648
+{
649
+   QStyledItemDelegate::setEditorData(editor, index);
650
+   QLineEdit *lineEdit = qobject_cast<QLineEdit*>(editor);
651
+   if (lineEdit)
652
+       lineEdit->selectAll();
653
+}
654
+
655
+bool SceneRenameDelegate::eventFilter(QObject *editor, QEvent *event)
656
+{
657
+   if (event->type() == QEvent::KeyPress) {
658
+       QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
659
+       if (keyEvent->key() == Qt::Key_Escape) {
660
+           QLineEdit *lineEdit = qobject_cast<QLineEdit*>(editor);
661
+           if (lineEdit)
662
+               lineEdit->undo();
663
+       }
664
+   }
665
+
666
+   return QStyledItemDelegate::eventFilter(editor, event);
667
+}
668
+
669
+void OBSBasic::UpdatePatronJson(const QString &text, const QString &error)
670
+{
671
+   if (!error.isEmpty())
672
+       return;
673
+
674
+   patronJson = QT_TO_UTF8(text);
675
+}
676
obs-studio-23.1.0.tar.xz/UI/window-basic-main.hpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-main.hpp Changed
110
 
1
@@ -21,6 +21,7 @@
2
 #include <QAction>
3
 #include <QWidgetAction>
4
 #include <QSystemTrayIcon>
5
+#include <QStyledItemDelegate>
6
 #include <obs.hpp>
7
 #include <vector>
8
 #include <memory>
9
@@ -113,6 +114,7 @@
10
 class OBSBasic : public OBSMainWindow {
11
    Q_OBJECT
12
 
13
+   friend class OBSAbout;
14
    friend class OBSBasicPreview;
15
    friend class OBSBasicStatusBar;
16
    friend class OBSBasicSourceSelect;
17
@@ -233,6 +235,9 @@
18
    QPointer<QVBoxLayout> programLayout;
19
    QPointer<QLabel> programLabel;
20
 
21
+   QScopedPointer<QThread> patronJsonThread;
22
+   std::string patronJson;
23
+
24
    void          UpdateMultiviewProjectorMenu();
25
 
26
    void          DrawBackdrop(float cx, float cy);
27
@@ -323,7 +328,7 @@
28
    int GetTopSelectedSourceItem();
29
 
30
    obs_hotkey_pair_id streamingHotkeys, recordingHotkeys,
31
-                      replayBufHotkeys;
32
+                      replayBufHotkeys, togglePreviewHotkeys;
33
    obs_hotkey_id forceStreamingStopHotkey;
34
 
35
    void InitDefaultTransitions();
36
@@ -437,7 +442,7 @@
37
 
38
    void RecordingStart();
39
    void RecordStopping();
40
-   void RecordingStop(int code);
41
+   void RecordingStop(int code, QString last_error);
42
 
43
    void StartReplayBuffer();
44
    void StopReplayBuffer();
45
@@ -462,6 +467,8 @@
46
            bool create_new,
47
            const QString &name = QString());
48
 
49
+   void UpdatePatronJson(const QString &text, const QString &error);
50
+
51
 private slots:
52
    void AddSceneItem(OBSSceneItem item);
53
    void AddScene(OBSSource source);
54
@@ -525,6 +532,12 @@
55
    void AudioMixerCopyFilters();
56
    void AudioMixerPasteFilters();
57
 
58
+   void EnablePreview();
59
+   void DisablePreview();
60
+
61
+   void SceneCopyFilters();
62
+   void ScenePasteFilters();
63
+
64
 private:
65
    /* OBS Callbacks */
66
    static void SceneReordered(void *data, calldata_t *params);
67
@@ -564,6 +577,8 @@
68
    obs_service_t *GetService();
69
    void          SetService(obs_service_t *service);
70
 
71
+   int GetTransitionDuration();
72
+
73
    inline bool IsPreviewProgramMode() const
74
    {
75
        return os_atomic_load_bool(&previewProgramMode);
76
@@ -672,6 +687,8 @@
77
    void on_actionFitToScreen_triggered();
78
    void on_actionStretchToScreen_triggered();
79
    void on_actionCenterToScreen_triggered();
80
+   void on_actionVerticalCenter_triggered();
81
+   void on_actionHorizontalCenter_triggered();
82
 
83
    void on_scenes_currentItemChanged(QListWidgetItem *current,
84
            QListWidgetItem *prev);
85
@@ -787,7 +804,7 @@
86
    void OpenMultiviewWindow();
87
    void OpenSceneWindow();
88
 
89
-   void DeferredLoad(const QString &file, int requeueCount);
90
+   void DeferredSysTrayLoad(int requeueCount);
91
 
92
    void StackedMixerAreaContextMenuRequested();
93
 
94
@@ -816,3 +833,15 @@
95
 private:
96
    std::unique_ptr<Ui::OBSBasic> ui;
97
 };
98
+
99
+class SceneRenameDelegate : public QStyledItemDelegate {
100
+   Q_OBJECT
101
+
102
+public:
103
+   SceneRenameDelegate(QObject *parent);
104
+   virtual void setEditorData(QWidget *editor, const QModelIndex &index)
105
+       const override;
106
+
107
+protected:
108
+   virtual bool eventFilter(QObject *editor, QEvent *event) override;
109
+};
110
obs-studio-23.1.0.tar.xz/UI/window-basic-preview.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-preview.cpp Changed
170
 
1
@@ -1235,21 +1235,19 @@
2
    gs_matrix_pop();
3
 }
4
 
5
-static void DrawLine(float x1, float y1, float x2, float y2, float thickness)
6
+static void DrawLine(float x1, float y1, float x2, float y2, float thickness,
7
+       vec2 scale)
8
 {
9
-   struct matrix4 matrix;
10
-   gs_matrix_get(&matrix);
11
-
12
    float ySide = (y1 == y2) ? (y1 < 0.5f ? 1.0f : -1.0f) : 0.0f;
13
    float xSide = (x1 == x2) ? (x1 < 0.5f ? 1.0f : -1.0f) : 0.0f;
14
 
15
    gs_render_start(true);
16
 
17
    gs_vertex2f(x1, y1);
18
-   gs_vertex2f(x1 + (xSide * (thickness / matrix.x.x)),
19
-       y1 + (ySide * (thickness / matrix.y.y)));
20
-   gs_vertex2f(x2 + (xSide * (thickness / matrix.x.x)),
21
-       y2 + (ySide * (thickness / matrix.y.y)));
22
+   gs_vertex2f(x1 + (xSide * (thickness / scale.x)),
23
+       y1 + (ySide * (thickness / scale.y)));
24
+   gs_vertex2f(x2 + (xSide * (thickness / scale.x)),
25
+       y2 + (ySide * (thickness / scale.y)));
26
    gs_vertex2f(x2, y2);
27
    gs_vertex2f(x1, y1);
28
 
29
@@ -1260,31 +1258,28 @@
30
    gs_vertexbuffer_destroy(line);
31
 }
32
 
33
-static void DrawRect(float thickness)
34
+static void DrawRect(float thickness, vec2 scale)
35
 {
36
-   struct matrix4 matrix;
37
-   gs_matrix_get(&matrix);
38
-
39
    gs_render_start(true);
40
 
41
    gs_vertex2f(0.0f, 0.0f);
42
-   gs_vertex2f(0.0f + (thickness / matrix.x.x), 0.0f);
43
-   gs_vertex2f(0.0f + (thickness / matrix.x.x), 1.0f);
44
+   gs_vertex2f(0.0f + (thickness / scale.x), 0.0f);
45
+   gs_vertex2f(0.0f + (thickness / scale.x), 1.0f);
46
    gs_vertex2f(0.0f, 1.0f);
47
    gs_vertex2f(0.0f, 0.0f);
48
    gs_vertex2f(0.0f, 1.0f);
49
-   gs_vertex2f(0.0f, 1.0f - (thickness / matrix.y.y));
50
-   gs_vertex2f(1.0f, 1.0f - (thickness / matrix.y.y));
51
+   gs_vertex2f(0.0f, 1.0f - (thickness / scale.y));
52
+   gs_vertex2f(1.0f, 1.0f - (thickness / scale.y));
53
    gs_vertex2f(1.0f, 1.0f);
54
    gs_vertex2f(0.0f, 1.0f);
55
    gs_vertex2f(1.0f, 1.0f);
56
-   gs_vertex2f(1.0f - (thickness / matrix.x.x), 1.0f);
57
-   gs_vertex2f(1.0f - (thickness / matrix.x.x), 0.0f);
58
+   gs_vertex2f(1.0f - (thickness / scale.x), 1.0f);
59
+   gs_vertex2f(1.0f - (thickness / scale.x), 0.0f);
60
    gs_vertex2f(1.0f, 0.0f);
61
    gs_vertex2f(1.0f, 1.0f);
62
    gs_vertex2f(1.0f, 0.0f);
63
-   gs_vertex2f(1.0f, 0.0f + (thickness / matrix.y.y));
64
-   gs_vertex2f(0.0f, 0.0f + (thickness / matrix.y.y));
65
+   gs_vertex2f(1.0f, 0.0f + (thickness / scale.y));
66
+   gs_vertex2f(0.0f, 0.0f + (thickness / scale.y));
67
    gs_vertex2f(0.0f, 0.0f);
68
    gs_vertex2f(1.0f, 0.0f);
69
 
70
@@ -1360,6 +1355,8 @@
71
    if (!visible)
72
        return true;
73
 
74
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_DEFAULT, "DrawSelectedOverflow");
75
+
76
    obs_transform_info info;
77
    obs_sceneitem_get_info(item, &info);
78
 
79
@@ -1385,6 +1382,8 @@
80
 
81
    gs_matrix_pop();
82
 
83
+   GS_DEBUG_MARKER_END();
84
+
85
    UNUSED_PARAMETER(scene);
86
    return true;
87
 }
88
@@ -1450,6 +1449,15 @@
89
    if (!visible)
90
        return true;
91
 
92
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_DEFAULT, "DrawSelectedItem");
93
+
94
+   matrix4 curTransform;
95
+   vec2 boxScale;
96
+   gs_matrix_get(&curTransform);
97
+   obs_sceneitem_get_box_scale(item, &boxScale);
98
+   boxScale.x *= curTransform.x.x;
99
+   boxScale.y *= curTransform.y.y;
100
+
101
    obs_transform_info info;
102
    obs_sceneitem_get_info(item, &info);
103
 
104
@@ -1468,7 +1476,7 @@
105
            gs_effect_set_vec4(colParam, &blue); \
106
        else if (crop.side > 0) \
107
            gs_effect_set_vec4(colParam, &green); \
108
-       DrawLine(x1, y1, x2, y2, HANDLE_RADIUS / 2); \
109
+       DrawLine(x1, y1, x2, y2, HANDLE_RADIUS / 2, boxScale); \
110
        gs_effect_set_vec4(colParam, &red);
111
 
112
        DRAW_SIDE(left,   0.0f, 0.0f, 0.0f, 1.0f);
113
@@ -1479,9 +1487,9 @@
114
    } else {
115
        if (!selected) {
116
            gs_effect_set_vec4(colParam, &blue);
117
-           DrawRect(HANDLE_RADIUS / 2);
118
+           DrawRect(HANDLE_RADIUS / 2, boxScale);
119
        } else {
120
-           DrawRect(HANDLE_RADIUS / 2);
121
+           DrawRect(HANDLE_RADIUS / 2, boxScale);
122
        }
123
    }
124
 
125
@@ -1501,6 +1509,8 @@
126
 
127
    gs_matrix_pop();
128
 
129
+   GS_DEBUG_MARKER_END();
130
+
131
    UNUSED_PARAMETER(scene);
132
    UNUSED_PARAMETER(param);
133
    return true;
134
@@ -1517,6 +1527,8 @@
135
    if (hidden)
136
        return;
137
 
138
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_DEFAULT, "DrawOverflow");
139
+
140
    if (!overflow) {
141
        std::string path;
142
        GetDataFilePath("images/overflow.png", path);
143
@@ -1535,6 +1547,8 @@
144
    }
145
 
146
    gs_load_vertexbuffer(nullptr);
147
+
148
+   GS_DEBUG_MARKER_END();
149
 }
150
 
151
 void OBSBasicPreview::DrawSceneEditing()
152
@@ -1542,6 +1556,8 @@
153
    if (locked)
154
        return;
155
 
156
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_DEFAULT, "DrawSceneEditing");
157
+
158
    OBSBasic *main = reinterpret_cast<OBSBasic*>(App()->GetMainWindow());
159
 
160
    gs_effect_t    *solid = obs_get_base_effect(OBS_EFFECT_SOLID);
161
@@ -1567,6 +1583,8 @@
162
 
163
    gs_technique_end_pass(tech);
164
    gs_technique_end(tech);
165
+
166
+   GS_DEBUG_MARKER_END();
167
 }
168
 
169
 void OBSBasicPreview::ResetScrollingOffset()
170
obs-studio-23.1.0.tar.xz/UI/window-basic-properties.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-properties.cpp Changed
274
 
1
@@ -29,6 +29,8 @@
2
 
3
 using namespace std;
4
 
5
+static void CreateTransitionScene(OBSSource scene, char *text, uint32_t color);
6
+
7
 OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_)
8
    : QDialog                (parent),
9
      preview                (new OBSQTDisplay(this)),
10
@@ -49,6 +51,8 @@
11
    int cy = (int)config_get_int(App()->GlobalConfig(), "PropertiesWindow",
12
            "cy");
13
 
14
+   enum obs_source_type type = obs_source_get_type(source);
15
+
16
    buttonBox->setObjectName(QStringLiteral("buttonBox"));
17
    buttonBox->setStandardButtons(QDialogButtonBox::Ok |
18
                                  QDialogButtonBox::Cancel |
19
@@ -95,6 +99,13 @@
20
 
21
    setLayout(new QVBoxLayout(this));
22
    layout()->addWidget(windowSplitter);
23
+
24
+   if (type == OBS_SOURCE_TYPE_TRANSITION) {
25
+       AddPreviewButton();
26
+       connect(view, SIGNAL(PropertiesRefreshed()),
27
+               this, SLOT(AddPreviewButton()));
28
+   }
29
+
30
    layout()->addWidget(buttonBox);
31
    layout()->setAlignment(buttonBox, Qt::AlignBottom);
32
 
33
@@ -116,7 +127,11 @@
34
        obs_display_add_draw_callback(preview->GetDisplay(),
35
                OBSBasicProperties::DrawPreview, this);
36
    };
37
-   enum obs_source_type type = obs_source_get_type(source);
38
+   auto addTransitionDrawCallback = [this] ()
39
+   {
40
+       obs_display_add_draw_callback(preview->GetDisplay(),
41
+           OBSBasicProperties::DrawTransitionPreview, this);
42
+   };
43
    uint32_t caps = obs_source_get_output_flags(source);
44
    bool drawable_type = type == OBS_SOURCE_TYPE_INPUT ||
45
        type == OBS_SOURCE_TYPE_SCENE;
46
@@ -126,6 +141,59 @@
47
        preview->show();
48
        connect(preview.data(), &OBSQTDisplay::DisplayCreated,
49
                addDrawCallback);
50
+
51
+   } else if (type == OBS_SOURCE_TYPE_TRANSITION) {
52
+       sourceA = obs_source_create_private("scene", "sourceA",
53
+           nullptr);
54
+       sourceB = obs_source_create_private("scene", "sourceB",
55
+           nullptr);
56
+
57
+       obs_source_release(sourceA);
58
+       obs_source_release(sourceB);
59
+
60
+       uint32_t colorA = 0xFFB26F52;
61
+       uint32_t colorB = 0xFF6FB252;
62
+
63
+       CreateTransitionScene(sourceA, "A", colorA);
64
+       CreateTransitionScene(sourceB, "B", colorB);
65
+
66
+       /**
67
+        * The cloned source is made from scratch, rather than using
68
+        * obs_source_duplicate, as the stinger transition would not
69
+        * play correctly otherwise.
70
+        */
71
+
72
+       obs_data_t *settings = obs_source_get_settings(source);
73
+
74
+       sourceClone = obs_source_create_private(
75
+               obs_source_get_id(source), "clone", settings);
76
+       obs_source_release(sourceClone);
77
+
78
+       obs_source_inc_active(sourceClone);
79
+       obs_transition_set(sourceClone, sourceA);
80
+
81
+       obs_data_release(settings);
82
+
83
+       auto updateCallback = [=]()
84
+       {
85
+           obs_data_t *settings = obs_source_get_settings(source);
86
+           obs_source_update(sourceClone, settings);
87
+
88
+           obs_transition_clear(sourceClone);
89
+           obs_transition_set(sourceClone, sourceA);
90
+           obs_transition_force_stop(sourceClone);
91
+
92
+           obs_data_release(settings);
93
+
94
+           direction = true;
95
+       };
96
+
97
+       connect(view, &OBSPropertiesView::Changed, updateCallback);
98
+
99
+       preview->show();
100
+       connect(preview.data(), &OBSQTDisplay::DisplayCreated,
101
+           addTransitionDrawCallback);
102
+
103
    } else {
104
        preview->hide();
105
    }
106
@@ -133,10 +201,119 @@
107
 
108
 OBSBasicProperties::~OBSBasicProperties()
109
 {
110
+   if (sourceClone) {
111
+       obs_source_dec_active(sourceClone);
112
+   }
113
    obs_source_dec_showing(source);
114
    main->SaveProject();
115
 }
116
 
117
+void OBSBasicProperties::AddPreviewButton()
118
+{
119
+   QPushButton *playButton = new QPushButton(
120
+       QTStr("PreviewTransition"), this);
121
+   VScrollArea *area = view;
122
+   area->widget()->layout()->addWidget(playButton);
123
+
124
+   playButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
125
+
126
+   auto play = [=] ()
127
+   {
128
+       OBSSource start;
129
+       OBSSource end;
130
+
131
+       if (direction) {
132
+           start = sourceA;
133
+           end = sourceB;
134
+       } else {
135
+           start = sourceB;
136
+           end = sourceA;
137
+       }
138
+
139
+       obs_transition_set(sourceClone, start);
140
+       obs_transition_start(sourceClone,
141
+           OBS_TRANSITION_MODE_AUTO,
142
+           main->GetTransitionDuration(), end);
143
+       direction = !direction;
144
+
145
+       start = nullptr;
146
+       end = nullptr;
147
+   };
148
+
149
+   connect(playButton, &QPushButton::clicked, play);
150
+}
151
+
152
+static obs_source_t *CreateLabel(const char *name, size_t h)
153
+{
154
+   obs_data_t *settings = obs_data_create();
155
+   obs_data_t *font = obs_data_create();
156
+
157
+   std::string text;
158
+   text += " ";
159
+   text += name;
160
+   text += " ";
161
+
162
+#if defined(_WIN32)
163
+   obs_data_set_string(font, "face", "Arial");
164
+#elif defined(__APPLE__)
165
+   obs_data_set_string(font, "face", "Helvetica");
166
+#else
167
+   obs_data_set_string(font, "face", "Monospace");
168
+#endif
169
+   obs_data_set_int(font, "flags", 1); // Bold text
170
+   obs_data_set_int(font, "size", min(int(h), 300));
171
+
172
+   obs_data_set_obj(settings, "font", font);
173
+   obs_data_set_string(settings, "text", text.c_str());
174
+   obs_data_set_bool(settings, "outline", false);
175
+
176
+#ifdef _WIN32
177
+   const char *text_source_id = "text_gdiplus";
178
+#else
179
+   const char *text_source_id = "text_ft2_source";
180
+#endif
181
+
182
+   obs_source_t *txtSource = obs_source_create_private(text_source_id,
183
+                           name, settings);
184
+
185
+   obs_data_release(font);
186
+   obs_data_release(settings);
187
+
188
+   return txtSource;
189
+}
190
+
191
+static void CreateTransitionScene(OBSSource scene, char *text, uint32_t color)
192
+{
193
+   obs_data_t *settings = obs_data_create();
194
+   obs_data_set_int(settings, "width", obs_source_get_width(scene));
195
+   obs_data_set_int(settings, "height", obs_source_get_height(scene));
196
+   obs_data_set_int(settings, "color", color);
197
+
198
+   obs_source_t *colorBG = obs_source_create_private("color_source",
199
+       "background", settings);
200
+
201
+   obs_scene_add(obs_scene_from_source(scene), colorBG);
202
+
203
+   obs_source_t *label = CreateLabel(text, obs_source_get_height(scene));
204
+   obs_sceneitem_t *item = obs_scene_add(obs_scene_from_source(scene),
205
+       label);
206
+
207
+   vec2 size;
208
+   vec2_set(&size, obs_source_get_width(scene),
209
+#ifdef _WIN32
210
+           obs_source_get_height(scene));
211
+#else
212
+           obs_source_get_height(scene) * 0.8);
213
+#endif
214
+
215
+   obs_sceneitem_set_bounds(item, &size);
216
+   obs_sceneitem_set_bounds_type(item, OBS_BOUNDS_SCALE_INNER);
217
+
218
+   obs_data_release(settings);
219
+   obs_source_release(colorBG);
220
+   obs_source_release(label);
221
+}
222
+
223
 void OBSBasicProperties::SourceRemoved(void *data, calldata_t *params)
224
 {
225
    QMetaObject::invokeMethod(static_cast<OBSBasicProperties*>(data),
226
@@ -226,6 +403,38 @@
227
    gs_viewport_pop();
228
 }
229
 
230
+void OBSBasicProperties::DrawTransitionPreview(void *data, uint32_t cx,
231
+       uint32_t cy)
232
+{
233
+   OBSBasicProperties *window = static_cast<OBSBasicProperties*>(data);
234
+
235
+   if (!window->source)
236
+       return;
237
+
238
+   uint32_t sourceCX = max(obs_source_get_width(window->source), 1u);
239
+   uint32_t sourceCY = max(obs_source_get_height(window->source), 1u);
240
+
241
+   int   x, y;
242
+   int   newCX, newCY;
243
+   float scale;
244
+
245
+   GetScaleAndCenterPos(sourceCX, sourceCY, cx, cy, x, y, scale);
246
+
247
+   newCX = int(scale * float(sourceCX));
248
+   newCY = int(scale * float(sourceCY));
249
+
250
+   gs_viewport_push();
251
+   gs_projection_push();
252
+   gs_ortho(0.0f, float(sourceCX), 0.0f, float(sourceCY),
253
+       -100.0f, 100.0f);
254
+   gs_set_viewport(x, y, newCX, newCY);
255
+
256
+   obs_source_video_render(window->sourceClone);
257
+
258
+   gs_projection_pop();
259
+   gs_viewport_pop();
260
+}
261
+
262
 void OBSBasicProperties::Cleanup()
263
 {
264
    config_set_int(App()->GlobalConfig(), "PropertiesWindow", "cx",
265
@@ -235,6 +444,8 @@
266
 
267
    obs_display_remove_draw_callback(preview->GetDisplay(),
268
        OBSBasicProperties::DrawPreview, this);
269
+   obs_display_remove_draw_callback(preview->GetDisplay(),
270
+       OBSBasicProperties::DrawTransitionPreview, this);
271
 }
272
 
273
 void OBSBasicProperties::reject()
274
obs-studio-23.1.0.tar.xz/UI/window-basic-properties.hpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-properties.hpp Changed
27
 
1
@@ -45,16 +45,25 @@
2
    QDialogButtonBox *buttonBox;
3
    QSplitter *windowSplitter;
4
 
5
+   OBSSource  sourceA;
6
+   OBSSource  sourceB;
7
+   OBSSource  sourceClone;
8
+   bool       direction = true;
9
+
10
    static void SourceRemoved(void *data, calldata_t *params);
11
    static void SourceRenamed(void *data, calldata_t *params);
12
    static void UpdateProperties(void *data, calldata_t *params);
13
    static void DrawPreview(void *data, uint32_t cx, uint32_t cy);
14
+   static void DrawTransitionPreview(void *data, uint32_t cx,
15
+       uint32_t cy);
16
+   void UpdateCallback(void *obj, obs_data_t *settings);
17
    bool ConfirmQuit();
18
    int  CheckSettings();
19
    void Cleanup();
20
 
21
 private slots:
22
    void on_buttonBox_clicked(QAbstractButton *button);
23
+   void AddPreviewButton();
24
 
25
 public:
26
    OBSBasicProperties(QWidget *parent, OBSSource source_);
27
obs-studio-23.1.0.tar.xz/UI/window-basic-settings.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-settings.cpp Changed
257
 
1
@@ -48,6 +48,7 @@
2
 #include "window-projector.hpp"
3
 
4
 #include <util/platform.h>
5
+#include "ui-config.h"
6
 
7
 using namespace std;
8
 
9
@@ -295,10 +296,6 @@
10
 
11
    ui->listWidget->setAttribute(Qt::WA_MacShowFocusRect, false);
12
 
13
-   auto policy = ui->audioSourceScrollArea->sizePolicy();
14
-   policy.setVerticalStretch(true);
15
-   ui->audioSourceScrollArea->setSizePolicy(policy);
16
-
17
    HookWidget(ui->language,             COMBO_CHANGED,  GENERAL_CHANGED);
18
    HookWidget(ui->theme,            COMBO_CHANGED,  GENERAL_CHANGED);
19
    HookWidget(ui->enableAutoUpdates,    CHECK_CHANGED,  GENERAL_CHANGED);
20
@@ -465,14 +462,20 @@
21
    HookWidget(ui->disableFocusHotkeys,  CHECK_CHANGED,  ADV_CHANGED);
22
    HookWidget(ui->autoRemux,            CHECK_CHANGED,  ADV_CHANGED);
23
 
24
+   ui->simpleOutputVBitrate->setSingleStep(50);
25
+   ui->simpleOutputVBitrate->setSuffix(" Kbps");
26
+   ui->advOutFFVBitrate->setSingleStep(50);
27
+   ui->advOutFFVBitrate->setSuffix(" Kbps");
28
+   ui->advOutFFABitrate->setSuffix(" Kbps");
29
+
30
 #if !defined(_WIN32) && !defined(__APPLE__)
31
    delete ui->enableAutoUpdates;
32
    ui->enableAutoUpdates = nullptr;
33
 #endif
34
 
35
 #if !defined(_WIN32) && !defined(__APPLE__) && !HAVE_PULSEAUDIO
36
-   delete ui->advAudioGroupBox;
37
-   ui->advAudioGroupBox = nullptr;
38
+   delete ui->audioAdvGroupBox;
39
+   ui->audioAdvGroupBox = nullptr;
40
 #endif
41
 
42
 #ifdef _WIN32
43
@@ -725,6 +728,10 @@
44
            this, SLOT(AdvOutRecCheckWarnings()));
45
    AdvOutRecCheckWarnings();
46
 
47
+   ui->buttonBox->button(QDialogButtonBox::Apply)->setIcon(QIcon());
48
+   ui->buttonBox->button(QDialogButtonBox::Ok)->setIcon(QIcon());
49
+   ui->buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QIcon());
50
+
51
    SimpleRecordingQualityChanged();
52
 
53
    UpdateAutomaticReplayBufferCheckboxes();
54
@@ -1003,17 +1010,31 @@
55
        }
56
    }
57
 
58
+   QString defaultTheme;
59
+   defaultTheme += DEFAULT_THEME;
60
+   defaultTheme += " ";
61
+   defaultTheme += QTStr("Default");
62
+
63
    /* Check shipped themes. */
64
    QDirIterator uIt(QString(themeDir.c_str()), QStringList() << "*.qss",
65
            QDir::Files);
66
    while (uIt.hasNext()) {
67
        uIt.next();
68
        QString name = uIt.fileName().section(".",0,0);
69
-       if (!uniqueSet.contains(name))
70
+
71
+       if (name == DEFAULT_THEME)
72
+           name = defaultTheme;
73
+
74
+       if (!uniqueSet.contains(name) && name != "Default")
75
            ui->theme->addItem(name);
76
    }
77
 
78
-   int idx = ui->theme->findText(App()->GetTheme());
79
+   std::string themeName = App()->GetTheme();
80
+
81
+   if (themeName == DEFAULT_THEME)
82
+       themeName = QT_TO_UTF8(defaultTheme);
83
+
84
+   int idx = ui->theme->findText(themeName.c_str());
85
    if (idx != -1)
86
        ui->theme->setCurrentIndex(idx);
87
 }
88
@@ -2006,17 +2027,21 @@
89
 
90
 void OBSBasicSettings::LoadAudioSources()
91
 {
92
+   if (ui->audioSourceLayout->rowCount() > 0) {
93
+       QLayoutItem *forDeletion = ui->audioSourceLayout->takeAt(0);
94
+       delete forDeletion->widget();
95
+       delete forDeletion;
96
+   }
97
    auto layout = new QFormLayout();
98
    layout->setVerticalSpacing(15);
99
    layout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
100
 
101
-   ui->audioSourceScrollArea->takeWidget()->deleteLater();
102
    audioSourceSignals.clear();
103
    audioSources.clear();
104
 
105
    auto widget = new QWidget();
106
    widget->setLayout(layout);
107
-   ui->audioSourceScrollArea->setWidget(widget);
108
+   ui->audioSourceLayout->addRow(widget);
109
 
110
    const char *enablePtm = Str("Basic.Settings.Audio.EnablePushToMute");
111
    const char *ptmDelay  = Str("Basic.Settings.Audio.PushToMuteDelay");
112
@@ -2095,6 +2120,8 @@
113
                ptmCB, pttSB, pttCB, pttSB);
114
 
115
        auto label = new OBSSourceLabel(source);
116
+       label->setMinimumSize(QSize(170, 0));
117
+       label->setAlignment(Qt::AlignRight | Qt::AlignTrailing | Qt::AlignVCenter);
118
        connect(label, &OBSSourceLabel::Removed,
119
                [=]()
120
                {
121
@@ -2120,9 +2147,9 @@
122
 
123
 
124
    if (layout->rowCount() == 0)
125
-       ui->audioSourceScrollArea->hide();
126
+       ui->audioHotkeysGroupBox->hide();
127
    else
128
-       ui->audioSourceScrollArea->show();
129
+       ui->audioHotkeysGroupBox->show();
130
 }
131
 
132
 void OBSBasicSettings::LoadAudioSettings()
133
@@ -2302,12 +2329,22 @@
134
    loading = false;
135
 }
136
 
137
+#define TRUNCATE_TEXT_LENGTH 80
138
+
139
 template <typename Func>
140
 static inline void LayoutHotkey(obs_hotkey_id id, obs_hotkey_t *key, Func &&fun,
141
        const map<obs_hotkey_id, vector<obs_key_combination_t>> &keys)
142
 {
143
    auto *label = new OBSHotkeyLabel;
144
-   label->setText(obs_hotkey_get_description(key));
145
+   QString text = QT_UTF8(obs_hotkey_get_description(key));
146
+
147
+   if (text.length() > TRUNCATE_TEXT_LENGTH) {
148
+       label->setProperty("fullName", text);
149
+       text = text.left(TRUNCATE_TEXT_LENGTH);
150
+       text += "...'";
151
+   }
152
+
153
+   label->setText(text);
154
 
155
    OBSHotkeyWidget *hw = nullptr;
156
 
157
@@ -2333,7 +2370,19 @@
158
 template <typename Func>
159
 static QLabel *makeLabel(const OBSSource &source, Func &&)
160
 {
161
-   return new OBSSourceLabel(source);
162
+   OBSSourceLabel *label = new OBSSourceLabel(source);
163
+   label->setStyleSheet("font-weight: bold;");
164
+   QString name = QT_UTF8(obs_source_get_name(source));
165
+
166
+   if (name.length() > TRUNCATE_TEXT_LENGTH) {
167
+       label->setToolTip(name);
168
+       name = name.left(TRUNCATE_TEXT_LENGTH);
169
+       name += "...";
170
+   }
171
+
172
+   label->setText(name);
173
+
174
+   return label;
175
 }
176
 
177
 template <typename Func, typename T>
178
@@ -2345,13 +2394,8 @@
179
    if (hotkeys.empty())
180
        return;
181
 
182
-   auto line = new QFrame();
183
-   line->setFrameShape(QFrame::HLine);
184
-   line->setFrameShadow(QFrame::Sunken);
185
-
186
    layout.setItem(layout.rowCount(), QFormLayout::SpanningRole,
187
            new QSpacerItem(0, 10));
188
-   layout.addRow(line);
189
 
190
    using tuple_type =
191
        std::tuple<T, QPointer<QLabel>, QPointer<QWidget>>;
192
@@ -2612,7 +2656,12 @@
193
        auto Update = [&](OBSHotkeyLabel *label, const QString &name,
194
                OBSHotkeyLabel *other, const QString &otherName)
195
        {
196
-           label->setToolTip(tt.arg(otherName));
197
+           QString string = other->property("fullName").value<QString>();
198
+
199
+           if (string.isEmpty() || string.isNull())
200
+               string = otherName;
201
+
202
+           label->setToolTip(tt.arg(string));
203
            label->setText(name + " *");
204
            label->pairPartner = other;
205
        };
206
@@ -2657,13 +2706,19 @@
207
 
208
    int themeIndex = ui->theme->currentIndex();
209
    QString themeData = ui->theme->itemText(themeIndex);
210
-   string theme = themeData.toStdString();
211
+   QString defaultTheme;
212
+   defaultTheme += DEFAULT_THEME;
213
+   defaultTheme += " ";
214
+   defaultTheme += QTStr("Default");
215
+
216
+   if (themeData == defaultTheme)
217
+       themeData = DEFAULT_THEME;
218
 
219
    if (WidgetChanged(ui->theme)) {
220
        config_set_string(GetGlobalConfig(), "General", "CurrentTheme",
221
-                 theme.c_str());
222
+                 QT_TO_UTF8(themeData));
223
 
224
-       App()->SetTheme(theme);
225
+       App()->SetTheme(themeData.toUtf8().constData());
226
    }
227
 
228
 #if defined(_WIN32) || defined(__APPLE__)
229
@@ -3392,8 +3447,17 @@
230
 
231
 void OBSBasicSettings::on_theme_activated(int idx)
232
 {
233
-   string currT = ui->theme->itemText(idx).toStdString();
234
-   App()->SetTheme(currT);
235
+   QString currT = ui->theme->itemText(idx);
236
+
237
+   QString defaultTheme;
238
+   defaultTheme += DEFAULT_THEME;
239
+   defaultTheme += " ";
240
+   defaultTheme += QTStr("Default");
241
+
242
+   if (currT == defaultTheme)
243
+       currT = DEFAULT_THEME;
244
+
245
+   App()->SetTheme(currT.toUtf8().constData());
246
 }
247
 
248
 void OBSBasicSettings::on_listWidget_itemSelectionChanged()
249
@@ -4288,7 +4352,6 @@
250
        ui->advRBEstimate->setText(QTStr(ESTIMATE_UNKNOWN_STR));
251
 
252
    ui->advReplayBufferGroupBox->setVisible(!lossless && replayBufferEnabled);
253
-   ui->line_4->setVisible(!lossless && replayBufferEnabled);
254
    ui->advReplayBuf->setEnabled(!lossless);
255
 
256
    UpdateAutomaticReplayBufferCheckboxes();
257
obs-studio-23.1.0.tar.xz/UI/window-basic-source-select.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-source-select.cpp Changed
10
 
1
@@ -215,7 +215,7 @@
2
        AddExisting(QT_TO_UTF8(item->text()), visible, false);
3
    } else {
4
        if (ui->sourceName->text().isEmpty()) {
5
-           OBSMessageBox::information(this,
6
+           OBSMessageBox::warning(this,
7
                    QTStr("NoNameEntered.Title"),
8
                    QTStr("NoNameEntered.Text"));
9
            return;
10
obs-studio-23.1.0.tar.xz/UI/window-basic-stats.cpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-stats.cpp Changed
179
 
1
@@ -4,6 +4,7 @@
2
 #include "window-basic-main.hpp"
3
 #include "platform.hpp"
4
 #include "obs-app.hpp"
5
+#include "qt-wrappers.hpp"
6
 
7
 #include <QDesktopWidget>
8
 #include <QPushButton>
9
@@ -15,6 +16,7 @@
10
 #include <string>
11
 
12
 #define TIMER_INTERVAL 2000
13
+#define REC_TIME_LEFT_INTERVAL 30000
14
 
15
 static void setThemeID(QWidget *widget, const QString &themeID)
16
 {
17
@@ -28,15 +30,32 @@
18
    }
19
 }
20
 
21
+void OBSBasicStats::OBSFrontendEvent(enum obs_frontend_event event, void *ptr)
22
+{
23
+   OBSBasicStats *stats = reinterpret_cast<OBSBasicStats *>(ptr);
24
+
25
+   switch ((int)event) {
26
+   case OBS_FRONTEND_EVENT_RECORDING_STARTED:
27
+       stats->StartRecTimeLeft();
28
+       break;
29
+   case OBS_FRONTEND_EVENT_RECORDING_STOPPED:
30
+       stats->ResetRecTimeLeft();
31
+       break;
32
+   }
33
+}
34
+
35
 OBSBasicStats::OBSBasicStats(QWidget *parent, bool closeable)
36
    : QWidget             (parent),
37
      cpu_info            (os_cpu_usage_info_start()),
38
-     timer               (this)
39
+     timer               (this),
40
+     recTimeLeft         (this)
41
 {
42
    QVBoxLayout *mainLayout = new QVBoxLayout();
43
    QGridLayout *topLayout = new QGridLayout();
44
    outputLayout = new QGridLayout();
45
 
46
+   bitrates.reserve(REC_TIME_LEFT_INTERVAL / TIMER_INTERVAL);
47
+
48
    int row = 0;
49
 
50
    auto newStatBare = [&] (QString name, QWidget *label, int col)
51
@@ -57,10 +76,12 @@
52
 
53
    cpuUsage = new QLabel(this);
54
    hddSpace = new QLabel(this);
55
+   recordTimeLeft = new QLabel(this);
56
    memUsage = new QLabel(this);
57
 
58
    newStat("CPUUsage", cpuUsage, 0);
59
    newStat("HDDSpaceAvailable", hddSpace, 0);
60
+   newStat("DiskFullIn", recordTimeLeft, 0);
61
    newStat("MemoryUsage", memUsage, 0);
62
 
63
    fps = new QLabel(this);
64
@@ -146,9 +167,16 @@
65
 
66
    QObject::connect(&timer, &QTimer::timeout, this, &OBSBasicStats::Update);
67
    timer.setInterval(TIMER_INTERVAL);
68
-   timer.start();
69
+
70
+   if (isVisible())
71
+       timer.start();
72
+
73
    Update();
74
 
75
+   QObject::connect(&recTimeLeft, &QTimer::timeout, this,
76
+           &OBSBasicStats::RecordingTimeLeft);
77
+   recTimeLeft.setInterval(REC_TIME_LEFT_INTERVAL);
78
+
79
    OBSBasic *main = reinterpret_cast<OBSBasic*>(App()->GetMainWindow());
80
 
81
    const char *geometry = config_get_string(main->Config(),
82
@@ -167,6 +195,8 @@
83
                        size(), rect));
84
        }
85
    }
86
+
87
+   obs_frontend_add_event_callback(OBSFrontendEvent, this);
88
 }
89
 
90
 void OBSBasicStats::closeEvent(QCloseEvent *event)
91
@@ -184,6 +214,8 @@
92
 
93
 OBSBasicStats::~OBSBasicStats()
94
 {
95
+   obs_frontend_remove_event_callback(OBSFrontendEvent, this);
96
+
97
    delete shortcutFilter;
98
    os_cpu_usage_info_destroy(cpu_info);
99
 }
100
@@ -277,7 +309,7 @@
101
 #define MBYTE (1024ULL * 1024ULL)
102
 #define GBYTE (1024ULL * 1024ULL * 1024ULL)
103
 #define TBYTE (1024ULL * 1024ULL * 1024ULL * 1024ULL)
104
-   uint64_t num_bytes = os_get_free_disk_space(path);
105
+   num_bytes = os_get_free_disk_space(path);
106
    QString abrv = QStringLiteral(" MB");
107
    long double num;
108
 
109
@@ -390,6 +422,45 @@
110
 
111
    outputLabels[0].Update(strOutput, false);
112
    outputLabels[1].Update(recOutput, true);
113
+
114
+   if (obs_output_active(recOutput)) {
115
+       long double kbps = outputLabels[1].kbps;
116
+       bitrates.push_back(kbps);
117
+   }
118
+}
119
+
120
+void OBSBasicStats::StartRecTimeLeft()
121
+{
122
+   recordTimeLeft->setText(QTStr("Calculating"));
123
+   recTimeLeft.start();
124
+}
125
+
126
+void OBSBasicStats::ResetRecTimeLeft()
127
+{
128
+   bitrates.clear();
129
+   recTimeLeft.stop();
130
+   recordTimeLeft->setText(QTStr(""));
131
+}
132
+
133
+void OBSBasicStats::RecordingTimeLeft()
134
+{
135
+   long double averageBitrate = accumulate(bitrates.begin(),
136
+           bitrates.end(), 0.0) /
137
+           (long double)bitrates.size();
138
+   long double bytesPerSec = (averageBitrate / 8.0l) * 1000.0l;
139
+   long double secondsUntilFull = (long double)num_bytes / bytesPerSec;
140
+
141
+   bitrates.clear();
142
+
143
+   int totalMinutes = (int)secondsUntilFull / 60;
144
+   int minutes      = totalMinutes % 60;
145
+   int hours        = totalMinutes / 60;
146
+
147
+   QString text;
148
+   text.sprintf("%d %s, %d %s", hours, QT_TO_UTF8(QTStr("Hours")),
149
+           minutes, QT_TO_UTF8(QTStr("Minutes")));
150
+   recordTimeLeft->setText(text);
151
+   recordTimeLeft->setMinimumWidth(recordTimeLeft->width());
152
 }
153
 
154
 void OBSBasicStats::Reset()
155
@@ -425,8 +496,7 @@
156
    uint64_t bitsBetween = (bytesSent - lastBytesSent) * 8;
157
    long double timePassed = (long double)(curTime - lastBytesSentTime) /
158
        1000000000.0l;
159
-   long double kbps = (long double)bitsBetween /
160
-       timePassed / 1000.0l;
161
+   kbps = (long double)bitsBetween / timePassed / 1000.0l;
162
 
163
    if (timePassed < 0.01l)
164
        kbps = 0.0l;
165
@@ -505,3 +575,13 @@
166
    first_total   = obs_output_get_total_frames(output);
167
    first_dropped = obs_output_get_frames_dropped(output);
168
 }
169
+
170
+void OBSBasicStats::showEvent(QShowEvent *)
171
+{
172
+   timer.start(TIMER_INTERVAL);
173
+}
174
+
175
+void OBSBasicStats::hideEvent(QHideEvent *)
176
+{
177
+   timer.stop();
178
+}
179
obs-studio-23.1.0.tar.xz/UI/window-basic-stats.hpp -> obs-studio-23.2.0.tar.xz/UI/window-basic-stats.hpp Changed
53
 
1
@@ -17,6 +17,7 @@
2
    QLabel *fps = nullptr;
3
    QLabel *cpuUsage = nullptr;
4
    QLabel *hddSpace = nullptr;
5
+   QLabel *recordTimeLeft = nullptr;
6
    QLabel *memUsage = nullptr;
7
 
8
    QLabel *renderTime = nullptr;
9
@@ -28,6 +29,9 @@
10
    os_cpu_usage_info_t *cpu_info = nullptr;
11
 
12
    QTimer timer;
13
+   QTimer recTimeLeft;
14
+   uint64_t num_bytes = 0;
15
+   std::vector<long double> bitrates;
16
 
17
    struct OutputLabels {
18
        QPointer<QLabel> name;
19
@@ -44,6 +48,8 @@
20
 
21
        void Update(obs_output_t *output, bool rec);
22
        void Reset(obs_output_t *output);
23
+
24
+       long double kbps = 0.0l;
25
    };
26
 
27
    QList<OutputLabels> outputLabels;
28
@@ -54,11 +60,24 @@
29
 
30
    virtual void closeEvent(QCloseEvent *event) override;
31
 
32
+   static void OBSFrontendEvent(enum obs_frontend_event event, void *ptr);
33
+
34
 public:
35
    OBSBasicStats(QWidget *parent = nullptr, bool closable = true);
36
    ~OBSBasicStats();
37
 
38
    static void InitializeValues();
39
+
40
+   void StartRecTimeLeft();
41
+   void ResetRecTimeLeft();
42
+
43
 private:
44
    QPointer<QObject> shortcutFilter;
45
+
46
+private slots:
47
+   void RecordingTimeLeft();
48
+
49
+protected:
50
+   virtual void showEvent(QShowEvent *event) override;
51
+   virtual void hideEvent(QHideEvent *event) override;
52
 };
53
obs-studio-23.1.0.tar.xz/UI/window-projector.cpp -> obs-studio-23.2.0.tar.xz/UI/window-projector.cpp Changed
46
 
1
@@ -67,14 +67,13 @@
2
        obs_display_add_draw_callback(GetDisplay(),
3
                isMultiview ? OBSRenderMultiview : OBSRender,
4
                this);
5
-       obs_display_set_background_color(GetDisplay(), 0x000000);
6
    };
7
 
8
    connect(this, &OBSQTDisplay::DisplayCreated, addDrawCallback);
9
 
10
    bool hideCursor = config_get_bool(GetGlobalConfig(),
11
            "BasicWindow", "HideProjectorCursor");
12
-   if (hideCursor && !isWindow) {
13
+   if (hideCursor && !isWindow && type != ProjectorType::Multiview) {
14
        QPixmap empty(16, 16);
15
        empty.fill(Qt::transparent);
16
        setCursor(QCursor(empty));
17
@@ -227,28 +226,6 @@
18
    return txtSource;
19
 }
20
 
21
-static inline void renderVB(gs_effect_t *effect, gs_vertbuffer_t *vb,
22
-       int cx, int cy)
23
-{
24
-   if (!vb)
25
-       return;
26
-
27
-   matrix4 transform;
28
-   matrix4_identity(&transform);
29
-   transform.x.x = cx;
30
-   transform.y.y = cy;
31
-
32
-   gs_load_vertexbuffer(vb);
33
-
34
-   gs_matrix_push();
35
-   gs_matrix_mul(&transform);
36
-
37
-   while (gs_effect_loop(effect, "Solid"))
38
-       gs_draw(GS_LINESTRIP, 0, 0);
39
-
40
-   gs_matrix_pop();
41
-}
42
-
43
 static inline uint32_t labelOffset(obs_source_t *label, uint32_t cx)
44
 {
45
    uint32_t w = obs_source_get_width(label);
46
obs-studio-23.1.0.tar.xz/UI/window-remux.cpp -> obs-studio-23.2.0.tar.xz/UI/window-remux.cpp Changed
403
 
1
@@ -57,216 +57,212 @@
2
   Delegate - Presents cells in the grid.
3
 **********************************************************/
4
 
5
-class RemuxEntryPathItemDelegate : public QStyledItemDelegate {
6
-public:
7
-
8
-   RemuxEntryPathItemDelegate(bool isOutput, const QString &defaultPath)
9
-       : QStyledItemDelegate(),
10
-         isOutput(isOutput),
11
-         defaultPath(defaultPath)
12
-   {
13
-   }
14
-
15
-   virtual QWidget *createEditor(QWidget *parent,
16
-           const QStyleOptionViewItem & /* option */,
17
-           const QModelIndex &index) const override
18
-   {
19
-       RemuxEntryState state = index.model()
20
-               ->index(index.row(), RemuxEntryColumn::State)
21
-               .data(RemuxEntryRole::EntryStateRole)
22
-               .value<RemuxEntryState>();
23
-       if (state == RemuxEntryState::Pending ||
24
-               state == RemuxEntryState::InProgress) {
25
-           // Never allow modification of rows that are
26
-           // in progress.
27
-           return Q_NULLPTR;
28
-       } else if (isOutput && state != RemuxEntryState::Ready) {
29
-           // Do not allow modification of output rows
30
-           // that aren't associated with a valid input.
31
-           return Q_NULLPTR;
32
-       } else if (!isOutput && state == RemuxEntryState::Complete) {
33
-           // Don't allow modification of rows that are
34
-           // already complete.
35
-           return Q_NULLPTR;
36
-       } else {
37
-           QSizePolicy buttonSizePolicy(
38
-                   QSizePolicy::Policy::Minimum,
39
-                   QSizePolicy::Policy::Expanding,
40
-                   QSizePolicy::ControlType::PushButton);
41
-
42
-           QWidget *container = new QWidget(parent);
43
-
44
-           auto browseCallback = [this, container]()
45
-           {
46
-               const_cast<RemuxEntryPathItemDelegate *>(this)
47
-                       ->handleBrowse(container);
48
-           };
49
-
50
-           auto clearCallback = [this, container]()
51
-           {
52
-               const_cast<RemuxEntryPathItemDelegate *>(this)
53
-                       ->handleClear(container);
54
-           };
55
-
56
-           QHBoxLayout *layout = new QHBoxLayout();
57
-           layout->setMargin(0);
58
-           layout->setSpacing(0);
59
-
60
-           QLineEdit *text = new QLineEdit();
61
-           text->setObjectName(QStringLiteral("text"));
62
-           text->setSizePolicy(QSizePolicy(
63
-                   QSizePolicy::Policy::Expanding,
64
-                   QSizePolicy::Policy::Expanding,
65
-                   QSizePolicy::ControlType::LineEdit));
66
-           layout->addWidget(text);
67
-
68
-           QToolButton *browseButton = new QToolButton();
69
-           browseButton->setText("...");
70
-           browseButton->setSizePolicy(buttonSizePolicy);
71
-           layout->addWidget(browseButton);
72
-
73
-           container->connect(browseButton, &QToolButton::clicked,
74
-                   browseCallback);
75
-
76
-           // The "clear" button is not shown in output cells
77
-           // or the insertion point's input cell.
78
-           if (!isOutput && state != RemuxEntryState::Empty) {
79
-               QToolButton *clearButton = new QToolButton();
80
-               clearButton->setText("X");
81
-               clearButton->setSizePolicy(buttonSizePolicy);
82
-               layout->addWidget(clearButton);
83
-
84
-               container->connect(clearButton,
85
-                       &QToolButton::clicked,
86
-                       clearCallback);
87
-           }
88
-
89
-           container->setLayout(layout);
90
-           container->setFocusProxy(text);
91
-
92
-           return container;
93
+RemuxEntryPathItemDelegate::RemuxEntryPathItemDelegate(bool isOutput,
94
+   const QString &defaultPath)
95
+   : QStyledItemDelegate(),
96
+     isOutput(isOutput),
97
+     defaultPath(defaultPath)
98
+{
99
+}
100
+
101
+QWidget *RemuxEntryPathItemDelegate::createEditor(QWidget *parent,
102
+       const QStyleOptionViewItem & /* option */,
103
+       const QModelIndex &index) const
104
+{
105
+   RemuxEntryState state = index.model()
106
+           ->index(index.row(), RemuxEntryColumn::State)
107
+           .data(RemuxEntryRole::EntryStateRole)
108
+           .value<RemuxEntryState>();
109
+   if (state == RemuxEntryState::Pending ||
110
+           state == RemuxEntryState::InProgress) {
111
+       // Never allow modification of rows that are
112
+       // in progress.
113
+       return Q_NULLPTR;
114
+   } else if (isOutput && state != RemuxEntryState::Ready) {
115
+       // Do not allow modification of output rows
116
+       // that aren't associated with a valid input.
117
+       return Q_NULLPTR;
118
+   } else if (!isOutput && state == RemuxEntryState::Complete) {
119
+       // Don't allow modification of rows that are
120
+       // already complete.
121
+       return Q_NULLPTR;
122
+   } else {
123
+       QSizePolicy buttonSizePolicy(
124
+               QSizePolicy::Policy::Minimum,
125
+               QSizePolicy::Policy::Expanding,
126
+               QSizePolicy::ControlType::PushButton);
127
+
128
+       QWidget *container = new QWidget(parent);
129
+
130
+       auto browseCallback = [this, container]()
131
+       {
132
+           const_cast<RemuxEntryPathItemDelegate *>(this)
133
+                   ->handleBrowse(container);
134
+       };
135
+
136
+       auto clearCallback = [this, container]()
137
+       {
138
+           const_cast<RemuxEntryPathItemDelegate *>(this)
139
+                   ->handleClear(container);
140
+       };
141
+
142
+       QHBoxLayout *layout = new QHBoxLayout();
143
+       layout->setMargin(0);
144
+       layout->setSpacing(0);
145
+
146
+       QLineEdit *text = new QLineEdit();
147
+       text->setObjectName(QStringLiteral("text"));
148
+       text->setSizePolicy(QSizePolicy(
149
+               QSizePolicy::Policy::Expanding,
150
+               QSizePolicy::Policy::Expanding,
151
+               QSizePolicy::ControlType::LineEdit));
152
+       layout->addWidget(text);
153
+
154
+       QToolButton *browseButton = new QToolButton();
155
+       browseButton->setText("...");
156
+       browseButton->setSizePolicy(buttonSizePolicy);
157
+       layout->addWidget(browseButton);
158
+
159
+       container->connect(browseButton, &QToolButton::clicked,
160
+               browseCallback);
161
+
162
+       // The "clear" button is not shown in output cells
163
+       // or the insertion point's input cell.
164
+       if (!isOutput && state != RemuxEntryState::Empty) {
165
+           QToolButton *clearButton = new QToolButton();
166
+           clearButton->setText("X");
167
+           clearButton->setSizePolicy(buttonSizePolicy);
168
+           layout->addWidget(clearButton);
169
+
170
+           container->connect(clearButton,
171
+                   &QToolButton::clicked,
172
+                   clearCallback);
173
        }
174
-   }
175
-
176
-   virtual void setEditorData(QWidget *editor, const QModelIndex &index)
177
-           const override
178
-   {
179
-       QLineEdit *text = editor->findChild<QLineEdit *>();
180
-       text->setText(index.data().toString());
181
 
182
-       editor->setProperty(PATH_LIST_PROP, QVariant());
183
+       container->setLayout(layout);
184
+       container->setFocusProxy(text);
185
+       return container;
186
    }
187
+}
188
 
189
-   virtual void setModelData(QWidget *editor,
190
-           QAbstractItemModel *model,
191
-           const QModelIndex &index) const override
192
-   {
193
-       // We use the PATH_LIST_PROP property to pass a list of
194
-       // path strings from the editor widget into the model's
195
-       // NewPathsToProcessRole. This is only used when paths
196
-       // are selected through the "browse" or "delete" buttons
197
-       // in the editor. If the user enters new text in the
198
-       // text box, we simply pass that text on to the model
199
-       // as normal text data in the default role.
200
-       QVariant pathListProp = editor->property(PATH_LIST_PROP);
201
-       if (pathListProp.isValid()) {
202
-           QStringList list = editor->property(PATH_LIST_PROP)
203
-                   .toStringList();
204
-           if (isOutput) {
205
-               if (list.size() > 0)
206
-                   model->setData(index, list);
207
-           } else
208
-               model->setData(index, list,
209
-                       RemuxEntryRole::NewPathsToProcessRole);
210
-       } else {
211
-           QLineEdit *lineEdit = editor->findChild<QLineEdit *>();
212
-           model->setData(index, lineEdit->text());
213
-       }
214
+void RemuxEntryPathItemDelegate::setEditorData(QWidget *editor,
215
+       const QModelIndex &index) const
216
+{
217
+   QLineEdit *text = editor->findChild<QLineEdit *>();
218
+   text->setText(index.data().toString());
219
+   QObject::connect(text, SIGNAL(textEdited(QString)), this, SLOT(updateText()));
220
+   editor->setProperty(PATH_LIST_PROP, QVariant());
221
+}
222
+
223
+void RemuxEntryPathItemDelegate::setModelData(QWidget *editor,
224
+       QAbstractItemModel *model,
225
+       const QModelIndex &index) const
226
+{
227
+   // We use the PATH_LIST_PROP property to pass a list of
228
+   // path strings from the editor widget into the model's
229
+   // NewPathsToProcessRole. This is only used when paths
230
+   // are selected through the "browse" or "delete" buttons
231
+   // in the editor. If the user enters new text in the
232
+   // text box, we simply pass that text on to the model
233
+   // as normal text data in the default role.
234
+   QVariant pathListProp = editor->property(PATH_LIST_PROP);
235
+   if (pathListProp.isValid()) {
236
+       QStringList list = editor->property(PATH_LIST_PROP)
237
+               .toStringList();
238
+       if (isOutput) {
239
+           if (list.size() > 0)
240
+               model->setData(index, list);
241
+       } else
242
+           model->setData(index, list,
243
+                   RemuxEntryRole::NewPathsToProcessRole);
244
+   } else {
245
+       QLineEdit *lineEdit = editor->findChild<QLineEdit *>();
246
+       model->setData(index, lineEdit->text());
247
    }
248
+}
249
 
250
-   virtual void paint(QPainter *painter,
251
-           const QStyleOptionViewItem &option,
252
-           const QModelIndex &index) const override
253
-   {
254
-       RemuxEntryState state = index.model()
255
-               ->index(index.row(), RemuxEntryColumn::State)
256
-               .data(RemuxEntryRole::EntryStateRole)
257
-               .value<RemuxEntryState>();
258
+void RemuxEntryPathItemDelegate::paint(QPainter *painter,
259
+       const QStyleOptionViewItem &option,
260
+       const QModelIndex &index) const
261
+{
262
+   RemuxEntryState state = index.model()
263
+           ->index(index.row(), RemuxEntryColumn::State)
264
+           .data(RemuxEntryRole::EntryStateRole)
265
+           .value<RemuxEntryState>();
266
 
267
-       QStyleOptionViewItem localOption = option;
268
-       initStyleOption(&localOption, index);
269
+   QStyleOptionViewItem localOption = option;
270
+   initStyleOption(&localOption, index);
271
 
272
-       if (isOutput) {
273
-           if (state != Ready) {
274
-               QColor background = localOption.palette
275
-                       .color(QPalette::ColorGroup::Disabled,
276
-                       QPalette::ColorRole::Background);
277
+   if (isOutput) {
278
+       if (state != Ready) {
279
+           QColor background = localOption.palette
280
+                   .color(QPalette::ColorGroup::Disabled,
281
+                   QPalette::ColorRole::Background);
282
 
283
-               localOption.backgroundBrush = QBrush(background);
284
-           }
285
+           localOption.backgroundBrush = QBrush(background);
286
        }
287
-
288
-       QApplication::style()->drawControl(QStyle::CE_ItemViewItem,
289
-               &localOption, painter);
290
    }
291
 
292
-private:
293
-   bool isOutput;
294
-   QString defaultPath;
295
+   QApplication::style()->drawControl(QStyle::CE_ItemViewItem,
296
+           &localOption, painter);
297
+}
298
 
299
-   const char *PATH_LIST_PROP = "pathList";
300
+void RemuxEntryPathItemDelegate::handleBrowse(QWidget *container)
301
+{
302
+   QString OutputPattern =
303
+           "(*.mp4 *.flv *.mov *.mkv *.ts *.m3u8)";
304
+   QString InputPattern =
305
+           "(*.flv *.mov *.mkv *.ts *.m3u8)";
306
 
307
-   void handleBrowse(QWidget *container)
308
-   {
309
-       QString OutputPattern =
310
-               "(*.mp4 *.flv *.mov *.mkv *.ts *.m3u8)";
311
-       QString InputPattern =
312
-               "(*.flv *.mov *.mkv *.ts *.m3u8)";
313
+   QLineEdit *text = container->findChild<QLineEdit *>();
314
 
315
-       QLineEdit *text = container->findChild<QLineEdit *>();
316
+   QString currentPath = text->text();
317
+   if (currentPath.isEmpty())
318
+       currentPath = defaultPath;
319
 
320
-       QString currentPath = text->text();
321
-       if (currentPath.isEmpty())
322
-           currentPath = defaultPath;
323
+   bool isSet = false;
324
+   if (isOutput) {
325
+       QString newPath = QFileDialog::getSaveFileName(
326
+               container, QTStr("Remux.SelectTarget"),
327
+               currentPath, OutputPattern);
328
 
329
-       bool isSet = false;
330
-       if (isOutput) {
331
-           QString newPath = QFileDialog::getSaveFileName(
332
-                   container, QTStr("Remux.SelectTarget"),
333
-                   currentPath, OutputPattern);
334
-
335
-           if (!newPath.isEmpty()) {
336
-               container->setProperty(PATH_LIST_PROP,
337
-                       QStringList() << newPath);
338
-               isSet = true;
339
-           }
340
-       } else {
341
-           QStringList paths = QFileDialog::getOpenFileNames(
342
-                   container,
343
-                   QTStr("Remux.SelectRecording"),
344
-                   currentPath,
345
-                   QTStr("Remux.OBSRecording")
346
-                   + QString(" ") + InputPattern);
347
-
348
-           if (!paths.empty()) {
349
-               container->setProperty(PATH_LIST_PROP, paths);
350
-               isSet = true;
351
-           }
352
+       if (!newPath.isEmpty()) {
353
+           container->setProperty(PATH_LIST_PROP,
354
+                   QStringList() << newPath);
355
+           isSet = true;
356
+       }
357
+   } else {
358
+       QStringList paths = QFileDialog::getOpenFileNames(
359
+               container,
360
+               QTStr("Remux.SelectRecording"),
361
+               currentPath,
362
+               QTStr("Remux.OBSRecording")
363
+               + QString(" ") + InputPattern);
364
+
365
+       if (!paths.empty()) {
366
+           container->setProperty(PATH_LIST_PROP, paths);
367
+           isSet = true;
368
        }
369
-
370
-       if (isSet)
371
-           emit commitData(container);
372
    }
373
 
374
-   void handleClear(QWidget *container)
375
-   {
376
-       // An empty string list will indicate that the entry is being
377
-       // blanked and should be deleted.
378
-       container->setProperty(PATH_LIST_PROP, QStringList());
379
-
380
+   if (isSet)
381
        emit commitData(container);
382
-   }
383
-};
384
+}
385
+
386
+void RemuxEntryPathItemDelegate::handleClear(QWidget *container)
387
+{
388
+   // An empty string list will indicate that the entry is being
389
+   // blanked and should be deleted.
390
+   container->setProperty(PATH_LIST_PROP, QStringList());
391
+
392
+   emit commitData(container);
393
+}
394
+
395
+void RemuxEntryPathItemDelegate::updateText() {
396
+   QLineEdit *lineEdit = dynamic_cast<QLineEdit*>(sender());
397
+   QWidget *editor = lineEdit->parentWidget();
398
+   emit commitData(editor);
399
+}
400
 
401
 /**********************************************************
402
   Model - Manages the queue's data
403
obs-studio-23.1.0.tar.xz/UI/window-remux.hpp -> obs-studio-23.2.0.tar.xz/UI/window-remux.hpp Changed
44
 
1
@@ -21,6 +21,7 @@
2
 #include <QMutex>
3
 #include <QPointer>
4
 #include <QThread>
5
+#include <QStyledItemDelegate>
6
 #include <memory>
7
 #include "ui_OBSRemux.h"
8
 
9
@@ -160,3 +161,34 @@
10
 
11
    friend class OBSRemux;
12
 };
13
+
14
+class RemuxEntryPathItemDelegate : public QStyledItemDelegate {
15
+   Q_OBJECT
16
+
17
+public:
18
+   RemuxEntryPathItemDelegate(bool isOutput, const QString &defaultPath);
19
+
20
+   virtual QWidget *createEditor(QWidget *parent,
21
+       const QStyleOptionViewItem & /* option */,
22
+       const QModelIndex &index) const override;
23
+
24
+   virtual void setEditorData(QWidget *editor, const QModelIndex &index)
25
+       const override;
26
+   virtual void setModelData(QWidget *editor,
27
+       QAbstractItemModel *model,
28
+       const QModelIndex &index) const override;
29
+   virtual void paint(QPainter *painter,
30
+       const QStyleOptionViewItem &option,
31
+       const QModelIndex &index) const override;
32
+
33
+private:
34
+   bool isOutput;
35
+   QString defaultPath;
36
+   const char *PATH_LIST_PROP = "pathList";
37
+
38
+   void handleBrowse(QWidget *container);
39
+   void handleClear(QWidget *container);
40
+
41
+private slots:
42
+   void updateText();
43
+};
44
obs-studio-23.2.0.tar.xz/UI/xdg-data Added
2
 
1
+(directory)
2
obs-studio-23.2.0.tar.xz/UI/xdg-data/CMakeLists.txt Added
26
 
1
@@ -0,0 +1,24 @@
2
+if(NOT DEFINED APPDATA_RELEASE_DATE)
3
+   if(EXISTS "${CMAKE_SOURCE_DIR}/.git")
4
+       execute_process(COMMAND git log --tags -1 --pretty=%cd --date=short
5
+           OUTPUT_VARIABLE APPDATA_RELEASE_DATE
6
+           WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
7
+           OUTPUT_STRIP_TRAILING_WHITESPACE)
8
+   else()
9
+       file(TIMESTAMP "${CMAKE_SOURCE_DIR}/CMakeLists.txt" APPDATA_RELEASE_DATE "%Y-%m-%d")
10
+   endif()
11
+endif()
12
+
13
+configure_file(
14
+   com.obsproject.Studio.appdata.xml.in
15
+   com.obsproject.Studio.appdata.xml)
16
+
17
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/com.obsproject.Studio.appdata.xml
18
+   DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/metainfo)
19
+
20
+install(FILES com.obsproject.Studio.desktop
21
+   DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
22
+
23
+install(FILES ../forms/images/obs.png
24
+   DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps
25
+   RENAME com.obsproject.Studio.png)
26
obs-studio-23.2.0.tar.xz/UI/xdg-data/com.obsproject.Studio.appdata.xml.in Added
25
 
1
@@ -0,0 +1,23 @@
2
+<?xml version="1.0" encoding="UTF-8"?>
3
+<component type="desktop">
4
+  <id>com.obsproject.Studio</id>
5
+  <launchable type="desktop-id">com.obsproject.Studio.desktop</launchable>
6
+  <metadata_license>CC0-1.0</metadata_license>
7
+  <project_license>GPL-2.0</project_license>
8
+  <name>OBS Studio</name>
9
+  <developer_name>OBS Project</developer_name>
10
+  <summary>Live streaming and video recording software</summary>
11
+  <description>
12
+    <p>Free and open source software for video capturing, recording, and live streaming.</p>
13
+  </description>
14
+  <url type="homepage">https://obsproject.com</url>
15
+  <screenshots>
16
+    <screenshot type="default">
17
+      <image>https://obsproject.com/assets/images/OBSDemoApp.jpg</image>
18
+    </screenshot>
19
+  </screenshots>
20
+  <content_rating type="oars-1.1"/>
21
+  <releases>
22
+    <release version="@OBS_VERSION@" date="@APPDATA_RELEASE_DATE@"/>
23
+  </releases>
24
+</component>
25
obs-studio-23.2.0.tar.xz/UI/xdg-data/com.obsproject.Studio.desktop Added
16
 
1
@@ -0,0 +1,14 @@
2
+[Desktop Entry]
3
+Version=1.0
4
+Name=OBS Studio
5
+GenericName=Streaming/Recording Software
6
+GenericName[fr]=Logiciel d'enregistrement/diffusion
7
+Comment=Free and Open Source Streaming/Recording Software
8
+Comment[fr]=Logiciel libre d'enregistrement et de diffusion sur Internet
9
+Comment[ru]=Бесплатная программа с открытым кодом для записи/трансляции видео
10
+Exec=obs
11
+Icon=com.obsproject.Studio
12
+Terminal=false
13
+Type=Application
14
+Categories=AudioVideo;Recorder;
15
+StartupNotify=true
16
obs-studio-23.1.0.tar.xz/deps/media-playback/media-playback/closest-format.h -> obs-studio-23.2.0.tar.xz/deps/media-playback/media-playback/closest-format.h Changed
10
 
1
@@ -21,6 +21,8 @@
2
    switch (fmt) {
3
    case AV_PIX_FMT_YUYV422:
4
        return AV_PIX_FMT_YUYV422;
5
+   case AV_PIX_FMT_YUV444P:
6
+       return AV_PIX_FMT_YUV444P;
7
 
8
    case AV_PIX_FMT_YUV422P:
9
    case AV_PIX_FMT_YUVJ422P:
10
obs-studio-23.1.0.tar.xz/deps/media-playback/media-playback/media.c -> obs-studio-23.2.0.tar.xz/deps/media-playback/media-playback/media.c Changed
9
 
1
@@ -34,6 +34,7 @@
2
    case AV_PIX_FMT_YUV420P: return VIDEO_FORMAT_I420;
3
    case AV_PIX_FMT_NV12:    return VIDEO_FORMAT_NV12;
4
    case AV_PIX_FMT_YUYV422: return VIDEO_FORMAT_YUY2;
5
+   case AV_PIX_FMT_YUV444P: return VIDEO_FORMAT_I444;
6
    case AV_PIX_FMT_UYVY422: return VIDEO_FORMAT_UYVY;
7
    case AV_PIX_FMT_RGBA:    return VIDEO_FORMAT_RGBA;
8
    case AV_PIX_FMT_BGRA:    return VIDEO_FORMAT_BGRA;
9
obs-studio-23.1.0.tar.xz/deps/obs-scripting/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/deps/obs-scripting/CMakeLists.txt Changed
12
 
1
@@ -77,6 +77,10 @@
2
    include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/UI/obs-frontend-api")
3
 endif()
4
 
5
+IF(BUILD_CAPTIONS)
6
+   string(TOUPPER "${BUILD_CAPTIONS}" BUILD_CAPTIONS)
7
+endif()
8
+
9
 configure_file(
10
    "${CMAKE_CURRENT_SOURCE_DIR}/obs-scripting-config.h.in"
11
    "${CMAKE_CURRENT_BINARY_DIR}/obs-scripting-config.h")
12
obs-studio-23.1.0.tar.xz/deps/obs-scripting/obs-scripting-config.h.in -> obs-studio-23.2.0.tar.xz/deps/obs-scripting/obs-scripting-config.h.in Changed
6
 
1
@@ -21,3 +21,4 @@
2
 #define COMPILE_LUA    @LUAJIT_FOUND@
3
 #define COMPILE_PYTHON @PYTHON_FOUND@
4
 #define UI_ENABLED     @UI_ENABLED@
5
+#define BUILD_CAPTIONS @BUILD_CAPTIONS@
6
obs-studio-23.1.0.tar.xz/deps/obs-scripting/obslua/obslua.i -> obs-studio-23.2.0.tar.xz/deps/obs-scripting/obslua/obslua.i Changed
17
 
1
@@ -84,6 +84,7 @@
2
 %include "graphics/vec2.h"
3
 %include "graphics/quat.h"
4
 %include "graphics/image-file.h"
5
+%include "obs-scripting-config.h"
6
 %include "obs-data.h"
7
 %include "obs-source.h"
8
 %include "obs-properties.h"
9
@@ -95,7 +96,6 @@
10
 %include "callback/signal.h"
11
 %include "util/bmem.h"
12
 %include "util/base.h"
13
-%include "obs-scripting-config.h"
14
 
15
 #if UI_ENABLED
16
 %include "obs-frontend-api.h"
17
obs-studio-23.1.0.tar.xz/deps/obs-scripting/obspython/obspython.i -> obs-studio-23.2.0.tar.xz/deps/obs-scripting/obspython/obspython.i Changed
17
 
1
@@ -82,6 +82,7 @@
2
 %include "graphics/vec3.h"
3
 %include "graphics/vec2.h"
4
 %include "graphics/quat.h"
5
+%include "obs-scripting-config.h"
6
 %include "obs-data.h"
7
 %include "obs-source.h"
8
 %include "obs-properties.h"
9
@@ -93,7 +94,6 @@
10
 %include "callback/signal.h"
11
 %include "util/bmem.h"
12
 %include "util/base.h"
13
-%include "obs-scripting-config.h"
14
 
15
 #if UI_ENABLED
16
 %include "obs-frontend-api.h"
17
obs-studio-23.1.0.tar.xz/docs/sphinx/reference-frontend-api.rst -> obs-studio-23.2.0.tar.xz/docs/sphinx/reference-frontend-api.rst Changed
33
 
1
@@ -235,6 +235,18 @@
2
 
3
 ---------------------------------------
4
 
5
+.. function:: int obs_frontend_get_transition_duration(void)
6
+
7
+   :return: The transition duration (in milliseconds) currently set in the UI.
8
+
9
+---------------------------------------
10
+
11
+.. function:: void obs_frontend_set_transition_duration(int duration)
12
+
13
+   :param duration: Desired transition duration (in milliseconds)
14
+
15
+---------------------------------------
16
+
17
 .. function:: char **obs_frontend_get_scene_collections(void)
18
 
19
    :return: The list of profile names, ending with NULL.  The list is
20
@@ -473,6 +485,12 @@
21
 
22
 ---------------------------------------
23
 
24
+.. function:: void obs_frontend_preview_program_trigger_transition(void)
25
+
26
+   Triggers a preview-to-program transition if studio mode is active.
27
+
28
+---------------------------------------
29
+
30
 .. function:: obs_source_t *obs_frontend_get_current_preview_scene(void)
31
 
32
    :return: A new reference to the current preview scene if studio mode
33
obs-studio-23.1.0.tar.xz/docs/sphinx/reference-outputs.rst -> obs-studio-23.2.0.tar.xz/docs/sphinx/reference-outputs.rst Changed
21
 
1
@@ -137,7 +137,10 @@
2
    Only applies to outputs that are encoded.  Packets will always be
3
    given in monotonic timestamp order.
4
 
5
-   :param packet: The video or audio packet
6
+   :param packet: The video or audio packet.  If NULL, an encoder error
7
+                  occurred, and the output should call
8
+                  :c:func:`obs_output_signal_stop()` with the error code
9
+                  **OBS_OUTPUT_ENCODE_ERROR**.
10
 
11
 .. member:: void (*obs_output_info.update)(void *data, obs_data_t *settings)
12
 
13
@@ -252,6 +255,7 @@
14
                   | OBS_OUTPUT_DISCONNECTED   - Unexpectedly disconnected
15
                   | OBS_OUTPUT_UNSUPPORTED    - The settings, video/audio format, or codecs are unsupported by this output
16
                   | OBS_OUTPUT_NO_SPACE       - Ran out of disk space
17
+                  | OBS_OUTPUT_ENCODE_ERROR   - Encoder error
18
 
19
 **starting** (ptr output)
20
 
21
obs-studio-23.1.0.tar.xz/libobs-d3d11/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/libobs-d3d11/CMakeLists.txt Changed
9
 
1
@@ -30,6 +30,7 @@
2
        PREFIX "")
3
 target_link_libraries(libobs-d3d11
4
    libobs
5
+   d3d9
6
    d3d11
7
    dxgi)
8
 
9
obs-studio-23.1.0.tar.xz/libobs-d3d11/d3d11-subsystem.cpp -> obs-studio-23.2.0.tar.xz/libobs-d3d11/d3d11-subsystem.cpp Changed
92
 
1
@@ -21,6 +21,7 @@
2
 #include <util/dstr.h>
3
 #include <util/util.hpp>
4
 #include <graphics/matrix3.h>
5
+#include <d3d9.h>
6
 #include "d3d11-subsystem.hpp"
7
 
8
 struct UnsupportedHWError : HRError {
9
@@ -663,7 +664,7 @@
10
    ComPtr<IDXGIFactory1> factory;
11
    ComPtr<IDXGIAdapter1> adapter;
12
    HRESULT hr;
13
-   UINT i = 0;
14
+   UINT i;
15
 
16
    IID factoryIID = (GetWinVer() >= 0x602) ? dxgiFactory2 :
17
        __uuidof(IDXGIFactory1);
18
@@ -672,7 +673,7 @@
19
    if (FAILED(hr))
20
        throw HRError("Failed to create DXGIFactory", hr);
21
 
22
-   while (factory->EnumAdapters1(i++, adapter.Assign()) == S_OK) {
23
+   for (i = 0; factory->EnumAdapters1(i, adapter.Assign()) == S_OK; ++i) {
24
        DXGI_ADAPTER_DESC desc;
25
        char name[512] = "";
26
 
27
@@ -686,7 +687,7 @@
28
 
29
        os_wcs_to_utf8(desc.Description, 0, name, sizeof(name));
30
 
31
-       if (!callback(param, name, i - 1))
32
+       if (!callback(param, name, i))
33
            break;
34
    }
35
 }
36
@@ -708,10 +709,10 @@
37
 
38
 static inline void LogAdapterMonitors(IDXGIAdapter1 *adapter)
39
 {
40
-   UINT i = 0;
41
+   UINT i;
42
    ComPtr<IDXGIOutput> output;
43
 
44
-   while (adapter->EnumOutputs(i++, &output) == S_OK) {
45
+   for (i = 0; adapter->EnumOutputs(i, &output) == S_OK; ++i) {
46
        DXGI_OUTPUT_DESC desc;
47
        if (FAILED(output->GetDesc(&desc)))
48
            continue;
49
@@ -733,7 +734,7 @@
50
    ComPtr<IDXGIFactory1> factory;
51
    ComPtr<IDXGIAdapter1> adapter;
52
    HRESULT hr;
53
-   UINT i = 0;
54
+   UINT i;
55
 
56
    blog(LOG_INFO, "Available Video Adapters: ");
57
 
58
@@ -744,7 +745,7 @@
59
    if (FAILED(hr))
60
        throw HRError("Failed to create DXGIFactory", hr);
61
 
62
-   while (factory->EnumAdapters1(i++, adapter.Assign()) == S_OK) {
63
+   for (i = 0; factory->EnumAdapters1(i, adapter.Assign()) == S_OK; ++i) {
64
        DXGI_ADAPTER_DESC desc;
65
        char name[512] = "";
66
 
67
@@ -2217,6 +2218,24 @@
68
    return device->nv12Supported;
69
 }
70
 
71
+extern "C" EXPORT void device_debug_marker_begin(gs_device_t *,
72
+       const char *markername, const float color[4])
73
+{
74
+   D3DCOLOR bgra = D3DCOLOR_ARGB((DWORD)(255.0f * color[3]),
75
+           (DWORD)(255.0f * color[0]), (DWORD)(255.0f * color[1]),
76
+           (DWORD)(255.0f * color[2]));
77
+
78
+   wchar_t wide[64];
79
+   os_utf8_to_wcs(markername, 0, wide, _countof(wide));
80
+
81
+   D3DPERF_BeginEvent(bgra, wide);
82
+}
83
+
84
+extern "C" EXPORT void device_debug_marker_end(gs_device_t *)
85
+{
86
+   D3DPERF_EndEvent();
87
+}
88
+
89
 extern "C" EXPORT gs_texture_t *device_texture_create_gdi(gs_device_t *device,
90
        uint32_t width, uint32_t height)
91
 {
92
obs-studio-23.1.0.tar.xz/libobs-d3d11/d3d11-subsystem.hpp -> obs-studio-23.2.0.tar.xz/libobs-d3d11/d3d11-subsystem.hpp Changed
10
 
1
@@ -659,7 +659,7 @@
2
          srcFactorC   (GS_BLEND_SRCALPHA),
3
          destFactorC  (GS_BLEND_INVSRCALPHA),
4
          srcFactorA   (GS_BLEND_ONE),
5
-         destFactorA  (GS_BLEND_ONE),
6
+         destFactorA  (GS_BLEND_INVSRCALPHA),
7
          redEnabled   (true),
8
          greenEnabled (true),
9
          blueEnabled  (true),
10
obs-studio-23.1.0.tar.xz/libobs-opengl/gl-indexbuffer.c -> obs-studio-23.2.0.tar.xz/libobs-opengl/gl-indexbuffer.c Changed
10
 
1
@@ -38,7 +38,7 @@
2
        uint32_t flags)
3
 {
4
    struct gs_index_buffer *ib = bzalloc(sizeof(struct gs_index_buffer));
5
-   size_t width = type == GS_UNSIGNED_LONG ? sizeof(long) : sizeof(short);
6
+   size_t width = type == GS_UNSIGNED_LONG ? 4 : 2;
7
 
8
    ib->device  = device;
9
    ib->data    = indices;
10
obs-studio-23.1.0.tar.xz/libobs-opengl/gl-subsystem.c -> obs-studio-23.2.0.tar.xz/libobs-opengl/gl-subsystem.c Changed
24
 
1
@@ -1341,6 +1341,22 @@
2
    da_pop_back(device->proj_stack);
3
 }
4
 
5
+void device_debug_marker_begin(gs_device_t *device,
6
+       const char *markername, const float color[4])
7
+{
8
+   UNUSED_PARAMETER(device);
9
+   UNUSED_PARAMETER(color);
10
+
11
+   glPushDebugGroupKHR(GL_DEBUG_SOURCE_APPLICATION, 0, -1, markername);
12
+}
13
+
14
+void device_debug_marker_end(gs_device_t *device)
15
+{
16
+   UNUSED_PARAMETER(device);
17
+
18
+   glPopDebugGroupKHR();
19
+}
20
+
21
 void gs_swapchain_destroy(gs_swapchain_t *swapchain)
22
 {
23
    if (!swapchain)
24
obs-studio-23.1.0.tar.xz/libobs-opengl/gl-subsystem.h -> obs-studio-23.2.0.tar.xz/libobs-opengl/gl-subsystem.h Changed
52
 
1
@@ -36,7 +36,7 @@
2
    COPY_TYPE_FBO_BLIT
3
 };
4
 
5
-static inline GLint convert_gs_format(enum gs_color_format format)
6
+static inline GLenum convert_gs_format(enum gs_color_format format)
7
 {
8
    switch (format) {
9
    case GS_A8:          return GL_RED;
10
@@ -51,6 +51,7 @@
11
    case GS_RGBA32F:     return GL_RGBA;
12
    case GS_RG16F:       return GL_RG;
13
    case GS_RG32F:       return GL_RG;
14
+   case GS_R8G8:        return GL_RG;
15
    case GS_R16F:        return GL_RED;
16
    case GS_R32F:        return GL_RED;
17
    case GS_DXT1:        return GL_RGB;
18
@@ -62,7 +63,7 @@
19
    return 0;
20
 }
21
 
22
-static inline GLint convert_gs_internal_format(enum gs_color_format format)
23
+static inline GLenum convert_gs_internal_format(enum gs_color_format format)
24
 {
25
    switch (format) {
26
    case GS_A8:          return GL_R8; /* NOTE: use GL_TEXTURE_SWIZZLE_x */
27
@@ -77,6 +78,7 @@
28
    case GS_RGBA32F:     return GL_RGBA32F;
29
    case GS_RG16F:       return GL_RG16F;
30
    case GS_RG32F:       return GL_RG32F;
31
+   case GS_R8G8:        return GL_R16;
32
    case GS_R16F:        return GL_R16F;
33
    case GS_R32F:        return GL_R32F;
34
    case GS_DXT1:        return GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
35
@@ -103,6 +105,7 @@
36
    case GS_RGBA32F:     return GL_FLOAT;
37
    case GS_RG16F:       return GL_UNSIGNED_SHORT;
38
    case GS_RG32F:       return GL_FLOAT;
39
+   case GS_R8G8:        return GL_UNSIGNED_SHORT;
40
    case GS_R16F:        return GL_UNSIGNED_SHORT;
41
    case GS_R32F:        return GL_FLOAT;
42
    case GS_DXT1:        return GL_UNSIGNED_BYTE;
43
@@ -399,7 +402,7 @@
44
    enum gs_color_format format;
45
    GLenum               gl_format;
46
    GLenum               gl_target;
47
-   GLint                gl_internal_format;
48
+   GLenum               gl_internal_format;
49
    GLenum               gl_type;
50
    GLuint               texture;
51
    uint32_t             levels;
52
obs-studio-23.1.0.tar.xz/libobs/audio-monitoring/win32/wasapi-output.h -> obs-studio-23.2.0.tar.xz/libobs/audio-monitoring/win32/wasapi-output.h Changed
7
 
1
@@ -1,3 +1,5 @@
2
+#pragma once
3
+
4
 #include <windows.h>
5
 #include <mmdeviceapi.h>
6
 #include <audioclient.h>
7
obs-studio-23.1.0.tar.xz/libobs/data/area.effect -> obs-studio-23.2.0.tar.xz/libobs/data/area.effect Changed
81
 
1
@@ -1,7 +1,4 @@
2
 uniform float4x4 ViewProj;
3
-uniform float4x4 color_matrix;
4
-uniform float3 color_range_min = {0.0, 0.0, 0.0};
5
-uniform float3 color_range_max = {1.0, 1.0, 1.0};
6
 uniform float2 base_dimension_i;
7
 uniform texture2d image;
8
 
9
@@ -50,56 +47,11 @@
10
            float2 targetmax = min(potentialtargetmax, targetposmax);
11
            float area = (targetmax.x - targetmin.x) * (targetmax.y - targetmin.y);
12
            float4 sample = image.Load(int3(loadindex, 0));
13
-           totalcolor += area * float4(sample.rgb * sample.a, sample.a);
14
+           totalcolor += area * sample;
15
        }
16
    }
17
 
18
-   return float4(totalcolor.rgb / totalcolor.a, totalcolor.a);
19
-}
20
-
21
-float3 ConvertFromYuv(float3 yuv)
22
-{
23
-   yuv = clamp(yuv, color_range_min, color_range_max);
24
-   return saturate(mul(float4(yuv, 1.0), color_matrix)).rgb;
25
-}
26
-
27
-float4 PSDrawAreaMatrix(VertInOut vert_in) : TARGET
28
-{
29
-   float3 totalcolor = float3(0.0, 0.0, 0.0);
30
-
31
-   float2 uv = vert_in.uv;
32
-   float2 uvdelta = float2(ddx(uv.x), ddy(uv.y));
33
-
34
-   // Handle potential OpenGL flip.
35
-   uvdelta.y = abs(uvdelta.y);
36
-
37
-   float2 uvhalfdelta = 0.5 * uvdelta;
38
-   float2 uvmin = uv - uvhalfdelta;
39
-   float2 uvmax = uv + uvhalfdelta;
40
-
41
-   int2 loadindexmin = int2(uvmin / base_dimension_i);
42
-   int2 loadindexmax = int2(uvmax / base_dimension_i);
43
-
44
-   float2 targetpos = uv / uvdelta;
45
-   float2 targetposmin = targetpos - 0.5;
46
-   float2 targetposmax = targetpos + 0.5;
47
-   float2 scale = base_dimension_i / uvdelta;
48
-   for (int loadindexy = loadindexmin.y; loadindexy <= loadindexmax.y; ++loadindexy)
49
-   {
50
-       for (int loadindexx = loadindexmin.x; loadindexx <= loadindexmax.x; ++loadindexx)
51
-       {
52
-           int2 loadindex = int2(loadindexx, loadindexy);
53
-           float2 potentialtargetmin = float2(loadindex) * scale;
54
-           float2 potentialtargetmax = potentialtargetmin + scale;
55
-           float2 targetmin = max(potentialtargetmin, targetposmin);
56
-           float2 targetmax = min(potentialtargetmax, targetposmax);
57
-           float area = (targetmax.x - targetmin.x) * (targetmax.y - targetmin.y);
58
-           float3 yuv = image.Load(int3(loadindex, 0)).xyz;
59
-           totalcolor += area * ConvertFromYuv(yuv);
60
-       }
61
-   }
62
-
63
-   return float4(totalcolor, 1.0);
64
+   return totalcolor;
65
 }
66
 
67
 technique Draw
68
@@ -110,12 +62,3 @@
69
        pixel_shader  = PSDrawAreaRGBA(vert_in);
70
    }
71
 }
72
-
73
-technique DrawMatrix
74
-{
75
-   pass
76
-   {
77
-       vertex_shader = VSDefault(vert_in);
78
-       pixel_shader  = PSDrawAreaMatrix(vert_in);
79
-   }
80
-}
81
obs-studio-23.1.0.tar.xz/libobs/data/bicubic_scale.effect -> obs-studio-23.2.0.tar.xz/libobs/data/bicubic_scale.effect Changed
50
 
1
@@ -7,8 +7,6 @@
2
 uniform float4x4 ViewProj;
3
 uniform texture2d image;
4
 uniform float4x4 color_matrix;
5
-uniform float3 color_range_min = {0.0, 0.0, 0.0};
6
-uniform float3 color_range_max = {1.0, 1.0, 1.0};
7
 uniform float2 base_dimension_i;
8
 uniform float undistort_factor = 1.0;
9
 
10
@@ -132,13 +130,19 @@
11
    return DrawBicubic(v_in, undistort);
12
 }
13
 
14
-float4 PSDrawBicubicMatrix(VertData v_in) : TARGET
15
+float4 PSDrawBicubicRGBADivide(VertData v_in) : TARGET
16
 {
17
    float4 rgba = DrawBicubic(v_in, false);
18
-   float4 yuv;
19
+   float alpha = rgba.a;
20
+   float multiplier = (alpha > 0.0) ? (1.0 / alpha) : 0.0;
21
+   return float4(rgba.rgb * multiplier, alpha);
22
+}
23
 
24
-   yuv.xyz = clamp(rgba.xyz, color_range_min, color_range_max);
25
-   return saturate(mul(float4(yuv.xyz, 1.0), color_matrix));
26
+float4 PSDrawBicubicMatrix(VertData v_in) : TARGET
27
+{
28
+   float3 rgb = DrawBicubic(v_in, false).rgb;
29
+   float3 yuv = mul(float4(saturate(rgb), 1.0), color_matrix).xyz;
30
+   return float4(yuv, 1.0);
31
 }
32
 
33
 technique Draw
34
@@ -150,6 +154,15 @@
35
    }
36
 }
37
 
38
+technique DrawAlphaDivide
39
+{
40
+   pass
41
+   {
42
+       vertex_shader = VSDefault(v_in);
43
+       pixel_shader  = PSDrawBicubicRGBADivide(v_in);
44
+   }
45
+}
46
+
47
 technique DrawUndistort
48
 {
49
    pass
50
obs-studio-23.1.0.tar.xz/libobs/data/bilinear_lowres_scale.effect -> obs-studio-23.2.0.tar.xz/libobs/data/bilinear_lowres_scale.effect Changed
50
 
1
@@ -6,8 +6,6 @@
2
 uniform float4x4 ViewProj;
3
 uniform texture2d image;
4
 uniform float4x4 color_matrix;
5
-uniform float3 color_range_min = {0.0, 0.0, 0.0};
6
-uniform float3 color_range_max = {1.0, 1.0, 1.0};
7
 uniform float2 base_dimension_i;
8
 
9
 sampler_state textureSampler {
10
@@ -56,12 +54,19 @@
11
    return DrawLowresBilinear(v_in);
12
 }
13
 
14
-float4 PSDrawLowresBilinearMatrix(VertData v_in) : TARGET
15
+float4 PSDrawLowresBilinearRGBADivide(VertData v_in) : TARGET
16
 {
17
-   float4 yuv = DrawLowresBilinear(v_in);
18
+   float4 rgba = DrawLowresBilinear(v_in);
19
+   float alpha = rgba.a;
20
+   float multiplier = (alpha > 0.0) ? (1.0 / alpha) : 0.0;
21
+   return float4(rgba.rgb * multiplier, alpha);
22
+}
23
 
24
-   yuv.xyz = clamp(yuv.xyz, color_range_min, color_range_max);
25
-   return saturate(mul(float4(yuv.xyz, 1.0), color_matrix));
26
+float4 PSDrawLowresBilinearMatrix(VertData v_in) : TARGET
27
+{
28
+   float3 rgb = DrawLowresBilinear(v_in).rgb;
29
+   float3 yuv = mul(float4(saturate(rgb), 1.0), color_matrix).xyz;
30
+   return float4(yuv, 1.0);
31
 }
32
 
33
 technique Draw
34
@@ -73,6 +78,15 @@
35
    }
36
 }
37
 
38
+technique DrawAlphaDivide
39
+{
40
+   pass
41
+   {
42
+       vertex_shader = VSDefault(v_in);
43
+       pixel_shader  = PSDrawLowresBilinearRGBADivide(v_in);
44
+   }
45
+}
46
+
47
 technique DrawMatrix
48
 {
49
    pass
50
obs-studio-23.1.0.tar.xz/libobs/data/default.effect -> obs-studio-23.2.0.tar.xz/libobs/data/default.effect Changed
48
 
1
@@ -1,7 +1,5 @@
2
 uniform float4x4 ViewProj;
3
 uniform float4x4 color_matrix;
4
-uniform float3 color_range_min = {0.0, 0.0, 0.0};
5
-uniform float3 color_range_max = {1.0, 1.0, 1.0};
6
 uniform texture2d image;
7
 
8
 sampler_state def_sampler {
9
@@ -28,11 +26,19 @@
10
    return image.Sample(def_sampler, vert_in.uv);
11
 }
12
 
13
+float4 PSDrawAlphaDivide(VertInOut vert_in) : TARGET
14
+{
15
+   float4 rgba = image.Sample(def_sampler, vert_in.uv);
16
+   float alpha = rgba.a;
17
+   float multiplier = (alpha > 0.0) ? (1.0 / alpha) : 0.0;
18
+   return float4(rgba.rgb * multiplier, alpha);
19
+}
20
+
21
 float4 PSDrawMatrix(VertInOut vert_in) : TARGET
22
 {
23
-   float4 yuv = image.Sample(def_sampler, vert_in.uv);
24
-   yuv.xyz = clamp(yuv.xyz, color_range_min, color_range_max);
25
-   return saturate(mul(float4(yuv.xyz, 1.0), color_matrix));
26
+   float3 rgb = image.Sample(def_sampler, vert_in.uv).rgb;
27
+   float3 yuv = mul(float4(rgb, 1.0), color_matrix).xyz;
28
+   return float4(yuv, 1.0);
29
 }
30
 
31
 technique Draw
32
@@ -44,6 +50,15 @@
33
    }
34
 }
35
 
36
+technique DrawAlphaDivide
37
+{
38
+   pass
39
+   {
40
+       vertex_shader = VSDefault(vert_in);
41
+       pixel_shader  = PSDrawAlphaDivide(vert_in);
42
+   }
43
+}
44
+
45
 technique DrawMatrix
46
 {
47
    pass
48
obs-studio-23.1.0.tar.xz/libobs/data/deinterlace_base.effect -> obs-studio-23.2.0.tar.xz/libobs/data/deinterlace_base.effect Changed
40
 
1
@@ -18,9 +18,6 @@
2
 
3
 uniform float4x4 ViewProj;
4
 uniform texture2d image;
5
-uniform float4x4 color_matrix;
6
-uniform float3 color_range_min = {0.0, 0.0, 0.0};
7
-uniform float3 color_range_max = {1.0, 1.0, 1.0};
8
 
9
 uniform texture2d previous_image;
10
 uniform float2 dimensions;
11
@@ -267,7 +264,7 @@
12
    return vert_out;
13
 }
14
 
15
-#define TECHNIQUE(rgba_ps, matrix_ps) \
16
+#define TECHNIQUE(rgba_ps) \
17
 technique Draw \
18
 { \
19
    pass \
20
@@ -275,19 +272,4 @@
21
        vertex_shader = VSDefault(v_in); \
22
        pixel_shader  = rgba_ps(v_in); \
23
    } \
24
-} \
25
-float4 matrix_ps(VertData v_in) : TARGET \
26
-{ \
27
-   float4 yuv = rgba_ps(v_in); \
28
-   yuv.xyz = clamp(yuv.xyz, color_range_min, color_range_max); \
29
-   return saturate(mul(float4(yuv.xyz, 1.0), color_matrix)); \
30
-} \
31
-\
32
-technique DrawMatrix \
33
-{ \
34
-   pass \
35
-   { \
36
-       vertex_shader = VSDefault(v_in); \
37
-       pixel_shader  = matrix_ps(v_in); \
38
-   } \
39
 }
40
obs-studio-23.1.0.tar.xz/libobs/data/deinterlace_blend.effect -> obs-studio-23.2.0.tar.xz/libobs/data/deinterlace_blend.effect Changed
7
 
1
@@ -18,4 +18,4 @@
2
 
3
 #include "deinterlace_base.effect"
4
 
5
-TECHNIQUE( PSBlendRGBA, PSBlendMatrix);
6
+TECHNIQUE(PSBlendRGBA);
7
obs-studio-23.1.0.tar.xz/libobs/data/deinterlace_blend_2x.effect -> obs-studio-23.2.0.tar.xz/libobs/data/deinterlace_blend_2x.effect Changed
7
 
1
@@ -18,4 +18,4 @@
2
 
3
 #include "deinterlace_base.effect"
4
 
5
-TECHNIQUE(PSBlendRGBA_2x, PSBlendMatrix_2x);
6
+TECHNIQUE(PSBlendRGBA_2x);
7
obs-studio-23.1.0.tar.xz/libobs/data/deinterlace_discard.effect -> obs-studio-23.2.0.tar.xz/libobs/data/deinterlace_discard.effect Changed
7
 
1
@@ -18,4 +18,4 @@
2
 
3
 #include "deinterlace_base.effect"
4
 
5
-TECHNIQUE(PSDiscardRGBA, PSDiscardMatrix);
6
+TECHNIQUE(PSDiscardRGBA);
7
obs-studio-23.1.0.tar.xz/libobs/data/deinterlace_discard_2x.effect -> obs-studio-23.2.0.tar.xz/libobs/data/deinterlace_discard_2x.effect Changed
7
 
1
@@ -18,4 +18,4 @@
2
 
3
 #include "deinterlace_base.effect"
4
 
5
-TECHNIQUE(PSDiscardRGBA_2x, PSDiscardMatrix_2x);
6
+TECHNIQUE(PSDiscardRGBA_2x);
7
obs-studio-23.1.0.tar.xz/libobs/data/deinterlace_linear.effect -> obs-studio-23.2.0.tar.xz/libobs/data/deinterlace_linear.effect Changed
7
 
1
@@ -18,4 +18,4 @@
2
 
3
 #include "deinterlace_base.effect"
4
 
5
-TECHNIQUE(PSLinearRGBA, PSLinearMatrix);
6
+TECHNIQUE(PSLinearRGBA);
7
obs-studio-23.1.0.tar.xz/libobs/data/deinterlace_linear_2x.effect -> obs-studio-23.2.0.tar.xz/libobs/data/deinterlace_linear_2x.effect Changed
7
 
1
@@ -18,4 +18,4 @@
2
 
3
 #include "deinterlace_base.effect"
4
 
5
-TECHNIQUE(PSLinearRGBA_2x, PSLinearxMatrixA_2x);
6
+TECHNIQUE(PSLinearRGBA_2x);
7
obs-studio-23.1.0.tar.xz/libobs/data/deinterlace_yadif.effect -> obs-studio-23.2.0.tar.xz/libobs/data/deinterlace_yadif.effect Changed
7
 
1
@@ -18,4 +18,4 @@
2
 
3
 #include "deinterlace_base.effect"
4
 
5
-TECHNIQUE(PSYadifMode0RGBA, PSYadifMode0Matrix);
6
+TECHNIQUE(PSYadifMode0RGBA);
7
obs-studio-23.1.0.tar.xz/libobs/data/deinterlace_yadif_2x.effect -> obs-studio-23.2.0.tar.xz/libobs/data/deinterlace_yadif_2x.effect Changed
7
 
1
@@ -18,4 +18,4 @@
2
 
3
 #include "deinterlace_base.effect"
4
 
5
-TECHNIQUE(PSYadifMode0RGBA_2x, PSYadifMode0Matrix_2x);
6
+TECHNIQUE(PSYadifMode0RGBA_2x);
7
obs-studio-23.1.0.tar.xz/libobs/data/format_conversion.effect -> obs-studio-23.2.0.tar.xz/libobs/data/format_conversion.effect Changed
154
 
1
@@ -42,6 +42,10 @@
2
 uniform int       int_u_plane_offset;
3
 uniform int       int_v_plane_offset;
4
 
5
+uniform float4x4  color_matrix;
6
+uniform float3    color_range_min = {0.0, 0.0, 0.0};
7
+uniform float3    color_range_max = {1.0, 1.0, 1.0};
8
+
9
 uniform texture2d image;
10
 
11
 sampler_state def_sampler {
12
@@ -283,8 +287,10 @@
13
    x += input_width_i_d2;
14
 
15
    float4 texel = image.Sample(def_sampler, float2(x, y));
16
-   return float4(odd > 0.5 ? texel[y1_pos] : texel[y0_pos],
17
-           texel[u_pos], texel[v_pos], 1.0);
18
+   float3 yuv = float3(odd > 0.5 ? texel[y1_pos] : texel[y0_pos],
19
+           texel[u_pos], texel[v_pos]);
20
+   yuv = clamp(yuv, color_range_min, color_range_max);
21
+   return saturate(mul(float4(yuv, 1.0), color_matrix));
22
 }
23
 
24
 float4 PSPlanar420_Reverse(VertInOut vert_in) : TARGET
25
@@ -297,12 +303,32 @@
26
    int chroma1    = int_u_plane_offset + chroma_offset;
27
    int chroma2    = int_v_plane_offset + chroma_offset;
28
 
29
-   return float4(
30
+   float3 yuv = float3(
31
        GetIntOffsetColor(lum_offset),
32
        GetIntOffsetColor(chroma1),
33
-       GetIntOffsetColor(chroma2),
34
-       1.0
35
+       GetIntOffsetColor(chroma2)
36
    );
37
+   yuv = clamp(yuv, color_range_min, color_range_max);
38
+   return saturate(mul(float4(yuv, 1.0), color_matrix));
39
+}
40
+
41
+float4 PSPlanar444_Reverse(VertInOut vert_in) : TARGET
42
+{
43
+   int x = int(vert_in.uv.x * width  + PRECISION_OFFSET);
44
+   int y = int(vert_in.uv.y * height + PRECISION_OFFSET);
45
+
46
+   int lum_offset = y * int_width + x;
47
+   int chroma_offset = y * int_width + x;
48
+   int chroma1    = int_u_plane_offset + chroma_offset;
49
+   int chroma2    = int_v_plane_offset + chroma_offset;
50
+
51
+   float3 yuv = float3(
52
+       GetIntOffsetColor(lum_offset),
53
+       GetIntOffsetColor(chroma1),
54
+       GetIntOffsetColor(chroma2)
55
+   );
56
+   yuv = clamp(yuv, color_range_min, color_range_max);
57
+   return saturate(mul(float4(yuv, 1.0), color_matrix));
58
 }
59
 
60
 float4 PSNV12_Reverse(VertInOut vert_in) : TARGET
61
@@ -314,12 +340,42 @@
62
    int chroma_offset = (y / 2) * (int_width / 2) + x / 2;
63
    int chroma        = int_u_plane_offset + chroma_offset * 2;
64
 
65
-   return float4(
66
+   float3 yuv = float3(
67
        GetIntOffsetColor(lum_offset),
68
        GetIntOffsetColor(chroma),
69
-       GetIntOffsetColor(chroma + 1),
70
-       1.0
71
+       GetIntOffsetColor(chroma + 1)
72
    );
73
+   yuv = clamp(yuv, color_range_min, color_range_max);
74
+   return saturate(mul(float4(yuv, 1.0), color_matrix));
75
+}
76
+
77
+float4 PSY800_Limited(VertInOut vert_in) : TARGET
78
+{
79
+   int x = int(vert_in.uv.x * width  + PRECISION_OFFSET);
80
+   int y = int(vert_in.uv.y * height + PRECISION_OFFSET);
81
+
82
+   float limited = image.Load(int3(x, y, 0)).x;
83
+   float full = saturate((limited - (16.0 / 255.0)) * (255.0 / 219.0));
84
+   return float4(full, full, full, 1.0);
85
+}
86
+
87
+float4 PSY800_Full(VertInOut vert_in) : TARGET
88
+{
89
+   int x = int(vert_in.uv.x * width  + PRECISION_OFFSET);
90
+   int y = int(vert_in.uv.y * height + PRECISION_OFFSET);
91
+
92
+   float3 full = image.Load(int3(x, y, 0)).xxx;
93
+   return float4(full, 1.0);
94
+}
95
+
96
+float4 PSRGB_Limited(VertInOut vert_in) : TARGET
97
+{
98
+   int x = int(vert_in.uv.x * width  + PRECISION_OFFSET);
99
+   int y = int(vert_in.uv.y * height + PRECISION_OFFSET);
100
+
101
+   float4 rgba = image.Load(int3(x, y, 0));
102
+   rgba.rgb = saturate((rgba.rgb - (16.0 / 255.0)) * (255.0 / 219.0));
103
+   return rgba;
104
 }
105
 
106
 technique Planar420
107
@@ -403,6 +459,15 @@
108
    }
109
 }
110
 
111
+technique I444_Reverse
112
+{
113
+   pass
114
+   {
115
+       vertex_shader = VSDefault(vert_in);
116
+       pixel_shader  = PSPlanar444_Reverse(vert_in);
117
+   }
118
+}
119
+
120
 technique NV12_Reverse
121
 {
122
    pass
123
@@ -411,3 +476,30 @@
124
        pixel_shader  = PSNV12_Reverse(vert_in);
125
    }
126
 }
127
+
128
+technique Y800_Limited
129
+{
130
+   pass
131
+   {
132
+       vertex_shader = VSDefault(vert_in);
133
+       pixel_shader  = PSY800_Limited(vert_in);
134
+   }
135
+}
136
+
137
+technique Y800_Full
138
+{
139
+   pass
140
+   {
141
+       vertex_shader = VSDefault(vert_in);
142
+       pixel_shader  = PSY800_Full(vert_in);
143
+   }
144
+}
145
+
146
+technique RGB_Limited
147
+{
148
+   pass
149
+   {
150
+       vertex_shader = VSDefault(vert_in);
151
+       pixel_shader  = PSRGB_Limited(vert_in);
152
+   }
153
+}
154
obs-studio-23.1.0.tar.xz/libobs/data/lanczos_scale.effect -> obs-studio-23.2.0.tar.xz/libobs/data/lanczos_scale.effect Changed
50
 
1
@@ -7,8 +7,6 @@
2
 uniform float4x4 ViewProj;
3
 uniform texture2d image;
4
 uniform float4x4 color_matrix;
5
-uniform float3 color_range_min = {0.0, 0.0, 0.0};
6
-uniform float3 color_range_max = {1.0, 1.0, 1.0};
7
 uniform float2 base_dimension_i;
8
 uniform float undistort_factor = 1.0;
9
 
10
@@ -140,13 +138,19 @@
11
    return DrawLanczos(v_in, undistort);
12
 }
13
 
14
-float4 PSDrawLanczosMatrix(FragData v_in) : TARGET
15
+float4 PSDrawLanczosRGBADivide(FragData v_in) : TARGET
16
 {
17
    float4 rgba = DrawLanczos(v_in, false);
18
-   float4 yuv;
19
+   float alpha = rgba.a;
20
+   float multiplier = (alpha > 0.0) ? (1.0 / alpha) : 0.0;
21
+   return float4(rgba.rgb * multiplier, alpha);
22
+}
23
 
24
-   yuv.xyz = clamp(rgba.xyz, color_range_min, color_range_max);
25
-   return saturate(mul(float4(yuv.xyz, 1.0), color_matrix));
26
+float4 PSDrawLanczosMatrix(FragData v_in) : TARGET
27
+{
28
+   float3 rgb = DrawLanczos(v_in, false).rgb;
29
+   float3 yuv = mul(float4(saturate(rgb), 1.0), color_matrix).xyz;
30
+   return float4(yuv, 1.0);
31
 }
32
 
33
 technique Draw
34
@@ -158,6 +162,15 @@
35
    }
36
 }
37
 
38
+technique DrawAlphaDivide
39
+{
40
+   pass
41
+   {
42
+       vertex_shader = VSDefault(v_in);
43
+       pixel_shader  = PSDrawLanczosRGBADivide(v_in);
44
+   }
45
+}
46
+
47
 technique DrawUndistort
48
 {
49
    pass
50
obs-studio-23.1.0.tar.xz/libobs/data/repeat.effect -> obs-studio-23.2.0.tar.xz/libobs/data/repeat.effect Changed
36
 
1
@@ -1,7 +1,4 @@
2
 uniform float4x4 ViewProj;
3
-uniform float4x4 color_matrix;
4
-uniform float3 color_range_min = {0.0, 0.0, 0.0};
5
-uniform float3 color_range_max = {1.0, 1.0, 1.0};
6
 uniform texture2d image;
7
 uniform float2 scale;
8
 
9
@@ -29,13 +26,6 @@
10
    return image.Sample(def_sampler, vert_in.uv);
11
 }
12
 
13
-float4 PSDrawMatrix(VertInOut vert_in) : TARGET
14
-{
15
-   float4 yuv = image.Sample(def_sampler, vert_in.uv);
16
-   yuv.xyz = clamp(yuv.xyz, color_range_min, color_range_max);
17
-   return saturate(mul(float4(yuv.xyz, 1.0), color_matrix));
18
-}
19
-
20
 technique Draw
21
 {
22
    pass
23
@@ -44,12 +34,3 @@
24
        pixel_shader  = PSDrawBare(vert_in);
25
    }
26
 }
27
-
28
-technique DrawMatrix
29
-{
30
-   pass
31
-   {
32
-       vertex_shader = VSDefault(vert_in);
33
-       pixel_shader  = PSDrawMatrix(vert_in);
34
-   }
35
-}
36
obs-studio-23.1.0.tar.xz/libobs/graphics/device-exports.h -> obs-studio-23.2.0.tar.xz/libobs/graphics/device-exports.h Changed
11
 
1
@@ -142,6 +142,9 @@
2
        float top, float bottom, float znear, float zfar);
3
 EXPORT void device_projection_push(gs_device_t *device);
4
 EXPORT void device_projection_pop(gs_device_t *device);
5
+EXPORT void device_debug_marker_begin(gs_device_t *device,
6
+       const char *markername, const float color[4]);
7
+EXPORT void device_debug_marker_end(gs_device_t *device);
8
 
9
 #ifdef __cplusplus
10
 }
11
obs-studio-23.1.0.tar.xz/libobs/graphics/effect-parser.c -> obs-studio-23.2.0.tar.xz/libobs/graphics/effect-parser.c Changed
339
 
1
@@ -1218,6 +1218,213 @@
2
 
3
 extern const char *gs_preprocessor_name(void);
4
 
5
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
6
+static void debug_get_default_value(struct gs_effect_param *param,
7
+   char* buffer, unsigned long long buf_size)
8
+{
9
+   if (param->default_val.num == 0) {
10
+       snprintf(buffer, buf_size, "(null)");
11
+       return;
12
+   }
13
+
14
+   switch (param->type) {
15
+   case GS_SHADER_PARAM_STRING:
16
+       snprintf(buffer, buf_size, "'%.*s'",
17
+           param->default_val.num,
18
+           param->default_val.array);
19
+       break;
20
+   case GS_SHADER_PARAM_INT:
21
+       snprintf(buffer, buf_size, "%ld",
22
+           *(int*)(param->default_val.array + 0));
23
+       break;
24
+   case GS_SHADER_PARAM_INT2:
25
+       snprintf(buffer, buf_size, "%ld,%ld",
26
+           *(int*)(param->default_val.array + 0),
27
+           *(int*)(param->default_val.array + 4));
28
+       break;
29
+   case GS_SHADER_PARAM_INT3:
30
+       snprintf(buffer, buf_size, "%ld,%ld,%ld",
31
+           *(int*)(param->default_val.array + 0),
32
+           *(int*)(param->default_val.array + 4),
33
+           *(int*)(param->default_val.array + 8));
34
+       break;
35
+   case GS_SHADER_PARAM_INT4:
36
+       snprintf(buffer, buf_size, "%ld,%ld,%ld,%ld",
37
+           *(int*)(param->default_val.array + 0),
38
+           *(int*)(param->default_val.array + 4),
39
+           *(int*)(param->default_val.array + 8),
40
+           *(int*)(param->default_val.array + 12));
41
+       break;
42
+   case GS_SHADER_PARAM_FLOAT:
43
+       snprintf(buffer, buf_size, "%e",
44
+           *(float*)(param->default_val.array + 0));
45
+       break;
46
+   case GS_SHADER_PARAM_VEC2:
47
+       snprintf(buffer, buf_size, "%e,%e",
48
+           *(float*)(param->default_val.array + 0),
49
+           *(float*)(param->default_val.array + 4));
50
+       break;
51
+   case GS_SHADER_PARAM_VEC3:
52
+       snprintf(buffer, buf_size, "%e,%e,%e",
53
+           *(float*)(param->default_val.array + 0),
54
+           *(float*)(param->default_val.array + 4),
55
+           *(float*)(param->default_val.array + 8));
56
+       break;
57
+   case GS_SHADER_PARAM_VEC4:
58
+       snprintf(buffer, buf_size, "%e,%e,%e,%e",
59
+           *(float*)(param->default_val.array + 0),
60
+           *(float*)(param->default_val.array + 4),
61
+           *(float*)(param->default_val.array + 8),
62
+           *(float*)(param->default_val.array + 12));
63
+       break;
64
+   case GS_SHADER_PARAM_MATRIX4X4:
65
+       snprintf(buffer, buf_size,
66
+           "[[%e,%e,%e,%e],[%e,%e,%e,%e],"
67
+           "[%e,%e,%e,%e],[%e,%e,%e,%e]]",
68
+           *(float*)(param->default_val.array + 0),
69
+           *(float*)(param->default_val.array + 4),
70
+           *(float*)(param->default_val.array + 8),
71
+           *(float*)(param->default_val.array + 12),
72
+           *(float*)(param->default_val.array + 16),
73
+           *(float*)(param->default_val.array + 20),
74
+           *(float*)(param->default_val.array + 24),
75
+           *(float*)(param->default_val.array + 28),
76
+           *(float*)(param->default_val.array + 32),
77
+           *(float*)(param->default_val.array + 36),
78
+           *(float*)(param->default_val.array + 40),
79
+           *(float*)(param->default_val.array + 44),
80
+           *(float*)(param->default_val.array + 48),
81
+           *(float*)(param->default_val.array + 52),
82
+           *(float*)(param->default_val.array + 56),
83
+           *(float*)(param->default_val.array + 60));
84
+       break;
85
+   case GS_SHADER_PARAM_BOOL:
86
+       snprintf(buffer, buf_size, "%s",
87
+           (*param->default_val.array) != 0
88
+           ? "true\0"
89
+           : "false\0");
90
+       break;
91
+   case GS_SHADER_PARAM_UNKNOWN:
92
+   case GS_SHADER_PARAM_TEXTURE:
93
+       snprintf(buffer, buf_size, "<unknown>");
94
+       break;
95
+   }
96
+}
97
+
98
+static void debug_param(struct gs_effect_param *param,
99
+   struct ep_param *param_in, unsigned long long idx, const char* offset)
100
+{
101
+   char _debug_type[4096];
102
+   switch (param->type) {
103
+   case GS_SHADER_PARAM_STRING:
104
+       snprintf(_debug_type, sizeof(_debug_type), "string");
105
+       break;
106
+   case GS_SHADER_PARAM_INT:
107
+       snprintf(_debug_type, sizeof(_debug_type), "int");
108
+       break;
109
+   case GS_SHADER_PARAM_INT2:
110
+       snprintf(_debug_type, sizeof(_debug_type), "int2");
111
+       break;
112
+   case GS_SHADER_PARAM_INT3:
113
+       snprintf(_debug_type, sizeof(_debug_type), "int3");
114
+       break;
115
+   case GS_SHADER_PARAM_INT4:
116
+       snprintf(_debug_type, sizeof(_debug_type), "int4");
117
+       break;
118
+   case GS_SHADER_PARAM_FLOAT:
119
+       snprintf(_debug_type, sizeof(_debug_type), "float");
120
+       break;
121
+   case GS_SHADER_PARAM_VEC2:
122
+       snprintf(_debug_type, sizeof(_debug_type), "float2");
123
+       break;
124
+   case GS_SHADER_PARAM_VEC3:
125
+       snprintf(_debug_type, sizeof(_debug_type), "float3");
126
+       break;
127
+   case GS_SHADER_PARAM_VEC4:
128
+       snprintf(_debug_type, sizeof(_debug_type), "float4");
129
+       break;
130
+   case GS_SHADER_PARAM_MATRIX4X4:
131
+       snprintf(_debug_type, sizeof(_debug_type), "float4x4");
132
+       break;
133
+   case GS_SHADER_PARAM_BOOL:
134
+       snprintf(_debug_type, sizeof(_debug_type), "bool");
135
+       break;
136
+   case GS_SHADER_PARAM_UNKNOWN:
137
+       snprintf(_debug_type, sizeof(_debug_type), "unknown");
138
+       break;
139
+   case GS_SHADER_PARAM_TEXTURE:
140
+       snprintf(_debug_type, sizeof(_debug_type), "texture");
141
+       break;
142
+   }
143
+
144
+   char _debug_buf[4096];
145
+   debug_get_default_value(param, _debug_buf, sizeof(_debug_buf));
146
+   if (param->annotations.num > 0) {
147
+       blog(LOG_DEBUG, "%s[%4lld] %.*s '%s' with value %.*s and %lld annotations:",
148
+           offset,
149
+           idx,
150
+           sizeof(_debug_type), _debug_type,
151
+           param->name,
152
+           sizeof(_debug_buf), _debug_buf,
153
+           param->annotations.num);
154
+   } else {
155
+       blog(LOG_DEBUG, "%s[%4lld] %.*s '%s' with value %.*s.",
156
+           offset,
157
+           idx,
158
+           sizeof(_debug_type), _debug_type,
159
+           param->name,
160
+           sizeof(_debug_buf), _debug_buf);
161
+   }
162
+
163
+}
164
+
165
+static void debug_param_annotation(struct gs_effect_param *param,
166
+   struct ep_param *param_in, unsigned long long idx, const char* offset)
167
+{
168
+   char _debug_buf[4096];
169
+   debug_get_default_value(param, _debug_buf, sizeof(_debug_buf));
170
+   blog(LOG_DEBUG, "%s[%4lld] %s '%s' with value %.*s",
171
+       offset,
172
+       idx,
173
+       param_in->type,
174
+       param->name,
175
+       sizeof(_debug_buf), _debug_buf);
176
+}
177
+
178
+static void debug_print_string(const char* offset, const char* str)
179
+{
180
+   // Bypass 4096 limit in def_log_handler.
181
+   char const *begin = str;
182
+   unsigned long long line = 1;
183
+   for (char const *here = begin; here[0] != '\0'; here++) {
184
+       char const * str = begin;
185
+       unsigned long long len = here - begin;
186
+       bool is_line = false;
187
+
188
+       if (here[0] == '\r') {
189
+           is_line = true;
190
+           if (here[1] == '\n') {
191
+               here += 1;
192
+           }
193
+           begin = here + 1;
194
+       } else if (here[0] == '\n') {
195
+           is_line = true;
196
+           begin = here + 1;
197
+       }
198
+
199
+       if (is_line) {
200
+           blog(LOG_DEBUG, "\t\t\t\t[%4lld] %.*s", line,
201
+               len, str);
202
+           line++;
203
+       }
204
+   }
205
+   if (begin[0] != '\0') {
206
+       // Final line was not written.
207
+       blog(LOG_DEBUG, "\t\t\t\t[%4lld] %*s", line, strlen(begin), begin);
208
+   }
209
+}
210
+#endif
211
+
212
 bool ep_parse(struct effect_parser *ep, gs_effect_t *effect,
213
               const char *effect_string, const char *file)
214
 {
215
@@ -1267,10 +1474,21 @@
216
        }
217
    }
218
 
219
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
220
+   blog(LOG_DEBUG, "================================================================================");
221
+   blog(LOG_DEBUG, "Effect Parser reformatted shader '%s' to:", file);
222
+   debug_print_string("\t", ep->cfp.lex.reformatted);
223
+#endif
224
+
225
    success = !error_data_has_errors(&ep->cfp.error_list);
226
    if (success)
227
        success = ep_compile(ep);
228
 
229
+
230
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
231
+   blog(LOG_DEBUG, "================================================================================");
232
+#endif
233
+
234
    return success;
235
 }
236
 
237
@@ -1608,6 +1826,10 @@
238
        da_move(param->default_val, param_in->default_val);
239
 
240
        param->type = get_effect_param_type(param_in->type);
241
+
242
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
243
+       debug_param(param, param_in, i, "\t\t");
244
+#endif
245
    }
246
 }
247
 
248
@@ -1639,6 +1861,10 @@
249
    else if (strcmp(param_in->name, "World") == 0)
250
        ep->effect->world = param;
251
 
252
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
253
+   debug_param(param, param_in, idx, "\t");
254
+#endif
255
+
256
    ep_compile_param_annotations(param_in, param, ep);
257
 }
258
 
259
@@ -1663,6 +1889,10 @@
260
        param->sparam = gs_shader_get_param_by_name(shader,
261
                param_name->array);
262
 
263
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
264
+       debug_param(param->eparam, 0, i, "\t\t\t\t");
265
+#endif
266
+
267
        if (!param->sparam) {
268
            blog(LOG_ERROR, "Effect shader parameter not found");
269
            return false;
270
@@ -1707,6 +1937,7 @@
271
        pass->vertshader = gs_vertexshader_create(shader_str.array,
272
                location.array, NULL);
273
 
274
+
275
        shader = pass->vertshader;
276
        pass_params = &pass->vertshader_params.da;
277
    } else if (type == GS_SHADER_PIXEL) {
278
@@ -1720,12 +1951,12 @@
279
        pass_params = &pass->pixelshader_params.da;
280
    }
281
 
282
-#if 0
283
-   blog(LOG_DEBUG, "+++++++++++++++++++++++++++++++++++");
284
-   blog(LOG_DEBUG, "  %s", location.array);
285
-   blog(LOG_DEBUG, "-----------------------------------");
286
-   blog(LOG_DEBUG, "%s", shader_str.array);
287
-   blog(LOG_DEBUG, "+++++++++++++++++++++++++++++++++++");
288
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
289
+   blog(LOG_DEBUG, "\t\t\t%s Shader:",
290
+       type == GS_SHADER_VERTEX ? "Vertex" : "Fragment");
291
+   blog(LOG_DEBUG, "\t\t\tCode:");
292
+   debug_print_string("\t\t\t\t\t", shader_str.array);
293
+   blog(LOG_DEBUG, "\t\t\tParameters:");
294
 #endif
295
 
296
    if (shader)
297
@@ -1757,6 +1988,11 @@
298
    pass->name = bstrdup(pass_in->name);
299
    pass->section = EFFECT_PASS;
300
 
301
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
302
+   blog(LOG_DEBUG, "\t\t[%4lld] Pass '%s':",
303
+       idx, pass->name);
304
+#endif
305
+
306
    if (!ep_compile_pass_shader(ep, tech, pass, pass_in, idx,
307
                GS_SHADER_VERTEX)) {
308
        success = false;
309
@@ -1788,6 +2024,11 @@
310
 
311
    da_resize(tech->passes, tech_in->passes.num);
312
 
313
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
314
+   blog(LOG_DEBUG, "\t[%4lld] Technique '%s' has %lld passes:",
315
+       idx, tech->name, tech->passes.num);
316
+#endif
317
+
318
    for (i = 0; i < tech->passes.num; i++) {
319
        if (!ep_compile_pass(ep, tech, tech_in, i))
320
            success = false;
321
@@ -1806,8 +2047,17 @@
322
    da_resize(ep->effect->params, ep->params.num);
323
    da_resize(ep->effect->techniques, ep->techniques.num);
324
 
325
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
326
+   blog(LOG_DEBUG, "Shader has %lld parameters:", ep->params.num);
327
+#endif
328
+
329
    for (i = 0; i < ep->params.num; i++)
330
        ep_compile_param(ep, i);
331
+
332
+#if defined(_DEBUG) && defined(_DEBUG_SHADERS)
333
+   blog(LOG_DEBUG, "Shader has %lld techniques:", ep->techniques.num);
334
+#endif
335
+
336
    for (i = 0; i < ep->techniques.num; i++) {
337
        if (!ep_compile_technique(ep, i))
338
            success = false;
339
obs-studio-23.1.0.tar.xz/libobs/graphics/graphics-imports.c -> obs-studio-23.2.0.tar.xz/libobs/graphics/graphics-imports.c Changed
11
 
1
@@ -173,6 +173,9 @@
2
 
3
    GRAPHICS_IMPORT_OPTIONAL(device_nv12_available);
4
 
5
+   GRAPHICS_IMPORT(device_debug_marker_begin);
6
+   GRAPHICS_IMPORT(device_debug_marker_end);
7
+
8
    /* OSX/Cocoa specific functions */
9
 #ifdef __APPLE__
10
    GRAPHICS_IMPORT_OPTIONAL(device_texture_create_from_iosurface);
11
obs-studio-23.1.0.tar.xz/libobs/graphics/graphics-internal.h -> obs-studio-23.2.0.tar.xz/libobs/graphics/graphics-internal.h Changed
12
 
1
@@ -234,6 +234,10 @@
2
 
3
    bool (*device_nv12_available)(gs_device_t *device);
4
 
5
+   void (*device_debug_marker_begin)(gs_device_t *device,
6
+           const char *markername, const float color[4]);
7
+   void (*device_debug_marker_end)(gs_device_t *device);
8
+
9
 #ifdef __APPLE__
10
    /* OSX/Cocoa specific functions */
11
    gs_texture_t *(*device_texture_create_from_iosurface)(gs_device_t *dev,
12
obs-studio-23.1.0.tar.xz/libobs/graphics/graphics.c -> obs-studio-23.2.0.tar.xz/libobs/graphics/graphics.c Changed
90
 
1
@@ -160,12 +160,12 @@
2
 
3
    graphics->exports.device_blend_function_separate(graphics->device,
4
            GS_BLEND_SRCALPHA, GS_BLEND_INVSRCALPHA,
5
-           GS_BLEND_ONE, GS_BLEND_ONE);
6
+           GS_BLEND_ONE, GS_BLEND_INVSRCALPHA);
7
    graphics->cur_blend_state.enabled = true;
8
    graphics->cur_blend_state.src_c   = GS_BLEND_SRCALPHA;
9
    graphics->cur_blend_state.dest_c  = GS_BLEND_INVSRCALPHA;
10
    graphics->cur_blend_state.src_a   = GS_BLEND_ONE;
11
-   graphics->cur_blend_state.dest_a  = GS_BLEND_ONE;
12
+   graphics->cur_blend_state.dest_a  = GS_BLEND_INVSRCALPHA;
13
 
14
    graphics->exports.device_leave_context(graphics->device);
15
 
16
@@ -1240,10 +1240,10 @@
17
    if (graphics->cur_blend_state.src_c  != GS_BLEND_SRCALPHA ||
18
        graphics->cur_blend_state.dest_c != GS_BLEND_INVSRCALPHA ||
19
        graphics->cur_blend_state.src_a  != GS_BLEND_ONE ||
20
-       graphics->cur_blend_state.dest_a != GS_BLEND_ONE)
21
+       graphics->cur_blend_state.dest_a != GS_BLEND_INVSRCALPHA)
22
        gs_blend_function_separate(
23
                GS_BLEND_SRCALPHA, GS_BLEND_INVSRCALPHA,
24
-               GS_BLEND_ONE, GS_BLEND_ONE);
25
+               GS_BLEND_ONE, GS_BLEND_INVSRCALPHA);
26
 }
27
 
28
 /* ------------------------------------------------------------------------- */
29
@@ -1517,9 +1517,7 @@
30
        return NULL;
31
 
32
    if (indices && num && (flags & GS_DUP_BUFFER) != 0) {
33
-       size_t size = type == GS_UNSIGNED_SHORT
34
-           ? sizeof(unsigned short)
35
-           : sizeof(unsigned long);
36
+       size_t size = type == GS_UNSIGNED_SHORT ? 2 : 4;
37
        indices = bmemdup(indices, size * num);
38
    }
39
 
40
@@ -2557,6 +2555,49 @@
41
            thread_graphics->device);
42
 }
43
 
44
+void gs_debug_marker_begin(const float color[4],
45
+       const char *markername)
46
+{
47
+   if (!gs_valid("gs_debug_marker_begin"))
48
+       return;
49
+
50
+   if (!markername)
51
+       markername = "(null)";
52
+
53
+   thread_graphics->exports.device_debug_marker_begin(
54
+           thread_graphics->device, markername,
55
+           color);
56
+}
57
+
58
+void gs_debug_marker_begin_format(const float color[4],
59
+       const char *format, ...)
60
+{
61
+   if (!gs_valid("gs_debug_marker_begin"))
62
+       return;
63
+
64
+   if (format) {
65
+       char markername[64];
66
+       va_list args;
67
+       va_start(args, format);
68
+       vsnprintf(markername, sizeof(markername), format, args);
69
+       va_end(args);
70
+       thread_graphics->exports.device_debug_marker_begin(
71
+           thread_graphics->device, markername,
72
+           color);
73
+   } else {
74
+       gs_debug_marker_begin(color, NULL);
75
+   }
76
+}
77
+
78
+void gs_debug_marker_end(void)
79
+{
80
+   if (!gs_valid("gs_debug_marker_end"))
81
+       return;
82
+
83
+   thread_graphics->exports.device_debug_marker_end(
84
+           thread_graphics->device);
85
+}
86
+
87
 #ifdef __APPLE__
88
 
89
 /** Platform specific functions */
90
obs-studio-23.1.0.tar.xz/libobs/graphics/graphics.h -> obs-studio-23.2.0.tar.xz/libobs/graphics/graphics.h Changed
36
 
1
@@ -761,6 +761,34 @@
2
 
3
 EXPORT bool     gs_nv12_available(void);
4
 
5
+#define GS_USE_DEBUG_MARKERS 0
6
+#if GS_USE_DEBUG_MARKERS
7
+static const float GS_DEBUG_COLOR_DEFAULT[] = { 0.5f, 0.5f, 0.5f, 1.0f };
8
+static const float GS_DEBUG_COLOR_RENDER_VIDEO[] = { 0.0f, 0.5f, 0.0f, 1.0f };
9
+static const float GS_DEBUG_COLOR_MAIN_TEXTURE[] = { 0.0f, 0.25f, 0.0f, 1.0f };
10
+static const float GS_DEBUG_COLOR_DISPLAY[] = { 0.0f, 0.5f, 0.5f, 1.0f };
11
+static const float GS_DEBUG_COLOR_SOURCE[] = { 0.0f, 0.5f, 5.0f, 1.0f };
12
+static const float GS_DEBUG_COLOR_ITEM[] = { 0.5f, 0.0f, 0.0f, 1.0f };
13
+static const float GS_DEBUG_COLOR_ITEM_TEXTURE[] = { 0.25f, 0.0f, 0.0f, 1.0f };
14
+static const float GS_DEBUG_COLOR_CONVERT_FORMAT[] = { 0.5f, 0.5f, 0.0f, 1.0f };
15
+#define GS_DEBUG_MARKER_BEGIN(color, markername) \
16
+       gs_debug_marker_begin(color, markername)
17
+#define GS_DEBUG_MARKER_BEGIN_FORMAT(color, format, ...) \
18
+       gs_debug_marker_begin_format(color, format, \
19
+       __VA_ARGS__)
20
+#define GS_DEBUG_MARKER_END() gs_debug_marker_end()
21
+#else
22
+#define GS_DEBUG_MARKER_BEGIN(color, markername) ((void)0)
23
+#define GS_DEBUG_MARKER_BEGIN_FORMAT(color, format, ...) ((void)0)
24
+#define GS_DEBUG_MARKER_END() ((void)0)
25
+#endif
26
+
27
+EXPORT void     gs_debug_marker_begin(const float color[4],
28
+       const char *markername);
29
+EXPORT void     gs_debug_marker_begin_format(const float color[4],
30
+       const char *format, ...);
31
+EXPORT void     gs_debug_marker_end(void);
32
+
33
 #ifdef __APPLE__
34
 
35
 /** platform specific function for creating (GL_TEXTURE_RECTANGLE) textures
36
obs-studio-23.1.0.tar.xz/libobs/graphics/image-file.c -> obs-studio-23.2.0.tar.xz/libobs/graphics/image-file.c Changed
10
 
1
@@ -62,6 +62,8 @@
2
 static inline void *alloc_mem(gs_image_file_t *image, uint64_t *mem_usage,
3
        size_t size)
4
 {
5
+   UNUSED_PARAMETER(image);
6
+
7
    if (mem_usage)
8
        *mem_usage += size;
9
    return bzalloc(size);
10
obs-studio-23.1.0.tar.xz/libobs/media-io/video-io.h -> obs-studio-23.2.0.tar.xz/libobs/media-io/video-io.h Changed
31
 
1
@@ -135,15 +135,23 @@
2
    return "601";
3
 }
4
 
5
-static inline const char *get_video_range_name(enum video_range_type range)
6
+static inline enum video_range_type resolve_video_range(
7
+       enum video_format format, enum video_range_type range)
8
 {
9
-   switch (range) {
10
-   case VIDEO_RANGE_FULL: return "Full";
11
-   case VIDEO_RANGE_PARTIAL:
12
-   case VIDEO_RANGE_DEFAULT:;
13
+   if (range == VIDEO_RANGE_DEFAULT) {
14
+       range = format_is_yuv(format)
15
+           ? VIDEO_RANGE_PARTIAL
16
+           : VIDEO_RANGE_FULL;
17
    }
18
 
19
-   return "Partial";
20
+   return range;
21
+}
22
+
23
+static inline const char *get_video_range_name(enum video_format format,
24
+       enum video_range_type range)
25
+{
26
+   range = resolve_video_range(format, range);
27
+   return range == VIDEO_RANGE_FULL ? "Full" : "Partial";
28
 }
29
 
30
 enum video_scale_type {
31
obs-studio-23.1.0.tar.xz/libobs/obs-audio-controls.c -> obs-studio-23.2.0.tar.xz/libobs/obs-audio-controls.c Changed
14
 
1
@@ -932,3 +932,12 @@
2
    pthread_mutex_unlock(&volmeter->callback_mutex);
3
 }
4
 
5
+float obs_mul_to_db(float mul)
6
+{
7
+   return mul_to_db(mul);
8
+}
9
+
10
+float obs_db_to_mul(float db)
11
+{
12
+   return db_to_mul(db);
13
+}
14
obs-studio-23.1.0.tar.xz/libobs/obs-audio-controls.h -> obs-studio-23.2.0.tar.xz/libobs/obs-audio-controls.h Changed
11
 
1
@@ -273,6 +273,9 @@
2
 EXPORT void obs_volmeter_remove_callback(obs_volmeter_t *volmeter,
3
        obs_volmeter_updated_t callback, void *param);
4
 
5
+EXPORT float obs_mul_to_db(float mul);
6
+EXPORT float obs_db_to_mul(float db);
7
+
8
 #ifdef __cplusplus
9
 }
10
 #endif
11
obs-studio-23.1.0.tar.xz/libobs/obs-config.h -> obs-studio-23.2.0.tar.xz/libobs/obs-config.h Changed
10
 
1
@@ -34,7 +34,7 @@
2
  *
3
  * Reset to zero each major version
4
  */
5
-#define LIBOBS_API_MINOR_VER  1
6
+#define LIBOBS_API_MINOR_VER  2
7
 
8
 /*
9
  * Increment if backward-compatible bug fix
10
obs-studio-23.1.0.tar.xz/libobs/obs-defs.h -> obs-studio-23.2.0.tar.xz/libobs/obs-defs.h Changed
9
 
1
@@ -40,6 +40,7 @@
2
 #define OBS_OUTPUT_DISCONNECTED   -5
3
 #define OBS_OUTPUT_UNSUPPORTED    -6
4
 #define OBS_OUTPUT_NO_SPACE       -7
5
+#define OBS_OUTPUT_ENCODE_ERROR   -8
6
 
7
 #define OBS_VIDEO_SUCCESS           0
8
 #define OBS_VIDEO_FAIL             -1
9
obs-studio-23.1.0.tar.xz/libobs/obs-display.c -> obs-studio-23.2.0.tar.xz/libobs/obs-display.c Changed
49
 
1
@@ -175,7 +175,6 @@
2
 static inline void render_display_end()
3
 {
4
    gs_end_scene();
5
-   gs_present();
6
 }
7
 
8
 void render_display(struct obs_display *display)
9
@@ -185,6 +184,8 @@
10
 
11
    if (!display || !display->enabled) return;
12
 
13
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_DISPLAY, "obs_display");
14
+
15
    /* -------------------------------------------- */
16
 
17
    pthread_mutex_lock(&display->draw_info_mutex);
18
@@ -214,6 +215,10 @@
19
    pthread_mutex_unlock(&display->draw_callbacks_mutex);
20
 
21
    render_display_end();
22
+
23
+   GS_DEBUG_MARKER_END();
24
+
25
+   gs_present();
26
 }
27
 
28
 void obs_display_set_enabled(obs_display_t *display, bool enable)
29
@@ -232,3 +237,19 @@
30
    if (display)
31
        display->background_color = color;
32
 }
33
+
34
+void obs_display_size(obs_display_t *display,
35
+       uint32_t *width, uint32_t *height)
36
+{
37
+   *width = 0;
38
+   *height = 0;
39
+
40
+   if (display) {
41
+       pthread_mutex_lock(&display->draw_info_mutex);
42
+
43
+       *width = display->cx;
44
+       *height = display->cy;
45
+
46
+       pthread_mutex_unlock(&display->draw_info_mutex);
47
+   }
48
+}
49
obs-studio-23.1.0.tar.xz/libobs/obs-encoder.c -> obs-studio-23.2.0.tar.xz/libobs/obs-encoder.c Changed
136
 
1
@@ -208,7 +208,7 @@
2
    set_encoder_active(encoder, true);
3
 }
4
 
5
-static void remove_connection(struct obs_encoder *encoder)
6
+static void remove_connection(struct obs_encoder *encoder, bool shutdown)
7
 {
8
    if (encoder->info.type == OBS_ENCODER_AUDIO) {
9
        audio_output_disconnect(encoder->media, encoder->mixer_idx,
10
@@ -221,7 +221,13 @@
11
        }
12
    }
13
 
14
-   obs_encoder_shutdown(encoder);
15
+   /* obs_encoder_shutdown locks init_mutex, so don't call it on encode
16
+    * errors, otherwise you can get a deadlock with outputs when they end
17
+    * data capture, which will lock init_mutex and the video callback
18
+    * mutex in the reverse order.  instead, call shutdown before starting
19
+    * up again */
20
+   if (shutdown)
21
+       obs_encoder_shutdown(encoder);
22
    set_encoder_active(encoder, false);
23
 }
24
 
25
@@ -575,7 +581,7 @@
26
    pthread_mutex_unlock(&encoder->callbacks_mutex);
27
 
28
    if (last) {
29
-       remove_connection(encoder);
30
+       remove_connection(encoder, true);
31
        encoder->initialized = false;
32
 
33
        if (encoder->destroy_on_stop) {
34
@@ -834,10 +840,23 @@
35
 void full_stop(struct obs_encoder *encoder)
36
 {
37
    if (encoder) {
38
+       pthread_mutex_lock(&encoder->outputs_mutex);
39
+       for (size_t i = 0; i < encoder->outputs.num; i++) {
40
+           struct obs_output *output = encoder->outputs.array[i];
41
+           obs_output_force_stop(output);
42
+
43
+           pthread_mutex_lock(&output->interleaved_mutex);
44
+           output->info.encoded_packet(output->context.data, NULL);
45
+           pthread_mutex_unlock(&output->interleaved_mutex);
46
+       }
47
+       pthread_mutex_unlock(&encoder->outputs_mutex);
48
+
49
        pthread_mutex_lock(&encoder->callbacks_mutex);
50
        da_free(encoder->callbacks);
51
-       remove_connection(encoder);
52
        pthread_mutex_unlock(&encoder->callbacks_mutex);
53
+
54
+       remove_connection(encoder, false);
55
+       encoder->initialized = false;
56
    }
57
 }
58
 
59
@@ -845,9 +864,9 @@
60
        bool received, struct encoder_packet *pkt)
61
 {
62
    if (!success) {
63
-       full_stop(encoder);
64
        blog(LOG_ERROR, "Error encoding with encoder '%s'",
65
                encoder->context.name);
66
+       full_stop(encoder);
67
        return;
68
    }
69
 
70
@@ -876,7 +895,7 @@
71
 }
72
 
73
 static const char *do_encode_name = "do_encode";
74
-void do_encode(struct obs_encoder *encoder, struct encoder_frame *frame)
75
+bool do_encode(struct obs_encoder *encoder, struct encoder_frame *frame)
76
 {
77
    profile_start(do_encode_name);
78
    if (!encoder->profile_encoder_encode_name)
79
@@ -899,6 +918,8 @@
80
    send_off_encoder_packet(encoder, success, received, &pkt);
81
 
82
    profile_end(do_encode_name);
83
+
84
+   return success;
85
 }
86
 
87
 static const char *receive_video_name = "receive_video";
88
@@ -930,9 +951,8 @@
89
    enc_frame.frames = 1;
90
    enc_frame.pts    = encoder->cur_pts;
91
 
92
-   do_encode(encoder, &enc_frame);
93
-
94
-   encoder->cur_pts += encoder->timebase_num;
95
+   if (do_encode(encoder, &enc_frame))
96
+       encoder->cur_pts += encoder->timebase_num;
97
 
98
 wait_for_audio:
99
    profile_end(receive_video_name);
100
@@ -1040,7 +1060,7 @@
101
    return success;
102
 }
103
 
104
-static void send_audio_data(struct obs_encoder *encoder)
105
+static bool send_audio_data(struct obs_encoder *encoder)
106
 {
107
    struct encoder_frame  enc_frame;
108
 
109
@@ -1058,9 +1078,11 @@
110
    enc_frame.frames = (uint32_t)encoder->framesize;
111
    enc_frame.pts    = encoder->cur_pts;
112
 
113
-   do_encode(encoder, &enc_frame);
114
+   if (!do_encode(encoder, &enc_frame))
115
+       return false;
116
 
117
    encoder->cur_pts += encoder->framesize;
118
+   return true;
119
 }
120
 
121
 static const char *receive_audio_name = "receive_audio";
122
@@ -1079,8 +1101,11 @@
123
    if (!buffer_audio(encoder, data))
124
        goto end;
125
 
126
-   while (encoder->audio_input_buffer[0].size >= encoder->framesize_bytes)
127
-       send_audio_data(encoder);
128
+   while (encoder->audio_input_buffer[0].size >= encoder->framesize_bytes) {
129
+       if (!send_audio_data(encoder)) {
130
+           break;
131
+       }
132
+   }
133
 
134
    UNUSED_PARAMETER(mix_idx);
135
 
136
obs-studio-23.1.0.tar.xz/libobs/obs-internal.h -> obs-studio-23.2.0.tar.xz/libobs/obs-internal.h Changed
33
 
1
@@ -643,12 +643,10 @@
2
    struct obs_source_frame         *cur_async_frame;
3
    bool                            async_gpu_conversion;
4
    enum video_format               async_format;
5
+   bool                            async_full_range;
6
    enum video_format               async_cache_format;
7
+   bool                            async_cache_full_range;
8
    enum gs_color_format            async_texture_format;
9
-   float                           async_color_matrix[16];
10
-   bool                            async_full_range;
11
-   float                           async_color_range_min[3];
12
-   float                           async_color_range_max[3];
13
    int                             async_plane_offset[2];
14
    bool                            async_flip;
15
    bool                            async_active;
16
@@ -844,6 +842,7 @@
17
 #define CAPTION_LINE_BYTES (4*CAPTION_LINE_CHARS)
18
 struct caption_text {
19
    char text[CAPTION_LINE_BYTES+1];
20
+   double display_duration;
21
    struct caption_text *next;
22
 };
23
 
24
@@ -1043,7 +1042,7 @@
25
 extern bool start_gpu_encode(obs_encoder_t *encoder);
26
 extern void stop_gpu_encode(obs_encoder_t *encoder);
27
 
28
-extern void do_encode(struct obs_encoder *encoder, struct encoder_frame *frame);
29
+extern bool do_encode(struct obs_encoder *encoder, struct encoder_frame *frame);
30
 extern void send_off_encoder_packet(obs_encoder_t *encoder, bool success,
31
        bool received, struct encoder_packet *pkt);
32
 
33
obs-studio-23.1.0.tar.xz/libobs/obs-nix.c -> obs-studio-23.2.0.tar.xz/libobs/obs-nix.c Changed
19
 
1
@@ -422,6 +422,17 @@
2
    case OBS_KEY_F22: return XK_F22;
3
    case OBS_KEY_F23: return XK_F23;
4
    case OBS_KEY_F24: return XK_F24;
5
+   case OBS_KEY_F25: return XK_F25;
6
+   case OBS_KEY_F26: return XK_F26;
7
+   case OBS_KEY_F27: return XK_F27;
8
+   case OBS_KEY_F28: return XK_F28;
9
+   case OBS_KEY_F29: return XK_F29;
10
+   case OBS_KEY_F30: return XK_F30;
11
+   case OBS_KEY_F31: return XK_F31;
12
+   case OBS_KEY_F32: return XK_F32;
13
+   case OBS_KEY_F33: return XK_F33;
14
+   case OBS_KEY_F34: return XK_F34;
15
+   case OBS_KEY_F35: return XK_F35;
16
 
17
    case OBS_KEY_MENU: return XK_Menu;
18
    case OBS_KEY_HYPER_L: return XK_Hyper_L;
19
obs-studio-23.1.0.tar.xz/libobs/obs-output.c -> obs-studio-23.2.0.tar.xz/libobs/obs-output.c Changed
119
 
1
@@ -255,13 +255,17 @@
2
 bool obs_output_start(obs_output_t *output)
3
 {
4
    bool encoded;
5
+   bool has_service;
6
    if (!obs_output_valid(output, "obs_output_start"))
7
        return false;
8
    if (!output->context.data)
9
        return false;
10
 
11
-   encoded = (output->info.flags & OBS_OUTPUT_ENCODED) != 0;
12
+   has_service = (output->info.flags & OBS_OUTPUT_SERVICE) != 0;
13
+   if (has_service && !obs_service_initialize(output->service, output))
14
+       return false;
15
 
16
+   encoded = (output->info.flags & OBS_OUTPUT_ENCODED) != 0;
17
    if (encoded && output->delay_sec) {
18
        return obs_output_delay_start(output);
19
    } else {
20
@@ -1070,17 +1074,18 @@
21
        double frame_timestamp = (out.pts * out.timebase_num) /
22
            (double)out.timebase_den;
23
 
24
-       /* TODO if output->caption_timestamp is more than 5 seconds
25
-        * old, send empty frame */
26
        if (output->caption_head &&
27
            output->caption_timestamp <= frame_timestamp) {
28
-           blog(LOG_INFO,"Sending caption: %f \"%s\"",
29
+           blog(LOG_DEBUG,"Sending caption: %f \"%s\"",
30
                    frame_timestamp,
31
                    &output->caption_head->text[0]);
32
 
33
+           double display_duration =
34
+               output->caption_head->display_duration;
35
+
36
            if (add_caption(output, &out)) {
37
                output->caption_timestamp =
38
-                   frame_timestamp + 2.0;
39
+                   frame_timestamp + display_duration;
40
            }
41
        }
42
 
43
@@ -1746,16 +1751,11 @@
44
 
45
    if (!encoded)
46
        return false;
47
-   if (has_service && !obs_service_initialize(output->service, output))
48
-       return false;
49
    if (has_video && !obs_encoder_initialize(output->video_encoder))
50
        return false;
51
    if (has_audio && !initialize_audio_encoders(output, num_mixes))
52
        return false;
53
 
54
-   if (has_video && has_audio)
55
-       pair_encoders(output, num_mixes);
56
-
57
    return true;
58
 }
59
 
60
@@ -1782,6 +1782,7 @@
61
 bool obs_output_begin_data_capture(obs_output_t *output, uint32_t flags)
62
 {
63
    bool encoded, has_video, has_audio, has_service;
64
+   size_t num_mixes;
65
 
66
    if (!obs_output_valid(output, "obs_output_begin_data_capture"))
67
        return false;
68
@@ -1798,6 +1799,10 @@
69
                has_service))
70
        return false;
71
 
72
+   num_mixes = num_audio_mixes(output);
73
+   if (has_video && has_audio)
74
+       pair_encoders(output, num_mixes);
75
+
76
    os_atomic_set_bool(&output->data_active, true);
77
    hook_data_capture(output, encoded, has_video, has_audio);
78
 
79
@@ -2133,11 +2138,13 @@
80
 
81
 #if BUILD_CAPTIONS
82
 static struct caption_text *caption_text_new(const char *text, size_t bytes,
83
-       struct caption_text *tail, struct caption_text **head)
84
+       struct caption_text *tail, struct caption_text **head,
85
+       double display_duration)
86
 {
87
    struct caption_text *next = bzalloc(sizeof(struct caption_text));
88
    snprintf(&next->text[0], CAPTION_LINE_BYTES + 1, "%.*s",
89
            (int)bytes, text);
90
+   next->display_duration = display_duration;
91
 
92
    if (!*head) {
93
        *head = next;
94
@@ -2152,6 +2159,14 @@
95
 {
96
    if (!obs_output_valid(output, "obs_output_output_caption_text1"))
97
        return;
98
+   obs_output_output_caption_text2(output, text, 2.0f);
99
+}
100
+
101
+void obs_output_output_caption_text2(obs_output_t *output, const char *text,
102
+       double display_duration)
103
+{
104
+   if (!obs_output_valid(output, "obs_output_output_caption_text2"))
105
+       return;
106
    if (!active(output))
107
        return;
108
 
109
@@ -2164,7 +2179,8 @@
110
    output->caption_tail = caption_text_new(
111
            text, size,
112
            output->caption_tail,
113
-           &output->caption_head);
114
+           &output->caption_head,
115
+           display_duration);
116
 
117
    pthread_mutex_unlock(&output->caption_mutex);
118
 }
119
obs-studio-23.1.0.tar.xz/libobs/obs-properties.c -> obs-studio-23.2.0.tar.xz/libobs/obs-properties.c Changed
340
 
1
@@ -27,11 +27,13 @@
2
 struct float_data {
3
    double min, max, step;
4
    enum obs_number_type type;
5
+   char *suffix;
6
 };
7
 
8
 struct int_data {
9
    int min, max, step;
10
    enum obs_number_type type;
11
+   char *suffix;
12
 };
13
 
14
 struct list_item {
15
@@ -86,6 +88,11 @@
16
    DARRAY(struct frame_rate_range)  ranges;
17
 };
18
 
19
+struct group_data {
20
+   enum obs_group_type type;
21
+   obs_properties_t *content;
22
+};
23
+
24
 static inline void path_data_free(struct path_data *data)
25
 {
26
    bfree(data->default_path);
27
@@ -140,6 +147,20 @@
28
    da_free(data->ranges);
29
 }
30
 
31
+static inline void group_data_free(struct group_data *data) {
32
+   obs_properties_destroy(data->content);
33
+}
34
+
35
+static inline void int_data_free(struct int_data *data) {
36
+   if (data->suffix)
37
+       bfree(data->suffix);
38
+}
39
+
40
+static inline void float_data_free(struct float_data *data) {
41
+   if (data->suffix)
42
+       bfree(data->suffix);
43
+}
44
+
45
 struct obs_properties;
46
 
47
 struct obs_property {
48
@@ -166,6 +187,7 @@
49
 
50
    struct obs_property     *first_property;
51
    struct obs_property     **last;
52
+   struct obs_property     *parent;
53
 };
54
 
55
 obs_properties_t *obs_properties_create(void)
56
@@ -223,6 +245,12 @@
57
        editable_list_data_free(get_property_data(property));
58
    else if (property->type == OBS_PROPERTY_FRAME_RATE)
59
        frame_rate_data_free(get_property_data(property));
60
+   else if (property->type == OBS_PROPERTY_GROUP)
61
+       group_data_free(get_property_data(property));
62
+   else if (property->type == OBS_PROPERTY_INT)
63
+       int_data_free(get_property_data(property));
64
+   else if (property->type == OBS_PROPERTY_FLOAT)
65
+       float_data_free(get_property_data(property));
66
 
67
    bfree(property->name);
68
    bfree(property->desc);
69
@@ -265,12 +293,51 @@
70
        if (strcmp(property->name, name) == 0)
71
            return property;
72
 
73
+       if (property->type == OBS_PROPERTY_GROUP) {
74
+           obs_properties_t *group =
75
+               obs_property_group_content(property);
76
+           obs_property_t *found = obs_properties_get(group, name);
77
+           if (found != NULL) {
78
+               return found;
79
+           }
80
+       }
81
+
82
        property = property->next;
83
    }
84
 
85
    return NULL;
86
 }
87
 
88
+obs_properties_t *obs_properties_get_parent(obs_properties_t *props)
89
+{
90
+   return props->parent ? props->parent->parent : NULL;
91
+}
92
+
93
+void obs_properties_remove_by_name(obs_properties_t *props, const char *name)
94
+{
95
+   if (!props)
96
+       return;
97
+
98
+   /* obs_properties_t is a forward-linked-list, so we need to keep both
99
+    * previous and current pointers around. That way we can fix up the
100
+    * pointers for the previous element if we find a match.
101
+    */
102
+   struct obs_property *cur = props->first_property;
103
+   struct obs_property *prev = props->first_property;
104
+
105
+   while (cur) {
106
+       if (strcmp(cur->name, name) == 0) {
107
+           prev->next = cur->next;
108
+           cur->next = 0;
109
+           obs_property_destroy(cur);
110
+           break;
111
+       }
112
+
113
+       prev = cur;
114
+       cur = cur->next;
115
+   }
116
+}
117
+
118
 void obs_properties_apply_settings(obs_properties_t *props, obs_data_t *settings)
119
 {
120
    struct obs_property *p;
121
@@ -313,6 +380,7 @@
122
    case OBS_PROPERTY_EDITABLE_LIST:
123
        return sizeof(struct editable_list_data);
124
    case OBS_PROPERTY_FRAME_RATE:return sizeof(struct frame_rate_data);
125
+   case OBS_PROPERTY_GROUP:     return sizeof(struct group_data);
126
    }
127
 
128
    return 0;
129
@@ -337,7 +405,18 @@
130
    return p;
131
 }
132
 
133
-static inline bool has_prop(struct obs_properties *props, const char *name)
134
+static inline obs_properties_t *get_topmost_parent(obs_properties_t *props)
135
+{
136
+   obs_properties_t *parent = props;
137
+   obs_properties_t *last_parent = parent;
138
+   while (parent) {
139
+       last_parent = parent;
140
+       parent = obs_properties_get_parent(parent);
141
+   }
142
+   return last_parent;
143
+}
144
+
145
+static inline bool contains_prop(struct obs_properties *props, const char *name)
146
 {
147
    struct obs_property *p = props->first_property;
148
 
149
@@ -347,12 +426,23 @@
150
            return true;
151
        }
152
 
153
+       if (p->type == OBS_PROPERTY_GROUP) {
154
+           if (contains_prop(obs_property_group_content(p), name)) {
155
+               return true;
156
+           }
157
+       }
158
+
159
        p = p->next;
160
    }
161
 
162
    return false;
163
 }
164
 
165
+static inline bool has_prop(struct obs_properties *props, const char *name)
166
+{
167
+   return contains_prop(get_topmost_parent(props), name);
168
+}
169
+
170
 static inline void *get_property_data(struct obs_property *prop)
171
 {
172
    return (uint8_t*)prop + sizeof(struct obs_property);
173
@@ -553,6 +643,70 @@
174
    return p;
175
 }
176
 
177
+static bool check_property_group_recursion(obs_properties_t *parent,
178
+   obs_properties_t *group)
179
+{
180
+   /* Scan the group for the parent. */
181
+   obs_property_t *current_property = group->first_property;
182
+   while (current_property) {
183
+       if (current_property->type == OBS_PROPERTY_GROUP) {
184
+           obs_properties_t *cprops =
185
+               obs_property_group_content(current_property);
186
+           if (cprops == parent) {
187
+               /* Contains find_props */
188
+               return true;
189
+           } else if (cprops == group) {
190
+               /* Contains self, shouldn't be possible but
191
+                * lets verify anyway. */
192
+               return true;
193
+           }
194
+           check_property_group_recursion(cprops, group);
195
+       }
196
+
197
+       current_property = current_property->next;
198
+   }
199
+
200
+   return false;
201
+}
202
+
203
+static bool check_property_group_duplicates(obs_properties_t *parent,
204
+   obs_properties_t *group)
205
+{
206
+   obs_property_t *current_property = group->first_property;
207
+   while (current_property) {
208
+       if (has_prop(parent, current_property->name)) {
209
+           return true;
210
+       }
211
+
212
+       current_property = current_property->next;
213
+   }
214
+
215
+   return false;
216
+}
217
+
218
+obs_property_t *obs_properties_add_group(obs_properties_t *props,
219
+   const char *name, const char *desc, enum obs_group_type type,
220
+   obs_properties_t *group)
221
+{
222
+   if (!props || has_prop(props, name)) return NULL;
223
+   if (!group) return NULL;
224
+
225
+   /* Prevent recursion. */
226
+   if (props == group) return NULL;
227
+   if (check_property_group_recursion(props, group)) return NULL;
228
+
229
+   /* Prevent duplicate properties */
230
+   if (check_property_group_duplicates(props, group)) return NULL;
231
+
232
+   obs_property_t *p = new_prop(props, name, desc, OBS_PROPERTY_GROUP);
233
+   group->parent = p;
234
+
235
+   struct group_data *data = get_property_data(p);
236
+   data->type = type;
237
+   data->content = group;
238
+   return p;
239
+}
240
+
241
 /* ------------------------------------------------------------------------- */
242
 
243
 static inline bool is_combo(struct obs_property *p)
244
@@ -605,9 +759,11 @@
245
 {
246
    if (p) {
247
        if (p->modified) {
248
-           return p->modified(p->parent, p, settings);
249
+           obs_properties_t *top = get_topmost_parent(p->parent);
250
+           return p->modified(top, p, settings);
251
        } else if (p->modified2) {
252
-           return p->modified2(p->priv, p->parent, p, settings);
253
+           obs_properties_t *top = get_topmost_parent(p->parent);
254
+           return p->modified2(p->priv, top, p, settings);
255
        }
256
    }
257
    return false;
258
@@ -620,9 +776,10 @@
259
        struct button_data *data = get_type_data(p,
260
                OBS_PROPERTY_BUTTON);
261
        if (data && data->callback) {
262
+           obs_properties_t *top = get_topmost_parent(p->parent);
263
            if (p->priv)
264
-               return data->callback(p->parent, p, p->priv);
265
-           return data->callback(p->parent, p,
266
+               return data->callback(top, p, p->priv);
267
+           return data->callback(top, p,
268
                    (context ? context->data : NULL));
269
        }
270
    }
271
@@ -714,6 +871,12 @@
272
    return data ? data->type : OBS_NUMBER_SCROLLER;
273
 }
274
 
275
+const char *obs_property_int_suffix(obs_property_t *p)
276
+{
277
+   struct int_data *data = get_type_data(p, OBS_PROPERTY_INT);
278
+   return data ? data->suffix : NULL;
279
+}
280
+
281
 double obs_property_float_min(obs_property_t *p)
282
 {
283
    struct float_data *data = get_type_data(p, OBS_PROPERTY_FLOAT);
284
@@ -732,6 +895,12 @@
285
    return data ? data->step : 0;
286
 }
287
 
288
+const char *obs_property_float_suffix(obs_property_t *p)
289
+{
290
+   struct float_data *data = get_type_data(p, OBS_PROPERTY_FLOAT);
291
+   return data ? data->suffix : NULL;
292
+}
293
+
294
 enum obs_number_type obs_property_float_type(obs_property_t *p)
295
 {
296
    struct float_data *data = get_type_data(p, OBS_PROPERTY_FLOAT);
297
@@ -798,6 +967,26 @@
298
    data->step = step;
299
 }
300
 
301
+void obs_property_int_set_suffix(obs_property_t *p, const char *suffix)
302
+{
303
+   struct int_data *data = get_type_data(p, OBS_PROPERTY_INT);
304
+   if (!data)
305
+       return;
306
+
307
+   bfree(data->suffix);
308
+   data->suffix = bstrdup(suffix);
309
+}
310
+
311
+void obs_property_float_set_suffix(obs_property_t *p, const char *suffix)
312
+{
313
+   struct float_data *data = get_type_data(p, OBS_PROPERTY_FLOAT);
314
+   if (!data)
315
+       return;
316
+
317
+   bfree(data->suffix);
318
+   data->suffix = bstrdup(suffix);
319
+}
320
+
321
 void obs_property_list_clear(obs_property_t *p)
322
 {
323
    struct list_data *data = get_list_data(p);
324
@@ -1112,3 +1301,15 @@
325
 {
326
    return obs_property_text_type(p);
327
 }
328
+
329
+enum obs_group_type obs_property_group_type(obs_property_t *p)
330
+{
331
+   struct group_data *data = get_type_data(p, OBS_PROPERTY_GROUP);
332
+   return data ? data->type : OBS_COMBO_INVALID;
333
+}
334
+
335
+obs_properties_t *obs_property_group_content(obs_property_t *p)
336
+{
337
+   struct group_data *data = get_type_data(p, OBS_PROPERTY_GROUP);
338
+   return data ? data->content : NULL;
339
+}
340
obs-studio-23.1.0.tar.xz/libobs/obs-properties.h -> obs-studio-23.2.0.tar.xz/libobs/obs-properties.h Changed
88
 
1
@@ -55,6 +55,7 @@
2
    OBS_PROPERTY_FONT,
3
    OBS_PROPERTY_EDITABLE_LIST,
4
    OBS_PROPERTY_FRAME_RATE,
5
+   OBS_PROPERTY_GROUP,
6
 };
7
 
8
 enum obs_combo_format {
9
@@ -93,6 +94,12 @@
10
    OBS_NUMBER_SLIDER
11
 };
12
 
13
+enum obs_group_type {
14
+   OBS_COMBO_INVALID,
15
+   OBS_GROUP_NORMAL,
16
+   OBS_GROUP_CHECKABLE,
17
+};
18
+
19
 #define OBS_FONT_BOLD      (1<<0)
20
 #define OBS_FONT_ITALIC    (1<<1)
21
 #define OBS_FONT_UNDERLINE (1<<2)
22
@@ -122,6 +129,21 @@
23
 EXPORT obs_property_t *obs_properties_get(obs_properties_t *props,
24
        const char *property);
25
 
26
+EXPORT obs_properties_t *obs_properties_get_parent(obs_properties_t *props);
27
+
28
+/** Remove a property from a properties list.
29
+ *
30
+ * Removes a property from a properties list. Only valid in either
31
+ * get_properties or modified_callback(2). modified_callback(2) must return
32
+ * true so that all UI properties are rebuilt and returning false is undefined
33
+ * behavior.
34
+ *
35
+ * @param props Properties to remove from.
36
+ * @param property Name of the property to remove.
37
+ */
38
+EXPORT void obs_properties_remove_by_name(obs_properties_t *props,
39
+       const char *property);
40
+
41
 /**
42
  * Applies settings to the properties by calling all the necessary
43
  * modification callbacks
44
@@ -218,6 +240,11 @@
45
 EXPORT obs_property_t *obs_properties_add_frame_rate(obs_properties_t *props,
46
        const char *name, const char *description);
47
 
48
+EXPORT obs_property_t *obs_properties_add_group(obs_properties_t *props,
49
+   const char *name, const char *description, enum obs_group_type type,
50
+   obs_properties_t *group);
51
+
52
+
53
 /* ------------------------------------------------------------------------- */
54
 
55
 /**
56
@@ -259,10 +286,12 @@
57
 EXPORT int                    obs_property_int_max(obs_property_t *p);
58
 EXPORT int                    obs_property_int_step(obs_property_t *p);
59
 EXPORT enum obs_number_type   obs_property_int_type(obs_property_t *p);
60
+EXPORT const char *           obs_property_int_suffix(obs_property_t *p);
61
 EXPORT double                 obs_property_float_min(obs_property_t *p);
62
 EXPORT double                 obs_property_float_max(obs_property_t *p);
63
 EXPORT double                 obs_property_float_step(obs_property_t *p);
64
 EXPORT enum obs_number_type   obs_property_float_type(obs_property_t *p);
65
+EXPORT const char *           obs_property_float_suffix(obs_property_t *p);
66
 EXPORT enum obs_text_type     obs_property_text_type(obs_property_t *p);
67
 EXPORT enum obs_path_type     obs_property_path_type(obs_property_t *p);
68
 EXPORT const char *           obs_property_path_filter(obs_property_t *p);
69
@@ -274,6 +303,8 @@
70
        int min, int max, int step);
71
 EXPORT void obs_property_float_set_limits(obs_property_t *p,
72
        double min, double max, double step);
73
+EXPORT void obs_property_int_set_suffix(obs_property_t *p, const char *suffix);
74
+EXPORT void obs_property_float_set_suffix(obs_property_t *p, const char *suffix);
75
 
76
 EXPORT void obs_property_list_clear(obs_property_t *p);
77
 
78
@@ -336,6 +367,9 @@
79
 EXPORT struct media_frames_per_second obs_property_frame_rate_fps_range_max(
80
        obs_property_t *p, size_t idx);
81
 
82
+EXPORT enum obs_group_type obs_property_group_type(obs_property_t *p);
83
+EXPORT obs_properties_t *obs_property_group_content(obs_property_t *p);
84
+
85
 #ifndef SWIG
86
 DEPRECATED
87
 EXPORT enum obs_text_type     obs_proprety_text_type(obs_property_t *p);
88
obs-studio-23.1.0.tar.xz/libobs/obs-scene.c -> obs-studio-23.2.0.tar.xz/libobs/obs-scene.c Changed
95
 
1
@@ -395,6 +395,8 @@
2
        scale.y = (float)height * item->scale.y;
3
    }
4
 
5
+   item->box_scale = scale;
6
+
7
    add_alignment(&base_origin, item->align, (int)scale.x, (int)scale.y);
8
 
9
    matrix4_identity(&item->box_transform);
10
@@ -462,6 +464,8 @@
11
 
12
 static void render_item_texture(struct obs_scene_item *item)
13
 {
14
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_ITEM_TEXTURE, "render_item_texture");
15
+
16
    gs_texture_t *tex = gs_texrender_get_texture(item->item_render);
17
    gs_effect_t *effect = obs->video.default_effect;
18
    enum obs_scale_type type = item->scale_filter;
19
@@ -503,18 +507,29 @@
20
        }
21
    }
22
 
23
+   gs_blend_state_push();
24
+   gs_blend_function(GS_BLEND_ONE, GS_BLEND_INVSRCALPHA);
25
+
26
    while (gs_effect_loop(effect, "Draw"))
27
        obs_source_draw(tex, 0, 0, 0, 0, 0);
28
+
29
+   gs_blend_state_pop();
30
+
31
+   GS_DEBUG_MARKER_END();
32
 }
33
 
34
 static inline void render_item(struct obs_scene_item *item)
35
 {
36
+   GS_DEBUG_MARKER_BEGIN_FORMAT(GS_DEBUG_COLOR_ITEM, "Item: %s",
37
+           obs_source_get_name(item->source));
38
+
39
    if (item->item_render) {
40
        uint32_t width  = obs_source_get_width(item->source);
41
        uint32_t height = obs_source_get_height(item->source);
42
 
43
-       if (!width || !height)
44
-           return;
45
+       if (!width || !height) {
46
+           goto cleanup;
47
+       }
48
 
49
        uint32_t cx = calc_cx(item, width);
50
        uint32_t cy = calc_cy(item, height);
51
@@ -535,10 +550,8 @@
52
                    -(float)item->crop.top,
53
                    0.0f);
54
 
55
-           gs_blend_state_push();
56
-           gs_blend_function(GS_BLEND_ONE, GS_BLEND_ZERO);
57
            obs_source_video_render(item->source);
58
-           gs_blend_state_pop();
59
+
60
            gs_texrender_end(item->item_render);
61
        }
62
    }
63
@@ -551,6 +564,9 @@
64
        obs_source_video_render(item->source);
65
    }
66
    gs_matrix_pop();
67
+
68
+cleanup:
69
+   GS_DEBUG_MARKER_END();
70
 }
71
 
72
 static void scene_video_tick(void *data, float seconds)
73
@@ -1249,6 +1265,7 @@
74
    dst->output_scale = src->output_scale;
75
    dst->scale_filter = src->scale_filter;
76
    dst->box_transform = src->box_transform;
77
+   dst->box_scale = src->box_scale;
78
    dst->draw_transform = src->draw_transform;
79
    dst->bounds_type = src->bounds_type;
80
    dst->bounds_align = src->bounds_align;
81
@@ -2036,6 +2053,13 @@
82
        matrix4_copy(transform, &item->box_transform);
83
 }
84
 
85
+void obs_sceneitem_get_box_scale(const obs_sceneitem_t *item,
86
+       struct vec2 *scale)
87
+{
88
+   if (item)
89
+       *scale = item->box_scale;
90
+}
91
+
92
 bool obs_sceneitem_visible(const obs_sceneitem_t *item)
93
 {
94
    return item ? item->user_visible : false;
95
obs-studio-23.1.0.tar.xz/libobs/obs-scene.h -> obs-studio-23.2.0.tar.xz/libobs/obs-scene.h Changed
9
 
1
@@ -65,6 +65,7 @@
2
    enum obs_scale_type   scale_filter;
3
 
4
    struct matrix4        box_transform;
5
+   struct vec2           box_scale;
6
    struct matrix4        draw_transform;
7
 
8
    enum obs_bounds_type  bounds_type;
9
obs-studio-23.1.0.tar.xz/libobs/obs-source-deinterlace.c -> obs-studio-23.2.0.tar.xz/libobs/obs-source-deinterlace.c Changed
43
 
1
@@ -315,9 +315,6 @@
2
    gs_eparam_t *dimensions = gs_effect_get_param_by_name(effect,
3
            "dimensions");
4
    struct vec2 size = {(float)s->async_width, (float)s->async_height};
5
-   bool yuv = format_is_yuv(s->async_format);
6
-   bool limited_range = yuv && !s->async_full_range;
7
-   const char *tech = yuv ? "DrawMatrix" : "Draw";
8
 
9
    gs_texture_t *cur_tex = s->async_texrender ?
10
        gs_texrender_get_texture(s->async_texrender) :
11
@@ -334,30 +331,12 @@
12
    gs_effect_set_int(field, s->deinterlace_top_first);
13
    gs_effect_set_vec2(dimensions, &size);
14
 
15
-   if (yuv) {
16
-       gs_eparam_t *color_matrix = gs_effect_get_param_by_name(
17
-               effect, "color_matrix");
18
-       gs_effect_set_val(color_matrix, s->async_color_matrix,
19
-               sizeof(float) * 16);
20
-   }
21
-   if (limited_range) {
22
-       const size_t size = sizeof(float) * 3;
23
-       gs_eparam_t *color_range_min = gs_effect_get_param_by_name(
24
-               effect, "color_range_min");
25
-       gs_eparam_t *color_range_max = gs_effect_get_param_by_name(
26
-               effect, "color_range_max");
27
-       gs_effect_set_val(color_range_min, s->async_color_range_min,
28
-               size);
29
-       gs_effect_set_val(color_range_max, s->async_color_range_max,
30
-               size);
31
-   }
32
-
33
    frame2_ts = s->deinterlace_frame_ts + s->deinterlace_offset +
34
        s->deinterlace_half_duration - TWOX_TOLERANCE;
35
 
36
    gs_effect_set_bool(frame2, obs->video.video_time >= frame2_ts);
37
 
38
-   while (gs_effect_loop(effect, tech))
39
+   while (gs_effect_loop(effect, "Draw"))
40
        gs_draw_sprite(NULL, s->async_flip ? GS_FLIP_V : 0,
41
                s->async_width, s->async_height);
42
 }
43
obs-studio-23.1.0.tar.xz/libobs/obs-source-transition.c -> obs-studio-23.2.0.tar.xz/libobs/obs-source-transition.c Changed
31
 
1
@@ -665,6 +665,11 @@
2
            "transition_stop");
3
 }
4
 
5
+void obs_transition_force_stop(obs_source_t *transition)
6
+{
7
+   handle_stop(transition);
8
+}
9
+
10
 void obs_transition_video_render(obs_source_t *transition,
11
        obs_transition_video_render_callback_t callback)
12
 {
13
@@ -718,10 +723,16 @@
14
 
15
        cx = get_cx(transition);
16
        cy = get_cy(transition);
17
-       if (cx && cy)
18
+       if (cx && cy) {
19
+           gs_blend_state_push();
20
+           gs_blend_function(GS_BLEND_ONE, GS_BLEND_INVSRCALPHA);
21
+
22
            callback(transition->context.data, tex[0], tex[1], t,
23
                    cx, cy);
24
 
25
+           gs_blend_state_pop();
26
+       }
27
+
28
    } else if (state.transitioning_audio) {
29
        if (state.s[1]) {
30
            gs_matrix_push();
31
obs-studio-23.1.0.tar.xz/libobs/obs-source.c -> obs-studio-23.2.0.tar.xz/libobs/obs-source.c Changed
673
 
1
@@ -1329,15 +1329,21 @@
2
    CONVERT_420,
3
    CONVERT_422_U,
4
    CONVERT_422_Y,
5
+   CONVERT_444,
6
+   CONVERT_800,
7
+   CONVERT_RGB_LIMITED,
8
 };
9
 
10
-static inline enum convert_type get_convert_type(enum video_format format)
11
+static inline enum convert_type get_convert_type(enum video_format format,
12
+       bool full_range)
13
 {
14
    switch (format) {
15
    case VIDEO_FORMAT_I420:
16
        return CONVERT_420;
17
    case VIDEO_FORMAT_NV12:
18
        return CONVERT_NV12;
19
+   case VIDEO_FORMAT_I444:
20
+       return CONVERT_444;
21
 
22
    case VIDEO_FORMAT_YVYU:
23
    case VIDEO_FORMAT_YUY2:
24
@@ -1346,12 +1352,13 @@
25
        return CONVERT_422_U;
26
 
27
    case VIDEO_FORMAT_Y800:
28
-   case VIDEO_FORMAT_I444:
29
+       return CONVERT_800;
30
+
31
    case VIDEO_FORMAT_NONE:
32
    case VIDEO_FORMAT_RGBA:
33
    case VIDEO_FORMAT_BGRA:
34
    case VIDEO_FORMAT_BGRX:
35
-       return CONVERT_NONE;
36
+       return full_range ? CONVERT_NONE : CONVERT_RGB_LIMITED;
37
    }
38
 
39
    return CONVERT_NONE;
40
@@ -1360,12 +1367,23 @@
41
 static inline bool set_packed422_sizes(struct obs_source *source,
42
        const struct obs_source_frame *frame)
43
 {
44
-   source->async_convert_height = frame->height;
45
    source->async_convert_width  = frame->width / 2;
46
+   source->async_convert_height = frame->height;
47
    source->async_texture_format = GS_BGRA;
48
    return true;
49
 }
50
 
51
+static inline bool set_planar444_sizes(struct obs_source *source,
52
+   const struct obs_source_frame *frame)
53
+{
54
+   source->async_convert_width   = frame->width;
55
+   source->async_convert_height  = frame->height * 3;
56
+   source->async_texture_format  = GS_R8;
57
+   source->async_plane_offset[0] = (int)(frame->data[1] - frame->data[0]);
58
+   source->async_plane_offset[1] = (int)(frame->data[2] - frame->data[0]);
59
+   return true;
60
+}
61
+
62
 static inline bool set_planar420_sizes(struct obs_source *source,
63
        const struct obs_source_frame *frame)
64
 {
65
@@ -1393,10 +1411,28 @@
66
    return true;
67
 }
68
 
69
+static inline bool set_y800_sizes(struct obs_source *source,
70
+   const struct obs_source_frame *frame)
71
+{
72
+   source->async_convert_width   = frame->width;
73
+   source->async_convert_height  = frame->height;
74
+   source->async_texture_format  = GS_R8;
75
+   return true;
76
+}
77
+
78
+static inline bool set_rgb_limited_sizes(struct obs_source *source,
79
+   const struct obs_source_frame *frame)
80
+{
81
+   source->async_convert_width   = frame->width;
82
+   source->async_convert_height  = frame->height;
83
+   source->async_texture_format  = convert_video_format(frame->format);
84
+   return true;
85
+}
86
+
87
 static inline bool init_gpu_conversion(struct obs_source *source,
88
        const struct obs_source_frame *frame)
89
 {
90
-   switch (get_convert_type(frame->format)) {
91
+   switch (get_convert_type(frame->format, frame->full_range)) {
92
        case CONVERT_422_Y:
93
        case CONVERT_422_U:
94
            return set_packed422_sizes(source, frame);
95
@@ -1406,7 +1442,15 @@
96
 
97
        case CONVERT_NV12:
98
            return set_nv12_sizes(source, frame);
99
-           break;
100
+
101
+       case CONVERT_444:
102
+           return set_planar444_sizes(source, frame);
103
+
104
+       case CONVERT_800:
105
+           return set_y800_sizes(source, frame);
106
+
107
+       case CONVERT_RGB_LIMITED:
108
+           return set_rgb_limited_sizes(source, frame);
109
 
110
        case CONVERT_NONE:
111
            assert(false && "No conversion requested");
112
@@ -1419,16 +1463,19 @@
113
 bool set_async_texture_size(struct obs_source *source,
114
        const struct obs_source_frame *frame)
115
 {
116
-   enum convert_type cur = get_convert_type(frame->format);
117
+   enum convert_type cur = get_convert_type(frame->format,
118
+           frame->full_range);
119
 
120
-   if (source->async_width  == frame->width  &&
121
-       source->async_height == frame->height &&
122
-       source->async_format == frame->format)
123
+   if (source->async_width      == frame->width  &&
124
+       source->async_height     == frame->height &&
125
+       source->async_format     == frame->format &&
126
+       source->async_full_range == frame->full_range)
127
        return true;
128
 
129
-   source->async_width  = frame->width;
130
-   source->async_height = frame->height;
131
-   source->async_format = frame->format;
132
+   source->async_width      = frame->width;
133
+   source->async_height     = frame->height;
134
+   source->async_format     = frame->format;
135
+   source->async_full_range = frame->full_range;
136
 
137
    gs_enter_context(obs->video.graphics);
138
 
139
@@ -1444,8 +1491,10 @@
140
    if (cur != CONVERT_NONE && init_gpu_conversion(source, frame)) {
141
        source->async_gpu_conversion = true;
142
 
143
+       enum gs_color_format format = CONVERT_RGB_LIMITED ?
144
+           convert_video_format(frame->format) : GS_BGRX;
145
        source->async_texrender =
146
-           gs_texrender_create(GS_BGRX, GS_ZS_NONE);
147
+           gs_texrender_create(format, GS_ZS_NONE);
148
 
149
        source->async_texture = gs_texture_create(
150
                source->async_convert_width,
151
@@ -1474,19 +1523,18 @@
152
 static void upload_raw_frame(gs_texture_t *tex,
153
        const struct obs_source_frame *frame)
154
 {
155
-   switch (get_convert_type(frame->format)) {
156
+   switch (get_convert_type(frame->format, frame->full_range)) {
157
        case CONVERT_422_U:
158
        case CONVERT_422_Y:
159
+       case CONVERT_800:
160
+       case CONVERT_RGB_LIMITED:
161
            gs_texture_set_image(tex, frame->data[0],
162
                    frame->linesize[0], false);
163
            break;
164
 
165
        case CONVERT_420:
166
-           gs_texture_set_image(tex, frame->data[0],
167
-                   frame->width, false);
168
-           break;
169
-
170
        case CONVERT_NV12:
171
+       case CONVERT_444:
172
            gs_texture_set_image(tex, frame->data[0],
173
                    frame->width, false);
174
            break;
175
@@ -1497,7 +1545,8 @@
176
    }
177
 }
178
 
179
-static const char *select_conversion_technique(enum video_format format)
180
+static const char *select_conversion_technique(enum video_format format,
181
+       bool full_range)
182
 {
183
    switch (format) {
184
        case VIDEO_FORMAT_UYVY:
185
@@ -1514,15 +1563,21 @@
186
 
187
        case VIDEO_FORMAT_NV12:
188
            return "NV12_Reverse";
189
-           break;
190
+
191
+       case VIDEO_FORMAT_I444:
192
+           return "I444_Reverse";
193
 
194
        case VIDEO_FORMAT_Y800:
195
+           return full_range ? "Y800_Full" : "Y800_Limited";
196
+
197
        case VIDEO_FORMAT_BGRA:
198
        case VIDEO_FORMAT_BGRX:
199
        case VIDEO_FORMAT_RGBA:
200
        case VIDEO_FORMAT_NONE:
201
-       case VIDEO_FORMAT_I444:
202
-           assert(false && "No conversion requested");
203
+           if (full_range)
204
+               assert(false && "No conversion requested");
205
+           else
206
+               return "RGB_Limited";
207
            break;
208
    }
209
    return NULL;
210
@@ -1544,6 +1599,8 @@
211
        const struct obs_source_frame *frame,
212
        gs_texture_t *tex, gs_texrender_t *texrender)
213
 {
214
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_CONVERT_FORMAT, "Convert Format");
215
+
216
    gs_texrender_reset(texrender);
217
 
218
    upload_raw_frame(tex, frame);
219
@@ -1554,11 +1611,14 @@
220
    float convert_width  = (float)source->async_convert_width;
221
 
222
    gs_effect_t *conv = obs->video.conversion_effect;
223
-   gs_technique_t *tech = gs_effect_get_technique(conv,
224
-           select_conversion_technique(frame->format));
225
+   const char *tech_name = select_conversion_technique(frame->format,
226
+           frame->full_range);
227
+   gs_technique_t *tech = gs_effect_get_technique(conv, tech_name);
228
 
229
-   if (!gs_texrender_begin(texrender, cx, cy))
230
+   if (!gs_texrender_begin(texrender, cx, cy)) {
231
+       GS_DEBUG_MARKER_END();
232
        return false;
233
+   }
234
 
235
    gs_technique_begin(tech);
236
    gs_technique_begin_pass(tech, 0);
237
@@ -1577,6 +1637,19 @@
238
    set_eparami(conv, "int_v_plane_offset",
239
            (int)source->async_plane_offset[1]);
240
 
241
+   gs_effect_set_val(gs_effect_get_param_by_name(conv, "color_matrix"),
242
+           frame->color_matrix, sizeof(float) * 16);
243
+   if (!frame->full_range) {
244
+       gs_eparam_t *min_param = gs_effect_get_param_by_name(
245
+               conv, "color_range_min");
246
+       gs_effect_set_val(min_param, frame->color_range_min,
247
+               sizeof(float) * 3);
248
+       gs_eparam_t *max_param = gs_effect_get_param_by_name(
249
+               conv, "color_range_max");
250
+       gs_effect_set_val(max_param, frame->color_range_max,
251
+               sizeof(float) * 3);
252
+   }
253
+
254
    gs_ortho(0.f, (float)cx, 0.f, (float)cy, -100.f, 100.f);
255
 
256
    gs_draw_sprite(tex, 0, cx, cy);
257
@@ -1586,6 +1659,7 @@
258
 
259
    gs_texrender_end(texrender);
260
 
261
+   GS_DEBUG_MARKER_END();
262
    return true;
263
 }
264
 
265
@@ -1593,56 +1667,25 @@
266
        const struct obs_source_frame *frame,
267
        gs_texture_t *tex, gs_texrender_t *texrender)
268
 {
269
-   enum convert_type type      = get_convert_type(frame->format);
270
-   uint8_t           *ptr;
271
-   uint32_t          linesize;
272
+   enum convert_type type;
273
 
274
    source->async_flip       = frame->flip;
275
-   source->async_full_range = frame->full_range;
276
-   memcpy(source->async_color_matrix, frame->color_matrix,
277
-           sizeof(frame->color_matrix));
278
-   memcpy(source->async_color_range_min, frame->color_range_min,
279
-           sizeof frame->color_range_min);
280
-   memcpy(source->async_color_range_max, frame->color_range_max,
281
-           sizeof frame->color_range_max);
282
 
283
    if (source->async_gpu_conversion && texrender)
284
        return update_async_texrender(source, frame, tex, texrender);
285
 
286
+   type = get_convert_type(frame->format, frame->full_range);
287
    if (type == CONVERT_NONE) {
288
        gs_texture_set_image(tex, frame->data[0], frame->linesize[0],
289
                false);
290
        return true;
291
    }
292
 
293
-   if (!gs_texture_map(tex, &ptr, &linesize))
294
-       return false;
295
-
296
-   if (type == CONVERT_420)
297
-       decompress_420((const uint8_t* const*)frame->data,
298
-               frame->linesize,
299
-               0, frame->height, ptr, linesize);
300
-
301
-   else if (type == CONVERT_NV12)
302
-       decompress_nv12((const uint8_t* const*)frame->data,
303
-               frame->linesize,
304
-               0, frame->height, ptr, linesize);
305
-
306
-   else if (type == CONVERT_422_Y)
307
-       decompress_422(frame->data[0], frame->linesize[0],
308
-               0, frame->height, ptr, linesize, true);
309
-
310
-   else if (type == CONVERT_422_U)
311
-       decompress_422(frame->data[0], frame->linesize[0],
312
-               0, frame->height, ptr, linesize, false);
313
-
314
-   gs_texture_unmap(tex);
315
-   return true;
316
+   return false;
317
 }
318
 
319
 static inline void obs_source_draw_texture(struct obs_source *source,
320
-       gs_effect_t *effect, float *color_matrix,
321
-       float const *color_range_min, float const *color_range_max)
322
+       gs_effect_t *effect)
323
 {
324
    gs_texture_t *tex = source->async_texture;
325
    gs_eparam_t  *param;
326
@@ -1650,23 +1693,6 @@
327
    if (source->async_texrender)
328
        tex = gs_texrender_get_texture(source->async_texrender);
329
 
330
-   if (color_range_min) {
331
-       size_t const size = sizeof(float) * 3;
332
-       param = gs_effect_get_param_by_name(effect, "color_range_min");
333
-       gs_effect_set_val(param, color_range_min, size);
334
-   }
335
-
336
-   if (color_range_max) {
337
-       size_t const size = sizeof(float) * 3;
338
-       param = gs_effect_get_param_by_name(effect, "color_range_max");
339
-       gs_effect_set_val(param, color_range_max, size);
340
-   }
341
-
342
-   if (color_matrix) {
343
-       param = gs_effect_get_param_by_name(effect, "color_matrix");
344
-       gs_effect_set_val(param, color_matrix, sizeof(float) * 16);
345
-   }
346
-
347
    param = gs_effect_get_param_by_name(effect, "image");
348
    gs_effect_set_texture(param, tex);
349
 
350
@@ -1675,24 +1701,18 @@
351
 
352
 static void obs_source_draw_async_texture(struct obs_source *source)
353
 {
354
-   gs_effect_t    *effect        = gs_get_effect();
355
-   bool           yuv           = format_is_yuv(source->async_format);
356
-   bool           limited_range = yuv && !source->async_full_range;
357
-   const char     *type         = yuv ? "DrawMatrix" : "Draw";
358
+   gs_effect_t    *effect       = gs_get_effect();
359
    bool           def_draw      = (!effect);
360
-   gs_technique_t *tech          = NULL;
361
+   gs_technique_t *tech         = NULL;
362
 
363
    if (def_draw) {
364
        effect = obs_get_base_effect(OBS_EFFECT_DEFAULT);
365
-       tech = gs_effect_get_technique(effect, type);
366
+       tech = gs_effect_get_technique(effect, "Draw");
367
        gs_technique_begin(tech);
368
        gs_technique_begin_pass(tech, 0);
369
    }
370
 
371
-   obs_source_draw_texture(source, effect,
372
-           yuv ? source->async_color_matrix : NULL,
373
-           limited_range ? source->async_color_range_min : NULL,
374
-           limited_range ? source->async_color_range_max : NULL);
375
+   obs_source_draw_texture(source, effect);
376
 
377
    if (def_draw) {
378
        gs_technique_end_pass(tech);
379
@@ -1785,6 +1805,24 @@
380
 
381
 static bool ready_async_frame(obs_source_t *source, uint64_t sys_time);
382
 
383
+#if GS_USE_DEBUG_MARKERS
384
+static const char *get_type_format(enum obs_source_type type)
385
+{
386
+   switch (type) {
387
+   case OBS_SOURCE_TYPE_INPUT:
388
+       return "Input: %s";
389
+   case OBS_SOURCE_TYPE_FILTER:
390
+       return "Filter: %s";
391
+   case OBS_SOURCE_TYPE_TRANSITION:
392
+       return "Transition: %s";
393
+   case OBS_SOURCE_TYPE_SCENE:
394
+       return "Scene: %s";
395
+   default:
396
+       return "[Unknown]: %s";
397
+   }
398
+}
399
+#endif
400
+
401
 static inline void render_video(obs_source_t *source)
402
 {
403
    if (source->info.type != OBS_SOURCE_TYPE_FILTER &&
404
@@ -1808,6 +1846,10 @@
405
        return;
406
    }
407
 
408
+   GS_DEBUG_MARKER_BEGIN_FORMAT(GS_DEBUG_COLOR_SOURCE,
409
+           get_type_format(source->info.type),
410
+           obs_source_get_name(source));
411
+
412
    if (source->filters.num && !source->rendering_filter)
413
        obs_source_render_filters(source);
414
 
415
@@ -1822,6 +1864,8 @@
416
 
417
    else
418
        obs_source_render_async_video(source);
419
+
420
+   GS_DEBUG_MARKER_END();
421
 }
422
 
423
 void obs_source_video_render(obs_source_t *source)
424
@@ -2217,41 +2261,6 @@
425
                dst->linesize[plane] * lines);
426
 }
427
 
428
-static void copy_frame_data_line_y800(uint32_t *dst, uint8_t *src, uint8_t *end)
429
-{
430
-   while (src < end) {
431
-       register uint32_t val = *(src++);
432
-       val |= (val << 8);
433
-       val |= (val << 16);
434
-       *(dst++) = val;
435
-   }
436
-}
437
-
438
-static inline void copy_frame_data_y800(struct obs_source_frame *dst,
439
-       const struct obs_source_frame *src)
440
-{
441
-   uint32_t *ptr_dst;
442
-   uint8_t  *ptr_src;
443
-   uint8_t  *src_end;
444
-
445
-   if ((src->linesize[0] * 4) != dst->linesize[0]) {
446
-       for (uint32_t cy = 0; cy < src->height; cy++) {
447
-           ptr_dst = (uint32_t*)
448
-               (dst->data[0] + cy * dst->linesize[0]);
449
-           ptr_src = (src->data[0] + cy * src->linesize[0]);
450
-           src_end = ptr_src + src->width;
451
-
452
-           copy_frame_data_line_y800(ptr_dst, ptr_src, src_end);
453
-       }
454
-   } else {
455
-       ptr_dst = (uint32_t*)dst->data[0];
456
-       ptr_src = (uint8_t *)src->data[0];
457
-       src_end = ptr_src + src->height * src->linesize[0];
458
-
459
-       copy_frame_data_line_y800(ptr_dst, ptr_src, src_end);
460
-   }
461
-}
462
-
463
 static void copy_frame_data(struct obs_source_frame *dst,
464
        const struct obs_source_frame *src)
465
 {
466
@@ -2290,11 +2299,8 @@
467
    case VIDEO_FORMAT_RGBA:
468
    case VIDEO_FORMAT_BGRA:
469
    case VIDEO_FORMAT_BGRX:
470
-       copy_frame_data_plane(dst, src, 0, dst->height);
471
-       break;
472
-
473
    case VIDEO_FORMAT_Y800:
474
-       copy_frame_data_y800(dst, src);
475
+       copy_frame_data_plane(dst, src, 0, dst->height);
476
        break;
477
    }
478
 }
479
@@ -2309,8 +2315,9 @@
480
        const struct obs_source_frame *frame)
481
 {
482
    enum convert_type prev, cur;
483
-   prev = get_convert_type(source->async_cache_format);
484
-   cur  = get_convert_type(frame->format);
485
+   prev = get_convert_type(source->async_cache_format,
486
+           source->async_cache_full_range);
487
+   cur  = get_convert_type(frame->format, frame->full_range);
488
 
489
    return source->async_cache_width  != frame->width ||
490
           source->async_cache_height != frame->height ||
491
@@ -2363,9 +2370,10 @@
492
 
493
    if (async_texture_changed(source, frame)) {
494
        free_async_cache(source);
495
-       source->async_cache_width  = frame->width;
496
-       source->async_cache_height = frame->height;
497
-       source->async_cache_format = frame->format;
498
+       source->async_cache_width      = frame->width;
499
+       source->async_cache_height     = frame->height;
500
+       source->async_cache_format     = frame->format;
501
+       source->async_cache_full_range = frame->full_range;
502
    }
503
 
504
    for (size_t i = 0; i < source->async_cache.num; i++) {
505
@@ -2384,9 +2392,6 @@
506
        struct async_frame new_af;
507
        enum video_format format = frame->format;
508
 
509
-       if (format == VIDEO_FORMAT_Y800)
510
-           format = VIDEO_FORMAT_BGRX;
511
-
512
        new_frame = obs_source_frame_create(format,
513
                frame->width, frame->height);
514
        new_af.frame = new_frame;
515
@@ -2406,7 +2411,7 @@
516
    return new_frame;
517
 }
518
 
519
-void obs_source_output_video(obs_source_t *source,
520
+static void obs_source_output_video_internal(obs_source_t *source,
521
        const struct obs_source_frame *frame)
522
 {
523
    if (!obs_source_valid(source, "obs_source_output_video"))
524
@@ -2434,6 +2439,56 @@
525
    pthread_mutex_unlock(&source->async_mutex);
526
 }
527
 
528
+void obs_source_output_video(obs_source_t *source,
529
+       const struct obs_source_frame *frame)
530
+{
531
+   if (!frame) {
532
+       obs_source_output_video_internal(source, NULL);
533
+       return;
534
+   }
535
+
536
+   struct obs_source_frame new_frame = *frame;
537
+   new_frame.full_range = format_is_yuv(frame->format)
538
+       ? new_frame.full_range
539
+       : true;
540
+
541
+   obs_source_output_video_internal(source, &new_frame);
542
+}
543
+
544
+void obs_source_output_video2(obs_source_t *source,
545
+       const struct obs_source_frame2 *frame)
546
+{
547
+   if (!frame) {
548
+       obs_source_output_video_internal(source, NULL);
549
+       return;
550
+   }
551
+
552
+   struct obs_source_frame new_frame;
553
+   enum video_range_type range = resolve_video_range(frame->format,
554
+           frame->range);
555
+
556
+   for (size_t i = 0; i < MAX_AV_PLANES; i++) {
557
+       new_frame.data[i] = frame->data[i];
558
+       new_frame.linesize[i] = frame->linesize[i];
559
+   }
560
+
561
+   new_frame.width = frame->width;
562
+   new_frame.height = frame->height;
563
+   new_frame.timestamp = frame->timestamp;
564
+   new_frame.format = frame->format;
565
+   new_frame.full_range = range == VIDEO_RANGE_FULL;
566
+   new_frame.flip = frame->flip;
567
+
568
+   memcpy(&new_frame.color_matrix, &frame->color_matrix,
569
+           sizeof(frame->color_matrix));
570
+   memcpy(&new_frame.color_range_min, &frame->color_range_min,
571
+           sizeof(frame->color_range_min));
572
+   memcpy(&new_frame.color_range_max, &frame->color_range_max,
573
+           sizeof(frame->color_range_max));
574
+
575
+   obs_source_output_video_internal(source, &new_frame);
576
+}
577
+
578
 static inline bool preload_frame_changed(obs_source_t *source,
579
        const struct obs_source_frame *in)
580
 {
581
@@ -2445,7 +2500,7 @@
582
           in->format != source->async_preload_frame->format;
583
 }
584
 
585
-void obs_source_preload_video(obs_source_t *source,
586
+static void obs_source_preload_video_internal(obs_source_t *source,
587
        const struct obs_source_frame *frame)
588
 {
589
    if (!obs_source_valid(source, "obs_source_preload_video"))
590
@@ -2474,6 +2529,56 @@
591
    obs_leave_graphics();
592
 }
593
 
594
+void obs_source_preload_video(obs_source_t *source,
595
+       const struct obs_source_frame *frame)
596
+{
597
+   if (!frame) {
598
+       obs_source_preload_video_internal(source, NULL);
599
+       return;
600
+   }
601
+
602
+   struct obs_source_frame new_frame = *frame;
603
+   new_frame.full_range = format_is_yuv(frame->format)
604
+       ? new_frame.full_range
605
+       : true;
606
+
607
+   obs_source_preload_video_internal(source, &new_frame);
608
+}
609
+
610
+void obs_source_preload_video2(obs_source_t *source,
611
+       const struct obs_source_frame2 *frame)
612
+{
613
+   if (!frame) {
614
+       obs_source_preload_video_internal(source, NULL);
615
+       return;
616
+   }
617
+
618
+   struct obs_source_frame new_frame;
619
+   enum video_range_type range = resolve_video_range(frame->format,
620
+           frame->range);
621
+
622
+   for (size_t i = 0; i < MAX_AV_PLANES; i++) {
623
+       new_frame.data[i] = frame->data[i];
624
+       new_frame.linesize[i] = frame->linesize[i];
625
+   }
626
+
627
+   new_frame.width = frame->width;
628
+   new_frame.height = frame->height;
629
+   new_frame.timestamp = frame->timestamp;
630
+   new_frame.format = frame->format;
631
+   new_frame.full_range = range == VIDEO_RANGE_FULL;
632
+   new_frame.flip = frame->flip;
633
+
634
+   memcpy(&new_frame.color_matrix, &frame->color_matrix,
635
+           sizeof(frame->color_matrix));
636
+   memcpy(&new_frame.color_range_min, &frame->color_range_min,
637
+           sizeof(frame->color_range_min));
638
+   memcpy(&new_frame.color_range_max, &frame->color_range_max,
639
+           sizeof(frame->color_range_max));
640
+
641
+   obs_source_preload_video_internal(source, &new_frame);
642
+}
643
+
644
 void obs_source_show_preloaded_video(obs_source_t *source)
645
 {
646
    uint64_t sys_ts;
647
@@ -3545,12 +3650,25 @@
648
        obs_source_activate(source, AUX_VIEW);
649
 }
650
 
651
+void obs_source_inc_active(obs_source_t *source)
652
+{
653
+   if (obs_source_valid(source, "obs_source_inc_active"))
654
+       obs_source_activate(source, MAIN_VIEW);
655
+}
656
+
657
 void obs_source_dec_showing(obs_source_t *source)
658
 {
659
    if (obs_source_valid(source, "obs_source_dec_showing"))
660
        obs_source_deactivate(source, AUX_VIEW);
661
 }
662
 
663
+void obs_source_dec_active(obs_source_t *source)
664
+{
665
+   if (obs_source_valid(source, "obs_source_dec_active"))
666
+       obs_source_deactivate(source, MAIN_VIEW);
667
+}
668
+
669
+
670
 void obs_source_enum_filters(obs_source_t *source,
671
        obs_source_enum_proc_t callback, void *param)
672
 {
673
obs-studio-23.1.0.tar.xz/libobs/obs-video-gpu-encode.c -> obs-studio-23.2.0.tar.xz/libobs/obs-video-gpu-encode.c Changed
10
 
1
@@ -34,7 +34,7 @@
2
        uint64_t timestamp;
3
        uint64_t lock_key;
4
        uint64_t next_key;
5
-       int lock_count = 0;
6
+       size_t lock_count = 0;
7
 
8
        if (os_atomic_load_bool(&video->gpu_encode_stop))
9
            break;
10
obs-studio-23.1.0.tar.xz/libobs/obs-video.c -> obs-studio-23.2.0.tar.xz/libobs/obs-video.c Changed
109
 
1
@@ -120,6 +120,8 @@
2
        int cur_texture)
3
 {
4
    profile_start(render_main_texture_name);
5
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_MAIN_TEXTURE,
6
+           render_main_texture_name);
7
 
8
    struct vec4 clear_color;
9
    vec4_set(&clear_color, 0.0f, 0.0f, 0.0f, 0.0f);
10
@@ -145,6 +147,7 @@
11
 
12
    video->textures_rendered[cur_texture] = true;
13
 
14
+   GS_DEBUG_MARKER_END();
15
    profile_end(render_main_texture_name);
16
 }
17
 
18
@@ -215,7 +218,7 @@
19
    gs_technique_t *tech;
20
 
21
    if (video->ovi.output_format == VIDEO_FORMAT_RGBA) {
22
-       tech = gs_effect_get_technique(effect, "Draw");
23
+       tech = gs_effect_get_technique(effect, "DrawAlphaDivide");
24
    } else {
25
        tech = gs_effect_get_technique(effect, "DrawMatrix");
26
    }
27
@@ -340,6 +343,8 @@
28
    }
29
    gs_technique_end(tech);
30
    gs_enable_blending(true);
31
+
32
+   UNUSED_PARAMETER(cur_texture);
33
 }
34
 
35
 static const char *render_convert_nv12_name = "render_convert_texture_nv12";
36
@@ -625,11 +630,9 @@
37
        video_frame_copy(output, &frame, info->format, info->height);
38
 
39
    } else if (video->using_nv12_tex) {
40
-       int width = (int)info->width;
41
-       int height = (int)info->height;
42
-       int width_d2 = width / 2;
43
-       int height_d2 = height / 2;
44
-       int height_d4 = height_d2 / 2;
45
+       size_t width = info->width;
46
+       size_t height = info->height;
47
+       size_t height_d2 = height / 2;
48
        uint8_t *out_y = output->data[0];
49
        uint8_t *out_uv = output->data[1];
50
        uint8_t *in = input->data[0];
51
@@ -764,8 +767,7 @@
52
    int cur_texture  = video->cur_texture;
53
    int prev_texture = cur_texture == 0 ? NUM_TEXTURES-1 : cur_texture-1;
54
    struct video_data frame;
55
-   bool active = raw_active || gpu_active;
56
-   bool frame_ready;
57
+   bool frame_ready = 0;
58
 
59
    memset(&frame, 0, sizeof(struct video_data));
60
 
61
@@ -773,7 +775,10 @@
62
    gs_enter_context(video->graphics);
63
 
64
    profile_start(output_frame_render_video_name);
65
+   GS_DEBUG_MARKER_BEGIN(GS_DEBUG_COLOR_RENDER_VIDEO,
66
+           output_frame_render_video_name);
67
    render_video(video, raw_active, gpu_active, cur_texture, prev_texture);
68
+   GS_DEBUG_MARKER_END();
69
    profile_end(output_frame_render_video_name);
70
 
71
    if (raw_active) {
72
@@ -841,7 +846,9 @@
73
    uint64_t frame_time_total_ns = 0;
74
    uint64_t fps_total_ns = 0;
75
    uint32_t fps_total_frames = 0;
76
+#ifdef _WIN32
77
    bool gpu_was_active = false;
78
+#endif
79
    bool raw_was_active = false;
80
    bool was_active = false;
81
 
82
@@ -861,11 +868,12 @@
83
        uint64_t frame_time_ns;
84
        bool raw_active = obs->video.raw_active > 0;
85
 #ifdef _WIN32
86
-       bool gpu_active = obs->video.gpu_encoder_active > 0;
87
+       const bool gpu_active = obs->video.gpu_encoder_active > 0;
88
+       const bool active = raw_active || gpu_active;
89
 #else
90
        const bool gpu_active = 0;
91
+       const bool active = raw_active;
92
 #endif
93
-       bool active = raw_active || gpu_active;
94
 
95
        if (!was_active && active)
96
            clear_base_frame_data();
97
@@ -874,9 +882,10 @@
98
 #ifdef _WIN32
99
        if (!gpu_was_active && gpu_active)
100
            clear_gpu_frame_data();
101
+
102
+       gpu_was_active = gpu_active;
103
 #endif
104
        raw_was_active = raw_active;
105
-       gpu_was_active = gpu_active;
106
        was_active = active;
107
 
108
        profile_start(video_thread_name);
109
obs-studio-23.1.0.tar.xz/libobs/obs.c -> obs-studio-23.2.0.tar.xz/libobs/obs.c Changed
25
 
1
@@ -1129,7 +1129,8 @@
2
 
3
    bool yuv = format_is_yuv(ovi->output_format);
4
    const char *yuv_format = get_video_colorspace_name(ovi->colorspace);
5
-   const char *yuv_range = get_video_range_name(ovi->range);
6
+   const char *yuv_range = get_video_range_name(ovi->output_format,
7
+           ovi->range);
8
 
9
    blog(LOG_INFO, "---------------------------------");
10
    blog(LOG_INFO, "video settings reset:\n"
11
@@ -1650,8 +1651,13 @@
12
    param = gs_effect_get_param_by_name(effect, "image");
13
    gs_effect_set_texture(param, tex);
14
 
15
+   gs_blend_state_push();
16
+   gs_blend_function(GS_BLEND_ONE, GS_BLEND_INVSRCALPHA);
17
+
18
    while (gs_effect_loop(effect, "Draw"))
19
        gs_draw_sprite(tex, 0, 0, 0);
20
+
21
+   gs_blend_state_pop();
22
 }
23
 
24
 gs_texture_t *obs_get_main_texture(void)
25
obs-studio-23.1.0.tar.xz/libobs/obs.h -> obs-studio-23.2.0.tar.xz/libobs/obs.h Changed
139
 
1
@@ -220,6 +220,10 @@
2
  *
3
  * If a YUV format is specified, it will be automatically upsampled and
4
  * converted to RGB via shader on the graphics processor.
5
+ *
6
+ * NOTE: Non-YUV formats will always be treated as full range with this
7
+ * structure!  Use obs_source_frame2 along with obs_source_output_video2
8
+ * instead if partial range support is desired for non-YUV video formats.
9
  */
10
 struct obs_source_frame {
11
    uint8_t             *data[MAX_AV_PLANES];
12
@@ -240,6 +244,21 @@
13
    bool                prev_frame;
14
 };
15
 
16
+struct obs_source_frame2 {
17
+   uint8_t               *data[MAX_AV_PLANES];
18
+   uint32_t              linesize[MAX_AV_PLANES];
19
+   uint32_t              width;
20
+   uint32_t              height;
21
+   uint64_t              timestamp;
22
+
23
+   enum video_format     format;
24
+   enum video_range_type range;
25
+   float                 color_matrix[16];
26
+   float                 color_range_min[3];
27
+   float                 color_range_max[3];
28
+   bool                  flip;
29
+};
30
+
31
 /** Access to the argc/argv used to start OBS. What you see is what you get. */
32
 struct obs_cmdline_args {
33
    int argc;
34
@@ -794,6 +813,9 @@
35
 EXPORT void obs_display_set_background_color(obs_display_t *display,
36
        uint32_t color);
37
 
38
+EXPORT void obs_display_size(obs_display_t *display,
39
+       uint32_t *width, uint32_t *height);
40
+
41
 
42
 /* ------------------------------------------------------------------------- */
43
 /* Sources */
44
@@ -996,12 +1018,35 @@
45
 EXPORT void obs_source_inc_showing(obs_source_t *source);
46
 
47
 /**
48
+ * Increments the 'active' reference counter to indicate that the source is
49
+ * fully active.  If the reference counter was 0, will call the 'activate'
50
+ * callback.
51
+ *
52
+ * Unlike obs_source_inc_showing, this will cause children of this source to be
53
+ * considered showing as well (currently used by transition previews to make
54
+ * the stinger transition show correctly).  obs_source_inc_showing should
55
+ * generally be used instead.
56
+ */
57
+EXPORT void obs_source_inc_active(obs_source_t *source);
58
+
59
+/**
60
  * Decrements the 'showing' reference counter to indicate that the source is
61
  * no longer being shown somewhere.  If the reference counter is set to 0,
62
  * will call the 'hide' callback
63
  */
64
 EXPORT void obs_source_dec_showing(obs_source_t *source);
65
 
66
+/**
67
+ * Decrements the 'active' reference counter to indicate that the source is no
68
+ * longer fully active.  If the reference counter is set to 0, will call the
69
+ * 'deactivate' callback
70
+ *
71
+ * Unlike obs_source_dec_showing, this will cause children of this source to be
72
+ * considered not showing as well.  obs_source_dec_showing should generally be
73
+ * used instead.
74
+ */
75
+EXPORT void obs_source_dec_active(obs_source_t *source);
76
+
77
 /** Enumerates filters assigned to the source */
78
 EXPORT void obs_source_enum_filters(obs_source_t *source,
79
        obs_source_enum_proc_t callback, void *param);
80
@@ -1117,13 +1162,29 @@
81
 EXPORT void obs_source_draw(gs_texture_t *image, int x, int y,
82
        uint32_t cx, uint32_t cy, bool flip);
83
 
84
-/** Outputs asynchronous video data.  Set to NULL to deactivate the texture */
85
+/**
86
+ * Outputs asynchronous video data.  Set to NULL to deactivate the texture
87
+ *
88
+ * NOTE: Non-YUV formats will always be treated as full range with this
89
+ * function!  Use obs_source_output_video2 instead if partial range support is
90
+ * desired for non-YUV video formats.
91
+ */
92
 EXPORT void obs_source_output_video(obs_source_t *source,
93
        const struct obs_source_frame *frame);
94
+EXPORT void obs_source_output_video2(obs_source_t *source,
95
+       const struct obs_source_frame2 *frame);
96
 
97
-/** Preloads asynchronous video data to allow instantaneous playback */
98
+/**
99
+ * Preloads asynchronous video data to allow instantaneous playback
100
+ *
101
+ * NOTE: Non-YUV formats will always be treated as full range with this
102
+ * function!  Use obs_source_preload_video2 instead if partial range support is
103
+ * desired for non-YUV video formats.
104
+ */
105
 EXPORT void obs_source_preload_video(obs_source_t *source,
106
        const struct obs_source_frame *frame);
107
+EXPORT void obs_source_preload_video2(obs_source_t *source,
108
+       const struct obs_source_frame2 *frame);
109
 
110
 /** Shows any preloaded video data */
111
 EXPORT void obs_source_show_preloaded_video(obs_source_t *source);
112
@@ -1304,6 +1365,8 @@
113
 
114
 EXPORT float obs_transition_get_time(obs_source_t *transition);
115
 
116
+EXPORT void obs_transition_force_stop(obs_source_t *transition);
117
+
118
 EXPORT void obs_transition_video_render(obs_source_t *transition,
119
        obs_transition_video_render_callback_t callback);
120
 
121
@@ -1453,6 +1516,8 @@
122
        struct matrix4 *transform);
123
 EXPORT void obs_sceneitem_get_box_transform(const obs_sceneitem_t *item,
124
        struct matrix4 *transform);
125
+EXPORT void obs_sceneitem_get_box_scale(const obs_sceneitem_t *item,
126
+       struct vec2 *scale);
127
 
128
 EXPORT bool obs_sceneitem_visible(const obs_sceneitem_t *item);
129
 EXPORT bool obs_sceneitem_set_visible(obs_sceneitem_t *item, bool visible);
130
@@ -1717,6 +1782,8 @@
131
 #if BUILD_CAPTIONS
132
 EXPORT void obs_output_output_caption_text1(obs_output_t *output,
133
        const char *text);
134
+EXPORT void obs_output_output_caption_text2(obs_output_t *output,
135
+       const char *text, double display_duration);
136
 #endif
137
 
138
 EXPORT float obs_output_get_congestion(obs_output_t *output);
139
obs-studio-23.1.0.tar.xz/libobs/util/pipe-posix.c -> obs-studio-23.2.0.tar.xz/libobs/util/pipe-posix.c Changed
17
 
1
@@ -73,6 +73,15 @@
2
    return fread(data, 1, len, pp->file);
3
 }
4
 
5
+size_t os_process_pipe_read_err(os_process_pipe_t *pp, uint8_t *data, size_t len)
6
+{
7
+   /* XXX: unsupported on posix */
8
+   UNUSED_PARAMETER(pp);
9
+   UNUSED_PARAMETER(data);
10
+   UNUSED_PARAMETER(len);
11
+   return 0;
12
+}
13
+
14
 size_t os_process_pipe_write(os_process_pipe_t *pp, const uint8_t *data,
15
        size_t len)
16
 {
17
obs-studio-23.1.0.tar.xz/libobs/util/pipe-windows.c -> obs-studio-23.2.0.tar.xz/libobs/util/pipe-windows.c Changed
109
 
1
@@ -24,6 +24,7 @@
2
 struct os_process_pipe {
3
    bool read_pipe;
4
    HANDLE handle;
5
+   HANDLE handle_err;
6
    HANDLE process;
7
 };
8
 
9
@@ -42,7 +43,7 @@
10
 }
11
 
12
 static inline bool create_process(const char *cmd_line, HANDLE stdin_handle,
13
-       HANDLE stdout_handle, HANDLE *process)
14
+       HANDLE stdout_handle, HANDLE stderr_handle, HANDLE *process)
15
 {
16
    PROCESS_INFORMATION pi = {0};
17
    wchar_t *cmd_line_w = NULL;
18
@@ -53,6 +54,7 @@
19
    si.dwFlags = STARTF_USESTDHANDLES | STARTF_FORCEOFFFEEDBACK;
20
    si.hStdInput = stdin_handle;
21
    si.hStdOutput = stdout_handle;
22
+   si.hStdError = stderr_handle;
23
 
24
    os_utf8_to_wcs_ptr(cmd_line, 0, &cmd_line_w);
25
    if (cmd_line_w) {
26
@@ -77,6 +79,7 @@
27
    bool read_pipe;
28
    HANDLE process;
29
    HANDLE output;
30
+   HANDLE err_input, err_output;
31
    HANDLE input;
32
    bool success;
33
 
34
@@ -90,26 +93,38 @@
35
        return NULL;
36
    }
37
 
38
+   if (!create_pipe(&err_input, &err_output)) {
39
+       return NULL;
40
+   }
41
+
42
    read_pipe = *type == 'r';
43
 
44
    success = !!SetHandleInformation(read_pipe ? input : output,
45
-           HANDLE_FLAG_INHERIT, false);
46
+       HANDLE_FLAG_INHERIT, false);
47
+   if (!success) {
48
+       goto error;
49
+   }
50
+
51
+   success = !!SetHandleInformation(err_input, HANDLE_FLAG_INHERIT, false);
52
    if (!success) {
53
        goto error;
54
    }
55
 
56
    success = create_process(cmd_line, read_pipe ? NULL : input,
57
-           read_pipe ? output : NULL, &process);
58
+           read_pipe ? output : NULL, err_output, &process);
59
    if (!success) {
60
        goto error;
61
    }
62
 
63
    pp = bmalloc(sizeof(*pp));
64
+
65
    pp->handle = read_pipe ? input : output;
66
    pp->read_pipe = read_pipe;
67
    pp->process = process;
68
+   pp->handle_err = err_input;
69
 
70
    CloseHandle(read_pipe ? output : input);
71
+   CloseHandle(err_output);
72
    return pp;
73
 
74
 error:
75
@@ -126,6 +141,7 @@
76
        DWORD code;
77
 
78
        CloseHandle(pp->handle);
79
+       CloseHandle(pp->handle_err);
80
 
81
        WaitForSingleObject(pp->process, INFINITE);
82
        if (GetExitCodeProcess(pp->process, &code))
83
@@ -158,6 +174,25 @@
84
    return 0;
85
 }
86
 
87
+size_t os_process_pipe_read_err(os_process_pipe_t *pp, uint8_t *data, size_t len)
88
+{
89
+   DWORD bytes_read;
90
+   bool success;
91
+
92
+   if (!pp || !pp->handle_err) {
93
+       return 0;
94
+   }
95
+
96
+   success = !!ReadFile(pp->handle_err, data, (DWORD)len, &bytes_read, NULL);
97
+   if (success && bytes_read) {
98
+       return bytes_read;
99
+   }
100
+   else
101
+       bytes_read = GetLastError();
102
+
103
+   return 0;
104
+}
105
+
106
 size_t os_process_pipe_write(os_process_pipe_t *pp, const uint8_t *data,
107
        size_t len)
108
 {
109
obs-studio-23.1.0.tar.xz/libobs/util/pipe.h -> obs-studio-23.2.0.tar.xz/libobs/util/pipe.h Changed
9
 
1
@@ -27,5 +27,7 @@
2
 
3
 EXPORT size_t os_process_pipe_read(os_process_pipe_t *pp, uint8_t *data,
4
        size_t len);
5
+EXPORT size_t os_process_pipe_read_err(os_process_pipe_t *pp, uint8_t *data,
6
+   size_t len);
7
 EXPORT size_t os_process_pipe_write(os_process_pipe_t *pp, const uint8_t *data,
8
        size_t len);
9
obs-studio-23.1.0.tar.xz/libobs/util/platform-cocoa.m -> obs-studio-23.2.0.tar.xz/libobs/util/platform-cocoa.m Changed
51
 
1
@@ -24,11 +24,13 @@
2
 #include <time.h>
3
 #include <unistd.h>
4
 #include <sys/types.h>
5
+#include <sys/param.h>
6
 #include <sys/sysctl.h>
7
 
8
 #include <CoreServices/CoreServices.h>
9
 #include <mach/mach.h>
10
 #include <mach/mach_time.h>
11
+#include <mach-o/dyld.h>
12
 
13
 #include <IOKit/pwr_mgt/IOPMLib.h>
14
 
15
@@ -140,6 +142,35 @@
16
    return os_get_path_ptr_internal(name, NSLocalDomainMask);
17
 }
18
 
19
+char *os_get_executable_path_ptr(const char *name)
20
+{
21
+   char exe[PATH_MAX];
22
+   char abs_path[PATH_MAX];
23
+   uint32_t size = sizeof(exe);
24
+   struct dstr path;
25
+   char *slash;
26
+
27
+   if (_NSGetExecutablePath(exe, &size) != 0) {
28
+       return NULL;
29
+   }
30
+
31
+   if (!realpath(exe, abs_path)) {
32
+       return NULL;
33
+   }
34
+
35
+   dstr_init_copy(&path, abs_path);
36
+   slash = strrchr(path.array, '/');
37
+   if (slash) {
38
+       size_t len = slash - path.array + 1;
39
+       dstr_resize(&path, len);
40
+   }
41
+
42
+   if (name && *name) {
43
+       dstr_cat(&path, name);
44
+   }
45
+   return path.array;
46
+}
47
+
48
 struct os_cpu_usage_info {
49
    int64_t last_cpu_time;
50
    int64_t last_sys_time;
51
obs-studio-23.1.0.tar.xz/libobs/util/platform-nix.c -> obs-studio-23.2.0.tar.xz/libobs/util/platform-nix.c Changed
54
 
1
@@ -33,6 +33,7 @@
2
 #if !defined(__APPLE__)
3
 #include <sys/times.h>
4
 #include <sys/wait.h>
5
+#include <libgen.h>
6
 #ifdef __FreeBSD__
7
 #include <sys/param.h>
8
 #include <sys/queue.h>
9
@@ -66,7 +67,11 @@
10
 #endif
11
        dstr_cat(&dylib_name, ".so");
12
 
13
+#ifdef __APPLE__
14
+   void *res = dlopen(dylib_name.array, RTLD_LAZY | RTLD_FIRST);
15
+#else
16
    void *res = dlopen(dylib_name.array, RTLD_LAZY);
17
+#endif
18
    if (!res)
19
        blog(LOG_ERROR, "os_dlopen(%s->%s): %s\n",
20
                path, dylib_name.array, dlerror());
21
@@ -265,6 +270,32 @@
22
    return str;
23
 }
24
 
25
+char *os_get_executable_path_ptr(const char *name)
26
+{
27
+   char exe[PATH_MAX];
28
+   ssize_t count = readlink("/proc/self/exe", exe, PATH_MAX);
29
+   const char *path_out = NULL;
30
+   struct dstr path;
31
+
32
+   if (count == -1) {
33
+       return NULL;
34
+   }
35
+
36
+   path_out = dirname(exe);
37
+   if (!path_out) {
38
+       return NULL;
39
+   }
40
+
41
+   dstr_init_copy(&path, path_out);
42
+   dstr_cat(&path, "/");
43
+
44
+   if (name && *name) {
45
+       dstr_cat(&path, name);
46
+   }
47
+
48
+   return path.array;
49
+}
50
+
51
 #endif
52
 
53
 bool os_file_exists(const char *path)
54
obs-studio-23.1.0.tar.xz/libobs/util/platform-windows.c -> obs-studio-23.2.0.tar.xz/libobs/util/platform-windows.c Changed
33
 
1
@@ -295,6 +295,31 @@
2
    return os_get_path_ptr_internal(name, CSIDL_COMMON_APPDATA);
3
 }
4
 
5
+char *os_get_executable_path_ptr(const char *name)
6
+{
7
+   char *ptr;
8
+   char *slash;
9
+   wchar_t path_utf16[MAX_PATH];
10
+   struct dstr path;
11
+
12
+   GetModuleFileNameW(NULL, path_utf16, MAX_PATH);
13
+
14
+   os_wcs_to_utf8_ptr(path_utf16, 0, &ptr);
15
+   dstr_init_move_array(&path, ptr);
16
+   dstr_replace(&path, "\\", "/");
17
+   slash = strrchr(path.array, '/');
18
+   if (slash) {
19
+       size_t len = slash - path.array + 1;
20
+       dstr_resize(&path, len);
21
+   }
22
+
23
+   if (name && *name) {
24
+       dstr_cat(&path, name);
25
+   }
26
+
27
+   return path.array;
28
+}
29
+
30
 bool os_file_exists(const char *path)
31
 {
32
    WIN32_FIND_DATAW wfd;
33
obs-studio-23.1.0.tar.xz/libobs/util/platform.h -> obs-studio-23.2.0.tar.xz/libobs/util/platform.h Changed
10
 
1
@@ -111,6 +111,8 @@
2
 EXPORT int os_get_program_data_path(char *dst, size_t size, const char *name);
3
 EXPORT char *os_get_program_data_path_ptr(const char *name);
4
 
5
+EXPORT char *os_get_executable_path_ptr(const char *name);
6
+
7
 EXPORT bool os_file_exists(const char *path);
8
 
9
 EXPORT size_t os_get_abs_path(const char *path, char *abspath, size_t size);
10
obs-studio-23.1.0.tar.xz/libobs/util/windows/ComPtr.hpp -> obs-studio-23.2.0.tar.xz/libobs/util/windows/ComPtr.hpp Changed
10
 
1
@@ -68,7 +68,7 @@
2
 
3
    inline ComPtr<T> &operator=(ComPtr<T> &&c)
4
    {
5
-       if (this != &c) {
6
+       if (&ptr != &c.ptr) {
7
            Kill();
8
            ptr = c.ptr;
9
            c.ptr = nullptr;
10
obs-studio-23.1.0.tar.xz/plugins/coreaudio-encoder/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/coreaudio-encoder/data/locale/da-DK.ini Changed
10
 
1
@@ -1,6 +1,6 @@
2
 CoreAudioAAC="CoreAudio AAC-encoder"
3
-Bitrate="Bithastighed"
4
+Bitrate="Bit-hastighed"
5
 AllowHEAAC="Tillad HE-AAC"
6
 OutputSamplerate="Output Samplingsfrekvens"
7
-UseInputSampleRate="Benyt Input (OBS) Samplingsfrekvens (kan vise uunderstøttede bithastigheder)"
8
+UseInputSampleRate="Benyt Input (OBS) Samplingsfrekvens (kan vise uunderstøttede bit-hastigheder)"
9
 
10
obs-studio-23.1.0.tar.xz/plugins/coreaudio-encoder/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/coreaudio-encoder/data/locale/de-DE.ini Changed
10
 
1
@@ -1,6 +1,6 @@
2
-CoreAudioAAC="CoreAudio AAC Codierer"
3
+CoreAudioAAC="CoreAudio AAC Kodierer"
4
 Bitrate="Bitrate"
5
 AllowHEAAC="Erlaube HE-AAC"
6
-OutputSamplerate="Ausgabe-Abtastrate"
7
+OutputSamplerate="Ausgabeabtastrate"
8
 UseInputSampleRate="Verwenden Sie Eingabe (OBS) Abtastrate (kann nicht unterstützte Bitraten auflisten)"
9
 
10
obs-studio-23.1.0.tar.xz/plugins/coreaudio-encoder/data/locale/pt-PT.ini -> obs-studio-23.2.0.tar.xz/plugins/coreaudio-encoder/data/locale/pt-PT.ini Changed
8
 
1
@@ -2,5 +2,5 @@
2
 Bitrate="Bitrate"
3
 AllowHEAAC="Permitir HE-AAC"
4
 OutputSamplerate="Taxa de amostragem de saída"
5
-UseInputSampleRate="Taxa de amostragem de entrada (OBS) Taxa Amostra  (pode listar taxas de bit sem suporte)"
6
+UseInputSampleRate="Taxa de amostragem de entrada (OBS) Taxa Amostra (pode listar taxas de bit sem suporte)"
7
 
8
obs-studio-23.2.0.tar.xz/plugins/coreaudio-encoder/data/locale/ur-PK.ini Added
4
 
1
@@ -0,0 +1,2 @@
2
+Bitrate="بٹ ریٹ"
3
+
4
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/ar-SA.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/ar-SA.ini Changed
11
 
1
@@ -3,9 +3,7 @@
2
 Mode="الوضع"
3
 Buffering="استخدام التخزين المؤقت"
4
 PixelFormat="صيغة البكسل"
5
-ColorSpace="مساحة ألوان YUV"
6
 ColorSpace.Default="الافتراضي"
7
-ColorRange="نطاق ألوان YUV"
8
 ColorRange.Default="الافتراضي"
9
 ColorRange.Partial="جزئي"
10
 ColorRange.Full="كامل"
11
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/ca-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/ca-ES.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Mode"
3
 Buffering="Usa memòria intermèdia"
4
 PixelFormat="Format de píxel"
5
-ColorSpace="Espai de color YUV"
6
+ColorSpace="Espai de color"
7
 ColorSpace.Default="Per defecte"
8
-ColorRange="Gamma de color YUV"
9
+ColorRange="Gamma de colors"
10
 ColorRange.Default="Per defecte"
11
 ColorRange.Partial="Parcial"
12
 ColorRange.Full="Complet"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/cs-CZ.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/cs-CZ.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Mód"
3
 Buffering="Použít vyrovnávací paměť"
4
 PixelFormat="Formát pixelů"
5
-ColorSpace="Prostor barev YUV"
6
+ColorSpace="Barevný prostor"
7
 ColorSpace.Default="Výchozí"
8
-ColorRange="Rozsah barev YUV"
9
+ColorRange="Rozsah barev"
10
 ColorRange.Default="Výchozí"
11
 ColorRange.Partial="Částečný"
12
 ColorRange.Full="Plný"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/da-DK.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Tilstand"
3
 Buffering="Benyt buffering"
4
 PixelFormat="Pixelformat"
5
-ColorSpace="YUV-farverum"
6
+ColorSpace="Farverum"
7
 ColorSpace.Default="Standard"
8
-ColorRange="YUV-farveområde"
9
+ColorRange="Farveområde"
10
 ColorRange.Default="Standard"
11
 ColorRange.Partial="Delvis"
12
 ColorRange.Full="Fuld"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/de-DE.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Modus"
3
 Buffering="Puffern benutzen"
4
 PixelFormat="Pixelformat"
5
-ColorSpace="YUV-Farbmatrix"
6
+ColorSpace="Farbraum"
7
 ColorSpace.Default="Standard"
8
-ColorRange="YUV-Farbbereich"
9
+ColorRange="Farbbereich"
10
 ColorRange.Default="Standard"
11
 ColorRange.Partial="Begrenzt"
12
 ColorRange.Full="Voll"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/el-GR.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/el-GR.ini Changed
11
 
1
@@ -3,9 +3,7 @@
2
 Mode="Λειτουργία"
3
 Buffering="Χρήση ενδιάμεσης μνήμης"
4
 PixelFormat="Μορφή pixel"
5
-ColorSpace="Χώρος Χρωμάτων YUV"
6
 ColorSpace.Default="Προεπιλογή"
7
-ColorRange="Έκταση Χρωμάτων YUV"
8
 ColorRange.Default="Προεπιλογή"
9
 ColorRange.Partial="Μερική"
10
 ColorRange.Full="Πλήρης"
11
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/en-US.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/en-US.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Mode"
3
 Buffering="Use Buffering"
4
 PixelFormat="Pixel Format"
5
-ColorSpace="YUV Color Space"
6
+ColorSpace="Color Space"
7
 ColorSpace.Default="Default"
8
-ColorRange="YUV Color Range"
9
+ColorRange="Color Range"
10
 ColorRange.Default="Default"
11
 ColorRange.Partial="Partial"
12
 ColorRange.Full="Full"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/es-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/es-ES.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Modo"
3
 Buffering="Utilizar el almacenamiento en búfer"
4
 PixelFormat="Formato de píxel"
5
-ColorSpace="Espacio de color YUV"
6
+ColorSpace="Espacio de color"
7
 ColorSpace.Default="Predeterminado"
8
-ColorRange="Rango de color YUV"
9
+ColorRange="Rango de color"
10
 ColorRange.Default="Predeterminado"
11
 ColorRange.Partial="Parcial"
12
 ColorRange.Full="Completo"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/eu-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/eu-ES.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Modua"
3
 Buffering="Erabili Bufferreratzea"
4
 PixelFormat="Pixel formatua"
5
-ColorSpace="YUV kolore espazioa"
6
+ColorSpace="Kolore-espazioa"
7
 ColorSpace.Default="Lehenetsia"
8
-ColorRange="YUV kolore tartea"
9
+ColorRange="Kolore tartea"
10
 ColorRange.Default="Lehenetsia"
11
 ColorRange.Partial="Partziala"
12
 ColorRange.Full="Osoa"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/fa-IR.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/fa-IR.ini Changed
11
 
1
@@ -3,9 +3,7 @@
2
 Mode="نوع"
3
 Buffering="استفاده از بافرینگ"
4
 PixelFormat="فرمت پیکسل"
5
-ColorSpace="فضای رنگی YUV"
6
 ColorSpace.Default="پیش فرض"
7
-ColorRange="فضای رنگی YUV"
8
 ColorRange.Default="پیش فرض"
9
 ColorRange.Partial="جزئی"
10
 ColorRange.Full="کامل"
11
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/fi-FI.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/fi-FI.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Tila"
3
 Buffering="Käytä puskurointia"
4
 PixelFormat="Pikselimuoto"
5
-ColorSpace="YUV väriavaruus"
6
+ColorSpace="Väriavaruus"
7
 ColorSpace.Default="Oletusarvo"
8
-ColorRange="YUV värialue"
9
+ColorRange="Värialue"
10
 ColorRange.Default="Oletusarvo"
11
 ColorRange.Partial="Osittainen"
12
 ColorRange.Full="Täysi"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/fil-PH.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/fil-PH.ini Changed
11
 
1
@@ -3,9 +3,7 @@
2
 Mode="Mode"
3
 Buffering="Gamitin ang Buffering"
4
 PixelFormat="Format ng Pixel"
5
-ColorSpace="YUV Kulay Space"
6
 ColorSpace.Default="Pangunahin"
7
-ColorRange="Saklaw ng Kulay ng YUV"
8
 ColorRange.Default="Pangunahin"
9
 ColorRange.Partial="Bahagyang"
10
 ColorRange.Full="Buong"
11
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/gd-GB.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/gd-GB.ini Changed
11
 
1
@@ -1,9 +1,7 @@
2
 Device="Uidheam"
3
 Mode="Modh"
4
 Buffering="Cleachd bufaireadh"
5
-ColorSpace="Spàs dhathan YUV"
6
 ColorSpace.Default="Bun-roghainn"
7
-ColorRange="Rainse dhathan YUV"
8
 ColorRange.Default="Bun-roghainn"
9
 ColorRange.Partial="Leth-phàirteach"
10
 ColorRange.Full="Làn"
11
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/hu-HU.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/hu-HU.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Mód"
3
 Buffering="Pufferelés használata"
4
 PixelFormat="Képpont formátum"
5
-ColorSpace="YUV színtér"
6
+ColorSpace="Színtér"
7
 ColorSpace.Default="Alapértelmezett"
8
-ColorRange="YUV színtartomány"
9
+ColorRange="Színtartomány"
10
 ColorRange.Default="Alapértelmezett"
11
 ColorRange.Partial="Részleges"
12
 ColorRange.Full="Teljes"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/it-IT.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/it-IT.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Modalità"
3
 Buffering="Utilizza il buffering"
4
 PixelFormat="Formato pixel"
5
-ColorSpace="Spazio colore YUV"
6
+ColorSpace="Spazio colore"
7
 ColorSpace.Default="Predefinito"
8
-ColorRange="Gamma di colore YUV"
9
+ColorRange="Gamma di colori"
10
 ColorRange.Default="Predefinito"
11
 ColorRange.Partial="Parziale"
12
 ColorRange.Full="Intero"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/ja-JP.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/ja-JP.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="モード"
3
 Buffering="バッファリングを使用する"
4
 PixelFormat="ピクセルフォーマット"
5
-ColorSpace="YUV 色空間"
6
+ColorSpace="色空間"
7
 ColorSpace.Default="既定"
8
-ColorRange="YUV 色範囲"
9
+ColorRange="色範囲"
10
 ColorRange.Default="既定"
11
 ColorRange.Partial="一部"
12
 ColorRange.Full="全部"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/ka-GE.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="რეჟიმი"
3
 Buffering="ბუფერიზაციის გამოყენება"
4
 PixelFormat="პიქსელის ფორმატი"
5
-ColorSpace="YUV ფერთა სისტემა"
6
+ColorSpace="ფერთა სივრცე"
7
 ColorSpace.Default="ნაგულისხმევი"
8
-ColorRange="YUV ფერთა გამა"
9
+ColorRange="ფერთა გამა"
10
 ColorRange.Default="ნაგულისხმევი"
11
 ColorRange.Partial="ნაწილობრივი"
12
 ColorRange.Full="სრული"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/ko-KR.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/ko-KR.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="방식"
3
 Buffering="버퍼링 사용"
4
 PixelFormat="픽셀 형식"
5
-ColorSpace="YUV 색 공간"
6
+ColorSpace="색 공간"
7
 ColorSpace.Default="기본값"
8
-ColorRange="YUV 색상 범위"
9
+ColorRange="색상 범위"
10
 ColorRange.Default="기본값"
11
 ColorRange.Partial="부분"
12
 ColorRange.Full="전체"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/nb-NO.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/nb-NO.ini Changed
21
 
1
@@ -3,9 +3,9 @@
2
 Mode="Modus"
3
 Buffering="Bruk bufring"
4
 PixelFormat="Pikselformat"
5
-ColorSpace="YUV fargerom"
6
+ColorSpace="Fargerom"
7
 ColorSpace.Default="Standard"
8
-ColorRange="YUV fargerom"
9
+ColorRange="Fargespekter"
10
 ColorRange.Default="Standard"
11
 ColorRange.Partial="Delvis"
12
 ColorRange.Full="Hel"
13
@@ -20,6 +20,7 @@
14
 DeactivateWhenNotShowing="Deaktiver når denne ikke vises"
15
 AutoStart="Automatisk start ved oppstart"
16
 SwapFC-LFE="Bytt FC og LFE"
17
+SwapFC-LFE.Tooltip="Bytt front-kanal og LFE-kanal"
18
 VideoConnection="Videotilkobling"
19
 AudioConnection="Lydtilkobling"
20
 
21
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/nl-NL.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/nl-NL.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Modus"
3
 Buffering="Buffering Gebruiken"
4
 PixelFormat="Pixelindeling"
5
-ColorSpace="YUV-Kleurruimte"
6
+ColorSpace="Kleurruimte"
7
 ColorSpace.Default="Standaard"
8
-ColorRange="YUV Kleurbereik"
9
+ColorRange="Kleurbereik"
10
 ColorRange.Default="Standaard"
11
 ColorRange.Partial="Gedeeltelijk"
12
 ColorRange.Full="Volledig"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/pl-PL.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/pl-PL.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Tryb"
3
 Buffering="Użyj buforowania"
4
 PixelFormat="Format pikseli"
5
-ColorSpace="Przestrzeń kolorów YUV"
6
+ColorSpace="Przestrzeń kolorów"
7
 ColorSpace.Default="Domyślne"
8
-ColorRange="Zakres kolorów YUV"
9
+ColorRange="Zakres kolorów"
10
 ColorRange.Default="Domyślne"
11
 ColorRange.Partial="Częściowy"
12
 ColorRange.Full="Pełny"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/pt-BR.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/pt-BR.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Modo"
3
 Buffering="Utilizar Buffering"
4
 PixelFormat="Formato de Pixel"
5
-ColorSpace="Espaço de cor YUV"
6
+ColorSpace="Espaço de cor"
7
 ColorSpace.Default="Padrão"
8
-ColorRange="Intervalo de Cores YUV"
9
+ColorRange="Faixa de cores"
10
 ColorRange.Default="Padrão"
11
 ColorRange.Partial="Parcial"
12
 ColorRange.Full="Completo"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/pt-PT.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/pt-PT.ini Changed
11
 
1
@@ -3,9 +3,7 @@
2
 Mode="Modo"
3
 Buffering="Utilizar Buffering"
4
 PixelFormat="Formato de pixel"
5
-ColorSpace="Espaço de Cor YUV"
6
 ColorSpace.Default="Predefinido"
7
-ColorRange="Gama de Cor YUV"
8
 ColorRange.Default="Predefinido"
9
 ColorRange.Partial="Parcial"
10
 ColorRange.Full="Completo"
11
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/ro-RO.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/ro-RO.ini Changed
10
 
1
@@ -1,7 +1,7 @@
2
 BlackmagicDevice="Dispozitiv Blackmagic"
3
 Device="Dispozitiv"
4
 Mode="Mod"
5
-Buffering="Folosește buffering"
6
+Buffering="Folosește zona tampon"
7
 PixelFormat="Formatul pixelilor"
8
 ColorSpace.Default="Implicit"
9
 ColorRange.Default="Implicit"
10
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/ru-RU.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/ru-RU.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Режим"
3
 Buffering="Использовать буферизацию"
4
 PixelFormat="Формат пикселей"
5
-ColorSpace="Цветовое пространство YUV"
6
+ColorSpace="Цветовое пространство"
7
 ColorSpace.Default="По умолчанию"
8
-ColorRange="Цветовой диапазон YUV"
9
+ColorRange="Цветовой диапазон"
10
 ColorRange.Default="По умолчанию"
11
 ColorRange.Partial="Частичный"
12
 ColorRange.Full="Полный"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/sk-SK.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/sk-SK.ini Changed
22
 
1
@@ -3,9 +3,9 @@
2
 Mode="Mód"
3
 Buffering="Použiť vyrovnávaciu pamäť"
4
 PixelFormat="Formát pixelov"
5
-ColorSpace="Farebný priestor YUV"
6
+ColorSpace="Farebný priestor"
7
 ColorSpace.Default="Predvolený"
8
-ColorRange="Rozsah farieb YUV"
9
+ColorRange="Farebný rozsah"
10
 ColorRange.Default="Predvolený"
11
 ColorRange.Partial="Čiastočný"
12
 ColorRange.Full="Plný"
13
@@ -19,4 +19,8 @@
14
 ChannelFormat.7_1ch="7.1ch"
15
 DeactivateWhenNotShowing="Deaktivovať, keď je skrytý"
16
 AutoStart="Automaticky spustiť pri štarte"
17
+SwapFC-LFE="Vymeniť FC a LFE"
18
+SwapFC-LFE.Tooltip="Vymeniť kanál Front Center a kanál LFE"
19
+VideoConnection="Video pripojenie"
20
+AudioConnection="Audio pripojenie"
21
 
22
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/sr-CS.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/sr-CS.ini Changed
11
 
1
@@ -3,9 +3,7 @@
2
 Mode="Režim"
3
 Buffering="Koristi baferovanje"
4
 PixelFormat="Piksel format"
5
-ColorSpace="YUV prostor boja"
6
 ColorSpace.Default="Podrazumevan"
7
-ColorRange="YUV opseg boja"
8
 ColorRange.Default="Podrazumevan"
9
 ColorRange.Partial="Delimičan"
10
 ColorRange.Full="Potpun"
11
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/sr-SP.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/sr-SP.ini Changed
11
 
1
@@ -3,9 +3,7 @@
2
 Mode="Режим"
3
 Buffering="Користи баферовање"
4
 PixelFormat="Пиксел формат"
5
-ColorSpace="YUV простор боја"
6
 ColorSpace.Default="Подразумеван"
7
-ColorRange="YUV опсег боја"
8
 ColorRange.Default="Подразумеван"
9
 ColorRange.Partial="Делимичан"
10
 ColorRange.Full="Потпун"
11
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/sv-SE.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/sv-SE.ini Changed
13
 
1
@@ -3,9 +3,9 @@
2
 Mode="Läge"
3
 Buffering="Använd buffert"
4
 PixelFormat="Bildpunktsformat"
5
-ColorSpace="YUV-färgrymd"
6
+ColorSpace="Färgrymd"
7
 ColorSpace.Default="Standard"
8
-ColorRange="YUV-färgområde"
9
+ColorRange="Färgintervall"
10
 ColorRange.Default="Standard"
11
 ColorRange.Partial="Partiell"
12
 ColorRange.Full="Full"
13
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/tl-PH.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/tl-PH.ini Changed
11
 
1
@@ -3,9 +3,7 @@
2
 Mode="I-mode"
3
 Buffering="Paggamit ng Buffering"
4
 PixelFormat="Ang Format ng Pixel"
5
-ColorSpace="Pagitan sa kulay na YUV"
6
 ColorSpace.Default="I-default"
7
-ColorRange="Ang Saklaw ng Kulay na YUV"
8
 ColorRange.Default="I-default"
9
 ColorRange.Partial="Bahagya"
10
 ColorRange.Full="Puno"
11
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/tr-TR.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/tr-TR.ini Changed
20
 
1
@@ -3,9 +3,9 @@
2
 Mode="Mod"
3
 Buffering="Arabelleğe Almayı Kullan"
4
 PixelFormat="Piksel Biçimi"
5
-ColorSpace="YUV Renk Alanı"
6
+ColorSpace="Renk Uzayı"
7
 ColorSpace.Default="Varsayılan"
8
-ColorRange="YUV Renk Aralığı"
9
+ColorRange="Renk Aralığı"
10
 ColorRange.Default="Varsayılan"
11
 ColorRange.Partial="Kısmi"
12
 ColorRange.Full="Tam"
13
@@ -19,4 +19,6 @@
14
 ChannelFormat.7_1ch="7.1ch"
15
 DeactivateWhenNotShowing="Gösterilmediğinde devre dışı bırak"
16
 AutoStart="Açılışta otomatik olarak başlat"
17
+VideoConnection="Video Bağlantısı"
18
+AudioConnection="Ses Bağlantısı"
19
 
20
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/uk-UA.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/uk-UA.ini Changed
11
 
1
@@ -3,9 +3,7 @@
2
 Mode="Режим"
3
 Buffering="Увімкнути буферизацію"
4
 PixelFormat="Формат пікселів"
5
-ColorSpace="Колірний простір YUV"
6
 ColorSpace.Default="За замовчуванням"
7
-ColorRange="Колірний діапазон YUV"
8
 ColorRange.Default="За замовчуванням"
9
 ColorRange.Partial="Частковий"
10
 ColorRange.Full="Повний"
11
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/zh-CN.ini Changed
26
 
1
@@ -3,9 +3,9 @@
2
 Mode="模式"
3
 Buffering="使用缓冲"
4
 PixelFormat="视频格式"
5
-ColorSpace="YUV 颜色空间"
6
+ColorSpace="色彩空间"
7
 ColorSpace.Default="默认"
8
-ColorRange="YUV 颜色范围"
9
+ColorRange="色彩范围"
10
 ColorRange.Default="默认"
11
 ColorRange.Partial="局部"
12
 ColorRange.Full="全部"
13
@@ -17,10 +17,10 @@
14
 ChannelFormat.4_1ch="4.1声道"
15
 ChannelFormat.5_1ch="5.1声道"
16
 ChannelFormat.7_1ch="7.1声道"
17
-DeactivateWhenNotShowing="当不显示时停用"
18
+DeactivateWhenNotShowing="当不显示时禁用"
19
 AutoStart="启动时自动启动"
20
 SwapFC-LFE="交换 FC 和 LFE"
21
-SwapFC-LFE.Tooltip="切换前中(FC)频道与低频(低音)频道"
22
+SwapFC-LFE.Tooltip="切换前中(FC)声道与低频效果(LFE)声道"
23
 VideoConnection="视频连接"
24
 AudioConnection="声音连接"
25
 
26
obs-studio-23.1.0.tar.xz/plugins/decklink/data/locale/zh-TW.ini -> obs-studio-23.2.0.tar.xz/plugins/decklink/data/locale/zh-TW.ini Changed
20
 
1
@@ -3,15 +3,15 @@
2
 Mode="模式"
3
 Buffering="使用緩衝"
4
 PixelFormat="像素格式"
5
-ColorSpace="YUV 色彩空間"
6
+ColorSpace="色彩空間"
7
 ColorSpace.Default="預設"
8
-ColorRange="YUV 色彩範圍"
9
+ColorRange="顏色範圍"
10
 ColorRange.Default="預設"
11
 ColorRange.Partial="部分"
12
 ColorRange.Full="完整"
13
 ChannelFormat="聲道"
14
 ChannelFormat.None="無"
15
-ChannelFormat.2_0ch="雙聲道"
16
+ChannelFormat.2_0ch="雙聲道(2ch)"
17
 ChannelFormat.2_1ch="2.1聲道"
18
 ChannelFormat.4_0ch="4聲道"
19
 ChannelFormat.4_1ch="4.1聲道"
20
obs-studio-23.1.0.tar.xz/plugins/decklink/decklink-device-instance.cpp -> obs-studio-23.2.0.tar.xz/plugins/decklink/decklink-device-instance.cpp Changed
19
 
1
@@ -135,7 +135,7 @@
2
    currentFrame.height      = (uint32_t)videoFrame->GetHeight();
3
    currentFrame.timestamp   = timestamp;
4
 
5
-   obs_source_output_video(static_cast<DeckLinkInput*>(decklink)->GetSource(), &currentFrame);
6
+   obs_source_output_video2(static_cast<DeckLinkInput*>(decklink)->GetSource(), &currentFrame);
7
 }
8
 
9
 void DeckLinkDeviceInstance::FinalizeStream()
10
@@ -177,7 +177,7 @@
11
    }
12
 
13
    colorRange = static_cast<DeckLinkInput*>(decklink)->GetColorRange();
14
-   currentFrame.full_range = colorRange == VIDEO_RANGE_FULL;
15
+   currentFrame.range = colorRange;
16
 
17
    video_format_get_parameters(activeColorSpace, colorRange,
18
            currentFrame.color_matrix, currentFrame.color_range_min,
19
obs-studio-23.1.0.tar.xz/plugins/decklink/decklink-device-instance.hpp -> obs-studio-23.2.0.tar.xz/plugins/decklink/decklink-device-instance.hpp Changed
10
 
1
@@ -11,7 +11,7 @@
2
 
3
 class DeckLinkDeviceInstance : public IDeckLinkInputCallback {
4
 protected:
5
-   struct obs_source_frame currentFrame;
6
+   struct obs_source_frame2 currentFrame;
7
    struct obs_source_audio currentPacket;
8
    DecklinkBase            *decklink = nullptr;
9
    DeckLinkDevice          *device = nullptr;
10
obs-studio-23.1.0.tar.xz/plugins/decklink/decklink-source.cpp -> obs-studio-23.2.0.tar.xz/plugins/decklink/decklink-source.cpp Changed
44
 
1
@@ -220,9 +220,6 @@
2
    return true;
3
 }
4
 
5
-static bool color_format_changed(obs_properties_t *props,
6
-       obs_property_t *list, obs_data_t *settings);
7
-
8
 static bool mode_id_changed(obs_properties_t *props,
9
        obs_property_t *list, obs_data_t *settings)
10
 {
11
@@ -231,24 +228,6 @@
12
    list = obs_properties_get(props, PIXEL_FORMAT);
13
    obs_property_set_visible(list, id != MODE_ID_AUTO);
14
 
15
-   return color_format_changed(props, nullptr, settings);
16
-}
17
-
18
-static bool color_format_changed(obs_properties_t *props,
19
-       obs_property_t *list, obs_data_t *settings)
20
-{
21
-   long long id = obs_data_get_int(settings, MODE_ID);
22
-   BMDPixelFormat pixelFormat = (BMDPixelFormat)obs_data_get_int(settings,
23
-       PIXEL_FORMAT);
24
-
25
-   list = obs_properties_get(props, COLOR_SPACE);
26
-   obs_property_set_visible(list,
27
-           id != MODE_ID_AUTO && pixelFormat == bmdFormat8BitYUV);
28
-
29
-   list = obs_properties_get(props, COLOR_RANGE);
30
-   obs_property_set_visible(list,
31
-           id == MODE_ID_AUTO || pixelFormat == bmdFormat8BitYUV);
32
-
33
    return true;
34
 }
35
 
36
@@ -274,7 +253,6 @@
37
    list = obs_properties_add_list(props, PIXEL_FORMAT,
38
            TEXT_PIXEL_FORMAT, OBS_COMBO_TYPE_LIST,
39
            OBS_COMBO_FORMAT_INT);
40
-   obs_property_set_modified_callback(list, color_format_changed);
41
 
42
    obs_property_list_add_int(list, "8-bit YUV", bmdFormat8BitYUV);
43
    obs_property_list_add_int(list, "8-bit BGRA", bmdFormat8BitBGRA);
44
obs-studio-23.1.0.tar.xz/plugins/image-source/color-source.c -> obs-studio-23.2.0.tar.xz/plugins/image-source/color-source.c Changed
16
 
1
@@ -99,9 +99,12 @@
2
 
3
 static void color_source_defaults(obs_data_t *settings)
4
 {
5
+   struct obs_video_info ovi;
6
+   obs_get_video_info(&ovi);
7
+
8
    obs_data_set_default_int(settings, "color", 0xFFFFFFFF);
9
-   obs_data_set_default_int(settings, "width", 400);
10
-   obs_data_set_default_int(settings, "height", 400);
11
+   obs_data_set_default_int(settings, "width", ovi.base_width);
12
+   obs_data_set_default_int(settings, "height", ovi.base_height);
13
 }
14
 
15
 struct obs_source_info color_source_info = {
16
obs-studio-23.1.0.tar.xz/plugins/image-source/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/image-source/data/locale/da-DK.ini Changed
28
 
1
@@ -2,9 +2,9 @@
2
 File="Billedfil"
3
 UnloadWhenNotShowing="Fjern billede fra hukommelsen når det ikke vises"
4
 
5
-SlideShow="Billede diasshow"
6
-SlideShow.TransitionSpeed="Overgangshastighed (millisekunder)"
7
-SlideShow.SlideTime="Tid mellem dias (millisekunder)"
8
+SlideShow="Billedediasshow"
9
+SlideShow.TransitionSpeed="Overgangshastighed (ms)"
10
+SlideShow.SlideTime="Tid mellem dias (ms)"
11
 SlideShow.Files="Billedfiler"
12
 SlideShow.CustomSize="Afgrænsningsstørrelse/Formatforhold"
13
 SlideShow.CustomSize.Auto="Automatisk"
14
@@ -18,10 +18,10 @@
15
 SlideShow.PlaybackBehavior="Synlighedsadfærd"
16
 SlideShow.PlaybackBehavior.StopRestart="Stop når ikke synlig, genstart når synlig"
17
 SlideShow.PlaybackBehavior.PauseUnpause="Sæt på pause når ikke synlig, genoptag når synlig"
18
-SlideShow.PlaybackBehavior.AlwaysPlay="Afspil altid også når usynlig"
19
-SlideShow.SlideMode="Diasshowtilstand"
20
+SlideShow.PlaybackBehavior.AlwaysPlay="Afspil altid, også når usynlig"
21
+SlideShow.SlideMode="Diastilstand"
22
 SlideShow.SlideMode.Auto="Automatisk"
23
-SlideShow.SlideMode.Manual="Manuel t(styr diasshow via genvejstaster)"
24
+SlideShow.SlideMode.Manual="Manuelt (styr diasshow via genvejstaster)"
25
 SlideShow.PlayPause="Afspil/Pause"
26
 SlideShow.Restart="Genstart"
27
 SlideShow.Stop="Stop"
28
obs-studio-23.1.0.tar.xz/plugins/image-source/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/image-source/data/locale/de-DE.ini Changed
35
 
1
@@ -1,12 +1,12 @@
2
 ImageInput="Bild"
3
 File="Bilddatei"
4
-UnloadWhenNotShowing="Entlade Bild, wenn es nicht angezeigt wird"
5
+UnloadWhenNotShowing="Bild entladen, wenn es nicht angezeigt wird"
6
 
7
 SlideShow="Diashow"
8
 SlideShow.TransitionSpeed="Übergangsgeschwindigkeit (Millisekunden)"
9
 SlideShow.SlideTime="Zeit zwischen Bildern (Millisekunden)"
10
 SlideShow.Files="Bilddateien"
11
-SlideShow.CustomSize="Rahmen Größe/Seitenverhältnis"
12
+SlideShow.CustomSize="Rahmengröße/Seitenverhältnis"
13
 SlideShow.CustomSize.Auto="Automatisch"
14
 SlideShow.Randomize="Zufällige Wiedergabe"
15
 SlideShow.Loop="Endlosschleife"
16
@@ -16,14 +16,14 @@
17
 SlideShow.Transition.Swipe="Swipe"
18
 SlideShow.Transition.Slide="Slide"
19
 SlideShow.PlaybackBehavior="Sichtbarkeitsverhalten"
20
-SlideShow.PlaybackBehavior.StopRestart="Anhalten wenn nicht sichtbar, neu starten wenn sichtbar"
21
-SlideShow.PlaybackBehavior.PauseUnpause="Pausieren wenn nicht sichtbar, fortsetzen wenn sichtbar"
22
+SlideShow.PlaybackBehavior.StopRestart="Anhalten, wenn nicht sichtbar, neustarten, wenn sichtbar"
23
+SlideShow.PlaybackBehavior.PauseUnpause="Pausieren, wenn nicht sichtbar, fortsetzen, wenn sichtbar"
24
 SlideShow.PlaybackBehavior.AlwaysPlay="Immer abspielen, auch wenn nicht sichtbar"
25
 SlideShow.SlideMode="Diashowmodus"
26
 SlideShow.SlideMode.Auto="Automatisch"
27
 SlideShow.SlideMode.Manual="Manuell (Hotkeys verwenden, um Diashow zu steuern)"
28
-SlideShow.PlayPause="Abspielen/Pausieren"
29
-SlideShow.Restart="Neu starten"
30
+SlideShow.PlayPause="Abspielen/pausieren"
31
+SlideShow.Restart="Neustarten"
32
 SlideShow.Stop="Stop"
33
 SlideShow.NextSlide="Nächstes Bild"
34
 SlideShow.PreviousSlide="Vorheriges Bild"
35
obs-studio-23.1.0.tar.xz/plugins/image-source/data/locale/ro-RO.ini -> obs-studio-23.2.0.tar.xz/plugins/image-source/data/locale/ro-RO.ini Changed
9
 
1
@@ -20,6 +20,7 @@
2
 SlideShow.NextSlide="Diapozitivul următor"
3
 SlideShow.PreviousSlide="Diapozitivul anterior"
4
 
5
+ColorSource="Sursă de culoare"
6
 ColorSource.Color="Culoare"
7
 ColorSource.Width="Lățime"
8
 ColorSource.Height="Înălțime"
9
obs-studio-23.1.0.tar.xz/plugins/image-source/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/plugins/image-source/data/locale/zh-CN.ini Changed
32
 
1
@@ -3,17 +3,17 @@
2
 UnloadWhenNotShowing="当不显示时卸载图像"
3
 
4
 SlideShow="图像幻灯片放映"
5
-SlideShow.TransitionSpeed="过渡速度(毫秒)"
6
+SlideShow.TransitionSpeed="转场速度(毫秒)"
7
 SlideShow.SlideTime="幻灯片之间时间(毫秒)"
8
 SlideShow.Files="图像文件"
9
-SlideShow.CustomSize="边框大小/高宽比"
10
+SlideShow.CustomSize="边框大小/宽高比"
11
 SlideShow.CustomSize.Auto="自动"
12
 SlideShow.Randomize="随机播放"
13
 SlideShow.Loop="循环"
14
-SlideShow.Transition="过渡动画"
15
+SlideShow.Transition="转换特效"
16
 SlideShow.Transition.Cut="剪切"
17
 SlideShow.Transition.Fade="淡出"
18
-SlideShow.Transition.Swipe="滑动"
19
+SlideShow.Transition.Swipe="滑出"
20
 SlideShow.Transition.Slide="幻灯片"
21
 SlideShow.PlaybackBehavior="可见性的行为"
22
 SlideShow.PlaybackBehavior.StopRestart="不可见时停止, 可见时重新开始"
23
@@ -27,7 +27,7 @@
24
 SlideShow.Stop="停止"
25
 SlideShow.NextSlide="下一张幻灯片"
26
 SlideShow.PreviousSlide="上一张幻灯片"
27
-SlideShow.HideWhenDone="幻灯片完成时隐藏"
28
+SlideShow.HideWhenDone="幻灯片放映完成后隐藏"
29
 
30
 ColorSource="色源"
31
 ColorSource.Color="色彩"
32
obs-studio-23.1.0.tar.xz/plugins/linux-capture/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/plugins/linux-capture/CMakeLists.txt Changed
10
 
1
@@ -6,7 +6,7 @@
2
    return()
3
 endif()
4
 
5
-find_package(XCB COMPONENTS XCB SHM XFIXES XINERAMA REQUIRED)
6
+find_package(XCB COMPONENTS XCB RANDR SHM XFIXES XINERAMA REQUIRED)
7
 find_package(X11_XCB REQUIRED)
8
 
9
 include_directories(SYSTEM
10
obs-studio-23.1.0.tar.xz/plugins/linux-capture/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/linux-capture/data/locale/de-DE.ini Changed
20
 
1
@@ -2,7 +2,7 @@
2
 Screen="Bildschirm"
3
 CaptureCursor="Mauszeiger aufnehmen"
4
 AdvancedSettings="Erweiterte Einstellungen"
5
-XServer="X Server"
6
+XServer="X-Server"
7
 XCCapture="Fensteraufnahme (Xcomposite)"
8
 Window="Fenster"
9
 CropTop="Oben abschneiden (Pixel)"
10
@@ -10,7 +10,7 @@
11
 CropRight="Rechts abschneiden (Pixel)"
12
 CropBottom="Unten abschneiden (Pixel)"
13
 SwapRedBlue="Rot und Blau tauschen"
14
-LockX="X Server sperren während der Aufnahme"
15
+LockX="X-Server während der Aufnahme sperren"
16
 IncludeXBorder="X-Rahmen anzeigen"
17
-ExcludeAlpha="Verwenden von alphalosem Texturformat (Mesa Problemumgehung)"
18
+ExcludeAlpha="Alphaloses Texturformat verwenden (Mesa-Problemumgehung)"
19
 
20
obs-studio-23.1.0.tar.xz/plugins/linux-capture/xhelpers.c -> obs-studio-23.2.0.tar.xz/plugins/linux-capture/xhelpers.c Changed
88
 
1
@@ -17,6 +17,7 @@
2
 
3
 #include <stdint.h>
4
 #include <sys/shm.h>
5
+#include <xcb/randr.h>
6
 #include <xcb/xcb.h>
7
 #include <xcb/xinerama.h>
8
 
9
@@ -95,6 +96,78 @@
10
    return -1;
11
 }
12
 
13
+bool randr_is_active(xcb_connection_t *xcb)
14
+{
15
+   if (!xcb || !xcb_get_extension_data(xcb, &xcb_randr_id)->present)
16
+       return false;
17
+
18
+   return true;
19
+}
20
+
21
+int randr_screen_count(xcb_connection_t *xcb)
22
+{
23
+   if (!xcb)
24
+       return 0;
25
+
26
+   xcb_screen_t *screen;
27
+   screen = xcb_setup_roots_iterator(xcb_get_setup(xcb)).data;
28
+
29
+   xcb_randr_get_screen_resources_cookie_t res_c;
30
+   xcb_randr_get_screen_resources_reply_t* res_r;
31
+
32
+   res_c = xcb_randr_get_screen_resources(xcb, screen->root);
33
+   res_r = xcb_randr_get_screen_resources_reply(xcb, res_c, 0);
34
+   if (!res_r)
35
+       return 0;
36
+
37
+   return xcb_randr_get_screen_resources_crtcs_length(res_r);
38
+}
39
+
40
+int randr_screen_geo(xcb_connection_t *xcb, int_fast32_t screen,
41
+       int_fast32_t *x, int_fast32_t *y,
42
+       int_fast32_t *w, int_fast32_t *h,
43
+       xcb_screen_t **rscreen)
44
+{
45
+   xcb_screen_t *xscreen;
46
+   xscreen = xcb_setup_roots_iterator(xcb_get_setup(xcb)).data;
47
+
48
+   xcb_randr_get_screen_resources_cookie_t res_c;
49
+   xcb_randr_get_screen_resources_reply_t* res_r;
50
+
51
+   res_c = xcb_randr_get_screen_resources(xcb, xscreen->root);
52
+   res_r = xcb_randr_get_screen_resources_reply(xcb, res_c, 0);
53
+   if (!res_r)
54
+       goto fail;
55
+
56
+   int screens = xcb_randr_get_screen_resources_crtcs_length(res_r);
57
+   if (screen < 0 || screen >= screens)
58
+       goto fail;
59
+
60
+   xcb_randr_crtc_t *crtc = xcb_randr_get_screen_resources_crtcs(res_r);
61
+
62
+   xcb_randr_get_crtc_info_cookie_t crtc_c;
63
+   xcb_randr_get_crtc_info_reply_t *crtc_r;
64
+
65
+   crtc_c = xcb_randr_get_crtc_info(xcb, *(crtc + screen), 0);
66
+   crtc_r = xcb_randr_get_crtc_info_reply(xcb, crtc_c, 0);
67
+   if (!crtc_r)
68
+       goto fail;
69
+
70
+   *x = crtc_r->x;
71
+   *y = crtc_r->y;
72
+   *w = crtc_r->width;
73
+   *h = crtc_r->height;
74
+
75
+   if (rscreen)
76
+       *rscreen = xscreen;
77
+
78
+   return 0;
79
+
80
+fail:
81
+   *x = *y = *w = *h = 0;
82
+   return -1;
83
+}
84
+
85
 int x11_screen_geo(xcb_connection_t *xcb, int_fast32_t screen,
86
        int_fast32_t *w, int_fast32_t *h)
87
 {
88
obs-studio-23.1.0.tar.xz/plugins/linux-capture/xhelpers.h -> obs-studio-23.2.0.tar.xz/plugins/linux-capture/xhelpers.h Changed
41
 
1
@@ -65,6 +65,39 @@
2
        int_fast32_t *w, int_fast32_t *h);
3
 
4
 /**
5
+ * Check for Randr extension
6
+ *
7
+ * @return true if randr is available which means it's active.
8
+ */
9
+bool randr_is_active(xcb_connection_t *xcb);
10
+
11
+/**
12
+ * Get the number of Randr screens
13
+ *
14
+ * @return number of screens
15
+ */
16
+int randr_screen_count(xcb_connection_t *xcb);
17
+
18
+/**
19
+ * Get screen geometry for a Rand crtc (screen)
20
+ *
21
+ * @note On error the passed coordinates/sizes will be set to 0.
22
+ *
23
+ * @param xcb xcb connection
24
+ * @param screen screen number to get geometry for
25
+ * @param x x-coordinate of the screen
26
+ * @param y y-coordinate of the screen
27
+ * @param w width of the screen
28
+ * @param h height of the screen
29
+ *
30
+ * @return < 0 on error
31
+ */
32
+int randr_screen_geo(xcb_connection_t *xcb, int_fast32_t screen,
33
+       int_fast32_t *x, int_fast32_t *y,
34
+       int_fast32_t *w, int_fast32_t *h,
35
+       xcb_screen_t **rscreen);
36
+
37
+/**
38
  * Get screen geometry for a X11 screen
39
  *
40
  * @note On error the passed sizes will be set to 0.
41
obs-studio-23.1.0.tar.xz/plugins/linux-capture/xshm-input.c -> obs-studio-23.2.0.tar.xz/plugins/linux-capture/xshm-input.c Changed
78
 
1
@@ -18,6 +18,7 @@
2
 #include <stdio.h>
3
 #include <stdlib.h>
4
 #include <inttypes.h>
5
+#include <xcb/randr.h>
6
 #include <xcb/shm.h>
7
 #include <xcb/xfixes.h>
8
 #include <xcb/xinerama.h>
9
@@ -50,6 +51,7 @@
10
 
11
    bool             show_cursor;
12
    bool             use_xinerama;
13
+   bool             use_randr;
14
    bool             advanced;
15
 };
16
 
17
@@ -83,6 +85,9 @@
18
    if (!xcb_get_extension_data(xcb, &xcb_xinerama_id)->present)
19
        blog(LOG_INFO, "Missing Xinerama extension !");
20
 
21
+   if (!xcb_get_extension_data(xcb, &xcb_randr_id)->present)
22
+       blog(LOG_INFO, "Missing Randr extension !");
23
+
24
    return ok;
25
 }
26
 
27
@@ -96,7 +101,15 @@
28
    int_fast32_t old_width = data->width;
29
    int_fast32_t old_height = data->height;
30
 
31
-   if (data->use_xinerama) {
32
+   if (data->use_randr) {
33
+       if (randr_screen_geo(data->xcb, data->screen_id,
34
+           &data->x_org, &data->y_org,
35
+           &data->width, &data->height,
36
+           &data->xcb_screen) < 0) {
37
+           return -1;
38
+       }
39
+   }
40
+   else if (data->use_xinerama) {
41
        if (xinerama_screen_geo(data->xcb, data->screen_id,
42
            &data->x_org, &data->y_org,
43
            &data->width, &data->height) < 0) {
44
@@ -189,6 +202,7 @@
45
    if (!xshm_check_extensions(data->xcb))
46
        goto fail;
47
 
48
+   data->use_randr = randr_is_active(data->xcb) ? true : false;
49
    data->use_xinerama = xinerama_is_active(data->xcb) ? true : false;
50
 
51
    if (xshm_update_geometry(data) < 0) {
52
@@ -287,16 +301,21 @@
53
 
54
    struct dstr screen_info;
55
    dstr_init(&screen_info);
56
+   bool randr = randr_is_active(xcb);
57
    bool xinerama = xinerama_is_active(xcb);
58
-   int_fast32_t count = (xinerama) ?
59
-           xinerama_screen_count(xcb) :
60
-           xcb_setup_roots_length(xcb_get_setup(xcb));
61
+   int_fast32_t count = (randr) ?
62
+           randr_screen_count(xcb) :
63
+           (xinerama) ?
64
+               xinerama_screen_count(xcb) :
65
+               xcb_setup_roots_length(xcb_get_setup(xcb));
66
 
67
    for (int_fast32_t i = 0; i < count; ++i) {
68
        int_fast32_t x, y, w, h;
69
        x = y = w = h = 0;
70
 
71
-       if (xinerama)
72
+       if (randr)
73
+           randr_screen_geo(xcb, i, &x, &y, &w, &h, NULL);
74
+       else if (xinerama)
75
            xinerama_screen_geo(xcb, i, &x, &y, &w, &h);
76
        else
77
            x11_screen_geo(xcb, i, &w, &h);
78
obs-studio-23.1.0.tar.xz/plugins/linux-jack/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/linux-jack/data/locale/de-DE.ini Changed
8
 
1
@@ -1,4 +1,4 @@
2
-StartJACKServer="JACK Server starten"
3
+StartJACKServer="JACK-Server starten"
4
 Channels="Anzahl der Kanäle"
5
-JACKInput="JACK-Eingang-Client"
6
+JACKInput="JACK-Eingabe-Client"
7
 
8
obs-studio-23.2.0.tar.xz/plugins/linux-jack/data/locale/ur-PK.ini Added
6
 
1
@@ -0,0 +1,4 @@
2
+StartJACKServer="جیک کا آغاز"
3
+Channels="چینلز کی تعداد"
4
+JACKInput="وصول کار جیک ان پٹ"
5
+
6
obs-studio-23.1.0.tar.xz/plugins/linux-pulseaudio/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/linux-pulseaudio/data/locale/de-DE.ini Changed
7
 
1
@@ -1,4 +1,4 @@
2
-PulseInput="Audio Eingabe Aufnahme (PulseAudio)"
3
+PulseInput="Audioeingabeaufnahme (PulseAudio)"
4
 PulseOutput="Audioausgabeaufnahme (PulseAudio)"
5
 Device="Gerät"
6
 
7
obs-studio-23.1.0.tar.xz/plugins/linux-pulseaudio/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/plugins/linux-pulseaudio/data/locale/ka-GE.ini Changed
7
 
1
@@ -1,4 +1,4 @@
2
 PulseInput="შემავალი ხმოვანი სიგნალის ჩაწერა (PulseAudio)"
3
-PulseOutput="გამომავალი ხმოვანი სიგნალის ჩაწერა (PulseAudio)"
4
+PulseOutput="გამოტანილი ხმის ჩაწერა (PulseAudio)"
5
 Device="მოწყობილობა"
6
 
7
obs-studio-23.1.0.tar.xz/plugins/linux-v4l2/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/linux-v4l2/data/locale/da-DK.ini Changed
16
 
1
@@ -1,4 +1,4 @@
2
-V4L2Input="Videooptagelsesenhed (V4L2)"
3
+V4L2Input="Videooptageenhed (V4L2)"
4
 Device="Enhed"
5
 Input="Input"
6
 VideoFormat="Videoformat"
7
@@ -6,7 +6,7 @@
8
 DVTiming="DV-timing"
9
 Resolution="Opløsning"
10
 FrameRate="Billedhastighed"
11
-LeaveUnchanged="Lad være uændret"
12
+LeaveUnchanged="Behold uændret"
13
 UseBuffering="Benyt buffering"
14
 ColorRange="Farveområde"
15
 ColorRange.Partial="Delvist"
16
obs-studio-23.1.0.tar.xz/plugins/linux-v4l2/data/locale/sk-SK.ini -> obs-studio-23.2.0.tar.xz/plugins/linux-v4l2/data/locale/sk-SK.ini Changed
9
 
1
@@ -8,4 +8,7 @@
2
 FrameRate="Frekvencia snímok"
3
 LeaveUnchanged="Ponechať bez zmeny"
4
 UseBuffering="Použiť vyrovnávaciu pamäť"
5
+ColorRange="Farebný rozsah"
6
+ColorRange.Partial="Čiastočný"
7
+ColorRange.Full="Plný"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/linux-v4l2/data/locale/tr-TR.ini -> obs-studio-23.2.0.tar.xz/plugins/linux-v4l2/data/locale/tr-TR.ini Changed
9
 
1
@@ -8,4 +8,7 @@
2
 FrameRate="Kare Hızı"
3
 LeaveUnchanged="Değişmeden Bırak"
4
 UseBuffering="Arabelleğe Almayı Kullan"
5
+ColorRange="Renk Aralığı"
6
+ColorRange.Partial="Kısmi"
7
+ColorRange.Full="Tam"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/mac-avcapture/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-avcapture/data/locale/da-DK.ini Changed
23
 
1
@@ -1,14 +1,14 @@
2
-AVCapture="Video optagelsesenhed"
3
+AVCapture="Videooptageenhed"
4
 Device="Enhed"
5
-UsePreset="Brug forudindstilling"
6
-Preset="Forudindstilling"
7
+UsePreset="Benyt forvalg"
8
+Preset="Forvalg"
9
 Buffering="Brug buffering"
10
-FrameRate="Billedfrekvens"
11
-InputFormat="Input format"
12
+FrameRate="Billedhastighed"
13
+InputFormat="Inputformat"
14
 ColorSpace="Farverum"
15
-VideoRange="Videoudstrækning"
16
+VideoRange="Videoområde"
17
 VideoRange.Partial="Delvis"
18
 VideoRange.Full="Fuld"
19
 Auto="Auto"
20
-Unknown="Ukendt($1)"
21
+Unknown="Ukendt ($1)"
22
 
23
obs-studio-23.1.0.tar.xz/plugins/mac-avcapture/data/locale/vi-VN.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-avcapture/data/locale/vi-VN.ini Changed
7
 
1
@@ -1,4 +1,5 @@
2
 Device="Thiết bị"
3
+UsePreset="Dùng mẫu có sẵn"
4
 Auto="Tự động"
5
 Unknown="Không xác định ($1)"
6
 
7
obs-studio-23.1.0.tar.xz/plugins/mac-capture/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-capture/data/locale/da-DK.ini Changed
18
 
1
@@ -1,11 +1,11 @@
2
-CoreAudio.InputCapture="Indfang lyd ind"
3
-CoreAudio.OutputCapture="Indfang lyd ud"
4
+CoreAudio.InputCapture="Lydinputoptagelse"
5
+CoreAudio.OutputCapture="Lydoutputoptagelse"
6
 CoreAudio.Device="Enhed"
7
 CoreAudio.Device.Default="Standard"
8
-DisplayCapture="Skærm optag"
9
+DisplayCapture="Skærmoptagelse"
10
 DisplayCapture.Display="Skærm"
11
-DisplayCapture.ShowCursor="Vis markøren"
12
-WindowCapture="Vindue indfang"
13
+DisplayCapture.ShowCursor="Vis markør"
14
+WindowCapture="Vinduesoptagelse"
15
 WindowCapture.ShowShadow="Vis vinduesskygge"
16
 WindowUtils.Window="Vindue"
17
 WindowUtils.ShowEmptyNames="Vis vinduer med tomme navne"
18
obs-studio-23.1.0.tar.xz/plugins/mac-capture/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-capture/data/locale/de-DE.ini Changed
21
 
1
@@ -1,14 +1,14 @@
2
-CoreAudio.InputCapture="Audio Eingabe Aufnahme"
3
+CoreAudio.InputCapture="Audioeingabeaufnahme"
4
 CoreAudio.OutputCapture="Audioausgabeaufnahme"
5
 CoreAudio.Device="Gerät"
6
 CoreAudio.Device.Default="Standard"
7
-DisplayCapture="Monitoraufnahme"
8
-DisplayCapture.Display="Monitor"
9
+DisplayCapture="Bildschirmaufnahme"
10
+DisplayCapture.Display="Bildschirm"
11
 DisplayCapture.ShowCursor="Mauszeiger anzeigen"
12
 WindowCapture="Fensteraufnahme"
13
-WindowCapture.ShowShadow="Zeige Fensterschatten"
14
+WindowCapture.ShowShadow="Fensterschatten anzeigen"
15
 WindowUtils.Window="Fenster"
16
-WindowUtils.ShowEmptyNames="Zeige Fenster mit leeren Namen"
17
+WindowUtils.ShowEmptyNames="Fenster mit leeren Namen anzeigen"
18
 CropMode="Zuschneiden"
19
 CropMode.None="Keine"
20
 CropMode.Manual="Manuell"
21
obs-studio-23.1.0.tar.xz/plugins/mac-capture/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-capture/data/locale/ka-GE.ini Changed
8
 
1
@@ -1,5 +1,5 @@
2
 CoreAudio.InputCapture="შემავალი ხმოვანი სიგნალის ჩაწერა"
3
-CoreAudio.OutputCapture="გამომავალი ხმოვანი სიგნალის ჩაწერა"
4
+CoreAudio.OutputCapture="გამოტანილი ხმის ჩაწერა"
5
 CoreAudio.Device="მოწყობილობა"
6
 CoreAudio.Device.Default="ნაგულისხმევი"
7
 DisplayCapture="ეკრანის გადაღება"
8
obs-studio-23.1.0.tar.xz/plugins/mac-syphon/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-syphon/data/locale/da-DK.ini Changed
13
 
1
@@ -1,9 +1,9 @@
2
 Syphon="Syphon-klient"
3
 Source="Kilde"
4
 LaunchSyphonInject="Kør SyphonInject"
5
-Inject="Indsæt"
6
+Inject="Injicér"
7
 Application="Program"
8
-SyphonLicense="Syphon licens"
9
+SyphonLicense="Syphon-licens"
10
 Crop="Beskær"
11
 Crop.origin.x="Beskær venstre"
12
 Crop.origin.y="Beskær top"
13
obs-studio-23.1.0.tar.xz/plugins/mac-syphon/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-syphon/data/locale/de-DE.ini Changed
8
 
1
@@ -9,5 +9,5 @@
2
 Crop.origin.y="Oben abschneiden"
3
 Crop.size.width="Rechts abschneiden"
4
 Crop.size.height="Unten abschneiden"
5
-AllowTransparency="Erlaube Transparenz"
6
+AllowTransparency="Transparenz erlauben"
7
 
8
obs-studio-23.1.0.tar.xz/plugins/mac-syphon/data/locale/nb-NO.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-syphon/data/locale/nb-NO.ini Changed
6
 
1
@@ -1,3 +1,4 @@
2
+Syphon="Syphon-klient"
3
 Source="Kilde"
4
 LaunchSyphonInject="Start SyphonInject"
5
 Inject="Injiser"
6
obs-studio-23.1.0.tar.xz/plugins/mac-syphon/data/locale/sk-SK.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-syphon/data/locale/sk-SK.ini Changed
6
 
1
@@ -1,3 +1,4 @@
2
+Syphon="Syphon klient"
3
 Source="Zdroj"
4
 LaunchSyphonInject="Zapnúť SyphonInject"
5
 Inject="Zaviesť"
6
obs-studio-23.1.0.tar.xz/plugins/mac-syphon/data/locale/tr-TR.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-syphon/data/locale/tr-TR.ini Changed
6
 
1
@@ -1,3 +1,4 @@
2
+Syphon="Syphon İstemcisi"
3
 Source="Kaynak"
4
 LaunchSyphonInject="SyphonInject'i Başlat"
5
 Inject="Araya gir"
6
obs-studio-23.1.0.tar.xz/plugins/mac-syphon/data/locale/vi-VN.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-syphon/data/locale/vi-VN.ini Changed
11
 
1
@@ -1,3 +1,9 @@
2
 Source="Nguồn"
3
 Application="Ứng dụng"
4
+Crop="Cắt"
5
+Crop.origin.x="Cắt trái"
6
+Crop.origin.y="Cắt trên"
7
+Crop.size.width="Cắt phải"
8
+Crop.size.height="Cắt dưới"
9
+AllowTransparency="Cho phép trong suốt"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/mac-vth264/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-vth264/data/locale/da-DK.ini Changed
10
 
1
@@ -5,7 +5,7 @@
2
 UseMaxBitrate="Begræns bit-hastighed"
3
 MaxBitrate="Maks. bit-hastighed"
4
 MaxBitrateWindow="Maks. bit-hastighedsvindue (sekunder)"
5
-KeyframeIntervalSec="Keyframe interval (sekunder, 0= auto)"
6
+KeyframeIntervalSec="Keyframe-interval (sekunder, 0= auto)"
7
 Profile="Profil"
8
 None="(ingen)"
9
 DefaultEncoder="(Standard Encoder)"
10
obs-studio-23.1.0.tar.xz/plugins/mac-vth264/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/mac-vth264/data/locale/de-DE.ini Changed
22
 
1
@@ -1,14 +1,14 @@
2
-VTH264EncHW="Apple-VT-H264-Hardware-Codierer"
3
-VTH264EncSW="Apple-VT-H264-Software-Codierer"
4
-VTEncoder="VideoToolbox-Codierer"
5
+VTH264EncHW="Apple-VT-H264-Hardware-Kodierer"
6
+VTH264EncSW="Apple-VT-H264-Software-Kodierer"
7
+VTEncoder="VideoToolbox-Kodierer"
8
 Bitrate="Bitrate"
9
 UseMaxBitrate="Limitiere Bitrate"
10
-MaxBitrate="Maximale Bitrate"
11
-MaxBitrateWindow="Maximales Bitratefenster (Sekunden)"
12
+MaxBitrate="Max. Bitrate"
13
+MaxBitrateWindow="Maximales Bitratenfenster (Sekunden)"
14
 KeyframeIntervalSec="Keyframeintervall (Sekunden, 0 = auto)"
15
 Profile="Profil"
16
 None="(Nichts)"
17
-DefaultEncoder="(Standardcodierer)"
18
+DefaultEncoder="(Standardkodierer)"
19
 UseBFrames="B-Frames verwenden"
20
 
21
 
22
obs-studio-23.1.0.tar.xz/plugins/mac-vth264/encoder.c -> obs-studio-23.2.0.tar.xz/plugins/mac-vth264/encoder.c Changed
23
 
1
@@ -874,14 +874,18 @@
2
    obs_properties_t *props = obs_properties_create();
3
    obs_property_t *p;
4
 
5
-   obs_properties_add_int(props, "bitrate", TEXT_BITRATE, 50, 10000000, 1);
6
+   p = obs_properties_add_int(props, "bitrate",
7
+           TEXT_BITRATE, 50, 10000000, 50);
8
+   obs_property_int_set_suffix(p, " Kbps");
9
 
10
    p = obs_properties_add_bool(props, "limit_bitrate",
11
            TEXT_USE_MAX_BITRATE);
12
    obs_property_set_modified_callback(p, limit_bitrate_modified);
13
 
14
-   obs_properties_add_int(props, "max_bitrate", TEXT_MAX_BITRATE, 50,
15
-           10000000, 1);
16
+   p = obs_properties_add_int(props, "max_bitrate", TEXT_MAX_BITRATE, 50,
17
+           10000000, 50);
18
+   obs_property_int_set_suffix(p, " Kbps");
19
+
20
    obs_properties_add_float(props, "max_bitrate_window",
21
            TEXT_MAX_BITRATE_WINDOW, 0.10f, 10.0f, 0.25f);
22
 
23
obs-studio-23.1.0.tar.xz/plugins/obs-browser/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/plugins/obs-browser/CMakeLists.txt Changed
79
 
1
@@ -18,6 +18,12 @@
2
 option(EXPERIMENTAL_SHARED_TEXTURE_SUPPORT_ENABLED "Enable shared texture support for the browser plugin (Win32)" ON)
3
 option(BROWSER_PANEL_SUPPORT_ENABLED "Enables Qt web browser panel support" ON)
4
 
5
+if(NOT APPLE)
6
+   option(USE_QT_LOOP "Runs CEF on the main UI thread alongside Qt instead of in its own thread" OFF)
7
+else()
8
+   set(USE_QT_LOOP TRUE)
9
+endif()
10
+
11
 if(APPLE)
12
    option(BROWSER_DEPLOY "Marks full deployment of browser plugin" OFF)
13
    if(BROWSER_DEPLOY)
14
@@ -42,6 +48,24 @@
15
 list(APPEND obs-browser_LIBRARIES
16
    ${CEF_LIBRARIES})
17
 
18
+if(BROWSER_PANEL_SUPPORT_ENABLED OR USE_QT_LOOP)
19
+   if(DEFINED QTDIR${_lib_suffix})
20
+       list(APPEND CMAKE_PREFIX_PATH "${QTDIR${_lib_suffix}}")
21
+   elseif(DEFINED QTDIR)
22
+       list(APPEND CMAKE_PREFIX_PATH "${QTDIR}")
23
+   elseif(DEFINED ENV{QTDIR${_lib_suffix}})
24
+       list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR${_lib_suffix}}")
25
+   elseif(DEFINED ENV{QTDIR})
26
+       list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR}")
27
+   endif()
28
+
29
+   set(CMAKE_AUTOMOC TRUE)
30
+   find_package(Qt5Widgets REQUIRED)
31
+   list(APPEND obs-browser_LIBRARIES
32
+       Qt5::Widgets
33
+       )
34
+endif()
35
+
36
 if(MSVC)
37
    string(REPLACE "/MD" "/MT"
38
        "CMAKE_C_FLAGS"
39
@@ -92,19 +116,6 @@
40
 # only allow browser panels on win32 for now -- other operating systems
41
 # need more testing
42
 if(WIN32 AND BROWSER_PANEL_SUPPORT_ENABLED)
43
-   if(DEFINED QTDIR${_lib_suffix})
44
-       list(APPEND CMAKE_PREFIX_PATH "${QTDIR${_lib_suffix}}")
45
-   elseif(DEFINED QTDIR)
46
-       list(APPEND CMAKE_PREFIX_PATH "${QTDIR}")
47
-   elseif(DEFINED ENV{QTDIR${_lib_suffix}})
48
-       list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR${_lib_suffix}}")
49
-   elseif(DEFINED ENV{QTDIR})
50
-       list(APPEND CMAKE_PREFIX_PATH "$ENV{QTDIR}")
51
-   endif()
52
-
53
-   set(CMAKE_AUTOMOC TRUE)
54
-   find_package(Qt5Widgets REQUIRED)
55
-
56
    list(APPEND obs-browser_SOURCES
57
        panel/browser-panel.cpp
58
        panel/browser-panel-client.cpp
59
@@ -114,9 +125,6 @@
60
        panel/browser-panel-client.hpp
61
        panel/browser-panel-internal.hpp
62
        )
63
-   list(APPEND obs-browser_LIBRARIES
64
-       Qt5::Widgets
65
-       )
66
 endif()
67
 
68
 add_library(obs-browser MODULE
69
@@ -127,6 +135,9 @@
70
 target_link_libraries(obs-browser
71
    ${obs-browser_LIBRARIES}
72
    )
73
+if(USE_QT_LOOP)
74
+   target_compile_definitions(obs-browser PRIVATE USE_QT_LOOP)
75
+endif()
76
 
77
 # ----------------------------------------------------------------------------
78
 
79
obs-studio-23.1.0.tar.xz/plugins/obs-browser/browser-app.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-browser/browser-app.cpp Changed
95
 
1
@@ -24,6 +24,13 @@
2
 #include <windows.h>
3
 #endif
4
 
5
+#ifdef USE_QT_LOOP
6
+#include <util/base.h>
7
+#include <util/platform.h>
8
+#include <util/threading.h>
9
+#include <QTimer>
10
+#endif
11
+
12
 using namespace json11;
13
 
14
 CefRefPtr<CefRenderProcessHandler> BrowserApp::GetRenderProcessHandler()
15
@@ -265,3 +272,79 @@
16
 
17
    return true;
18
 }
19
+
20
+#ifdef USE_QT_LOOP
21
+Q_DECLARE_METATYPE(MessageTask);
22
+MessageObject messageObject;
23
+
24
+void QueueBrowserTask(CefRefPtr<CefBrowser> browser, BrowserFunc func)
25
+{
26
+   std::lock_guard<std::mutex> lock(messageObject.browserTaskMutex);
27
+   messageObject.browserTasks.emplace_back(browser, func);
28
+
29
+   QMetaObject::invokeMethod(&messageObject, "ExecuteNextBrowserTask",
30
+           Qt::QueuedConnection);
31
+}
32
+
33
+bool MessageObject::ExecuteNextBrowserTask()
34
+{
35
+   Task nextTask;
36
+   {
37
+       std::lock_guard<std::mutex> lock(browserTaskMutex);
38
+       if (!browserTasks.size())
39
+           return false;
40
+
41
+       nextTask = browserTasks[0];
42
+       browserTasks.pop_front();
43
+   }
44
+
45
+   nextTask.func(nextTask.browser);
46
+   return true;
47
+}
48
+
49
+void MessageObject::ExecuteTask(MessageTask task)
50
+{
51
+   task();
52
+}
53
+
54
+void MessageObject::DoCefMessageLoop(int ms)
55
+{
56
+   if (ms)
57
+       QTimer::singleShot((int)ms + 2, [] () {CefDoMessageLoopWork();});
58
+   else
59
+       CefDoMessageLoopWork();
60
+}
61
+
62
+void MessageObject::Process()
63
+{
64
+   CefDoMessageLoopWork();
65
+}
66
+
67
+void ProcessCef()
68
+{
69
+   QMetaObject::invokeMethod(&messageObject, "DoCefMessageLoop",
70
+           Qt::QueuedConnection,
71
+           Q_ARG(int, (int)0));
72
+}
73
+
74
+#define MAX_DELAY (1000 / 30)
75
+
76
+void BrowserApp::OnScheduleMessagePumpWork(int64 delay_ms)
77
+{
78
+   if (delay_ms < 0)
79
+       delay_ms = 0;
80
+   else if (delay_ms > MAX_DELAY)
81
+       delay_ms = MAX_DELAY;
82
+
83
+   if (!frameTimer.isActive()) {
84
+       QObject::connect(&frameTimer, &QTimer::timeout,
85
+               &messageObject, &MessageObject::Process);
86
+       frameTimer.setSingleShot(false);
87
+       frameTimer.start(33);
88
+   }
89
+
90
+   QMetaObject::invokeMethod(&messageObject, "DoCefMessageLoop",
91
+           Qt::QueuedConnection,
92
+           Q_ARG(int, (int)delay_ms));
93
+}
94
+#endif
95
obs-studio-23.1.0.tar.xz/plugins/obs-browser/browser-app.hpp -> obs-studio-23.2.0.tar.xz/plugins/obs-browser/browser-app.hpp Changed
62
 
1
@@ -19,8 +19,49 @@
2
 #pragma once
3
 
4
 #include <map>
5
+#include <functional>
6
 #include "cef-headers.hpp"
7
 
8
+typedef std::function<void(CefRefPtr<CefBrowser>)> BrowserFunc;
9
+
10
+#ifdef USE_QT_LOOP
11
+#include <QObject>
12
+#include <QTimer>
13
+#include <mutex>
14
+#include <deque>
15
+
16
+typedef std::function<void()> MessageTask;
17
+
18
+class MessageObject : public QObject {
19
+   Q_OBJECT
20
+
21
+   friend void QueueBrowserTask(CefRefPtr<CefBrowser> browser,
22
+           BrowserFunc func);
23
+
24
+   struct Task {
25
+       CefRefPtr<CefBrowser> browser;
26
+       BrowserFunc func;
27
+
28
+       inline Task() {}
29
+       inline Task(CefRefPtr<CefBrowser> browser_, BrowserFunc func_)
30
+           : browser(browser_),
31
+             func(func_)
32
+       {}
33
+   };
34
+
35
+   std::mutex browserTaskMutex;
36
+   std::deque<Task> browserTasks;
37
+
38
+public slots:
39
+   bool ExecuteNextBrowserTask();
40
+   void ExecuteTask(MessageTask task);
41
+   void DoCefMessageLoop(int ms);
42
+   void Process();
43
+};
44
+
45
+extern void QueueBrowserTask(CefRefPtr<CefBrowser> browser, BrowserFunc func);
46
+#endif
47
+
48
 class BrowserApp : public CefApp,
49
                    public CefRenderProcessHandler,
50
                    public CefBrowserProcessHandler,
51
@@ -64,5 +105,10 @@
52
            CefRefPtr<CefV8Value> &retval,
53
            CefString &exception) override;
54
 
55
+#ifdef USE_QT_LOOP
56
+   virtual void OnScheduleMessagePumpWork(int64 delay_ms) override;
57
+   QTimer frameTimer;
58
+#endif
59
+
60
    IMPLEMENT_REFCOUNTING(BrowserApp);
61
 };
62
obs-studio-23.1.0.tar.xz/plugins/obs-browser/browser-version.h -> obs-studio-23.2.0.tar.xz/plugins/obs-browser/browser-version.h Changed
12
 
1
@@ -1,8 +1,8 @@
2
 #pragma once
3
 
4
 #define OBS_BROWSER_VERSION_MAJOR 2
5
-#define OBS_BROWSER_VERSION_MINOR 3
6
-#define OBS_BROWSER_VERSION_PATCH 1
7
+#define OBS_BROWSER_VERSION_MINOR 4
8
+#define OBS_BROWSER_VERSION_PATCH 0
9
 
10
 #ifndef MAKE_SEMANTIC_VERSION
11
 #define MAKE_SEMANTIC_VERSION(major, minor, patch) \
12
obs-studio-23.1.0.tar.xz/plugins/obs-browser/obs-browser-plugin.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-browser/obs-browser-plugin.cpp Changed
168
 
1
@@ -23,6 +23,7 @@
2
 #include <util/dstr.hpp>
3
 #include <obs-module.h>
4
 #include <obs.hpp>
5
+#include <functional>
6
 #include <thread>
7
 #include <mutex>
8
 
9
@@ -42,6 +43,11 @@
10
 #include <d3d11.h>
11
 #endif
12
 
13
+#ifdef USE_QT_LOOP
14
+#include <QApplication>
15
+#include <QThread>
16
+#endif
17
+
18
 OBS_DECLARE_MODULE()
19
 OBS_MODULE_USE_DEFAULT_LOCALE("obs-browser", "en-US")
20
 
21
@@ -49,6 +55,7 @@
22
 using namespace json11;
23
 
24
 static thread manager_thread;
25
+static bool manager_initialized = false;
26
 os_event_t *cef_started_event = nullptr;
27
 
28
 static int adapterCount = 0;
29
@@ -60,12 +67,28 @@
30
 
31
 /* ========================================================================= */
32
 
33
+#ifdef USE_QT_LOOP
34
+extern MessageObject messageObject;
35
+#endif
36
+
37
 class BrowserTask : public CefTask {
38
 public:
39
    std::function<void()> task;
40
 
41
    inline BrowserTask(std::function<void()> task_) : task(task_) {}
42
-   virtual void Execute() override {task();}
43
+   virtual void Execute() override
44
+   {
45
+#ifdef USE_QT_LOOP
46
+       /* you have to put the tasks on the Qt event queue after this
47
+        * call otherwise the CEF message pump may stop functioning
48
+        * correctly, it's only supposed to take 10ms max */
49
+       QMetaObject::invokeMethod(&messageObject, "ExecuteTask",
50
+               Qt::QueuedConnection,
51
+               Q_ARG(MessageTask, task));
52
+#else
53
+       task();
54
+#endif
55
+   }
56
 
57
    IMPLEMENT_REFCOUNTING(BrowserTask);
58
 };
59
@@ -94,7 +117,7 @@
60
 #if EXPERIMENTAL_SHARED_TEXTURE_SUPPORT_ENABLED
61
    obs_data_set_default_bool(settings, "fps_custom", false);
62
 #else
63
-   obs_data_set_bool(settings, "fps_custom", true);
64
+   obs_data_set_default_bool(settings, "fps_custom", true);
65
 #endif
66
    obs_data_set_default_bool(settings, "shutdown", false);
67
    obs_data_set_default_bool(settings, "restart_when_active", false);
68
@@ -182,7 +205,9 @@
69
    return props;
70
 }
71
 
72
-static void BrowserManagerThread(void)
73
+static CefRefPtr<BrowserApp> app;
74
+
75
+static void BrowserInit(void)
76
 {
77
    string path = obs_get_module_binary_path(obs_current_module());
78
    path = path.substr(0, path.find_last_of('/') + 1);
79
@@ -201,6 +226,11 @@
80
    settings.windowless_rendering_enabled = true;
81
    settings.no_sandbox = true;
82
 
83
+#ifdef USE_QT_LOOP
84
+   settings.external_message_pump = true;
85
+   settings.multi_threaded_message_loop = false;
86
+#endif
87
+
88
 #if defined(__APPLE__) && !defined(BROWSER_DEPLOY)
89
    CefString(&settings.framework_dir_path) = CEF_LIBRARY;
90
 #endif
91
@@ -233,21 +263,45 @@
92
    }
93
 #endif
94
 
95
-   CefRefPtr<BrowserApp> app(new BrowserApp(tex_sharing_avail));
96
+   app = new BrowserApp(tex_sharing_avail);
97
    CefExecuteProcess(args, app, nullptr);
98
    CefInitialize(args, settings, app, nullptr);
99
    CefRegisterSchemeHandlerFactory("http", "absolute",
100
            new BrowserSchemeHandlerFactory());
101
    os_event_signal(cef_started_event);
102
-   CefRunMessageLoop();
103
+}
104
+
105
+#ifdef USE_QT_LOOP
106
+extern MessageObject messageObject;
107
+#endif
108
+
109
+static void BrowserShutdown(void)
110
+{
111
+#ifdef USE_QT_LOOP
112
+   while (messageObject.ExecuteNextBrowserTask());
113
+   CefDoMessageLoopWork();
114
+#endif
115
    CefShutdown();
116
+   app = nullptr;
117
 }
118
 
119
+#ifndef USE_QT_LOOP
120
+static void BrowserManagerThread(void)
121
+{
122
+   BrowserInit();
123
+   CefRunMessageLoop();
124
+   BrowserShutdown();
125
+}
126
+#endif
127
+
128
 extern "C" EXPORT void obs_browser_initialize(void)
129
 {
130
-   static bool manager_initialized = false;
131
    if (!os_atomic_set_bool(&manager_initialized, true)) {
132
+#ifdef USE_QT_LOOP
133
+       BrowserInit();
134
+#else
135
        manager_thread = thread(BrowserManagerThread);
136
+#endif
137
    }
138
 }
139
 
140
@@ -462,6 +516,10 @@
141
    blog(LOG_INFO, "[obs-browser]: Version %s",
142
            OBS_BROWSER_VERSION_STRING);
143
 
144
+#ifdef USE_QT_LOOP
145
+   qRegisterMetaType<MessageTask>("MessageTask");
146
+#endif
147
+
148
    os_event_init(&cef_started_event, OS_EVENT_TYPE_MANUAL);
149
 
150
    CefEnableHighDPISupport();
151
@@ -500,12 +558,16 @@
152
 
153
 void obs_module_unload(void)
154
 {
155
+#ifdef USE_QT_LOOP
156
+   BrowserShutdown();
157
+#else
158
    if (manager_thread.joinable()) {
159
        while (!QueueCEFTask([] () {CefQuitMessageLoop();}))
160
            os_sleep_ms(5);
161
 
162
        manager_thread.join();
163
    }
164
+#endif
165
 
166
    os_event_destroy(cef_started_event);
167
 }
168
obs-studio-23.1.0.tar.xz/plugins/obs-browser/obs-browser-source.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-browser/obs-browser-source.cpp Changed
211
 
1
@@ -24,6 +24,12 @@
2
 #include <thread>
3
 #include <mutex>
4
 
5
+#ifdef USE_QT_LOOP
6
+#include <QApplication>
7
+#include <QEventLoop>
8
+#include <QThread>
9
+#endif
10
+
11
 using namespace std;
12
 
13
 extern bool QueueCEFTask(std::function<void()> task);
14
@@ -54,24 +60,37 @@
15
    *p_prev_next = next;
16
 }
17
 
18
-void BrowserSource::ExecuteOnBrowser(std::function<void()> func, bool async)
19
+void BrowserSource::ExecuteOnBrowser(BrowserFunc func, bool async)
20
 {
21
    if (!async) {
22
+#ifdef USE_QT_LOOP
23
+       if (QThread::currentThread() == qApp->thread()) {
24
+           if (!!cefBrowser)
25
+               func(cefBrowser);
26
+           return;
27
+       }
28
+#endif
29
        os_event_t *finishedEvent;
30
        os_event_init(&finishedEvent, OS_EVENT_TYPE_AUTO);
31
        bool success = QueueCEFTask([&] () {
32
            if (!!cefBrowser)
33
-               func();
34
+               func(cefBrowser);
35
            os_event_signal(finishedEvent);
36
        });
37
        if (success)
38
            os_event_wait(finishedEvent);
39
        os_event_destroy(finishedEvent);
40
    } else {
41
-       QueueCEFTask([this, func] () {
42
-           if (!!cefBrowser)
43
-               func();
44
-       });
45
+       CefRefPtr<CefBrowser> browser = cefBrowser;
46
+       if (!!browser) {
47
+#ifdef USE_QT_LOOP
48
+           QueueBrowserTask(cefBrowser, func);
49
+#else
50
+           QueueCEFTask([=] () {
51
+               func(browser);
52
+           });
53
+#endif
54
+       }
55
    }
56
 }
57
 
58
@@ -131,7 +150,7 @@
59
 
60
 void BrowserSource::DestroyBrowser(bool async)
61
 {
62
-   ExecuteOnBrowser([this] ()
63
+   ExecuteOnBrowser([] (CefRefPtr<CefBrowser> cefBrowser)
64
    {
65
        CefRefPtr<CefClient> client =
66
                cefBrowser->GetHost()->GetClient();
67
@@ -148,8 +167,9 @@
68
         */
69
        cefBrowser->GetHost()->WasHidden(true);
70
        cefBrowser->GetHost()->CloseBrowser(true);
71
-       cefBrowser = nullptr;
72
    }, async);
73
+
74
+   cefBrowser = nullptr;
75
 }
76
 
77
 void BrowserSource::SendMouseClick(
78
@@ -162,7 +182,7 @@
79
    int32_t  x         = event->x;
80
    int32_t  y         = event->y;
81
 
82
-   ExecuteOnBrowser([this, modifiers, x, y, type, mouse_up, click_count] ()
83
+   ExecuteOnBrowser([=] (CefRefPtr<CefBrowser> cefBrowser)
84
    {
85
        CefMouseEvent e;
86
        e.modifiers = modifiers;
87
@@ -183,7 +203,7 @@
88
    int32_t  x         = event->x;
89
    int32_t  y         = event->y;
90
 
91
-   ExecuteOnBrowser([this, modifiers, x, y, mouse_leave] ()
92
+   ExecuteOnBrowser([=] (CefRefPtr<CefBrowser> cefBrowser)
93
    {
94
        CefMouseEvent e;
95
        e.modifiers = modifiers;
96
@@ -202,7 +222,7 @@
97
    int32_t  x         = event->x;
98
    int32_t  y         = event->y;
99
 
100
-   ExecuteOnBrowser([this, modifiers, x, y, x_delta, y_delta] ()
101
+   ExecuteOnBrowser([=] (CefRefPtr<CefBrowser> cefBrowser)
102
    {
103
        CefMouseEvent e;
104
        e.modifiers = modifiers;
105
@@ -214,7 +234,7 @@
106
 
107
 void BrowserSource::SendFocus(bool focus)
108
 {
109
-   ExecuteOnBrowser([this, focus] ()
110
+   ExecuteOnBrowser([=] (CefRefPtr<CefBrowser> cefBrowser)
111
    {
112
        cefBrowser->GetHost()->SendFocusEvent(focus);
113
    }, true);
114
@@ -228,7 +248,7 @@
115
    std::string text        = event->text;
116
    uint32_t    native_vkey = event->native_vkey;
117
 
118
-   ExecuteOnBrowser([this, modifiers, text, native_vkey, key_up] ()
119
+   ExecuteOnBrowser([=] (CefRefPtr<CefBrowser> cefBrowser)
120
    {
121
        CefKeyEvent e;
122
        e.windows_key_code = native_vkey;
123
@@ -258,7 +278,7 @@
124
 void BrowserSource::SetShowing(bool showing)
125
 {
126
    if (!showing) {
127
-       ExecuteOnBrowser([this] ()
128
+       ExecuteOnBrowser([] (CefRefPtr<CefBrowser> cefBrowser)
129
        {
130
            cefBrowser->GetHost()->WasHidden(true);
131
        }, true);
132
@@ -271,7 +291,7 @@
133
            DestroyBrowser(true);
134
        }
135
    } else {
136
-       ExecuteOnBrowser([this, showing] ()
137
+       ExecuteOnBrowser([=] (CefRefPtr<CefBrowser> cefBrowser)
138
        {
139
            CefRefPtr<CefProcessMessage> msg =
140
                CefProcessMessage::Create("Visibility");
141
@@ -282,7 +302,7 @@
142
    }
143
 
144
    if (showing) {
145
-       ExecuteOnBrowser([this] ()
146
+       ExecuteOnBrowser([] (CefRefPtr<CefBrowser> cefBrowser)
147
        {
148
            cefBrowser->GetHost()->WasHidden(false);
149
            cefBrowser->GetHost()->Invalidate(PET_VIEW);
150
@@ -292,7 +312,7 @@
151
 
152
 void BrowserSource::SetActive(bool active)
153
 {
154
-   ExecuteOnBrowser([this, active] ()
155
+   ExecuteOnBrowser([=] (CefRefPtr<CefBrowser> cefBrowser)
156
    {
157
        CefRefPtr<CefProcessMessage> msg =
158
            CefProcessMessage::Create("Active");
159
@@ -304,7 +324,7 @@
160
 
161
 void BrowserSource::Refresh()
162
 {
163
-   ExecuteOnBrowser([this] ()
164
+   ExecuteOnBrowser([] (CefRefPtr<CefBrowser> cefBrowser)
165
    {
166
        cefBrowser->ReloadIgnoreCache();
167
    }, true);
168
@@ -314,7 +334,7 @@
169
 inline void BrowserSource::SignalBeginFrame()
170
 {
171
    if (reset_frame) {
172
-       ExecuteOnBrowser([this] ()
173
+       ExecuteOnBrowser([] (CefRefPtr<CefBrowser> cefBrowser)
174
        {
175
            cefBrowser->GetHost()->SendExternalBeginFrame();
176
        }, true);
177
@@ -390,6 +410,8 @@
178
 #endif
179
 }
180
 
181
+extern void ProcessCef();
182
+
183
 void BrowserSource::Render()
184
 {
185
    bool flip = false;
186
@@ -406,10 +428,12 @@
187
 
188
 #if EXPERIMENTAL_SHARED_TEXTURE_SUPPORT_ENABLED
189
    SignalBeginFrame();
190
+#elif USE_QT_LOOP
191
+   ProcessCef();
192
 #endif
193
 }
194
 
195
-static void ExecuteOnAllBrowsers(function<void(CefRefPtr<CefBrowser>)> func)
196
+static void ExecuteOnAllBrowsers(BrowserFunc func)
197
 {
198
    lock_guard<mutex> lock(browser_list_mutex);
199
    
200
@@ -417,9 +441,7 @@
201
    while (bs) {
202
        BrowserSource *bsw =
203
            reinterpret_cast<BrowserSource *>(bs);
204
-       CefRefPtr<CefBrowser> cefBrowser = bsw->cefBrowser;
205
-       if (cefBrowser)
206
-           bsw->ExecuteOnBrowser([=] () {func(cefBrowser);}, true);
207
+       bsw->ExecuteOnBrowser(func, true);
208
        bs = bs->next;
209
    }
210
 }
211
obs-studio-23.1.0.tar.xz/plugins/obs-browser/obs-browser-source.hpp -> obs-studio-23.2.0.tar.xz/plugins/obs-browser/obs-browser-source.hpp Changed
18
 
1
@@ -22,6 +22,7 @@
2
 
3
 #include "cef-headers.hpp"
4
 #include "browser-config.h"
5
+#include "browser-app.hpp"
6
 
7
 #include <functional>
8
 #include <string>
9
@@ -68,7 +69,7 @@
10
 
11
    bool CreateBrowser();
12
    void DestroyBrowser(bool async = false);
13
-   void ExecuteOnBrowser(std::function<void()> func, bool async = false);
14
+   void ExecuteOnBrowser(BrowserFunc func, bool async = false);
15
 
16
    /* ---------------------------- */
17
 
18
obs-studio-23.1.0.tar.xz/plugins/obs-browser/panel/browser-panel.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-browser/panel/browser-panel.cpp Changed
121
 
1
@@ -1,9 +1,16 @@
2
 #include "browser-panel-internal.hpp"
3
 #include "browser-panel-client.hpp"
4
 #include "cef-headers.hpp"
5
+#include "browser-app.hpp"
6
 
7
 #include <QWindow>
8
 
9
+#ifdef USE_QT_LOOP
10
+#include <QApplication>
11
+#include <QEventLoop>
12
+#include <QThread>
13
+#endif
14
+
15
 #include <obs-module.h>
16
 #include <util/threading.h>
17
 #include <util/base.h>
18
@@ -129,23 +136,6 @@
19
 
20
 /* ------------------------------------------------------------------------- */
21
 
22
-static void ExecuteOnBrowser(std::function<void()> func, bool async = false)
23
-{
24
-   if (!async) {
25
-       os_event_t *finishedEvent;
26
-       os_event_init(&finishedEvent, OS_EVENT_TYPE_AUTO);
27
-       bool success = QueueCEFTask([&] () {
28
-           func();
29
-           os_event_signal(finishedEvent);
30
-       });
31
-       if (success)
32
-           os_event_wait(finishedEvent);
33
-       os_event_destroy(finishedEvent);
34
-   } else {
35
-       QueueCEFTask(func);
36
-   }
37
-}
38
-
39
 QCefWidgetInternal::QCefWidgetInternal(
40
        QWidget *parent,
41
        const std::string &url_,
42
@@ -166,20 +156,32 @@
43
 
44
 QCefWidgetInternal::~QCefWidgetInternal()
45
 {
46
-   ExecuteOnBrowser([this] ()
47
-   {
48
-       if (!cefBrowser) {
49
-           return;
50
-       }
51
-       CefRefPtr<CefClient> client =
52
-               cefBrowser->GetHost()->GetClient();
53
-       QCefBrowserClient *bc =
54
-               reinterpret_cast<QCefBrowserClient*>(
55
-                   client.get());
56
-
57
-       bc->widget = nullptr;
58
+   CefRefPtr<CefBrowser> browser = cefBrowser;
59
+   if (!!browser) {
60
+       auto destroyBrowser = [] (CefRefPtr<CefBrowser> cefBrowser)
61
+       {
62
+           if (!cefBrowser) {
63
+               return;
64
+           }
65
+           CefRefPtr<CefClient> client =
66
+                   cefBrowser->GetHost()->GetClient();
67
+           QCefBrowserClient *bc =
68
+                   reinterpret_cast<QCefBrowserClient*>(
69
+                       client.get());
70
+
71
+           cefBrowser->GetHost()->WasHidden(true);
72
+           cefBrowser->GetHost()->CloseBrowser(true);
73
+
74
+           bc->widget = nullptr;
75
+       };
76
+
77
+#ifdef USE_QT_LOOP
78
+       QueueBrowserTask(cefBrowser, destroyBrowser);
79
+#else
80
+       QueueCEFTask([=] () {destroyBrowser(browser);});
81
+#endif
82
        cefBrowser = nullptr;
83
-   });
84
+   }
85
 }
86
 
87
 void QCefWidgetInternal::Init()
88
@@ -198,6 +200,9 @@
89
 #ifdef _WIN32
90
        RECT rc = {0, 0, size.width(), size.height()};
91
        windowInfo.SetAsChild((HWND)id, rc);
92
+#elif __APPLE__
93
+       windowInfo.SetAsChild((CefWindowHandle)id, 0, 0,
94
+               size.width(),size.height());
95
 #endif
96
 
97
        CefRefPtr<QCefBrowserClient> browserClient =
98
@@ -227,20 +232,20 @@
99
 
100
 void QCefWidgetInternal::Resize()
101
 {
102
+#ifdef _WIN32
103
    QSize size = this->size() * devicePixelRatio();
104
 
105
    QueueCEFTask([this, size] ()
106
    {
107
        if (!cefBrowser)
108
            return;
109
-#ifdef _WIN32
110
        HWND hwnd = cefBrowser->GetHost()->GetWindowHandle();
111
        SetWindowPos(hwnd, nullptr, 0, 0, size.width(), size.height(),
112
                SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER);
113
        SendMessage(hwnd, WM_SIZE, 0,
114
                MAKELPARAM(size.width(), size.height()));
115
-#endif
116
    });
117
+#endif
118
 }
119
 
120
 void QCefWidgetInternal::showEvent(QShowEvent *event)
121
obs-studio-23.1.0.tar.xz/plugins/obs-browser/panel/browser-panel.hpp -> obs-studio-23.2.0.tar.xz/plugins/obs-browser/panel/browser-panel.hpp Changed
13
 
1
@@ -75,7 +75,11 @@
2
 
3
 static inline QCef *obs_browser_init_panel(void)
4
 {
5
+#ifdef _WIN32
6
    void *lib = os_dlopen("obs-browser");
7
+#else
8
+   void *lib = os_dlopen("../obs-plugins/obs-browser");
9
+#endif
10
    QCef *(*create_qcef)(void) = nullptr;
11
 
12
    if (!lib) {
13
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/ca-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/ca-ES.ini Changed
16
 
1
@@ -1,5 +1,5 @@
2
 FFmpegOutput="Sortida FFmpeg"
3
-FFmpegAAC="Codificador FFmpeg AAC predeterminat"
4
+FFmpegAAC="Codificador FFmpeg AAC per defecte"
5
 FFmpegOpus="Codificador Opus FFmpeg"
6
 Bitrate="Taxa de bits"
7
 MaxBitrate="Taxa de bits màxima"
8
@@ -19,6 +19,7 @@
9
 NVENC.Preset.llhq="Qualitat de latència baixa"
10
 NVENC.Preset.llhp="Rendiment de latència baixa"
11
 NVENC.LookAhead="Previsió"
12
+NVENC.LookAhead.ToolTip="Habilita els Fotogrames-B dinàmics.\n\nEn inhabilitar-ho, el codificador utilitzarà sempre el nombre de Fotogrames-B indicat a l'opció «Fotogrames-B màxims».\n\nEn habilitar-ho, augmentarà la qualitat visual només utilitzant els Fotogrames-B necessaris,\nfins el màxim permès per l'ús de la GPU."
13
 NVENC.PsychoVisualTuning="Ajust psico visual"
14
 NVENC.PsychoVisualTuning.ToolTip="Permet la configuració del codificador que optimitza l'ús de la taxa de bits per millorar la qualitat visual percebuda,\nespecialment en situacions amb gran moviment, a costa d'una major utilització de la GPU."
15
 NVENC.CQLevel="Nivell de quantificació constant"
16
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/da-DK.ini Changed
64
 
1
@@ -1,4 +1,4 @@
2
-FFmpegOutput="FFmpeg output"
3
+FFmpegOutput="FFmpeg-output"
4
 FFmpegAAC="FFmpeg Standard AAC Encoder"
5
 FFmpegOpus="FFmpeg Opus-encoder"
6
 Bitrate="Bitrate"
7
@@ -15,34 +15,34 @@
8
 NVENC.Preset.hq="Kvalitet"
9
 NVENC.Preset.hp="Maks. ydeevne"
10
 NVENC.Preset.mq="Maks. kvalitet"
11
-NVENC.Preset.ll="Lav latens"
12
-NVENC.Preset.llhq="Lavlatens højkvalitet"
13
-NVENC.Preset.llhp="Lavlatens ydeevne"
14
+NVENC.Preset.ll="Lavlatens"
15
+NVENC.Preset.llhq="Lavlatenskvalitet"
16
+NVENC.Preset.llhp="Lavlatensydeevne"
17
 NVENC.LookAhead="Look-ahead"
18
-NVENC.LookAhead.ToolTip="Aktiverer dynamiske B-billeder.\n\nHvis deaktiveret, benytter encoderen altid antallet af B-billeder, som er angivet i indstillingen 'Maks. B-billeder'.\n\nHvis aktiveret, vil den visuelle kvalitet blive forøget ved kun at benytte det nødvendige antal B-billeder op til maksimum\npå bekostning af forøget GPU-udnyttelse."
19
+NVENC.LookAhead.ToolTip="Aktiverer dynamiske B-frames.\n\nHvis deaktiveret, benytter encoderen altid antallet af B-frames angivet i indstillingen 'Maks. B-frames'.\n\nHvis aktiveret, forøges den visuelle kvalitet ved kun at benytte det nødvendige antal B-frames op til maksimum\npå bekostning af forøget GPU-forbrug."
20
 NVENC.PsychoVisualTuning="Psychovisuel tuning"
21
-NVENC.PsychoVisualTuning.ToolTip="Aktiverer encoderindstillinger, som optimerer brugen af bithastighed for øget opfattet visuel kvalitet, \nisær i situationer med megen bevægelse, på bekostning af forøget GPU-udnyttelse."
22
+NVENC.PsychoVisualTuning.ToolTip="Aktiverer encoderindstillinger, som optimerer brugen af bithastighed for øget opfattet visuel kvalitet,\nisær i situationer med megen bevægelse, på bekostning af forøget GPU-forbrug."
23
 NVENC.CQLevel="CQ-niveau"
24
 
25
 FFmpegSource="Mediekilde"
26
 LocalFile="Lokal fil"
27
 Looping="Gentagelse"
28
 Input="Input"
29
-InputFormat="Input format"
30
+InputFormat="Inputformat"
31
 BufferingMB="Netværksbuffering (MB)"
32
-HardwareDecode="Brug hardwareafkodning når tilgængelige"
33
+HardwareDecode="Benyt hardwareafkodning, når tilgængelig"
34
 ClearOnMediaEnd="Vis intet, når afspilning afsluttes"
35
 Advanced="Avanceret"
36
-RestartWhenActivated="Genstart afspilning når kilde bliver aktiv"
37
-CloseFileWhenInactive="Luk fil når inaktiv"
38
-CloseFileWhenInactive.ToolTip="Lukker filen, når kilden ikke vises i streamen ellerr\noptagelsen.  Dette muliggør at filen kan ændres, når kilden er ikke aktiv, \nmen der kan være noget opstartsforsinkelse, når kilden genaktiveres."
39
+RestartWhenActivated="Genstart afspilning, når kilde bliver aktiv"
40
+CloseFileWhenInactive="Luk fil, når inaktiv"
41
+CloseFileWhenInactive.ToolTip="Lukker filen, når kilden ikke vises i streamen ellerr\noptagelsen. Dette muliggør at filen kan ændres, når kilden er ikke aktiv,\nmen nogen opstartsforsinkelse kan forekomme, når kilden genaktiveres."
42
 ColorRange="YUV-farveområde"
43
 ColorRange.Auto="Auto"
44
 ColorRange.Partial="Delvis"
45
 ColorRange.Full="Fuld"
46
 RestartMedia="Genstart Media"
47
 SpeedPercentage="Hastighed (procent)"
48
-Seekable="Seekable"
49
+Seekable="Søgbar"
50
 
51
 MediaFileFilter.AllMediaFiles="Alle mediefiler"
52
 MediaFileFilter.VideoFiles="Videofiler"
53
@@ -52,7 +52,7 @@
54
 ReplayBuffer="Genafspilningsbuffer"
55
 ReplayBuffer.Save="Gem Genafspilning"
56
 
57
-HelperProcessFailed="Kan ikke starte optagelseshjælperprocessen. Tjek at OBS-filer ikke blokeres eller er fjernet af noget 3. parts antivirus-/sikkerhedssoftware."
58
-UnableToWritePath="Kan ikke skrive til %1. Tjek at du benytter en optagelsessti, som din brugerkonto har skriverettighed til, og at der er tilstrækkelig ledig diskplads."
59
-WarnWindowsDefender="Er Windows 10 Ransomware-beskyttelse aktiveret, kan dette også medføre denne fejl. Prøv at deaktivere kontrolleret mappetilgang i Windows-indstillingen Sikkerhed/Virus- og Trusselsbeskyttelse."
60
+HelperProcessFailed="Kan ikke starte optagelseshjælperprocessen. Tjek, at OBS-filer ikke blokeres eller er fjernet af 3. parts antivirus-/sikkerhedssoftware."
61
+UnableToWritePath="Kan ikke skrive til %1. Tjek, at du benytter en optagelsessti, som din brugerkonto har skriverettighed til, og at der er tilstrækkelig ledig diskplads."
62
+WarnWindowsDefender="Er Windows 10 Ransomware-beskyttelse aktiveret, kan dette også medføre denne fejl. Prøv at deaktivere kontrolleret mappeadgang i Windows-indstillingen Sikkerhed/Virus- og Trusselsbeskyttelse."
63
 
64
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/de-DE.ini Changed
55
 
1
@@ -1,16 +1,16 @@
2
 FFmpegOutput="FFmpeg-Ausgabe"
3
-FFmpegAAC="FFmpeg-Standard-AAC-Codierer"
4
-FFmpegOpus="FFmpeg-Opus-Codierer"
5
+FFmpegAAC="FFmpeg-Standard-AAC-Kodierer"
6
+FFmpegOpus="FFmpeg-Opus-Kodierer"
7
 Bitrate="Bitrate"
8
 MaxBitrate="Max. Bitrate"
9
 Preset="Voreinstellung"
10
 RateControl="Qualitäts Regulierungsmethode"
11
-KeyframeIntervalSec="Keyframeintervall (Sekunden, 0=auto)"
12
+KeyframeIntervalSec="Keyframeintervall in Sek. (0 = auto)"
13
 Lossless="Verlustfrei"
14
 
15
 BFrames="Max. B-Frames"
16
 
17
-NVENC.Use2Pass="Benutze Two-Pass Codierung"
18
+NVENC.Use2Pass="Two-Pass-Kodierung verwenden"
19
 NVENC.Preset.default="Leistung"
20
 NVENC.Preset.hq="Qualität"
21
 NVENC.Preset.hp="Max. Leistung"
22
@@ -19,9 +19,9 @@
23
 NVENC.Preset.llhq="Niedrige Latenz + Qualität"
24
 NVENC.Preset.llhp="Niedrige Latenz + Leistung"
25
 NVENC.LookAhead="Look-ahead"
26
-NVENC.LookAhead.ToolTip="Aktiviert dynamische B-Frames.\n\nWenn deaktiviert, wird der Codierer immer die Anzahl der B-Frames verwenden, die in der „Max B-Frames“-Einstellung angegeben sind.\n\nWenn aktiviert, wird er die visuelle Qualität erhöhen, indem nur so viele B-Frames verwendet werden wie benötigt, bis zum Maximum,\nzu den Kosten einer erhöhten GPU-Nutzung."
27
+NVENC.LookAhead.ToolTip="Aktiviert dynamische B-Frames.\n\nWenn deaktiviert, wird der Kodierer immer die Anzahl der B-Frames verwenden, die in der „Max B-Frames“-Einstellung angegeben sind.\n\nWenn aktiviert, wird er die visuelle Qualität erhöhen, indem nur so viele B-Frames verwendet werden wie benötigt, bis zum Maximum,\nzu den Kosten einer erhöhten GPU-Nutzung."
28
 NVENC.PsychoVisualTuning="Psycho-visuelle Optimierung"
29
-NVENC.PsychoVisualTuning.ToolTip="Aktiviert Codierereinstellungen, die die Verwendung der Bitrate für eine erhöhte wahrgenommene visuelle Qualität optimieren,\ninsbesondere in Situationen mit hoher Bewegung, zu Kosten einer erhöhten GPU-Nutzung."
30
+NVENC.PsychoVisualTuning.ToolTip="Aktiviert Kodierereinstellungen, die die Verwendung der Bitrate für eine erhöhte wahrgenommene visuelle Qualität optimieren,\ninsbesondere in Situationen mit hoher Bewegung, zu Kosten einer erhöhten GPU-Nutzung."
31
 NVENC.CQLevel="CQ-Level"
32
 
33
 FFmpegSource="Medienquelle"
34
@@ -30,17 +30,17 @@
35
 Input="Eingabe"
36
 InputFormat="Eingabeformat"
37
 BufferingMB="Netzwerkpufferung (MB)"
38
-HardwareDecode="Verwende Hardwaredecodierung, falls verfügbar"
39
+HardwareDecode="Hardwaredekodierung verwenden, falls verfügbar"
40
 ClearOnMediaEnd="Nichts anzeigen, wenn Wiedergabe endet"
41
 Advanced="Erweitert"
42
 RestartWhenActivated="Wiedergabe erneut starten, wenn Quelle aktiviert wird"
43
 CloseFileWhenInactive="Datei schließen, wenn inaktiv"
44
-CloseFileWhenInactive.ToolTip="Schließt die Datei, wenn die Quelle im Stream oder der Aufnahme nicht angezeigt wird.\nDies ermöglicht, dass die Datei geändert wird, wenn die Quelle nicht aktiv ist,\n aber es gibt wahrscheinlich etwas Startverzögerung, wenn die Quelle reaktiviert wird."
45
+CloseFileWhenInactive.ToolTip="Schließt die Datei, wenn die Quelle im Stream oder der Aufnahme nicht angezeigt wird.\nDies ermöglicht, dass die Datei geändert werden kann, wenn die Quelle nicht aktiv ist,\n aber es gibt wahrscheinlich etwas Startverzögerung, wenn die Quelle reaktiviert wird."
46
 ColorRange="YUV-Farbmatrix"
47
 ColorRange.Auto="Automatisch"
48
 ColorRange.Partial="Teilweise"
49
 ColorRange.Full="Voll"
50
-RestartMedia="Medium neu starten"
51
+RestartMedia="Medium neustarten"
52
 SpeedPercentage="Geschwindigkeit (Prozent)"
53
 Seekable="Durchsuchbar"
54
 
55
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/en-US.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/en-US.ini Changed
10
 
1
@@ -35,7 +35,7 @@
2
 Advanced="Advanced"
3
 RestartWhenActivated="Restart playback when source becomes active"
4
 CloseFileWhenInactive="Close file when inactive"
5
-CloseFileWhenInactive.ToolTip="Closes the file when the source is not being displayed on the stream or\nrecording.  This allows the file to be changed when the source isn't active,\nbut there may be some startup delay when the source reactivates."
6
+CloseFileWhenInactive.ToolTip="Closes the file when the source is not being displayed on the stream or\nrecording. This allows the file to be changed when the source isn't active,\nbut there may be some startup delay when the source reactivates."
7
 ColorRange="YUV Color Range"
8
 ColorRange.Auto="Auto"
9
 ColorRange.Partial="Partial"
10
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/eu-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/eu-ES.ini Changed
11
 
1
@@ -19,7 +19,9 @@
2
 NVENC.Preset.llhq="Latentzia txikiko kalitatea"
3
 NVENC.Preset.llhp="Latentzia txikiko errendimendua"
4
 NVENC.LookAhead="Aurrera begira"
5
+NVENC.LookAhead.ToolTip="Gaitu B-fotograma dinamikoak.\n\nGalerazita badaude, kodetzaileak beti erabiliko du 'Max B-fotogramak' ezarpenetan zehazten den B-fotogramen kopurua.\n\nGaituta badaude, ikusmen kalitatea hobetuko du beharrezkoak diren B-fotogramen kopurua erabiliz, maximora iritsi arte\nordainez GPUren erabilera handituko bada ere."
6
 NVENC.PsychoVisualTuning="Psycho Visual Tuning"
7
+NVENC.PsychoVisualTuning.ToolTip="Aukera ematen du kodetzailea konfiguratzeko optimizatzeko bit-ratioaren erabilera antzemandako ikusmen kalitatea hobetzeko,\nbatez ere mugimendu handiko egoeretan, ordainean GPUren erabilera handituz."
8
 NVENC.CQLevel="CQ maila"
9
 
10
 FFmpegSource="Multimedia iturburua"
11
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/fa-IR.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/fa-IR.ini Changed
17
 
1
@@ -10,6 +10,7 @@
2
 
3
 BFrames="حد اکثر فریم های B"
4
 
5
+NVENC.Use2Pass="استفاده از کدگذاری 2 گذر"
6
 NVENC.Preset.default="اجرا (کارایی)"
7
 NVENC.Preset.hq="کیفیت"
8
 NVENC.Preset.hp="حد اکثر اجرا (کارایی)"
9
@@ -17,6 +18,7 @@
10
 NVENC.Preset.ll="زمان تاخیر کم"
11
 NVENC.Preset.llhq="کیفیت پایین و زمان تاخیر"
12
 NVENC.Preset.llhp="زمان تاخیر کم عملکرد"
13
+NVENC.LookAhead="پیش رو نگاه"
14
 
15
 LocalFile="فایل محلی"
16
 Looping="چرخه"
17
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/hu-HU.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/hu-HU.ini Changed
10
 
1
@@ -35,7 +35,7 @@
2
 Advanced="Haladó"
3
 RestartWhenActivated="Lejátszás újraindítása, ha a forrás aktivizálódik"
4
 CloseFileWhenInactive="Fájl bezárása ha tétlen"
5
-CloseFileWhenInactive.ToolTip="Bezárja a fájlt, ha a forrás nem aktív streamen vagy\nfelvételen.  Ez lehetővé teszi, hogy a fájlt meg kell változtatni, ha a forrás nem aktív, a \nviszont felléphet némi indítási késés, ha a forrás reaktiválódik."
6
+CloseFileWhenInactive.ToolTip="Bezárja a fájlt, ha a forrás nem aktív streamen vagy\nfelvételen. Ez lehetővé teszi, hogy a fájlt meg kell változtatni, ha a forrás nem aktív, a \nviszont felléphet némi indítási késés, ha a forrás reaktiválódik."
7
 ColorRange="YUV színtartomány"
8
 ColorRange.Auto="Auto"
9
 ColorRange.Partial="Részleges"
10
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/ka-GE.ini Changed
25
 
1
@@ -1,4 +1,4 @@
2
-FFmpegOutput="FFmpeg გამომავალი სიგნალი"
3
+FFmpegOutput="FFmpeg-გამოტანა"
4
 FFmpegAAC="FFmpeg ნაგულისხმევი AAC დამშიფრავი"
5
 FFmpegOpus="FFmpeg Opus დამშიფრავი"
6
 Bitrate="ბიტური სიხშირე"
7
@@ -19,7 +19,7 @@
8
 NVENC.Preset.llhq="მცირე დაყოვნება მაღალი ხარისხით"
9
 NVENC.Preset.llhp="მცირე დაყოვნება მაღალი წარმადობით"
10
 NVENC.LookAhead="თვითგანსაზღვრა"
11
-NVENC.LookAhead.ToolTip="ჩაირთვება ცვალებადი რაოდენობის B-კადრები.\n\nგამორთვის შემთხვევაში, დამშიფრავი ყოველთვის „B-კადრების დასაშვები რაოდენობის“ ველში მითითებულს გამოიყენებს.\n\nჩართვის შედეგად, გაიზრდება გამოსახულლების ხარისხი საჭირო რაოდენობის B-კადრების დამატებით, უმაღლეს დასაშვებ რაოდენობამდე,\nგრაფიკული პროცესორის გაზრდილი დატვირთვის ხარჯზე."
12
+NVENC.LookAhead.ToolTip="ჩაირთვება ცვალებადი რაოდენობის B-კადრები.\n\nგამორთვის შემთხვევაში, დამშიფრავი ყოველთვის „B-კადრების დასაშვები რაოდენობის“ ველში მითითებულს გამოიყენებს.\n\nჩართვის შედეგად, გაიზრდება გამოსახულების ხარისხი საჭირო რაოდენობის B-კადრების დამატებით, უმაღლეს დასაშვებ რაოდენობამდე,\nგრაფიკული პროცესორის გაზრდილი დატვირთვის ხარჯზე."
13
 NVENC.PsychoVisualTuning="ფსიქოვიზუალური გამართვა"
14
 NVENC.PsychoVisualTuning.ToolTip="საშუალებას აძლევს დამშიფრავს, საუკეთესოდ შეარჩიოს ბიტური სიხშირე გამოსახულების ხარისხის უკეთ აღქმისთვის,\nგანსაკუთრებით მოძრავ სცენებში, გრაფიკული პროცესორის გაზრდილი დატვირთვის ხარჯზე."
15
 NVENC.CQLevel="CQ-დონე (მუდმივ ნაწილაკებად დაყოფა)"
16
@@ -35,7 +35,7 @@
17
 Advanced="გაფართოებული"
18
 RestartWhenActivated="ხელახლა გაშვება წყაროს ამოქმედებისას"
19
 CloseFileWhenInactive="ფაილის დახურვა უმოქმედობისას"
20
-CloseFileWhenInactive.ToolTip="ფაილი დაიხურება, თუ წყარო არ იქნება ეთერში ან\nჩაწერაზე გაშვებული.  ეს საშუალებას იძლევა შეიცვალოს ფაილი, როცა წყარო არაა მოქმედი,\nთუმცა ხელახლა ამოქმედებისას, შესაძლოა გარკვეული დროით დაყოვნებას ჰქონდეს ადგილი."
21
+CloseFileWhenInactive.ToolTip="ფაილი დაიხურება, თუ წყარო არ იქნება ეთერში ან\nჩაწერაზე გაშვებული. ეს საშუალებას იძლევა შეიცვალოს ფაილი, როცა წყარო არაა მოქმედი,\nთუმცა ხელახლა ამოქმედებისას, შესაძლოა გარკვეული დროით დაყოვნებას ჰქონდეს ადგილი."
22
 ColorRange="YUV ფერთა გამა"
23
 ColorRange.Auto="ავტომატური"
24
 ColorRange.Partial="ნაწილობრივი"
25
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/nb-NO.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/nb-NO.ini Changed
19
 
1
@@ -18,6 +18,11 @@
2
 NVENC.Preset.ll="Lav latens"
3
 NVENC.Preset.llhq="Lav latens og kvalitet"
4
 NVENC.Preset.llhp="Lav latens og ytelse"
5
+NVENC.LookAhead="Look-ahead"
6
+NVENC.LookAhead.ToolTip="Aktiverer dynamiske B-frames. \n\nHvis deaktivert, vil koderen alltid bruke nummeret spesifisert i \"Maks B-frames\" instillingen. \n\nHvis aktivert, vil bildekvaliteten forbedres ved å bare bruke antallet nødvendige B-frames, opp til maksimum antallet,\npå bekostning av økt GPU-forbruk."
7
+NVENC.PsychoVisualTuning="Psykovisuell justering"
8
+NVENC.PsychoVisualTuning.ToolTip="Aktiverer kodingsinstillinger som optimerer bruken av bitrate for forbedret oppfattet bildekvalitet,\nspesielt i situasjonen med mye bevegelse, på bekostning av økt GPU-forbruk."
9
+NVENC.CQLevel="QC-nivå"
10
 
11
 FFmpegSource="Mediekilde"
12
 LocalFile="Lokal fil"
13
@@ -49,4 +54,5 @@
14
 
15
 HelperProcessFailed="Kan ikke starte prosess for opptakshjelper. Sjekk at OBS ikke har noen blokkerte filer, eller at tredjeparts antivirus/sikkerhetsprogramvare har slettet noen filer."
16
 UnableToWritePath="Kan ikke skrive til %1. Kontroller at du bruker en filbane som kontoen din har rettigheter til å skrive på, og at du har nok diskplass tilgjengelig."
17
+WarnWindowsDefender="Hvis Windows 10 Ransomvare-beskyttelse er aktivert, kan dette medføre denne feilen. Forsøk å deaktivere kontrollert mappetilgang i Windows-instillingen Sikkerhet > Virus- og Trusselbeskyttelse."
18
 
19
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/pl-PL.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/pl-PL.ini Changed
10
 
1
@@ -1,7 +1,7 @@
2
 FFmpegOutput="Wyjście FFmpeg"
3
 FFmpegAAC="Domyślny enkoder AAC w FFmpeg"
4
 FFmpegOpus="Enkoder FFmpeg Opus"
5
-Bitrate="Przepływność bitowa"
6
+Bitrate="Przepływność (bitrate)"
7
 MaxBitrate="Maksymalna przepływność (bitrate)"
8
 Preset="Profil ustawień"
9
 RateControl="Typ przepływności"
10
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/pt-BR.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/pt-BR.ini Changed
10
 
1
@@ -35,7 +35,7 @@
2
 Advanced="Avançado"
3
 RestartWhenActivated="Reiniciar reprodução quando a fonte se tornar ativa"
4
 CloseFileWhenInactive="Fechar arquivo quando inativo"
5
-CloseFileWhenInactive.ToolTip="Fechar o arquivo quando a fonte não estiver sendo exibida na transmissão\n ou gravação.  Isto permite alterar o arquivo quando a fonte não está ativa,\nmas pode ter algum atraso de inicialização quando a fonte for reativada."
6
+CloseFileWhenInactive.ToolTip="Fechar o arquivo quando a fonte não estiver sendo exibida na transmissão\n ou gravação. Isto permite alterar o arquivo quando a fonte não está ativa,\nmas pode ter algum atraso de inicialização quando a fonte for reativada."
7
 ColorRange="Intervalo de Cores YUV"
8
 ColorRange.Auto="Auto"
9
 ColorRange.Partial="Parcial"
10
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/ro-RO.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/ro-RO.ini Changed
9
 
1
@@ -19,6 +19,7 @@
2
 Looping="Buclă"
3
 Input="Intrare"
4
 InputFormat="Format de intrare"
5
+BufferingMB="Zonă tampon pentru rețea (MB)"
6
 HardwareDecode="Folosește decodarea hardware când este disponibilă"
7
 Advanced="Avansat"
8
 RestartWhenActivated="Repornește redarea când sursa devine activă"
9
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/tr-TR.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/tr-TR.ini Changed
15
 
1
@@ -18,6 +18,7 @@
2
 NVENC.Preset.ll="Düşük Gecikme"
3
 NVENC.Preset.llhq="Düşük Gecikme, Düşük Kalite"
4
 NVENC.Preset.llhp="Düşük Gecikme, Düşük Performans"
5
+NVENC.PsychoVisualTuning.ToolTip="Bit hızı kullanımını, arttırılmış algılanan görsel kalite için optimize eden ayarları etkinleştirir,\nÖzellikle yüksek haraketli durumlarda, arttırılmış GPU kullanımı pahasına."
6
 
7
 FFmpegSource="Ortam Kaynağı"
8
 LocalFile="Yerel Dosya"
9
@@ -48,4 +49,5 @@
10
 
11
 HelperProcessFailed="Kayıt yardımcısı işlemi başlatılamadı. OBS dosyalarının herhangi bir 3. taraf antivirüs / güvenlik yazılımı tarafından engellenmediğini veya kaldırılmadığını kontrol edin."
12
 UnableToWritePath="%1 yazılamadı. Kullanıcı hesabınızın yazmasına izin verilen bir kayıt konumu kullanıyor olduğunuzdan ve yeterli disk alanı olduğundan emin olun."
13
+WarnWindowsDefender="Eğer Windows 10 Fidye Virüsü koruması etkinse bu hataya neden olabilir. Windows Güvenlik / Virüs & tehdit koruması ayarlarından kontrollü klasör erişimini kapatmayı dene."
14
 
15
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/uk-UA.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/uk-UA.ini Changed
9
 
1
@@ -31,6 +31,7 @@
2
 InputFormat="Вхідний формат"
3
 BufferingMB="Буферизація мережевого контенту (МБ)"
4
 HardwareDecode="Використовувати апаратне декодування, за наявності"
5
+ClearOnMediaEnd="Не показувати джерело, коли відтворення завершено"
6
 Advanced="Розширені параметри"
7
 RestartWhenActivated="Грати з початку, коли джерело стає активним"
8
 CloseFileWhenInactive="Закрити файл, коли неактивен"
9
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/vi-VN.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/vi-VN.ini Changed
30
 
1
@@ -1,6 +1,7 @@
2
 FFmpegOutput="FFmpeg đầu ra"
3
 FFmpegAAC="FFmpeg AAC Encoder mặc định"
4
 Bitrate="Bitrate"
5
+MaxBitrate="'Tốc độ bit' tối đa"
6
 Preset="Mẫu thiết lập"
7
 RateControl="Cách kiểm soát bitrate"
8
 KeyframeIntervalSec="Thời gian đặt Keyframe (giây, 0=tự động)"
9
@@ -8,7 +9,13 @@
10
 
11
 
12
 NVENC.Use2Pass="Sử dụng 2-Pass Encoding"
13
+NVENC.Preset.default="Hiệu suất"
14
+NVENC.Preset.hq="Chất lượng"
15
+NVENC.Preset.hp="Hiệu suất tối đa"
16
+NVENC.Preset.mq="Chất lượng tối đa"
17
 NVENC.Preset.ll="Độ trễ thấp"
18
+NVENC.Preset.llhq="Chất lượng \"độ trễ thấp\""
19
+NVENC.Preset.llhp="Hiệu suất \"độ trễ thấp\""
20
 
21
 FFmpegSource="Nguồn media"
22
 LocalFile="Tập tin cục bộ"
23
@@ -30,5 +37,6 @@
24
 MediaFileFilter.AllFiles="Tất cả tập tin"
25
 
26
 ReplayBuffer="Replay Buffer"
27
+ReplayBuffer.Save="Lưu bản phát lại"
28
 
29
 
30
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/zh-CN.ini Changed
35
 
1
@@ -18,10 +18,10 @@
2
 NVENC.Preset.ll="低延迟"
3
 NVENC.Preset.llhq="低延迟质量"
4
 NVENC.Preset.llhp="低延迟性能"
5
-NVENC.LookAhead="超前控制"
6
-NVENC.LookAhead.ToolTip="启用动态B帧。\n\n如果禁用,编码器将始终使用“最大B帧”设置中指定的B帧数。\n\n如果启用,它将仅通过使用尽可能多的B帧来提高视觉质量,直到最大,\n但以增加 GPU 利用率为代价。"
7
+NVENC.LookAhead="前向考虑"
8
+NVENC.LookAhead.ToolTip="启用动态B帧。\n\n如果禁用,编码器将始终使用“最大B帧”设置中指定的B帧数。\n\n如果启用,它将通过仅使用足够多的B帧来提高视觉质量,直到最大,\n但以增加 GPU 使用率为代价。"
9
 NVENC.PsychoVisualTuning="心理视觉调整"
10
-NVENC.PsychoVisualTuning.ToolTip="启用优化比特率使用的编码器设置,以提高感知的视觉质量,\n特别是在高运动的情况下,以提高 GPU 利用率为代价。"
11
+NVENC.PsychoVisualTuning.ToolTip="启用编码器设置以优化比特率使用,以提高 GPU 使用率为代价,\n可在快速运动场景下提高人眼感知的视频质量。"
12
 NVENC.CQLevel="CQ 级别"
13
 
14
 FFmpegSource="媒体源"
15
@@ -35,7 +35,7 @@
16
 Advanced="高级"
17
 RestartWhenActivated="当源变为活动状态时重新启动播放"
18
 CloseFileWhenInactive="非活跃状态时关闭文件"
19
-CloseFileWhenInactive.ToolTip="当源没有被用以串流或录像时关闭文件。\n这允许当源不被使用时能更改文件,但在\n重新启动源时可能会有些许的启动延迟。"
20
+CloseFileWhenInactive.ToolTip="当源没有被用以串流或录像时关闭文件。\n这允许在源未被使用时更改文件,\n但在重新启动源时可能会有些许的启动延迟。"
21
 ColorRange="YUV 颜色范围"
22
 ColorRange.Auto="自动"
23
 ColorRange.Partial="局部"
24
@@ -52,7 +52,7 @@
25
 ReplayBuffer="回放缓存"
26
 ReplayBuffer.Save="保存回放"
27
 
28
-HelperProcessFailed="无法启动录音助手进程。检查 OBS 文件未被任何第三方防病毒 / 安全软件阻止或删除。"
29
-UnableToWritePath="无法写入到 %1。请确保您使用的录制路径您的用户帐户允许写入,并有足够的磁盘空间。"
30
-WarnWindowsDefender="Windows 10的勒索软件防护机制也可能会导致该错误的发生。请尝试关闭Windows安全/病毒与威胁防护设置中的受控资料夹的访问。"
31
+HelperProcessFailed="无法启动录制助手进程。检查 OBS 文件未被任何第三方防病毒 / 安全软件阻止或删除。"
32
+UnableToWritePath="无法写入到 %1。请确保您使用的录像路径允许您的用户帐户写入,并且磁盘空间充足。"
33
+WarnWindowsDefender="Windows 10 的勒索软件防护机制也可能导致该错误的发生。请尝试关闭 Windows 安全中心 - 勒索软件防护中的文件夹限制访问。"
34
 
35
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/data/locale/zh-TW.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/data/locale/zh-TW.ini Changed
11
 
1
@@ -19,7 +19,9 @@
2
 NVENC.Preset.llhq="低延遲品質"
3
 NVENC.Preset.llhp="低延遲效能"
4
 NVENC.LookAhead="編碼緩衝預測"
5
+NVENC.LookAhead.ToolTip="啟用動態B幀。 \n\n如果禁用,編碼器將始終使用“最大B幀”設置中指定的B幀數。 \n\n如果啟用,它將僅通過使用盡可能多的B幀來提高視覺品質,直到最大,\n但以增加 GPU 使用率為代價。"
6
 NVENC.PsychoVisualTuning="心理視覺調整"
7
+NVENC.PsychoVisualTuning.ToolTip="啟用優化比特率使用的編碼器設置,以提高感知的視覺品質,\n特別是在高運動的情況下,以提高 GPU 使用率為代價。"
8
 NVENC.CQLevel="固定量化等級"
9
 
10
 FFmpegSource="媒體來源"
11
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/ffmpeg-mux/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/ffmpeg-mux/CMakeLists.txt Changed
36
 
1
@@ -1,26 +1,20 @@
2
-project(ffmpeg-mux)
3
+project(obs-ffmpeg-mux)
4
 
5
 find_package(FFmpeg REQUIRED
6
    COMPONENTS avcodec avutil avformat)
7
 include_directories(${FFMPEG_INCLUDE_DIRS})
8
 
9
-set(ffmpeg-mux_SOURCES
10
+set(obs-ffmpeg-mux_SOURCES
11
    ffmpeg-mux.c)
12
 
13
-set(ffmpeg-mux_HEADERS
14
+set(obs-ffmpeg-mux_HEADERS
15
    ffmpeg-mux.h)
16
 
17
-add_executable(ffmpeg-mux
18
-   ${ffmpeg-mux_SOURCES}
19
-   ${ffmpeg-mux_HEADERS})
20
+add_executable(obs-ffmpeg-mux
21
+   ${obs-ffmpeg-mux_SOURCES}
22
+   ${obs-ffmpeg-mux_HEADERS})
23
 
24
-target_link_libraries(ffmpeg-mux
25
+target_link_libraries(obs-ffmpeg-mux
26
    ${FFMPEG_LIBRARIES})
27
 
28
-if(WIN32)
29
-   set_target_properties(ffmpeg-mux
30
-       PROPERTIES
31
-           OUTPUT_NAME "ffmpeg-mux${_output_suffix}")
32
-endif()
33
-
34
-install_obs_datatarget(ffmpeg-mux "obs-plugins/obs-ffmpeg")
35
+install_obs_core(obs-ffmpeg-mux)
36
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c Changed
80
 
1
@@ -268,7 +268,7 @@
2
    AVCodec *codec;
3
 
4
    if (!desc) {
5
-       printf("Couldn't find encoder '%s'\n", name);
6
+       fprintf(stderr, "Couldn't find encoder '%s'\n", name);
7
        return false;
8
    }
9
 
10
@@ -276,13 +276,13 @@
11
 
12
    codec = avcodec_find_encoder(desc->id);
13
    if (!codec) {
14
-       printf("Couldn't create encoder");
15
+       fprintf(stderr, "Couldn't create encoder");
16
        return false;
17
    }
18
 
19
    *stream = avformat_new_stream(ffm->output, codec);
20
    if (!*stream) {
21
-       printf("Couldn't create stream for encoder '%s'\n", name);
22
+       fprintf(stderr, "Couldn't create stream for encoder '%s'\n", name);
23
        return false;
24
    }
25
 
26
@@ -469,7 +469,7 @@
27
        ret = avio_open(&ffm->output->pb, ffm->params.file,
28
                AVIO_FLAG_WRITE);
29
        if (ret < 0) {
30
-           printf("Couldn't open '%s', %s",
31
+           fprintf(stderr, "Couldn't open '%s', %s",
32
                    ffm->params.file, av_err2str(ret));
33
            return FFM_ERROR;
34
        }
35
@@ -482,7 +482,7 @@
36
    AVDictionary *dict = NULL;
37
    if ((ret = av_dict_parse_string(&dict, ffm->params.muxer_settings,
38
                "=", " ", 0))) {
39
-       printf("Failed to parse muxer settings: %s\n%s",
40
+       fprintf(stderr, "Failed to parse muxer settings: %s\n%s",
41
                av_err2str(ret), ffm->params.muxer_settings);
42
 
43
        av_dict_free(&dict);
44
@@ -501,7 +501,7 @@
45
 
46
    ret = avformat_write_header(ffm->output, &dict);
47
    if (ret < 0) {
48
-       printf("Error opening '%s': %s",
49
+       fprintf(stderr, "Error opening '%s': %s",
50
                ffm->params.file, av_err2str(ret));
51
 
52
        av_dict_free(&dict);
53
@@ -521,7 +521,7 @@
54
 
55
    output_format = av_guess_format(NULL, ffm->params.file, NULL);
56
    if (output_format == NULL) {
57
-       printf("Couldn't find an appropriate muxer for '%s'\n",
58
+       fprintf(stderr, "Couldn't find an appropriate muxer for '%s'\n",
59
                ffm->params.file);
60
        return FFM_ERROR;
61
    }
62
@@ -529,7 +529,7 @@
63
    ret = avformat_alloc_output_context2(&ffm->output, output_format,
64
            NULL, NULL);
65
    if (ret < 0) {
66
-       printf("Couldn't initialize output context: %s\n",
67
+       fprintf(stderr, "Couldn't initialize output context: %s\n",
68
                av_err2str(ret));
69
        return FFM_ERROR;
70
    }
71
@@ -679,7 +679,7 @@
72
 
73
    ret = ffmpeg_mux_init(&ffm, argc, argv);
74
    if (ret != FFM_SUCCESS) {
75
-       puts("Couldn't initialize muxer");
76
+       fprintf(stderr, "Couldn't initialize muxer\n");
77
        return ret;
78
    }
79
 
80
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/jim-nvenc.c -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/jim-nvenc.c Changed
10
 
1
@@ -883,7 +883,7 @@
2
 
3
        /* subtract bframe delay from dts */
4
        if (enc->bframes)
5
-           dts--;
6
+           dts -= packet->timebase_num;
7
 
8
        *received_packet = true;
9
        packet->data     = enc->packet_data.array;
10
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-mux.c -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-mux.c Changed
128
 
1
@@ -113,13 +113,9 @@
2
 }
3
 
4
 #ifdef _WIN32
5
-#ifdef _WIN64
6
-#define FFMPEG_MUX "ffmpeg-mux64.exe"
7
+#define FFMPEG_MUX "obs-ffmpeg-mux.exe"
8
 #else
9
-#define FFMPEG_MUX "ffmpeg-mux32.exe"
10
-#endif
11
-#else
12
-#define FFMPEG_MUX "ffmpeg-mux"
13
+#define FFMPEG_MUX "obs-ffmpeg-mux"
14
 #endif
15
 
16
 static inline bool capturing(struct ffmpeg_muxer *stream)
17
@@ -241,7 +237,7 @@
18
        num_tracks++;
19
    }
20
 
21
-   dstr_init_move_array(cmd, obs_module_file(FFMPEG_MUX));
22
+   dstr_init_move_array(cmd, os_get_executable_path_ptr(FFMPEG_MUX));
23
    dstr_insert_ch(cmd, 0, '\"');
24
    dstr_cat(cmd, "\" \"");
25
 
26
@@ -335,7 +331,7 @@
27
    return true;
28
 }
29
 
30
-static int deactivate(struct ffmpeg_muxer *stream)
31
+static int deactivate(struct ffmpeg_muxer *stream, int code)
32
 {
33
    int ret = -1;
34
 
35
@@ -349,8 +345,11 @@
36
        info("Output of file '%s' stopped", stream->path.array);
37
    }
38
 
39
-   if (stopping(stream))
40
+   if (code) {
41
+       obs_output_signal_stop(stream->output, code);
42
+   } else if (stopping(stream)) {
43
        obs_output_end_data_capture(stream->output);
44
+   }
45
 
46
    os_atomic_set_bool(&stream->stopping, false);
47
    return ret;
48
@@ -369,9 +368,23 @@
49
 
50
 static void signal_failure(struct ffmpeg_muxer *stream)
51
 {
52
-   int ret = deactivate(stream);
53
+   char error[1024];
54
+   int ret;
55
    int code;
56
 
57
+   size_t len;
58
+
59
+   len = os_process_pipe_read_err(stream->pipe, (uint8_t *)error,
60
+       sizeof(error) - 1);
61
+
62
+   if (len > 0) {
63
+       error[len] = 0;
64
+       warn ("ffmpeg-mux: %s", error);
65
+       obs_output_set_last_error (stream->output, error);
66
+   }
67
+
68
+   ret = deactivate(stream, 0);
69
+
70
    switch (ret) {
71
    case FFM_UNSUPPORTED:          code = OBS_OUTPUT_UNSUPPORTED; break;
72
    default:                       code = OBS_OUTPUT_ERROR;
73
@@ -469,6 +482,12 @@
74
    if (!active(stream))
75
        return;
76
 
77
+   /* encoder failure */
78
+   if (!packet) {
79
+       deactivate(stream, OBS_OUTPUT_ENCODE_ERROR);
80
+       return;
81
+   }
82
+
83
    if (!stream->sent_headers) {
84
        if (!send_headers(stream))
85
            return;
86
@@ -478,7 +497,7 @@
87
 
88
    if (stopping(stream)) {
89
        if (packet->sys_dts_usec >= stream->stop_ts) {
90
-           deactivate(stream);
91
+           deactivate(stream, 0);
92
            return;
93
        }
94
    }
95
@@ -793,10 +812,13 @@
96
            replay_buffer_mux_thread, stream) == 0;
97
 }
98
 
99
-static void deactivate_replay_buffer(struct ffmpeg_muxer *stream)
100
+static void deactivate_replay_buffer(struct ffmpeg_muxer *stream, int code)
101
 {
102
-   if (stopping(stream))
103
+   if (code) {
104
+       obs_output_signal_stop(stream->output, code);
105
+   } else if (stopping(stream)) {
106
        obs_output_end_data_capture(stream->output);
107
+   }
108
 
109
    os_atomic_set_bool(&stream->active, false);
110
    os_atomic_set_bool(&stream->sent_headers, false);
111
@@ -812,9 +834,15 @@
112
    if (!active(stream))
113
        return;
114
 
115
+   /* encoder failure */
116
+   if (!packet) {
117
+       deactivate_replay_buffer(stream, OBS_OUTPUT_ENCODE_ERROR);
118
+       return;
119
+   }
120
+
121
    if (stopping(stream)) {
122
        if (packet->sys_dts_usec >= stream->stop_ts) {
123
-           deactivate_replay_buffer(stream);
124
+           deactivate_replay_buffer(stream, 0);
125
            return;
126
        }
127
    }
128
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-nvenc.c -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-nvenc.c Changed
16
 
1
@@ -451,10 +451,12 @@
2
 
3
    obs_property_set_modified_callback(p, rate_control_modified);
4
 
5
-   obs_properties_add_int(props, "bitrate",
6
+   p = obs_properties_add_int(props, "bitrate",
7
            obs_module_text("Bitrate"), 50, 300000, 50);
8
-   obs_properties_add_int(props, "max_bitrate",
9
+   obs_property_int_set_suffix(p, " Kbps");
10
+   p = obs_properties_add_int(props, "max_bitrate",
11
            obs_module_text("MaxBitrate"), 50, 300000, 50);
12
+   obs_property_int_set_suffix(p, " Kbps");
13
 
14
    obs_properties_add_int(props, "cqp", obs_module_text("NVENC.CQLevel"),
15
            1, 30, 1);
16
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-output.c -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-output.c Changed
291
 
1
@@ -86,6 +86,8 @@
2
    struct ffmpeg_cfg  config;
3
 
4
    bool               initialized;
5
+
6
+   char               *last_error;
7
 };
8
 
9
 struct ffmpeg_output {
10
@@ -114,6 +116,30 @@
11
 
12
 /* ------------------------------------------------------------------------- */
13
 
14
+static void ffmpeg_output_set_last_error(struct ffmpeg_data *data,
15
+   const char *error)
16
+{
17
+   if (data->last_error)
18
+       bfree(data->last_error);
19
+
20
+   data->last_error = bstrdup(error);
21
+}
22
+
23
+void ffmpeg_log_error(int log_level, struct ffmpeg_data *data,
24
+   const char *format, ...)
25
+{
26
+   va_list args;
27
+   char out[4096];
28
+
29
+   va_start(args, format);
30
+   vsnprintf(out, sizeof(out), format, args);
31
+   va_end(args);
32
+
33
+   ffmpeg_output_set_last_error(data, out);
34
+
35
+   blog(log_level, "%s", out);
36
+}
37
+
38
 static bool new_stream(struct ffmpeg_data *data, AVStream **stream,
39
        AVCodec **codec, enum AVCodecID id, const char *name)
40
 {
41
@@ -122,14 +148,14 @@
42
        avcodec_find_encoder(id);
43
 
44
    if (!*codec) {
45
-       blog(LOG_WARNING, "Couldn't find encoder '%s'",
46
+       ffmpeg_log_error(LOG_WARNING, data, "Couldn't find encoder '%s'",
47
                avcodec_get_name(id));
48
        return false;
49
    }
50
 
51
    *stream = avformat_new_stream(data->output, *codec);
52
    if (!*stream) {
53
-       blog(LOG_WARNING, "Couldn't create stream for encoder '%s'",
54
+       ffmpeg_log_error(LOG_WARNING, data, "Couldn't create stream for encoder '%s'",
55
                avcodec_get_name(id));
56
        return false;
57
    }
58
@@ -186,14 +212,14 @@
59
 
60
    ret = avcodec_open2(context, data->vcodec, NULL);
61
    if (ret < 0) {
62
-       blog(LOG_WARNING, "Failed to open video codec: %s",
63
+       ffmpeg_log_error(LOG_WARNING, data, "Failed to open video codec: %s",
64
                av_err2str(ret));
65
        return false;
66
    }
67
 
68
    data->vframe = av_frame_alloc();
69
    if (!data->vframe) {
70
-       blog(LOG_WARNING, "Failed to allocate video frame");
71
+       ffmpeg_log_error(LOG_WARNING, data, "Failed to allocate video frame");
72
        return false;
73
    }
74
 
75
@@ -205,7 +231,7 @@
76
 
77
    ret = av_frame_get_buffer(data->vframe, base_get_alignment());
78
    if (ret < 0) {
79
-       blog(LOG_WARNING, "Failed to allocate vframe: %s",
80
+       ffmpeg_log_error(LOG_WARNING, data, "Failed to allocate vframe: %s",
81
                av_err2str(ret));
82
        return false;
83
    }
84
@@ -223,7 +249,7 @@
85
            SWS_BICUBIC, NULL, NULL, NULL);
86
 
87
    if (!data->swscale) {
88
-       blog(LOG_WARNING, "Could not initialize swscale");
89
+       ffmpeg_log_error(LOG_WARNING, data, "Could not initialize swscale");
90
        return false;
91
    }
92
 
93
@@ -237,7 +263,7 @@
94
    struct obs_video_info ovi;
95
 
96
    if (!obs_get_video_info(&ovi)) {
97
-       blog(LOG_WARNING, "No active video");
98
+       ffmpeg_log_error(LOG_WARNING, data, "No active video");
99
        return false;
100
    }
101
 
102
@@ -292,7 +318,7 @@
103
 
104
    data->aframe[idx] = av_frame_alloc();
105
    if (!data->aframe[idx]) {
106
-       blog(LOG_WARNING, "Failed to allocate audio frame");
107
+       ffmpeg_log_error(LOG_WARNING, data, "Failed to allocate audio frame");
108
        return false;
109
    }
110
 
111
@@ -305,7 +331,7 @@
112
 
113
    ret = avcodec_open2(context, data->acodec, NULL);
114
    if (ret < 0) {
115
-       blog(LOG_WARNING, "Failed to open audio codec: %s",
116
+       ffmpeg_log_error(LOG_WARNING, data, "Failed to open audio codec: %s",
117
                av_err2str(ret));
118
        return false;
119
    }
120
@@ -315,7 +341,7 @@
121
    ret = av_samples_alloc(data->samples[idx], NULL, context->channels,
122
            data->frame_size, context->sample_fmt, 0);
123
    if (ret < 0) {
124
-       blog(LOG_WARNING, "Failed to create audio buffer: %s",
125
+       ffmpeg_log_error(LOG_WARNING, data, "Failed to create audio buffer: %s",
126
                        av_err2str(ret));
127
        return false;
128
    }
129
@@ -330,7 +356,7 @@
130
    struct obs_audio_info aoi;
131
 
132
    if (!obs_get_audio_info(&aoi)) {
133
-       blog(LOG_WARNING, "No active audio");
134
+       ffmpeg_log_error(LOG_WARNING, data, "No active audio");
135
        return false;
136
    }
137
 
138
@@ -396,7 +422,7 @@
139
    AVDictionary *dict = NULL;
140
    if ((ret = av_dict_parse_string(&dict, data->config.muxer_settings,
141
                "=", " ", 0))) {
142
-       blog(LOG_WARNING, "Failed to parse muxer settings: %s\n%s",
143
+       ffmpeg_log_error(LOG_WARNING, data, "Failed to parse muxer settings: %s\n%s",
144
                av_err2str(ret), data->config.muxer_settings);
145
 
146
        av_dict_free(&dict);
147
@@ -419,8 +445,9 @@
148
        ret = avio_open2(&data->output->pb, data->config.url,
149
                AVIO_FLAG_WRITE, NULL, &dict);
150
        if (ret < 0) {
151
-           blog(LOG_WARNING, "Couldn't open '%s', %s",
152
-                   data->config.url, av_err2str(ret));
153
+           ffmpeg_log_error(LOG_WARNING, data,
154
+               "Couldn't open '%s', %s", data->config.url,
155
+               av_err2str(ret));
156
            av_dict_free(&dict);
157
            return false;
158
        }
159
@@ -432,7 +459,7 @@
160
 
161
    ret = avformat_write_header(data->output, &dict);
162
    if (ret < 0) {
163
-       blog(LOG_WARNING, "Error opening '%s': %s",
164
+       ffmpeg_log_error(LOG_WARNING, data, "Error opening '%s': %s",
165
                data->config.url, av_err2str(ret));
166
        return false;
167
    }
168
@@ -503,6 +530,9 @@
169
        avformat_free_context(data->output);
170
    }
171
 
172
+   if (data->last_error)
173
+       bfree(data->last_error);
174
+
175
    memset(data, 0, sizeof(struct ffmpeg_data));
176
 }
177
 
178
@@ -565,13 +595,15 @@
179
            is_rtmp ? NULL : data->config.format_mime_type);
180
 
181
    if (output_format == NULL) {
182
-       blog(LOG_WARNING, "Couldn't find matching output format with "
183
-               " parameters: name=%s, url=%s, mime=%s",
184
-               safe_str(is_rtmp ?
185
-                   "flv" : data->config.format_name),
186
-               safe_str(data->config.url),
187
-               safe_str(is_rtmp ?
188
-                   NULL : data->config.format_mime_type));
189
+       ffmpeg_log_error(LOG_WARNING, data,
190
+           "Couldn't find matching output format with "
191
+           "parameters: name=%s, url=%s, mime=%s",
192
+           safe_str(is_rtmp ?
193
+               "flv" : data->config.format_name),
194
+           safe_str(data->config.url),
195
+           safe_str(is_rtmp ?
196
+               NULL : data->config.format_mime_type));
197
+
198
        goto fail;
199
    }
200
 
201
@@ -579,7 +611,8 @@
202
            NULL, NULL);
203
 
204
    if (!data->output) {
205
-       blog(LOG_WARNING, "Couldn't create avformat context");
206
+       ffmpeg_log_error(LOG_WARNING, data,
207
+           "Couldn't create avformat context");
208
        goto fail;
209
    }
210
 
211
@@ -603,7 +636,6 @@
212
 
213
 fail:
214
    blog(LOG_WARNING, "ffmpeg_data_init failed");
215
-   ffmpeg_data_free(data);
216
    return false;
217
 }
218
 
219
@@ -758,6 +790,7 @@
220
        if (ret < 0) {
221
            blog(LOG_WARNING, "receive_video: Error encoding "
222
                              "video: %s", av_err2str(ret));
223
+           //FIXME: stop the encode with an error
224
            return;
225
        }
226
 
227
@@ -783,6 +816,7 @@
228
    if (ret != 0) {
229
        blog(LOG_WARNING, "receive_video: Error writing video: %s",
230
                av_err2str(ret));
231
+       //FIXME: stop the encode with an error
232
    }
233
 
234
    data->total_frames++;
235
@@ -808,6 +842,7 @@
236
    if (ret < 0) {
237
        blog(LOG_WARNING, "encode_audio: avcodec_fill_audio_frame "
238
                          "failed: %s", av_err2str(ret));
239
+       //FIXME: stop the encode with an error
240
        return;
241
    }
242
 
243
@@ -829,6 +864,7 @@
244
    if (ret < 0) {
245
        blog(LOG_WARNING, "encode_audio: Error encoding audio: %s",
246
                av_err2str(ret));
247
+       //FIXME: stop the encode with an error
248
        return;
249
    }
250
 
251
@@ -989,8 +1025,9 @@
252
    ret = av_interleaved_write_frame(output->ff_data.output, &packet);
253
    if (ret < 0) {
254
        av_free_packet(&packet);
255
-       blog(LOG_WARNING, "receive_audio: Error writing packet: %s",
256
-               av_err2str(ret));
257
+       ffmpeg_log_error(LOG_WARNING, &output->ff_data,
258
+           "receive_audio: Error writing packet: %s",
259
+           av_err2str(ret));
260
        return ret;
261
    }
262
 
263
@@ -1108,8 +1145,14 @@
264
    success = ffmpeg_data_init(&output->ff_data, &config);
265
    obs_data_release(settings);
266
 
267
-   if (!success)
268
+   if (!success) {
269
+       if (output->ff_data.last_error) {
270
+           obs_output_set_last_error(output->output,
271
+               output->ff_data.last_error);
272
+       }
273
+       ffmpeg_data_free(&output->ff_data);
274
        return false;
275
+   }
276
 
277
    struct audio_convert_info aci = {
278
        .format = output->ff_data.audio_format
279
@@ -1122,8 +1165,9 @@
280
 
281
    ret = pthread_create(&output->write_thread, NULL, write_thread, output);
282
    if (ret != 0) {
283
-       blog(LOG_WARNING, "ffmpeg_output_start: failed to create write "
284
-                         "thread.");
285
+       ffmpeg_log_error(LOG_WARNING, &output->ff_data,
286
+           "ffmpeg_output_start: failed to create write "
287
+           "thread.");
288
        ffmpeg_output_full_stop(output);
289
        return false;
290
    }
291
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-source.c -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-source.c Changed
12
 
1
@@ -155,6 +155,10 @@
2
    obs_properties_add_bool(props, "restart_on_activate",
3
            obs_module_text("RestartWhenActivated"));
4
 
5
+   obs_properties_add_int_slider(props, "buffering_mb",
6
+           obs_module_text("BufferingMB"),
7
+           1, 16, 1);
8
+
9
    obs_properties_add_text(props, "input",
10
            obs_module_text("Input"), OBS_TEXT_DEFAULT);
11
 
12
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c Changed
30
 
1
@@ -193,6 +193,7 @@
2
    enc->context->max_b_frames = bf;
3
    enc->context->level        = level;
4
    enc->context->bit_rate     = bitrate * 1000;
5
+   enc->context->rc_max_rate  = bitrate * 1000;
6
 
7
    enc->context->width  = obs_encoder_get_width(enc->encoder);
8
    enc->context->height = obs_encoder_get_height(enc->encoder);
9
@@ -464,7 +465,7 @@
10
 
11
    list = obs_properties_add_list(props, "vaapi_device", "VAAPI Device",
12
            OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_STRING);
13
-   char path[128] = "/dev/dri/renderD1";
14
+   char path[32] = "/dev/dri/renderD1";
15
    for (int i = 28;; i++) {
16
        sprintf(path, "/dev/dri/renderD1%d", i);
17
        if (access(path, F_OK) == 0) {
18
@@ -490,8 +491,10 @@
19
    obs_property_list_add_int(list, "720p60/1080p30 (4.1)", 41);
20
    obs_property_list_add_int(list, "1080p60 (4.2)", 42);
21
 
22
-   obs_properties_add_int(props, "bitrate", obs_module_text("Bitrate"), 0,
23
+   obs_property_t *p;
24
+   p = obs_properties_add_int(props, "bitrate", obs_module_text("Bitrate"), 0,
25
            300000, 50);
26
+   obs_property_int_set_suffix(p, " Kbps");
27
 
28
    obs_properties_add_int(props, "keyint_sec",
29
            obs_module_text("Keyframe Interval (seconds)"), 0, 20,
30
obs-studio-23.1.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg.c -> obs-studio-23.2.0.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg.c Changed
11
 
1
@@ -297,7 +297,9 @@
2
 cleanup:
3
    if (lib)
4
        os_dlclose(lib);
5
+#if defined(_WIN32)
6
 finish:
7
+#endif
8
    profile_end(nvenc_check_name);
9
    return success;
10
 }
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/CMakeLists.txt -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/CMakeLists.txt Changed
11
 
1
@@ -51,7 +51,8 @@
2
    invert-audio-polarity.c
3
    compressor-filter.c
4
    limiter-filter.c
5
-   expander-filter.c)
6
+   expander-filter.c
7
+   luma-key-filter.c)
8
 
9
 add_library(obs-filters MODULE
10
    ${obs-filters_SOURCES}
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/chroma-key-filter.c -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/chroma-key-filter.c Changed
65
 
1
@@ -35,7 +35,6 @@
2
 
3
    gs_eparam_t                    *pixel_size_param;
4
    gs_eparam_t                    *chroma_param;
5
-   gs_eparam_t                    *key_rgb_param;
6
    gs_eparam_t                    *similarity_param;
7
    gs_eparam_t                    *smoothness_param;
8
    gs_eparam_t                    *spill_param;
9
@@ -45,7 +44,6 @@
10
    float                          brightness;
11
    float                          gamma;
12
 
13
-   struct vec4                    key_rgb;
14
    struct vec2                    chroma;
15
    float                          similarity;
16
    float                          smoothness;
17
@@ -97,6 +95,7 @@
18
            SETTING_KEY_COLOR);
19
    const char *key_type = obs_data_get_string(settings,
20
            SETTING_COLOR_TYPE);
21
+   struct vec4 key_rgb;
22
    struct vec4 key_color_v4;
23
    struct matrix4 yuv_mat_m4;
24
 
25
@@ -107,10 +106,10 @@
26
    else if (strcmp(key_type, "magenta") == 0)
27
        key_color = 0xFF00FF;
28
 
29
-   vec4_from_rgba(&filter->key_rgb, key_color | 0xFF000000);
30
+   vec4_from_rgba(&key_rgb, key_color | 0xFF000000);
31
 
32
    memcpy(&yuv_mat_m4, yuv_mat, sizeof(yuv_mat));
33
-   vec4_transform(&key_color_v4, &filter->key_rgb, &yuv_mat_m4);
34
+   vec4_transform(&key_color_v4, &key_rgb, &yuv_mat_m4);
35
    vec2_set(&filter->chroma, key_color_v4.y, key_color_v4.z);
36
 
37
    filter->similarity = (float)similarity / 1000.0f;
38
@@ -161,8 +160,6 @@
39
                filter->effect, "gamma");
40
        filter->chroma_param = gs_effect_get_param_by_name(
41
                filter->effect, "chroma_key");
42
-       filter->key_rgb_param = gs_effect_get_param_by_name(
43
-               filter->effect, "key_rgb");
44
        filter->pixel_size_param = gs_effect_get_param_by_name(
45
                filter->effect, "pixel_size");
46
        filter->similarity_param = gs_effect_get_param_by_name(
47
@@ -205,7 +202,6 @@
48
    gs_effect_set_float(filter->brightness_param, filter->brightness);
49
    gs_effect_set_float(filter->gamma_param, filter->gamma);
50
    gs_effect_set_vec2(filter->chroma_param, &filter->chroma);
51
-   gs_effect_set_vec4(filter->key_rgb_param, &filter->key_rgb);
52
    gs_effect_set_vec2(filter->pixel_size_param, &pixel_size);
53
    gs_effect_set_float(filter->similarity_param, filter->similarity);
54
    gs_effect_set_float(filter->smoothness_param, filter->smoothness);
55
@@ -251,7 +247,8 @@
56
    obs_properties_add_int_slider(props, SETTING_SPILL,
57
            TEXT_SPILL, 1, 1000, 1);
58
 
59
-   obs_properties_add_int(props, SETTING_OPACITY, TEXT_OPACITY, 0, 100, 1);
60
+   obs_properties_add_int_slider(props, SETTING_OPACITY, TEXT_OPACITY,
61
+           0, 100, 1);
62
    obs_properties_add_float_slider(props, SETTING_CONTRAST,
63
            TEXT_CONTRAST, -1.0, 1.0, 0.01);
64
    obs_properties_add_float_slider(props, SETTING_BRIGHTNESS,
65
obs-studio-23.1.0.tar.xz/plugins/obs-filters/color-key-filter.c -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/color-key-filter.c Changed
11
 
1
@@ -218,7 +218,8 @@
2
    obs_properties_add_int_slider(props, SETTING_SMOOTHNESS,
3
            TEXT_SMOOTHNESS, 1, 1000, 1);
4
 
5
-   obs_properties_add_int(props, SETTING_OPACITY, TEXT_OPACITY, 0, 100, 1);
6
+   obs_properties_add_int_slider(props, SETTING_OPACITY, TEXT_OPACITY,
7
+           0, 100, 1);
8
    obs_properties_add_float_slider(props, SETTING_CONTRAST,
9
            TEXT_CONTRAST, -1.0, 1.0, 0.01);
10
    obs_properties_add_float_slider(props, SETTING_BRIGHTNESS,
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/chroma_key_filter.effect -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/chroma_key_filter.effect Changed
9
 
1
@@ -12,7 +12,6 @@
2
 uniform float gamma;
3
 
4
 uniform float2 chroma_key;
5
-uniform float4 key_rgb;
6
 uniform float2 pixel_size;
7
 uniform float similarity;
8
 uniform float smoothness;
9
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/color_key_filter.effect -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/color_key_filter.effect Changed
9
 
1
@@ -42,7 +42,6 @@
2
 float4 ProcessColorKey(float4 rgba, VertData v_in)
3
 {
4
    float colorDist = GetColorDist(rgba.rgb);
5
-   float baseMask = colorDist - similarity;
6
    rgba.a *= saturate(max(colorDist - similarity, 0.0) / smoothness);
7
 
8
    return CalcColor(rgba);
9
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/ca-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/ca-ES.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Predefinits"
3
 Expander.Presets.Expander="Expansor"
4
 Expander.Presets.Gate="Porta"
5
+LumaKeyFilter="Clau Luma"
6
+Luma.LumaMax="Màx. Luma"
7
+Luma.LumaMin="Mín. Luma"
8
+Luma.LumaMaxSmooth="Suavitzat màx. Luma"
9
+Luma.LumaMinSmooth="Suavitzat mín. Luma"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/cs-CZ.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/cs-CZ.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Předvolby"
3
 Expander.Presets.Expander="Expander"
4
 Expander.Presets.Gate="Brána"
5
+LumaKeyFilter="Luma klíč"
6
+Luma.LumaMax="Luma maximum"
7
+Luma.LumaMin="Luma minimum"
8
+Luma.LumaMaxSmooth="Luma maximální vyhlazení"
9
+Luma.LumaMinSmooth="Luma minimální vyhlazení"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/da-DK.ini Changed
108
 
1
@@ -1,10 +1,10 @@
2
 ColorFilter="Farvekorrektion"
3
 ColorGradeFilter="Anvend LUT"
4
-MaskFilter="Billede maske/blanding"
5
-AsyncDelayFilter="Video forsinkelse (asynkron)"
6
+MaskFilter="Billedmaskering/-blanding"
7
+AsyncDelayFilter="Videoforsinkelse (asynkron)"
8
 CropFilter="Beskæring/Polstring"
9
 ScrollFilter="Rul"
10
-ChromaKeyFilter="Chroma nøgle"
11
+ChromaKeyFilter="Chroma-nøgle"
12
 ColorKeyFilter="Farvenøgle"
13
 SharpnessFilter="Skarphed"
14
 ScaleFilter="Skalering/Formatforhold"
15
@@ -16,11 +16,11 @@
16
 Gain="Forstærkning"
17
 DelayMs="Forsinkelse (millisekunder)"
18
 Type="Type"
19
-MaskBlendType.MaskColor="Alpha maske (farvekanal)"
20
-MaskBlendType.MaskAlpha="Alpha maske (Alpha kanal)"
21
-MaskBlendType.BlendMultiply="Blend (formere)"
22
-MaskBlendType.BlendAddition="Blanding (tilføjelse)"
23
-MaskBlendType.BlendSubtraction="Blanding (subtraktion)"
24
+MaskBlendType.MaskColor="Alpha-maske (farvekanal)"
25
+MaskBlendType.MaskAlpha="Alpha-maske (Alpha-kanal)"
26
+MaskBlendType.BlendMultiply="Bland (formere)"
27
+MaskBlendType.BlendAddition="Bland (tilføjelse)"
28
+MaskBlendType.BlendSubtraction="Bland (subtraktion)"
29
 Path="Sti"
30
 Color="Farve"
31
 Opacity="Gennemsigtighed"
32
@@ -29,11 +29,11 @@
33
 Gamma="Gamma"
34
 BrowsePath.Images="Alle billedfiler"
35
 BrowsePath.AllFiles="Alle filer"
36
-KeyColorType="Nøglefarve type"
37
-KeyColor="Nøglefarven"
38
-Similarity="Lighed (1-1000)"
39
-Smoothness="Glathed (1-1000)"
40
-ColorSpillReduction="Nøglefarve udslipsreduktion (1-1000)"
41
+KeyColorType="Nøglefarvetype"
42
+KeyColor="Nøglefarve"
43
+Similarity="Lighed (1-1.000)"
44
+Smoothness="Glathed (1-1.000)"
45
+ColorSpillReduction="Nøglefarve udslipsreduktion (1-1.000)"
46
 Crop.Left="Venstre"
47
 Crop.Right="Højre"
48
 Crop.Top="Top"
49
@@ -45,18 +45,18 @@
50
 ScrollFilter.SpeedY="Vertikal hastighed"
51
 ScrollFilter.LimitWidth="Begræns bredde"
52
 ScrollFilter.LimitHeight="Begræns højde"
53
-CustomColor="Brugerdefineret farve"
54
+CustomColor="Tilpasset farve"
55
 Red="Rød"
56
 Green="Grøn"
57
 Blue="Blå"
58
 Magenta="Magenta"
59
-NoiseGate.OpenThreshold="Åbne-tærskel (dB)"
60
-NoiseGate.CloseThreshold="Lukke-tærskel (dB)"
61
-NoiseGate.AttackTime="Effektueringstid (millisek.)"
62
+NoiseGate.OpenThreshold="Åbningstærskel (dB)"
63
+NoiseGate.CloseThreshold="Lukningstærskel (dB)"
64
+NoiseGate.AttackTime="Responstid (millisek.)"
65
 NoiseGate.HoldTime="Holdetid (millisek.)"
66
 NoiseGate.ReleaseTime="Frigivelsestid (millisek.)"
67
 Gain.GainDB="Forstærkning (dB)"
68
-StretchImage="Stræk billedet (ignorer størrelsesforhold)"
69
+StretchImage="Stræk billede (ignorér størrelsesforhold)"
70
 Resolution="Opløsning"
71
 Base.Canvas="Grundopløsning (lærred)"
72
 None="Ingen"
73
@@ -73,10 +73,10 @@
74
 Compressor="Kompressor"
75
 Compressor.Ratio="Forhold (X:1)"
76
 Compressor.Threshold="Grænse (dB)"
77
-Compressor.AttackTime="Attack (ms)"
78
-Compressor.ReleaseTime="Release (ms)"
79
-Compressor.OutputGain="Output øgning (dB)"
80
-Compressor.SidechainSource="Sidechain/Ducking-kilde"
81
+Compressor.AttackTime="Responstid (ms)"
82
+Compressor.ReleaseTime="Frigivelse (ms)"
83
+Compressor.OutputGain="Outputforstærkning (dB)"
84
+Compressor.SidechainSource="Sidechain-/Ducking-kilde"
85
 Limiter="Begrænser"
86
 Limiter.Threshold="Grænse (dB)"
87
 Limiter.ReleaseTime="Frigivelse (ms)"
88
@@ -85,12 +85,17 @@
89
 Expander.Threshold="Grænse (dB)"
90
 Expander.AttackTime="Responstid (ms)"
91
 Expander.ReleaseTime="Frigivelse (ms)"
92
-Expander.OutputGain="Udgangsforstærkning (dB)"
93
+Expander.OutputGain="Outputforstærkning (dB)"
94
 Expander.Detector="Detektering"
95
 Expander.RMS="RMS"
96
 Expander.Peak="Spids"
97
 Expander.None="Ingen"
98
 Expander.Presets="Forvalg"
99
 Expander.Presets.Expander="Expander"
100
-Expander.Presets.Gate="Port"
101
+Expander.Presets.Gate="Gate"
102
+LumaKeyFilter="Luma Key"
103
+Luma.LumaMax="Luma maks."
104
+Luma.LumaMin="Luma min."
105
+Luma.LumaMaxSmooth="Luma maks. glidende"
106
+Luma.LumaMinSmooth="Luma min. glidende"
107
 
108
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/de-DE.ini Changed
66
 
1
@@ -1,15 +1,15 @@
2
 ColorFilter="Farbkorrektur"
3
 ColorGradeFilter="LUT anwenden"
4
-MaskFilter="Bild Maske/Blend"
5
+MaskFilter="Bildmaske/-Vermischung"
6
 AsyncDelayFilter="Videoverzögerung (Asynchron)"
7
 CropFilter="Zuschneiden/Pad"
8
 ScrollFilter="Bewegung"
9
 ChromaKeyFilter="Chroma Key"
10
 ColorKeyFilter="Color Key"
11
-SharpnessFilter="Schärfen"
12
+SharpnessFilter="Schärfung"
13
 ScaleFilter="Skalierung/Seitenverhältnis"
14
 GPUDelayFilter="Renderverzögerung"
15
-UndistortCenter="Entzerre Mitte des Bildes bei der Skalierung von Ultraweitwinkel"
16
+UndistortCenter="Mitte des Bildes bei der Skalierung von Ultraweitwinkel entzerren"
17
 NoiseGate="Noise Gate"
18
 NoiseSuppress="Rauschunterdrückung"
19
 InvertPolarity="Audiopolarität umkehren"
20
@@ -19,8 +19,8 @@
21
 MaskBlendType.MaskColor="Alphamaske (Farbkanal)"
22
 MaskBlendType.MaskAlpha="Alphamaske (Alphakanal)"
23
 MaskBlendType.BlendMultiply="Blend (Multiplizieren)"
24
-MaskBlendType.BlendAddition="Blend (Addition)"
25
-MaskBlendType.BlendSubtraction="Blend (Subtraktion)"
26
+MaskBlendType.BlendAddition="Blend (Addieren)"
27
+MaskBlendType.BlendSubtraction="Blend (Subtrahieren)"
28
 Path="Pfad"
29
 Color="Farbe"
30
 Opacity="Deckkraft"
31
@@ -29,11 +29,11 @@
32
 Gamma="Gamma"
33
 BrowsePath.Images="Alle Bilddateien"
34
 BrowsePath.AllFiles="Alle Dateien"
35
-KeyColorType="Key-Farbe-Typ"
36
+KeyColorType="Key-Farbtyp"
37
 KeyColor="Key-Farbe"
38
-Similarity="Ähnlichkeit (1-1000)"
39
-Smoothness="Glätte (1-1000)"
40
-ColorSpillReduction="Key-Farbe Spill Reduktion (1-1000)"
41
+Similarity="Ähnlichkeit (1 — 1000)"
42
+Smoothness="Glätte (1 — 1000)"
43
+ColorSpillReduction="Key-Farbe-Spill-Reduzierung (1 — 1000)"
44
 Crop.Left="Links"
45
 Crop.Right="Rechts"
46
 Crop.Top="Oben"
47
@@ -76,7 +76,7 @@
48
 Compressor.AttackTime="Angriff (ms)"
49
 Compressor.ReleaseTime="Abfallzeit (ms)"
50
 Compressor.OutputGain="Ausgangspegel (dB)"
51
-Compressor.SidechainSource="Sidechain/Ducking Quelle"
52
+Compressor.SidechainSource="Sidechain-/Ducking-Quelle"
53
 Limiter="Begrenzer"
54
 Limiter.Threshold="Schwellenwert (dB)"
55
 Limiter.ReleaseTime="Abfallzeit (ms)"
56
@@ -93,4 +93,9 @@
57
 Expander.Presets="Voreinstellungen"
58
 Expander.Presets.Expander="Expander"
59
 Expander.Presets.Gate="Gate"
60
+LumaKeyFilter="Luma-Key"
61
+Luma.LumaMax="Max. Luma"
62
+Luma.LumaMin="Min. Luma"
63
+Luma.LumaMaxSmooth="Max. Luma-Glätte"
64
+Luma.LumaMinSmooth="Min. Luma-Glätte"
65
 
66
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/en-US.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/en-US.ini Changed
10
 
1
@@ -93,3 +93,8 @@
2
 Expander.Presets="Presets"
3
 Expander.Presets.Expander="Expander"
4
 Expander.Presets.Gate="Gate"
5
+LumaKeyFilter="Luma Key"
6
+Luma.LumaMax="Luma Max"
7
+Luma.LumaMin="Luma Min"
8
+Luma.LumaMaxSmooth="Luma Max Smooth"
9
+Luma.LumaMinSmooth="Luma Min Smooth"
10
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/es-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/es-ES.ini Changed
20
 
1
@@ -42,7 +42,7 @@
2
 Crop.Height="Alto"
3
 Crop.Relative="Relativo"
4
 ScrollFilter.SpeedX="Velocidad Horizontal"
5
-ScrollFilter.SpeedY="VElocidad Vertical"
6
+ScrollFilter.SpeedY="Velocidad Vertical"
7
 ScrollFilter.LimitWidth="Limitar el ancho"
8
 ScrollFilter.LimitHeight="Limitar la altura"
9
 CustomColor="Color Personalizado"
10
@@ -93,4 +93,9 @@
11
 Expander.Presets="Pre-ajustes"
12
 Expander.Presets.Expander="Expansor"
13
 Expander.Presets.Gate="Puerta"
14
+LumaKeyFilter="Clave Luma"
15
+Luma.LumaMax="Máx. Luma"
16
+Luma.LumaMin="Min. Luma"
17
+Luma.LumaMaxSmooth="Suavizado Máximo Luma"
18
+Luma.LumaMinSmooth="Suavizado Mínimo Luma"
19
 
20
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/eu-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/eu-ES.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Aurrez ezarritakoak"
3
 Expander.Presets.Expander="Deskonprimagailua"
4
 Expander.Presets.Gate="Atea"
5
+LumaKeyFilter="Luma gakoa"
6
+Luma.LumaMax="Luma max"
7
+Luma.LumaMin="Luma min"
8
+Luma.LumaMaxSmooth="Luma leuntasun max"
9
+Luma.LumaMinSmooth="Luma leuntasun min"
10
 
11
obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/fa-IR.ini Added
20
 
1
@@ -0,0 +1,18 @@
2
+ColorFilter="اصلاح رنگ"
3
+ColorGradeFilter="درخواست LUT"
4
+MaskFilter="تصویر ماسک/مخلوط"
5
+ChromaKeyFilter="صحنه کلیدی(کروماکی)"
6
+ColorKeyFilter="رنگ کلیدی"
7
+SharpnessFilter="تیزکردن"
8
+BrowsePath.AllFiles="همهی فایل ها"
9
+KeyColorType="نوع رنگ کلیدی"
10
+Crop.Left="چپ"
11
+Crop.Right="راست"
12
+Crop.Top="بالا"
13
+Crop.Bottom="پایین"
14
+Crop.Width="عرض"
15
+Crop.Height="ارتفاع"
16
+Red="قرمز"
17
+Green="سبز"
18
+ScaleFiltering.Area="ناحیه"
19
+
20
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/fi-FI.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/fi-FI.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Esiasetukset"
3
 Expander.Presets.Expander="Laajentaja"
4
 Expander.Presets.Gate="Gate"
5
+LumaKeyFilter="Luma-avain"
6
+Luma.LumaMax="Luma-maksimi"
7
+Luma.LumaMin="Luma-minimi"
8
+Luma.LumaMaxSmooth="Luma-maksimin pehmennys"
9
+Luma.LumaMinSmooth="Luma-minimin pehmennys"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/fr-FR.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/fr-FR.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Pré-réglages"
3
 Expander.Presets.Expander="Expandeur"
4
 Expander.Presets.Gate="Gate"
5
+LumaKeyFilter="Incrustation par luminance (Luma Key)"
6
+Luma.LumaMax="Luminance max."
7
+Luma.LumaMin="Luminance min."
8
+Luma.LumaMaxSmooth="Adoucissement luminance max."
9
+Luma.LumaMinSmooth="Adoucissement luminance min."
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/hu-HU.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/hu-HU.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Készletek"
3
 Expander.Presets.Expander="Expander"
4
 Expander.Presets.Gate="Kapu"
5
+LumaKeyFilter="Luma kulcs"
6
+Luma.LumaMax="Luma maximum"
7
+Luma.LumaMin="Luma minimum"
8
+Luma.LumaMaxSmooth="Luma maximum simított"
9
+Luma.LumaMinSmooth="Luma minimum simított"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/it-IT.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/it-IT.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Preset"
3
 Expander.Presets.Expander="Espansore"
4
 Expander.Presets.Gate="Sensibilità"
5
+LumaKeyFilter="Chiave Luma"
6
+Luma.LumaMax="Luma massima"
7
+Luma.LumaMin="Luma minima"
8
+Luma.LumaMaxSmooth="Sfumatura massima di Luma"
9
+Luma.LumaMinSmooth="Sfumatura minima di Luma"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/ja-JP.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/ja-JP.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="プリセット"
3
 Expander.Presets.Expander="エキスパンダー"
4
 Expander.Presets.Gate="ゲート"
5
+LumaKeyFilter="ルマキー"
6
+Luma.LumaMax="最大輝度"
7
+Luma.LumaMin="最小輝度"
8
+Luma.LumaMaxSmooth="ルマ最大スムーズ"
9
+Luma.LumaMinSmooth="ルマ最小スムーズ"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/ka-GE.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="მზა პარამეტრები"
3
 Expander.Presets.Expander="გამშლელი"
4
 Expander.Presets.Gate="ჩამკეტი"
5
+LumaKeyFilter="კაშკაშა არეების ჩანაცვლება (Luma Key)"
6
+Luma.LumaMax="სიკაშკაშის ზედა ზღვარი"
7
+Luma.LumaMin="სიკაშკაშის ქვედა ზღვარი"
8
+Luma.LumaMaxSmooth="სიკაშკაშის ზედა ზღვრის სიგლუვე"
9
+Luma.LumaMinSmooth="სიკაშკაშის ქვედა ზღვრის სიგლუვე"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/ko-KR.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/ko-KR.ini Changed
20
 
1
@@ -54,7 +54,7 @@
2
 NoiseGate.CloseThreshold="폐쇄 역치값 (dB)"
3
 NoiseGate.AttackTime="개방 준비 시간 (밀리세컨드)"
4
 NoiseGate.HoldTime="개방 유지 시간 (밀리세컨드)"
5
-NoiseGate.ReleaseTime="폐쇄  준비 시간 (밀리세컨드)"
6
+NoiseGate.ReleaseTime="폐쇄 준비 시간 (밀리세컨드)"
7
 Gain.GainDB="증폭 (dB)"
8
 StretchImage="이미지 늘리기 (이미지 가로 세로 비율 포기)"
9
 Resolution="해상도"
10
@@ -93,4 +93,9 @@
11
 Expander.Presets="사전 설정"
12
 Expander.Presets.Expander="확장기"
13
 Expander.Presets.Gate="게이트"
14
+LumaKeyFilter="루마 키"
15
+Luma.LumaMax="루마 최대값"
16
+Luma.LumaMin="루마 최소값"
17
+Luma.LumaMaxSmooth="루마 스무스 최대값"
18
+Luma.LumaMinSmooth="루마 스무스 최소값"
19
 
20
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/nb-NO.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/nb-NO.ini Changed
35
 
1
@@ -65,6 +65,7 @@
2
 ScaleFiltering.Bilinear="Bilineær"
3
 ScaleFiltering.Bicubic="Bikubisk"
4
 ScaleFiltering.Lanczos="Lanczos"
5
+ScaleFiltering.Area="Område"
6
 NoiseSuppress.SuppressLevel="Dempelse Nivå (dB)"
7
 Saturation="Metning"
8
 HueShift="Fargetone Skifte"
9
@@ -76,4 +77,25 @@
10
 Compressor.ReleaseTime="Slipp (ms)"
11
 Compressor.OutputGain="Utdataforsterkning (dB)"
12
 Compressor.SidechainSource="Lydduppe-kilde"
13
+Limiter="Begrenser"
14
+Limiter.Threshold="Terskel (dB)"
15
+Limiter.ReleaseTime="Slipp (ms)"
16
+Expander="Utvider"
17
+Expander.Ratio="Forhold (X:1)"
18
+Expander.Threshold="Terskel (dB)"
19
+Expander.AttackTime="Responstid (ms)"
20
+Expander.ReleaseTime="Slipp (ms)"
21
+Expander.OutputGain="Utdataforsterkning (dB)"
22
+Expander.Detector="Identifisering"
23
+Expander.RMS="RMS"
24
+Expander.Peak="Topp"
25
+Expander.None="Ingen"
26
+Expander.Presets="Forhåndsinnstillinger"
27
+Expander.Presets.Expander="Utvider"
28
+Expander.Presets.Gate="Port"
29
+LumaKeyFilter="Luma Key"
30
+Luma.LumaMax="Luma maks."
31
+Luma.LumaMin="Luma min."
32
+Luma.LumaMaxSmooth="Luma maks. glidende"
33
+Luma.LumaMinSmooth="Luma min. glidende"
34
 
35
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/pl-PL.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/pl-PL.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Predefiniowane"
3
 Expander.Presets.Expander="Expander"
4
 Expander.Presets.Gate="Brama"
5
+LumaKeyFilter="Kluczowanie luma key"
6
+Luma.LumaMax="Luma Max"
7
+Luma.LumaMin="Luma Min"
8
+Luma.LumaMaxSmooth="Luma wygładzanie max"
9
+Luma.LumaMinSmooth="Luma wygładzanie min"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/pt-BR.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/pt-BR.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Predefinições"
3
 Expander.Presets.Expander="Expansor"
4
 Expander.Presets.Gate="Portão"
5
+LumaKeyFilter="Luma Key"
6
+Luma.LumaMax="Luminância Máxima"
7
+Luma.LumaMin="Luminância Mínima"
8
+Luma.LumaMaxSmooth="Suavização da Luminância Máxima"
9
+Luma.LumaMinSmooth="Suavização da Luminância Mínima"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/ro-RO.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/ro-RO.ini Changed
41
 
1
@@ -7,6 +7,7 @@
2
 SharpnessFilter="Accentuare"
3
 ScaleFilter="Scalare/Rație Aspect"
4
 NoiseGate="Poartă de zgomot"
5
+InvertPolarity="Inversează polaritatea"
6
 Gain="Amplificare"
7
 DelayMs="Întârziere (milisecunde)"
8
 Type="Tip"
9
@@ -26,7 +27,7 @@
10
 KeyColorType="Tipul culorii cheie"
11
 KeyColor="Culoare cheie"
12
 Similarity="Similaritate (1-100)"
13
-Smoothness="Netezire (1-1000)"
14
+Smoothness="Netezime (1-1000)"
15
 ColorSpillReduction="Reducere pentru devărsarea culorii cheie (1-1000)"
16
 Crop.Left="Stânga"
17
 Crop.Right="Dreapta"
18
@@ -58,4 +59,22 @@
19
 ScaleFiltering.Bicubic="Bicubic"
20
 ScaleFiltering.Lanczos="Lanczos"
21
 Saturation="Saturație"
22
+Compressor="Compresor"
23
+Compressor.Ratio="Raport (X:1)"
24
+Compressor.Threshold="Prag (dB)"
25
+Compressor.AttackTime="Atacare (ms)"
26
+Compressor.ReleaseTime="Eliberare (ms)"
27
+Compressor.OutputGain="Amplificare pentru ieșire (dB)"
28
+Limiter="Limitor"
29
+Limiter.Threshold="Prag (dB)"
30
+Limiter.ReleaseTime="Eliberare (ms)"
31
+Expander.Ratio="Raport (X:1)"
32
+Expander.Threshold="Prag (dB)"
33
+Expander.OutputGain="Amplificare pentru ieșire (dB)"
34
+Expander.Detector="Detectare"
35
+Expander.RMS="RMS"
36
+Expander.Peak="Valoare de vârf"
37
+Expander.None="Niciuna"
38
+Expander.Presets="Presetări"
39
+Expander.Presets.Expander="Expandor"
40
 
41
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/ru-RU.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/ru-RU.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Предустановки"
3
 Expander.Presets.Expander="Экспандер"
4
 Expander.Presets.Gate="Гейт"
5
+LumaKeyFilter="Яркостный ключ"
6
+Luma.LumaMax="Макс. яркость"
7
+Luma.LumaMin="Мин. яркость"
8
+Luma.LumaMaxSmooth="Сглаживание макс. яркости"
9
+Luma.LumaMinSmooth="Сглаживание мин. яркости"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/sv-SE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/sv-SE.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="Förinställningar"
3
 Expander.Presets.Expander="Utvidgare"
4
 Expander.Presets.Gate="Port"
5
+LumaKeyFilter="Ljusstyrkefilter"
6
+Luma.LumaMax="Maximal ljusstyrka"
7
+Luma.LumaMin="Minimal ljusstyrka"
8
+Luma.LumaMaxSmooth="Max. utjämning av ljusstyrka"
9
+Luma.LumaMinSmooth="Min. utjämning av ljusstyrka"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/uk-UA.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/uk-UA.ini Changed
19
 
1
@@ -65,6 +65,7 @@
2
 ScaleFiltering.Bilinear="Білінійний"
3
 ScaleFiltering.Bicubic="Бікубічний"
4
 ScaleFiltering.Lanczos="Ланцош"
5
+ScaleFiltering.Area="Усереднення площ"
6
 NoiseSuppress.SuppressLevel="Рівень подавлення (дБ)"
7
 Saturation="Насиченість"
8
 HueShift="Відтінок"
9
@@ -92,4 +93,9 @@
10
 Expander.Presets="Шаблони"
11
 Expander.Presets.Expander="Експандер"
12
 Expander.Presets.Gate="Пороговий"
13
+LumaKeyFilter="Фільтр яскравості"
14
+Luma.LumaMax="Максимум яскравості"
15
+Luma.LumaMin="Мінімум яскравості"
16
+Luma.LumaMaxSmooth="Максимум яскравості припуск"
17
+Luma.LumaMinSmooth="Мінімум яскравості припуск"
18
 
19
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/zh-CN.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="预设"
3
 Expander.Presets.Expander="扩展效果"
4
 Expander.Presets.Gate="门限"
5
+LumaKeyFilter="亮度键"
6
+Luma.LumaMax="最大亮度"
7
+Luma.LumaMin="最小亮度"
8
+Luma.LumaMaxSmooth="最大亮度平滑"
9
+Luma.LumaMinSmooth="最小亮度平滑"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-filters/data/locale/zh-TW.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/locale/zh-TW.ini Changed
11
 
1
@@ -93,4 +93,9 @@
2
 Expander.Presets="預先設定"
3
 Expander.Presets.Expander="展開特效"
4
 Expander.Presets.Gate="開門特效"
5
+LumaKeyFilter="亮度鍵"
6
+Luma.LumaMax="亮度最大值"
7
+Luma.LumaMin="亮度最小值"
8
+Luma.LumaMaxSmooth="亮度最大平滑度"
9
+Luma.LumaMinSmooth="亮度最小平滑度"
10
 
11
obs-studio-23.2.0.tar.xz/plugins/obs-filters/data/luma_key_filter.effect Added
53
 
1
@@ -0,0 +1,51 @@
2
+uniform float4x4 ViewProj;
3
+uniform texture2d image;
4
+
5
+uniform float lumaMax;
6
+uniform float lumaMin;
7
+uniform float lumaMaxSmooth;
8
+uniform float lumaMinSmooth;
9
+
10
+sampler_state textureSampler {
11
+   Filter    = Linear;
12
+   AddressU  = Clamp;
13
+   AddressV  = Clamp;
14
+};
15
+
16
+struct VertData {
17
+   float4 pos : POSITION;
18
+   float2 uv  : TEXCOORD0;
19
+};
20
+
21
+VertData VSDefault(VertData v_in)
22
+{
23
+   VertData vert_out;
24
+   vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj);
25
+   vert_out.uv  = v_in.uv;
26
+   return vert_out;
27
+}
28
+
29
+float4 PSALumaKeyRGBA(VertData v_in) : TARGET
30
+{
31
+   float4 rgba = image.Sample(textureSampler, v_in.uv);
32
+
33
+   float4 lumaCoef = float4(0.2989, 0.5870, 0.1140, 0.0);
34
+
35
+   float luminance = dot(rgba, lumaCoef);
36
+
37
+   float clo = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luminance);
38
+   float chi = 1. - smoothstep(lumaMax - lumaMaxSmooth, lumaMax, luminance);
39
+
40
+   float amask = clo * chi;
41
+
42
+   return float4(rgba.rgb, amask);
43
+}
44
+
45
+technique Draw
46
+{
47
+   pass
48
+   {
49
+       vertex_shader = VSDefault(v_in);
50
+       pixel_shader  = PSALumaKeyRGBA(v_in);
51
+   }
52
+}
53
obs-studio-23.1.0.tar.xz/plugins/obs-filters/expander-filter.c -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/expander-filter.c Changed
179
 
1
@@ -47,12 +47,12 @@
2
 #define TEXT_PRESETS_EXP                MT_("expander.Presets.Expander")
3
 #define TEXT_PRESETS_GATE               MT_("expander.Presets.Gate")
4
 
5
-#define MIN_RATIO                       1.0
6
-#define MAX_RATIO                       20.0
7
-#define MIN_THRESHOLD_DB                -60.0
8
+#define MIN_RATIO                       1.0f
9
+#define MAX_RATIO                       20.0f
10
+#define MIN_THRESHOLD_DB                -60.0f
11
 #define MAX_THRESHOLD_DB                0.0f
12
-#define MIN_OUTPUT_GAIN_DB              -32.0
13
-#define MAX_OUTPUT_GAIN_DB              32.0
14
+#define MIN_OUTPUT_GAIN_DB              -32.0f
15
+#define MAX_OUTPUT_GAIN_DB              32.0f
16
 #define MIN_ATK_RLS_MS                  1
17
 #define MAX_RLS_MS                      1000
18
 #define MAX_ATK_MS                      100
19
@@ -101,36 +101,36 @@
20
 static void resize_env_buffer(struct expander_data *cd, size_t len)
21
 {
22
    cd->envelope_buf_len = len;
23
-   for (int i = 0; i < MAX_AUDIO_CHANNELS; i++) {
24
-       cd->envelope_buf[i] = brealloc(cd->envelope_buf[i], len * sizeof(float));
25
-   }
26
+   for (int i = 0; i < MAX_AUDIO_CHANNELS; i++)
27
+       cd->envelope_buf[i] = brealloc(cd->envelope_buf[i],
28
+               cd->envelope_buf_len * sizeof(float));
29
 }
30
 
31
 static void resize_runaverage_buffer(struct expander_data *cd, size_t len)
32
 {
33
    cd->runaverage_len = len;
34
-   for (int i = 0; i < MAX_AUDIO_CHANNELS; i++) {
35
-       cd->runaverage[i] = brealloc(cd->runaverage[i], len * sizeof(float));
36
-   }
37
+   for (int i = 0; i < MAX_AUDIO_CHANNELS; i++)
38
+       cd->runaverage[i] = brealloc(cd->runaverage[i],
39
+               cd->runaverage_len * sizeof(float));
40
 }
41
 
42
 static void resize_env_in_buffer(struct expander_data *cd, size_t len)
43
 {
44
    cd->env_in_len = len;
45
-   cd->env_in = brealloc(cd->env_in, len * sizeof(float));
46
+   cd->env_in = brealloc(cd->env_in, cd->env_in_len * sizeof(float));
47
 }
48
 
49
 static void resize_gaindB_buffer(struct expander_data *cd, size_t len)
50
 {
51
    cd->gaindB_len = len;
52
-   for (int i = 0; i < MAX_AUDIO_CHANNELS; i++) {
53
-       cd->gaindB[i] = brealloc(cd->gaindB[i], len * sizeof(float));
54
-   }
55
+   for (int i = 0; i < MAX_AUDIO_CHANNELS; i++)
56
+       cd->gaindB[i] = brealloc(cd->gaindB[i],
57
+               cd->gaindB_len * sizeof(float));
58
 }
59
 
60
 static inline float gain_coefficient(uint32_t sample_rate, float time)
61
 {
62
-   return (float)exp(-1.0f / (sample_rate * time));
63
+   return expf(-1.0f / (sample_rate * time));
64
 }
65
 
66
 static const char *expander_name(void *unused)
67
@@ -249,22 +249,21 @@
68
 static void analyze_envelope(struct expander_data *cd,
69
    float **samples, const uint32_t num_samples)
70
 {
71
-   if (cd->envelope_buf_len < num_samples) {
72
+   if (cd->envelope_buf_len < num_samples)
73
        resize_env_buffer(cd, num_samples);
74
-   }
75
-   if (cd->runaverage_len < num_samples) {
76
+   if (cd->runaverage_len < num_samples)
77
        resize_runaverage_buffer(cd, num_samples);
78
-   }
79
-   if (cd->env_in_len < num_samples) {
80
+   if (cd->env_in_len < num_samples)
81
        resize_env_in_buffer(cd, num_samples);
82
-   }
83
 
84
    // 10 ms RMS window
85
-   const float rmscoef = exp2f((float)-100.0 / (float)cd->sample_rate);
86
+   const float rmscoef = exp2f(-100.0f / cd->sample_rate);
87
 
88
    for (int i = 0; i < MAX_AUDIO_CHANNELS; i++) {
89
-       memset(cd->envelope_buf[i], 0, num_samples * sizeof(cd->envelope_buf[i][0]));
90
-       memset(cd->runaverage[i], 0, num_samples * sizeof(cd->runaverage[i][0]));
91
+       memset(cd->envelope_buf[i], 0,
92
+               num_samples * sizeof(cd->envelope_buf[i][0]));
93
+       memset(cd->runaverage[i], 0,
94
+               num_samples * sizeof(cd->runaverage[i][0]));
95
    }
96
    memset(cd->env_in, 0, num_samples * sizeof(cd->env_in[0]));
97
 
98
@@ -275,16 +274,15 @@
99
        float *envelope_buf = cd->envelope_buf[chan];
100
        float *runave = cd->runaverage[chan];
101
        float *env_in = cd->env_in;
102
-       float RMSdet = 0;
103
 
104
        if (cd->detector == RMS_DETECT) {
105
            runave[0] = rmscoef * cd->runave[chan] +
106
-               (1 - rmscoef) * powf(samples[chan][0], 2.0);
107
+               (1 - rmscoef) * powf(samples[chan][0], 2.0f);
108
            env_in[0] = sqrtf(fmaxf(runave[0], 0));
109
            for (uint32_t i = 1; i < num_samples; ++i) {
110
                runave[i] = rmscoef * runave[i - 1] +
111
                    (1 - rmscoef) *
112
-                   powf(samples[chan][i], 2.0);
113
+                   powf(samples[chan][i], 2.0f);
114
                env_in[i] = sqrtf(runave[i]);
115
            }
116
        } else if (cd->detector == PEAK_DETECT) {
117
@@ -305,7 +303,6 @@
118
 static inline void process_expansion(struct expander_data *cd,
119
    float **samples, uint32_t num_samples)
120
 {
121
-
122
    const float attack_gain = cd->attack_gain;
123
    const float release_gain = cd->release_gain;
124
 
125
@@ -318,24 +315,29 @@
126
        for (size_t i = 0; i < num_samples; ++i) {
127
            // gain stage of expansion
128
            float env_db = mul_to_db(cd->envelope_buf[chan][i]);
129
-           float gain = cd->threshold - env_db > 0 ?
130
-                   fmaxf(cd->slope * (cd->threshold - env_db),
131
-                   -60.0) : 0;
132
+           float gain = cd->threshold - env_db > 0.0f ?
133
+                   fmaxf(cd->slope *
134
+                   (cd->threshold - env_db), -60.0f) :
135
+                   0.0f;
136
            // ballistics (attack/release)
137
            if (i > 0) {
138
                if (gain > cd->gaindB[chan][i - 1])
139
-                   cd->gaindB[chan][i] = attack_gain * cd->gaindB[chan][i - 1]
140
-                   + (1 - attack_gain) * gain;
141
+                   cd->gaindB[chan][i] = attack_gain *
142
+                   cd->gaindB[chan][i - 1] +
143
+                   (1.0f - attack_gain) * gain;
144
                else
145
-                   cd->gaindB[chan][i] = release_gain * cd->gaindB[chan][i - 1]
146
-                   + (1 - release_gain) * gain;
147
+                   cd->gaindB[chan][i] = release_gain *
148
+                   cd->gaindB[chan][i - 1] +
149
+                   (1.0f - release_gain) * gain;
150
            } else {
151
                if (gain > cd->gaindB_buf[chan])
152
-                   cd->gaindB[chan][i] = attack_gain * cd->gaindB_buf[chan]
153
-                   + (1 - attack_gain) * gain;
154
+                   cd->gaindB[chan][i] = attack_gain *
155
+                   cd->gaindB_buf[chan] +
156
+                   (1.0f - attack_gain) * gain;
157
                else
158
-                   cd->gaindB[chan][i] = release_gain * cd->gaindB_buf[chan]
159
-                   + (1 - release_gain) * gain;
160
+                   cd->gaindB[chan][i] = release_gain *
161
+                   cd->gaindB_buf[chan] +
162
+                   (1.0f - release_gain) * gain;
163
            }
164
 
165
            gain = db_to_mul(fminf(0, cd->gaindB[chan][i]));
166
@@ -373,12 +375,7 @@
167
 
168
 static obs_properties_t *expander_properties(void *data)
169
 {
170
-   struct expander_data *cd = data;
171
    obs_properties_t *props = obs_properties_create();
172
-   obs_source_t *parent = NULL;
173
-
174
-   if (cd)
175
-       parent = obs_filter_get_parent(cd->context);
176
 
177
    obs_property_t *presets = obs_properties_add_list(props, S_PRESETS,
178
            TEXT_PRESETS, OBS_COMBO_TYPE_LIST,
179
obs-studio-23.1.0.tar.xz/plugins/obs-filters/limiter-filter.c -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/limiter-filter.c Changed
9
 
1
@@ -192,7 +192,6 @@
2
 
3
 static obs_properties_t *limiter_properties(void *data)
4
 {
5
-   struct limiter_data *cd    = data;
6
    obs_properties_t *props = obs_properties_create();
7
 
8
    obs_properties_add_float_slider(props, S_THRESHOLD, TEXT_THRESHOLD, MIN_THRESHOLD_DB, MAX_THRESHOLD_DB, 0.1);
9
obs-studio-23.2.0.tar.xz/plugins/obs-filters/luma-key-filter.c Added
155
 
1
@@ -0,0 +1,153 @@
2
+#include <obs-module.h>
3
+
4
+#define SETTING_LUMA_MAX           "luma_max"
5
+#define SETTING_LUMA_MIN           "luma_min"
6
+#define SETTING_LUMA_MAX_SMOOTH    "luma_max_smooth"
7
+#define SETTING_LUMA_MIN_SMOOTH    "luma_min_smooth"
8
+
9
+#define TEXT_LUMA_MAX           obs_module_text("Luma.LumaMax")
10
+#define TEXT_LUMA_MIN           obs_module_text("Luma.LumaMin")
11
+#define TEXT_LUMA_MAX_SMOOTH    obs_module_text("Luma.LumaMaxSmooth")
12
+#define TEXT_LUMA_MIN_SMOOTH    obs_module_text("Luma.LumaMinSmooth")
13
+
14
+struct luma_key_filter_data {
15
+   obs_source_t    *context;
16
+
17
+   gs_effect_t     *effect;
18
+
19
+   gs_eparam_t     *luma_max_param;
20
+   gs_eparam_t     *luma_min_param;
21
+   gs_eparam_t     *luma_max_smooth_param;
22
+   gs_eparam_t     *luma_min_smooth_param;
23
+
24
+   float           luma_max;
25
+   float           luma_min;
26
+   float           luma_max_smooth;
27
+   float           luma_min_smooth;
28
+};
29
+
30
+static const char *luma_key_name(void *unused)
31
+{
32
+   UNUSED_PARAMETER(unused);
33
+   return obs_module_text("LumaKeyFilter");
34
+}
35
+
36
+static void luma_key_update(void *data, obs_data_t *settings)
37
+{
38
+   struct luma_key_filter_data *filter = data;
39
+
40
+   double lumaMax = obs_data_get_double(settings, SETTING_LUMA_MAX);
41
+   double lumaMin = obs_data_get_double(settings, SETTING_LUMA_MIN);
42
+   double lumaMaxSmooth = obs_data_get_double(settings, SETTING_LUMA_MAX_SMOOTH);
43
+   double lumaMinSmooth = obs_data_get_double(settings, SETTING_LUMA_MIN_SMOOTH);
44
+
45
+   filter->luma_max = (float)lumaMax;
46
+   filter->luma_min = (float)lumaMin;
47
+   filter->luma_max_smooth = (float)lumaMaxSmooth;
48
+   filter->luma_min_smooth = (float)lumaMinSmooth;
49
+}
50
+
51
+static void luma_key_destroy(void *data)
52
+{
53
+   struct luma_key_filter_data *filter = data;
54
+
55
+   if (filter->effect) {
56
+       obs_enter_graphics();
57
+       gs_effect_destroy(filter->effect);
58
+       obs_leave_graphics();
59
+   }
60
+
61
+   bfree(data);
62
+}
63
+
64
+static void *luma_key_create(obs_data_t *settings, obs_source_t *context)
65
+{
66
+   struct luma_key_filter_data *filter =
67
+           bzalloc(sizeof(struct luma_key_filter_data));
68
+   char *effect_path = obs_module_file("luma_key_filter.effect");
69
+
70
+   filter->context = context;
71
+
72
+   obs_enter_graphics();
73
+
74
+   filter->effect = gs_effect_create_from_file(effect_path, NULL);
75
+   if (filter->effect) {
76
+       filter->luma_max_param = gs_effect_get_param_by_name(
77
+               filter->effect, "lumaMax");
78
+       filter->luma_min_param = gs_effect_get_param_by_name(
79
+               filter->effect, "lumaMin");
80
+       filter->luma_max_smooth_param = gs_effect_get_param_by_name(
81
+               filter->effect, "lumaMaxSmooth");
82
+       filter->luma_min_smooth_param = gs_effect_get_param_by_name(
83
+               filter->effect, "lumaMinSmooth");
84
+   }
85
+
86
+   obs_leave_graphics();
87
+
88
+   bfree(effect_path);
89
+
90
+   if (!filter->effect) {
91
+       luma_key_destroy(filter);
92
+       return NULL;
93
+   }
94
+
95
+   luma_key_update(filter, settings);
96
+   return filter;
97
+}
98
+
99
+static void luma_key_render(void *data, gs_effect_t *effect)
100
+{
101
+   struct luma_key_filter_data *filter = data;
102
+
103
+   if (!obs_source_process_filter_begin(filter->context, GS_RGBA,
104
+            OBS_ALLOW_DIRECT_RENDERING))
105
+       return;
106
+
107
+   gs_effect_set_float(filter->luma_max_param, filter->luma_max);
108
+   gs_effect_set_float(filter->luma_min_param, filter->luma_min);
109
+   gs_effect_set_float(filter->luma_max_smooth_param, filter->luma_max_smooth);
110
+   gs_effect_set_float(filter->luma_min_smooth_param, filter->luma_min_smooth);
111
+
112
+   obs_source_process_filter_end(filter->context, filter->effect, 0, 0);
113
+
114
+   UNUSED_PARAMETER(effect);
115
+}
116
+
117
+static obs_properties_t *luma_key_properties(void *data)
118
+{
119
+   obs_properties_t *props = obs_properties_create();
120
+
121
+   obs_properties_add_float_slider(props, SETTING_LUMA_MAX,
122
+           TEXT_LUMA_MAX, 0, 1, 0.01);
123
+   obs_properties_add_float_slider(props, SETTING_LUMA_MAX_SMOOTH,
124
+           TEXT_LUMA_MAX_SMOOTH, 0, 1, 0.01);
125
+   obs_properties_add_float_slider(props, SETTING_LUMA_MIN,
126
+           TEXT_LUMA_MIN, 0, 1, 0.01);
127
+   obs_properties_add_float_slider(props, SETTING_LUMA_MIN_SMOOTH,
128
+           TEXT_LUMA_MIN_SMOOTH, 0, 1, 0.01);
129
+
130
+   UNUSED_PARAMETER(data);
131
+   return props;
132
+}
133
+
134
+static void luma_key_defaults(obs_data_t *settings)
135
+{
136
+   obs_data_set_default_double(settings, SETTING_LUMA_MAX, 1.0);
137
+   obs_data_set_default_double(settings, SETTING_LUMA_MIN, 0.0);
138
+   obs_data_set_default_double(settings, SETTING_LUMA_MAX_SMOOTH, 0.0);
139
+   obs_data_set_default_double(settings, SETTING_LUMA_MIN_SMOOTH, 0.0);
140
+}
141
+
142
+
143
+struct obs_source_info luma_key_filter = {
144
+   .id                            = "luma_key_filter",
145
+   .type                          = OBS_SOURCE_TYPE_FILTER,
146
+   .output_flags                  = OBS_SOURCE_VIDEO,
147
+   .get_name                      = luma_key_name,
148
+   .create                        = luma_key_create,
149
+   .destroy                       = luma_key_destroy,
150
+   .video_render                  = luma_key_render,
151
+   .update                        = luma_key_update,
152
+   .get_properties                = luma_key_properties,
153
+   .get_defaults                  = luma_key_defaults
154
+};
155
obs-studio-23.1.0.tar.xz/plugins/obs-filters/mask-filter.c -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/mask-filter.c Changed
19
 
1
@@ -46,6 +46,7 @@
2
    int opacity = (int)obs_data_get_int(settings, SETTING_OPACITY);
3
    char *effect_path;
4
 
5
+   color &= 0xFFFFFF;
6
    color |= (uint32_t)(((double)opacity) * 2.55) << 24;
7
 
8
    vec4_from_rgba(&filter->color, color);
9
@@ -115,7 +116,8 @@
10
    obs_properties_add_path(props, SETTING_IMAGE_PATH, TEXT_IMAGE_PATH,
11
            OBS_PATH_FILE, filter_str.array, NULL);
12
    obs_properties_add_color(props, SETTING_COLOR, TEXT_COLOR);
13
-   obs_properties_add_int(props, SETTING_OPACITY, TEXT_OPACITY, 0, 100, 1);
14
+   obs_properties_add_int_slider(props, SETTING_OPACITY, TEXT_OPACITY,
15
+           0, 100, 1);
16
    obs_properties_add_bool(props, SETTING_STRETCH, TEXT_STRETCH);
17
 
18
    dstr_free(&filter_str);
19
obs-studio-23.1.0.tar.xz/plugins/obs-filters/obs-filters.c -> obs-studio-23.2.0.tar.xz/plugins/obs-filters/obs-filters.c Changed
16
 
1
@@ -28,6 +28,7 @@
2
 extern struct obs_source_info compressor_filter;
3
 extern struct obs_source_info limiter_filter;
4
 extern struct obs_source_info expander_filter;
5
+extern struct obs_source_info luma_key_filter;
6
 
7
 bool obs_module_load(void)
8
 {
9
@@ -51,5 +52,6 @@
10
    obs_register_source(&compressor_filter);
11
    obs_register_source(&limiter_filter);
12
    obs_register_source(&expander_filter);
13
+   obs_register_source(&luma_key_filter);
14
    return true;
15
 }
16
obs-studio-23.1.0.tar.xz/plugins/obs-libfdk/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-libfdk/data/locale/da-DK.ini Changed
8
 
1
@@ -1,4 +1,4 @@
2
 LibFDK="libfdk AAC Encoder"
3
-Bitrate="Bitrate"
4
-Afterburner="Aktivere AAC Afterburner"
5
+Bitrate="Bit-hastighed"
6
+Afterburner="Aktivér AAC Afterburner"
7
 
8
obs-studio-23.1.0.tar.xz/plugins/obs-libfdk/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-libfdk/data/locale/de-DE.ini Changed
8
 
1
@@ -1,4 +1,4 @@
2
-LibFDK="libfdk AAC Codierer"
3
+LibFDK="libfdk-AAC-Kodierer"
4
 Bitrate="Bitrate"
5
-Afterburner="AAC Afterburner aktivieren"
6
+Afterburner="AAC-Afterburner aktivieren"
7
 
8
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/ca-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/ca-ES.ini Changed
9
 
1
@@ -10,6 +10,6 @@
2
 ConnectionReset="La connexió s'ha acabat. Normalment això indica que hi ha problemes de connexió entre el vostre equip i el servei de transmissió."
3
 HostNotFound="Nom d'amfitrió no trobat. Assegureu-vos que hi hagi configurat un servidor de transmissió vàlid i que la seva connexió a Internet / DNS estiguin funcionant correctament."
4
 NoData="S'ha trobat el nom d'amfitrió, però no hi ha dades del tipus sol·licitat. Això pot passar si heu enllaçat a una adreça IPv6 i el seu servei de transmissió només té adreces IPv4 (veieu configuració → avançada)."
5
-AddressNotAvailable="Adreça no disponible. Potser heu intentat enllaçar amb una adreça IP no vàlida  (veieu configuració → avançada)."
6
+AddressNotAvailable="Adreça no disponible. Potser heu intentat enllaçar amb una adreça IP no vàlida (veieu configuració → avançada)."
7
 SSLCertVerifyFailed="El servidor RTMP ha enviat un certificat SSL no vàlid."
8
 
9
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/da-DK.ini Changed
26
 
1
@@ -1,15 +1,15 @@
2
 RTMPStream="RTMP Strøm"
3
-RTMPStream.DropThreshold="Tabstærskel (millisekunder)"
4
-FLVOutput="FLV File Output"
5
+RTMPStream.DropThreshold="Drop-tærskel (millisek.)"
6
+FLVOutput="FLV-fil output"
7
 FLVOutput.FilePath="Filsti"
8
 Default="Standard"
9
 
10
-ConnectionTimedOut="Forbindelsen fik timeout. Tjek venligst at du har opsat en gyldig streaming-tjeneste og at ingen firewall blokerer forbindelsen."
11
-PermissionDenied="Forbindelsen blev blokeret. Tjek venligst indstillingerne for firewall/antivirus for at sikre, at OBS har fuld adgang til Internet."
12
-ConnectionAborted="Forbindelsen blev afbrudt. Dette indikerer typisk et problem med Internetforbindelsen mellem dig og streaming-tjenesten."
13
-ConnectionReset="Forbindelsen blev afbrudt. Dette indikerer typisk et problem med Internetforbindelsen mellem dig og streaming-tjenesten."
14
-HostNotFound="Værtsnavn ikke fundet. Tjek at du har angivet en gyldig streaming-server, og at din Internetforbindelse/DNS fungerer korrekt."
15
-NoData="Værtsnavn fundet, men ingen data af den forespurgte type. Dette kan forekomme, hvis du har tilknyttet en IPv6-adresse, og din streamingtjeneste alene benytter IPv4-adresser (se Indstillinger → Avanceret)."
16
-AddressNotAvailable="Adresse utilgængelig. Du kan have forsøgt at tilknytte en ugyldig IP-adresse (se Indstillinger → Avanceret)."
17
+ConnectionTimedOut="Forbindelsen fik timeout. Tjek, at du har opsat en gyldig streamingtjeneste samt at ingen firewall blokerer forbindelsen."
18
+PermissionDenied="Forbindelsen blev blokeret. Tjek indstillingerne for firewall/antivirus for at sikre, at OBS har fuld Internetadgang."
19
+ConnectionAborted="Forbindelsen blev afbrudt. Dette indikerer typisk et problem med Internetforbindelsen mellem dig og streamingtjenesten."
20
+ConnectionReset="Forbindelsen afbrudt af modpart. Dette indikerer typisk et problem med Internetforbindelsen mellem dig og streamingtjenesten."
21
+HostNotFound="Værtsnavn ikke fundet. Tjek, at du har angivet en gyldig streamingserver, samt at din Internetforbindelse/DNS fungerer korrekt."
22
+NoData="Værtsnavn fundet, men ingen data af den forespurgte type. Kan f.eks. forekomme ved en tilknyttet IPv6-adresse ifm. en streamingtjeneste, der alene benytter IPv4-adresser (se Indstillinger → Avanceret)."
23
+AddressNotAvailable="Adresse utilgængelig. En ugyldig IP-adresse kan være forsøgt tilknyttet (se Indstillinger → Avanceret)."
24
 SSLCertVerifyFailed="RTMP-serveren har sendt et ugyldig SSL-certifikat."
25
 
26
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/de-DE.ini Changed
11
 
1
@@ -1,6 +1,6 @@
2
-RTMPStream="RTMP Stream"
3
-RTMPStream.DropThreshold="Drop Threshold (Millisekunden)"
4
-FLVOutput="FLV Dateiausgabe"
5
+RTMPStream="RTMP-Stream"
6
+RTMPStream.DropThreshold="Drop-Threshold (Millisekunden)"
7
+FLVOutput="FLV-Dateiausgabe"
8
 FLVOutput.FilePath="Dateipfad"
9
 Default="Standard"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/en-US.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/en-US.ini Changed
10
 
1
@@ -9,6 +9,6 @@
2
 ConnectionAborted="The connection was aborted. This usually indicates internet connection problems between you and the streaming service."
3
 ConnectionReset="The connection was reset by the peer. This usually indicates internet connection problems between you and the streaming service."
4
 HostNotFound="Hostname not found. Make sure you entered a valid streaming server and your internet connection / DNS are working correctly."
5
-NoData="Hostname found, but no data of the requested type. This can occur if you have bound to an IPv6 address and your streaming service only has IPv4 addresses (see  Settings → Advanced)."
6
-AddressNotAvailable="Address not available. You may have tried to bind to an invalid IP address (see  Settings → Advanced)."
7
+NoData="Hostname found, but no data of the requested type. This can occur if you have bound to an IPv6 address and your streaming service only has IPv4 addresses (see Settings → Advanced)."
8
+AddressNotAvailable="Address not available. You may have tried to bind to an invalid IP address (see Settings → Advanced)."
9
 SSLCertVerifyFailed="The RTMP server sent an invalid SSL certificate."
10
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/ja-JP.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/ja-JP.ini Changed
10
 
1
@@ -9,7 +9,7 @@
2
 ConnectionAborted="接続は中止されました。配信サービスとの間のインターネット接続に問題があることを示しています。"
3
 ConnectionReset="接続はピアによってリセットされました。 配信サービスとの間のインターネット接続に問題があることを示しています。"
4
 HostNotFound="ホスト名が見つかりません。 有効なストリーミングサーバーを入力していることとインターネット接続/DNSが正しく機能していることを確認してください。"
5
-NoData="ホスト名が見つかりましたが、要求されたタイプのデータがありません。 これはIPv6アドレスにバインドしている状態で配信サービスにIPv4アドレスしかない場合に発生します。  (設定 → 詳細設定 を参照)"
6
+NoData="ホスト名が見つかりましたが、要求されたタイプのデータがありません。 これはIPv6アドレスにバインドしている状態で配信サービスにIPv4アドレスしかない場合に発生します。 (設定 → 詳細設定 を参照)"
7
 AddressNotAvailable="アドレスを利用できません。 無効なIPアドレスにバインドしようとした可能性があります。 (設定 → 詳細設定 を参照)"
8
 SSLCertVerifyFailed="RTMPサーバーが無効なSSL証明書を送信しました。"
9
 
10
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/ka-GE.ini Changed
19
 
1
@@ -1,6 +1,6 @@
2
 RTMPStream="RTMP-ნაკადი"
3
 RTMPStream.DropThreshold="ქვედა ზღურბლი (მილიწამი)"
4
-FLVOutput="გამომავალი FLV-ფაილი"
5
+FLVOutput="გამოტანილი FLV-ფაილი"
6
 FLVOutput.FilePath="ფაილის მისამართი"
7
 Default="ნაგულისხმევი"
8
 
9
@@ -9,7 +9,7 @@
10
 ConnectionAborted="კავშირი გაუქმდა. ძირითადად, ეს მიუთითებს ინტერნეტკავშირის ხარვეზების არსებობას, თქვენსა და ნაკადის გაშვების მომსახურების მომწოდებელს შორის."
11
 ConnectionReset="კავშირი გაწყდა ერთ-ერთი მხარის მიერ. ძირითადად, ეს მიუთითებს ინტერნეტკავშირის ხარვეზების არსებობას, თქვენსა და ნაკადის გაშვების მომსახურების მომწოდებელს შორის."
12
 HostNotFound="დაკავშირების წერტილი ვერ მოიძებნა. დარწმუნდით, რომ სწორად უთითებთ ნაკადის გაშვების მომსახურების მონაცემებს და თქვენი DNS / ინტერნეტკავშირის პარამეტრებიც სწორადაა გამართული."
13
-NoData="დაკავშირების წერტილი მოიძებნა, მაგრამ მოთხოვნილი სახის მონაცემები არა. ეს შეიძლება გამოწვეული იყოს იმით, რომ თქვენ უკავშირდებით IPv6 მისამართზე, ხოლო თქვენს ნაკადის გაშვების მომსახურებას, მხოლოდ IPv4 მისამართები გააჩნია (იხილეთ  პარამეტრები → დამატებითი)."
14
-AddressNotAvailable="მისამართი მიუწვდომელია. შესაძლოა, თქვენ ცდილობთ მცდარ IP მისამართზე დაკავშირებას (იხილეთ  პარამეტრები → დამატებით)."
15
+NoData="დაკავშირების წერტილი მოიძებნა, მაგრამ მოთხოვნილი სახის მონაცემები არა. ეს შეიძლება გამოწვეული იყოს იმით, რომ თქვენ უკავშირდებით IPv6 მისამართზე, ხოლო თქვენს ნაკადის გაშვების მომსახურებას, მხოლოდ IPv4 მისამართები გააჩნია (იხილეთ პარამეტრები → დამატებითი)."
16
+AddressNotAvailable="მისამართი მიუწვდომელია. შესაძლოა, თქვენ ცდილობთ მცდარ IP-მისამართზე დაკავშირებას (იხილეთ პარამეტრები → დამატებით)."
17
 SSLCertVerifyFailed="RTMP სერვერმა გაგზავნა არამართებული SSL სერტიფიკატი."
18
 
19
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/ko-KR.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/ko-KR.ini Changed
9
 
1
@@ -10,6 +10,6 @@
2
 ConnectionReset="상호 연결 문제로 초기화되었습니다. 보통 사용자와 방송 서비스 간의 연결 상태에 문제가 있음을 의미합니다."
3
 HostNotFound="호스트 이름을 찾을 수 없습니다. 방송 서버 정보가 제대로 입력되었는지 확인하고, 인터넷 접속 혹은 DNS가 제대로 작동하고 있는지 점검하십시오."
4
 NoData="호스트 이름은 찾았지만 요청한 형식의 데이터가 없습니다. 이 문제는 보통 사용자가 IPv6 형식의 주소를 고정하여 사용하면서 IPv4 형식의 주소만 지원하는 방송 서비스에 접속을 시도한 경우 나타납니다 (설정 → 고급 창을 확인하세요)."
5
-AddressNotAvailable="주소를 사용할 수 없습니다. 잘못된 IP주소를 고정하고 있습니다 (설정 →  고급 창을 확인하세요)."
6
+AddressNotAvailable="주소를 사용할 수 없습니다. 잘못된 IP주소를 고정하고 있습니다 (설정 → 고급 창을 확인하세요)."
7
 SSLCertVerifyFailed="해당 RTMP 서버는 잘못된 SSL 인증서를 보냈습니다."
8
 
9
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/nb-NO.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/nb-NO.ini Changed
9
 
1
@@ -9,5 +9,7 @@
2
 ConnectionAborted="Tilkoblingen ble avbrutt. Dette betyr vanligvis at det er problemer med nettverkskoblingen mellom deg og strømmetjenesten."
3
 ConnectionReset="Tilkoblingen ble avbrutt. Dette betyr vanligvis at det er problemer med nettverkskoblingen mellom deg og strømmetjenesten."
4
 HostNotFound="Tjeneren ble ikke funnet. Kontroller at du har angitt en gyldig streaming server og at tilkoblingen / DNS fungerer."
5
+NoData="Tjeneren funnet, men ingen data for den forespurte typen. Dette kan skje hvis du har bundet til en IPv6-adresse og streaming tjeneste har bare IPv4-adresser (se Innstillinger → Avansert)."
6
+AddressNotAvailable="Adresse ikke tilgjengelig. Du prøvde å binde til en ugyldig IP-adresse (se Innstillinger → Avansert)."
7
 SSLCertVerifyFailed="RTMP-tjeneren sendte et ugyldig SSL-sertifikat."
8
 
9
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/pl-PL.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/pl-PL.ini Changed
10
 
1
@@ -1,7 +1,7 @@
2
 RTMPStream="Strumień RTMP"
3
 RTMPStream.DropThreshold="Próg odrzucania (w milisekundach)"
4
 FLVOutput="Wyjście do pliku FLV"
5
-FLVOutput.FilePath="Scieżka do pliku"
6
+FLVOutput.FilePath="Ścieżka pliku"
7
 Default="Domyślne"
8
 
9
 ConnectionTimedOut="Upłynął limit czasu połączenia. Upewnij się, że usługa strumieniowania jest poprawnie skonfigurowana a zapora internetowa nie blokuje połączenia."
10
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/sv-SE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/sv-SE.ini Changed
11
 
1
@@ -9,7 +9,7 @@
2
 ConnectionAborted="Anslutningen avbröts. Detta kan indikera problem med Internetanslutningen mellan dig och strömningstjänsten."
3
 ConnectionReset="Anslutningen återställdes av en peer. Detta kan indikera problem med Internetanslutningen mellan dig och strömningstjänsten."
4
 HostNotFound="Värdnamnet hittades inte. Se till att du har angivit en giltigt strömningstjänst och att din Internetanslutning / DNS fungerar på rätt sätt."
5
-NoData="Värdnamnet hittades, men ingen data av den begärda typen. Detta kan förekomma om du har bundit till en IPv6-adress och din strömtjänst endast har IPv4-adresser (se  Inställningar → Avancerat)."
6
-AddressNotAvailable="Adressen är inte tillgänglig. Du kanske har försökt binda till en ogiltig IP-adress (se  Inställningar → Avancerat)."
7
+NoData="Värdnamnet hittades, men ingen data av den begärda typen. Detta kan förekomma om du har bundit till en IPv6-adress och din strömtjänst endast har IPv4-adresser (se Inställningar → Avancerat)."
8
+AddressNotAvailable="Adressen är inte tillgänglig. Du kanske har försökt binda till en ogiltig IP-adress (se Inställningar → Avancerat)."
9
 SSLCertVerifyFailed="RTMP-servern skickade ett ogiltigt SSL-certifikat."
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/tr-TR.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/tr-TR.ini Changed
9
 
1
@@ -9,5 +9,7 @@
2
 ConnectionAborted="Bağlantı iptal edildi. Bu genellikle sizin ve yayın servisinin arasındaki internet bağlantısı sorununa işaret eder."
3
 ConnectionReset="Bağlantı karşı taraftan sıfırlandı. Bu genellikle sizin ve yayın servisinin arasındaki internet bağlantısı sorununa işaret eder."
4
 HostNotFound="Ana bilgisayar adı bulunamadı. Geçerli bir yayın sunucusu girdiğinizden ve internet bağlantınızın / DNS'nizin düzgün çalıştığını emin olun."
5
+NoData="Ana bilgisayar adı bulundu, ancak istenen türde veri bulunamadı. Bu bir IPv6 adresine bağlamış ve yayın servisinizin sadece IPv4 adresleri varsa oluşabilir (bkz: Ayarlar → Gelişmiş)."
6
+AddressNotAvailable="Adres kullanılamaz. Geçersiz bir IP adresi bağlamayı denemiş olabilirsiniz (bakın: Ayarlar → Gelişmiş)."
7
 SSLCertVerifyFailed="RTMP sunucusu geçersiz bir SSL sertifikası gönderdi."
8
 
9
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/zh-CN.ini Changed
18
 
1
@@ -4,11 +4,11 @@
2
 FLVOutput.FilePath="文件路径"
3
 Default="默认"
4
 
5
-ConnectionTimedOut="连接超时. 请确保您已经配置了一个有效的流媒体服务并且没有防火墙阻止连接."
6
-PermissionDenied="连接被阻止. 检查您的防火墙 / 防病毒设置以确保允许 OBS 自由访问互联网."
7
-ConnectionAborted="连接被中止. 这通常表明你和流媒体服务之间的互联网连接问题."
8
-ConnectionReset="对方重置连接. 这通常表明你和流媒体服务之间的互联网连接问题."
9
-HostNotFound="找不到 Hostname. 请确保您输入一个有效的流媒体服务器并且您的互联网连接 / DNS 工作正常."
10
+ConnectionTimedOut="连接超时。请确保您已经配置了一个有效的流媒体服务并且没有防火墙阻止连接。"
11
+PermissionDenied="连接被阻止。检查您的防火墙 / 防病毒设置以确保允许 OBS 自由访问互联网。"
12
+ConnectionAborted="连接被中止。这通常表明你和流媒体服务器间的互联网存在连接问题。"
13
+ConnectionReset="对方重置了连接。这通常表明你和流媒体服务器间的互联网存在连接问题。"
14
+HostNotFound="找不到主机名。请确保您输入了有效的流媒体服务器并且您的互联网连接 / DNS 工作正常。"
15
 NoData="找到主机名,但没有所请求类型的数据。如果绑定到 IPv6 地址并且流式服务只有 IPv4 地址,则可能发生这种情况(请参阅设置→高级)。"
16
 AddressNotAvailable="地址不可用。您可能试图绑定到一个无效的 IP 地址(请参阅设置→高级)。"
17
 SSLCertVerifyFailed="RTMP 服务器发送了无效的 SSL 证书。"
18
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/data/locale/zh-TW.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/data/locale/zh-TW.ini Changed
9
 
1
@@ -9,5 +9,7 @@
2
 ConnectionAborted="連線被中止。通常這代表您與串流服務之間有網際網路連線問題。"
3
 ConnectionReset="連線被對方重置。通常這代表您與串流服務之間有網際網路連線問題。"
4
 HostNotFound="找不到主機名稱。請確定輸入了一個有效的串流服務器且網路連線跟 DNS 工作正常。"
5
+NoData="找到主機名稱,但沒有要求類型的資料。這可能會在您綁定於 IPv6 位址但串流服務只有 IPv4 位址時發生(請看 設定 → 進階)。"
6
+AddressNotAvailable="無法使用位址。可能是因為嘗試綁定到不正確的 IP 位址(請檢視 設定 → 進階 的設定)。"
7
 SSLCertVerifyFailed="RTMP 伺服器發送了一則不合法的 SSL 憑證。"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/flv-output.c -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/flv-output.c Changed
39
 
1
@@ -193,7 +193,7 @@
2
    os_atomic_set_bool(&stream->stopping, true);
3
 }
4
 
5
-static void flv_output_actual_stop(struct flv_output *stream)
6
+static void flv_output_actual_stop(struct flv_output *stream, int code)
7
 {
8
    os_atomic_set_bool(&stream->active, false);
9
 
10
@@ -203,7 +203,11 @@
11
 
12
        fclose(stream->file);
13
    }
14
-   obs_output_end_data_capture(stream->output);
15
+   if (code) {
16
+       obs_output_signal_stop(stream->output, code);
17
+   } else {
18
+       obs_output_end_data_capture(stream->output);
19
+   }
20
 
21
    info("FLV file output complete");
22
 }
23
@@ -218,9 +222,14 @@
24
    if (!active(stream))
25
        goto unlock;
26
 
27
+   if (!packet) {
28
+       flv_output_actual_stop(stream, OBS_OUTPUT_ENCODE_ERROR);
29
+       goto unlock;
30
+   }
31
+
32
    if (stopping(stream)) {
33
        if (packet->sys_dts_usec >= (int64_t)stream->stop_ts) {
34
-           flv_output_actual_stop(stream);
35
+           flv_output_actual_stop(stream, 0);
36
            goto unlock;
37
        }
38
    }
39
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/ftl-stream.c -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/ftl-stream.c Changed
53
 
1
@@ -72,6 +72,7 @@
2
 
3
    volatile bool    active;
4
    volatile bool    disconnected;
5
+   volatile bool    encode_error;
6
    pthread_t        send_thread;
7
 
8
    int              max_shutdown_time_sec;
9
@@ -516,8 +517,12 @@
10
        }
11
    }
12
 
13
+   bool encode_error = os_atomic_load_bool(&stream->encode_error);
14
+
15
    if (disconnected(stream)) {
16
        info("Disconnected from %s", stream->path.array);
17
+   } else if (encode_error) {
18
+       info("Encoder error, disconnecting");
19
    } else {
20
        info("User stopped the stream");
21
    }
22
@@ -525,6 +530,8 @@
23
    if (!stopping(stream)) {
24
        pthread_detach(stream->send_thread);
25
        obs_output_signal_stop(stream->output, OBS_OUTPUT_DISCONNECTED);
26
+   } else if (encode_error) {
27
+       obs_output_signal_stop(stream->output, OBS_OUTPUT_ENCODE_ERROR);
28
    } else {
29
        obs_output_end_data_capture(stream->output);
30
    }
31
@@ -809,6 +816,13 @@
32
    if (disconnected(stream) || !active(stream))
33
        return;
34
 
35
+   /* encoder failure */
36
+   if (!packet) {
37
+       os_atomic_set_bool(&stream->encode_error, true);
38
+       os_sem_post(stream->send_sem);
39
+       return;
40
+   }
41
+
42
    if (packet->type == OBS_ENCODER_VIDEO)
43
        obs_parse_avc_packet(&new_packet, packet);
44
    else
45
@@ -1034,6 +1048,7 @@
46
    }
47
 
48
    os_atomic_set_bool(&stream->disconnected, false);
49
+   os_atomic_set_bool(&stream->encode_error, false);
50
    stream->total_bytes_sent  = 0;
51
    stream->dropped_frames    = 0;
52
    stream->min_priority      = 0;
53
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/librtmp/rtmp.c -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/librtmp/rtmp.c Changed
42
 
1
@@ -34,6 +34,10 @@
2
 
3
 #include <util/platform.h>
4
 
5
+#if !defined(MSG_NOSIGNAL)
6
+#define MSG_NOSIGNAL 0
7
+#endif
8
+
9
 #ifdef CRYPTO
10
 
11
 #ifdef __APPLE__
12
@@ -930,6 +934,11 @@
13
 
14
     if (r->m_sb.sb_socket != INVALID_SOCKET)
15
     {
16
+#ifndef _WIN32
17
+#ifdef SO_NOSIGPIPE
18
+        setsockopt(r->m_sb.sb_socket, SOL_SOCKET, SO_NOSIGPIPE, &(int){ 1 }, sizeof(int));
19
+#endif
20
+#endif
21
         if(r->m_bindIP.addrLen)
22
         {
23
             if (bind(r->m_sb.sb_socket, (const struct sockaddr *)&r->m_bindIP.addr, r->m_bindIP.addrLen) < 0)
24
@@ -4589,7 +4598,7 @@
25
         else
26
 #endif
27
         {
28
-            nBytes = recv(sb->sb_socket, sb->sb_start + sb->sb_size, nBytes, 0);
29
+            nBytes = recv(sb->sb_socket, sb->sb_start + sb->sb_size, nBytes, MSG_NOSIGNAL);
30
         }
31
         if (nBytes > 0)
32
         {
33
@@ -4642,7 +4651,7 @@
34
     else
35
 #endif
36
     {
37
-        rc = send(sb->sb_socket, buf, len, 0);
38
+        rc = send(sb->sb_socket, buf, len, MSG_NOSIGNAL);
39
     }
40
     return rc;
41
 }
42
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/librtmp/rtmp.h -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/librtmp/rtmp.h Changed
9
 
1
@@ -381,6 +381,7 @@
2
     void RTMP_Init(RTMP *r);
3
     void RTMP_Close(RTMP *r);
4
     RTMP *RTMP_Alloc(void);
5
+    void RTMP_TLS_Free();
6
     void RTMP_Free(RTMP *r);
7
     void RTMP_EnableWrite(RTMP *r);
8
 
9
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/rtmp-stream.c -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/rtmp-stream.c Changed
53
 
1
@@ -92,6 +92,7 @@
2
        }
3
    }
4
 
5
+   RTMP_TLS_Free();
6
    free_packets(stream);
7
    dstr_free(&stream->path);
8
    dstr_free(&stream->key);
9
@@ -486,8 +487,12 @@
10
        }
11
    }
12
 
13
+   bool encode_error = os_atomic_load_bool(&stream->encode_error);
14
+
15
    if (disconnected(stream)) {
16
        info("Disconnected from %s", stream->path.array);
17
+   } else if (encode_error) {
18
+       info("Encoder error, disconnecting");
19
    } else {
20
        info("User stopped the stream");
21
    }
22
@@ -506,6 +511,8 @@
23
    if (!stopping(stream)) {
24
        pthread_detach(stream->send_thread);
25
        obs_output_signal_stop(stream->output, OBS_OUTPUT_DISCONNECTED);
26
+   } else if (encode_error) {
27
+       obs_output_signal_stop(stream->output, OBS_OUTPUT_ENCODE_ERROR);
28
    } else {
29
        obs_output_end_data_capture(stream->output);
30
    }
31
@@ -885,6 +892,7 @@
32
        return false;
33
 
34
    os_atomic_set_bool(&stream->disconnected, false);
35
+   os_atomic_set_bool(&stream->encode_error, false);
36
    stream->total_bytes_sent = 0;
37
    stream->dropped_frames   = 0;
38
    stream->min_priority     = 0;
39
@@ -1102,6 +1110,13 @@
40
    if (disconnected(stream) || !active(stream))
41
        return;
42
 
43
+   /* encoder fail */
44
+   if (!packet) {
45
+       os_atomic_set_bool(&stream->encode_error, true);
46
+       os_sem_post(stream->send_sem);
47
+       return;
48
+   }
49
+
50
    if (packet->type == OBS_ENCODER_VIDEO) {
51
        if (!stream->got_first_video) {
52
            stream->start_dts_offset =
53
obs-studio-23.1.0.tar.xz/plugins/obs-outputs/rtmp-stream.h -> obs-studio-23.2.0.tar.xz/plugins/obs-outputs/rtmp-stream.h Changed
9
 
1
@@ -59,6 +59,7 @@
2
 
3
    volatile bool    active;
4
    volatile bool    disconnected;
5
+   volatile bool    encode_error;
6
    pthread_t        send_thread;
7
 
8
    int              max_shutdown_time_sec;
9
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/data/locale/da-DK.ini Changed
10
 
1
@@ -1,6 +1,6 @@
2
 TargetUsage="TargetUsage"
3
-Bitrate="Bithastighed"
4
-MaxBitrate="Maks. bithastighed"
5
+Bitrate="Bit-hastighed"
6
+MaxBitrate="Maks. bit-hastighed"
7
 RateControl="Hastighedskontrol"
8
 KeyframeIntervalSec="Keyframe-interval (sek., 0= auto)"
9
 Profile="Profil"
10
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_dispatcher.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_dispatcher.h Changed
89
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2012-2015 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2012-2017 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -40,6 +40,7 @@
10
 #include "mfxenc.h"
11
 #include "mfxpak.h"
12
 
13
+#define INTEL_VENDOR_ID 0x8086
14
 
15
 mfxStatus MFXQueryVersion(mfxSession session, mfxVersion *version);
16
 
17
@@ -75,6 +76,16 @@
18
     eVideoFuncTotal
19
 };
20
 
21
+enum ePluginFunc
22
+{
23
+    eMFXVideoUSER_Load,
24
+    eMFXVideoUSER_LoadByPath,
25
+    eMFXVideoUSER_UnLoad,
26
+    eMFXAudioUSER_Load,
27
+    eMFXAudioUSER_UnLoad,
28
+    ePluginFuncTotal
29
+};
30
+
31
 enum eAudioFunc
32
 {
33
     eFakeAudioEnum = eMFXGetPriority,
34
@@ -111,8 +122,21 @@
35
     MFX_DISPATCHER_VERSION_MINOR = 2
36
 };
37
 
38
+struct _mfxSession
39
+{
40
+    // A real handle from MFX engine passed to a called function
41
+    mfxSession session;
42
+
43
+    mfxFunctionPointer callTable[eVideoFuncTotal];
44
+    mfxFunctionPointer callPlugInsTable[ePluginFuncTotal];
45
+    mfxFunctionPointer callAudioTable[eAudioFuncTotal];
46
+
47
+    // Current library's implementation (exact implementation)
48
+    mfxIMPL impl;
49
+};
50
+
51
 // declare a dispatcher's handle
52
-struct MFX_DISP_HANDLE
53
+struct MFX_DISP_HANDLE : public _mfxSession
54
 {
55
     // Default constructor
56
     MFX_DISP_HANDLE(const mfxVersion requiredVersion);
57
@@ -133,15 +157,11 @@
58
 
59
     // Library's implementation type (hardware or software)
60
     eMfxImplType implType;
61
-    // Current library's implementation (exact implementation)
62
-    mfxIMPL impl;
63
     // Current library's VIA interface
64
     mfxIMPL implInterface;
65
     // Dispatcher's version. If version is 1.1 or lower, then old dispatcher's
66
     // architecture is used. Otherwise it means current dispatcher's version.
67
     mfxVersion dispVersion;
68
-    // A real handle passed to a called function
69
-    mfxSession session;
70
     // Required API version of session initialized
71
     const mfxVersion apiVersion;
72
     // Actual library API version
73
@@ -159,14 +179,10 @@
74
     MFX::MFXPluginStorage pluginHive;
75
     MFX::MFXPluginFactory pluginFactory;
76
 
77
-    // function call table
78
-    mfxFunctionPointer callTable[eVideoFuncTotal];
79
-    mfxFunctionPointer callAudioTable[eAudioFuncTotal];
80
-
81
 private:
82
     // Declare assignment operator and copy constructor to prevent occasional assignment
83
     MFX_DISP_HANDLE(const MFX_DISP_HANDLE &);
84
-    MFX_DISP_HANDLE & operator = (const MFX_DISP_HANDLE &);    
85
+    MFX_DISP_HANDLE & operator = (const MFX_DISP_HANDLE &);
86
 
87
 };
88
 
89
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_dispatcher_defs.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_dispatcher_defs.h Changed
28
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2013-2015 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2013-2017 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -37,6 +37,9 @@
10
 #include <string.h>
11
 #endif
12
 
13
+#define MAX_PLUGIN_PATH 4096
14
+#define MAX_PLUGIN_NAME 4096
15
+
16
 #if defined(_WIN32) || defined(_WIN64)
17
 typedef wchar_t  msdk_disp_char;
18
 #define MSDK2WIDE(x) x
19
@@ -73,7 +76,7 @@
20
 
21
 #endif
22
 
23
-#ifdef __GNUC__
24
+#if defined(__GNUC__) && !defined(_WIN32) && !defined(_WIN64)
25
 #define  sscanf_s  sscanf
26
 #define  swscanf_s swscanf
27
 #endif
28
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_dxva2_device.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_dxva2_device.h Changed
74
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2012-2013 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2012-2017 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -33,6 +33,24 @@
10
 
11
 #if defined(_WIN32) || defined(_WIN64)
12
 #include <windows.h>
13
+
14
+#define TOSTRING(L) #L
15
+#define STRINGIFY(L) TOSTRING(L)
16
+
17
+#if defined(MEDIASDK_UWP_LOADER) || defined(MEDIASDK_UWP_PROCTABLE)
18
+    #if defined(MFX_D3D9_ENABLED) && !defined(MFX_FORCE_D3D9_ENABLED)
19
+        #undef MFX_D3D9_ENABLED
20
+        // if you really like to use D3D9 from intel_gfx_api-x64/x86.dll, use MFX_FORCE_D3D9_ENABLED
21
+        #pragma message("\n\nATTENTION:\nin file\n\t" __FILE__ " (" STRINGIFY(__LINE__) "):\nUsing of D3D9 disabled for UWP!\n\n")
22
+    #endif
23
+    #if defined(MFX_FORCE_D3D9_ENABLED)
24
+        #define MFX_D3D9_ENABLED
25
+    #endif
26
+#else
27
+    #define MFX_D3D9_ENABLED
28
+    #pragma message("\n\nATTENTION:\nin file\n\t" __FILE__ " (" STRINGIFY(__LINE__) "):\nUsing of D3D9 enabled!\n\n")
29
+#endif
30
+
31
 #endif // #if defined(_WIN32) || defined(_WIN64)
32
 
33
 #include <mfxdefs.h>
34
@@ -43,7 +61,7 @@
35
 #define DXVA2DEVICE_TRACE_OPERATION(expr) expr;
36
 #else
37
 #define DXVA2DEVICE_TRACE(expr)
38
-#define DXVA2DEVICE_TRACE_OPERATION(expr) 
39
+#define DXVA2DEVICE_TRACE_OPERATION(expr)
40
 #endif
41
 
42
 namespace MFX
43
@@ -106,7 +124,10 @@
44
     void operator=(const DXDevice &);
45
 };
46
 
47
+
48
 #if defined(_WIN32) || defined(_WIN64)
49
+
50
+#ifdef MFX_D3D9_ENABLED
51
 class D3D9Device : public DXDevice
52
 {
53
 public:
54
@@ -132,6 +153,7 @@
55
     void *m_pD3D9Ex;
56
 
57
 };
58
+#endif // MFX_D3D9_ENABLED
59
 
60
 class DXGI1Device : public DXDevice
61
 {
62
@@ -186,9 +208,10 @@
63
 
64
 protected:
65
 
66
+#ifdef MFX_D3D9_ENABLED
67
     // Get vendor & device IDs by alternative way (D3D9 in Remote Desktop sessions)
68
     void UseAlternativeWay(const D3D9Device *pD3D9Device);
69
-
70
+#endif // MFX_D3D9_ENABLED
71
     // Number of adapters available
72
     mfxU32 m_numAdapters;
73
 
74
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_exposed_functions_list.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_exposed_functions_list.h Changed
24
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2012-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2012-2016 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -139,4 +139,13 @@
10
 // FUNCTION(mfxStatus, MFXInitEx, (mfxInitParam par, mfxSession session), (par, session))
11
 FUNCTION(mfxStatus, MFXDoWork, (mfxSession session), (session))
12
 
13
+#undef API_VERSION
14
+
15
+#define API_VERSION {{19, 1}}
16
+
17
+FUNCTION(mfxStatus, MFXVideoENC_GetVideoParam, (mfxSession session, mfxVideoParam *par), (session, par))
18
+FUNCTION(mfxStatus, MFXVideoPAK_GetVideoParam, (mfxSession session, mfxVideoParam *par), (session, par))
19
+FUNCTION(mfxStatus, MFXVideoCORE_QueryPlatform, (mfxSession session, mfxPlatform* platform), (session, platform))
20
+FUNCTION(mfxStatus, MFXVideoUSER_GetPlugin, (mfxSession session, mfxU32 type, mfxPlugin *par), (session, type, par))
21
+
22
 #undef API_VERSION
23
\ No newline at end of file
24
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_library_iterator.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_library_iterator.h Changed
103
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2012-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2012-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -33,7 +33,11 @@
10
 
11
 
12
 #include <mfxvideo.h>
13
+
14
+#if !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
15
 #include "mfx_win_reg_key.h"
16
+#endif
17
+
18
 #include "mfx_dispatcher.h"
19
 
20
 #if !defined(_WIN32) && !defined(_WIN64)
21
@@ -71,15 +75,21 @@
22
     MFX_CURRENT_USER_KEY        = 0,
23
     MFX_LOCAL_MACHINE_KEY       = 1,
24
     MFX_APP_FOLDER              = 2,
25
-
26
+#if defined(MEDIASDK_USE_REGISTRY) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
27
+    MFX_PATH_MSDK_FOLDER = 3,
28
     MFX_STORAGE_ID_FIRST    = MFX_CURRENT_USER_KEY,
29
-    MFX_STORAGE_ID_LAST     = MFX_LOCAL_MACHINE_KEY
30
+    MFX_STORAGE_ID_LAST     = MFX_PATH_MSDK_FOLDER
31
+#else
32
+    MFX_PATH_MSDK_FOLDER = 3,
33
+    MFX_STORAGE_ID_FIRST = MFX_PATH_MSDK_FOLDER,
34
+    MFX_STORAGE_ID_LAST = MFX_PATH_MSDK_FOLDER
35
+#endif // !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
36
 };
37
 #else
38
 enum
39
 {
40
     MFX_UNKNOWN_KEY     = -1,
41
-    MFX_STORAGE_ID_OPT  = 0, // storage is: /opt/intel
42
+    MFX_STORAGE_ID_OPT  = 0, // storage is: MFX_MODULES_DIR
43
     MFX_APP_FOLDER      = 1,
44
 
45
     MFX_STORAGE_ID_FIRST   =  MFX_STORAGE_ID_OPT,
46
@@ -91,6 +101,8 @@
47
 // Params: adapterNum - in, pImplInterface - in/out, pVendorID - out, pDeviceID - out
48
 mfxStatus SelectImplementationType(const mfxU32 adapterNum, mfxIMPL *pImplInterface, mfxU32 *pVendorID, mfxU32 *pDeviceID);
49
 
50
+const mfxU32 msdk_disp_path_len = 1024;
51
+
52
 class MFXLibraryIterator
53
 {
54
 public:
55
@@ -103,11 +115,11 @@
56
     mfxStatus Init(eMfxImplType implType, mfxIMPL implInterface, const mfxU32 adapterNum, int storageID);
57
 
58
     // Get the next library path
59
-    mfxStatus SelectDLLVersion(msdk_disp_char *pPath, size_t pathSize, 
60
+    mfxStatus SelectDLLVersion(msdk_disp_char *pPath, size_t pathSize,
61
                                eMfxImplType *pImplType, mfxVersion minVersion);
62
 
63
     // Return interface type on which Intel adapter was found (if any): D3D9 or D3D11
64
-    mfxIMPL GetImplementationType(); 
65
+    mfxIMPL GetImplementationType();
66
 
67
     // Retrun registry subkey name on which dll was selected after sucesfull call to selectDllVesion
68
     bool GetSubKeyName(msdk_disp_char *subKeyName, size_t length) const;
69
@@ -124,17 +136,20 @@
70
     mfxStatus InitFolder(eMfxImplType implType, mfxIMPL implInterface, const mfxU32 adapterNum, const msdk_disp_char * path);
71
 
72
 
73
-    eMfxImplType m_implType;                                    // Required library implementation 
74
+    eMfxImplType m_implType;                                    // Required library implementation
75
     mfxIMPL m_implInterface;                                    // Required interface (D3D9, D3D11)
76
 
77
     mfxU32 m_vendorID;                                          // (mfxU32) property of used graphic card
78
     mfxU32 m_deviceID;                                          // (mfxU32) property of used graphic card
79
     bool   m_bIsSubKeyValid;
80
-    wchar_t m_SubKeyName[MFX_MAX_REGISTRY_KEY_NAME];            // registry subkey for selected module loaded 
81
+    wchar_t m_SubKeyName[MFX_MAX_REGISTRY_KEY_NAME];            // registry subkey for selected module loaded
82
     int    m_StorageID;
83
-    
84
+
85
 #if defined(_WIN32) || defined(_WIN64)
86
-    WinRegKey m_baseRegKey;                                     // (WinRegKey) main registry key    
87
+
88
+#if defined(MEDIASDK_USE_REGISTRY) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
89
+    WinRegKey m_baseRegKey;                                     // (WinRegKey) main registry key
90
+#endif
91
 
92
     mfxU32 m_lastLibIndex;                                      // (mfxU32) index of previously returned library
93
     mfxU32 m_lastLibMerit;                                      // (mfxU32) merit of previously returned library
94
@@ -148,7 +163,7 @@
95
     struct mfx_libs*          m_libs;
96
 #endif // #if defined(_WIN32) || defined(_WIN64)
97
 
98
-    msdk_disp_char  m_path[260];
99
+    msdk_disp_char  m_path[msdk_disp_path_len];
100
 
101
 private:
102
     // unimplemented by intent to make this class non-copyable
103
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_load_plugin.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_load_plugin.h Changed
20
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2013-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2013-2016 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -60,7 +60,9 @@
10
             mfxPluginParam plgParams;
11
             PluginModule module;
12
             mfxPlugin plugin;
13
-            FactoryRecord () {}
14
+            FactoryRecord ()
15
+                : plugin()
16
+            {}
17
             FactoryRecord(const mfxPluginParam &plgParams,
18
                           PluginModule &module,
19
                           mfxPlugin plugin) 
20
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_plugin_hive.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/mfx_plugin_hive.h Changed
43
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2013-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2013-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -42,16 +42,6 @@
10
 
11
 namespace MFX {
12
 
13
-    enum 
14
-    {
15
-        MAX_PLUGIN_PATH = 4096
16
-    };
17
-    
18
-    enum
19
-    {
20
-        MAX_PLUGIN_NAME = 4096
21
-    };
22
-
23
     inline bool operator == (const mfxPluginUID &lhs, const mfxPluginUID & rhs) 
24
     {
25
         return !memcmp(lhs.Data, rhs.Data, sizeof(mfxPluginUID));
26
@@ -108,6 +98,7 @@
27
         MFXPluginsInHive(int mfxStorageID, const msdk_disp_char *msdkLibSubKey, mfxVersion currentAPIVersion);
28
     };
29
 
30
+#if defined(MEDIASDK_USE_CFGFILES) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
31
     //plugins are loaded from FS close to executable
32
     class MFXPluginsInFS : public MFXPluginStorageBase
33
     {
34
@@ -119,7 +110,7 @@
35
         bool ParseFile(FILE * f, PluginDescriptionRecord & des);
36
         bool ParseKVPair( msdk_disp_char *key, msdk_disp_char * value, PluginDescriptionRecord & des);
37
     };
38
-
39
+#endif //#if defined(MEDIASDK_USE_CFGFILES) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
40
 
41
     //plugins are loaded from FS close to Runtime library
42
     class MFXDefaultPlugins : public MFXPluginStorageBase
43
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxcommon.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxcommon.h Changed
59
 
1
@@ -1,6 +1,6 @@
2
 /*******************************************************************************
3
 
4
-Copyright (C) 2013-2015 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2013-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -61,15 +61,14 @@
10
     MFX_IMPL_HARDWARE2    = 0x0005,  /* Hardware accelerated implementation (2nd device) */
11
     MFX_IMPL_HARDWARE3    = 0x0006,  /* Hardware accelerated implementation (3rd device) */
12
     MFX_IMPL_HARDWARE4    = 0x0007,  /* Hardware accelerated implementation (4th device) */
13
-    MFX_IMPL_RUNTIME      = 0x0008, 
14
-
15
+    MFX_IMPL_RUNTIME      = 0x0008,
16
     MFX_IMPL_VIA_ANY      = 0x0100,
17
     MFX_IMPL_VIA_D3D9     = 0x0200,
18
     MFX_IMPL_VIA_D3D11    = 0x0300,
19
     MFX_IMPL_VIA_VAAPI    = 0x0400,
20
 
21
-    MFX_IMPL_AUDIO        = 0x8000,
22
-     
23
+    MFX_IMPL_AUDIO                     = 0x8000,
24
+
25
     MFX_IMPL_UNSUPPORTED  = 0x0000  /* One of the MFXQueryIMPL returns */
26
 };
27
 
28
@@ -151,6 +150,30 @@
29
     mfxU16       reserved[55];
30
 } mfxExtThreadsParam;
31
 
32
+/* PlatformCodeName */
33
+enum {
34
+    MFX_PLATFORM_UNKNOWN        = 0,
35
+    MFX_PLATFORM_SANDYBRIDGE    = 1,
36
+    MFX_PLATFORM_IVYBRIDGE      = 2,
37
+    MFX_PLATFORM_HASWELL        = 3,
38
+    MFX_PLATFORM_BAYTRAIL       = 4,
39
+    MFX_PLATFORM_BROADWELL      = 5,
40
+    MFX_PLATFORM_CHERRYTRAIL    = 6,
41
+    MFX_PLATFORM_SKYLAKE        = 7,
42
+    MFX_PLATFORM_APOLLOLAKE     = 8,
43
+    MFX_PLATFORM_KABYLAKE       = 9,
44
+    MFX_PLATFORM_GEMINILAKE     = 10,
45
+    MFX_PLATFORM_COFFEELAKE     = 11,
46
+    MFX_PLATFORM_CANNONLAKE     = 20,
47
+    MFX_PLATFORM_ICELAKE = 30,
48
+};
49
+
50
+typedef struct {
51
+    mfxU16 CodeName;
52
+    mfxU16 DeviceId;
53
+    mfxU16 reserved[14];
54
+} mfxPlatform;
55
+
56
 #ifdef __cplusplus
57
 }
58
 #endif /* __cplusplus */
59
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxdefs.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxdefs.h Changed
46
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2007-2015 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2007-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -30,6 +30,15 @@
10
 #ifndef __MFXDEFS_H__
11
 #define __MFXDEFS_H__
12
 
13
+#define MFX_VERSION_MAJOR 1
14
+#define MFX_VERSION_MINOR 27
15
+
16
+#define MFX_VERSION_NEXT 1028
17
+
18
+#ifndef MFX_VERSION
19
+#define MFX_VERSION (MFX_VERSION_MAJOR * 1000 + MFX_VERSION_MINOR)
20
+#endif
21
+
22
 #ifdef __cplusplus
23
 extern "C"
24
 {
25
@@ -118,6 +127,8 @@
26
     MFX_ERR_MORE_BITSTREAM              = -18,  /* expect more bitstream buffers at output */
27
     MFX_ERR_INCOMPATIBLE_AUDIO_PARAM    = -19,  /* incompatible audio parameters */
28
     MFX_ERR_INVALID_AUDIO_PARAM         = -20,  /* invalid audio parameters */
29
+    MFX_ERR_GPU_HANG                    = -21,  /* device operation failure caused by GPU hang */
30
+    MFX_ERR_REALLOC_SURFACE             = -22,  /* bigger output surface required */
31
 
32
     /* warnings >0 */
33
     MFX_WRN_IN_EXECUTION                = 1,    /* the previous asynchronous operation is in execution */
34
@@ -133,7 +144,10 @@
35
     /* threading statuses */
36
     MFX_TASK_DONE = MFX_ERR_NONE,               /* task has been completed */
37
     MFX_TASK_WORKING                    = 8,    /* there is some more work to do */
38
-    MFX_TASK_BUSY                       = 9     /* task is waiting for resources */
39
+    MFX_TASK_BUSY                       = 9,    /* task is waiting for resources */
40
+
41
+    /* plug-in statuses */
42
+    MFX_ERR_MORE_DATA_SUBMIT_TASK       = -10000, /* return MFX_ERR_MORE_DATA but submit internal asynchronous task */
43
 
44
 } mfxStatus;
45
 
46
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxenc.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxenc.h Changed
25
 
1
@@ -1,6 +1,6 @@
2
 /******************************************************************************* *\
3
 
4
-Copyright (C) 2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2014-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -51,6 +51,7 @@
10
     mfxU16  NumExtParam;
11
     mfxExtBuffer    **ExtParam;
12
 } ;
13
+
14
 typedef struct _mfxENCOutput mfxENCOutput;
15
 struct _mfxENCOutput{
16
     mfxU32  reserved[32];
17
@@ -70,6 +71,7 @@
18
 
19
 mfxStatus MFX_CDECL MFXVideoENC_ProcessFrameAsync(mfxSession session, mfxENCInput *in, mfxENCOutput *out, mfxSyncPoint *syncp);
20
 
21
+mfxStatus MFX_CDECL MFXVideoENC_GetVideoParam(mfxSession session, mfxVideoParam *par);
22
 
23
 #ifdef __cplusplus
24
 } // extern "C"
25
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxjpeg.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxjpeg.h Changed
42
 
1
@@ -1,6 +1,6 @@
2
 /******************************************************************************* *\
3
 
4
-Copyright (C) 2010-2013 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2010-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -57,22 +57,26 @@
10
 };
11
 
12
 enum {
13
-    MFX_EXTBUFF_JPEG_QT     =   MFX_MAKEFOURCC('J','P','G','Q'),
14
-    MFX_EXTBUFF_JPEG_HUFFMAN     =   MFX_MAKEFOURCC('J','P','G','H')
15
+    MFX_EXTBUFF_JPEG_QT      = MFX_MAKEFOURCC('J','P','G','Q'),
16
+    MFX_EXTBUFF_JPEG_HUFFMAN = MFX_MAKEFOURCC('J','P','G','H')
17
 };
18
 
19
 enum {
20
     MFX_JPEG_COLORFORMAT_UNKNOWN = 0,
21
-    MFX_JPEG_COLORFORMAT_YCbCr = 1,
22
-    MFX_JPEG_COLORFORMAT_RGB = 2
23
+    MFX_JPEG_COLORFORMAT_YCbCr   = 1,
24
+    MFX_JPEG_COLORFORMAT_RGB     = 2
25
 };
26
 
27
 enum {
28
-    MFX_SCANTYPE_UNKNOWN = 0,
29
-    MFX_SCANTYPE_INTERLEAVED = 1,
30
+    MFX_SCANTYPE_UNKNOWN        = 0,
31
+    MFX_SCANTYPE_INTERLEAVED    = 1,
32
     MFX_SCANTYPE_NONINTERLEAVED = 2
33
 };
34
 
35
+enum {
36
+    MFX_CHROMAFORMAT_JPEG_SAMPLING = 6
37
+};
38
+
39
 typedef struct {
40
     mfxExtBuffer    Header;
41
 
42
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxpak.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxpak.h Changed
51
 
1
@@ -1,6 +1,6 @@
2
 /******************************************************************************* *\
3
 
4
-Copyright (C) 2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2014-2017 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -38,7 +38,7 @@
10
 #endif /* __cplusplus */
11
 
12
 typedef struct {
13
-    mfxU32  reserved[32];
14
+    mfxU16 reserved[32];
15
 
16
     mfxFrameSurface1 *InSurface;
17
 
18
@@ -49,10 +49,15 @@
19
 
20
     mfxU16  NumExtParam;
21
     mfxExtBuffer    **ExtParam;
22
+
23
+    mfxU16 NumPayload;
24
+    mfxPayload      **Payload;
25
 } mfxPAKInput;
26
 
27
 typedef struct {
28
-    mfxBitstream     *Bs; 
29
+    mfxU16  reserved[32];
30
+
31
+    mfxBitstream     *Bs;
32
 
33
     mfxFrameSurface1 *OutSurface;
34
 
35
@@ -62,13 +67,14 @@
36
 
37
 typedef struct _mfxSession *mfxSession;
38
 mfxStatus MFX_CDECL MFXVideoPAK_Query(mfxSession session, mfxVideoParam *in, mfxVideoParam *out);
39
-mfxStatus MFX_CDECL MFXVideoPAK_QueryIOSurf(mfxSession session, mfxVideoParam *par, mfxFrameAllocRequest *request);
40
+mfxStatus MFX_CDECL MFXVideoPAK_QueryIOSurf(mfxSession session, mfxVideoParam *par, mfxFrameAllocRequest request[2]);
41
 mfxStatus MFX_CDECL MFXVideoPAK_Init(mfxSession session, mfxVideoParam *par);
42
 mfxStatus MFX_CDECL MFXVideoPAK_Reset(mfxSession session, mfxVideoParam *par);
43
 mfxStatus MFX_CDECL MFXVideoPAK_Close(mfxSession session);
44
 
45
 mfxStatus MFX_CDECL MFXVideoPAK_ProcessFrameAsync(mfxSession session, mfxPAKInput *in, mfxPAKOutput *out,  mfxSyncPoint *syncp);
46
 
47
+mfxStatus MFX_CDECL MFXVideoPAK_GetVideoParam(mfxSession session, mfxVideoParam *par);
48
 
49
 #ifdef __cplusplus
50
 } // extern "C"
51
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxplugin++.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxplugin++.h Changed
175
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2007-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2007-2016 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -156,7 +156,7 @@
10
     virtual mfxStatus Submit(const mfxHDL *in, mfxU32 in_num, const mfxHDL *out, mfxU32 out_num, mfxThreadTask *task) = 0;
11
 };
12
 
13
-//decoder plugins may only support this interface 
14
+//decoder plugins may only support this interface
15
 struct MFXDecoderPlugin : MFXCodecPlugin
16
 {
17
     virtual mfxStatus DecodeHeader(mfxBitstream *bs, mfxVideoParam *par) = 0;
18
@@ -164,7 +164,7 @@
19
     virtual mfxStatus DecodeFrameSubmit(mfxBitstream *bs, mfxFrameSurface1 *surface_work, mfxFrameSurface1 **surface_out,  mfxThreadTask *task) = 0;
20
 };
21
 
22
-//audio decoder plugins may only support this interface 
23
+//audio decoder plugins may only support this interface
24
 struct MFXAudioDecoderPlugin : MFXAudioCodecPlugin
25
 {
26
     virtual mfxStatus DecodeHeader(mfxBitstream *bs, mfxAudioParam *par) = 0;
27
@@ -172,19 +172,19 @@
28
     virtual mfxStatus DecodeFrameSubmit(mfxBitstream *in, mfxAudioFrame *out, mfxThreadTask *task) = 0;
29
 };
30
 
31
-//encoder plugins may only support this interface 
32
+//encoder plugins may only support this interface
33
 struct MFXEncoderPlugin : MFXCodecPlugin
34
 {
35
     virtual mfxStatus EncodeFrameSubmit(mfxEncodeCtrl *ctrl, mfxFrameSurface1 *surface, mfxBitstream *bs, mfxThreadTask *task) = 0;
36
 };
37
 
38
-//audio encoder plugins may only support this interface 
39
+//audio encoder plugins may only support this interface
40
 struct MFXAudioEncoderPlugin : MFXAudioCodecPlugin
41
 {
42
     virtual mfxStatus EncodeFrameSubmit(mfxAudioFrame *aFrame, mfxBitstream *out, mfxThreadTask *task) = 0;
43
 };
44
 
45
-//vpp plugins may only support this interface 
46
+//vpp plugins may only support this interface
47
 struct MFXVPPPlugin : MFXCodecPlugin
48
 {
49
     virtual mfxStatus VPPFrameSubmit(mfxFrameSurface1 *surface_in, mfxFrameSurface1 *surface_out, mfxExtVppAuxData *aux, mfxThreadTask *task) = 0;
50
@@ -216,7 +216,7 @@
51
         : m_core(that.m_core) {
52
     }
53
     MFXCoreInterface &operator = (const MFXCoreInterface & that)
54
-    { 
55
+    {
56
         m_core = that.m_core;
57
         return *this;
58
     }
59
@@ -292,12 +292,23 @@
60
     mfxFrameAllocator & FrameAllocator() {
61
         return m_core.FrameAllocator;
62
     }
63
-
64
+    mfxStatus GetFrameHandle(mfxFrameData *fd, mfxHDL *handle) {
65
+        if (!IsCoreSet()) {
66
+            return MFX_ERR_NULL_PTR;
67
+        }
68
+        return m_core.GetFrameHandle(m_core.pthis, fd, handle);
69
+    }
70
+    mfxStatus QueryPlatform(mfxPlatform *platform) {
71
+        if (!IsCoreSet()) {
72
+            return MFX_ERR_NULL_PTR;
73
+        }
74
+        return m_core.QueryPlatform(m_core.pthis, platform);
75
+    }
76
 } ;
77
 
78
 /* Class adapter between "C" structure mfxPlugin and C++ interface MFXPlugin */
79
 
80
-namespace detail 
81
+namespace detail
82
 {
83
     template <class T>
84
     class MFXPluginAdapterBase
85
@@ -306,11 +317,13 @@
86
         mfxPlugin m_mfxAPI;
87
     public:
88
         MFXPluginAdapterBase( T *plugin, mfxVideoCodecPlugin *pCodec = NULL)
89
+            : m_mfxAPI()
90
         {
91
             SetupCallbacks(plugin, pCodec);
92
         }
93
 
94
         MFXPluginAdapterBase( T *plugin, mfxAudioCodecPlugin *pCodec)
95
+            : m_mfxAPI()
96
         {
97
             SetupCallbacks(plugin, pCodec);
98
         }
99
@@ -340,19 +353,19 @@
100
     private:
101
 
102
         static mfxStatus _PluginInit(mfxHDL pthis, mfxCoreInterface *core) {
103
-            return reinterpret_cast<T*>(pthis)->PluginInit(core); 
104
+            return reinterpret_cast<T*>(pthis)->PluginInit(core);
105
         }
106
-        static mfxStatus _PluginClose(mfxHDL pthis) { 
107
-            return reinterpret_cast<T*>(pthis)->PluginClose(); 
108
+        static mfxStatus _PluginClose(mfxHDL pthis) {
109
+            return reinterpret_cast<T*>(pthis)->PluginClose();
110
         }
111
-        static mfxStatus _GetPluginParam(mfxHDL pthis, mfxPluginParam *par) { 
112
-            return reinterpret_cast<T*>(pthis)->GetPluginParam(par); 
113
+        static mfxStatus _GetPluginParam(mfxHDL pthis, mfxPluginParam *par) {
114
+            return reinterpret_cast<T*>(pthis)->GetPluginParam(par);
115
         }
116
-        static mfxStatus _Execute(mfxHDL pthis, mfxThreadTask task, mfxU32 thread_id, mfxU32 call_count) { 
117
-            return reinterpret_cast<T*>(pthis)->Execute(task, thread_id, call_count); 
118
+        static mfxStatus _Execute(mfxHDL pthis, mfxThreadTask task, mfxU32 thread_id, mfxU32 call_count) {
119
+            return reinterpret_cast<T*>(pthis)->Execute(task, thread_id, call_count);
120
         }
121
-        static mfxStatus _FreeResources(mfxHDL pthis, mfxThreadTask task, mfxStatus sts) { 
122
-            return reinterpret_cast<T*>(pthis)->FreeResources(task, sts); 
123
+        static mfxStatus _FreeResources(mfxHDL pthis, mfxThreadTask task, mfxStatus sts) {
124
+            return reinterpret_cast<T*>(pthis)->FreeResources(task, sts);
125
         }
126
     };
127
 
128
@@ -374,7 +387,7 @@
129
             m_codecPlg.Close = _Close;
130
             m_codecPlg.GetVideoParam = _GetVideoParam;
131
         }
132
-        MFXCodecPluginAdapterBase(const MFXCodecPluginAdapterBase<T> & that) 
133
+        MFXCodecPluginAdapterBase(const MFXCodecPluginAdapterBase<T> & that)
134
             : MFXPluginAdapterBase<T>(reinterpret_cast<T*>(that.m_mfxAPI.pthis), &m_codecPlg)
135
             , m_codecPlg() {
136
             SetupCallbacks();
137
@@ -432,7 +445,7 @@
138
             m_codecPlg.Close = _Close;
139
             m_codecPlg.GetAudioParam = _GetAudioParam;
140
         }
141
-        MFXAudioCodecPluginAdapterBase(const MFXCodecPluginAdapterBase<T> & that) 
142
+        MFXAudioCodecPluginAdapterBase(const MFXCodecPluginAdapterBase<T> & that)
143
             : MFXPluginAdapterBase<T>(reinterpret_cast<T*>(that.m_mfxAPI.pthis), &m_codecPlg)
144
             , m_codecPlg() {
145
             SetupCallbacks();
146
@@ -471,7 +484,7 @@
147
             return reinterpret_cast<T*>(pthis)->GetAudioParam(par);
148
         }
149
     };
150
-    
151
+
152
     template <class T>
153
     struct MFXPluginAdapterInternal{};
154
     template<>
155
@@ -494,8 +507,8 @@
156
         }
157
 
158
     private:
159
-        static mfxStatus _Submit(mfxHDL pthis, const mfxHDL *in, mfxU32 in_num, const mfxHDL *out, mfxU32 out_num, mfxThreadTask *task) { 
160
-            return reinterpret_cast<MFXGenericPlugin*>(pthis)->Submit(in, in_num, out, out_num, task); 
161
+        static mfxStatus _Submit(mfxHDL pthis, const mfxHDL *in, mfxU32 in_num, const mfxHDL *out, mfxU32 out_num, mfxThreadTask *task) {
162
+            return reinterpret_cast<MFXGenericPlugin*>(pthis)->Submit(in, in_num, out, out_num, task);
163
         }
164
     };
165
 
166
@@ -698,7 +711,7 @@
167
 {
168
 public:
169
     detail::MFXPluginAdapterInternal<T> m_Adapter;
170
-    
171
+
172
     operator  mfxPlugin () const {
173
         return m_Adapter.operator mfxPlugin();
174
     }
175
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxplugin.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxplugin.h Changed
144
 
1
@@ -1,6 +1,6 @@
2
 /******************************************************************************* *\
3
 
4
-Copyright (C) 2007-2015 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2007-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -41,22 +41,24 @@
10
     mfxU8  Data[16];
11
 } mfxPluginUID;
12
 
13
-static const mfxPluginUID  MFX_PLUGINID_HEVCD_SW     = {{0x15, 0xdd, 0x93, 0x68, 0x25, 0xad, 0x47, 0x5e, 0xa3, 0x4e, 0x35, 0xf3, 0xf5, 0x42, 0x17, 0xa6}};
14
-static const mfxPluginUID  MFX_PLUGINID_HEVCD_HW     = {{0x33, 0xa6, 0x1c, 0x0b, 0x4c, 0x27, 0x45, 0x4c, 0xa8, 0xd8, 0x5d, 0xde, 0x75, 0x7c, 0x6f, 0x8e}};
15
-static const mfxPluginUID  MFX_PLUGINID_HEVCE_SW     = {{0x2f, 0xca, 0x99, 0x74, 0x9f, 0xdb, 0x49, 0xae, 0xb1, 0x21, 0xa5, 0xb6, 0x3e, 0xf5, 0x68, 0xf7}};
16
-static const mfxPluginUID  MFX_PLUGINID_HEVCE_GACC   = {{0xe5, 0x40, 0x0a, 0x06, 0xc7, 0x4d, 0x41, 0xf5, 0xb1, 0x2d, 0x43, 0x0b, 0xba, 0xa2, 0x3d, 0x0b}};
17
-static const mfxPluginUID  MFX_PLUGINID_HEVCE_HW     = {{0x6f, 0xad, 0xc7, 0x91, 0xa0, 0xc2, 0xeb, 0x47, 0x9a, 0xb6, 0xdc, 0xd5, 0xea, 0x9d, 0xa3, 0x47}};
18
-static const mfxPluginUID  MFX_PLUGINID_VP8D_HW      = {{0xf6, 0x22, 0x39, 0x4d, 0x8d, 0x87, 0x45, 0x2f, 0x87, 0x8c, 0x51, 0xf2, 0xfc, 0x9b, 0x41, 0x31}};
19
-static const mfxPluginUID  MFX_PLUGINID_VP8E_HW      = {{0xbf, 0xfc, 0x51, 0x8c, 0xde, 0x13, 0x4d, 0xf9, 0x8a, 0x96, 0xf4, 0xcf, 0x81, 0x6c, 0x0f, 0xac}};
20
-static const mfxPluginUID  MFX_PLUGINID_VP9E_HW      = {{0xce, 0x44, 0xef, 0x6f, 0x1a, 0x6d, 0x22, 0x46, 0xb4, 0x12, 0xbb, 0x38, 0xd6, 0xe4, 0x51, 0x82}};
21
-static const mfxPluginUID  MFX_PLUGINID_VP9D_HW      = {{0xa9, 0x22, 0x39, 0x4d, 0x8d, 0x87, 0x45, 0x2f, 0x87, 0x8c, 0x51, 0xf2, 0xfc, 0x9b, 0x41, 0x31}};
22
-static const mfxPluginUID  MFX_PLUGINID_CAMERA_HW    = {{0x54, 0x54, 0x26, 0x16, 0x24, 0x33, 0x41, 0xe6, 0x93, 0xae, 0x89, 0x99, 0x42, 0xce, 0x73, 0x55}};
23
-static const mfxPluginUID  MFX_PLUGINID_CAPTURE_HW   = {{0x22, 0xd6, 0x2c, 0x07, 0xe6, 0x72, 0x40, 0x8f, 0xbb, 0x4c, 0xc2, 0x0e, 0xd7, 0xa0, 0x53, 0xe4}};
24
-static const mfxPluginUID  MFX_PLUGINID_ITELECINE_HW = {{0xe7, 0x44, 0x75, 0x3a, 0xcd, 0x74, 0x40, 0x2e, 0x89, 0xa2, 0xee, 0x06, 0x35, 0x49, 0x61, 0x79}};
25
-static const mfxPluginUID  MFX_PLUGINID_H264LA_HW    = {{0x58, 0x8f, 0x11, 0x85, 0xd4, 0x7b, 0x42, 0x96, 0x8d, 0xea, 0x37, 0x7b, 0xb5, 0xd0, 0xdc, 0xb4}};
26
-static const mfxPluginUID  MFX_PLUGINID_AACD         = {{0xe9, 0x34, 0x67, 0x25, 0xac, 0x2f, 0x4c, 0x93, 0xaa, 0x58, 0x5c, 0x11, 0xc7, 0x08, 0x7c, 0xf4}};
27
-static const mfxPluginUID  MFX_PLUGINID_AACE         = {{0xb2, 0xa2, 0xa0, 0x5a, 0x4e, 0xac, 0x46, 0xbf, 0xa9, 0xde, 0x7e, 0x80, 0xc9, 0x8d, 0x2e, 0x18}};
28
-static const mfxPluginUID  MFX_PLUGINID_HEVCE_FEI_HW = {{0x87, 0xe0, 0xe8, 0x02, 0x07, 0x37, 0x52, 0x40, 0x85, 0x25, 0x15, 0xcf, 0x4a, 0x5e, 0xdd, 0xe6}};
29
+static const mfxPluginUID  MFX_PLUGINID_HEVCD_SW        = {{0x15, 0xdd, 0x93, 0x68, 0x25, 0xad, 0x47, 0x5e, 0xa3, 0x4e, 0x35, 0xf3, 0xf5, 0x42, 0x17, 0xa6}};
30
+static const mfxPluginUID  MFX_PLUGINID_HEVCD_HW        = {{0x33, 0xa6, 0x1c, 0x0b, 0x4c, 0x27, 0x45, 0x4c, 0xa8, 0xd8, 0x5d, 0xde, 0x75, 0x7c, 0x6f, 0x8e}};
31
+static const mfxPluginUID  MFX_PLUGINID_HEVCE_SW        = {{0x2f, 0xca, 0x99, 0x74, 0x9f, 0xdb, 0x49, 0xae, 0xb1, 0x21, 0xa5, 0xb6, 0x3e, 0xf5, 0x68, 0xf7}};
32
+static const mfxPluginUID  MFX_PLUGINID_HEVCE_GACC      = {{0xe5, 0x40, 0x0a, 0x06, 0xc7, 0x4d, 0x41, 0xf5, 0xb1, 0x2d, 0x43, 0x0b, 0xba, 0xa2, 0x3d, 0x0b}};
33
+static const mfxPluginUID  MFX_PLUGINID_HEVCE_DP_GACC   = {{0x2b, 0xad, 0x6f, 0x9d, 0x77, 0x54, 0x41, 0x2d, 0xbf, 0x63, 0x03, 0xed, 0x4b, 0xb5, 0x09, 0x68}};
34
+static const mfxPluginUID  MFX_PLUGINID_HEVCE_HW        = {{0x6f, 0xad, 0xc7, 0x91, 0xa0, 0xc2, 0xeb, 0x47, 0x9a, 0xb6, 0xdc, 0xd5, 0xea, 0x9d, 0xa3, 0x47}};
35
+static const mfxPluginUID  MFX_PLUGINID_VP8D_HW         = {{0xf6, 0x22, 0x39, 0x4d, 0x8d, 0x87, 0x45, 0x2f, 0x87, 0x8c, 0x51, 0xf2, 0xfc, 0x9b, 0x41, 0x31}};
36
+static const mfxPluginUID  MFX_PLUGINID_VP8E_HW         = {{0xbf, 0xfc, 0x51, 0x8c, 0xde, 0x13, 0x4d, 0xf9, 0x8a, 0x96, 0xf4, 0xcf, 0x81, 0x6c, 0x0f, 0xac}};
37
+static const mfxPluginUID  MFX_PLUGINID_VP9E_HW         = {{0xce, 0x44, 0xef, 0x6f, 0x1a, 0x6d, 0x22, 0x46, 0xb4, 0x12, 0xbb, 0x38, 0xd6, 0xe4, 0x51, 0x82}};
38
+static const mfxPluginUID  MFX_PLUGINID_VP9D_HW         = {{0xa9, 0x22, 0x39, 0x4d, 0x8d, 0x87, 0x45, 0x2f, 0x87, 0x8c, 0x51, 0xf2, 0xfc, 0x9b, 0x41, 0x31}};
39
+static const mfxPluginUID  MFX_PLUGINID_CAMERA_HW       = {{0x54, 0x54, 0x26, 0x16, 0x24, 0x33, 0x41, 0xe6, 0x93, 0xae, 0x89, 0x99, 0x42, 0xce, 0x73, 0x55}};
40
+static const mfxPluginUID  MFX_PLUGINID_CAPTURE_HW      = {{0x22, 0xd6, 0x2c, 0x07, 0xe6, 0x72, 0x40, 0x8f, 0xbb, 0x4c, 0xc2, 0x0e, 0xd7, 0xa0, 0x53, 0xe4}};
41
+static const mfxPluginUID  MFX_PLUGINID_ITELECINE_HW    = {{0xe7, 0x44, 0x75, 0x3a, 0xcd, 0x74, 0x40, 0x2e, 0x89, 0xa2, 0xee, 0x06, 0x35, 0x49, 0x61, 0x79}};
42
+static const mfxPluginUID  MFX_PLUGINID_H264LA_HW       = {{0x58, 0x8f, 0x11, 0x85, 0xd4, 0x7b, 0x42, 0x96, 0x8d, 0xea, 0x37, 0x7b, 0xb5, 0xd0, 0xdc, 0xb4}};
43
+static const mfxPluginUID  MFX_PLUGINID_AACD            = {{0xe9, 0x34, 0x67, 0x25, 0xac, 0x2f, 0x4c, 0x93, 0xaa, 0x58, 0x5c, 0x11, 0xc7, 0x08, 0x7c, 0xf4}};
44
+static const mfxPluginUID  MFX_PLUGINID_AACE            = {{0xb2, 0xa2, 0xa0, 0x5a, 0x4e, 0xac, 0x46, 0xbf, 0xa9, 0xde, 0x7e, 0x80, 0xc9, 0x8d, 0x2e, 0x18}};
45
+static const mfxPluginUID  MFX_PLUGINID_HEVCE_FEI_HW    = {{0x87, 0xe0, 0xe8, 0x02, 0x07, 0x37, 0x52, 0x40, 0x85, 0x25, 0x15, 0xcf, 0x4a, 0x5e, 0xdd, 0xe6}};
46
+static const mfxPluginUID  MFX_PLUGINID_HEVC_FEI_ENCODE = {{0x54, 0x18, 0xa7, 0x06, 0x66, 0xf9, 0x4d, 0x5c, 0xb4, 0xf7, 0xb1, 0xca, 0xee, 0x86, 0x33, 0x9b}};
47
 
48
 
49
 typedef enum {
50
@@ -71,26 +73,26 @@
51
 
52
 typedef enum {
53
     MFX_THREADPOLICY_SERIAL    = 0,
54
-    MFX_THREADPOLICY_PARALLEL    = 1
55
+    MFX_THREADPOLICY_PARALLEL  = 1
56
 } mfxThreadPolicy;
57
 
58
 typedef struct mfxPluginParam {
59
-    mfxU32  reserved[6];
60
-    mfxU16  reserved1;
61
-    mfxU16  PluginVersion;
62
-    mfxVersion   APIVersion;
63
-    mfxPluginUID PluginUID;
64
-    mfxU32  Type;
65
-    mfxU32  CodecId;
66
+    mfxU32          reserved[6];
67
+    mfxU16          reserved1;
68
+    mfxU16          PluginVersion;
69
+    mfxVersion      APIVersion;
70
+    mfxPluginUID    PluginUID;
71
+    mfxU32          Type;
72
+    mfxU32          CodecId;
73
     mfxThreadPolicy ThreadPolicy;
74
-    mfxU32  MaxThreadNum;
75
+    mfxU32          MaxThreadNum;
76
 } mfxPluginParam;
77
 
78
 typedef struct mfxCoreParam{
79
-    mfxU32  reserved[13];
80
-    mfxIMPL Impl;
81
+    mfxU32     reserved[13];
82
+    mfxIMPL    Impl;
83
     mfxVersion Version;
84
-    mfxU32  NumWorkingThread;
85
+    mfxU32     NumWorkingThread;
86
 } mfxCoreParam;
87
 
88
 typedef struct mfxCoreInterface {
89
@@ -114,23 +116,25 @@
90
     mfxStatus (MFX_CDECL *GetOpaqueSurface)(mfxHDL pthis, mfxFrameSurface1 *surf, mfxFrameSurface1 **op_surf);
91
 
92
     mfxStatus (MFX_CDECL *CreateAccelerationDevice)(mfxHDL pthis, mfxHandleType type, mfxHDL *handle);
93
+    mfxStatus (MFX_CDECL *GetFrameHandle) (mfxHDL pthis, mfxFrameData *fd, mfxHDL *handle);
94
+    mfxStatus (MFX_CDECL *QueryPlatform) (mfxHDL pthis, mfxPlatform *platform);
95
 
96
-    mfxHDL reserved4[3];
97
+    mfxHDL reserved4[1];
98
 } mfxCoreInterface;
99
 
100
-/* video codec plugin extension*/
101
+/* video codec plugin extension */
102
 typedef struct _mfxENCInput mfxENCInput;
103
 typedef struct _mfxENCOutput mfxENCOutput;
104
 typedef struct mfxVideoCodecPlugin{
105
     mfxStatus (MFX_CDECL *Query)(mfxHDL pthis, mfxVideoParam *in, mfxVideoParam *out);
106
-    mfxStatus (MFX_CDECL *QueryIOSurf)(mfxHDL pthis, mfxVideoParam *par, mfxFrameAllocRequest *in, mfxFrameAllocRequest *out); 
107
+    mfxStatus (MFX_CDECL *QueryIOSurf)(mfxHDL pthis, mfxVideoParam *par, mfxFrameAllocRequest *in, mfxFrameAllocRequest *out);
108
     mfxStatus (MFX_CDECL *Init)(mfxHDL pthis, mfxVideoParam *par);
109
     mfxStatus (MFX_CDECL *Reset)(mfxHDL pthis, mfxVideoParam *par);
110
     mfxStatus (MFX_CDECL *Close)(mfxHDL pthis);
111
     mfxStatus (MFX_CDECL *GetVideoParam)(mfxHDL pthis, mfxVideoParam *par);
112
 
113
     mfxStatus (MFX_CDECL *EncodeFrameSubmit)(mfxHDL pthis, mfxEncodeCtrl *ctrl, mfxFrameSurface1 *surface, mfxBitstream *bs, mfxThreadTask *task);
114
-    
115
+
116
     mfxStatus (MFX_CDECL *DecodeHeader)(mfxHDL pthis, mfxBitstream *bs, mfxVideoParam *par);
117
     mfxStatus (MFX_CDECL *GetPayload)(mfxHDL pthis, mfxU64 *ts, mfxPayload *payload);
118
     mfxStatus (MFX_CDECL *DecodeFrameSubmit)(mfxHDL pthis, mfxBitstream *bs, mfxFrameSurface1 *surface_work, mfxFrameSurface1 **surface_out,  mfxThreadTask *task);
119
@@ -146,14 +150,14 @@
120
 
121
 typedef struct mfxAudioCodecPlugin{
122
     mfxStatus (MFX_CDECL *Query)(mfxHDL pthis, mfxAudioParam *in, mfxAudioParam *out);
123
-    mfxStatus (MFX_CDECL *QueryIOSize)(mfxHDL pthis, mfxAudioParam *par, mfxAudioAllocRequest *request); 
124
+    mfxStatus (MFX_CDECL *QueryIOSize)(mfxHDL pthis, mfxAudioParam *par, mfxAudioAllocRequest *request);
125
     mfxStatus (MFX_CDECL *Init)(mfxHDL pthis, mfxAudioParam *par);
126
     mfxStatus (MFX_CDECL *Reset)(mfxHDL pthis, mfxAudioParam *par);
127
     mfxStatus (MFX_CDECL *Close)(mfxHDL pthis);
128
     mfxStatus (MFX_CDECL *GetAudioParam)(mfxHDL pthis, mfxAudioParam *par);
129
 
130
     mfxStatus (MFX_CDECL *EncodeFrameSubmit)(mfxHDL pthis, mfxAudioFrame *aFrame, mfxBitstream *out, mfxThreadTask *task);
131
-    
132
+
133
     mfxStatus (MFX_CDECL *DecodeHeader)(mfxHDL pthis, mfxBitstream *bs, mfxAudioParam *par);
134
 //    mfxStatus (MFX_CDECL *GetPayload)(mfxHDL pthis, mfxU64 *ts, mfxPayload *payload);
135
     mfxStatus (MFX_CDECL *DecodeFrameSubmit)(mfxHDL pthis, mfxBitstream *in, mfxAudioFrame *out, mfxThreadTask *task);
136
@@ -186,6 +190,7 @@
137
 
138
 mfxStatus MFX_CDECL MFXVideoUSER_Register(mfxSession session, mfxU32 type, const mfxPlugin *par);
139
 mfxStatus MFX_CDECL MFXVideoUSER_Unregister(mfxSession session, mfxU32 type);
140
+mfxStatus MFX_CDECL MFXVideoUSER_GetPlugin(mfxSession session, mfxU32 type, mfxPlugin *par);
141
 mfxStatus MFX_CDECL MFXVideoUSER_ProcessFrameAsync(mfxSession session, const mfxHDL *in, mfxU32 in_num, const mfxHDL *out, mfxU32 out_num, mfxSyncPoint *syncp);
142
 
143
 mfxStatus MFX_CDECL MFXVideoUSER_Load(mfxSession session, const mfxPluginUID *uid, mfxU32 version);
144
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxstructures.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxstructures.h Changed
1029
 
1
@@ -1,6 +1,6 @@
2
 /******************************************************************************* *\
3
 
4
-Copyright (C) 2007-2015 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2007-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -106,7 +106,7 @@
10
     MFX_FOURCC_RGB4         = MFX_MAKEFOURCC('R','G','B','4'),   /* ARGB in that order, A channel is 8 MSBs */
11
     MFX_FOURCC_P8           = 41,                                /*  D3DFMT_P8   */
12
     MFX_FOURCC_P8_TEXTURE   = MFX_MAKEFOURCC('P','8','M','B'),
13
-    MFX_FOURCC_P010         = MFX_MAKEFOURCC('P','0','1','0'), 
14
+    MFX_FOURCC_P010         = MFX_MAKEFOURCC('P','0','1','0'),
15
     MFX_FOURCC_P210         = MFX_MAKEFOURCC('P','2','1','0'),
16
     MFX_FOURCC_BGR4         = MFX_MAKEFOURCC('B','G','R','4'),   /* ABGR in that order, A channel is 8 MSBs */
17
     MFX_FOURCC_A2RGB10      = MFX_MAKEFOURCC('R','G','1','0'),   /* ARGB in that order, A channel is two MSBs */
18
@@ -115,7 +115,9 @@
19
     MFX_FOURCC_R16          = MFX_MAKEFOURCC('R','1','6','U'),
20
     MFX_FOURCC_AYUV         = MFX_MAKEFOURCC('A','Y','U','V'),   /* YUV 4:4:4, AYUV in that order, A channel is 8 MSBs */
21
     MFX_FOURCC_AYUV_RGB4    = MFX_MAKEFOURCC('A','V','U','Y'),   /* ARGB in that order, A channel is 8 MSBs stored in AYUV surface*/
22
-    MFX_FOURCC_UYVY         = MFX_MAKEFOURCC('U','Y','V','Y')
23
+    MFX_FOURCC_UYVY         = MFX_MAKEFOURCC('U','Y','V','Y'),
24
+    MFX_FOURCC_Y210         = MFX_MAKEFOURCC('Y','2','1','0'),
25
+    MFX_FOURCC_Y410         = MFX_MAKEFOURCC('Y','4','1','0'),
26
 };
27
 
28
 /* PicStruct */
29
@@ -127,7 +129,13 @@
30
 
31
     MFX_PICSTRUCT_FIELD_REPEATED=0x10,  /* first field repeated, pic_struct=5 or 6 in H.264 */
32
     MFX_PICSTRUCT_FRAME_DOUBLING=0x20,  /* pic_struct=7 in H.264 */
33
-    MFX_PICSTRUCT_FRAME_TRIPLING=0x40   /* pic_struct=8 in H.264 */
34
+    MFX_PICSTRUCT_FRAME_TRIPLING=0x40,  /* pic_struct=8 in H.264 */
35
+
36
+    MFX_PICSTRUCT_FIELD_SINGLE      =0x100,
37
+    MFX_PICSTRUCT_FIELD_TOP         =MFX_PICSTRUCT_FIELD_SINGLE | MFX_PICSTRUCT_FIELD_TFF,
38
+    MFX_PICSTRUCT_FIELD_BOTTOM      =MFX_PICSTRUCT_FIELD_SINGLE | MFX_PICSTRUCT_FIELD_BFF,
39
+    MFX_PICSTRUCT_FIELD_PAIRED_PREV =0x200,
40
+    MFX_PICSTRUCT_FIELD_PAIRED_NEXT =0x400,
41
 };
42
 
43
 /* ColorFormat */
44
@@ -139,7 +147,8 @@
45
     MFX_CHROMAFORMAT_YUV400     = MFX_CHROMAFORMAT_MONOCHROME,
46
     MFX_CHROMAFORMAT_YUV411     = 4,
47
     MFX_CHROMAFORMAT_YUV422H    = MFX_CHROMAFORMAT_YUV422,
48
-    MFX_CHROMAFORMAT_YUV422V    = 5
49
+    MFX_CHROMAFORMAT_YUV422V    = 5,
50
+    MFX_CHROMAFORMAT_RESERVED1  = 6
51
 };
52
 
53
 enum {
54
@@ -165,6 +174,27 @@
55
     MFX_CORRUPTION_REFERENCE_LIST  = 0x0020
56
 };
57
 
58
+#pragma pack(push, 4)
59
+typedef struct
60
+{
61
+    mfxU32 U : 10;
62
+    mfxU32 Y : 10;
63
+    mfxU32 V : 10;
64
+    mfxU32 A :  2;
65
+} mfxY410;
66
+#pragma pack(pop)
67
+
68
+#pragma pack(push, 4)
69
+typedef struct
70
+{
71
+    mfxU32 B : 10;
72
+    mfxU32 G : 10;
73
+    mfxU32 R : 10;
74
+    mfxU32 A :  2;
75
+} mfxA2RGB10;
76
+#pragma pack(pop)
77
+
78
+
79
 /* Frame Data Info */
80
 typedef struct {
81
     union {
82
@@ -173,7 +203,8 @@
83
     };
84
     mfxU16  NumExtParam;
85
 
86
-    mfxU16      reserved[10];
87
+    mfxU16      reserved[9];
88
+    mfxU16      MemType;
89
     mfxU16      PitchHigh;
90
 
91
     mfxU64      TimeStamp;
92
@@ -199,12 +230,14 @@
93
         mfxU8   *U;
94
         mfxU16  *U16;
95
         mfxU8   *G;
96
+        mfxY410 *Y410;          /* for Y410 format (merged AVYU) */
97
     };
98
     union {
99
         mfxU8   *Cr;
100
         mfxU8   *V;
101
         mfxU16  *V16;
102
         mfxU8   *B;
103
+        mfxA2RGB10 *A2RGB10;    /* for A2RGB10 format (merged ARGB) */
104
     };
105
     mfxU8       *A;
106
     mfxMemId    MemId;
107
@@ -240,7 +273,7 @@
108
     mfxU16  NumThread;
109
 
110
     union {
111
-        struct {   /* MPEG-2/H.264 Encoding Options */
112
+        struct {   /* Encoding Options */
113
             mfxU16  TargetUsage;
114
 
115
             mfxU16  GopPicSize;
116
@@ -270,20 +303,23 @@
117
             mfxU16  NumRefFrame;
118
             mfxU16  EncodedOrder;
119
         };
120
-        struct {   /* H.264, MPEG-2 and VC-1 Decoding Options */
121
+        struct {   /* Decoding Options */
122
             mfxU16  DecodedOrder;
123
             mfxU16  ExtendedPicStruct;
124
             mfxU16  TimeStampCalc;
125
             mfxU16  SliceGroupsPresent;
126
             mfxU16  MaxDecFrameBuffering;
127
-            mfxU16  reserved2[8];
128
+            mfxU16  EnableReallocRequest;
129
+            mfxU16  reserved2[7];
130
         };
131
         struct {   /* JPEG Decoding Options */
132
             mfxU16  JPEGChromaFormat;
133
             mfxU16  Rotation;
134
             mfxU16  JPEGColorFormat;
135
             mfxU16  InterleavedDec;
136
-            mfxU16  reserved3[9];
137
+            mfxU8   SamplingFactorH[4];
138
+            mfxU8   SamplingFactorV[4];
139
+            mfxU16  reserved3[5];
140
         };
141
         struct {   /* JPEG Encoding Options */
142
             mfxU16  Interleaved;
143
@@ -333,7 +369,9 @@
144
     MFX_CODEC_HEVC        =MFX_MAKEFOURCC('H','E','V','C'),
145
     MFX_CODEC_MPEG2       =MFX_MAKEFOURCC('M','P','G','2'),
146
     MFX_CODEC_VC1         =MFX_MAKEFOURCC('V','C','1',' '),
147
-    MFX_CODEC_CAPTURE     =MFX_MAKEFOURCC('C','A','P','T')
148
+    MFX_CODEC_CAPTURE     =MFX_MAKEFOURCC('C','A','P','T'),
149
+    MFX_CODEC_VP9         =MFX_MAKEFOURCC('V','P','9',' '),
150
+    MFX_CODEC_AV1         =MFX_MAKEFOURCC('A','V','1',' ')
151
 };
152
 
153
 /* CodecProfile, CodecLevel */
154
@@ -426,6 +464,13 @@
155
 
156
     MFX_TIER_HEVC_MAIN  = 0,
157
     MFX_TIER_HEVC_HIGH  = 0x100,
158
+
159
+    /* VP9 Profiles */
160
+    MFX_PROFILE_VP9_0                       = 1,
161
+    MFX_PROFILE_VP9_1                       = 2,
162
+    MFX_PROFILE_VP9_2                       = 3,
163
+    MFX_PROFILE_VP9_3                       = 4,
164
+
165
 };
166
 
167
 /* GopOptFlag */
168
@@ -466,7 +511,7 @@
169
     MFX_RATECONTROL_LA_ICQ    =11,
170
     MFX_RATECONTROL_LA_EXT    =12,
171
     MFX_RATECONTROL_LA_HRD    =13,
172
-    MFX_RATECONTROL_QVBR      =14
173
+    MFX_RATECONTROL_QVBR      =14,
174
 };
175
 
176
 /* Trellis control*/
177
@@ -538,6 +583,14 @@
178
     MFX_SKIPFRAME_BRC_ONLY        = 3,
179
 };
180
 
181
+/* Intra refresh types */
182
+enum {
183
+        MFX_REFRESH_NO             = 0,
184
+        MFX_REFRESH_VERTICAL       = 1,
185
+        MFX_REFRESH_HORIZONTAL     = 2,
186
+        MFX_REFRESH_SLICE          = 3
187
+};
188
+
189
 typedef struct {
190
     mfxExtBuffer Header;
191
 
192
@@ -606,6 +659,7 @@
193
     MFX_P_REF_PYRAMID = 2
194
 };
195
 
196
+
197
 typedef struct {
198
     mfxExtBuffer Header;
199
 
200
@@ -632,14 +686,46 @@
201
     mfxU16      OverscanAppropriate;            /* tri-state option */
202
     mfxU16      TimingInfoPresent;              /* tri-state option */
203
     mfxU16      BitstreamRestriction;           /* tri-state option */
204
-    mfxU16      reserved1[4];
205
+    mfxU16      LowDelayHrd;                    /* tri-state option */
206
+    mfxU16      MotionVectorsOverPicBoundaries; /* tri-state option */
207
+    mfxU16      reserved1[2];
208
 
209
     mfxU16      ScenarioInfo;
210
     mfxU16      ContentInfo;
211
 
212
     mfxU16      PRefType;
213
     mfxU16      FadeDetection;            /* tri-state option */
214
-    mfxU16      reserved[225];
215
+    mfxU16      reserved2[2];
216
+    mfxU16      GPB;                      /* tri-state option */
217
+
218
+    mfxU32      MaxFrameSizeI;
219
+    mfxU32      MaxFrameSizeP;
220
+    mfxU32      reserved3[3];
221
+
222
+    mfxU16      EnableQPOffset;           /* tri-state option */
223
+    mfxI16      QPOffset[8];              /* FrameQP = QPX + QPOffset[pyramid_layer]; QPX = QPB for B-pyramid, QPP for P-pyramid */
224
+
225
+    mfxU16      NumRefActiveP[8];
226
+    mfxU16      NumRefActiveBL0[8];
227
+    mfxU16      NumRefActiveBL1[8];
228
+
229
+    mfxU16      reserved6;
230
+    mfxU16      TransformSkip;  /* tri-state option; HEVC transform_skip_enabled_flag */
231
+    mfxU16      TargetChromaFormatPlus1;   /* Minus 1 specifies target encoding chroma format (see ColorFormat enum). May differ from input one. */
232
+    mfxU16      TargetBitDepthLuma;        /* Target encoding bit depth for luma samples. May differ from input one. */
233
+    mfxU16      TargetBitDepthChroma;      /* Target encoding bit depth for chroma samples. May differ from input one. */
234
+    mfxU16      BRCPanicMode;              /* tri-state option */
235
+
236
+    mfxU16      LowDelayBRC;               /* tri-state option */
237
+    mfxU16      EnableMBForceIntra;        /* tri-state option */
238
+    mfxU16      AdaptiveMaxFrameSize;      /* tri-state option */
239
+
240
+    mfxU16      RepartitionCheckEnable;    /* tri-state option */
241
+    mfxU16      reserved5[3];
242
+    mfxU16      EncodedUnitsInfo;          /* tri-state option */
243
+    mfxU16      EnableNalUnitType;         /* tri-state option */
244
+    mfxU16      ExtBrcAdaptiveLTR;         /* tri-state option for ExtBRC */
245
+    mfxU16      reserved[163];
246
 } mfxExtCodingOption3;
247
 
248
 /* IntraPredBlockSize/InterPredBlockSize */
249
@@ -670,51 +756,72 @@
250
     MFX_BITSTREAM_COMPLETE_FRAME    = 0x0001,        /* the bitstream contains a complete frame or field pair of data */
251
     MFX_BITSTREAM_EOS               = 0x0002
252
 };
253
-
254
 /* Extended Buffer Ids */
255
 enum {
256
-    MFX_EXTBUFF_CODING_OPTION              = MFX_MAKEFOURCC('C','D','O','P'),
257
-    MFX_EXTBUFF_CODING_OPTION_SPSPPS       = MFX_MAKEFOURCC('C','O','S','P'),
258
-    MFX_EXTBUFF_VPP_DONOTUSE               = MFX_MAKEFOURCC('N','U','S','E'),
259
-    MFX_EXTBUFF_VPP_AUXDATA                = MFX_MAKEFOURCC('A','U','X','D'),
260
-    MFX_EXTBUFF_VPP_DENOISE                = MFX_MAKEFOURCC('D','N','I','S'),
261
-    MFX_EXTBUFF_VPP_SCENE_ANALYSIS         = MFX_MAKEFOURCC('S','C','L','Y'),
262
-    MFX_EXTBUFF_VPP_SCENE_CHANGE           = MFX_EXTBUFF_VPP_SCENE_ANALYSIS,
263
-    MFX_EXTBUFF_VPP_PROCAMP                = MFX_MAKEFOURCC('P','A','M','P'),
264
-    MFX_EXTBUFF_VPP_DETAIL                 = MFX_MAKEFOURCC('D','E','T',' '),
265
-    MFX_EXTBUFF_VIDEO_SIGNAL_INFO          = MFX_MAKEFOURCC('V','S','I','N'),
266
-    MFX_EXTBUFF_VPP_DOUSE                  = MFX_MAKEFOURCC('D','U','S','E'),
267
-    MFX_EXTBUFF_OPAQUE_SURFACE_ALLOCATION  = MFX_MAKEFOURCC('O','P','Q','S'),
268
-    MFX_EXTBUFF_AVC_REFLIST_CTRL           = MFX_MAKEFOURCC('R','L','S','T'),
269
-    MFX_EXTBUFF_VPP_FRAME_RATE_CONVERSION  = MFX_MAKEFOURCC('F','R','C',' '),
270
-    MFX_EXTBUFF_PICTURE_TIMING_SEI         = MFX_MAKEFOURCC('P','T','S','E'),
271
-    MFX_EXTBUFF_AVC_TEMPORAL_LAYERS        = MFX_MAKEFOURCC('A','T','M','L'),
272
-    MFX_EXTBUFF_CODING_OPTION2             = MFX_MAKEFOURCC('C','D','O','2'),
273
-    MFX_EXTBUFF_VPP_IMAGE_STABILIZATION    = MFX_MAKEFOURCC('I','S','T','B'),
274
-    MFX_EXTBUFF_VPP_PICSTRUCT_DETECTION    = MFX_MAKEFOURCC('I','D','E','T'),
275
-    MFX_EXTBUFF_ENCODER_CAPABILITY         = MFX_MAKEFOURCC('E','N','C','P'),
276
-    MFX_EXTBUFF_ENCODER_RESET_OPTION       = MFX_MAKEFOURCC('E','N','R','O'),
277
-    MFX_EXTBUFF_ENCODED_FRAME_INFO         = MFX_MAKEFOURCC('E','N','F','I'),
278
-    MFX_EXTBUFF_VPP_COMPOSITE              = MFX_MAKEFOURCC('V','C','M','P'),
279
-    MFX_EXTBUFF_VPP_VIDEO_SIGNAL_INFO      = MFX_MAKEFOURCC('V','V','S','I'),
280
-    MFX_EXTBUFF_ENCODER_ROI                = MFX_MAKEFOURCC('E','R','O','I'),
281
-    MFX_EXTBUFF_VPP_DEINTERLACING          = MFX_MAKEFOURCC('V','P','D','I'),
282
-    MFX_EXTBUFF_AVC_REFLISTS               = MFX_MAKEFOURCC('R','L','T','S'),
283
-    MFX_EXTBUFF_VPP_FIELD_PROCESSING       = MFX_MAKEFOURCC('F','P','R','O'),
284
-    MFX_EXTBUFF_CODING_OPTION3             = MFX_MAKEFOURCC('C','D','O','3'),
285
-    MFX_EXTBUFF_CHROMA_LOC_INFO            = MFX_MAKEFOURCC('C','L','I','N'),
286
-    MFX_EXTBUFF_MBQP                       = MFX_MAKEFOURCC('M','B','Q','P'),
287
-    MFX_EXTBUFF_HEVC_TILES                 = MFX_MAKEFOURCC('2','6','5','T'),
288
-    MFX_EXTBUFF_MB_DISABLE_SKIP_MAP        = MFX_MAKEFOURCC('M','D','S','M'),
289
-    MFX_EXTBUFF_HEVC_PARAM                 = MFX_MAKEFOURCC('2','6','5','P'),
290
-    MFX_EXTBUFF_DECODED_FRAME_INFO         = MFX_MAKEFOURCC('D','E','F','I'),
291
-    MFX_EXTBUFF_TIME_CODE                  = MFX_MAKEFOURCC('T','M','C','D'),
292
-    MFX_EXTBUFF_HEVC_REGION                = MFX_MAKEFOURCC('2','6','5','R'),
293
-    MFX_EXTBUFF_PRED_WEIGHT_TABLE          = MFX_MAKEFOURCC('E','P','W','T'),
294
-    MFX_EXTBUFF_DIRTY_RECTANGLES           = MFX_MAKEFOURCC('D','R','O','I'),
295
-    MFX_EXTBUFF_MOVING_RECTANGLES          = MFX_MAKEFOURCC('M','R','O','I'),
296
-    MFX_EXTBUFF_CODING_OPTION_VPS          = MFX_MAKEFOURCC('C','O','V','P'),
297
-    MFX_EXTBUFF_VPP_ROTATION               = MFX_MAKEFOURCC('R','O','T',' ')
298
+    MFX_EXTBUFF_CODING_OPTION                   = MFX_MAKEFOURCC('C','D','O','P'),
299
+    MFX_EXTBUFF_CODING_OPTION_SPSPPS            = MFX_MAKEFOURCC('C','O','S','P'),
300
+    MFX_EXTBUFF_VPP_DONOTUSE                    = MFX_MAKEFOURCC('N','U','S','E'),
301
+    MFX_EXTBUFF_VPP_AUXDATA                     = MFX_MAKEFOURCC('A','U','X','D'),
302
+    MFX_EXTBUFF_VPP_DENOISE                     = MFX_MAKEFOURCC('D','N','I','S'),
303
+    MFX_EXTBUFF_VPP_SCENE_ANALYSIS              = MFX_MAKEFOURCC('S','C','L','Y'),
304
+    MFX_EXTBUFF_VPP_SCENE_CHANGE                = MFX_EXTBUFF_VPP_SCENE_ANALYSIS,
305
+    MFX_EXTBUFF_VPP_PROCAMP                     = MFX_MAKEFOURCC('P','A','M','P'),
306
+    MFX_EXTBUFF_VPP_DETAIL                      = MFX_MAKEFOURCC('D','E','T',' '),
307
+    MFX_EXTBUFF_VIDEO_SIGNAL_INFO               = MFX_MAKEFOURCC('V','S','I','N'),
308
+    MFX_EXTBUFF_VPP_DOUSE                       = MFX_MAKEFOURCC('D','U','S','E'),
309
+    MFX_EXTBUFF_OPAQUE_SURFACE_ALLOCATION       = MFX_MAKEFOURCC('O','P','Q','S'),
310
+    MFX_EXTBUFF_AVC_REFLIST_CTRL                = MFX_MAKEFOURCC('R','L','S','T'),
311
+    MFX_EXTBUFF_VPP_FRAME_RATE_CONVERSION       = MFX_MAKEFOURCC('F','R','C',' '),
312
+    MFX_EXTBUFF_PICTURE_TIMING_SEI              = MFX_MAKEFOURCC('P','T','S','E'),
313
+    MFX_EXTBUFF_AVC_TEMPORAL_LAYERS             = MFX_MAKEFOURCC('A','T','M','L'),
314
+    MFX_EXTBUFF_CODING_OPTION2                  = MFX_MAKEFOURCC('C','D','O','2'),
315
+    MFX_EXTBUFF_VPP_IMAGE_STABILIZATION         = MFX_MAKEFOURCC('I','S','T','B'),
316
+    MFX_EXTBUFF_VPP_PICSTRUCT_DETECTION         = MFX_MAKEFOURCC('I','D','E','T'),
317
+    MFX_EXTBUFF_ENCODER_CAPABILITY              = MFX_MAKEFOURCC('E','N','C','P'),
318
+    MFX_EXTBUFF_ENCODER_RESET_OPTION            = MFX_MAKEFOURCC('E','N','R','O'),
319
+    MFX_EXTBUFF_ENCODED_FRAME_INFO              = MFX_MAKEFOURCC('E','N','F','I'),
320
+    MFX_EXTBUFF_VPP_COMPOSITE                   = MFX_MAKEFOURCC('V','C','M','P'),
321
+    MFX_EXTBUFF_VPP_VIDEO_SIGNAL_INFO           = MFX_MAKEFOURCC('V','V','S','I'),
322
+    MFX_EXTBUFF_ENCODER_ROI                     = MFX_MAKEFOURCC('E','R','O','I'),
323
+    MFX_EXTBUFF_VPP_DEINTERLACING               = MFX_MAKEFOURCC('V','P','D','I'),
324
+    MFX_EXTBUFF_AVC_REFLISTS                    = MFX_MAKEFOURCC('R','L','T','S'),
325
+    MFX_EXTBUFF_DEC_VIDEO_PROCESSING            = MFX_MAKEFOURCC('D','E','C','V'),
326
+    MFX_EXTBUFF_VPP_FIELD_PROCESSING            = MFX_MAKEFOURCC('F','P','R','O'),
327
+    MFX_EXTBUFF_CODING_OPTION3                  = MFX_MAKEFOURCC('C','D','O','3'),
328
+    MFX_EXTBUFF_CHROMA_LOC_INFO                 = MFX_MAKEFOURCC('C','L','I','N'),
329
+    MFX_EXTBUFF_MBQP                            = MFX_MAKEFOURCC('M','B','Q','P'),
330
+    MFX_EXTBUFF_MB_FORCE_INTRA                  = MFX_MAKEFOURCC('M','B','F','I'),
331
+    MFX_EXTBUFF_HEVC_TILES                      = MFX_MAKEFOURCC('2','6','5','T'),
332
+    MFX_EXTBUFF_MB_DISABLE_SKIP_MAP             = MFX_MAKEFOURCC('M','D','S','M'),
333
+    MFX_EXTBUFF_HEVC_PARAM                      = MFX_MAKEFOURCC('2','6','5','P'),
334
+    MFX_EXTBUFF_DECODED_FRAME_INFO              = MFX_MAKEFOURCC('D','E','F','I'),
335
+    MFX_EXTBUFF_TIME_CODE                       = MFX_MAKEFOURCC('T','M','C','D'),
336
+    MFX_EXTBUFF_HEVC_REGION                     = MFX_MAKEFOURCC('2','6','5','R'),
337
+    MFX_EXTBUFF_PRED_WEIGHT_TABLE               = MFX_MAKEFOURCC('E','P','W','T'),
338
+    MFX_EXTBUFF_DIRTY_RECTANGLES                = MFX_MAKEFOURCC('D','R','O','I'),
339
+    MFX_EXTBUFF_MOVING_RECTANGLES               = MFX_MAKEFOURCC('M','R','O','I'),
340
+    MFX_EXTBUFF_CODING_OPTION_VPS               = MFX_MAKEFOURCC('C','O','V','P'),
341
+    MFX_EXTBUFF_VPP_ROTATION                    = MFX_MAKEFOURCC('R','O','T',' '),
342
+    MFX_EXTBUFF_ENCODED_SLICES_INFO             = MFX_MAKEFOURCC('E','N','S','I'),
343
+    MFX_EXTBUFF_VPP_SCALING                     = MFX_MAKEFOURCC('V','S','C','L'),
344
+    MFX_EXTBUFF_HEVC_REFLIST_CTRL               = MFX_EXTBUFF_AVC_REFLIST_CTRL,
345
+    MFX_EXTBUFF_HEVC_REFLISTS                   = MFX_EXTBUFF_AVC_REFLISTS,
346
+    MFX_EXTBUFF_HEVC_TEMPORAL_LAYERS            = MFX_EXTBUFF_AVC_TEMPORAL_LAYERS,
347
+    MFX_EXTBUFF_VPP_MIRRORING                   = MFX_MAKEFOURCC('M','I','R','R'),
348
+    MFX_EXTBUFF_MV_OVER_PIC_BOUNDARIES          = MFX_MAKEFOURCC('M','V','P','B'),
349
+    MFX_EXTBUFF_VPP_COLORFILL                   = MFX_MAKEFOURCC('V','C','L','F'),
350
+    MFX_EXTBUFF_DECODE_ERROR_REPORT             = MFX_MAKEFOURCC('D', 'E', 'R', 'R'),
351
+    MFX_EXTBUFF_VPP_COLOR_CONVERSION            = MFX_MAKEFOURCC('V', 'C', 'S', 'C'),
352
+    MFX_EXTBUFF_CONTENT_LIGHT_LEVEL_INFO        = MFX_MAKEFOURCC('L', 'L', 'I', 'S'),
353
+    MFX_EXTBUFF_MASTERING_DISPLAY_COLOUR_VOLUME = MFX_MAKEFOURCC('D', 'C', 'V', 'S'),
354
+    MFX_EXTBUFF_MULTI_FRAME_PARAM               = MFX_MAKEFOURCC('M', 'F', 'R', 'P'),
355
+    MFX_EXTBUFF_MULTI_FRAME_CONTROL             = MFX_MAKEFOURCC('M', 'F', 'R', 'C'),
356
+    MFX_EXTBUFF_ENCODED_UNITS_INFO              = MFX_MAKEFOURCC('E', 'N', 'U', 'I'),
357
+    MFX_EXTBUFF_VPP_MCTF                        = MFX_MAKEFOURCC('M', 'C', 'T', 'F'),
358
+    MFX_EXTBUFF_VP9_SEGMENTATION                = MFX_MAKEFOURCC('9', 'S', 'E', 'G'),
359
+    MFX_EXTBUFF_VP9_TEMPORAL_LAYERS             = MFX_MAKEFOURCC('9', 'T', 'M', 'L'),
360
+    MFX_EXTBUFF_VP9_PARAM                       = MFX_MAKEFOURCC('9', 'P', 'A', 'R'),
361
+    MFX_EXTBUFF_AVC_ROUNDING_OFFSET             = MFX_MAKEFOURCC('R','N','D','O'),
362
 };
363
 
364
 /* VPP Conf: Do not use certain algorithms  */
365
@@ -781,8 +888,14 @@
366
     mfxU16          RepeatedFrame;
367
 } mfxExtVppAuxData;
368
 
369
+/* CtrlFlags */
370
+enum {
371
+    MFX_PAYLOAD_CTRL_SUFFIX = 0x00000001 /* HEVC suffix SEI */
372
+};
373
+
374
 typedef struct {
375
-    mfxU32      reserved[4];
376
+    mfxU32      CtrlFlags;
377
+    mfxU32      reserved[3];
378
     mfxU8       *Data;      /* buffer pointer */
379
     mfxU32      NumBit;     /* number of bits */
380
     mfxU16      Type;       /* SEI message type in H.264 or user data start_code in MPEG-2 */
381
@@ -791,7 +904,9 @@
382
 
383
 typedef struct {
384
     mfxExtBuffer    Header;
385
-    mfxU32  reserved[5];
386
+    mfxU32  reserved[4];
387
+    mfxU16  reserved1;
388
+    mfxU16  MfxNalUnitType;
389
     mfxU16  SkipFrame;
390
 
391
     mfxU16  QP; /* per frame QP */
392
@@ -812,7 +927,7 @@
393
 };
394
 
395
 /* Frame Memory Types */
396
-#define MFX_MEMTYPE_BASE(x) (0xf0ff & (x))
397
+#define MFX_MEMTYPE_BASE(x) (0x90ff & (x))
398
 
399
 enum {
400
     MFX_MEMTYPE_DXVA2_DECODER_TARGET       =0x0010,
401
@@ -826,13 +941,15 @@
402
     MFX_MEMTYPE_FROM_DECODE     = 0x0200,
403
     MFX_MEMTYPE_FROM_VPPIN      = 0x0400,
404
     MFX_MEMTYPE_FROM_VPPOUT     = 0x0800,
405
+    MFX_MEMTYPE_FROM_ENC        = 0x2000,
406
+    MFX_MEMTYPE_FROM_PAK        = 0x4000, //reserved
407
 
408
     MFX_MEMTYPE_INTERNAL_FRAME  = 0x0001,
409
     MFX_MEMTYPE_EXTERNAL_FRAME  = 0x0002,
410
     MFX_MEMTYPE_OPAQUE_FRAME    = 0x0004,
411
     MFX_MEMTYPE_EXPORT_FRAME    = 0x0008,
412
-
413
-    MFX_MEMTYPE_RESERVED2       = 0x1000
414
+    MFX_MEMTYPE_SHARED_RESOURCE = MFX_MEMTYPE_EXPORT_FRAME,
415
+    MFX_MEMTYPE_VIDEO_MEMORY_ENCODER_TARGET = 0x1000
416
 };
417
 
418
 typedef struct {
419
@@ -877,13 +994,26 @@
420
     MFX_FRAMETYPE_xIDR          =0x8000
421
 };
422
 
423
+enum {
424
+    MFX_HEVC_NALU_TYPE_UNKNOWN    =      0,
425
+    MFX_HEVC_NALU_TYPE_TRAIL_N    = ( 0+1),
426
+    MFX_HEVC_NALU_TYPE_TRAIL_R    = ( 1+1),
427
+    MFX_HEVC_NALU_TYPE_RADL_N     = ( 6+1),
428
+    MFX_HEVC_NALU_TYPE_RADL_R     = ( 7+1),
429
+    MFX_HEVC_NALU_TYPE_RASL_N     = ( 8+1),
430
+    MFX_HEVC_NALU_TYPE_RASL_R     = ( 9+1),
431
+    MFX_HEVC_NALU_TYPE_IDR_W_RADL = (19+1),
432
+    MFX_HEVC_NALU_TYPE_IDR_N_LP   = (20+1),
433
+    MFX_HEVC_NALU_TYPE_CRA_NUT    = (21+1)
434
+};
435
+
436
 typedef enum {
437
     MFX_HANDLE_DIRECT3D_DEVICE_MANAGER9         =1,      /* IDirect3DDeviceManager9      */
438
     MFX_HANDLE_D3D9_DEVICE_MANAGER              = MFX_HANDLE_DIRECT3D_DEVICE_MANAGER9,
439
     MFX_HANDLE_RESERVED1                        = 2,
440
     MFX_HANDLE_D3D11_DEVICE                     = 3,
441
     MFX_HANDLE_VA_DISPLAY                       = 4,
442
-    MFX_HANDLE_RESERVED3                        = 5
443
+    MFX_HANDLE_RESERVED3                        = 5,
444
 } mfxHandleType;
445
 
446
 typedef enum {
447
@@ -983,6 +1113,36 @@
448
     mfxU16  reserved[11];
449
 } mfxExtVPPImageStab;
450
 
451
+
452
+enum {
453
+    MFX_PAYLOAD_OFF = 0,
454
+    MFX_PAYLOAD_IDR = 1
455
+};
456
+
457
+typedef struct {
458
+    mfxExtBuffer    Header;
459
+    mfxU16      reserved[15];
460
+
461
+    mfxU16 InsertPayloadToggle;
462
+    mfxU16 DisplayPrimariesX[3];
463
+    mfxU16 DisplayPrimariesY[3];
464
+    mfxU16 WhitePointX;
465
+    mfxU16 WhitePointY;
466
+    mfxU32 MaxDisplayMasteringLuminance;
467
+    mfxU32 MinDisplayMasteringLuminance;
468
+} mfxExtMasteringDisplayColourVolume;
469
+
470
+
471
+typedef struct {
472
+    mfxExtBuffer    Header;
473
+    mfxU16      reserved[9];
474
+
475
+    mfxU16 InsertPayloadToggle;
476
+    mfxU16 MaxContentLightLevel;
477
+    mfxU16 MaxPicAverageLightLevel;
478
+} mfxExtContentLightLevelInfo;
479
+
480
+
481
 typedef struct {
482
   mfxExtBuffer    Header;
483
   mfxU32      reserved[14];
484
@@ -1018,6 +1178,7 @@
485
     }Layer[8];
486
 } mfxExtAvcTemporalLayers;
487
 
488
+
489
 typedef struct {
490
     mfxExtBuffer Header;
491
 
492
@@ -1038,7 +1199,7 @@
493
 };
494
 
495
 typedef struct {
496
-    mfxExtBuffer    Header; 
497
+    mfxExtBuffer    Header;
498
 
499
     mfxU32          FrameOrder;
500
     mfxU16          PicStruct;
501
@@ -1050,30 +1211,31 @@
502
     mfxU16          reserved[2];
503
 
504
     struct {
505
-            mfxU32      FrameOrder;
506
-            mfxU16      PicStruct;
507
-            mfxU16      LongTermIdx;
508
-            mfxU16      reserved[4];
509
+        mfxU32      FrameOrder;
510
+        mfxU16      PicStruct;
511
+        mfxU16      LongTermIdx;
512
+        mfxU16      reserved[4];
513
     } UsedRefListL0[32], UsedRefListL1[32];
514
 } mfxExtAVCEncodedFrameInfo;
515
 
516
 typedef struct mfxVPPCompInputStream {
517
-        mfxU32  DstX;
518
-        mfxU32  DstY;
519
-        mfxU32  DstW;
520
-        mfxU32  DstH;
521
+    mfxU32  DstX;
522
+    mfxU32  DstY;
523
+    mfxU32  DstW;
524
+    mfxU32  DstH;
525
 
526
-        mfxU16  LumaKeyEnable;
527
-        mfxU16  LumaKeyMin;
528
-        mfxU16  LumaKeyMax;
529
+    mfxU16  LumaKeyEnable;
530
+    mfxU16  LumaKeyMin;
531
+    mfxU16  LumaKeyMax;
532
 
533
-        mfxU16  GlobalAlphaEnable;
534
-        mfxU16  GlobalAlpha;
535
+    mfxU16  GlobalAlphaEnable;
536
+    mfxU16  GlobalAlpha;
537
+    mfxU16  PixelAlphaEnable;
538
 
539
-        mfxU16 PixelAlphaEnable;
540
+    mfxU16  TileId;
541
 
542
-        mfxU16  reserved2[18];
543
-} mfxVPPCompInputStream;     
544
+    mfxU16  reserved2[17];
545
+} mfxVPPCompInputStream;
546
 
547
 typedef struct {
548
     mfxExtBuffer    Header;
549
@@ -1091,11 +1253,11 @@
550
         mfxU16   V;
551
         mfxU16   B;
552
     };
553
+    mfxU16       NumTiles;
554
+    mfxU16       reserved1[23];
555
 
556
-    mfxU16      reserved1[24];
557
-
558
-    mfxU16      NumInputStream;
559
-    mfxVPPCompInputStream *InputStream;     
560
+    mfxU16       NumInputStream;
561
+    mfxVPPCompInputStream *InputStream;
562
 } mfxExtVPPComposite;
563
 
564
 /* TransferMatrix */
565
@@ -1116,26 +1278,44 @@
566
     mfxExtBuffer    Header;
567
     mfxU16          reserved1[4];
568
 
569
-    struct  {
570
-        mfxU16  TransferMatrix;
571
-        mfxU16  NominalRange;
572
-        mfxU16  reserved2[6];
573
-    } In, Out;
574
+    union {
575
+        struct { // Init
576
+            struct  {
577
+                mfxU16  TransferMatrix;
578
+                mfxU16  NominalRange;
579
+                mfxU16  reserved2[6];
580
+            } In, Out;
581
+        };
582
+        struct { // Runtime
583
+            mfxU16  TransferMatrix;
584
+            mfxU16  NominalRange;
585
+            mfxU16  reserved3[14];
586
+        };
587
+    };
588
 } mfxExtVPPVideoSignalInfo;
589
 
590
+/* ROI encoding mode */
591
+enum {
592
+    MFX_ROI_MODE_PRIORITY =  0,
593
+    MFX_ROI_MODE_QP_DELTA =  1
594
+};
595
+
596
 typedef struct {
597
     mfxExtBuffer    Header;
598
 
599
     mfxU16  NumROI;
600
-    mfxU16  reserved1[11];
601
+    mfxU16  ROIMode;
602
+    mfxU16  reserved1[10];
603
 
604
     struct  {
605
         mfxU32  Left;
606
         mfxU32  Top;
607
         mfxU32  Right;
608
         mfxU32  Bottom;
609
-
610
-        mfxI16  Priority;
611
+        union {
612
+            mfxI16  Priority;
613
+            mfxI16  DeltaQP;
614
+        };
615
         mfxU16  reserved2[7];
616
     } ROI[256];
617
 } mfxExtEncoderROI;
618
@@ -1152,7 +1332,9 @@
619
     MFX_DEINTERLACING_FIXED_TELECINE_PATTERN =  8,
620
     MFX_DEINTERLACING_30FPS_OUT              =  9,
621
     MFX_DEINTERLACING_DETECT_INTERLACE       = 10,
622
-    MFX_DEINTERLACING_ADVANCED_NOREF         = 11
623
+    MFX_DEINTERLACING_ADVANCED_NOREF         = 11,
624
+    MFX_DEINTERLACING_ADVANCED_SCD           = 12,
625
+    MFX_DEINTERLACING_FIELD_WEAVING          = 13
626
 };
627
 
628
 /*TelecinePattern*/
629
@@ -1210,6 +1392,35 @@
630
 } mfxExtVPPFieldProcessing;
631
 
632
 typedef struct {
633
+    mfxExtBuffer    Header;
634
+
635
+    struct mfxIn{
636
+        mfxU16  CropX;
637
+        mfxU16  CropY;
638
+        mfxU16  CropW;
639
+        mfxU16  CropH;
640
+        mfxU16  reserved[12];
641
+    }In;
642
+
643
+    struct mfxOut{
644
+        mfxU32  FourCC;
645
+        mfxU16  ChromaFormat;
646
+        mfxU16  reserved1;
647
+
648
+        mfxU16  Width;
649
+        mfxU16  Height;
650
+
651
+        mfxU16  CropX;
652
+        mfxU16  CropY;
653
+        mfxU16  CropW;
654
+        mfxU16  CropH;
655
+        mfxU16  reserved[22];
656
+    }Out;
657
+
658
+    mfxU16  reserved[13];
659
+} mfxExtDecVideoProcessing;
660
+
661
+typedef struct {
662
     mfxExtBuffer Header;
663
 
664
     mfxU16       ChromaLocInfoPresentFlag;
665
@@ -1218,13 +1429,22 @@
666
     mfxU16       reserved[9];
667
 } mfxExtChromaLocInfo;
668
 
669
+/* MBQPMode */
670
+enum {
671
+    MFX_MBQP_MODE_QP_VALUE = 0, // supported in CQP mode only
672
+    MFX_MBQP_MODE_QP_DELTA = 1
673
+};
674
+
675
 typedef struct {
676
     mfxExtBuffer    Header;
677
 
678
-    mfxU32 reserved[11];
679
-    mfxU32 NumQPAlloc;
680
+    mfxU32 reserved[10];
681
+    mfxU16 Mode;        // see MBQPMode enum
682
+    mfxU16 BlockSize;   // QP block size, valid for HEVC only during Init and Runtime
683
+    mfxU32 NumQPAlloc;  // Size of allocated by application QP or DeltaQP array
684
     union {
685
-        mfxU8  *QP;
686
+        mfxU8  *QP;         // Block QP value. Valid when Mode = MFX_MBQP_MODE_QP_VALUE
687
+        mfxI8  *DeltaQP;    // For block i: QP[i] = BrcQP[i] + DeltaQP[i]. Valid when Mode = MFX_MBQP_MODE_QP_DELTA
688
         mfxU64 reserved2;
689
     };
690
 } mfxExtMBQP;
691
@@ -1232,6 +1452,17 @@
692
 typedef struct {
693
     mfxExtBuffer Header;
694
 
695
+    mfxU32 reserved[11];
696
+    mfxU32 MapSize;
697
+    union {
698
+        mfxU8  *Map;
699
+        mfxU64  reserved2;
700
+    };
701
+} mfxExtMBForceIntra;
702
+
703
+typedef struct {
704
+    mfxExtBuffer Header;
705
+
706
     mfxU16 NumTileRows;
707
     mfxU16 NumTileColumns;
708
     mfxU16 reserved[74];
709
@@ -1239,7 +1470,7 @@
710
 
711
 typedef struct {
712
     mfxExtBuffer Header;
713
-    
714
+
715
     mfxU32 reserved[11];
716
     mfxU32 MapSize;
717
     union {
718
@@ -1248,6 +1479,7 @@
719
     };
720
 } mfxExtMBDisableSkipMap;
721
 
722
+
723
 /*GeneralConstraintFlags*/
724
 enum {
725
     /* REXT Profile constraint flags*/
726
@@ -1262,6 +1494,16 @@
727
     MFX_HEVC_CONSTR_REXT_LOWER_BIT_RATE     = (1 << 8)
728
 };
729
 
730
+
731
+/* SampleAdaptiveOffset */
732
+enum {
733
+    MFX_SAO_UNKNOWN       = 0x00,
734
+    MFX_SAO_DISABLE       = 0x01,
735
+    MFX_SAO_ENABLE_LUMA   = 0x02,
736
+    MFX_SAO_ENABLE_CHROMA = 0x04
737
+};
738
+
739
+
740
 #pragma pack(push, 4)
741
 typedef struct {
742
     mfxExtBuffer    Header;
743
@@ -1269,10 +1511,29 @@
744
     mfxU16          PicWidthInLumaSamples;
745
     mfxU16          PicHeightInLumaSamples;
746
     mfxU64          GeneralConstraintFlags;
747
-    mfxU16          reserved[118];
748
+    mfxU16          SampleAdaptiveOffset;   /* see enum SampleAdaptiveOffset, valid during Init and Runtime */
749
+    mfxU16          LCUSize;
750
+    mfxU16          reserved[116];
751
 } mfxExtHEVCParam;
752
 #pragma pack(pop)
753
 
754
+/*ErrorTypes in mfxExtDecodeErrorReport*/
755
+enum {
756
+    MFX_ERROR_PPS           = (1 << 0),
757
+    MFX_ERROR_SPS           = (1 << 1),
758
+    MFX_ERROR_SLICEHEADER   = (1 << 2),
759
+    MFX_ERROR_SLICEDATA     = (1 << 3),
760
+    MFX_ERROR_FRAME_GAP     = (1 << 4),
761
+};
762
+
763
+typedef struct {
764
+    mfxExtBuffer    Header;
765
+
766
+    mfxU32          ErrorTypes;
767
+    mfxU16          reserved[10];
768
+} mfxExtDecodeErrorReport;
769
+
770
+
771
 typedef struct {
772
     mfxExtBuffer Header;
773
 
774
@@ -1325,6 +1586,18 @@
775
 typedef struct {
776
     mfxExtBuffer Header;
777
 
778
+    mfxU16       EnableRoundingIntra;       // tri-state option
779
+    mfxU16       RoundingOffsetIntra;       // valid value [0,7]
780
+    mfxU16       EnableRoundingInter;       // tri-state option
781
+    mfxU16       RoundingOffsetInter;       // valid value [0,7]
782
+
783
+    mfxU16       reserved[24];
784
+} mfxExtAVCRoundingOffset;
785
+
786
+
787
+typedef struct {
788
+    mfxExtBuffer Header;
789
+
790
     mfxU16  NumRect;
791
     mfxU16  reserved1[11];
792
 
793
@@ -1356,6 +1629,7 @@
794
     } Rect[256];
795
 } mfxExtMoveRect;
796
 
797
+
798
 /* Angle */
799
 enum {
800
     MFX_ANGLE_0     =   0,
801
@@ -1371,9 +1645,226 @@
802
     mfxU16 reserved[11];
803
 } mfxExtVPPRotation;
804
 
805
+typedef struct {
806
+    mfxExtBuffer Header;
807
+
808
+    mfxU16  SliceSizeOverflow;
809
+    mfxU16  NumSliceNonCopliant;
810
+    mfxU16  NumEncodedSlice;
811
+    mfxU16  NumSliceSizeAlloc;
812
+    union {
813
+        mfxU16  *SliceSize;
814
+        mfxU64  reserved1;
815
+    };
816
+
817
+    mfxU16 reserved[20];
818
+} mfxExtEncodedSlicesInfo;
819
+
820
+/* ScalingMode */
821
+enum {
822
+    MFX_SCALING_MODE_DEFAULT    = 0,
823
+    MFX_SCALING_MODE_LOWPOWER   = 1,
824
+    MFX_SCALING_MODE_QUALITY    = 2
825
+};
826
+
827
+typedef struct {
828
+    mfxExtBuffer Header;
829
+
830
+    mfxU16 ScalingMode;
831
+    mfxU16 reserved[11];
832
+} mfxExtVPPScaling;
833
+
834
+
835
+typedef mfxExtAVCRefListCtrl mfxExtHEVCRefListCtrl;
836
+typedef mfxExtAVCRefLists mfxExtHEVCRefLists;
837
+typedef mfxExtAvcTemporalLayers mfxExtHEVCTemporalLayers;
838
+
839
+/* MirroringType */
840
+enum
841
+{
842
+    MFX_MIRRORING_DISABLED   = 0,
843
+    MFX_MIRRORING_HORIZONTAL = 1,
844
+    MFX_MIRRORING_VERTICAL   = 2
845
+};
846
+
847
+typedef struct {
848
+    mfxExtBuffer Header;
849
+
850
+    mfxU16 Type;
851
+    mfxU16 reserved[11];
852
+} mfxExtVPPMirroring;
853
+
854
+typedef struct {
855
+    mfxExtBuffer Header;
856
+
857
+    mfxU16 StickTop;     /* tri-state option */
858
+    mfxU16 StickBottom;  /* tri-state option */
859
+    mfxU16 StickLeft;    /* tri-state option */
860
+    mfxU16 StickRight;   /* tri-state option */
861
+    mfxU16 reserved[8];
862
+} mfxExtMVOverPicBoundaries;
863
+
864
+typedef struct {
865
+    mfxExtBuffer Header;
866
+
867
+    mfxU16 Enable;        /* tri-state option */
868
+    mfxU16 reserved[11];
869
+} mfxExtVPPColorFill;
870
+
871
+
872
+/* ChromaSiting */
873
+enum {
874
+    MFX_CHROMA_SITING_UNKNOWN             = 0x0000,
875
+    MFX_CHROMA_SITING_VERTICAL_TOP        = 0x0001, /* Chroma samples are co-sited vertically on the top with the luma samples. */
876
+    MFX_CHROMA_SITING_VERTICAL_CENTER     = 0x0002, /* Chroma samples are not co-sited vertically with the luma samples. */
877
+    MFX_CHROMA_SITING_VERTICAL_BOTTOM     = 0x0004, /* Chroma samples are co-sited vertically on the bottom with the luma samples. */
878
+    MFX_CHROMA_SITING_HORIZONTAL_LEFT     = 0x0010, /* Chroma samples are co-sited horizontally on the left with the luma samples. */
879
+    MFX_CHROMA_SITING_HORIZONTAL_CENTER   = 0x0020  /* Chroma samples are not co-sited horizontally with the luma samples. */
880
+};
881
+
882
+typedef struct {
883
+    mfxExtBuffer Header;
884
+
885
+    mfxU16 ChromaSiting;
886
+    mfxU16 reserved[27];
887
+} mfxExtColorConversion;
888
+
889
+
890
+/* VP9ReferenceFrame */
891
+enum {
892
+    MFX_VP9_REF_INTRA   = 0,
893
+    MFX_VP9_REF_LAST    = 1,
894
+    MFX_VP9_REF_GOLDEN  = 2,
895
+    MFX_VP9_REF_ALTREF  = 3
896
+};
897
+
898
+/* SegmentIdBlockSize */
899
+enum {
900
+    MFX_VP9_SEGMENT_ID_BLOCK_SIZE_UNKNOWN =  0,
901
+    MFX_VP9_SEGMENT_ID_BLOCK_SIZE_8x8     =  8,
902
+    MFX_VP9_SEGMENT_ID_BLOCK_SIZE_16x16   = 16,
903
+    MFX_VP9_SEGMENT_ID_BLOCK_SIZE_32x32   = 32,
904
+    MFX_VP9_SEGMENT_ID_BLOCK_SIZE_64x64   = 64,
905
+};
906
+
907
+/* SegmentFeature */
908
+enum {
909
+    MFX_VP9_SEGMENT_FEATURE_QINDEX      = 0x0001,
910
+    MFX_VP9_SEGMENT_FEATURE_LOOP_FILTER = 0x0002,
911
+    MFX_VP9_SEGMENT_FEATURE_REFERENCE   = 0x0004,
912
+    MFX_VP9_SEGMENT_FEATURE_SKIP        = 0x0008 /* (0,0) MV, no residual */
913
+};
914
+
915
+typedef struct {
916
+    mfxU16  FeatureEnabled;         /* see enum SegmentFeature */
917
+    mfxI16  QIndexDelta;
918
+    mfxI16  LoopFilterLevelDelta;
919
+    mfxU16  ReferenceFrame;        /* see enum VP9ReferenceFrame */
920
+    mfxU16  reserved[12];
921
+} mfxVP9SegmentParam;
922
+
923
+typedef struct {
924
+    mfxExtBuffer        Header;
925
+    mfxU16              NumSegments;            /* 0..8 */
926
+    mfxVP9SegmentParam  Segment[8];
927
+    mfxU16              SegmentIdBlockSize;     /* see enum SegmentIdBlockSize */
928
+    mfxU32              NumSegmentIdAlloc;      /* >= (Ceil(Width / SegmentIdBlockSize) * Ceil(Height / SegmentIdBlockSize)) */
929
+    union {
930
+        mfxU8           *SegmentId;             /*[NumSegmentIdAlloc] = 0..7, index in Segment array, blocks of SegmentIdBlockSize map */
931
+        mfxU64          reserved1;
932
+    };
933
+    mfxU16  reserved[52];
934
+} mfxExtVP9Segmentation;
935
+
936
+typedef struct {
937
+    mfxU16 FrameRateScale;  /* Layer[n].FrameRateScale = Layer[n - 1].FrameRateScale * (uint)m */
938
+    mfxU16 TargetKbps;      /* affected by BRCParamMultiplier, Layer[n].TargetKbps > Layer[n - 1].TargetKbps */
939
+    mfxU16 reserved[14];
940
+} mfxVP9TemporalLayer;
941
+
942
+typedef struct {
943
+    mfxExtBuffer        Header;
944
+    mfxVP9TemporalLayer Layer[8];
945
+    mfxU16              reserved[60];
946
+} mfxExtVP9TemporalLayers;
947
+
948
+typedef struct {
949
+    mfxExtBuffer Header;
950
+
951
+    mfxU16  FrameWidth;
952
+    mfxU16  FrameHeight;
953
+
954
+    mfxU16  WriteIVFHeaders;        /* tri-state option */
955
+
956
+    mfxI16  reserved1[6];
957
+    mfxI16  QIndexDeltaLumaDC;
958
+    mfxI16  QIndexDeltaChromaAC;
959
+    mfxI16  QIndexDeltaChromaDC;
960
+    mfxU16  reserved[112];
961
+} mfxExtVP9Param;
962
+
963
+
964
+/* Multi-Frame Mode */
965
+enum {
966
+    MFX_MF_DEFAULT = 0,
967
+    MFX_MF_DISABLED = 1,
968
+    MFX_MF_AUTO = 2,
969
+    MFX_MF_MANUAL = 3
970
+};
971
+
972
+/* Multi-Frame Initialization parameters */
973
+typedef struct {
974
+    mfxExtBuffer Header;
975
+
976
+    mfxU16      MFMode;
977
+    mfxU16      MaxNumFrames;
978
+
979
+    mfxU16      reserved[58];
980
+} mfxExtMultiFrameParam;
981
+
982
+/* Multi-Frame Run-time controls */
983
+typedef struct {
984
+    mfxExtBuffer Header;
985
+
986
+    mfxU32      Timeout;      /* timeout in millisecond */
987
+    mfxU16      Flush;        /* Flush internal frame buffer, e.g. submit all collected frames. */
988
+
989
+    mfxU16      reserved[57];
990
+} mfxExtMultiFrameControl;
991
+
992
+typedef struct {
993
+    mfxU16 Type;
994
+    mfxU16 reserved1;
995
+    mfxU32 Offset;
996
+    mfxU32 Size;
997
+    mfxU32 reserved[5];
998
+} mfxEncodedUnitInfo;
999
+
1000
+typedef struct {
1001
+    mfxExtBuffer Header;
1002
+
1003
+    union {
1004
+        mfxEncodedUnitInfo *UnitInfo;
1005
+        mfxU64  reserved1;
1006
+    };
1007
+    mfxU16 NumUnitsAlloc;
1008
+    mfxU16 NumUnitsEncoded;
1009
+
1010
+    mfxU16 reserved[22];
1011
+} mfxExtEncodedUnitsInfo;
1012
+
1013
+
1014
+
1015
+/* MCTF initialization & runtime */
1016
+typedef struct {
1017
+    mfxExtBuffer Header;
1018
+    mfxU16       FilterStrength;
1019
+    mfxU16       reserved[27];
1020
+} mfxExtVppMctf;
1021
+
1022
+
1023
 #ifdef __cplusplus
1024
 } // extern "C"
1025
 #endif
1026
 
1027
 #endif
1028
-
1029
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxvideo++.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxvideo++.h Changed
34
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2007-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2007-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -64,6 +64,7 @@
10
     virtual mfxStatus SetFrameAllocator(mfxFrameAllocator *allocator) { return MFXVideoCORE_SetFrameAllocator(m_session, allocator); }
11
     virtual mfxStatus SetHandle(mfxHandleType type, mfxHDL hdl) { return MFXVideoCORE_SetHandle(m_session, type, hdl); }
12
     virtual mfxStatus GetHandle(mfxHandleType type, mfxHDL *hdl) { return MFXVideoCORE_GetHandle(m_session, type, hdl); }
13
+    virtual mfxStatus QueryPlatform(mfxPlatform* platform) { return MFXVideoCORE_QueryPlatform(m_session, platform); }
14
 
15
     virtual mfxStatus SyncOperation(mfxSyncPoint syncp, mfxU32 wait) { return MFXVideoCORE_SyncOperation(m_session, syncp, wait); }
16
 
17
@@ -164,6 +165,7 @@
18
     virtual mfxStatus Reset(mfxVideoParam *par) { return MFXVideoENC_Reset(m_session, par); }
19
     virtual mfxStatus Close(void) { return MFXVideoENC_Close(m_session); }
20
 
21
+    virtual mfxStatus GetVideoParam(mfxVideoParam *par) { return MFXVideoENC_GetVideoParam(m_session, par); }
22
     virtual mfxStatus ProcessFrameAsync(mfxENCInput *in, mfxENCOutput *out, mfxSyncPoint *syncp) { return MFXVideoENC_ProcessFrameAsync(m_session, in, out, syncp); }
23
 
24
 protected:
25
@@ -184,7 +186,7 @@
26
     virtual mfxStatus Reset(mfxVideoParam *par) { return MFXVideoPAK_Reset(m_session, par); }
27
     virtual mfxStatus Close(void) { return MFXVideoPAK_Close(m_session); }
28
 
29
-    //virtual mfxStatus GetVideoParam(mfxVideoParam *par) { return MFXVideoENCODE_GetVideoParam(m_session, par); }
30
+    virtual mfxStatus GetVideoParam(mfxVideoParam *par) { return MFXVideoPAK_GetVideoParam(m_session, par); }
31
     //virtual mfxStatus GetEncodeStat(mfxEncodeStat *stat) { return MFXVideoENCODE_GetEncodeStat(m_session, stat); }
32
 
33
     virtual mfxStatus ProcessFrameAsync(mfxPAKInput *in, mfxPAKOutput *out, mfxSyncPoint *syncp) { return MFXVideoPAK_ProcessFrameAsync(m_session, in, out, syncp); }
34
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxvideo.h -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/include/msdk/include/mfxvideo.h Changed
27
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2007-2015 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2007-2017 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -32,9 +32,6 @@
10
 #include "mfxsession.h"
11
 #include "mfxvstructures.h"
12
 
13
-#define MFX_VERSION_MAJOR 1
14
-#define MFX_VERSION_MINOR 17
15
-
16
 #ifdef __cplusplus
17
 extern "C"
18
 {
19
@@ -66,6 +63,7 @@
20
 mfxStatus MFX_CDECL MFXVideoCORE_SetFrameAllocator(mfxSession session, mfxFrameAllocator *allocator);
21
 mfxStatus MFX_CDECL MFXVideoCORE_SetHandle(mfxSession session, mfxHandleType type, mfxHDL hdl);
22
 mfxStatus MFX_CDECL MFXVideoCORE_GetHandle(mfxSession session, mfxHandleType type, mfxHDL *hdl);
23
+mfxStatus MFX_CDECL MFXVideoCORE_QueryPlatform(mfxSession session, mfxPlatform* platform);
24
 mfxStatus MFX_CDECL MFXVideoCORE_SyncOperation(mfxSession session, mfxSyncPoint syncp, mfxU32 wait);
25
 
26
 /* VideoENCODE */
27
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/src/main.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/src/main.cpp Changed
795
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2012-2015 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2012-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -28,6 +28,9 @@
10
 
11
 \* ****************************************************************************** */
12
 
13
+#include <new>
14
+#include <memory>
15
+
16
 #include "mfx_dispatcher.h"
17
 #include "mfx_load_dll.h"
18
 #include "mfx_dispatcher_log.h"
19
@@ -35,7 +38,7 @@
20
 #include "mfx_critical_section.h"
21
 
22
 #include <string.h> /* for memset on Linux */
23
-#include <memory>
24
+
25
 #include <stdlib.h> /* for qsort on Linux */
26
 #include "mfx_load_plugin.h"
27
 #include "mfx_plugin_hive.h"
28
@@ -66,7 +69,7 @@
29
         {MFX_LIB_HARDWARE, MFX_IMPL_HARDWARE3, 2},
30
         {MFX_LIB_HARDWARE, MFX_IMPL_HARDWARE4, 3},
31
         {MFX_LIB_SOFTWARE, MFX_IMPL_SOFTWARE,  0},
32
-        {MFX_LIB_SOFTWARE, MFX_IMPL_SOFTWARE | MFX_IMPL_AUDIO,  0}
33
+        {MFX_LIB_SOFTWARE, MFX_IMPL_SOFTWARE | MFX_IMPL_AUDIO,  0},
34
     };
35
 
36
     const
37
@@ -78,16 +81,17 @@
38
         mfxU32 maxIndex;
39
 
40
     } implTypesRange[] =
41
-    {    
42
-        {0, 1},  // MFX_IMPL_AUTO    
43
-        {1, 1},  // MFX_IMPL_SOFTWARE    
44
-        {0, 0},  // MFX_IMPL_HARDWARE    
45
-        {2, 6},  // MFX_IMPL_AUTO_ANY    
46
-        {2, 5},  // MFX_IMPL_HARDWARE_ANY    
47
-        {3, 3},  // MFX_IMPL_HARDWARE2    
48
-        {4, 4},  // MFX_IMPL_HARDWARE3    
49
+    {
50
+        {0, 1},  // MFX_IMPL_AUTO
51
+        {1, 1},  // MFX_IMPL_SOFTWARE
52
+        {0, 0},  // MFX_IMPL_HARDWARE
53
+        {2, 6},  // MFX_IMPL_AUTO_ANY
54
+        {2, 5},  // MFX_IMPL_HARDWARE_ANY
55
+        {3, 3},  // MFX_IMPL_HARDWARE2
56
+        {4, 4},  // MFX_IMPL_HARDWARE3
57
         {5, 5},  // MFX_IMPL_HARDWARE4
58
         {2, 6},  // MFX_IMPL_RUNTIME, same as MFX_IMPL_HARDWARE_ANY
59
+        {8, 11},  // MFX_SINGLE_THREAD,
60
         {7, 7}   // MFX_IMPL_AUDIO
61
     };
62
 
63
@@ -96,6 +100,36 @@
64
 } // namespace
65
 
66
 using namespace MFX;
67
+
68
+#if defined(MEDIASDK_UWP_LOADER)
69
+
70
+#ifdef __cplusplus
71
+extern "C" {
72
+#endif /* __cplusplus */
73
+
74
+    //
75
+    // intel_gfx_api-*.dll calls these functions to do not mix MFXInitEx exposed 
76
+    // from dispatcher_proc_table.lib with the libmfx[hw/sw] engines' call MFXInitEx
77
+    //
78
+
79
+    mfxStatus InitMediaSDKSession(mfxInitParam par, mfxSession* session)
80
+    {
81
+        return MFXInitEx(par, session);
82
+    }
83
+
84
+    mfxStatus DisposeMediaSDKSession(mfxSession session)
85
+    {
86
+        return MFXClose(session);
87
+    }
88
+
89
+#ifdef __cplusplus
90
+}; //extern "C"
91
+#endif /* __cplusplus */
92
+
93
+#endif // defined(MEDIASDK_UWP_LOADER)
94
+
95
+#if !defined(MEDIASDK_UWP_PROCTABLE)
96
+
97
 //
98
 // Implement DLL exposed functions. MFXInit and MFXClose have to do
99
 // slightly more than other. They require to be implemented explicitly.
100
@@ -110,7 +144,7 @@
101
     VectorHandleGuard(HandleVector& aVector): m_vector(aVector) {}
102
     ~VectorHandleGuard()
103
     {
104
-        HandleVector::iterator it = m_vector.begin(), 
105
+        HandleVector::iterator it = m_vector.begin(),
106
                                et = m_vector.end();
107
         for ( ; it != et; ++it)
108
         {
109
@@ -129,16 +163,16 @@
110
     const MFX_DISP_HANDLE * lhs = *(const MFX_DISP_HANDLE **)plhs;
111
     const MFX_DISP_HANDLE * rhs = *(const MFX_DISP_HANDLE **)prhs;
112
 
113
-    if (lhs->actualApiVersion < rhs->actualApiVersion) 
114
+    if (lhs->actualApiVersion < rhs->actualApiVersion)
115
     {
116
         return -1;
117
     }
118
-    if (rhs->actualApiVersion < lhs->actualApiVersion) 
119
+    if (rhs->actualApiVersion < lhs->actualApiVersion)
120
     {
121
         return 1;
122
     }
123
 
124
-    // if versions are equal prefer library with HW 
125
+    // if versions are equal prefer library with HW
126
     if (lhs->loadStatus == MFX_WRN_PARTIAL_ACCELERATION && rhs->loadStatus == MFX_ERR_NONE)
127
     {
128
         return 1;
129
@@ -151,24 +185,8 @@
130
     return 0;
131
 }
132
 
133
-mfxStatus MFXInit(mfxIMPL impl, mfxVersion *pVer, mfxSession *session)
134
-{
135
-    mfxInitParam par = {};
136
-
137
-    par.Implementation = impl;
138
-    if (pVer)
139
-    {
140
-        par.Version = *pVer;
141
-    }
142
-    else
143
-    {
144
-        par.Version.Major = DEFAULT_API_VERSION_MAJOR;
145
-        par.Version.Minor = DEFAULT_API_VERSION_MINOR;
146
-    }
147
-    par.ExternalThreads = 0;
148
-
149
-    return MFXInitEx(par, session);
150
-}
151
+// for LEGACY and UWP_LOADER purposes implementation of MFXinitEx is traditionally loading
152
+// required libmfx*.dll and fill the array of API functions' with corresponded pointers to instantiated libmfx*.dll
153
 
154
 mfxStatus MFXInitEx(mfxInitParam par, mfxSession *session)
155
 {
156
@@ -186,8 +204,9 @@
157
     VectorHandleGuard handleGuard(allocatedHandle);
158
 
159
     MFX_DISP_HANDLE *pHandle;
160
-    msdk_disp_char dllName[MFX_MAX_DLL_PATH];
161
+    msdk_disp_char dllName[MFX_MAX_DLL_PATH] = { 0 };
162
     MFX::MFXLibraryIterator libIterator;
163
+
164
     // there iterators are used only if the caller specified implicit type like AUTO
165
     mfxU32 curImplIdx, maxImplIdx;
166
     // particular implementation value
167
@@ -232,7 +251,6 @@
168
     // Load HW library or RT from system location
169
     curImplIdx = implTypesRange[implMethod].minIndex;
170
     maxImplIdx = implTypesRange[implMethod].maxIndex;
171
-    mfxU32 hwImplIdx = 0;
172
     do
173
     {
174
         int currentStorage = MFX::MFX_STORAGE_ID_FIRST;
175
@@ -240,7 +258,7 @@
176
         do
177
         {
178
             // initialize the library iterator
179
-            mfxRes = libIterator.Init(implTypes[curImplIdx].implType, 
180
+            mfxRes = libIterator.Init(implTypes[curImplIdx].implType,
181
                 implInterface,
182
                 implTypes[curImplIdx].adapterID,
183
                 currentStorage);
184
@@ -252,7 +270,7 @@
185
 
186
                 if (
187
                     MFX_LIB_HARDWARE == implTypes[curImplIdx].implType
188
-                    && (!implInterface 
189
+                    && (!implInterface
190
                     || MFX_IMPL_VIA_ANY == implInterface))
191
                 {
192
                     implInterface = libIterator.GetImplementationType();
193
@@ -260,7 +278,7 @@
194
 
195
                 do
196
                 {
197
-                    eMfxImplType implType;
198
+                    eMfxImplType implType = implTypes[curImplIdx].implType;
199
 
200
                     // select a desired DLL
201
                     mfxRes = libIterator.SelectDLLVersion(dllName,
202
@@ -272,8 +290,6 @@
203
                         break;
204
                     }
205
                     DISPATCHER_LOG_INFO((("loading library %S\n"), MSDK2WIDE(dllName)));
206
-                    if (MFX_LIB_HARDWARE == implTypes[curImplIdx].implType)
207
-                        hwImplIdx = curImplIdx;
208
                     // try to load the selected DLL
209
                     curImpl = implTypes[curImplIdx].impl;
210
                     mfxRes = pHandle->LoadSelectedDLL(dllName, implType, curImpl, implInterface, par);
211
@@ -284,7 +300,7 @@
212
                     }
213
                     else
214
                     {
215
-                        libIterator.GetSubKeyName(pHandle->subkeyName, sizeof(pHandle->subkeyName)/sizeof(pHandle->subkeyName[0])) ;
216
+                        libIterator.GetSubKeyName(pHandle->subkeyName, sizeof(pHandle->subkeyName) / sizeof(pHandle->subkeyName[0]));
217
                         pHandle->storageID = libIterator.GetStorageID();
218
                         allocatedHandle.push_back(pHandle);
219
                         pHandle = new MFX_DISP_HANDLE(requiredVersion);
220
@@ -293,7 +309,7 @@
221
                 } while (MFX_ERR_NONE != mfxRes);
222
             }
223
 
224
-            // select another registry key
225
+            // select another place for loading engine
226
             currentStorage += 1;
227
 
228
         } while ((MFX_ERR_NONE != mfxRes) && (MFX::MFX_STORAGE_ID_LAST >= currentStorage));
229
@@ -304,12 +320,15 @@
230
     curImplIdx = implTypesRange[implMethod].minIndex;
231
     maxImplIdx = implTypesRange[implMethod].maxIndex;
232
 
233
+    // SOLID dispatcher checks if there are other available media sdk engines implementations in working dir
234
+    // UWP dispatcher does not use libraries other than in System32 folder
235
+#if !defined(MEDIASDK_UWP_LOADER)
236
     // Load RT from app folder (libmfxsw64 with API >= 1.10)
237
     do
238
     {
239
         implInterface = implInterfaceOrig;
240
         // initialize the library iterator
241
-        mfxRes = libIterator.Init(implTypes[curImplIdx].implType, 
242
+        mfxRes = libIterator.Init(implTypes[curImplIdx].implType,
243
             implInterface,
244
             implTypes[curImplIdx].adapterID,
245
             MFX::MFX_APP_FOLDER);
246
@@ -319,7 +338,7 @@
247
 
248
             if (
249
                 MFX_LIB_HARDWARE == implTypes[curImplIdx].implType
250
-                && (!implInterface 
251
+                && (!implInterface
252
                 || MFX_IMPL_VIA_ANY == implInterface))
253
             {
254
                 implInterface = libIterator.GetImplementationType();
255
@@ -365,18 +384,15 @@
256
         }
257
     } while ((MFX_ERR_NONE != mfxRes) && (++curImplIdx <= maxImplIdx));
258
 
259
+#endif // !defined(MEDIASDK_UWP_LOADER)
260
+
261
     // Load HW and SW libraries using legacy default DLL search mechanism
262
     // set current library index again
263
     curImplIdx = implTypesRange[implMethod].minIndex;
264
     do
265
     {
266
-        mfxU32 backupIdx = curImplIdx;
267
-        if (MFX_LIB_HARDWARE == implTypes[curImplIdx].implType)
268
-        {
269
-            curImplIdx = hwImplIdx;
270
-        }
271
         implInterface = implInterfaceOrig;
272
-            
273
+
274
         if (par.Implementation & MFX_IMPL_AUDIO)
275
         {
276
             mfxRes = MFX::mfx_get_default_audio_dll_name(dllName,
277
@@ -397,11 +413,14 @@
278
                 // try to load the selected DLL using default DLL search mechanism
279
                 if (MFX_LIB_HARDWARE == implTypes[curImplIdx].implType)
280
                 {
281
-                    if (!implInterface) 
282
+                    if (!implInterface)
283
                     {
284
                         implInterface = MFX_IMPL_VIA_ANY;
285
                     }
286
-                    mfxRes = MFX::SelectImplementationType(implTypes[curImplIdx].adapterID, &implInterface, NULL, NULL);
287
+                    mfxU32 curVendorID = 0, curDeviceID = 0;
288
+                    mfxRes = MFX::SelectImplementationType(implTypes[curImplIdx].adapterID, &implInterface, &curVendorID, &curDeviceID);
289
+                    if (curVendorID != INTEL_VENDOR_ID)
290
+                        mfxRes = MFX_ERR_UNKNOWN;
291
                 }
292
                 if (MFX_ERR_NONE == mfxRes)
293
                 {
294
@@ -419,13 +438,12 @@
295
                     pHandle->Close();
296
                 }
297
                 else
298
-                {                    
299
+                {
300
                     pHandle->storageID = MFX::MFX_UNKNOWN_KEY;
301
                     allocatedHandle.push_back(pHandle);
302
                     pHandle = new MFX_DISP_HANDLE(requiredVersion);
303
                 }
304
         }
305
-        curImplIdx = backupIdx;
306
     }
307
     while ((MFX_ERR_NONE > mfxRes) && (++curImplIdx <= maxImplIdx));
308
     delete pHandle;
309
@@ -433,28 +451,29 @@
310
     if (allocatedHandle.size() == 0)
311
         return MFX_ERR_UNSUPPORTED;
312
 
313
-    bool NeedSort = false;
314
-    HandleVector::iterator first = allocatedHandle.begin(),
315
-                           it = allocatedHandle.begin(),
316
-                           et = allocatedHandle.end();
317
-    for (it++; it != et; ++it)
318
-        if (HandleSort(&(*first), &(*it)) != 0)
319
-            NeedSort = true;
320
-
321
-    // select dll with version with lowest version number still greater or equal to requested
322
-    if (NeedSort)
323
-        qsort(&(*allocatedHandle.begin()), allocatedHandle.size(), sizeof(MFX_DISP_HANDLE*), &HandleSort);
324
-
325
+    { // sort candidate list
326
+        bool NeedSort = false;
327
+        HandleVector::iterator first = allocatedHandle.begin(),
328
+            it = allocatedHandle.begin(),
329
+            et = allocatedHandle.end();
330
+        for (it++; it != et; ++it)
331
+            if (HandleSort(&(*first), &(*it)) != 0)
332
+                NeedSort = true;
333
+
334
+        // select dll with version with lowest version number still greater or equal to requested
335
+        if (NeedSort)
336
+            qsort(&(*allocatedHandle.begin()), allocatedHandle.size(), sizeof(MFX_DISP_HANDLE*), &HandleSort);
337
+    }
338
     HandleVector::iterator candidate = allocatedHandle.begin();
339
     // check the final result of loading
340
-    try 
341
+    try
342
     {
343
         pHandle = *candidate;
344
         //pulling up current mediasdk version, that required to match plugin version
345
-        mfxVersion apiVerActual;
346
-        mfxStatus stsQueryVersion;
347
-        stsQueryVersion = MFXQueryVersion((mfxSession)pHandle, &apiVerActual);
348
-        if (MFX_ERR_NONE !=  stsQueryVersion) 
349
+        mfxVersion apiVerActual = { 0 };
350
+        mfxStatus stsQueryVersion = MFXQueryVersion((mfxSession)pHandle, &apiVerActual);
351
+
352
+        if (MFX_ERR_NONE !=  stsQueryVersion)
353
         {
354
             DISPATCHER_LOG_ERROR((("MFXQueryVersion returned: %d, cannot load plugins\n"), mfxRes))
355
         }
356
@@ -479,15 +498,26 @@
357
             }
358
 
359
             //setting up plugins records
360
-            for(int i = MFX::MFX_STORAGE_ID_FIRST; i <= MFX::MFX_STORAGE_ID_LAST; i++) 
361
+            for(int i = MFX::MFX_STORAGE_ID_FIRST; i <= MFX::MFX_STORAGE_ID_LAST; i++)
362
             {
363
                 MFX::MFXPluginsInHive plgsInHive(i, NULL, apiVerActual);
364
                 hive.insert(hive.end(), plgsInHive.begin(), plgsInHive.end());
365
             }
366
 
367
+#if defined(MEDIASDK_USE_CFGFILES) || !defined(MEDIASDK_UWP_LOADER)
368
+            // SOLID dispatcher also loads plug-ins from file system
369
             MFX::MFXPluginsInFS plgsInFS(apiVerActual);
370
             hive.insert(hive.end(), plgsInFS.begin(), plgsInFS.end());
371
+#endif // defined(MEDIASDK_USE_CFGFILES) || !defined(MEDIASDK_UWP_LOADER)
372
         }
373
+
374
+        // UWP dispatcher uses stubs
375
+        pHandle->callPlugInsTable[eMFXVideoUSER_Load] = (mfxFunctionPointer)MFXVideoUSER_Load;
376
+        pHandle->callPlugInsTable[eMFXVideoUSER_LoadByPath] = (mfxFunctionPointer)MFXVideoUSER_LoadByPath;
377
+        pHandle->callPlugInsTable[eMFXVideoUSER_UnLoad] = (mfxFunctionPointer)MFXVideoUSER_UnLoad;
378
+        pHandle->callPlugInsTable[eMFXAudioUSER_Load] = (mfxFunctionPointer)MFXAudioUSER_Load;
379
+        pHandle->callPlugInsTable[eMFXAudioUSER_UnLoad] = (mfxFunctionPointer)MFXAudioUSER_UnLoad;
380
+
381
     }
382
     catch(...)
383
     {
384
@@ -495,12 +525,12 @@
385
     }
386
 
387
     // everything is OK. Save pointers to the output variable
388
-    *candidate = 0; // keep this one safe from guard destructor 
389
+    *candidate = 0; // keep this one safe from guard destructor
390
     *((MFX_DISP_HANDLE **) session) = pHandle;
391
 
392
     return pHandle->loadStatus;
393
 
394
-} // mfxStatus MFXInit(mfxIMPL impl, mfxVersion *ver, mfxSession *session)
395
+} // mfxStatus MFXInitEx(mfxIMPL impl, mfxVersion *ver, mfxSession *session)
396
 
397
 mfxStatus MFXClose(mfxSession session)
398
 {
399
@@ -535,73 +565,6 @@
400
 
401
 } // mfxStatus MFXClose(mfxSession session)
402
 
403
-mfxStatus MFXJoinSession(mfxSession session, mfxSession child_session)
404
-{
405
-    mfxStatus mfxRes = MFX_ERR_INVALID_HANDLE;
406
-    MFX_DISP_HANDLE *pHandle = (MFX_DISP_HANDLE *) session;
407
-    MFX_DISP_HANDLE *pChildHandle = (MFX_DISP_HANDLE *) child_session;
408
-
409
-    // get the function's address and make a call
410
-    if ((pHandle) && (pChildHandle) && (pHandle->apiVersion == pChildHandle->apiVersion))
411
-    {
412
-        /* check whether it is audio session or video */
413
-        int tableIndex = eMFXJoinSession; 
414
-        mfxFunctionPointer pFunc;
415
-        if (pHandle->impl & MFX_IMPL_AUDIO) 
416
-        { 
417
-            pFunc = pHandle->callAudioTable[tableIndex];
418
-        }
419
-        else
420
-        {
421
-            pFunc = pHandle->callTable[tableIndex];
422
-        }
423
-
424
-        if (pFunc)
425
-        {
426
-            // pass down the call
427
-            mfxRes = (*(mfxStatus (MFX_CDECL *) (mfxSession, mfxSession)) pFunc) (pHandle->session, 
428
-                pChildHandle->session);
429
-        }
430
-    }
431
-
432
-    return mfxRes;
433
-
434
-} // mfxStatus MFXJoinSession(mfxSession session, mfxSession child_session)
435
-
436
-mfxStatus MFXCloneSession(mfxSession session, mfxSession *clone)
437
-{
438
-    mfxStatus mfxRes = MFX_ERR_INVALID_HANDLE;
439
-    MFX_DISP_HANDLE *pHandle = (MFX_DISP_HANDLE *) session;
440
-    mfxVersion apiVersion;
441
-    mfxIMPL impl;
442
-
443
-    // check error(s)
444
-    if (pHandle)
445
-    {
446
-        // initialize the clone session
447
-        apiVersion = pHandle->apiVersion;
448
-        impl = pHandle->impl | pHandle->implInterface;
449
-        mfxRes = MFXInit(impl, &apiVersion, clone);
450
-        if (MFX_ERR_NONE != mfxRes)
451
-        {
452
-            return mfxRes;
453
-        }
454
-
455
-        // join the sessions
456
-        mfxRes = MFXJoinSession(session, *clone);
457
-        if (MFX_ERR_NONE != mfxRes)
458
-        {
459
-            MFXClose(*clone);
460
-            *clone = NULL;
461
-            return mfxRes;
462
-        }
463
-    }
464
-
465
-    return mfxRes;
466
-
467
-} // mfxStatus MFXCloneSession(mfxSession session, mfxSession *clone)
468
-
469
-
470
 mfxStatus MFXVideoUSER_Load(mfxSession session, const mfxPluginUID *uid, mfxU32 version)
471
 {
472
     mfxStatus sts = MFX_ERR_NONE;
473
@@ -617,7 +580,7 @@
474
         DISPATCHER_LOG_ERROR((("MFXVideoUSER_Load: uid=NULL\n")));
475
         return MFX_ERR_NULL_PTR;
476
     }
477
-    DISPATCHER_LOG_INFO((("MFXVideoUSER_Load: uid="MFXGUIDTYPE()" version=%d\n")
478
+    DISPATCHER_LOG_INFO((("MFXVideoUSER_Load: uid=" MFXGUIDTYPE()" version=%d\n")
479
         , MFXGUIDTOHEX(uid)
480
         , version))
481
         size_t pluginsChecked = 0;
482
@@ -631,7 +594,7 @@
483
         //check rest in records
484
         if (i->PluginVersion < version)
485
         {
486
-            DISPATCHER_LOG_INFO((("MFXVideoUSER_Load: registered \"Plugin Version\" for GUID="MFXGUIDTYPE()" is %d, that is smaller that requested\n")
487
+            DISPATCHER_LOG_INFO((("MFXVideoUSER_Load: registered \"Plugin Version\" for GUID=" MFXGUIDTYPE()" is %d, that is smaller that requested\n")
488
                 , MFXGUIDTOHEX(uid)
489
                 , i->PluginVersion))
490
                 continue;
491
@@ -698,7 +661,7 @@
492
         return MFX_ERR_NULL_PTR;
493
     }
494
 
495
-    DISPATCHER_LOG_INFO((("MFXVideoUSER_LoadByPath: %S uid="MFXGUIDTYPE()" version=%d\n")
496
+    DISPATCHER_LOG_INFO((("MFXVideoUSER_LoadByPath: %S uid=" MFXGUIDTYPE()" version=%d\n")
497
         , MSDK2WIDE(path)
498
         , MFXGUIDTOHEX(uid)
499
         , version))
500
@@ -708,18 +671,20 @@
501
 
502
 #ifdef _WIN32
503
     msdk_disp_char wPath[MAX_PLUGIN_PATH];
504
-    int res = ::MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, path, len, wPath, MAX_PLUGIN_PATH);
505
+    int res = ::MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, path, len<MAX_PLUGIN_PATH-1 ? len : MAX_PLUGIN_PATH-1, wPath, MAX_PLUGIN_PATH);
506
+    wPath[res]=0;
507
+
508
     if (!res)
509
     {
510
         DISPATCHER_LOG_ERROR((("MFXVideoUSER_LoadByPath: cant convert UTF-8 path to UTF-16\n")));
511
         return MFX_ERR_NOT_FOUND;
512
     }
513
-    msdk_disp_char_cpy_s(record.sPath, res < MAX_PLUGIN_PATH ? res : MAX_PLUGIN_PATH, wPath);
514
-#else // Linux/Android 
515
-    msdk_disp_char_cpy_s(record.sPath, len < MAX_PLUGIN_PATH ? len : MAX_PLUGIN_PATH, path);
516
+    msdk_disp_char_cpy_s(record.sPath, MAX_PLUGIN_PATH, wPath);
517
+#else // Linux/Android
518
+    msdk_disp_char_cpy_s(record.sPath, MAX_PLUGIN_PATH, path);
519
 #endif
520
-    
521
-    record.PluginUID = *uid; 
522
+
523
+    record.PluginUID = *uid;
524
     record.PluginVersion = (mfxU16)version;
525
     record.Default = true;
526
 
527
@@ -737,24 +702,24 @@
528
 mfxStatus MFXVideoUSER_UnLoad(mfxSession session, const mfxPluginUID *uid)
529
 {
530
     MFX_DISP_HANDLE &rHandle = *(MFX_DISP_HANDLE *) session;
531
-    if (!&rHandle) 
532
+    if (!&rHandle)
533
     {
534
         DISPATCHER_LOG_ERROR((("MFXVideoUSER_UnLoad: session=NULL\n")));
535
         return MFX_ERR_NULL_PTR;
536
     }
537
     if (!uid)
538
     {
539
-        DISPATCHER_LOG_ERROR((("MFXVideoUSER_Load: uid=NULL\n")));
540
+        DISPATCHER_LOG_ERROR((("MFXVideoUSER_UnLoad: uid=NULL\n")));
541
         return MFX_ERR_NULL_PTR;
542
     }
543
 
544
     bool bDestroyed = rHandle.pluginFactory.Destroy(*uid);
545
-    if (bDestroyed) 
546
+    if (bDestroyed)
547
     {
548
-        DISPATCHER_LOG_INFO((("MFXVideoUSER_UnLoad : plugin with GUID="MFXGUIDTYPE()" unloaded\n"), MFXGUIDTOHEX(uid)));
549
-    } else 
550
+        DISPATCHER_LOG_INFO((("MFXVideoUSER_UnLoad : plugin with GUID=" MFXGUIDTYPE()" unloaded\n"), MFXGUIDTOHEX(uid)));
551
+    } else
552
     {
553
-        DISPATCHER_LOG_ERROR((("MFXVideoUSER_UnLoad : plugin with GUID="MFXGUIDTYPE()" not found\n"), MFXGUIDTOHEX(uid)));
554
+        DISPATCHER_LOG_ERROR((("MFXVideoUSER_UnLoad : plugin with GUID=" MFXGUIDTYPE()" not found\n"), MFXGUIDTOHEX(uid)));
555
     }
556
 
557
     return bDestroyed ? MFX_ERR_NONE : MFX_ERR_NOT_FOUND;
558
@@ -773,7 +738,7 @@
559
         DISPATCHER_LOG_ERROR((("MFXAudioUSER_Load: uid=NULL\n")));
560
         return MFX_ERR_NULL_PTR;
561
     }
562
-    DISPATCHER_LOG_INFO((("MFXAudioUSER_Load: uid="MFXGUIDTYPE()" version=%d\n")
563
+    DISPATCHER_LOG_INFO((("MFXAudioUSER_Load: uid=" MFXGUIDTYPE()" version=%d\n")
564
         , MFXGUIDTOHEX(uid)
565
         , version))
566
         size_t pluginsChecked = 0;
567
@@ -791,7 +756,7 @@
568
         //check rest in records
569
         if (i->PluginVersion < version)
570
         {
571
-            DISPATCHER_LOG_INFO((("MFXAudioUSER_Load: registered \"Plugin Version\" for GUID="MFXGUIDTYPE()" is %d, that is smaller that requested\n")
572
+            DISPATCHER_LOG_INFO((("MFXAudioUSER_Load: registered \"Plugin Version\" for GUID=" MFXGUIDTYPE()" is %d, that is smaller that requested\n")
573
                 , MFXGUIDTOHEX(uid)
574
                 , i->PluginVersion))
575
                 continue;
576
@@ -825,7 +790,7 @@
577
 mfxStatus MFXAudioUSER_UnLoad(mfxSession session, const mfxPluginUID *uid)
578
 {
579
     MFX_DISP_HANDLE &rHandle = *(MFX_DISP_HANDLE *) session;
580
-    if (!&rHandle) 
581
+    if (!&rHandle)
582
     {
583
         DISPATCHER_LOG_ERROR((("MFXAudioUSER_UnLoad: session=NULL\n")));
584
         return MFX_ERR_NULL_PTR;
585
@@ -837,17 +802,162 @@
586
     }
587
 
588
     bool bDestroyed = rHandle.pluginFactory.Destroy(*uid);
589
-    if (bDestroyed) 
590
+    if (bDestroyed)
591
     {
592
-        DISPATCHER_LOG_INFO((("MFXAudioUSER_UnLoad : plugin with GUID="MFXGUIDTYPE()" unloaded\n"), MFXGUIDTOHEX(uid)));
593
-    } else 
594
+        DISPATCHER_LOG_INFO((("MFXAudioUSER_UnLoad : plugin with GUID=" MFXGUIDTYPE()" unloaded\n"), MFXGUIDTOHEX(uid)));
595
+    } else
596
     {
597
-        DISPATCHER_LOG_ERROR((("MFXAudioUSER_UnLoad : plugin with GUID="MFXGUIDTYPE()" not found\n"), MFXGUIDTOHEX(uid)));
598
+        DISPATCHER_LOG_ERROR((("MFXAudioUSER_UnLoad : plugin with GUID=" MFXGUIDTYPE()" not found\n"), MFXGUIDTOHEX(uid)));
599
     }
600
 
601
     return bDestroyed ? MFX_ERR_NONE : MFX_ERR_NOT_FOUND;
602
 }
603
+#else // relates to !defined (MEDIASDK_UWP_PROCTABLE) from line 137, i.e. #else part as if MEDIASDK_UWP_PROCTABLE defined
604
+
605
+#include <windows.h>
606
+#include "intel_api_factory.h"
607
+
608
+// for the UWP_PROCTABLE purposes implementation of MFXinitEx is calling
609
+// InitializeInstance() implemented in intel_uwp-api.dll
610
+mfxStatus MFXInitEx(mfxInitParam par, mfxSession *session)
611
+{
612
+    HRESULT hr = InitialiseMediaSession((HANDLE*)session, &par, nullptr);
613
+    return (hr == S_OK) ? mfxStatus::MFX_ERR_NONE : (mfxStatus)hr;
614
+}
615
+
616
+// for the UWP_PROCTABLE purposes implementation of MFXClose is calling
617
+// DisposeInstance() implemented in intel_uwp-api.dll
618
+mfxStatus MFXClose(mfxSession session)
619
+{
620
+    if (nullptr == session) {
621
+        return MFX_ERR_INVALID_HANDLE;
622
+    }
623
+
624
+    HRESULT hr = DisposeMediaSession(HANDLE(session));
625
+    session = (mfxSession)NULL;
626
+    return (hr == S_OK) ? MFX_ERR_NONE : mfxStatus(hr);
627
+}
628
+
629
+#undef FUNCTION
630
+#define FUNCTION(return_value, func_name, formal_param_list, actual_param_list) \
631
+    return_value func_name formal_param_list \
632
+{ \
633
+    mfxStatus mfxRes = MFX_ERR_INVALID_HANDLE; \
634
+\
635
+    _mfxSession *pHandle = (_mfxSession *) session; \
636
+\
637
+    /* get the function's address and make a call */ \
638
+    if (pHandle) \
639
+{ \
640
+    mfxFunctionPointer pFunc = pHandle->callPlugInsTable[e##func_name]; \
641
+    if (pFunc) \
642
+{ \
643
+    /* pass down the call */ \
644
+    mfxRes = (*(mfxStatus (MFX_CDECL  *) formal_param_list) pFunc) actual_param_list; \
645
+} \
646
+} \
647
+    return mfxRes; \
648
+}
649
+
650
+FUNCTION(mfxStatus, MFXVideoUSER_Load, (mfxSession session, const mfxPluginUID *uid, mfxU32 version), (session, uid, version))
651
+FUNCTION(mfxStatus, MFXVideoUSER_LoadByPath, (mfxSession session, const mfxPluginUID *uid, mfxU32 version, const mfxChar *path, mfxU32 len), (session, uid, version, path, len))
652
+FUNCTION(mfxStatus, MFXVideoUSER_UnLoad, (mfxSession session, const mfxPluginUID *uid), (session, uid))
653
+FUNCTION(mfxStatus, MFXAudioUSER_Load, (mfxSession session, const mfxPluginUID *uid, mfxU32 version), (session, uid, version))
654
+FUNCTION(mfxStatus, MFXAudioUSER_UnLoad, (mfxSession session, const mfxPluginUID *uid), (session, uid))
655
+
656
+#endif //!defined(MEDIASDK_UWP_PROCTABLE)
657
 
658
+
659
+#if !defined(MEDIASDK_UWP_LOADER)
660
+
661
+mfxStatus MFXJoinSession(mfxSession session, mfxSession child_session)
662
+{
663
+    mfxStatus mfxRes = MFX_ERR_INVALID_HANDLE;
664
+    MFX_DISP_HANDLE *pHandle = (MFX_DISP_HANDLE *)session;
665
+    MFX_DISP_HANDLE *pChildHandle = (MFX_DISP_HANDLE *)child_session;
666
+
667
+    // get the function's address and make a call
668
+    if ((pHandle) && (pChildHandle) && (pHandle->apiVersion == pChildHandle->apiVersion))
669
+    {
670
+        /* check whether it is audio session or video */
671
+        int tableIndex = eMFXJoinSession;
672
+        mfxFunctionPointer pFunc;
673
+        if (pHandle->impl & MFX_IMPL_AUDIO)
674
+        {
675
+            pFunc = pHandle->callAudioTable[tableIndex];
676
+        }
677
+        else
678
+        {
679
+            pFunc = pHandle->callTable[tableIndex];
680
+        }
681
+
682
+        if (pFunc)
683
+        {
684
+            // pass down the call
685
+            mfxRes = (*(mfxStatus(MFX_CDECL *) (mfxSession, mfxSession)) pFunc) (pHandle->session,
686
+                pChildHandle->session);
687
+        }
688
+    }
689
+
690
+    return mfxRes;
691
+
692
+} // mfxStatus MFXJoinSession(mfxSession session, mfxSession child_session)
693
+
694
+mfxStatus MFXCloneSession(mfxSession session, mfxSession *clone)
695
+{
696
+    mfxStatus mfxRes = MFX_ERR_INVALID_HANDLE;
697
+    MFX_DISP_HANDLE *pHandle = (MFX_DISP_HANDLE *)session;
698
+    mfxVersion apiVersion;
699
+    mfxIMPL impl;
700
+
701
+    // check error(s)
702
+    if (pHandle)
703
+    {
704
+        // initialize the clone session
705
+        apiVersion = pHandle->apiVersion;
706
+        impl = pHandle->impl | pHandle->implInterface;
707
+        mfxRes = MFXInit(impl, &apiVersion, clone);
708
+        if (MFX_ERR_NONE != mfxRes)
709
+        {
710
+            return mfxRes;
711
+        }
712
+
713
+        // join the sessions
714
+        mfxRes = MFXJoinSession(session, *clone);
715
+        if (MFX_ERR_NONE != mfxRes)
716
+        {
717
+            MFXClose(*clone);
718
+            *clone = NULL;
719
+            return mfxRes;
720
+        }
721
+    }
722
+
723
+    return mfxRes;
724
+
725
+} // mfxStatus MFXCloneSession(mfxSession session, mfxSession *clone)
726
+
727
+#endif // !defined(MEDIASDK_UWP_LOADER)
728
+
729
+mfxStatus MFXInit(mfxIMPL impl, mfxVersion *pVer, mfxSession *session)
730
+{
731
+    mfxInitParam par = {};
732
+
733
+    par.Implementation = impl;
734
+    if (pVer)
735
+    {
736
+        par.Version = *pVer;
737
+    }
738
+    else
739
+    {
740
+        par.Version.Major = DEFAULT_API_VERSION_MAJOR;
741
+        par.Version.Minor = DEFAULT_API_VERSION_MINOR;
742
+    }
743
+    par.ExternalThreads = 0;
744
+
745
+    return MFXInitEx(par, session);
746
+}
747
+
748
+//
749
 //
750
 // implement all other calling functions.
751
 // They just call a procedure of DLL library from the table.
752
@@ -859,7 +969,7 @@
753
     return_value func_name formal_param_list \
754
 { \
755
     mfxStatus mfxRes = MFX_ERR_INVALID_HANDLE; \
756
-    MFX_DISP_HANDLE *pHandle = (MFX_DISP_HANDLE *) session; \
757
+     _mfxSession *pHandle = (_mfxSession *) session; \
758
     /* get the function's address and make a call */ \
759
     if (pHandle) \
760
 { \
761
@@ -887,16 +997,23 @@
762
 
763
 FUNCTION(mfxStatus, MFXQueryIMPL, (mfxSession session, mfxIMPL *impl), (session, impl))
764
 FUNCTION(mfxStatus, MFXQueryVersion, (mfxSession session, mfxVersion *version), (session, version))
765
+
766
+#if !defined(MEDIASDK_UWP_LOADER)
767
+// these functions are not necessary in LOADER part of dispatcher and
768
+// need to be included only in in SOLID dispatcher or PROCTABLE part of dispatcher
769
+
770
 FUNCTION(mfxStatus, MFXDisjoinSession, (mfxSession session), (session))
771
 FUNCTION(mfxStatus, MFXSetPriority, (mfxSession session, mfxPriority priority), (session, priority))
772
 FUNCTION(mfxStatus, MFXGetPriority, (mfxSession session, mfxPriority *priority), (session, priority))
773
 
774
+#endif // !defined(MEDIASDK_UWP_LOADER)
775
+
776
 #undef FUNCTION
777
 #define FUNCTION(return_value, func_name, formal_param_list, actual_param_list) \
778
     return_value func_name formal_param_list \
779
 { \
780
     mfxStatus mfxRes = MFX_ERR_INVALID_HANDLE; \
781
-    MFX_DISP_HANDLE *pHandle = (MFX_DISP_HANDLE *) session; \
782
+     _mfxSession *pHandle = (_mfxSession *) session;\
783
     /* get the function's address and make a call */ \
784
     if (pHandle) \
785
 { \
786
@@ -918,7 +1035,7 @@
787
     return_value func_name formal_param_list \
788
 { \
789
     mfxStatus mfxRes = MFX_ERR_INVALID_HANDLE; \
790
-    MFX_DISP_HANDLE *pHandle = (MFX_DISP_HANDLE *) session; \
791
+     _mfxSession *pHandle = (_mfxSession *) session; \
792
     /* get the function's address and make a call */ \
793
     if (pHandle) \
794
 { \
795
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_dispatcher.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_dispatcher.cpp Changed
153
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2012-2015 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2012-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -32,20 +32,22 @@
10
 #include "mfx_dispatcher_log.h"
11
 #include "mfx_load_dll.h"
12
 
13
+#include <assert.h>
14
+
15
 #include <string.h>
16
 #if defined(_WIN32) || defined(_WIN64)
17
     #include <windows.h>
18
     #pragma warning(disable:4355)
19
 #else
20
-
21
-#include <dlfcn.h>
22
-#include <iostream>
23
-
24
+    #include <dlfcn.h>
25
+    #include <iostream>
26
 #endif // defined(_WIN32) || defined(_WIN64)
27
 
28
+
29
 MFX_DISP_HANDLE::MFX_DISP_HANDLE(const mfxVersion requiredVersion) :
30
-    apiVersion(requiredVersion),
31
-    pluginFactory((mfxSession)this)
32
+    _mfxSession()
33
+    ,apiVersion(requiredVersion)
34
+    ,pluginFactory((mfxSession)this)
35
 {
36
     actualApiVersion.Version = 0;
37
     implType = MFX_LIB_SOFTWARE;
38
@@ -53,13 +55,11 @@
39
     loadStatus = MFX_ERR_NOT_FOUND;
40
     dispVersion.Major = MFX_DISPATCHER_VERSION_MAJOR;
41
     dispVersion.Minor = MFX_DISPATCHER_VERSION_MINOR;
42
-    session = (mfxSession) 0;
43
+    storageID = 0;
44
+    implInterface = MFX_IMPL_HARDWARE_ANY;
45
 
46
     hModule = (mfxModuleHandle) 0;
47
 
48
-    memset(callTable, 0, sizeof(callTable));
49
-    memset(callAudioTable, 0, sizeof(callAudioTable));
50
-
51
 } // MFX_DISP_HANDLE::MFX_DISP_HANDLE(const mfxVersion requiredVersion)
52
 
53
 MFX_DISP_HANDLE::~MFX_DISP_HANDLE(void)
54
@@ -82,38 +82,34 @@
55
         loadStatus = MFX_ERR_NOT_FOUND;
56
         dispVersion.Major = MFX_DISPATCHER_VERSION_MAJOR;
57
         dispVersion.Minor = MFX_DISPATCHER_VERSION_MINOR;
58
-        session = (mfxSession) 0;
59
-
60
+        *static_cast<_mfxSession*>(this) = _mfxSession();
61
         hModule = (mfxModuleHandle) 0;
62
-
63
-        memset(callTable, 0, sizeof(callTable));
64
-        memset(callAudioTable, 0, sizeof(callAudioTable));
65
     }
66
 
67
     return mfxRes;
68
 
69
 } // mfxStatus MFX_DISP_HANDLE::Close(void)
70
 
71
-mfxStatus MFX_DISP_HANDLE::LoadSelectedDLL(const msdk_disp_char *pPath, eMfxImplType implType,
72
-                                           mfxIMPL impl, mfxIMPL implInterface, mfxInitParam &par)
73
+mfxStatus MFX_DISP_HANDLE::LoadSelectedDLL(const msdk_disp_char *pPath, eMfxImplType reqImplType,
74
+                                           mfxIMPL reqImpl, mfxIMPL reqImplInterface, mfxInitParam &par)
75
 {
76
     mfxStatus mfxRes = MFX_ERR_NONE;
77
 
78
     // check error(s)
79
-    if ((MFX_LIB_SOFTWARE != implType) &&
80
-        (MFX_LIB_HARDWARE != implType))
81
+    if ((MFX_LIB_SOFTWARE != reqImplType) &&
82
+        (MFX_LIB_HARDWARE != reqImplType))
83
     {
84
-        DISPATCHER_LOG_ERROR((("implType == %s, should be either MFX_LIB_SOFTWARE ot MFX_LIB_HARDWARE\n"), DispatcherLog_GetMFXImplString(implType).c_str()));
85
+        DISPATCHER_LOG_ERROR((("implType == %s, should be either MFX_LIB_SOFTWARE ot MFX_LIB_HARDWARE\n"), DispatcherLog_GetMFXImplString(reqImplType).c_str()));
86
         loadStatus = MFX_ERR_ABORTED;
87
         return loadStatus;
88
     }
89
     // only exact types of implementation is allowed
90
-    if (!(impl & MFX_IMPL_AUDIO) &&
91
-        (MFX_IMPL_SOFTWARE != impl) &&
92
-        (MFX_IMPL_HARDWARE != impl) &&
93
-        (MFX_IMPL_HARDWARE2 != impl) &&
94
-        (MFX_IMPL_HARDWARE3 != impl) &&
95
-        (MFX_IMPL_HARDWARE4 != impl))
96
+    if (!(reqImpl & MFX_IMPL_AUDIO) &&
97
+        (MFX_IMPL_SOFTWARE != reqImpl) &&
98
+        (MFX_IMPL_HARDWARE != reqImpl) &&
99
+        (MFX_IMPL_HARDWARE2 != reqImpl) &&
100
+        (MFX_IMPL_HARDWARE3 != reqImpl) &&
101
+        (MFX_IMPL_HARDWARE4 != reqImpl))
102
     {
103
         DISPATCHER_LOG_ERROR((("invalid implementation impl == %s\n"), DispatcherLog_GetMFXImplString(impl).c_str()));
104
         loadStatus = MFX_ERR_ABORTED;
105
@@ -139,15 +135,17 @@
106
     Close();
107
 
108
     // save the library's type
109
-    this->implType = implType;
110
-    this->impl = impl;
111
-    this->implInterface = implInterface;
112
+    this->implType = reqImplType;
113
+    this->impl = reqImpl;
114
+    this->implInterface = reqImplInterface;
115
 
116
     {
117
+        assert(hModule == (mfxModuleHandle)0);
118
         DISPATCHER_LOG_BLOCK(("invoking LoadLibrary(%S)\n", MSDK2WIDE(pPath)));
119
+
120
         // load the DLL into the memory
121
         hModule = MFX::mfx_dll_load(pPath);
122
-        
123
+
124
         if (hModule)
125
         {
126
             int i;
127
@@ -279,7 +277,7 @@
128
         else
129
         {
130
             mfxRes = MFXQueryVersion((mfxSession) this, &actualApiVersion);
131
-            
132
+
133
             if (MFX_ERR_NONE != mfxRes)
134
             {
135
                 DISPATCHER_LOG_ERROR((("MFXQueryVersion returned: %d, skiped this library\n"), mfxRes))
136
@@ -310,12 +308,12 @@
137
     if (session)
138
     {
139
         /* check whether it is audio session or video */
140
-        int tableIndex = eMFXClose; 
141
+        int tableIndex = eMFXClose;
142
         mfxFunctionPointer pFunc;
143
-        if (impl & MFX_IMPL_AUDIO) 
144
-        { 
145
+        if (impl & MFX_IMPL_AUDIO)
146
+        {
147
             pFunc = callAudioTable[tableIndex];
148
-        } 
149
+        }
150
         else
151
         {
152
             pFunc = callTable[tableIndex];
153
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_dxva2_device.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_dxva2_device.cpp Changed
133
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2012-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2012-2017 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -104,26 +104,30 @@
10
 
11
 void DXDevice::LoadDLLModule(const wchar_t *pModuleName)
12
 {
13
-    DWORD prevErrorMode = 0;
14
-
15
     // unload the module if it is required
16
     UnloadDLLModule();
17
 
18
+#if !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
19
+    DWORD prevErrorMode = 0;
20
     // set the silent error mode
21
 #if (_WIN32_WINNT >= 0x0600) && !(__GNUC__)
22
     SetThreadErrorMode(SEM_FAILCRITICALERRORS, &prevErrorMode); 
23
 #else
24
     prevErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS);
25
 #endif
26
+#endif // !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
27
+
28
     // load specified library
29
-   m_hModule = LoadLibraryExW(pModuleName, NULL, 0);
30
+    m_hModule = LoadLibraryExW(pModuleName, NULL, 0);
31
 
32
+#if !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
33
     // set the previous error mode
34
 #if (_WIN32_WINNT >= 0x0600) && !(__GNUC__)
35
     SetThreadErrorMode(prevErrorMode, NULL);
36
 #else
37
     SetErrorMode(prevErrorMode);
38
 #endif
39
+#endif //!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
40
 
41
 } // void LoadDLLModule(const wchar_t *pModuleName)
42
 
43
@@ -137,7 +141,7 @@
44
 
45
 } // void DXDevice::UnloaDLLdModule(void)
46
 
47
-
48
+#ifdef MFX_D3D9_ENABLED
49
 D3D9Device::D3D9Device(void)
50
 {
51
     m_pD3D9 = (void *) 0;
52
@@ -280,6 +284,7 @@
53
     return true;
54
 
55
 } // bool D3D9Device::Init(const mfxU32 adapterNum)
56
+#endif //MFX_D3D9_ENABLED
57
 
58
 typedef
59
 HRESULT (WINAPI *DXGICreateFactoryFunc) (REFIID riid, void **ppFactory);
60
@@ -328,15 +333,17 @@
61
 
62
     if (m_hModule)
63
     {
64
-        DXGICreateFactoryFunc pFunc;
65
-        IDXGIFactory1 *pFactory;
66
-        IDXGIAdapter1 *pAdapter;
67
-        DXGI_ADAPTER_DESC1 desc;
68
-        mfxU32 curAdapter, maxAdapters;
69
-        HRESULT hRes;
70
+        DXGICreateFactoryFunc pFunc = NULL;
71
+        IDXGIFactory1 *pFactory = NULL;
72
+        IDXGIAdapter1 *pAdapter = NULL;
73
+        DXGI_ADAPTER_DESC1 desc = { 0 };
74
+        mfxU32 curAdapter = 0;
75
+        mfxU32 maxAdapters = 0;
76
+        HRESULT hRes = E_FAIL;
77
 
78
         // load address of procedure to create DXGI 1.1 factory
79
         pFunc = (DXGICreateFactoryFunc) GetProcAddress(m_hModule, "CreateDXGIFactory1");
80
+
81
         if (NULL == pFunc)
82
         {
83
             return false;
84
@@ -413,6 +420,7 @@
85
     m_vendorID = 0;
86
     m_deviceID = 0;
87
 
88
+    m_driverVersion = 0;
89
 } // DXVA2Device::DXVA2Device(void)
90
 
91
 DXVA2Device::~DXVA2Device(void)
92
@@ -428,8 +436,10 @@
93
     m_vendorID = 0;
94
     m_deviceID = 0;
95
 
96
+    m_driverVersion = 0;
97
 } // void DXVA2Device::Close(void)
98
 
99
+#ifdef MFX_D3D9_ENABLED
100
 bool DXVA2Device::InitD3D9(const mfxU32 adapterNum)
101
 {
102
     D3D9Device d3d9Device;
103
@@ -464,6 +474,13 @@
104
     // ... say goodbye
105
     return true;
106
 } // bool InitD3D9(const mfxU32 adapterNum)
107
+#else // MFX_D3D9_ENABLED
108
+bool DXVA2Device::InitD3D9(const mfxU32 adapterNum)
109
+{
110
+    (void)adapterNum;
111
+    return false;
112
+}
113
+#endif // MFX_D3D9_ENABLED
114
 
115
 bool DXVA2Device::InitDXGI1(const mfxU32 adapterNum)
116
 {
117
@@ -490,6 +507,7 @@
118
 
119
 } // bool DXVA2Device::InitDXGI1(const mfxU32 adapterNum)
120
 
121
+#ifdef MFX_D3D9_ENABLED
122
 void DXVA2Device::UseAlternativeWay(const D3D9Device *pD3D9Device)
123
 {
124
     mfxU64 d3d9LUID = pD3D9Device->GetLUID();
125
@@ -532,6 +550,7 @@
126
     // we need to match a DXGI(1) device to the D3D9 device
127
 
128
 } // void DXVA2Device::UseAlternativeWay(const D3D9Device *pD3D9Device)
129
+#endif // MFX_D3D9_ENABLED
130
 
131
 mfxU32 DXVA2Device::GetVendorID(void) const
132
 {
133
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_library_iterator.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_library_iterator.cpp Changed
265
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2012-2015 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2012-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -41,6 +41,8 @@
10
 #include <tchar.h>
11
 #include <windows.h>
12
 
13
+#include <vector>
14
+
15
 namespace MFX
16
 {
17
 
18
@@ -72,9 +74,10 @@
19
     {
20
         return MFX_ERR_NULL_PTR;
21
     }
22
+    mfxIMPL impl_via = *pImplInterface;
23
 
24
     DXVA2Device dxvaDevice;
25
-    if (MFX_IMPL_VIA_D3D9 == *pImplInterface)
26
+    if (MFX_IMPL_VIA_D3D9 == impl_via)
27
     {
28
         // try to create the Direct3D 9 device and find right adapter
29
         if (!dxvaDevice.InitD3D9(adapterNum))
30
@@ -83,7 +86,7 @@
31
             return MFX_ERR_UNSUPPORTED;
32
         }
33
     }
34
-    else if (MFX_IMPL_VIA_D3D11 == *pImplInterface)
35
+    else if (MFX_IMPL_VIA_D3D11 == impl_via)
36
     {
37
         // try to open DXGI 1.1 device to get hardware ID
38
         if (!dxvaDevice.InitDXGI1(adapterNum))
39
@@ -91,8 +94,8 @@
40
             DISPATCHER_LOG_INFO((("dxvaDevice.InitDXGI1(%d) Failed "), adapterNum ));
41
             return MFX_ERR_UNSUPPORTED;
42
         }
43
-    } 
44
-    else if (MFX_IMPL_VIA_ANY == *pImplInterface)
45
+    }
46
+    else if (MFX_IMPL_VIA_ANY == impl_via)
47
     {
48
         // try the Direct3D 9 device
49
         if (dxvaDevice.InitD3D9(adapterNum))
50
@@ -163,6 +166,62 @@
51
 
52
 } // void MFXLibraryIterator::Release(void)
53
 
54
+DECLSPEC_NOINLINE HMODULE GetThisDllModuleHandle()
55
+{
56
+  HMODULE hDll = HMODULE(-1);
57
+
58
+  GetModuleHandleExW( GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
59
+                      GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
60
+                      reinterpret_cast<LPCWSTR>(&GetThisDllModuleHandle), &hDll);
61
+  return hDll;
62
+}
63
+
64
+// msdk_disp_char* sImplPath must be allocated with size not less then msdk_disp_path_len
65
+bool GetImplPath(int storageID, msdk_disp_char* sImplPath)
66
+{
67
+    HMODULE hModule = NULL;
68
+
69
+    sImplPath[0] = L'\0';
70
+
71
+    switch (storageID) {
72
+    case MFX_APP_FOLDER:
73
+        hModule = 0;
74
+        break;
75
+
76
+#if defined(MEDIASDK_UWP_LOADER) || defined(MEDIASDK_UWP_PROCTABLE)
77
+    case MFX_PATH_MSDK_FOLDER:
78
+        hModule = GetThisDllModuleHandle();
79
+        break;
80
+#endif
81
+
82
+    }
83
+
84
+    if(hModule == HMODULE(-1)) {
85
+        return false;
86
+    }
87
+
88
+    DWORD nSize = 0;
89
+    DWORD allocSize = msdk_disp_path_len;
90
+
91
+    nSize = GetModuleFileNameW(hModule, &sImplPath[0], allocSize);
92
+
93
+    if (nSize  == 0 || nSize == allocSize) {
94
+        // nSize == 0 meanse that system can't get this info for hModule
95
+        // nSize == allocSize buffer is too small
96
+        return false;
97
+    }
98
+
99
+    // for any case because WinXP implementation of GetModuleFileName does not add \0 to the end of string
100
+    sImplPath[nSize] = L'\0';
101
+
102
+    msdk_disp_char * dirSeparator = wcsrchr(sImplPath, L'\\');
103
+    if (dirSeparator != NULL && dirSeparator < (sImplPath + msdk_disp_path_len))
104
+    {
105
+        *++dirSeparator = 0;
106
+    }
107
+    return true;
108
+}
109
+
110
 mfxStatus MFXLibraryIterator::Init(eMfxImplType implType, mfxIMPL implInterface, const mfxU32 adapterNum, int storageID)
111
 {
112
     // check error(s)
113
@@ -177,29 +236,26 @@
114
     m_StorageID = storageID;
115
     m_lastLibIndex = 0;
116
 
117
+#if defined(MEDIASDK_USE_REGISTRY) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
118
     if (storageID == MFX_CURRENT_USER_KEY || storageID == MFX_LOCAL_MACHINE_KEY)
119
     {
120
         return InitRegistry(implType, implInterface, adapterNum, storageID);
121
     }
122
-    else if (storageID == MFX_APP_FOLDER)
123
-    {
124
-        msdk_disp_char path[_MAX_PATH] = {};
125
+#endif
126
 
127
-        ::GetModuleFileNameW(0, path, _MAX_PATH);
128
-        msdk_disp_char * dirSeparator = wcsrchr(path, L'\\');
129
-        if (dirSeparator < (path + _MAX_PATH))
130
-        {
131
-            *++dirSeparator = 0;
132
-        }        
133
-        
134
-        return InitFolder(implType, implInterface, adapterNum, path);
135
+    msdk_disp_char  sCurrentModulePath[msdk_disp_path_len];
136
+
137
+    if(!GetImplPath(storageID, sCurrentModulePath)) {
138
+        return MFX_ERR_UNSUPPORTED;
139
     }
140
 
141
-    return MFX_ERR_UNSUPPORTED;
142
+    return InitFolder(implType, implInterface, adapterNum, sCurrentModulePath);
143
+
144
 } // mfxStatus MFXLibraryIterator::Init(eMfxImplType implType, const mfxU32 adapterNum, int storageID)
145
 
146
 mfxStatus MFXLibraryIterator::InitRegistry(eMfxImplType implType, mfxIMPL implInterface, const mfxU32 adapterNum, int storageID)
147
 {
148
+#if defined(MEDIASDK_USE_REGISTRY) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
149
     HKEY rootHKey;
150
     bool bRes;
151
 
152
@@ -216,7 +272,7 @@
153
 
154
     // set the required library's implementation type
155
     m_implType = implType;
156
-    m_implInterface = implInterface != 0 
157
+    m_implInterface = implInterface != 0
158
         ? implInterface
159
         : MFX_IMPL_VIA_ANY;
160
 
161
@@ -235,6 +291,14 @@
162
         rootDispPath))
163
 
164
     return MFX_ERR_NONE;
165
+#else
166
+    (void) storageID;
167
+    (void) adapterNum;
168
+    (void) implInterface;
169
+    (void) implType;
170
+    return MFX_ERR_UNSUPPORTED;
171
+#endif // #if !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
172
+
173
 } // mfxStatus MFXLibraryIterator::InitRegistry(eMfxImplType implType, mfxIMPL implInterface, const mfxU32 adapterNum, int storageID)
174
 
175
 mfxStatus MFXLibraryIterator::InitFolder(eMfxImplType implType, mfxIMPL implInterface, const mfxU32 adapterNum, const msdk_disp_char * path)
176
@@ -244,12 +308,16 @@
177
      msdk_disp_char_cpy_s(m_path, maxPathLen, path);
178
      size_t pathLen = wcslen(m_path);
179
 
180
+#if !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
181
      // we looking for runtime in application folder, it should be named libmfxsw64 or libmfxsw32
182
-     mfx_get_default_dll_name(m_path + pathLen, maxPathLen - pathLen,  MFX_LIB_SOFTWARE);
183
+     mfx_get_default_dll_name(m_path + pathLen, msdk_disp_path_len - pathLen,  MFX_LIB_SOFTWARE);
184
+#else
185
+     mfx_get_default_dll_name(m_path + pathLen, msdk_disp_path_len - pathLen, implType);
186
+#endif
187
 
188
      // set the required library's implementation type
189
      m_implType = implType;
190
-     m_implInterface = implInterface != 0 
191
+     m_implInterface = implInterface != 0
192
          ? implInterface
193
          : MFX_IMPL_VIA_ANY;
194
 
195
@@ -275,6 +343,8 @@
196
     {
197
         if (m_lastLibIndex != 0)
198
             return MFX_ERR_NOT_FOUND;
199
+        if (m_vendorID != INTEL_VENDOR_ID)
200
+            return MFX_ERR_UNKNOWN;
201
 
202
         m_lastLibIndex = 1;
203
         msdk_disp_char_cpy_s(pPath, pathSize, m_path);
204
@@ -282,6 +352,25 @@
205
         return MFX_ERR_NONE;
206
     }
207
 
208
+#if defined(MEDIASDK_UWP_LOADER) || defined(MEDIASDK_UWP_PROCTABLE)
209
+
210
+    if (m_StorageID == MFX_PATH_MSDK_FOLDER) {
211
+
212
+        if (m_lastLibIndex != 0)
213
+            return MFX_ERR_NOT_FOUND;
214
+        if (m_vendorID != INTEL_VENDOR_ID)
215
+            return MFX_ERR_UNKNOWN;
216
+
217
+        m_lastLibIndex = 1;
218
+        msdk_disp_char_cpy_s(pPath, pathSize, m_path);
219
+        // do not change impl type
220
+        //*pImplType = MFX_LIB_HARDWARE;
221
+        return MFX_ERR_NONE;
222
+    }
223
+
224
+#endif
225
+
226
+#if defined(MEDIASDK_USE_REGISTRY) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
227
     wchar_t libPath[MFX_MAX_DLL_PATH] = L"";
228
     DWORD libIndex = 0;
229
     DWORD libMerit = 0;
230
@@ -294,7 +383,7 @@
231
     do
232
     {
233
         WinRegKey subKey;
234
-        wchar_t subKeyName[MFX_MAX_REGISTRY_KEY_NAME];
235
+        wchar_t subKeyName[MFX_MAX_REGISTRY_KEY_NAME] = { 0 };
236
         DWORD subKeyNameSize = sizeof(subKeyName) / sizeof(subKeyName[0]);
237
 
238
         // query next value name
239
@@ -375,7 +464,7 @@
240
                     // compare device's and library's IDs
241
                     if (MFX_LIB_HARDWARE == m_implType)
242
                     {
243
-                        if (m_vendorID != vendorID) 
244
+                        if (m_vendorID != vendorID)
245
                         {
246
                             bRes = false;
247
                             DISPATCHER_LOG_WRN((("%S conflict, actual = 0x%x : required = 0x%x\n"), vendorIDKeyName, m_vendorID, vendorID));
248
@@ -424,7 +513,6 @@
249
                             if ((0 == vendorID) || (0 == deviceID))
250
                             {
251
                                 *pImplType = MFX_LIB_SOFTWARE;
252
-                                
253
                                 DISPATCHER_LOG_INFO((("Library type is MFX_LIB_SOFTWARE\n")));
254
                             }
255
                             else
256
@@ -456,6 +544,8 @@
257
     m_lastLibMerit = libMerit;
258
     m_bIsSubKeyValid = true;
259
 
260
+#endif
261
+
262
     return MFX_ERR_NONE;
263
 
264
 } // mfxStatus MFXLibraryIterator::SelectDLLVersion(wchar_t *pPath, size_t pathSize, eMfxImplType *pImplType, mfxVersion minVersion)
265
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_load_dll.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_load_dll.cpp Changed
57
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2012-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2012-2017 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -164,7 +164,7 @@
10
     {
11
         return NULL;
12
     }
13
-
14
+#if !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
15
     // set the silent error mode
16
     DWORD prevErrorMode = 0;
17
 #if (_WIN32_WINNT >= 0x0600) && !(__GNUC__)
18
@@ -172,14 +172,19 @@
19
 #else
20
     prevErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS);
21
 #endif
22
-    // load the library's module
23
-    hModule = LoadLibraryExW(pFileName,NULL,0);
24
-    // set the previous error mode
25
+#endif // !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
26
+
27
+        // load the library's module
28
+        hModule = LoadLibraryExW(pFileName, NULL, 0);
29
+
30
+#if !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
31
+        // set the previous error mode
32
 #if (_WIN32_WINNT >= 0x0600) && !(__GNUC__)
33
     SetThreadErrorMode(prevErrorMode, NULL);
34
 #else
35
     SetErrorMode(prevErrorMode);
36
 #endif
37
+#endif // !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
38
 
39
     return hModule;
40
 
41
@@ -207,6 +212,7 @@
42
     return !!bRes;
43
 } // bool mfx_dll_free(mfxModuleHandle handle)
44
 
45
+#if !defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
46
 mfxModuleHandle mfx_get_dll_handle(const msdk_disp_char *pFileName)
47
 {
48
     mfxModuleHandle hModule = (mfxModuleHandle) 0;
49
@@ -234,6 +240,7 @@
50
 #endif
51
     return hModule;
52
 }
53
+#endif //!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE)
54
 
55
 
56
 } // namespace MFX
57
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_load_plugin.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_load_plugin.cpp Changed
362
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2013-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2013-2017 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -32,28 +32,28 @@
10
 #include "mfx_load_dll.h"
11
 #include "mfx_dispatcher_log.h"
12
 
13
-#define TRACE_PLUGIN_ERROR(str, ...) DISPATCHER_LOG_ERROR((("[PLUGIN]: "str), __VA_ARGS__))
14
-#define TRACE_PLUGIN_INFO(str, ...) DISPATCHER_LOG_INFO((("[PLUGIN]: "str), __VA_ARGS__))
15
+#define TRACE_PLUGIN_ERROR(str, ...) DISPATCHER_LOG_ERROR((("[PLUGIN]: " str), __VA_ARGS__))
16
+#define TRACE_PLUGIN_INFO(str, ...) DISPATCHER_LOG_INFO((("[PLUGIN]: " str), __VA_ARGS__))
17
 
18
 #define CREATE_PLUGIN_FNC "CreatePlugin"
19
 
20
 MFX::PluginModule::PluginModule()
21
     : mHmodule()
22
-    , mCreatePluginPtr() 
23
+    , mCreatePluginPtr()
24
     , mPath()
25
 {
26
 }
27
 
28
-MFX::PluginModule::PluginModule(const PluginModule & that) 
29
+MFX::PluginModule::PluginModule(const PluginModule & that)
30
     : mHmodule(mfx_dll_load(that.mPath))
31
-    , mCreatePluginPtr(that.mCreatePluginPtr) 
32
+    , mCreatePluginPtr(that.mCreatePluginPtr)
33
 {
34
     msdk_disp_char_cpy_s(mPath, sizeof(mPath) / sizeof(*mPath), that.mPath);
35
 }
36
 
37
-MFX::PluginModule & MFX::PluginModule::operator = (const MFX::PluginModule & that) 
38
+MFX::PluginModule & MFX::PluginModule::operator = (const MFX::PluginModule & that)
39
 {
40
-    if (this != &that) 
41
+    if (this != &that)
42
     {
43
         Tidy();
44
         mHmodule = mfx_dll_load(that.mPath);
45
@@ -64,7 +64,7 @@
46
 }
47
 
48
 MFX::PluginModule::PluginModule(const msdk_disp_char * path)
49
-    : mCreatePluginPtr() 
50
+    : mCreatePluginPtr()
51
 {
52
     mHmodule = mfx_dll_load(path);
53
     if (NULL == mHmodule) {
54
@@ -72,20 +72,20 @@
55
         return ;
56
     }
57
     TRACE_PLUGIN_INFO("Plugin loaded at: %S\n", MSDK2WIDE(path));
58
-    
59
+
60
     mCreatePluginPtr = (CreatePluginPtr_t)mfx_dll_get_addr(mHmodule, CREATE_PLUGIN_FNC);
61
     if (NULL == mCreatePluginPtr) {
62
         TRACE_PLUGIN_ERROR("Cannot get procedure address: %s\n", CREATE_PLUGIN_FNC);
63
         return ;
64
     }
65
-    
66
+
67
     msdk_disp_char_cpy_s(mPath, sizeof(mPath) / sizeof(*mPath), path);
68
 }
69
 
70
-bool MFX::PluginModule::Create( mfxPluginUID uid, mfxPlugin& plg) 
71
+bool MFX::PluginModule::Create( mfxPluginUID uid, mfxPlugin& plg)
72
 {
73
     bool result = false;
74
-    if (mCreatePluginPtr) 
75
+    if (mCreatePluginPtr)
76
     {
77
         mfxStatus mfxResult = mCreatePluginPtr(uid, &plg);
78
         result = (MFX_ERR_NONE == mfxResult);
79
@@ -105,11 +105,13 @@
80
     mHmodule = NULL;
81
 }
82
 
83
-MFX::PluginModule::~PluginModule(void) 
84
+MFX::PluginModule::~PluginModule(void)
85
 {
86
     Tidy();
87
 }
88
 
89
+#if !defined(MEDIASDK_UWP_PROCTABLE)
90
+
91
 bool MFX::MFXPluginFactory::RunVerification( const mfxPlugin & plg, const PluginDescriptionRecord &dsc, mfxPluginParam &pluginParams)
92
 {
93
     if (plg.PluginInit == 0)
94
@@ -117,23 +119,23 @@
95
         TRACE_PLUGIN_ERROR("plg->PluginInit = 0\n", 0);
96
         return false;
97
     }
98
-    if (plg.PluginClose == 0) 
99
+    if (plg.PluginClose == 0)
100
     {
101
         TRACE_PLUGIN_ERROR("plg->PluginClose = 0\n", 0);
102
         return false;
103
     }
104
-    if (plg.GetPluginParam == 0) 
105
+    if (plg.GetPluginParam == 0)
106
     {
107
         TRACE_PLUGIN_ERROR("plg->GetPluginParam = 0\n", 0);
108
         return false;
109
     }
110
-    
111
-    if (plg.Execute == 0) 
112
+
113
+    if (plg.Execute == 0)
114
     {
115
         TRACE_PLUGIN_ERROR("plg->Execute = 0\n", 0);
116
         return false;
117
     }
118
-    if (plg.FreeResources == 0) 
119
+    if (plg.FreeResources == 0)
120
     {
121
         TRACE_PLUGIN_ERROR("plg->FreeResources = 0\n", 0);
122
         return false;
123
@@ -158,27 +160,27 @@
124
     }
125
     else
126
     {
127
-        if (!dsc.onlyVersionRegistered && pluginParams.CodecId != dsc.CodecId) 
128
+        if (!dsc.onlyVersionRegistered && pluginParams.CodecId != dsc.CodecId)
129
         {
130
-            TRACE_PLUGIN_ERROR("plg->GetPluginParam() returned CodecId="MFXFOURCCTYPE()", but registration has CodecId="MFXFOURCCTYPE()"\n"
131
+            TRACE_PLUGIN_ERROR("plg->GetPluginParam() returned CodecId=" MFXFOURCCTYPE()", but registration has CodecId=" MFXFOURCCTYPE()"\n"
132
                 , MFXU32TOFOURCC(pluginParams.CodecId), MFXU32TOFOURCC(dsc.CodecId));
133
             return false;
134
         }
135
 
136
-        if (!dsc.onlyVersionRegistered && pluginParams.Type != dsc.Type) 
137
+        if (!dsc.onlyVersionRegistered && pluginParams.Type != dsc.Type)
138
         {
139
             TRACE_PLUGIN_ERROR("plg->GetPluginParam() returned Type=%d, but registration has Type=%d\n", pluginParams.Type, dsc.Type);
140
             return false;
141
         }
142
 
143
-        if (pluginParams.PluginUID !=  dsc.PluginUID) 
144
+        if (pluginParams.PluginUID !=  dsc.PluginUID)
145
         {
146
-            TRACE_PLUGIN_ERROR("plg->GetPluginParam() returned UID="MFXGUIDTYPE()", but registration has UID="MFXGUIDTYPE()"\n"
147
+            TRACE_PLUGIN_ERROR("plg->GetPluginParam() returned UID=" MFXGUIDTYPE()", but registration has UID=" MFXGUIDTYPE()"\n"
148
                 , MFXGUIDTOHEX(&pluginParams.PluginUID), MFXGUIDTOHEX(&dsc.PluginUID));
149
             return false;
150
         }
151
 
152
-        if (pluginParams.PluginVersion != dsc.PluginVersion) 
153
+        if (pluginParams.PluginVersion != dsc.PluginVersion)
154
         {
155
             TRACE_PLUGIN_ERROR("plg->GetPluginParam() returned PluginVersion=%d, but registration has PlgVer=%d\n", pluginParams.PluginVersion, dsc.PluginVersion);
156
             return false;
157
@@ -193,14 +195,14 @@
158
         }
159
     }
160
 
161
-    switch(pluginParams.Type) 
162
+    switch(pluginParams.Type)
163
     {
164
-        case MFX_PLUGINTYPE_VIDEO_DECODE: 
165
-        case MFX_PLUGINTYPE_VIDEO_ENCODE: 
166
-        case MFX_PLUGINTYPE_VIDEO_VPP: 
167
+        case MFX_PLUGINTYPE_VIDEO_DECODE:
168
+        case MFX_PLUGINTYPE_VIDEO_ENCODE:
169
+        case MFX_PLUGINTYPE_VIDEO_VPP:
170
         {
171
             TRACE_PLUGIN_INFO("plugin type= %d\n", pluginParams.Type);
172
-            if (plg.Video == 0) 
173
+            if (plg.Video == 0)
174
             {
175
                 TRACE_PLUGIN_ERROR("plg->Video = 0\n", 0);
176
                 return false;
177
@@ -212,21 +214,21 @@
178
         }
179
     }
180
 
181
-    switch(pluginParams.Type) 
182
+    switch(pluginParams.Type)
183
     {
184
-        case MFX_PLUGINTYPE_VIDEO_DECODE: 
185
+        case MFX_PLUGINTYPE_VIDEO_DECODE:
186
             return VerifyDecoder(*plg.Video);
187
-        case MFX_PLUGINTYPE_AUDIO_DECODE: 
188
+        case MFX_PLUGINTYPE_AUDIO_DECODE:
189
             return VerifyAudioDecoder(*plg.Audio);
190
-        case MFX_PLUGINTYPE_VIDEO_ENCODE:        
191
+        case MFX_PLUGINTYPE_VIDEO_ENCODE:
192
             return VerifyEncoder(*plg.Video);
193
-        case MFX_PLUGINTYPE_AUDIO_ENCODE:        
194
+        case MFX_PLUGINTYPE_AUDIO_ENCODE:
195
             return VerifyAudioEncoder(*plg.Audio);
196
-        case MFX_PLUGINTYPE_VIDEO_VPP: 
197
-            return VerifyVpp(*plg.Video); 
198
+        case MFX_PLUGINTYPE_VIDEO_VPP:
199
+            return VerifyVpp(*plg.Video);
200
         case MFX_PLUGINTYPE_VIDEO_ENC:
201
             return VerifyEnc(*plg.Video);
202
-        default: 
203
+        default:
204
         {
205
             TRACE_PLUGIN_ERROR("unsupported plugin type: %d\n", pluginParams.Type);
206
             return false;
207
@@ -234,7 +236,7 @@
208
     }
209
 }
210
 
211
-bool MFX::MFXPluginFactory::VerifyVpp( const mfxVideoCodecPlugin &vpp ) 
212
+bool MFX::MFXPluginFactory::VerifyVpp( const mfxVideoCodecPlugin &vpp )
213
 {
214
     if (vpp.VPPFrameSubmit == 0)
215
     {
216
@@ -253,7 +255,7 @@
217
         TRACE_PLUGIN_ERROR("plg->Video->EncodeFrameSubmit = 0\n", 0);
218
         return false;
219
     }
220
-    
221
+
222
     return true;
223
 }
224
 
225
@@ -264,7 +266,7 @@
226
         TRACE_PLUGIN_ERROR("plg->Audio->EncodeFrameSubmit = 0\n", 0);
227
         return false;
228
     }
229
-    
230
+
231
     return true;
232
 }
233
 
234
@@ -281,7 +283,7 @@
235
 
236
 bool MFX::MFXPluginFactory::VerifyDecoder( const mfxVideoCodecPlugin &decoder )
237
 {
238
-    if (decoder.DecodeHeader == 0) 
239
+    if (decoder.DecodeHeader == 0)
240
     {
241
         TRACE_PLUGIN_ERROR("plg->Video->DecodeHeader = 0\n", 0);
242
         return false;
243
@@ -302,7 +304,7 @@
244
 
245
 bool MFX::MFXPluginFactory::VerifyAudioDecoder( const mfxAudioCodecPlugin &decoder )
246
 {
247
-    if (decoder.DecodeHeader == 0) 
248
+    if (decoder.DecodeHeader == 0)
249
     {
250
         TRACE_PLUGIN_ERROR("plg->Audio->DecodeHeader = 0\n", 0);
251
         return false;
252
@@ -344,12 +346,12 @@
253
         TRACE_PLUGIN_ERROR("plg->Video->Init = 0\n", 0);
254
         return false;
255
     }
256
-    if (videoCodec.Reset == 0) 
257
+    if (videoCodec.Reset == 0)
258
     {
259
         TRACE_PLUGIN_ERROR("plg->Video->Reset = 0\n", 0);
260
         return false;
261
     }
262
-    if (videoCodec.Close == 0) 
263
+    if (videoCodec.Close == 0)
264
     {
265
         TRACE_PLUGIN_ERROR("plg->Video->Close = 0\n", 0);
266
         return false;
267
@@ -368,24 +370,24 @@
268
     PluginModule plgModule(rec.sPath);
269
     mfxPlugin plg = {};
270
     mfxPluginParam plgParams;
271
-    
272
-    if (!plgModule.Create(rec.PluginUID, plg)) 
273
+
274
+    if (!plgModule.Create(rec.PluginUID, plg))
275
     {
276
         return MFX_ERR_UNKNOWN;
277
     }
278
-    
279
-    if (!RunVerification(plg, rec, plgParams)) 
280
+
281
+    if (!RunVerification(plg, rec, plgParams))
282
     {
283
         //will do not call plugin close since it is not safe to do that until structure is corrected
284
         return MFX_ERR_UNKNOWN;
285
     }
286
 
287
-   
288
+
289
     if (rec.Type == MFX_PLUGINTYPE_AUDIO_DECODE ||
290
         rec.Type == MFX_PLUGINTYPE_AUDIO_ENCODE)
291
     {
292
         mfxStatus sts = MFXAudioUSER_Register(mSession, plgParams.Type, &plg);
293
-        if (MFX_ERR_NONE != sts) 
294
+        if (MFX_ERR_NONE != sts)
295
         {
296
             TRACE_PLUGIN_ERROR(" MFXAudioUSER_Register returned %d\n", sts);
297
             return sts;
298
@@ -394,33 +396,34 @@
299
     else
300
     {
301
         mfxStatus sts = MFXVideoUSER_Register(mSession, plgParams.Type, &plg);
302
-        if (MFX_ERR_NONE != sts) 
303
+        if (MFX_ERR_NONE != sts)
304
         {
305
             TRACE_PLUGIN_ERROR(" MFXVideoUSER_Register returned %d\n", sts);
306
             return sts;
307
         }
308
     }
309
-    
310
+
311
     mPlugins.push_back(FactoryRecord(plgParams, plgModule, plg));
312
 
313
     return MFX_ERR_NONE;
314
 }
315
 
316
-MFX::MFXPluginFactory::~MFXPluginFactory() 
317
+MFX::MFXPluginFactory::~MFXPluginFactory()
318
 {
319
     Close();
320
 }
321
 
322
-MFX::MFXPluginFactory::MFXPluginFactory( mfxSession session ) 
323
+MFX::MFXPluginFactory::MFXPluginFactory( mfxSession session )
324
 {
325
     mSession = session;
326
+    nPlugins = 0;
327
 }
328
 
329
-bool MFX::MFXPluginFactory::Destroy( const mfxPluginUID & uidToDestroy) 
330
+bool MFX::MFXPluginFactory::Destroy( const mfxPluginUID & uidToDestroy)
331
 {
332
-    for (MFXVector<FactoryRecord >::iterator i = mPlugins.begin(); i!= mPlugins.end(); i++) 
333
+    for (MFXVector<FactoryRecord >::iterator i = mPlugins.begin(); i!= mPlugins.end(); i++)
334
     {
335
-        if (i->plgParams.PluginUID == uidToDestroy) 
336
+        if (i->plgParams.PluginUID == uidToDestroy)
337
         {
338
             DestroyPlugin(*i);
339
             //dll unload should happen here
340
@@ -432,9 +435,9 @@
341
     return false;
342
 }
343
 
344
-void MFX::MFXPluginFactory::Close() 
345
+void MFX::MFXPluginFactory::Close()
346
 {
347
-    for (MFXVector<FactoryRecord>::iterator i = mPlugins.begin(); i!= mPlugins.end(); i++) 
348
+    for (MFXVector<FactoryRecord>::iterator i = mPlugins.begin(); i!= mPlugins.end(); i++)
349
     {
350
         DestroyPlugin(*i);
351
     }
352
@@ -455,4 +458,6 @@
353
         sts = MFXVideoUSER_Unregister(mSession, record.plgParams.Type);
354
         TRACE_PLUGIN_INFO(" MFXVideoUSER_Unregister for Type=%d, returned %d\n", record.plgParams.Type, sts);
355
     }
356
-}
357
\ No newline at end of file
358
+}
359
+
360
+#endif //!defined(MEDIASDK_UWP_PROCTABLE)
361
\ No newline at end of file
362
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_plugin_hive.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_plugin_hive.cpp Changed
55
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2013-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2013-2018 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -36,9 +36,9 @@
10
 #include "mfx_dispatcher_log.h"
11
 #include "mfx_load_dll.h"
12
 
13
-#define TRACE_HIVE_ERROR(str, ...) DISPATCHER_LOG_ERROR((("[HIVE]: "str), __VA_ARGS__))
14
-#define TRACE_HIVE_INFO(str, ...) DISPATCHER_LOG_INFO((("[HIVE]: "str), __VA_ARGS__))
15
-#define TRACE_HIVE_WRN(str, ...) DISPATCHER_LOG_WRN((("[HIVE]: "str), __VA_ARGS__))
16
+#define TRACE_HIVE_ERROR(str, ...) DISPATCHER_LOG_ERROR((("[HIVE]: " str), __VA_ARGS__))
17
+#define TRACE_HIVE_INFO(str, ...) DISPATCHER_LOG_INFO((("[HIVE]: " str), __VA_ARGS__))
18
+#define TRACE_HIVE_WRN(str, ...) DISPATCHER_LOG_WRN((("[HIVE]: " str), __VA_ARGS__))
19
 
20
 namespace 
21
 {
22
@@ -82,6 +82,7 @@
23
 MFX::MFXPluginsInHive::MFXPluginsInHive(int mfxStorageID, const msdk_disp_char *msdkLibSubKey, mfxVersion currentAPIVersion)
24
     : MFXPluginStorageBase(currentAPIVersion)
25
 {
26
+#if defined(MEDIASDK_USE_REGISTRY) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
27
     HKEY rootHKey;
28
     bool bRes;
29
     WinRegKey regKey;
30
@@ -222,8 +223,16 @@
31
             TRACE_HIVE_ERROR("operator[](%d) = descriptionRecord; - threw exception \n", index);
32
         }
33
     }
34
+#else
35
+
36
+    (void)mfxStorageID;
37
+    (void)msdkLibSubKey;
38
+    (void)currentAPIVersion;
39
+
40
+#endif //#if defined(MEDIASDK_USE_REGISTRY) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
41
 }
42
 
43
+#if defined(MEDIASDK_USE_CFGFILES) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
44
 MFX::MFXPluginsInFS::MFXPluginsInFS( mfxVersion currentAPIVersion ) 
45
     : MFXPluginStorageBase(currentAPIVersion)
46
     , mIsVersionParsed()
47
@@ -453,6 +462,7 @@
48
 
49
     return true;
50
 }
51
+#endif //#if defined(MEDIASDK_USE_CFGFILES) || (!defined(MEDIASDK_UWP_LOADER) && !defined(MEDIASDK_UWP_PROCTABLE))
52
 
53
 MFX::MFXDefaultPlugins::MFXDefaultPlugins(mfxVersion currentAPIVersion, MFX_DISP_HANDLE * hdl, int implType)
54
     : MFXPluginStorageBase(currentAPIVersion)
55
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_win_reg_key.cpp -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/libmfx/src/mfx_win_reg_key.cpp Changed
18
 
1
@@ -1,6 +1,6 @@
2
 /* ****************************************************************************** *\
3
 
4
-Copyright (C) 2012-2014 Intel Corporation.  All rights reserved.
5
+Copyright (C) 2012-2017 Intel Corporation.  All rights reserved.
6
 
7
 Redistribution and use in source and binary forms, with or without
8
 modification, are permitted provided that the following conditions are met:
9
@@ -33,7 +33,7 @@
10
 #include "mfx_win_reg_key.h"
11
 #include "mfx_dispatcher_log.h"
12
 
13
-#define TRACE_WINREG_ERROR(str, ...) DISPATCHER_LOG_ERROR((("[WINREG]: "str), __VA_ARGS__))
14
+#define TRACE_WINREG_ERROR(str, ...) DISPATCHER_LOG_ERROR((("[WINREG]: " str), __VA_ARGS__))
15
 
16
 namespace MFX
17
 {
18
obs-studio-23.1.0.tar.xz/plugins/obs-qsv11/obs-qsv11.c -> obs-studio-23.2.0.tar.xz/plugins/obs-qsv11/obs-qsv11.c Changed
21
 
1
@@ -260,10 +260,15 @@
2
    add_rate_controls(list, qsv_ratecontrols);
3
    obs_property_set_modified_callback(list, rate_control_modified);
4
 
5
-   obs_properties_add_int(props, "bitrate", TEXT_TARGET_BITRATE, 50,
6
-           10000000, 1);
7
-   obs_properties_add_int(props, "max_bitrate", TEXT_MAX_BITRATE, 50,
8
-           10000000, 1);
9
+   obs_property_t *p;
10
+   p = obs_properties_add_int(props, "bitrate", TEXT_TARGET_BITRATE, 50,
11
+           10000000, 50);
12
+   obs_property_int_set_suffix(p, " Kbps");
13
+
14
+   p = obs_properties_add_int(props, "max_bitrate", TEXT_MAX_BITRATE, 50,
15
+           10000000, 50);
16
+   obs_property_int_set_suffix(p, " Kbps");
17
+
18
    obs_properties_add_int(props, "accuracy", TEXT_ACCURACY, 0, 10000, 1);
19
    obs_properties_add_int(props, "convergence", TEXT_CONVERGENCE, 0, 10, 1);
20
    obs_properties_add_int(props, "qpi", "QPI", 1, 51, 1);
21
obs-studio-23.1.0.tar.xz/plugins/obs-text/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-text/data/locale/da-DK.ini Changed
36
 
1
@@ -8,11 +8,11 @@
2
 Color="Farve"
3
 Opacity="Gennemsigtighed"
4
 Gradient="Gradient"
5
-Gradient.Color="Gradient farve"
6
-Gradient.Opacity="Gradient gennemsigtighed"
7
-Gradient.Direction="Gradient retning"
8
+Gradient.Color="Gradientfarve"
9
+Gradient.Opacity="Gradientgennemsigtighed"
10
+Gradient.Direction="Gradientretning"
11
 BkColor="Baggrundsfarve"
12
-BkOpacity="Baggrunds gennemsigtighed"
13
+BkOpacity="Baggrundsgennemsigtighed"
14
 Alignment="Justering"
15
 Alignment.Left="Venstre"
16
 Alignment.Center="Centreret"
17
@@ -22,12 +22,12 @@
18
 VerticalAlignment.Top="Top"
19
 VerticalAlignment.Bottom="Bund"
20
 Outline="Kontur"
21
-Outline.Size="Kontur størrelse"
22
-Outline.Color="Kontur farve"
23
-Outline.Opacity="Kontur gennemsigtighed"
24
-ChatlogMode="Chatlog tilstand"
25
-ChatlogMode.Lines="Chatlog linebegrænsning"
26
-UseCustomExtents="Brug tilpasset tekstomfang"
27
+Outline.Size="Konturstørrelse"
28
+Outline.Color="Konturfarve"
29
+Outline.Opacity="Konturgennemsigtighed"
30
+ChatlogMode="Chatlog-tilstand"
31
+ChatlogMode.Lines="Chatlog-linebegrænsning"
32
+UseCustomExtents="Benyt tilpasset tekstomfang"
33
 UseCustomExtents.Wrap="Ombryd"
34
 Width="Bredde"
35
 Height="Højde"
36
obs-studio-23.1.0.tar.xz/plugins/obs-text/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-text/data/locale/de-DE.ini Changed
10
 
1
@@ -27,7 +27,7 @@
2
 Outline.Opacity="Deckkraft der Kontur"
3
 ChatlogMode="Chatprotokollmodus"
4
 ChatlogMode.Lines="Chatprotokollzeilenlimit"
5
-UseCustomExtents="Nutze benutzerdefinierten Textbereich"
6
+UseCustomExtents="Benutzerdefinierten Textbereich benutzen"
7
 UseCustomExtents.Wrap="Umbruch"
8
 Width="Breite"
9
 Height="Höhe"
10
obs-studio-23.2.0.tar.xz/plugins/obs-text/data/locale/fa-IR.ini Added
40
 
1
@@ -0,0 +1,38 @@
2
+TextGDIPlus="متن (GDI+)"
3
+Font="فونت"
4
+Text="متن"
5
+ReadFromFile="از فایل بخوان"
6
+TextFile="فایل متن (UTF-8)"
7
+Filter.TextFiles="پرونده های متنی"
8
+Filter.AllFiles="همه فایل ها"
9
+Color="رنگ"
10
+Opacity="شفافیت"
11
+Gradient="شیب"
12
+Gradient.Color="رنگ شیب"
13
+Gradient.Opacity="شفافیت شیب"
14
+Gradient.Direction="جهت شیب"
15
+BkColor="رنگ پس زمینه"
16
+BkOpacity="شفافیت پس زمینه"
17
+Alignment="تراز چینش"
18
+Alignment.Left="چپ"
19
+Alignment.Center="مرکز"
20
+Alignment.Right="راست"
21
+Vertical="عمودی"
22
+VerticalAlignment="تراز عمودی"
23
+VerticalAlignment.Top="بالا"
24
+VerticalAlignment.Bottom="پایین"
25
+Outline="برون نما"
26
+Outline.Size="اندازه طرح کلی"
27
+Outline.Color="رنگ طرح کلی"
28
+Outline.Opacity="تاری دید"
29
+ChatlogMode="حالت Chatlog"
30
+ChatlogMode.Lines="محدودیت Chatlog Line"
31
+UseCustomExtents="استفاده از متن سفارشی"
32
+UseCustomExtents.Wrap="پیچ وتاب"
33
+Width="عرض"
34
+Height="ارتفاع"
35
+Transform="تبدیل متن"
36
+Transform.None="هیچکدام"
37
+Transform.Uppercase="حروف بزرگ"
38
+Transform.Lowercase="حروف کوچک"
39
+
40
obs-studio-23.1.0.tar.xz/plugins/obs-text/data/locale/sk-SK.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-text/data/locale/sk-SK.ini Changed
10
 
1
@@ -31,4 +31,8 @@
2
 UseCustomExtents.Wrap="Zalomiť"
3
 Width="Šírka"
4
 Height="Výška"
5
+Transform="Transformácia textu"
6
+Transform.None="Žiadna"
7
+Transform.Uppercase="Veľké písmená"
8
+Transform.Lowercase="Malé písmená"
9
 
10
obs-studio-23.1.0.tar.xz/plugins/obs-text/data/locale/tr-TR.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-text/data/locale/tr-TR.ini Changed
10
 
1
@@ -31,4 +31,8 @@
2
 UseCustomExtents.Wrap="Metni Kaydır"
3
 Width="Genişlik"
4
 Height="Yükseklik"
5
+Transform="Metin Dönüşümü"
6
+Transform.None="Yok"
7
+Transform.Uppercase="Büyük harf"
8
+Transform.Lowercase="Küçük harf"
9
 
10
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/fade_to_color_transition.effect -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/fade_to_color_transition.effect Changed
20
 
1
@@ -14,8 +14,6 @@
2
    float2 uv  : TEXCOORD0;
3
 };
4
 
5
-#include "premultiplied.inc"
6
-
7
 VertData VSDefault(VertData v_in)
8
 {
9
    VertData vert_out;
10
@@ -26,7 +24,8 @@
11
 
12
 float4 PSFadeToColor(VertData v_in) : TARGET
13
 {
14
-   return lerp(convert_pmalpha(tex.Sample(textureSampler, v_in.uv)), color, swp);
15
+   float4 premultiplied = float4(color.rgb * color.a, color.a);
16
+   return lerp(tex.Sample(textureSampler, v_in.uv), premultiplied, swp);
17
 }
18
 
19
 technique FadeToColor
20
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/fade_transition.effect -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/fade_transition.effect Changed
21
 
1
@@ -14,8 +14,6 @@
2
    float2 uv  : TEXCOORD0;
3
 };
4
 
5
-#include "premultiplied.inc"
6
-
7
 VertData VSDefault(VertData v_in)
8
 {
9
    VertData vert_out;
10
@@ -26,8 +24,8 @@
11
 
12
 float4 PSFade(VertData v_in) : TARGET
13
 {
14
-   float4 a_val = convert_pmalpha(tex_a.Sample(textureSampler, v_in.uv));
15
-   float4 b_val = convert_pmalpha(tex_b.Sample(textureSampler, v_in.uv));
16
+   float4 a_val = tex_a.Sample(textureSampler, v_in.uv);
17
+   float4 b_val = tex_b.Sample(textureSampler, v_in.uv);
18
    return lerp(a_val, b_val, fade_val);
19
 }
20
 
21
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/locale/da-DK.ini Changed
54
 
1
@@ -1,39 +1,39 @@
2
 FadeTransition="Overgang"
3
 CutTransition="Klip"
4
-SwipeTransition="Swipe"
5
+SwipeTransition="Stryg"
6
 SlideTransition="Glide"
7
 StingerTransition="Stinger-overgang"
8
-FadeToColorTransition="Fade til farve"
9
+FadeToColorTransition="Farveovergang"
10
 Direction="Retning"
11
 Direction.Left="Venstre"
12
 Direction.Right="Højre"
13
 Direction.Up="Op"
14
 Direction.Down="Ned"
15
-SwipeIn="Swipe ind"
16
+SwipeIn="Stryg ind"
17
 Color="Farve"
18
 VideoFile="Videofil"
19
-TransitionPoint="Overgangspunkt (millisekunder)"
20
-TransitionPointFrame="Overgangspunkt (ramme)"
21
+TransitionPoint="Overgangspunkt (millisek.)"
22
+TransitionPointFrame="Overgangspunkt (billede)"
23
 TransitionPointType="Overgangspunkttype"
24
 TransitionPointTypeFrame="Billede"
25
-TransitionPointTypeTime="Tid (ms)"
26
+TransitionPointTypeTime="Tid (millisek.)"
27
 AudioFadeStyle="Lydudtoningsstil"
28
 AudioFadeStyle.FadeOutFadeIn="Udtone til overgangspunkt, dernæst indtone"
29
 AudioFadeStyle.CrossFade="Krydstoning (crossfade)"
30
-SwitchPoint="Farvepeakpunkt (procent)"
31
-LumaWipeTransition="Luma overgang"
32
+SwitchPoint="Farvespidspunkt (procent)"
33
+LumaWipeTransition="Luma-overgang"
34
 LumaWipe.Image="Billede"
35
-LumaWipe.Invert="Inverter"
36
+LumaWipe.Invert="Invertér"
37
 LumaWipe.Softness="Blødhed"
38
 LumaWipe.Type.BarndoorBottomLeft="Stalddør nederst til venstre"
39
 LumaWipe.Type.BarndoorHorizontal="Stalddør horisontal"
40
 LumaWipe.Type.BarndoorTopLeft="Stalddør øverst til venstre"
41
 LumaWipe.Type.BarndoorVertical="Stalddør vertikal"
42
 LumaWipe.Type.BlindsHorizontal="Persienne horisontal"
43
-LumaWipe.Type.BoxBottomLeft="Boks nederst til venstre"
44
-LumaWipe.Type.BoxBottomRight="Boks nederst til højre"
45
-LumaWipe.Type.BoxTopLeft="Boks øverst til venstre"
46
-LumaWipe.Type.BoxTopRight="Boks øverst til højre"
47
+LumaWipe.Type.BoxBottomLeft="Kasse nederst til venstre"
48
+LumaWipe.Type.BoxBottomRight="Kasse nederst til højre"
49
+LumaWipe.Type.BoxTopLeft="Kasse øverst til venstre"
50
+LumaWipe.Type.BoxTopRight="Kasse øverst til højre"
51
 LumaWipe.Type.Burst="Sprængning"
52
 LumaWipe.Type.CheckerboardSmall="Små skaktern"
53
 LumaWipe.Type.Circles="Cirkler"
54
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/locale/de-DE.ini Changed
18
 
1
@@ -23,7 +23,7 @@
2
 SwitchPoint="Spitzenfarbpunkt (in Prozent)"
3
 LumaWipeTransition="Luma Wipe"
4
 LumaWipe.Image="Bild"
5
-LumaWipe.Invert="Invertieren"
6
+LumaWipe.Invert="Umkehren"
7
 LumaWipe.Softness="Weichheit"
8
 LumaWipe.Type.BarndoorBottomLeft="Scheunentor unten links"
9
 LumaWipe.Type.BarndoorHorizontal="Scheunentor Horizontal"
10
@@ -61,6 +61,6 @@
11
 LumaWipe.Type.ZigzagVertical="Zigzag vertikal"
12
 AudioMonitoring="Audiomonitoring"
13
 AudioMonitoring.None="Monitor aus"
14
-AudioMonitoring.MonitorOnly="Nur Monitor (Ausgabe stumm schalten)"
15
+AudioMonitoring.MonitorOnly="Nur Monitor (Ausgabe stummschalten)"
16
 AudioMonitoring.Both="Monitor und Ausgabe"
17
 
18
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/locale/eu-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/locale/eu-ES.ini Changed
11
 
1
@@ -60,7 +60,7 @@
2
 LumaWipe.Type.ZigzagHorizontal="Sigi-saga horizontala"
3
 LumaWipe.Type.ZigzagVertical="Sigi-saga bertikala"
4
 AudioMonitoring="Adioaren monitorizazioa"
5
-AudioMonitoring.None="Monitorea itzalita"
6
-AudioMonitoring.MonitorOnly="Monitorea bakarrik (isildu irteera)"
7
+AudioMonitoring.None="Ez monitorizatu"
8
+AudioMonitoring.MonitorOnly="Monitorea bakarrik (irteera mututua)"
9
 AudioMonitoring.Both="Monitorea eta irteera"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/locale/ka-GE.ini Changed
9
 
1
@@ -61,6 +61,6 @@
2
 LumaWipe.Type.ZigzagVertical="შვეული ტეხილი"
3
 AudioMonitoring="ხმის მოსმენა"
4
 AudioMonitoring.None="მოსმენის გარეშე"
5
-AudioMonitoring.MonitorOnly="მხოლოდ მოსმენა (უხმო გამომავალი სიგნალით)"
6
+AudioMonitoring.MonitorOnly="მხოლოდ მოსმენა (უხმო გამოტანა)"
7
 AudioMonitoring.Both="მოსმენა და გამოტანა"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/locale/ro-RO.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/locale/ro-RO.ini Changed
10
 
1
@@ -18,6 +18,8 @@
2
 TransitionPointTypeTime="Timp (milisecunde)"
3
 SwitchPoint="Punctul de vârf al culorii (procent)"
4
 LumaWipe.Image="Imagine"
5
+LumaWipe.Invert="Inversează"
6
+LumaWipe.Softness="Moliciune"
7
 LumaWipe.Type.Clock="Ceas"
8
 LumaWipe.Type.Cloud="Cloud"
9
 LumaWipe.Type.ZigzagHorizontal="Zigzag orizontal"
10
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/locale/zh-CN.ini Changed
80
 
1
@@ -1,22 +1,22 @@
2
 FadeTransition="淡出"
3
-CutTransition="剪切"
4
-SwipeTransition="滑动"
5
-SlideTransition="滑动"
6
-StingerTransition="毒刺"
7
+CutTransition="直接切换"
8
+SwipeTransition="滑入滑出"
9
+SlideTransition="幻灯片"
10
+StingerTransition="插入视频"
11
 FadeToColorTransition="色彩淡入淡出"
12
 Direction="方向"
13
 Direction.Left="左"
14
 Direction.Right="右"
15
 Direction.Up="上"
16
 Direction.Down="下"
17
-SwipeIn="向上滑动"
18
+SwipeIn="滑入"
19
 Color="色彩"
20
 VideoFile="视频文件"
21
-TransitionPoint="转换点 (毫秒)"
22
-TransitionPointFrame="转换点 (帧)"
23
+TransitionPoint="转换点(毫秒)"
24
+TransitionPointFrame="转换点(帧)"
25
 TransitionPointType="转换点类型"
26
 TransitionPointTypeFrame="帧"
27
-TransitionPointTypeTime="时间 (毫秒)"
28
+TransitionPointTypeTime="时间(毫秒)"
29
 AudioFadeStyle="音频淡入淡出样式"
30
 AudioFadeStyle.FadeOutFadeIn="淡出到过渡点然后淡入"
31
 AudioFadeStyle.CrossFade="交叉淡入淡出"
32
@@ -24,10 +24,10 @@
33
 LumaWipeTransition="亮度擦除"
34
 LumaWipe.Image="图像"
35
 LumaWipe.Invert="反转"
36
-LumaWipe.Softness="柔和"
37
+LumaWipe.Softness="柔和度"
38
 LumaWipe.Type.BarndoorBottomLeft="左下角门"
39
 LumaWipe.Type.BarndoorHorizontal="水平门"
40
-LumaWipe.Type.BarndoorTopLeft="右上角门"
41
+LumaWipe.Type.BarndoorTopLeft="左上角门"
42
 LumaWipe.Type.BarndoorVertical="垂直门"
43
 LumaWipe.Type.BlindsHorizontal="水平百叶窗"
44
 LumaWipe.Type.BoxBottomLeft="左下角盒子"
45
@@ -41,17 +41,17 @@
46
 LumaWipe.Type.Cloud="云"
47
 LumaWipe.Type.Curtain="窗帘"
48
 LumaWipe.Type.Fan="风扇"
49
-LumaWipe.Type.Fractal="不规则碎片"
50
+LumaWipe.Type.Fractal="分形"
51
 LumaWipe.Type.Iris="中心"
52
 LumaWipe.Type.LinearHorizontal="线性水平"
53
 LumaWipe.Type.LinearTopLeft="线性左上"
54
 LumaWipe.Type.LinearTopRight="线性右上"
55
 LumaWipe.Type.LinearVertical="线性垂直"
56
-LumaWipe.Type.ParallelZigzagHorizontal="平行水波水平"
57
-LumaWipe.Type.ParallelZigzagVertical="平行水波垂直"
58
+LumaWipe.Type.ParallelZigzagHorizontal="并排Z字形水平"
59
+LumaWipe.Type.ParallelZigzagVertical="并排Z字形垂直"
60
 LumaWipe.Type.Sinus9="Sinus 9"
61
 LumaWipe.Type.Spiral="螺旋"
62
-LumaWipe.Type.Square="正方型"
63
+LumaWipe.Type.Square="正方形"
64
 LumaWipe.Type.Squares="方块"
65
 LumaWipe.Type.Stripes="条纹"
66
 LumaWipe.Type.StripsHorizontal="条纹水平"
67
@@ -59,8 +59,8 @@
68
 LumaWipe.Type.Watercolor="水彩"
69
 LumaWipe.Type.ZigzagHorizontal="Z字形水平"
70
 LumaWipe.Type.ZigzagVertical="Z字形垂直"
71
-AudioMonitoring="音频监测"
72
-AudioMonitoring.None="关闭监视"
73
-AudioMonitoring.MonitorOnly="仅显示器(输出静音)"
74
-AudioMonitoring.Both="显示器和输出"
75
+AudioMonitoring="音频监听"
76
+AudioMonitoring.None="关闭监听"
77
+AudioMonitoring.MonitorOnly="仅监听(不输出音频)"
78
+AudioMonitoring.Both="监听并输出"
79
 
80
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/luma_wipe_transition.effect -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/luma_wipe_transition.effect Changed
21
 
1
@@ -20,8 +20,6 @@
2
    float2 uv  : TEXCOORD0;
3
 };
4
 
5
-#include "premultiplied.inc"
6
-
7
 VertData VSDefault(VertData v_in)
8
 {
9
    VertData vert_out;
10
@@ -33,8 +31,8 @@
11
 float4 PSLumaWipe(VertData v_in) : TARGET
12
 {
13
    float2 uv = v_in.uv;
14
-   float4 a_color = convert_pmalpha(a_tex.Sample(textureSampler, uv));
15
-   float4 b_color = convert_pmalpha(b_tex.Sample(textureSampler, uv));
16
+   float4 a_color = a_tex.Sample(textureSampler, uv);
17
+   float4 b_color = b_tex.Sample(textureSampler, uv);
18
    float luma     = l_tex.Sample(textureSampler, uv).x;
19
 
20
    if (invert)
21
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/slide_transition.effect -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/slide_transition.effect Changed
19
 
1
@@ -16,8 +16,6 @@
2
    float2 uv  : TEXCOORD0;
3
 };
4
 
5
-#include "premultiplied.inc"
6
-
7
 VertData VSDefault(VertData v_in)
8
 {
9
    VertData vert_out;
10
@@ -37,7 +35,7 @@
11
           ? tex_b.Sample(textureSampler, tex_b_uv)
12
           : tex_a.Sample(textureSampler, tex_a_uv);
13
 
14
-   return convert_pmalpha(outc);
15
+   return outc;
16
 }
17
 
18
 technique Slide
19
obs-studio-23.1.0.tar.xz/plugins/obs-transitions/data/swipe_transition.effect -> obs-studio-23.2.0.tar.xz/plugins/obs-transitions/data/swipe_transition.effect Changed
19
 
1
@@ -14,8 +14,6 @@
2
    float2 uv  : TEXCOORD0;
3
 };
4
 
5
-#include "premultiplied.inc"
6
-
7
 VertData VSDefault(VertData v_in)
8
 {
9
    VertData vert_out;
10
@@ -34,7 +32,7 @@
11
           ? tex_b.Sample(textureSampler, v_in.uv)
12
           : tex_a.Sample(textureSampler, swipe_uv);
13
 
14
-   return convert_pmalpha(outc);
15
+   return outc;
16
 }
17
 
18
 technique Swipe
19
obs-studio-23.1.0.tar.xz/plugins/obs-x264/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-x264/data/locale/da-DK.ini Changed
23
 
1
@@ -1,13 +1,13 @@
2
-Bitrate="Bitrate"
3
-CustomBufsize="Brug brugerdefineret bufferstørrelse"
4
-BufferSize="Bufferstørrelsen"
5
+Bitrate="Bit-hastighed"
6
+CustomBufsize="Benyt tilpasset bufferstørrelse"
7
+BufferSize="Bufferstørrelse"
8
 RateControl="Rate kontrol"
9
 CRF="CRF"
10
-KeyframeIntervalSec="Keyframe interval (sekunder, 0 = auto)"
11
-CPUPreset="CPU forbrug indstilling (højere = mindre CPU)"
12
+KeyframeIntervalSec="Keyframe-interval (sek., 0 = auto)"
13
+CPUPreset="CPU-forbrugsforvalg (højere = mindre CPU)"
14
 Profile="Profil"
15
-Tune="Stil ind"
16
+Tune="Tuning"
17
 None="(Ingen)"
18
-EncoderOptions="x264 indstillinger (adskilt af mellemrum)"
19
-VFR="Variable framerate (VFR)"
20
+EncoderOptions="x264-indstillinger (adskilt af mellemrum)"
21
+VFR="Variable billedhastighed (VFR)"
22
 
23
obs-studio-23.1.0.tar.xz/plugins/obs-x264/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-x264/data/locale/de-DE.ini Changed
9
 
1
@@ -8,6 +8,6 @@
2
 Profile="Profil"
3
 Tune="Tune"
4
 None="(Nichts)"
5
-EncoderOptions="x264 Optionen (durch Leerzeichen getrennt)"
6
+EncoderOptions="x264-Optionen (durch Leerzeichen getrennt)"
7
 VFR="Variable Framerate (VFR)"
8
 
9
obs-studio-23.2.0.tar.xz/plugins/obs-x264/data/locale/fa-IR.ini Added
15
 
1
@@ -0,0 +1,13 @@
2
+Bitrate="نرخ بیت"
3
+CustomBufsize="استفاده از اندازه بافر سفارشی"
4
+BufferSize="اندازه بافر"
5
+RateControl="کنترل نرخ"
6
+CRF="سی آر اف"
7
+KeyframeIntervalSec="فاصله Keyframe (ثانیه 0 = خودکار)"
8
+CPUPreset="استفاده پیشفرض از CPU (بالاتر = CPU کمتر)"
9
+Profile="پروفایل"
10
+Tune="تون"
11
+None="(هیچ کدام)"
12
+EncoderOptions="آپشن های x264 (با فضای جدا شده )"
13
+VFR="فریم های متغیر (وی اف ار)"
14
+
15
obs-studio-23.1.0.tar.xz/plugins/obs-x264/data/locale/ko-KR.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-x264/data/locale/ko-KR.ini Changed
8
 
1
@@ -1,5 +1,5 @@
2
 Bitrate="비트레이트"
3
-CustomBufsize="사용자 임의 버퍼  크기 설정"
4
+CustomBufsize="사용자 임의 버퍼 크기 설정"
5
 BufferSize="버퍼 크기"
6
 RateControl="데이터율 제어"
7
 CRF="CRF"
8
obs-studio-23.1.0.tar.xz/plugins/obs-x264/data/locale/sk-SK.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-x264/data/locale/sk-SK.ini Changed
17
 
1
@@ -1,11 +1,13 @@
2
-Bitrate="Bitrate"
3
+Bitrate="Dátový tok"
4
 CustomBufsize="Použiť vlastnú veľkosť medzipamäte"
5
 BufferSize="Veľkosť medzipamäte"
6
 RateControl="Riadenie toku"
7
 CRF="CRF"
8
 KeyframeIntervalSec="Kľúčová snímka každých (sekúnd, 0 = automaticky)"
9
+CPUPreset="CPU predvoľba používania (vyššie = menej CPU)"
10
 Profile="Profil"
11
 Tune="Vyladenie"
12
-None="(Žiadny)"
13
+None="(Žiadne)"
14
 EncoderOptions="Možnosti enkodéra x264 (oddelené medzerou)"
15
+VFR="Premenlivá rýchlosť snímkov (VFR)"
16
 
17
obs-studio-23.1.0.tar.xz/plugins/obs-x264/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/plugins/obs-x264/data/locale/zh-CN.ini Changed
17
 
1
@@ -1,12 +1,12 @@
2
 Bitrate="比特率"
3
 CustomBufsize="使用自定义缓存大小"
4
 BufferSize="缓冲大小"
5
-RateControl="速率控制"
6
+RateControl="码率控制"
7
 CRF="CRF"
8
 KeyframeIntervalSec="关键帧间隔(秒, 0=自动)"
9
 CPUPreset="CPU 使用预设 (高 = 较少的 CPU占用)"
10
-Profile="配置文件"
11
-Tune="协调(类型)"
12
+Profile="配置(Profile)"
13
+Tune="微调(Tune)"
14
 None="(无)"
15
 EncoderOptions="x264 选项 (用空格分隔)"
16
 VFR="可变帧率 (VFR)"
17
obs-studio-23.1.0.tar.xz/plugins/obs-x264/obs-x264.c -> obs-studio-23.2.0.tar.xz/plugins/obs-x264/obs-x264.c Changed
12
 
1
@@ -179,7 +179,9 @@
2
 
3
    obs_property_set_modified_callback(list, rate_control_modified);
4
 
5
-   obs_properties_add_int(props, "bitrate", TEXT_BITRATE, 50, 10000000, 1);
6
+   p = obs_properties_add_int(props, "bitrate",
7
+           TEXT_BITRATE, 50, 10000000, 50);
8
+   obs_property_int_set_suffix(p, " Kbps");
9
 
10
    p = obs_properties_add_bool(props, "use_bufsize", TEXT_CUSTOM_BUF);
11
    obs_property_set_modified_callback(p, use_bufsize_modified);
12
obs-studio-23.1.0.tar.xz/plugins/rtmp-services/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/rtmp-services/data/locale/da-DK.ini Changed
20
 
1
@@ -1,11 +1,11 @@
2
-StreamingServices="Streaming Tjenester"
3
-CustomStreamingServer="Brugerdefineret Streaming Server"
4
-Service="Service"
5
+StreamingServices="Streamingtjenester"
6
+CustomStreamingServer="Tilpasset Streamingserver"
7
+Service="Tjeneste"
8
 Server="Server"
9
 Server.Auto="Auto (anbefalet)"
10
-StreamKey="Stream nøgle"
11
-UseAuth="Brug godkendelse"
12
+StreamKey="Streamnøgle"
13
+UseAuth="Benyt godkendelse"
14
 Username="Brugernavn"
15
-Password="Kodeord"
16
-ShowAll="Vis alle services"
17
+Password="Adgangskode"
18
+ShowAll="Vis alle tjenester"
19
 
20
obs-studio-23.1.0.tar.xz/plugins/rtmp-services/data/package.json -> obs-studio-23.2.0.tar.xz/plugins/rtmp-services/data/package.json Changed
14
 
1
@@ -1,10 +1,10 @@
2
 {
3
    "url": "https://obsproject.com/obs2_update/rtmp-services",
4
-   "version": 104,
5
+   "version": 107,
6
    "files": [
7
        {
8
            "name": "services.json",
9
-           "version": 104
10
+           "version": 107
11
        }
12
    ]
13
 }
14
obs-studio-23.1.0.tar.xz/plugins/rtmp-services/data/services.json -> obs-studio-23.2.0.tar.xz/plugins/rtmp-services/data/services.json Changed
56
 
1
@@ -350,7 +350,7 @@
2
                 }
3
             ],
4
             "recommended": {
5
-                "keyint": 3,
6
+                "keyint": 2,
7
                 "output": "ftl_output",
8
                 "max audio bitrate": 160,
9
                 "max video bitrate": 10000,
10
@@ -440,7 +440,7 @@
11
                 }
12
             ],
13
             "recommended": {
14
-                "keyint": 3,
15
+                "keyint": 2,
16
                 "max audio bitrate": 160,
17
                 "max video bitrate": 10000,
18
                 "profile": "main"
19
@@ -799,7 +799,7 @@
20
           "servers": [
21
               {
22
                   "name": "Server Iran",
23
-                  "url": "rtmp://gametips.tv:1935/hls"
24
+                  "url": "rtmp://rtmp.cdn.server1.gametips.tv:1935/hls"
25
               }
26
           ]
27
         },
28
@@ -1484,6 +1484,27 @@
29
                 "max video bitrate": 3000,
30
                 "max audio bitrate": 128
31
             }
32
+        },
33
+        {
34
+            "name": "OnlyFans.com",
35
+            "servers": [
36
+                {
37
+                    "name": "USA",
38
+                    "url": "rtmp://route0.onlyfans.com/live"
39
+                },
40
+                {
41
+                    "name": "Europe",
42
+                    "url": "rtmp://route0-dc2.onlyfans.com/live"
43
+                }
44
+            ],
45
+            "recommend": {
46
+                "keyint": 2,
47
+                "profile": "main",
48
+                "max video bitrate": 2500,
49
+                "max audio bitrate": 192,
50
+                "bframes": 0,
51
+                "x264opts": "tune=zerolatency"
52
+            }
53
         }
54
     ]
55
 }
56
obs-studio-23.1.0.tar.xz/plugins/text-freetype2/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/text-freetype2/data/locale/da-DK.ini Changed
20
 
1
@@ -1,7 +1,7 @@
2
 TextFreetype2="Tekst (FreeType 2)"
3
 Font="Skrifttype"
4
 Text="Tekst"
5
-TextFile="Tekstfil (UTF-8- eller UTF-16)"
6
+TextFile="Tekstfil (UTF-8/-16)"
7
 TextFileFilter="Tekstfiler (*.txt);;"
8
 ChatLogMode="Chatlogtilstand"
9
 ChatLogLines="Chatloglinjer"
10
@@ -9,7 +9,7 @@
11
 Color2="Farve 2"
12
 Outline="Kontur"
13
 DropShadow="Drop Shadow"
14
-ReadFromFile="Læse fra fil"
15
-CustomWidth="Brugerdefineret tekstbredde"
16
+ReadFromFile="Læs fra fil"
17
+CustomWidth="Tilpasset tekstbredde"
18
 WordWrap="Tekstombrydning"
19
 
20
obs-studio-23.2.0.tar.xz/plugins/text-freetype2/data/locale/fa-IR.ini Added
17
 
1
@@ -0,0 +1,15 @@
2
+TextFreetype2="متن (FreeType 2)"
3
+Font="فونت"
4
+Text="متن"
5
+TextFile="فایل متن  (UTF-8 یا UTF-16)"
6
+TextFileFilter="فایل های متنی (*.txt);;"
7
+ChatLogMode="حالت Chatlog"
8
+ChatLogLines="خط های Chatlog"
9
+Color1="رنگ 1"
10
+Color2="رنگ 2"
11
+Outline="برون نما"
12
+DropShadow="افتادن سایه"
13
+ReadFromFile="از فایل بخوان"
14
+CustomWidth="رنگ متن سفارشی"
15
+WordWrap="بسته بندی کلمات"
16
+
17
obs-studio-23.1.0.tar.xz/plugins/text-freetype2/obs-convenience.h -> obs-studio-23.2.0.tar.xz/plugins/text-freetype2/obs-convenience.h Changed
10
 
1
@@ -15,6 +15,8 @@
2
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
3
 ******************************************************************************/
4
 
5
+#pragma once
6
+
7
 #include <obs-module.h>
8
 
9
 gs_vertbuffer_t *create_uv_vbuffer(uint32_t num_verts, bool add_color);
10
obs-studio-23.1.0.tar.xz/plugins/text-freetype2/text-freetype2.h -> obs-studio-23.2.0.tar.xz/plugins/text-freetype2/text-freetype2.h Changed
10
 
1
@@ -15,6 +15,8 @@
2
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
3
 ******************************************************************************/
4
 
5
+#pragma once
6
+
7
 #include <obs-module.h>
8
 #include <ft2build.h>
9
 
10
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/ar-SA.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/ar-SA.ini Changed
7
 
1
@@ -1,3 +1,5 @@
2
 VLCSource="مصدر فيديو VLC"
3
 Playlist="قائمة تشغيل"
4
+SubtitleTrack="مسار الترجمة"
5
+SubtitleEnable="تفعيل الترجمة"
6
 
7
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/ca-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/ca-ES.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Atura"
3
 PlaylistNext="Següent"
4
 PlaylistPrev="Anterior"
5
+AudioTrack="Pista d'àudio"
6
+SubtitleTrack="Pista de subtítols"
7
+SubtitleEnable="Subtítols activats"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/cs-CZ.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/cs-CZ.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Zastavit"
3
 PlaylistNext="Další"
4
 PlaylistPrev="Předchozí"
5
+AudioTrack="Zvuková stopa"
6
+SubtitleTrack="Stopa titulků"
7
+SubtitleEnable="Zapnout titulky"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/da-DK.ini Changed
20
 
1
@@ -1,7 +1,7 @@
2
 VLCSource="VLC-videokilde"
3
 Playlist="Afspilningsliste"
4
 LoopPlaylist="Gentag afspilningsliste"
5
-Shuffle="Bland playliste"
6
+Shuffle="Bland afspilningsliste"
7
 PlaybackBehavior="Synlighedsadfærd"
8
 PlaybackBehavior.StopRestart="Stop når ikke synlig, genstart når synlig"
9
 PlaybackBehavior.PauseUnpause="Pause når ikke synlig, genoptage når synlig"
10
@@ -11,5 +11,8 @@
11
 Restart="Genstart"
12
 Stop="Stop"
13
 PlaylistNext="Næste"
14
-PlaylistPrev="Forrige"
15
+PlaylistPrev="Foregående"
16
+AudioTrack="Lydspor"
17
+SubtitleTrack="Undertekstspor"
18
+SubtitleEnable="Undertekster aktiveret"
19
 
20
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/de-DE.ini Changed
24
 
1
@@ -1,15 +1,18 @@
2
-VLCSource="VLC Videoquelle"
3
+VLCSource="VLC-Videoquelle"
4
 Playlist="Wiedergabeliste"
5
 LoopPlaylist="Wiedergabeliste wiederholen"
6
 Shuffle="Wiedergabeliste zufällig wiedergeben"
7
 PlaybackBehavior="Sichtbarkeitsverhalten"
8
-PlaybackBehavior.StopRestart="Anhalten wenn nicht sichtbar, neu starten wenn sichtbar"
9
-PlaybackBehavior.PauseUnpause="Pausieren wenn nicht sichtbar, fortsetzen wenn sichtbar"
10
+PlaybackBehavior.StopRestart="Anhalten, wenn nicht sichtbar, neustarten, wenn sichtbar"
11
+PlaybackBehavior.PauseUnpause="Pausieren, wenn nicht sichtbar, fortsetzen, wenn sichtbar"
12
 PlaybackBehavior.AlwaysPlay="Immer abspielen, auch wenn nicht sichtbar"
13
 NetworkCaching="Netzwerkpuffer (ms)"
14
 PlayPause="Abspielen/Pausieren"
15
-Restart="Neu starten"
16
+Restart="Neustarten"
17
 Stop="Stop"
18
 PlaylistNext="Weiter"
19
 PlaylistPrev="Zurück"
20
+AudioTrack="Audiospur"
21
+SubtitleTrack="Untertitelspur"
22
+SubtitleEnable="Untertitel aktivieren"
23
 
24
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/en-US.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/en-US.ini Changed
8
 
1
@@ -12,3 +12,6 @@
2
 Stop="Stop"
3
 PlaylistNext="Next"
4
 PlaylistPrev="Previous"
5
+AudioTrack="Audio Track"
6
+SubtitleTrack="Subtitle Track"
7
+SubtitleEnable="Subtitles Enabled"
8
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/es-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/es-ES.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Detener"
3
 PlaylistNext="Siguiente"
4
 PlaylistPrev="Anterior"
5
+AudioTrack="Pista de audio"
6
+SubtitleTrack="Rastreador de subtítulos"
7
+SubtitleEnable="Subtítulos activados"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/eu-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/eu-ES.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Gelditu"
3
 PlaylistNext="Hurrengoa"
4
 PlaylistPrev="Aurrekoa"
5
+AudioTrack="Audio-pista"
6
+SubtitleTrack="Azpitituluen pista"
7
+SubtitleEnable="Azpitituluak gaituta"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/fi-FI.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/fi-FI.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Pysäytä"
3
 PlaylistNext="Seuraava"
4
 PlaylistPrev="Edellinen"
5
+AudioTrack="Ääniraita"
6
+SubtitleTrack="Tekstitysraita"
7
+SubtitleEnable="Tekstitykset käytössä"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/fr-FR.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/fr-FR.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Arrêter"
3
 PlaylistNext="Suivant"
4
 PlaylistPrev="Précédent"
5
+AudioTrack="Piste audio"
6
+SubtitleTrack="Piste de sous-titre"
7
+SubtitleEnable="Activer les sous-titres"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/hu-HU.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/hu-HU.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Leállítás"
3
 PlaylistNext="Következő"
4
 PlaylistPrev="Előző"
5
+AudioTrack="Hangsáv"
6
+SubtitleTrack="Feliratsáv"
7
+SubtitleEnable="Feliratok engedélyezése"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/it-IT.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/it-IT.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Interrompi"
3
 PlaylistNext="Successivo"
4
 PlaylistPrev="Precedente"
5
+AudioTrack="Traccia audio"
6
+SubtitleTrack="Traccia sottotitoli"
7
+SubtitleEnable="Sottotitoli attivati"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/ja-JP.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/ja-JP.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="停止"
3
 PlaylistNext="次へ"
4
 PlaylistPrev="前へ"
5
+AudioTrack="音声トラック"
6
+SubtitleTrack="字幕トラック"
7
+SubtitleEnable="字幕を有効にする"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/ka-GE.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="შეწყვეტა"
3
 PlaylistNext="შემდეგი"
4
 PlaylistPrev="წინა"
5
+AudioTrack="ხმოვანი ბილიკი"
6
+SubtitleTrack="სუბტიტრების ჩანაწერი"
7
+SubtitleEnable="სუბტიტრები ჩართულია"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/ko-KR.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/ko-KR.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="중단"
3
 PlaylistNext="다음"
4
 PlaylistPrev="이전"
5
+AudioTrack="음성 트랙"
6
+SubtitleTrack="자막 트랙:"
7
+SubtitleEnable="자막 활성화"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/nb-NO.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/nb-NO.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Stopp avspilling"
3
 PlaylistNext="Neste"
4
 PlaylistPrev="Forrige"
5
+AudioTrack="Lydspor"
6
+SubtitleTrack="Undertekstspor"
7
+SubtitleEnable="Undertekster aktivert"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/nl-NL.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/nl-NL.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Stop"
3
 PlaylistNext="Volgende"
4
 PlaylistPrev="Vorige"
5
+AudioTrack="Geluidsspoor"
6
+SubtitleTrack="Ondertitelspoor"
7
+SubtitleEnable="Ondertitels ingeschakeld"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/pl-PL.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/pl-PL.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Zatrzymaj"
3
 PlaylistNext="Następny"
4
 PlaylistPrev="Poprzedni"
5
+AudioTrack="Ścieżka audio"
6
+SubtitleTrack="Ścieżka napisów"
7
+SubtitleEnable="Napisy włączone"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/pt-BR.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/pt-BR.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Parar"
3
 PlaylistNext="Próximo"
4
 PlaylistPrev="Anterior"
5
+AudioTrack="Faixa de áudio"
6
+SubtitleTrack="Faixa de legenda"
7
+SubtitleEnable="Legendas ativadas"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/ro-RO.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/ro-RO.ini Changed
12
 
1
@@ -8,8 +8,8 @@
2
 PlaybackBehavior.AlwaysPlay="Redă întotdeauna chiar si când nu este vizibil"
3
 NetworkCaching="Caching de rețea (ms)"
4
 PlayPause="Redă/Pauză"
5
-Restart="Repornire"
6
-Stop="Oprire"
7
+Restart="Repornește"
8
+Stop="Oprește"
9
 PlaylistNext="Următorul"
10
 PlaylistPrev="Anteriorul"
11
 
12
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/ru-RU.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/ru-RU.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Остановить"
3
 PlaylistNext="Следующий"
4
 PlaylistPrev="Предыдущий"
5
+AudioTrack="Звуковая дорожка"
6
+SubtitleTrack="Дорожка субтитров"
7
+SubtitleEnable="Субтитры включены"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/sk-SK.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/sk-SK.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Zastaviť"
3
 PlaylistNext="Ďalší"
4
 PlaylistPrev="Predchádzajúci"
5
+AudioTrack="Zvuková stopa"
6
+SubtitleTrack="Stopa titulkov"
7
+SubtitleEnable="Zapnuté titulky"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/sv-SE.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/sv-SE.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Stoppa"
3
 PlaylistNext="Nästa"
4
 PlaylistPrev="Föregående"
5
+AudioTrack="Ljudspår"
6
+SubtitleTrack="Undertextspår"
7
+SubtitleEnable="Aktivera undertexter"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/tr-TR.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/tr-TR.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Durdur"
3
 PlaylistNext="Sonraki"
4
 PlaylistPrev="Önceki"
5
+AudioTrack="Ses Parçası"
6
+SubtitleTrack="Altyazı Parçası"
7
+SubtitleEnable="Altyazılar Etkin"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/uk-UA.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/uk-UA.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="Зупинити"
3
 PlaylistNext="Наступний"
4
 PlaylistPrev="Попередній"
5
+AudioTrack="Аудіо доріжка"
6
+SubtitleTrack="Доріжка субтитрів"
7
+SubtitleEnable="Увімкнути субтитри"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/zh-CN.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="停止"
3
 PlaylistNext="下一个"
4
 PlaylistPrev="上一个"
5
+AudioTrack="音频轨道"
6
+SubtitleTrack="字幕轨道"
7
+SubtitleEnable="开启字幕"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/data/locale/zh-TW.ini -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/data/locale/zh-TW.ini Changed
9
 
1
@@ -12,4 +12,7 @@
2
 Stop="停止"
3
 PlaylistNext="下一個"
4
 PlaylistPrev="前一個"
5
+AudioTrack="音樂曲目"
6
+SubtitleTrack="字幕軌"
7
+SubtitleEnable="字幕已啟用"
8
 
9
obs-studio-23.1.0.tar.xz/plugins/vlc-video/vlc-video-source.c -> obs-studio-23.2.0.tar.xz/plugins/vlc-video/vlc-video-source.c Changed
115
 
1
@@ -18,6 +18,9 @@
2
 #define S_BEHAVIOR_PAUSE_UNPAUSE       "pause_unpause"
3
 #define S_BEHAVIOR_ALWAYS_PLAY         "always_play"
4
 #define S_NETWORK_CACHING              "network_caching"
5
+#define S_TRACK                        "track"
6
+#define S_SUBTITLE_ENABLE              "subtitle_enable"
7
+#define S_SUBTITLE_TRACK               "subtitle"
8
 
9
 #define T_(text) obs_module_text(text)
10
 #define T_PLAYLIST                     T_("Playlist")
11
@@ -28,6 +31,9 @@
12
 #define T_BEHAVIOR_PAUSE_UNPAUSE       T_("PlaybackBehavior.PauseUnpause")
13
 #define T_BEHAVIOR_ALWAYS_PLAY         T_("PlaybackBehavior.AlwaysPlay")
14
 #define T_NETWORK_CACHING              T_("NetworkCaching")
15
+#define T_TRACK                        T_("AudioTrack")
16
+#define T_SUBTITLE_ENABLE              T_("SubtitleEnable")
17
+#define T_SUBTITLE_TRACK               T_("SubtitleTrack")
18
 
19
 /* ------------------------------------------------------------------------- */
20
 
21
@@ -403,7 +409,8 @@
22
 }
23
 
24
 static void add_file(struct vlc_source *c, struct darray *array,
25
-       const char *path, int network_caching)
26
+       const char *path, int network_caching, int track_index,
27
+       int subtitle_index, bool subtitle_enable)
28
 {
29
    DARRAY(struct media_file_data) new_files;
30
    struct media_file_data data;
31
@@ -436,6 +443,19 @@
32
                    network_caching_option.array);
33
            dstr_free(&network_caching_option);
34
        }
35
+       struct dstr track_option = { 0 };
36
+       dstr_catf(&track_option,
37
+               ":audio-track=%d", track_index - 1);
38
+       libvlc_media_add_option_(new_media, track_option.array);
39
+       dstr_free(&track_option);
40
+
41
+       struct dstr sub_option = {0};
42
+       if (subtitle_enable) {
43
+           dstr_catf(&sub_option,
44
+               ":sub-track=%d", subtitle_index - 1);
45
+       }
46
+       libvlc_media_add_option_(new_media, sub_option.array);
47
+       dstr_free(&sub_option);
48
 
49
        data.path = new_path.array;
50
        data.media = new_media;
51
@@ -490,6 +510,9 @@
52
    const char *behavior;
53
    size_t count;
54
    int network_caching;
55
+   int track_index;
56
+   int subtitle_index;
57
+   bool subtitle_enable;
58
 
59
    da_init(new_files);
60
    da_init(old_files);
61
@@ -503,6 +526,12 @@
62
 
63
    network_caching = (int)obs_data_get_int(settings, S_NETWORK_CACHING);
64
 
65
+   track_index = (int)obs_data_get_int(settings, S_TRACK);
66
+
67
+   subtitle_index = (int)obs_data_get_int(settings, S_SUBTITLE_TRACK);
68
+
69
+   subtitle_enable = obs_data_get_bool(settings, S_SUBTITLE_ENABLE);
70
+
71
    if (astrcmpi(behavior, S_BEHAVIOR_PAUSE_UNPAUSE) == 0) {
72
        c->behavior = BEHAVIOR_PAUSE_UNPAUSE;
73
    } else if (astrcmpi(behavior, S_BEHAVIOR_ALWAYS_PLAY) == 0) {
74
@@ -540,13 +569,17 @@
75
                dstr_cat_ch(&dir_path, '/');
76
                dstr_cat(&dir_path, ent->d_name);
77
                add_file(c, &new_files.da, dir_path.array,
78
-                       network_caching);
79
+                       network_caching, track_index,
80
+                       subtitle_index,
81
+                       subtitle_enable);
82
            }
83
 
84
            dstr_free(&dir_path);
85
            os_closedir(dir);
86
        } else {
87
-           add_file(c, &new_files.da, path, network_caching);
88
+           add_file(c, &new_files.da, path, network_caching,
89
+                   track_index, subtitle_index,
90
+                   subtitle_enable);
91
        }
92
 
93
        obs_data_release(item);
94
@@ -833,6 +866,9 @@
95
    obs_data_set_default_string(settings, S_BEHAVIOR,
96
            S_BEHAVIOR_STOP_RESTART);
97
    obs_data_set_default_int(settings, S_NETWORK_CACHING, 400);
98
+   obs_data_set_default_int(settings, S_TRACK, 1);
99
+   obs_data_set_default_bool(settings, S_SUBTITLE_ENABLE, false);
100
+   obs_data_set_default_int(settings, S_SUBTITLE_TRACK, 1);
101
 }
102
 
103
 static obs_properties_t *vlcs_properties(void *data)
104
@@ -902,6 +938,10 @@
105
 
106
    obs_properties_add_int(ppts, S_NETWORK_CACHING, T_NETWORK_CACHING,
107
            100, 60000, 10);
108
+   obs_properties_add_int(ppts, S_TRACK, T_TRACK, 1, 10, 1);
109
+   obs_properties_add_bool(ppts, S_SUBTITLE_ENABLE, T_SUBTITLE_ENABLE);
110
+   obs_properties_add_int(ppts, S_SUBTITLE_TRACK, T_SUBTITLE_TRACK,
111
+           1, 10, 1);
112
 
113
    return ppts;
114
 }
115
obs-studio-23.1.0.tar.xz/plugins/win-capture/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/win-capture/data/locale/da-DK.ini Changed
42
 
1
@@ -1,27 +1,27 @@
2
-MonitorCapture="Skærm optager"
3
-WindowCapture="Vindue optager"
4
+MonitorCapture="Skærmoptagelse"
5
+WindowCapture="Vinduesoptagelse"
6
 WindowCapture.Window="Vindue"
7
-WindowCapture.Priority="Vindue match prioritet"
8
-WindowCapture.Priority.Title="Vinduestitel skal stemme overens"
9
-WindowCapture.Priority.Class="Samme titel, ellers find vindue af samme type"
10
-WindowCapture.Priority.Exe="Samme titel eller find vindue fra samme program"
11
+WindowCapture.Priority="Vinduesmatchprioritet"
12
+WindowCapture.Priority.Title="Vinduestitel skal matche"
13
+WindowCapture.Priority.Class="Match titel, ellers find vindue af samme type"
14
+WindowCapture.Priority.Exe="Match titel, ellers find vindue fra samme program"
15
 CaptureCursor="Optag markøren"
16
 Compatibility="Multi-adapter kompatibilitet"
17
 SLIFix="SLI-/Crossfire-optagetilstand (langsom)"
18
 AllowTransparency="Tillad gennemsigtighed"
19
 Monitor="Skærm"
20
 PrimaryMonitor="Primære skærm"
21
-GameCapture="Spil optager"
22
-GameCapture.AnyFullscreen="Optag ethvert fuldskærms program"
23
+GameCapture="Spiloptager"
24
+GameCapture.AnyFullscreen="Optag ethvert fuldskærmsprogram"
25
 GameCapture.CaptureWindow="Optag specifikt vindue"
26
 GameCapture.UseHotkey="Optag forreste vindue med hotkey"
27
 GameCapture.ForceScaling="Tving skalering"
28
-GameCapture.ScaleRes="Skalere opløsning"
29
-GameCapture.LimitFramerate="Begræns optagelses framerate"
30
-GameCapture.CaptureOverlays="Optag fra tredjepart overlays (såsom Steam)"
31
-GameCapture.AntiCheatHook="Brug anti-cheat kompatibilitet hook"
32
+GameCapture.ScaleRes="Skaleringsopløsning"
33
+GameCapture.LimitFramerate="Begræns optagelsesbilledhastighed"
34
+GameCapture.CaptureOverlays="Optag tredjepartsoverlejringer (såsom steam)"
35
+GameCapture.AntiCheatHook="Benyt anti-cheat kompatibilitets-hook"
36
 GameCapture.HotkeyStart="Optag forreste vindue"
37
-GameCapture.HotkeyStop="Deaktiver optagelse"
38
+GameCapture.HotkeyStop="Deaktivér optagelse"
39
 GameCapture.HookRate="Hook-hastighed"
40
 GameCapture.HookRate.Slow="Langsom"
41
 GameCapture.HookRate.Normal="Normal (anbefalet)"
42
obs-studio-23.1.0.tar.xz/plugins/win-capture/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/win-capture/data/locale/de-DE.ini Changed
22
 
1
@@ -7,9 +7,9 @@
2
 WindowCapture.Priority.Exe="Fenstertitel soll übereinstimmen, ansonsten Fenster des gleichen Programms finden"
3
 CaptureCursor="Mauszeiger aufnehmen"
4
 Compatibility="Multi-Adapter-Kompatibilität"
5
-SLIFix="SLI/Crossfire Aufnahmemodus (Langsam)"
6
+SLIFix="SLI-/Crossfire-Aufnahmemodus (Langsam)"
7
 AllowTransparency="Erlaube Transparenz"
8
-Monitor="Anzeige"
9
+Monitor="Bildschirm"
10
 PrimaryMonitor="Hauptmonitor"
11
 GameCapture="Spielaufnahme"
12
 GameCapture.AnyFullscreen="Beliebige Vollbildanwendung erfassen"
13
@@ -18,7 +18,7 @@
14
 GameCapture.ForceScaling="Erzwinge Skalierung"
15
 GameCapture.ScaleRes="Skaliere Auflösung"
16
 GameCapture.LimitFramerate="Limitiere FPS der Aufnahme"
17
-GameCapture.CaptureOverlays="Aufnahme von Drittanbieter Overlays (z.B. Steam)"
18
+GameCapture.CaptureOverlays="Aufnahme von Drittanbieter Overlays (z. B. Steam)"
19
 GameCapture.AntiCheatHook="Verwende Anti-Cheat-Kompatibilität Hook"
20
 GameCapture.HotkeyStart="Fenster im Vordergrund erfassen"
21
 GameCapture.HotkeyStop="Erfassen deaktivieren"
22
obs-studio-23.1.0.tar.xz/plugins/win-capture/data/locale/it-IT.ini -> obs-studio-23.2.0.tar.xz/plugins/win-capture/data/locale/it-IT.ini Changed
10
 
1
@@ -11,7 +11,7 @@
2
 AllowTransparency="Permetti la trasparenza"
3
 Monitor="Schermo"
4
 PrimaryMonitor="schermo principale"
5
-GameCapture="Cattura finestra a schermo intero"
6
+GameCapture="Cattura gioco"
7
 GameCapture.AnyFullscreen="Cattura qualsiasi applicazione a schermo intero"
8
 GameCapture.CaptureWindow="Cattura una finestra specifica"
9
 GameCapture.UseHotkey="Cattura la finestra in primo piano con la scorciatoia"
10
obs-studio-23.1.0.tar.xz/plugins/win-capture/data/locale/vi-VN.ini -> obs-studio-23.2.0.tar.xz/plugins/win-capture/data/locale/vi-VN.ini Changed
11
 
1
@@ -20,5 +20,9 @@
2
 GameCapture.AntiCheatHook="Dùng hook tương thích với phần mềm chống gian lận"
3
 GameCapture.HotkeyStart="Quay nền trước cửa sổ"
4
 GameCapture.HotkeyStop="Tắt quay"
5
+GameCapture.HookRate.Slow="Chậm"
6
+GameCapture.HookRate.Normal="Bình thường (nên chọn)"
7
+GameCapture.HookRate.Fast="Nhanh"
8
+GameCapture.HookRate.Fastest="Nhanh nhất"
9
 Mode="Chế độ"
10
 
11
obs-studio-23.1.0.tar.xz/plugins/win-capture/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/plugins/win-capture/data/locale/zh-CN.ini Changed
21
 
1
@@ -3,8 +3,8 @@
2
 WindowCapture.Window="窗口"
3
 WindowCapture.Priority="窗口匹配优先级"
4
 WindowCapture.Priority.Title="窗口标题必须匹配"
5
-WindowCapture.Priority.Class="匹配标题, 否则查找同样类型的窗口"
6
-WindowCapture.Priority.Exe="匹配标题, 否则查找同样可执行程序的窗口"
7
+WindowCapture.Priority.Class="匹配标题,否则查找相同类型的窗口"
8
+WindowCapture.Priority.Exe="匹配标题,否则查找相同可执行程序的窗口"
9
 CaptureCursor="捕捉光标"
10
 Compatibility="多适配器的兼容性"
11
 SLIFix="SLI/Crossfire 捕获模式 (慢)"
12
@@ -22,7 +22,7 @@
13
 GameCapture.AntiCheatHook="使用反作弊兼容性钩子"
14
 GameCapture.HotkeyStart="捕获前景窗口"
15
 GameCapture.HotkeyStop="停止捕获"
16
-GameCapture.HookRate="钩子率"
17
+GameCapture.HookRate="钩子速率"
18
 GameCapture.HookRate.Slow="慢"
19
 GameCapture.HookRate.Normal="正常 (推荐)"
20
 GameCapture.HookRate.Fast="快"
21
obs-studio-23.1.0.tar.xz/plugins/win-capture/game-capture.c -> obs-studio-23.2.0.tar.xz/plugins/win-capture/game-capture.c Changed
9
 
1
@@ -950,6 +950,7 @@
2
    "devenv",
3
    "taskmgr",
4
    "chrome",
5
+   "discord",
6
    "firefox",
7
    "systemsettings",
8
    "applicationframehost",
9
obs-studio-23.1.0.tar.xz/plugins/win-capture/graphics-hook/graphics-hook.c -> obs-studio-23.2.0.tar.xz/plugins/win-capture/graphics-hook/graphics-hook.c Changed
19
 
1
@@ -467,10 +467,15 @@
2
 static inline int try_lock_shmem_tex(int id)
3
 {
4
    int next = id == 0 ? 1 : 0;
5
+   DWORD wait_result = WAIT_FAILED;
6
 
7
-   if (WaitForSingleObject(tex_mutexes[id], 0) == WAIT_OBJECT_0) {
8
+   wait_result = WaitForSingleObject(tex_mutexes[id], 0);
9
+   if (wait_result == WAIT_OBJECT_0 || wait_result == WAIT_ABANDONED) {
10
        return id;
11
-   } else if (WaitForSingleObject(tex_mutexes[next], 0) == WAIT_OBJECT_0) {
12
+   }
13
+
14
+   wait_result = WaitForSingleObject(tex_mutexes[next], 0);
15
+   if (wait_result == WAIT_OBJECT_0 || wait_result == WAIT_ABANDONED) {
16
        return next;
17
    }
18
 
19
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/ar-SA.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/ar-SA.ini Changed
10
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="جهاز التقاط الفيديو"
3
 Device="الجهاز"
4
-ColorSpace="مساحة ألوان YUV"
5
 ColorSpace.Default="الإفتراضي"
6
-ColorRange="نطاق ألوان YUV"
7
 ColorRange.Partial="جزئي"
8
 ColorRange.Full="كامل"
9
 ConfigureAudio="تكوين الصوت"
10
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/bg-BG.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/bg-BG.ini Changed
19
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Видео входно устройство"
3
 Device="Устройство"
4
-ColorSpace="Цветово пространство YUV"
5
 ColorSpace.Default="По подразбиране"
6
-ColorRange="Цветови диапазон YUV"
7
 ColorRange.Partial="Частичен"
8
 ColorRange.Full="Пълен"
9
 ConfigureAudio="Настройки на звук"
10
@@ -12,7 +10,7 @@
11
 Resolution="Резолюция"
12
 VideoFormat="Видео формат"
13
 VideoFormat.Any="Всичко"
14
-VideoFormat.Unknown="Неизвестно  (%1)"
15
+VideoFormat.Unknown="Неизвестно (%1)"
16
 AudioDevice="Звуково устройство"
17
 Buffering="Буфериране"
18
 Buffering.AutoDetect="Автоматично засичане"
19
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/bn-BD.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/bn-BD.ini Changed
8
 
1
@@ -1,6 +1,5 @@
2
 VideoCaptureDevice="ভিডিও ক্যাপচার ডিভাইস"
3
 ColorSpace.Default="পূর্ব-নির্ধারিত"
4
-ColorRange="YUV রং বিন্যাস"
5
 ConfigureAudio="অডিও বিন্যাস করুন"
6
 ConfigureVideo="ভিডিও বিন্যাস করুন"
7
 ConfigureCrossbar="Crossbar বিন্যাস করুন"
8
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/ca-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/ca-ES.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Dispositiu de captura de vídeo"
3
 Device="Dispositiu"
4
-ColorSpace="Espai de color YUV"
5
+ColorSpace="Espai de color"
6
 ColorSpace.Default="Per defecte"
7
-ColorRange="Gamma de color YUV"
8
+ColorRange="Gamma de colors"
9
 ColorRange.Partial="Parcial"
10
 ColorRange.Full="Completa"
11
 ConfigureAudio="Configura l'àudio"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/cs-CZ.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/cs-CZ.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Zařízení pro záznam obrazu"
3
 Device="Zařízení"
4
-ColorSpace="Barevný prostor YUV"
5
+ColorSpace="Barevný prostor"
6
 ColorSpace.Default="Výchozí"
7
-ColorRange="Oblast barev YUV"
8
+ColorRange="Rozsah barev"
9
 ColorRange.Partial="Částečná"
10
 ColorRange.Full="Plná"
11
 ConfigureAudio="Natavit zvuk"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/da-DK.ini Changed
62
 
1
@@ -1,39 +1,39 @@
2
-VideoCaptureDevice="Video Optagelsesenhed"
3
+VideoCaptureDevice="Videooptagelsesenhed"
4
 Device="Enhed"
5
-ColorSpace="YUV farverum"
6
+ColorSpace="Farverum"
7
 ColorSpace.Default="Standard"
8
-ColorRange="YUV farveområde"
9
+ColorRange="Farveområde"
10
 ColorRange.Partial="Delvis"
11
 ColorRange.Full="Fuld"
12
-ConfigureAudio="Konfigurere lyd"
13
-ConfigureVideo="Konfigurere Video"
14
-ConfigureCrossbar="Konfigurere overligger"
15
-ResFPSType="Opløsning/FPS Type"
16
-ResFPSType.Custom="Brugerdefineret"
17
-ResFPSType.DevPreferred="Enhedens standard"
18
-FPS.Matching="Match Udgang FPS"
19
+ConfigureAudio="Opsæt lyd"
20
+ConfigureVideo="Opsæt video"
21
+ConfigureCrossbar="Opsæt overligger"
22
+ResFPSType="Opløsning/FPS-type"
23
+ResFPSType.Custom="Tilpasset"
24
+ResFPSType.DevPreferred="Enhedensstandard"
25
+FPS.Matching="Match Output-FPS"
26
 FPS.Highest="Højeste FPS"
27
 Resolution="Opløsning"
28
-VideoFormat="Video Format"
29
-VideoFormat.Any="Enhver"
30
+VideoFormat="Videoformat"
31
+VideoFormat.Any="Enhvert"
32
 VideoFormat.Unknown="Ukendt (%1)"
33
-AudioOutputMode="Tilstand for lydoutput"
34
+AudioOutputMode="Lydoutputtilstand"
35
 AudioOutputMode.Capture="Optag kun lyd"
36
-AudioOutputMode.DirectSound="Output skrivebordslyd (DirectSound)"
37
-AudioOutputMode.WaveOut="Output skrivebordslyd (WaveOut)"
38
-UseCustomAudioDevice="Brug brugerdefinerede lydenhed"
39
+AudioOutputMode.DirectSound="Output Skrivebordslyd (DirectSound)"
40
+AudioOutputMode.WaveOut="Output Skrivebordslyd (WaveOut)"
41
+UseCustomAudioDevice="Benyt tilpassede lydenhed"
42
 AudioDevice="Lydenhed"
43
 Buffering="Buffering"
44
-Buffering.ToolTip="Når aktiveret, vil video/audio data blive bufferet for at sikre den glatteste og mest\nkorrekt afspilning, men på bekostning af øget svartid.  Når \nbuffering bruges med et video-capturekort, anbefales det at indstille kort og \nprogrammet til samme framerate for bedste resultat.\n\nNår deaktiveret, sikrer laveste svartids afspilning, men på bekostning af frame\nafspilnings-nøjagtighed.  Dette er ideelt til ansigtskameraer, eller når du vil bruge the\nprogrammets eksempelvindue til at spille en konsol.\n\nAutogenkend (standard) indstiller den til aktiveret, hvis enheden har forsinkelse og disabled\nhvis det ikke har nogen forsinkelse."
45
+Buffering.ToolTip="Når aktiveret, buffers video-/lyddata for at sikre den jævneste og mest\nkorrekte afspilning, men på bekostning af øget responstid. Når \nbuffering benyttes med et videooptagelseskort, anbefales det at opsætte kortet og \nprogrammet til samme billedhastighed for bedste resultat.\n\nNår deaktiveret, sikres laveste responstidsafspilning, dog på bekostning af billed-\nafspilningsnøjagtighed. Dette er ideelt til ansigtskameraer, eller når du vil benytten\nprogrammets eksempelvindue til at spille en konsol.\n\nAutogenkend (standard) indstiller den til aktiveret, hvis enheden har forsinkelse og deaktiveret,\nhvis den ingen forsinkelse har."
46
 Buffering.AutoDetect="Autogenkend"
47
-Buffering.Enable="Aktiver"
48
-Buffering.Disable="Deaktiver"
49
+Buffering.Enable="Aktivér"
50
+Buffering.Disable="Deaktivér"
51
 Activate="Aktivér"
52
 Deactivate="Deaktivér"
53
 FlipVertically="Spejlvend vertikalt"
54
-DeactivateWhenNotShowing="Deaktiver når ikke vist"
55
+DeactivateWhenNotShowing="Deaktivér, når ikke vist"
56
 
57
-Bitrate="Bitrate"
58
+Bitrate="Bit-hastighed"
59
 Encoder.C985="AVerMedia H.264 Encoder (c985)"
60
 Encoder.C353="AVerMedia H.264 Encoder"
61
 
62
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/de-DE.ini Changed
37
 
1
@@ -1,14 +1,14 @@
2
 VideoCaptureDevice="Videoaufnahmegerät"
3
 Device="Gerät"
4
-ColorSpace="YUV-Farbraum"
5
+ColorSpace="Farbraum"
6
 ColorSpace.Default="Standard"
7
-ColorRange="YUV Farbpalette"
8
+ColorRange="Farbbereich"
9
 ColorRange.Partial="Teilweise"
10
 ColorRange.Full="Voll"
11
 ConfigureAudio="Audio konfigurieren"
12
 ConfigureVideo="Video konfigurieren"
13
 ConfigureCrossbar="Crossbar konfigurieren"
14
-ResFPSType="Auflösung/FPS Typ"
15
+ResFPSType="Auflösung/FPS-Typ"
16
 ResFPSType.Custom="Benutzerdefiniert"
17
 ResFPSType.DevPreferred="Gerätestandard"
18
 FPS.Matching="An Ausgabe angleichen"
19
@@ -24,7 +24,7 @@
20
 UseCustomAudioDevice="Benutzerdefiniertes Audiogerät verwenden"
21
 AudioDevice="Audiogerät"
22
 Buffering="Pufferung"
23
-Buffering.ToolTip="Wenn aktiviert, werden die Video-/Audiodaten gepuffert, um die möglichst flüssigste und genaueste Wiedergabe zu gewährleisten, aber auf Kosten von erhöhter Verzögerung. Wenn eine Capture-Card-Pufferung benutzt wird, wird es empfohlen, die Karte und OBS Studio auf die gleiche FPS-Anzahl zu setzen, um die besten Ergebnisse zu erzielen.\n\nWenn deaktiviert, wird die niedrigste Verzögerung für die Wiedergabe gewährleistet, aber auf Kosten der Framewiedergabegenauigkeit.\nDies ist ideal für Webcams oder, wenn Sie das Vorschaufenster des Programms benutzen wollen, um z.B. an einer Spielekonsole zu spielen.\n\nDie automatisch Erkennung aktiviert es, wenn das Gerät Verzögerung hat und deaktiviert es, wenn es keine Verzögerung gibt."
24
+Buffering.ToolTip="Wenn aktiviert, werden die Video-/Audiodaten gepuffert, um die möglichst flüssigste und genaueste Wiedergabe zu gewährleisten, aber auf Kosten von erhöhter Verzögerung. Wenn eine Capture-Card-Pufferung benutzt wird, wird es empfohlen, die Karte und OBS Studio auf die gleiche FPS-Anzahl zu setzen, um die besten Ergebnisse zu erzielen.\n\nWenn deaktiviert, wird die niedrigste Verzögerung für die Wiedergabe gewährleistet, aber auf Kosten der Framewiedergabegenauigkeit.\nDies ist ideal für Webcams oder, wenn Sie das Vorschaufenster des Programms benutzen wollen, um z. B. an einer Spielekonsole zu spielen.\n\nDie automatisch Erkennung aktiviert es, wenn das Gerät Verzögerung hat und deaktiviert es, wenn es keine Verzögerung gibt."
25
 Buffering.AutoDetect="Automatisch erkennen"
26
 Buffering.Enable="Aktivieren"
27
 Buffering.Disable="Deaktivieren"
28
@@ -34,6 +34,6 @@
29
 DeactivateWhenNotShowing="Deaktivieren, wenn die Quelle nicht angezeigt wird"
30
 
31
 Bitrate="Bitrate"
32
-Encoder.C985="AVerMedia H.264 Codierer (c985)"
33
-Encoder.C353="AVerMedia H.264 Codierer"
34
+Encoder.C985="AVerMedia-H.264-Kodierer (c985)"
35
+Encoder.C353="AVerMedia-H.264-Kodierer"
36
 
37
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/el-GR.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/el-GR.ini Changed
10
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Συσκευή Λήψης Βίντεο"
3
 Device="Συσκευή"
4
-ColorSpace="Χώρος χρωμάτων YUV"
5
 ColorSpace.Default="Προεπιλογή"
6
-ColorRange="Ποικιλία χρωμάτων YUV"
7
 ColorRange.Partial="Μερικό"
8
 ColorRange.Full="Πλήρες"
9
 ConfigureAudio="Ρύθμιση Ήχου"
10
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/en-US.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/en-US.ini Changed
22
 
1
@@ -1,9 +1,9 @@
2
 # video capture device text
3
 VideoCaptureDevice="Video Capture Device"
4
 Device="Device"
5
-ColorSpace="YUV Color Space"
6
+ColorSpace="Color Space"
7
 ColorSpace.Default="Default"
8
-ColorRange="YUV Color Range"
9
+ColorRange="Color Range"
10
 ColorRange.Partial="Partial"
11
 ColorRange.Full="Full"
12
 ConfigureAudio="Configure Audio"
13
@@ -25,7 +25,7 @@
14
 UseCustomAudioDevice="Use custom audio device"
15
 AudioDevice="Audio Device"
16
 Buffering="Buffering"
17
-Buffering.ToolTip="When enabled, buffers video/audio data to ensure the smoothest and most\naccurate playback possible, but at the cost of increased latency.  When using\nbuffering with a video capture card, it's recommended to set the card and the\nprogram to the same framerate for best results.\n\nWhen disabled, ensures lowest latency playback, but at the cost of frame\nplayback accuracy.  This is ideal for face cameras, or when you want to use the\nprogram's preview window to play a console.\n\nAuto-detect (default) sets it to enabled if the device has delay, and disabled\nif it has no delay."
18
+Buffering.ToolTip="When enabled, buffers video/audio data to ensure the smoothest and most\naccurate playback possible, but at the cost of increased latency. When using\nbuffering with a video capture card, it's recommended to set the card and the\nprogram to the same framerate for best results.\n\nWhen disabled, ensures lowest latency playback, but at the cost of frame\nplayback accuracy. This is ideal for face cameras, or when you want to use the\nprogram's preview window to play a console.\n\nAuto-detect (default) sets it to enabled if the device has delay, and disabled\nif it has no delay."
19
 Buffering.AutoDetect="Auto-Detect"
20
 Buffering.Enable="Enable"
21
 Buffering.Disable="Disable"
22
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/es-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/es-ES.ini Changed
29
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Dispositivo de captura de video"
3
 Device="Dispositivo"
4
-ColorSpace="Espacio de color YUV"
5
+ColorSpace="Espacio de color"
6
 ColorSpace.Default="Por defecto"
7
-ColorRange="Gama de Color YUV"
8
+ColorRange="Rango de colores"
9
 ColorRange.Partial="Parcial"
10
 ColorRange.Full="Completo"
11
 ConfigureAudio="Configurar Audio"
12
@@ -24,7 +24,7 @@
13
 UseCustomAudioDevice="Utilizar dispositivo de audio personalizado"
14
 AudioDevice="Dispositivo de audio"
15
 Buffering="Almacenando en buffer"
16
-Buffering.ToolTip="Cuando se activa, almacena datos de vídeo/audio para asegurar una reproducción\nlo más suave y precisa posible, pero a costa de un mayor tiempo de respuesta.\nCuando se usa el buffer con una tarjeta capturadora de vídeo, se recomienda establecer\nla tarjeta y el programa a la misma velocidad de fotogramas para un mejor resultado.\n\nCuando se desactiva, se garantiza la reproducción con el tiempo de respuesta más bajo, pero a costa\nde perder precisión en la reproducción de los fotogramas.  Esto es ideal para el uso de webcams,\no cuando desea utilizar la ventana de vista previa de programa para jugar a una consola.\n\nAutodetectar (por defecto) se activa si el dispositivo tiene retardo y se desactiva\nsi no tiene ningún retardo."
17
+Buffering.ToolTip="Cuando se activa, almacena datos de vídeo/audio para asegurar una reproducción\nlo más suave y precisa posible, pero a costa de un mayor tiempo de respuesta.\nCuando se usa el buffer con una tarjeta capturadora de vídeo, se recomienda establecer\nla tarjeta y el programa a la misma velocidad de fotogramas para un mejor resultado.\n\nCuando se desactiva, se garantiza la reproducción con el tiempo de respuesta más bajo, pero a costa\nde perder precisión en la reproducción de los fotogramas. Esto es ideal para el uso de webcams,\no cuando desea utilizar la ventana de vista previa de programa para jugar a una consola.\n\nAutodetectar (por defecto) se activa si el dispositivo tiene retardo y se desactiva\nsi no tiene ningún retardo."
18
 Buffering.AutoDetect="Autodetectar"
19
 Buffering.Enable="Habilitado"
20
 Buffering.Disable="Deshabilitar"
21
@@ -34,6 +34,6 @@
22
 DeactivateWhenNotShowing="Desactive cuando no se vea"
23
 
24
 Bitrate="Tasa de bits"
25
-Encoder.C985="Codificador AVerMedia H.264  (c985)"
26
+Encoder.C985="Codificador AVerMedia H.264 (c985)"
27
 Encoder.C353="Codificador H.264 de AVerMedia"
28
 
29
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/et-EE.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/et-EE.ini Changed
10
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Videohõive seade"
3
 Device="Seade"
4
-ColorSpace="YUV värviruumi"
5
 ColorSpace.Default="Vaikimisi"
6
-ColorRange="YUV värviruumi vahemik"
7
 ColorRange.Partial="Osaliselt"
8
 ColorRange.Full="Täielik"
9
 ConfigureAudio="Konfigureerige heli"
10
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/eu-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/eu-ES.ini Changed
21
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Bideoa kapturatzeko gailua"
3
 Device="Gailua"
4
-ColorSpace="YUV kolore-espazioa"
5
+ColorSpace="Kolore-espazioa"
6
 ColorSpace.Default="Lehenetsia"
7
-ColorRange="YUV kolore-barrutia"
8
+ColorRange="Kolore tartea"
9
 ColorRange.Partial="Partziala"
10
 ColorRange.Full="Osoa"
11
 ConfigureAudio="Konfiguratu audioa"
12
@@ -24,7 +24,7 @@
13
 UseCustomAudioDevice="Erabili audio gailu pertsonalizatua"
14
 AudioDevice="Audio gailua"
15
 Buffering="Bufferrereratzen"
16
-Buffering.ToolTip="Gaitutakoan, bideo/audio datuak oroimeneratzen ditu irakurketa lehunagoa\neta zehatzagoa egiteko, baina atzerapena handitzearen ordainarekin.\nOroimeneratzea bideo harpen txartel batekin erabiltzerakoan, gomendagarria da\ntxartela eta programa frameneurri bera erabiltzeko ezartzea.\n\nEzgaitutakoan, irakurketa atzerapen txikiagoa zihurtatzen du, baina\nframe irakurketa zehaztasunaren ordainarekin. Hau egokia da aurpegi kamerentzat,\nedo programaren aurreikuspen leihoa erabiltzea nahi duzunean kontsola batean irakurtzeko.\n\nBerez-atzemanek (berezkoa) gaitu egiten du gailuak atzerapena badu, eta ezgaitu\natzerapenik ez badu."
17
+Buffering.ToolTip="Gaituta badago, bideo/audio datuak bufferatzen ditu irakurketa leunagoa\neta zehatzagoa egiteko, baina latentzia handitzearen ordainarekin.\nBufferatzea bideoa kapturatzeko txartel baten bidez egiten denean, gomendagarria da\ntxartela eta programa fotograma neurri bera erabiltzeko ezartzea.\n\nEzgaituta badago, erreprodukzio latentzia txikiagoa ziurtatzen du, baina\nfotograma erreprodukzio zehaztasunaren kaltean. Hau egokia da aurpegi kamerentzat,\nedo programaren aurrebista leihoa erabiltzea nahi duzunean kontsola batean irakurtzeko.\n\nAutodetekzioak (berezkoa) gaitu egiten du gailuak atzerapena badu, eta ezgaitu\natzerapenik ez badu."
18
 Buffering.AutoDetect="Auto-detektatu"
19
 Buffering.Enable="Gaitu"
20
 Buffering.Disable="Ezgaitu"
21
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/fi-FI.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/fi-FI.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Videokaappauslaite"
3
 Device="Laite"
4
-ColorSpace="YUV väriavaruus"
5
+ColorSpace="Väriavaruus"
6
 ColorSpace.Default="Oletus"
7
-ColorRange="YUV värialue"
8
+ColorRange="Värialue"
9
 ColorRange.Partial="Osittainen"
10
 ColorRange.Full="Täysi"
11
 ConfigureAudio="Määritä ääni"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/fil-PH.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/fil-PH.ini Changed
10
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Pagkuha ng Bidyo na device"
3
 Device="Device"
4
-ColorSpace="Kulay sa Pagitan ng YUV"
5
 ColorSpace.Default="I-Default"
6
-ColorRange="Saklaw ng Kulat ng YUV"
7
 ColorRange.Partial="Partial"
8
 ColorRange.Full="Puno"
9
 ConfigureAudio="I-Configure ang Audio"
10
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/fr-FR.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/fr-FR.ini Changed
9
 
1
@@ -1,6 +1,6 @@
2
 VideoCaptureDevice="Périphérique de capture vidéo"
3
 Device="Périphérique"
4
-ColorSpace="Espace de couleur YUV"
5
+ColorSpace="Espace de couleurs YUV"
6
 ColorSpace.Default="Par défaut"
7
 ColorRange="Gamme de couleurs YUV"
8
 ColorRange.Partial="Partielle"
9
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/gd-GB.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/gd-GB.ini Changed
10
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Uidheam glacadh video"
3
 Device="Uidheam"
4
-ColorSpace="Spàs dhathan YUV"
5
 ColorSpace.Default="Bun-roghainn"
6
-ColorRange="Rainse dhathan YUV"
7
 ColorRange.Partial="Leth-phàirteach"
8
 ColorRange.Full="Làn"
9
 ConfigureAudio="Rèitich an fhuaim"
10
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/gl-ES.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/gl-ES.ini Changed
10
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Dispositivo de captura de vídeo"
3
 Device="Dispositivo"
4
-ColorSpace="Espazo de cor YUV"
5
 ColorSpace.Default="Por defecto"
6
-ColorRange="Gama de cor YUV"
7
 ColorRange.Partial="Parcial"
8
 ColorRange.Full="Completo"
9
 ConfigureAudio="Configurar audio"
10
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/he-IL.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/he-IL.ini Changed
19
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="התקן לכידת וידאו"
3
 Device="התקן"
4
-ColorSpace="מרחב צבע YUV"
5
 ColorSpace.Default="ברירת מחדל"
6
-ColorRange="טווח צבע YUV"
7
 ColorRange.Partial="חלקי"
8
 ColorRange.Full="מלא"
9
 ConfigureAudio="הגדר שמע"
10
@@ -24,7 +22,7 @@
11
 UseCustomAudioDevice="השתמש בהתקן שמע מותאם אישית"
12
 AudioDevice="התקן שמע"
13
 Buffering="אגירה"
14
-Buffering.ToolTip="כאשר מאופשר, מאגר נתונים וידאו / אודיו כדי להבטיח את ההשמעה חלקה ביותר \n accurate אפשרי, אבל במחיר של חביון מוגברת. בעת שימוש \n בכביסה עם כרטיס לכידת וידאו, מומלץ להגדיר את הכרטיס ואת \ nprogram לאותו פרמטרט לקבלת התוצאות הטובות ביותר. \n\n כאשר הוא מושבת, מבטיח השמעת חביון נמוכה ביותר, אך במחיר של מסגרת \n דיוק חזרה. זה אידיאלי למצלמות פנים, או כאשר ברצונך להשתמש בחלון התצוגה המקדימה של \n כדי להציג קונסולה.   \n\n גילוי אוטומטי (ברירת מחדל) מגדיר אותו כך שאם המכשיר יש עיכוב, והוא מושבת \ nif ללא עיכוב."
15
+Buffering.ToolTip="כאשר מאופשר, מאגר נתונים וידאו / אודיו כדי להבטיח את ההשמעה חלקה ביותר \n accurate אפשרי, אבל במחיר של חביון מוגברת. בעת שימוש \n בכביסה עם כרטיס לכידת וידאו, מומלץ להגדיר את הכרטיס ואת \ nprogram לאותו פרמטרט לקבלת התוצאות הטובות ביותר. \n\n כאשר הוא מושבת, מבטיח השמעת חביון נמוכה ביותר, אך במחיר של מסגרת \n דיוק חזרה. זה אידיאלי למצלמות פנים, או כאשר ברצונך להשתמש בחלון התצוגה המקדימה של \n כדי להציג קונסולה.  \n\n גילוי אוטומטי (ברירת מחדל) מגדיר אותו כך שאם המכשיר יש עיכוב, והוא מושבת \ nif ללא עיכוב."
16
 Buffering.AutoDetect="זיהוי אוטומטי"
17
 Buffering.Enable="אפשר"
18
 Buffering.Disable="בטל"
19
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/hr-HR.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/hr-HR.ini Changed
19
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Uređaj za snimanje videa"
3
 Device="Uređaj"
4
-ColorSpace="YUV prostor boja"
5
 ColorSpace.Default="Podrazumevani"
6
-ColorRange="YUV raspon boja"
7
 ColorRange.Partial="Delimično"
8
 ColorRange.Full="Potpuno"
9
 ConfigureAudio="Podesi zvuk"
10
@@ -24,7 +22,7 @@
11
 UseCustomAudioDevice="Koristi specifičan uređaj za zvuk"
12
 AudioDevice="Uređaj za zvuk"
13
 Buffering="Baferovanje"
14
-Buffering.ToolTip="Kada je omogućeno, baferovanje video/zvučnih podatke osigurava tečnu i najprecizniju\nmoguću reprodukciju, ali nosi i posledicu produženog kašnjenja.  Kada je baferovanje u\nupotrebi sa karticom za hvatanje videa, preporučljivo je postaviti karticu i\nprogram na isti frejmrejt da dobijete najbolje rezultate.\n\nKada je onemogućeno, obezbeđuje najmanje kašnjenje reprodukcije, ali uz posledicu nepreciznosti\nreprodukovanog frejma.  Ovo je idealno za kamere koje snimaju lica, ili kada želite\nda koristite programski prozor za pregled da biste igrali na konzoli.\n\nAutomatsko-otkrivanje (podrazumevano) automatski omogućava ovo ako uređaj ima kašnjenje i onemogućava\nako nema kašnjenja."
15
+Buffering.ToolTip="Kada je omogućeno, baferovanje video/zvučnih podatke osigurava tečnu i najprecizniju\nmoguću reprodukciju, ali nosi i posledicu produženog kašnjenja. Kada je baferovanje u\nupotrebi sa karticom za hvatanje videa, preporučljivo je postaviti karticu i\nprogram na isti frejmrejt da dobijete najbolje rezultate.\n\nKada je onemogućeno, obezbeđuje najmanje kašnjenje reprodukcije, ali uz posledicu nepreciznosti\nreprodukovanog frejma. Ovo je idealno za kamere koje snimaju lica, ili kada želite\nda koristite programski prozor za pregled da biste igrali na konzoli.\n\nAutomatsko-otkrivanje (podrazumevano) automatski omogućava ovo ako uređaj ima kašnjenje i onemogućava\nako nema kašnjenja."
16
 Buffering.AutoDetect="Automatsko-otkrivanje"
17
 Buffering.Enable="Omogući"
18
 Buffering.Disable="Onemogući"
19
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/hu-HU.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/hu-HU.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Videorögzítő eszköz"
3
 Device="Eszköz"
4
-ColorSpace="YUV színtér"
5
+ColorSpace="Színtér"
6
 ColorSpace.Default="Alapértelmezett"
7
-ColorRange="YUV színtartomány"
8
+ColorRange="Színtartomány"
9
 ColorRange.Partial="Részleges"
10
 ColorRange.Full="Teljes"
11
 ConfigureAudio="Audio beállítása"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/it-IT.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/it-IT.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Dispositivo di cattura video"
3
 Device="Dispositivo"
4
-ColorSpace="Spazio colore YUV"
5
+ColorSpace="Spazio colore"
6
 ColorSpace.Default="Predefinito"
7
-ColorRange="Gamma di colore YUV"
8
+ColorRange="Gamma di colori"
9
 ColorRange.Partial="Parziale"
10
 ColorRange.Full="Intero"
11
 ConfigureAudio="Configura l'audio"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/ja-JP.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/ja-JP.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="映像キャプチャデバイス"
3
 Device="デバイス"
4
-ColorSpace="YUV 色空間"
5
+ColorSpace="色空間"
6
 ColorSpace.Default="既定"
7
-ColorRange="YUV 色範囲"
8
+ColorRange="色範囲"
9
 ColorRange.Partial="一部"
10
 ColorRange.Full="全部"
11
 ConfigureAudio="音声を構成"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/ka-GE.ini Changed
37
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="ვიდეოს გადამღები მოწყობილობა"
3
 Device="მოწყობილობა"
4
-ColorSpace="YUV ფერთა სისტემა"
5
+ColorSpace="ფერთა სივრცე"
6
 ColorSpace.Default="ნაგულისხმევი"
7
-ColorRange="YUV ფერთა გამა"
8
+ColorRange="ფერთა გამა"
9
 ColorRange.Partial="ნაწილობრივი"
10
 ColorRange.Full="სრული"
11
 ConfigureAudio="ხმის გამართვა"
12
@@ -11,7 +11,7 @@
13
 ResFPSType="გაფართოება/FPS სახეობა"
14
 ResFPSType.Custom="მითითებული"
15
 ResFPSType.DevPreferred="მოწყობილობის ნაგულისხმევი"
16
-FPS.Matching="გამომავალი ვიდეოს FPS-ის შესაბამისი"
17
+FPS.Matching="გამოტანის FPS-ის შესაბამისი"
18
 FPS.Highest="უმაღლესი FPS"
19
 Resolution="გაფართოება"
20
 VideoFormat="ვიდეოს ფორმატი"
21
@@ -19,12 +19,12 @@
22
 VideoFormat.Unknown="უცნობი (%1)"
23
 AudioOutputMode="ხმის გამოტანის რეჟიმი"
24
 AudioOutputMode.Capture="ხმის ჩაწერა მხოლოდ"
25
-AudioOutputMode.DirectSound="გამომავალი ხმა (DirectSound)"
26
-AudioOutputMode.WaveOut="გამომავალი ხმა (WaveOut)"
27
+AudioOutputMode.DirectSound="გამოტანილი ხმა (DirectSound)"
28
+AudioOutputMode.WaveOut="გამოტანილი ხმა (WaveOut)"
29
 UseCustomAudioDevice="ხმის მითითებული მოწყობილობის გამოყენება"
30
 AudioDevice="ხმის მოწყობილობა"
31
 Buffering="ბუფერიზაცია"
32
-Buffering.ToolTip="როცა ჩართულია, მიმდინარეობს ვიდეოს/ხმის მონაცემების ბუფერიზაცია, რაც უზრუნველყოფს შეუფერხებლად და უმაღლესი\nხარისხით გადაცემას, თუმცა გაზრდილი დაყოვნების ხარჯზე.  როცა იყენებთ\nბუფერიზაციას ვიდეოს ჩამწერი დაფით, სასურველია, რომ აპარატურასა და\nპროგრამას მიეთითოს ერთი და იგივე კადრის სიხშირე, საუკეთესო შედეგის მისაღებად.\n\nროცა გამორთულია, დაყოვნება მეტად მცირეა, თუმცა კადრების\nგადაცემის სისუფთავის ხარჯზე. ეს მეტად გამოსადეგია, კამერით გადაღებისას ან\nპროგრამის შესათვალიერებელი ფანჯრისთვის, ვიდეოთამაშისას.\n\nთვითშერჩევით (ნაგულისხმევი) მიეთითება ჩართვა, თუ მოწყობილობას აქვს დაყოვნება, ხოლო გამორთვა\n იმ შემთხვევაში, თუ არ აქვს დაყოვნება."
33
+Buffering.ToolTip="როცა ჩართულია, მიმდინარეობს ვიდეოს/ხმის მონაცემების ბუფერიზაცია, რაც უზრუნველყოფს შეუფერხებლად და უმაღლესი\nხარისხით გადაცემას, თუმცა გაზრდილი დაყოვნების ხარჯზე. როცა იყენებთ\nბუფერიზაციას ვიდეოს ჩამწერი დაფით, სასურველია, რომ აპარატურასა და\nპროგრამას მიეთითოს ერთი და იგივე კადრის სიხშირე, საუკეთესო შედეგის მისაღებად.\n\nროცა გამორთულია, დაყოვნება მეტად მცირეა, თუმცა კადრების\nგადაცემის სისუფთავის ხარჯზე. ეს მეტად გამოსადეგია, კამერით გადაღებისას ან\nპროგრამის შესათვალიერებელი ფანჯრისთვის, ვიდეოთამაშისას.\n\nთვითშერჩევით (ნაგულისხმევი) მიეთითება ჩართვა, თუ მოწყობილობას აქვს დაყოვნება, ხოლო გამორთვა\n იმ შემთხვევაში, თუ არ აქვს დაყოვნება."
34
 Buffering.AutoDetect="თვითშერჩევა"
35
 Buffering.Enable="ჩართვა"
36
 Buffering.Disable="გამორთვა"
37
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/ko-KR.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/ko-KR.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="비디오 캡쳐 장치"
3
 Device="장치"
4
-ColorSpace="YUV 색 공간"
5
+ColorSpace="색 공간"
6
 ColorSpace.Default="기본"
7
-ColorRange="YUV 색상 범위"
8
+ColorRange="색상 범위"
9
 ColorRange.Partial="부분"
10
 ColorRange.Full="전체"
11
 ConfigureAudio="오디오 설정"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/nb-NO.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/nb-NO.ini Changed
19
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Videoopptaksenhet"
3
 Device="Enhet"
4
-ColorSpace="YUV fargerom"
5
 ColorSpace.Default="Standard"
6
-ColorRange="YUV fargespekter"
7
 ColorRange.Partial="Delvis"
8
 ColorRange.Full="Full"
9
 ConfigureAudio="Konfigurer lyd"
10
@@ -24,7 +22,7 @@
11
 UseCustomAudioDevice="Bruk egendefinert lydenhet"
12
 AudioDevice="Lydenhet"
13
 Buffering="Bufring"
14
-Buffering.ToolTip="Når aktivert, buffrer video/lyd-data for å sikre den jevneste og mest\nnøyaktige avspilling mulig, men på bekostning av økt ventetid. Ved\n bruk av et grafikkort for buffering. Er det anbefalt for å sette kortet og \nprogrammet til samme bildefrekvens for beste resultat.\n\nNår deaktivert, sikrer laveste forsinkelse ved avspilling, men på bekostning av\nnøyaktighet.  Dette er ideelt for ansiktet kameraer, eller når du skal bruke\nprogrammets forhåndsvisningsvindu for å spille en konsoll.\n\nAutomatisk (standard) aktiverer det hvis enheten har forsinkelse og deaktiverer\ndet hvis kilden har ingen forsinkelse."
15
+Buffering.ToolTip="Når aktivert, buffrer video/lyd-data for å sikre den jevneste og mest\nnøyaktige avspilling mulig, men på bekostning av økt ventetid. Ved\n bruk av et grafikkort for buffering. Er det anbefalt for å sette kortet og \nprogrammet til samme bildefrekvens for beste resultat.\n\nNår deaktivert, sikrer laveste forsinkelse ved avspilling, men på bekostning av\nnøyaktighet. Dette er ideelt for ansiktet kameraer, eller når du skal bruke\nprogrammets forhåndsvisningsvindu for å spille en konsoll.\n\nAutomatisk (standard) aktiverer det hvis enheten har forsinkelse og deaktiverer\ndet hvis kilden har ingen forsinkelse."
16
 Buffering.AutoDetect="Automatisk søk"
17
 Buffering.Enable="Aktiver"
18
 Buffering.Disable="Deaktiver"
19
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/nl-NL.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/nl-NL.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Video opname-apparaat"
3
 Device="Apparaat"
4
-ColorSpace="YUV-Kleurruimte"
5
+ColorSpace="Kleurruimte"
6
 ColorSpace.Default="Standaard"
7
-ColorRange="YUV-Kleurbereik"
8
+ColorRange="Kleurbereik"
9
 ColorRange.Partial="Partial"
10
 ColorRange.Full="Full"
11
 ConfigureAudio="Audio Instellen"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/pl-PL.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/pl-PL.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Urządzenie do przechwytywania wideo"
3
 Device="Urządzenie"
4
-ColorSpace="Przestrzeń kolorów YUV"
5
+ColorSpace="Przestrzeń kolorów"
6
 ColorSpace.Default="Domyślne"
7
-ColorRange="Zakres kolorów YUV"
8
+ColorRange="Zakres kolorów"
9
 ColorRange.Partial="Częściowy"
10
 ColorRange.Full="Pełny"
11
 ConfigureAudio="Konfiguracja dźwięku"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/pt-BR.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/pt-BR.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Dispositivo de Captura de Vídeo"
3
 Device="Dispositivo"
4
-ColorSpace="Espaço de cor YUV"
5
+ColorSpace="Espaço de cor"
6
 ColorSpace.Default="Padrão"
7
-ColorRange="Intervalo de Cores YUV"
8
+ColorRange="Faixa de cores"
9
 ColorRange.Partial="Parcial"
10
 ColorRange.Full="Completo"
11
 ConfigureAudio="Configurar Áudio"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/pt-PT.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/pt-PT.ini Changed
19
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Dispositivo de captura de vídeo"
3
 Device="Dispositivo"
4
-ColorSpace="Espaço de cor YUV"
5
 ColorSpace.Default="Predefinição"
6
-ColorRange="Gama de cor YUV"
7
 ColorRange.Partial="Parcial"
8
 ColorRange.Full="Total"
9
 ConfigureAudio="Configurar áudio"
10
@@ -24,7 +22,7 @@
11
 UseCustomAudioDevice="Utilizar dispositivo de áudio personalizado"
12
 AudioDevice="Dispositivo de áudio"
13
 Buffering="Buffering"
14
-Buffering.ToolTip="Quando ativado, os buffers de dados de vídeo/áudio garantem o melhor e mais suave\nreprodução precisa possível, mas ao custo de uma maior latência. Ao usar o\ncom uma placa de captura de vídeo, recomenda-se definir a placa e o\npara o mesmo frameerate para melhores resultados.\n\nQuando desativado, garante a menor latência de reprodução, mas com o custo de frame\nprecisão de reprodução.  Isso é ideal para câmeras de face, ou quando você quiser usar o comando\njanela de pré-visualização do programa para reproduzir um console.\n\nAuto-detecção (predefinição) define-o como activado se o dispositivo tiver atraso e desactivado\nse não houver atraso."
15
+Buffering.ToolTip="Quando ativado, os buffers de dados de vídeo/áudio garantem o melhor e mais suave\nreprodução precisa possível, mas ao custo de uma maior latência. Ao usar o\ncom uma placa de captura de vídeo, recomenda-se definir a placa e o\npara o mesmo frameerate para melhores resultados.\n\nQuando desativado, garante a menor latência de reprodução, mas com o custo de frame\nprecisão de reprodução. Isso é ideal para câmeras de face, ou quando você quiser usar o comando\njanela de pré-visualização do programa para reproduzir um console.\n\nAuto-detecção (predefinição) define-o como activado se o dispositivo tiver atraso e desactivado\nse não houver atraso."
16
 Buffering.AutoDetect="Detetar Automaticamente"
17
 Buffering.Enable="Ativo"
18
 Buffering.Disable="Desativado"
19
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/ro-RO.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/ro-RO.ini Changed
22
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Dispozitiv de captură video"
3
 Device="Dispozitiv"
4
-ColorSpace="Spațiu de culori YUV"
5
 ColorSpace.Default="Implicit"
6
-ColorRange="Gamă de culori YUV"
7
 ColorRange.Partial="Parțială"
8
 ColorRange.Full="Completă"
9
 ConfigureAudio="Configurare audio"
10
@@ -23,8 +21,10 @@
11
 AudioOutputMode.WaveOut="Ieșire audio desktop (WaveOut)"
12
 UseCustomAudioDevice="Folosește dispozitiv audio personalizat"
13
 AudioDevice="Dispozitiv audio"
14
-Buffering="Buffering"
15
+Buffering="Zonă tampon"
16
 Buffering.AutoDetect="Detectează automat"
17
+Buffering.Enable="Activează"
18
+Buffering.Disable="Dezactivează"
19
 Activate="Activează"
20
 Deactivate="Dezactivează"
21
 FlipVertically="Rotește vertical"
22
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/ru-RU.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/ru-RU.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Устройство захвата видео"
3
 Device="Устройство"
4
-ColorSpace="Цветовое пространство YUV"
5
+ColorSpace="Цветовое пространство"
6
 ColorSpace.Default="По умолчанию"
7
-ColorRange="Цветовой диапазон YUV"
8
+ColorRange="Цветовой диапазон"
9
 ColorRange.Partial="Частичный"
10
 ColorRange.Full="Полный"
11
 ConfigureAudio="Настроить звук"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/sk-SK.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/sk-SK.ini Changed
21
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Zariadenie na zachytávanie videa"
3
 Device="Zariadenie"
4
-ColorSpace="Farebný priestor YUV"
5
+ColorSpace="Farebný priestor"
6
 ColorSpace.Default="Predvolený"
7
-ColorRange="Rozsah farieb YUV"
8
+ColorRange="Farebný rozsah"
9
 ColorRange.Partial="Čiastočný"
10
 ColorRange.Full="Úplný"
11
 ConfigureAudio="Nastaviť zvuk"
12
@@ -17,7 +17,7 @@
13
 VideoFormat="Formát videa"
14
 VideoFormat.Any="Akýkoľvek"
15
 VideoFormat.Unknown="Neznámy (%1)"
16
-AudioOutputMode="Režim audio výstupu"
17
+AudioOutputMode="Režim zvukového výstupu"
18
 AudioOutputMode.Capture="Zachytiť iba zvuk"
19
 AudioOutputMode.DirectSound="Zachytiť zvuk plochy (DirectSound)"
20
 AudioOutputMode.WaveOut="Zachytiť zvuk plochy (WaveOut)"
21
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/sl-SI.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/sl-SI.ini Changed
9
 
1
@@ -1,7 +1,5 @@
2
 VideoCaptureDevice="Naprava za zajemanje videa"
3
 Device="Naprava"
4
-ColorSpace="YUV Barvni Prostor"
5
-ColorRange="YUV Barvni Razpon"
6
 ColorRange.Partial="Delno"
7
 ColorRange.Full="Polno"
8
 ConfigureAudio="Nastavi zvok"
9
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/sr-CS.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/sr-CS.ini Changed
19
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Uređaj za snimanje videa"
3
 Device="Uređaj"
4
-ColorSpace="YUV prostor boja"
5
 ColorSpace.Default="Podrazumevani"
6
-ColorRange="YUV raspon boja"
7
 ColorRange.Partial="Delimično"
8
 ColorRange.Full="Potpuno"
9
 ConfigureAudio="Podesi zvuk"
10
@@ -24,7 +22,7 @@
11
 UseCustomAudioDevice="Koristi specifičan uređaj za zvuk"
12
 AudioDevice="Uređaj za zvuk"
13
 Buffering="Baferovanje"
14
-Buffering.ToolTip="Kada je omogućeno, baferovanje video/zvučnih podatke osigurava tečnu i najprecizniju\nmoguću reprodukciju, ali nosi i posledicu produženog kašnjenja.  Kada je baferovanje u\nupotrebi sa karticom za hvatanje videa, preporučljivo je postaviti karticu i\nprogram na isti frejmrejt da dobijete najbolje rezultate.\n\nKada je onemogućeno, obezbeđuje najmanje kašnjenje reprodukcije, ali uz posledicu nepreciznosti\nreprodukovanog frejma.  Ovo je idealno za kamere koje snimaju lica, ili kada želite\nda koristite programski prozor za pregled da biste igrali na konzoli.\n\nAutomatsko-otkrivanje (podrazumevano) automatski omogućava ovo ako uređaj ima kašnjenje i onemogućava\nako nema kašnjenja."
15
+Buffering.ToolTip="Kada je omogućeno, baferovanje video/zvučnih podatke osigurava tečnu i najprecizniju\nmoguću reprodukciju, ali nosi i posledicu produženog kašnjenja. Kada je baferovanje u\nupotrebi sa karticom za hvatanje videa, preporučljivo je postaviti karticu i\nprogram na isti frejmrejt da dobijete najbolje rezultate.\n\nKada je onemogućeno, obezbeđuje najmanje kašnjenje reprodukcije, ali uz posledicu nepreciznosti\nreprodukovanog frejma. Ovo je idealno za kamere koje snimaju lica, ili kada želite\nda koristite programski prozor za pregled da biste igrali na konzoli.\n\nAutomatsko-otkrivanje (podrazumevano) automatski omogućava ovo ako uređaj ima kašnjenje i onemogućava\nako nema kašnjenja."
16
 Buffering.AutoDetect="Automatsko-otkrivanje"
17
 Buffering.Enable="Omogući"
18
 Buffering.Disable="Onemogući"
19
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/sr-SP.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/sr-SP.ini Changed
19
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Уређај за снимање видеа"
3
 Device="Уређај"
4
-ColorSpace="YUV простор боја"
5
 ColorSpace.Default="Подразумевани"
6
-ColorRange="YUV распон боја"
7
 ColorRange.Partial="Делимично"
8
 ColorRange.Full="Потпуно"
9
 ConfigureAudio="Подеси звук"
10
@@ -24,7 +22,7 @@
11
 UseCustomAudioDevice="Користи специфичан уређај за звук"
12
 AudioDevice="Уређај за звук"
13
 Buffering="Баферовање"
14
-Buffering.ToolTip="Када је омогућено, баферовање видео/звучних података осигурава течну и најпрецизнију\nмогућу репродукцију, али носи и последицу продуженог кашњења. Када је баферовање у\nупотреби са картицом за хватање видеа, препоручљиво је поставити картицу и\nпрограм на исти фрејмрејт да добијете најбоље резултате.\n\nКада је онемогућено, обезбеђује најмање кашњење репродукције, али уз последицу непрецизности\nрепродукованог фрејма.  Ово је идеално за камере које снимају лица, или када желите\nда користите програмски прозор за преглед да бисте играли на конзоли.\n\nАутоматско-откривање (подразумевано) аутоматски омогућава ово ако уређај има кашњење и онемогућава\nако нема кашњења."
15
+Buffering.ToolTip="Када је омогућено, баферовање видео/звучних података осигурава течну и најпрецизнију\nмогућу репродукцију, али носи и последицу продуженог кашњења. Када је баферовање у\nупотреби са картицом за хватање видеа, препоручљиво је поставити картицу и\nпрограм на исти фрејмрејт да добијете најбоље резултате.\n\nКада је онемогућено, обезбеђује најмање кашњење репродукције, али уз последицу непрецизности\nрепродукованог фрејма. Ово је идеално за камере које снимају лица, или када желите\nда користите програмски прозор за преглед да бисте играли на конзоли.\n\nАутоматско-откривање (подразумевано) аутоматски омогућава ово ако уређај има кашњење и онемогућава\nако нема кашњења."
16
 Buffering.AutoDetect="Аутоматско-откривање"
17
 Buffering.Enable="Омогући"
18
 Buffering.Disable="Онемогући"
19
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/sv-SE.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/sv-SE.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Videoinmatningsenhet"
3
 Device="Enhet"
4
-ColorSpace="YUV-färgrymd"
5
+ColorSpace="Färgrymd"
6
 ColorSpace.Default="Standard"
7
-ColorRange="YUV färgområde"
8
+ColorRange="Färgintervall"
9
 ColorRange.Partial="Partiell"
10
 ColorRange.Full="Full"
11
 ConfigureAudio="Konfigurera ljud"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/tl-PH.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/tl-PH.ini Changed
10
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Ang Video Capture Device"
3
 Device="Ang Device"
4
-ColorSpace="Ang Kulay Ispasyo ng YUV"
5
 ColorSpace.Default="Mga Default"
6
-ColorRange="Ang Kulay Hangganan ng YUV"
7
 ColorRange.Partial="Pang-una"
8
 ColorRange.Full="Lahat"
9
 ConfigureAudio="I-configure ang Audio"
10
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/tr-TR.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/tr-TR.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="Video Yakalama Aygıtı"
3
 Device="Aygıt"
4
-ColorSpace="YUV Renk Uzayı"
5
+ColorSpace="Renk Uzayı"
6
 ColorSpace.Default="Varsayılan"
7
-ColorRange="YUV Renk Aralığı"
8
+ColorRange="Renk Aralığı"
9
 ColorRange.Partial="Kısmi"
10
 ColorRange.Full="Tam"
11
 ConfigureAudio="Ses Ayarları"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/uk-UA.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/uk-UA.ini Changed
10
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Відео пристрій"
3
 Device="Пристрій"
4
-ColorSpace="YUV, колірний простір"
5
 ColorSpace.Default="За замовчанням"
6
-ColorRange="YUV, колірний діапазон"
7
 ColorRange.Partial="Частковий"
8
 ColorRange.Full="Повний"
9
 ConfigureAudio="Настроювати Аудіо"
10
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/vi-VN.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/vi-VN.ini Changed
10
 
1
@@ -1,8 +1,6 @@
2
 VideoCaptureDevice="Thiết bị quay video"
3
 Device="Thiết bị"
4
-ColorSpace="Không gian màu YUV"
5
 ColorSpace.Default="Mặc định"
6
-ColorRange="Phạm vi màu YUV"
7
 ColorRange.Partial="Một phần"
8
 ColorRange.Full="Đầy đủ"
9
 ConfigureAudio="Cấu hình âm thanh"
10
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/zh-CN.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/zh-CN.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="视频捕获设备"
3
 Device="设备"
4
-ColorSpace="YUV 颜色空间"
5
+ColorSpace="色彩空间"
6
 ColorSpace.Default="默认"
7
-ColorRange="YUV 颜色范围"
8
+ColorRange="色彩范围"
9
 ColorRange.Partial="局部"
10
 ColorRange.Full="全部"
11
 ConfigureAudio="配置音频"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/data/locale/zh-TW.ini -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/data/locale/zh-TW.ini Changed
12
 
1
@@ -1,8 +1,8 @@
2
 VideoCaptureDevice="視訊擷取裝置"
3
 Device="裝置"
4
-ColorSpace="YUV 色彩空間"
5
+ColorSpace="色彩空間"
6
 ColorSpace.Default="預設"
7
-ColorRange="YUV 顏色範圍"
8
+ColorRange="顏色範圍"
9
 ColorRange.Partial="部分"
10
 ColorRange.Full="全部"
11
 ConfigureAudio="設定音訊"
12
obs-studio-23.1.0.tar.xz/plugins/win-dshow/ffmpeg-decode.c -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/ffmpeg-decode.c Changed
56
 
1
@@ -63,14 +63,15 @@
2
 static inline enum video_format convert_pixel_format(int f)
3
 {
4
    switch (f) {
5
-   case AV_PIX_FMT_NONE:    return VIDEO_FORMAT_NONE;
6
-   case AV_PIX_FMT_YUV420P: return VIDEO_FORMAT_I420;
7
-   case AV_PIX_FMT_NV12:    return VIDEO_FORMAT_NV12;
8
-   case AV_PIX_FMT_YUYV422: return VIDEO_FORMAT_YUY2;
9
-   case AV_PIX_FMT_UYVY422: return VIDEO_FORMAT_UYVY;
10
-   case AV_PIX_FMT_RGBA:    return VIDEO_FORMAT_RGBA;
11
-   case AV_PIX_FMT_BGRA:    return VIDEO_FORMAT_BGRA;
12
-   case AV_PIX_FMT_BGR0:    return VIDEO_FORMAT_BGRX;
13
+   case AV_PIX_FMT_NONE:     return VIDEO_FORMAT_NONE;
14
+   case AV_PIX_FMT_YUV420P:
15
+   case AV_PIX_FMT_YUVJ420P: return VIDEO_FORMAT_I420;
16
+   case AV_PIX_FMT_NV12:     return VIDEO_FORMAT_NV12;
17
+   case AV_PIX_FMT_YUYV422:  return VIDEO_FORMAT_YUY2;
18
+   case AV_PIX_FMT_UYVY422:  return VIDEO_FORMAT_UYVY;
19
+   case AV_PIX_FMT_RGBA:     return VIDEO_FORMAT_RGBA;
20
+   case AV_PIX_FMT_BGRA:     return VIDEO_FORMAT_BGRA;
21
+   case AV_PIX_FMT_BGR0:     return VIDEO_FORMAT_BGRX;
22
    default:;
23
    }
24
 
25
@@ -181,7 +182,7 @@
26
 
27
 bool ffmpeg_decode_video(struct ffmpeg_decode *decode,
28
        uint8_t *data, size_t size, long long *ts,
29
-       struct obs_source_frame *frame,
30
+       struct obs_source_frame2 *frame,
31
        bool *got_output)
32
 {
33
    AVPacket packet = {0};
34
@@ -230,17 +231,14 @@
35
    new_format = convert_pixel_format(decode->frame->format);
36
    if (new_format != frame->format) {
37
        bool success;
38
-       enum video_range_type range;
39
 
40
        frame->format = new_format;
41
-       frame->full_range =
42
-           decode->frame->color_range == AVCOL_RANGE_JPEG;
43
-
44
-       range = frame->full_range ?
45
-           VIDEO_RANGE_FULL : VIDEO_RANGE_PARTIAL;
46
+       frame->range = decode->frame->color_range == AVCOL_RANGE_JPEG
47
+           ? VIDEO_RANGE_FULL
48
+           : VIDEO_RANGE_DEFAULT;
49
 
50
        success = video_format_get_parameters(VIDEO_CS_601,
51
-               range, frame->color_matrix,
52
+               frame->range, frame->color_matrix,
53
                frame->color_range_min, frame->color_range_max);
54
        if (!success) {
55
            blog(LOG_ERROR, "Failed to get video format "
56
obs-studio-23.1.0.tar.xz/plugins/win-dshow/ffmpeg-decode.h -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/ffmpeg-decode.h Changed
10
 
1
@@ -56,7 +56,7 @@
2
 
3
 extern bool ffmpeg_decode_video(struct ffmpeg_decode *decode,
4
        uint8_t *data, size_t size, long long *ts,
5
-       struct obs_source_frame *frame,
6
+       struct obs_source_frame2 *frame,
7
        bool *got_output);
8
 
9
 static inline bool ffmpeg_decode_valid(struct ffmpeg_decode *decode)
10
obs-studio-23.1.0.tar.xz/plugins/win-dshow/win-dshow.cpp -> obs-studio-23.2.0.tar.xz/plugins/win-dshow/win-dshow.cpp Changed
64
 
1
@@ -176,7 +176,7 @@
2
    VideoConfig  videoConfig;
3
    AudioConfig  audioConfig;
4
 
5
-   obs_source_frame frame;
6
+   obs_source_frame2 frame;
7
    obs_source_audio audio;
8
 
9
    WinHandle semaphore;
10
@@ -327,7 +327,7 @@
11
                obs_data_t *settings;
12
                settings = obs_source_get_settings(source);
13
                if (!Activate(settings)) {
14
-                   obs_source_output_video(source,
15
+                   obs_source_output_video2(source,
16
                            nullptr);
17
                }
18
                if (block)
19
@@ -468,7 +468,7 @@
20
 #if LOG_ENCODED_VIDEO_TS
21
        blog(LOG_DEBUG, "video ts: %llu", frame.timestamp);
22
 #endif
23
-       obs_source_output_video(source, &frame);
24
+       obs_source_output_video2(source, &frame);
25
    }
26
 }
27
 
28
@@ -537,7 +537,7 @@
29
        return;
30
    }
31
 
32
-   obs_source_output_video(source, &frame);
33
+   obs_source_output_video2(source, &frame);
34
 
35
    UNUSED_PARAMETER(endTime); /* it's the enndd tiimmes! */
36
    UNUSED_PARAMETER(size);
37
@@ -1040,15 +1040,13 @@
38
        return false;
39
 
40
    enum video_colorspace cs = GetColorSpace(settings);
41
-
42
-   video_range_type range = GetColorRange(settings);
43
-   frame.full_range = range == VIDEO_RANGE_FULL;
44
+   frame.range = GetColorRange(settings);
45
 
46
    if (device.Start() != Result::Success)
47
        return false;
48
 
49
    bool success = video_format_get_parameters(
50
-           cs, range,
51
+           cs, frame.range,
52
            frame.color_matrix,
53
            frame.color_range_min,
54
            frame.color_range_max);
55
@@ -1063,7 +1061,7 @@
56
 inline void DShowInput::Deactivate()
57
 {
58
    device.ResetGraph();
59
-   obs_source_output_video(source, nullptr);
60
+   obs_source_output_video2(source, nullptr);
61
 }
62
 
63
 /* ------------------------------------------------------------------------- */
64
obs-studio-23.1.0.tar.xz/plugins/win-mf/data/locale/da-DK.ini -> obs-studio-23.2.0.tar.xz/plugins/win-mf/data/locale/da-DK.ini Changed
41
 
1
@@ -1,27 +1,27 @@
2
 MFAACEnc="Media Foundation AAC Encoder"
3
-Bitrate="Bithastighed"
4
+Bitrate="Bit-hastighed"
5
 
6
 MF.H264.EncoderName="Media Foundation H264 Encoder"
7
 MF.H264.Encoder="Encodernavn"
8
-MF.H264.LowLatency="Lav svartid (deaktiver frame re-ordering)"
9
+MF.H264.LowLatency="Lav responstid (deaktiver billedomarrangering)"
10
 MF.H264.BFrames="Efterfølgende B-frame antal"
11
-MF.H264.CustomBufsize="Brug tilpasset bufferstørrelse"
12
+MF.H264.CustomBufsize="Benyt tilpasset bufferstørrelse"
13
 MF.H264.BufferSize="Bufferstørrelse"
14
-MF.H264.CustomMaxBitrate="Brug tilpasset max bitrate"
15
-MF.H264.Bitrate="Bitrate"
16
-MF.H264.MaxBitrate="Maks bitrate"
17
-MF.H264.KeyframeIntervalSec="Keyframe interval (sekunder, 0=auto)"
18
-MF.H264.RateControl="Rate kontrol"
19
-MF.H264.CBR="CBR (Konstant bitrate)"
20
-MF.H264.VBR="VBR (Variabel bitrate)"
21
+MF.H264.CustomMaxBitrate="Benyt tilpasset maks. bit-hastighed"
22
+MF.H264.Bitrate="Bit-hastighed"
23
+MF.H264.MaxBitrate="Maks. bit-hastighed"
24
+MF.H264.KeyframeIntervalSec="Keyframe-interval (sek., 0= auto)"
25
+MF.H264.RateControl="Hastighedskontrol"
26
+MF.H264.CBR="CBR (konstant bit-hastighed)"
27
+MF.H264.VBR="VBR (variabel bit-hastighed)"
28
 MF.H264.CQP="CQP (konstant kvalitet)"
29
 MF.H264.MinQP="Minimum QP"
30
-MF.H264.MaxQP="Maximum QP"
31
+MF.H264.MaxQP="Maksimum QP"
32
 MF.H264.QPI="QP I-frame"
33
 MF.H264.QPP="QP P-frame"
34
 MF.H264.QPB="QP B-frame"
35
 MF.H264.Profile="Profil"
36
-MF.H264.Advanced="Advancerede"
37
+MF.H264.Advanced="Advanceret"
38
 
39
 MF.H264.EncoderSWMicrosoft="Microsoft software H.264 encoder"
40
 MF.H264.EncoderHWAMD="AMD Video Coding Engine H.264 Encoder (Media Foundation)"
41
obs-studio-23.1.0.tar.xz/plugins/win-mf/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/win-mf/data/locale/de-DE.ini Changed
40
 
1
@@ -1,16 +1,16 @@
2
-MFAACEnc="Media Foundation AAC Codierer"
3
+MFAACEnc="Media Foundation AAC Kodierer"
4
 Bitrate="Bitrate"
5
 
6
-MF.H264.EncoderName="Media Foundation H264 Codierer"
7
-MF.H264.Encoder="Codierer-Name"
8
-MF.H264.LowLatency="Niedrige Latenz (Deaktiviert Frame Neuanordnung)"
9
-MF.H264.BFrames="Consecutive B-Frame count"
10
-MF.H264.CustomBufsize="Verwende benutzerdefinierte Puffergröße"
11
+MF.H264.EncoderName="Media-Foundation-H264-Kodierer"
12
+MF.H264.Encoder="Kodierername"
13
+MF.H264.LowLatency="Niedrige Latenz (Deaktiviert Frameneuanordnung)"
14
+MF.H264.BFrames="Konsekutive B-Frameanzahl"
15
+MF.H264.CustomBufsize="Benutzerdefinierte Puffergröße verwenden"
16
 MF.H264.BufferSize="Puffergröße"
17
-MF.H264.CustomMaxBitrate="Verwende benutzerdefinierte Max Bitrate"
18
+MF.H264.CustomMaxBitrate="Benutzerdefinierte Max. Bitrate verwenden"
19
 MF.H264.Bitrate="Bitrate"
20
-MF.H264.MaxBitrate="Max Bitrate"
21
-MF.H264.KeyframeIntervalSec="Keyframeintervall (Sekunden, 0=auto)"
22
+MF.H264.MaxBitrate="Max. Bitrate"
23
+MF.H264.KeyframeIntervalSec="Keyframeintervall (Sekunden, 0 – automatisch)"
24
 MF.H264.RateControl="Qualitätsregulierungsmethode"
25
 MF.H264.CBR="CBR (Konstante Bitrate)"
26
 MF.H264.VBR="VBR (Variable Bitrate)"
27
@@ -23,8 +23,8 @@
28
 MF.H264.Profile="Profil"
29
 MF.H264.Advanced="Erweitert"
30
 
31
-MF.H264.EncoderSWMicrosoft="Microsoft-Software-H.264-Codierer"
32
-MF.H264.EncoderHWAMD="AMD-Video-Coding-Engine-H.264-Codierer (Media Foundation)"
33
-MF.H264.EncoderHWIntel="Intel-Quick-Sync-H.264-Codierer (Media Foundation)"
34
-MF.H264.EncoderHWNVIDIA="NVIDIA-NVENC-H.264-Codierer (Media Foundation)"
35
+MF.H264.EncoderSWMicrosoft="Microsoft-Software-H.264-Kodierer"
36
+MF.H264.EncoderHWAMD="AMD-Video-Coding-Engine-H.264-Kodierer (Media Foundation)"
37
+MF.H264.EncoderHWIntel="Intel-Quick-Sync-H.264-Kodierer (Media Foundation)"
38
+MF.H264.EncoderHWNVIDIA="NVIDIA-NVENC-H.264-Kodierer (Media Foundation)"
39
 
40
obs-studio-23.1.0.tar.xz/plugins/win-wasapi/data/locale/de-DE.ini -> obs-studio-23.2.0.tar.xz/plugins/win-wasapi/data/locale/de-DE.ini Changed
10
 
1
@@ -1,6 +1,6 @@
2
-AudioInput="Audio Eingabe Aufnahme"
3
+AudioInput="Audioeingabeaufnahme"
4
 AudioOutput="Audioausgabeaufnahme"
5
 Device="Gerät"
6
 Default="Standard"
7
-UseDeviceTiming="Gerät Timestamps verwenden"
8
+UseDeviceTiming="Geräte-Zeitstempel verwenden"
9
 
10
obs-studio-23.1.0.tar.xz/plugins/win-wasapi/data/locale/ka-GE.ini -> obs-studio-23.2.0.tar.xz/plugins/win-wasapi/data/locale/ka-GE.ini Changed
8
 
1
@@ -1,5 +1,5 @@
2
 AudioInput="შემავალი ხმოვანი სიგნალის ჩაწერა"
3
-AudioOutput="გამომავალი ხმოვანი სიგნალის ჩაწერა"
4
+AudioOutput="გამოტანილი ხმის ჩაწერა"
5
 Device="მოწყობილობა"
6
 Default="ნაგულისხმევი"
7
 UseDeviceTiming="მოწყობილობის დროითი აღნიშვნები"
8
obs-studio-23.1.0.tar.xz/plugins/win-wasapi/data/locale/vi-VN.ini -> obs-studio-23.2.0.tar.xz/plugins/win-wasapi/data/locale/vi-VN.ini Changed
7
 
1
@@ -1,3 +1,5 @@
2
+AudioInput="Thu âm thanh đầu vào"
3
+AudioOutput="Thu âm thanh đầu ra"
4
 Device="Thiết bị"
5
 Default="Mặc định"
6
 
7
obs-studio-23.1.0.tar.xz/plugins/win-wasapi/win-wasapi.cpp -> obs-studio-23.2.0.tar.xz/plugins/win-wasapi/win-wasapi.cpp Changed
58
 
1
@@ -1,6 +1,7 @@
2
 #include "enum-wasapi.hpp"
3
 
4
 #include <obs-module.h>
5
+#include <obs.h>
6
 #include <util/platform.h>
7
 #include <util/windows/HRError.hpp>
8
 #include <util/windows/ComPtr.hpp>
9
@@ -15,9 +16,8 @@
10
 
11
 static void GetWASAPIDefaults(obs_data_t *settings);
12
 
13
-// Fix inconsistent defs of speaker_surround between avutil & wasapi
14
-#define KSAUDIO_SPEAKER_2POINT1 (KSAUDIO_SPEAKER_STEREO|SPEAKER_LOW_FREQUENCY)
15
-#define KSAUDIO_SPEAKER_4POINT1 (KSAUDIO_SPEAKER_QUAD|SPEAKER_LOW_FREQUENCY)
16
+#define OBS_KSAUDIO_SPEAKER_4POINT1 \
17
+       (KSAUDIO_SPEAKER_SURROUND|SPEAKER_LOW_FREQUENCY)
18
 
19
 class WASAPISource {
20
    ComPtr<IMMDevice>           device;
21
@@ -244,7 +244,7 @@
22
    switch (layout) {
23
    case KSAUDIO_SPEAKER_2POINT1:          return SPEAKERS_2POINT1;
24
    case KSAUDIO_SPEAKER_SURROUND:         return SPEAKERS_4POINT0;
25
-   case KSAUDIO_SPEAKER_4POINT1:          return SPEAKERS_4POINT1;
26
+   case OBS_KSAUDIO_SPEAKER_4POINT1:      return SPEAKERS_4POINT1;
27
    case KSAUDIO_SPEAKER_5POINT1_SURROUND: return SPEAKERS_5POINT1;
28
    case KSAUDIO_SPEAKER_7POINT1_SURROUND: return SPEAKERS_7POINT1;
29
    }
30
@@ -366,11 +366,18 @@
31
 
32
    os_set_thread_name("win-wasapi: reconnect thread");
33
 
34
+   CoInitializeEx(0, COINIT_MULTITHREADED);
35
+
36
+   obs_monitoring_type type = obs_source_get_monitoring_type(source->source);
37
+   obs_source_set_monitoring_type(source->source, OBS_MONITORING_TYPE_NONE);
38
+
39
    while (!WaitForSignal(source->stopSignal, RECONNECT_INTERVAL)) {
40
        if (source->TryInitialize())
41
            break;
42
    }
43
 
44
+   obs_source_set_monitoring_type(source->source, type);
45
+
46
    source->reconnectThread = nullptr;
47
    source->reconnecting = false;
48
    return 0;
49
@@ -446,7 +453,7 @@
50
    bool         reconnect = false;
51
 
52
    /* Output devices don't signal, so just make it check every 10 ms */
53
-   DWORD        dur       = source->isInputDevice ? INFINITE : 10;
54
+   DWORD        dur       = source->isInputDevice ? RECONNECT_INTERVAL : 10;
55
 
56
    HANDLE sigs[2] = {
57
        source->receiveSignal,
58
Refresh

No build results available

Refresh

No rpmlint results available

Request History
boombatower's avatar

boombatower created request almost 6 years ago

- Update %post script for new desktop file name.
- Include appdata in files list.
- Include obs-ffmpeg-mux in files list.

- Update to version 23.2.0:
* libobs: Update version to 23.2.0
* Update translations from Crowdin
* UI: Make two-auth message a bit friendlier
* UI: Use better link for Twitch two-factor warning
* win-capture: Add discord to game capture blacklist
* UI: Fix transition A/B labels on macOS/Linux
* UI: Add two-factor authentication warning for Twitch
* UI: Add ability to use rich text in warning dialogs
* UI: Fix output icon size. Add padding to settings list items
* UI/updater: Update some text for clarity
* UI/updater: Add marquee progress bar for existing file check
* UI/updater: Add manifest file for DPI awareness
* UI: Revert Dark theme Scenes font change
* CI: Fix travis test on OSX
* CI: Build CEF with OS X 10.11 target
* UI: Ensure frontend event is removed on object deletion
* win-wasapi: Speaker enum fixes
* UI: Fix "Toggle Preview" hotkeys duplicating
* GitHub: Add funding buttons
* libobs-d3d11: Bad indices in log output
* libobs: Pair encoders only when output actually starts
* UI: Fix issue where rec time left would show negative time
* libobs: Remove unreachable YUV decode paths
* obs-filters: Remove unused key_rgb shader variable
* obs-filters: Remove unused variable for color key


boombatower's avatar

boombatower accepted request almost 6 years ago

ok