Changes of Revision 56

obs-studio.changes Changed
x
 
1
@@ -1,4 +1,65 @@
2
 -------------------------------------------------------------------
3
+Sat May 12 23:59:07 UTC 2018 - jimmy@boombatower.com
4
+
5
+- Update to version 21.1.2:
6
+  * libobs: Update version to 21.1.2
7
+  * win-capture: Update D3D9 signature for Win10 April 2018 Update
8
+  * CI: Check out OSX branch of obs-browser
9
+  * cmake: Include windows style DLL when copying Qt files
10
+  * obs-browser: Update submodule to latest version
11
+  * UI/updater: Delete visual studio runtimes after execution
12
+  * deps/obs-scripting: Prevent python unload more than once
13
+  * obs-browser: Update submodule to latest version
14
+  * deps/obs-scripting: Don't allow unloading more than once
15
+  * enc-amf: Version 2.3.3
16
+  * libobs: Update version to 21.1.0
17
+  * deps/obs-scripting: Add obs_source_enum_filters
18
+  * rtmp-services: Update ingest list for Aparat.com
19
+  * mac-capture: Fix bug where audio device couldn't be changed
20
+  * UI: Add Help -> Crash Reports submenu
21
+  * UI: Add subdir param to OBSBasic::UploadLog
22
+  * UI: Specify whether crash/profiler/logs have prefix
23
+  * UI: Specify subdir/variable to save to for get_last_log
24
+  * rtmp-services: Update ingest list for Nood.tv
25
+  * UI: Replace gist with hastebin for log uploads
26
+  * UI/updater: Return false on integrity check failure
27
+  * UI/updater: Don't update modules of opposite arch
28
+  * UI/updater: Add automatic check/install for VS2017 redist
29
+  * UI/updater: Fix a few type size mismatch warnings
30
+  * UI/updater: Fix resource compiling bug
31
+  * UI/updater: Fix bug with restrict keyword on VS2017
32
+  * UI/updater: Set license of windows update module to ISC
33
+  * UI/updater: Rewrite function
34
+  * Update translations from Crowdin
35
+  * UI: Refresh multiview projector menu per click
36
+  * cmake: Remove extraneous checks
37
+  * UI: Refresh system tray projector menu per click
38
+  * UI: Remove unnecessary casts
39
+  * Update README.rst
40
+  * libobs-opengl: Request at least 8 bits for alpha
41
+  * linux-capture: Request at least 8 bits for alpha
42
+  * UI: Remove check for updates on Linux
43
+  * cmake, libobs, win-capture: Fix VS2017 warnings
44
+  * cmake: Add .vs directories to .gitignore
45
+  * deps/obs-scripting: Fix tick function arg number
46
+  * obs-ffmpeg: Fix locale typo
47
+  * rtmp-services: Update ingest list for Restream.io
48
+  * deps/obs-scripting: Expose obs video info to swig
49
+  * image-source: Fade to transparency if slideshow list is cleared
50
+  * rtmp-services: Add Vimeo to services list
51
+  * libobs: Fix property text typo
52
+  * libobs/util: Fix blank config file values being ignored
53
+  * obs-ffmpeg: Use FFmpeg's "fast" AAC encoder by default
54
+  * obs-ffmpeg: Remove cutoff hack for AAC encoder
55
+  * win-mf: Deprecate plugin
56
+  * win-capture/graphics-hook: Fix memory offset calculation
57
+  * UI: Remove duplicate line
58
+  * obs-output: Update ftl-sdk version and ftl logging values
59
+  * enc-amf: Version 2.3.2
60
+  * UI: Allow nested docks
61
+  * UI: Don't draw bounding boxes for sources without video flag
62
+
63
+-------------------------------------------------------------------
64
 Wed Feb 21 20:31:20 UTC 2018 - jimmy@boombatower.com
65
 
66
 - Update to version 21.0.3:
67
obs-studio.spec Changed
8
 
1
@@ -1,5 +1,5 @@
2
 Name:           obs-studio
3
-Version:        21.0.3
4
+Version:        21.1.2
5
 Release:        0
6
 Summary:        A recording/broadcasting program
7
 Group:          Productivity/Multimedia/Video/Editors and Convertors
8
_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/21.0.3</param>
6
+    <param name="revision">refs/tags/21.1.2</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">90692c9791ed33648b40916fa353aa3f2df35f2f</param>
6
+    <param name="changesrevision">8718b33875695dc66eec701816d62158d01ac71e</param>
7
   </service>
8
 </servicedata>
9
obs-studio-21.0.3.tar.xz/plugins/enc-amf/#Resources/HIDDEN_PARAMETERS.md Deleted
201
 
1
@@ -1,1330 +0,0 @@
2
-For an unknown reason, there are hidden parameters in the Runtime that can be set.
3
-
4
-## AVC Properties
5
-### Static
6
-* FrameSize
7
-* FrameRate
8
-* ExtraData (Read-Only)
9
-* Usage
10
-* Profile<br/>Two new profiles are in the runtime, Constrained Base and Constrained High.
11
-* Profile Level
12
-* MaxOfLTRFrames
13
-* ScanType
14
-* QualityPreset
15
-
16
-### Dynamic
17
-* RateControlMethod
18
-* TargetBitrate
19
-* PeakBitrate
20
-* RateControlSkipFrameEnable
21
-* MinQP
22
-* MaxQP
23
-* QPI
24
-* QPP
25
-* QPB
26
-* VBVBufferSize
27
-* VBVBufferFullness
28
-* EnforceHRD
29
-* MaxAUSize
30
-* FillerDataEnable
31
-* BPicturesDeltaQP
32
-* ReferenceBPicturesDeltaQP
33
-* HeaderInsertionSpacing
34
-* IDRPeriod
35
-* DeBlockingFilter
36
-* IntraRefreshMBsNumberPerSlot
37
-* SlicesPerFrame
38
-* BPicturesPattern
39
-* BReferenceEnable
40
-* HalfPixel
41
-* QuarterPixel
42
-
43
-### Unknown / New
44
-
45
-* **QualityEnhancementMode**<br/>So far always 0.
46
-* **MaxNumRefFrames**<br/>Shouldn't this be a Capability instead? Could perhaps be used to control B-Pictures more.
47
-* **MaxMBPerSec**<br/>Unknown value.
48
-* **InstanceID**
49
-* **EnableVBAQ**<br/>Unknown meaning.
50
-* **RateControlPreanalysisEnable**<br/>Is this Two-Pass encoding?
51
-* **GOPSize**<br/>Technically ignored, but still there in code.
52
-* **AspectRatio**
53
-* **NominalRange**
54
-* **IntraRefreshNumOfStripes**<br/>New, was not here before.
55
-* **SliceMode**<br/>New, was not here before.
56
-* **MaxSliceSize**<br/>New, was not here before.
57
-* **LowLatencyInternal**
58
-* **CommonLowLatencyInternal**
59
-* **SliceControlMode**
60
-* **SliceControlSize**
61
-* **CABACEnable**<br/>Not yet publicly available, but 16.10.3 always uses it anyway.
62
-* **UniqueInstance**
63
-* **EncoderMaxInstances**
64
-* **MultiInstanceMode**
65
-* **MultiInstanceCurrentQueue**
66
-* **WaitForTask**
67
-
68
-23:23:47.388: [AMF Encoder]  [CodecId] CodecId (Type: Int64, Index 0)
69
-23:23:47.389: [AMF Encoder]   Content Type: 0
70
-23:23:47.389: [AMF Encoder]   Access: RW
71
-23:23:47.389: [AMF Encoder]   Values:
72
-23:23:47.389: [AMF Encoder]     Current: 5
73
-23:23:47.389: [AMF Encoder]     Default: 5
74
-23:23:47.389: [AMF Encoder]     Minimum: Empty
75
-23:23:47.389: [AMF Encoder]     Maximum: Empty
76
-23:23:47.389: [AMF Encoder]   Enumeration: 
77
-23:23:47.391: [AMF Encoder]     H264 (5)
78
-23:23:47.391: [AMF Encoder]     UNKNOWN (0)
79
-23:23:47.391: [AMF Encoder]     H264SVC (8)
80
-23:23:47.391: [AMF Encoder]     UNKNOWN (0)
81
-23:23:47.392: [AMF Encoder]  [EngineType] EngineType (Type: Int64, Index 1)
82
-23:23:47.392: [AMF Encoder]   Content Type: 0
83
-23:23:47.392: [AMF Encoder]   Access: RW
84
-23:23:47.392: [AMF Encoder]   Values:
85
-23:23:47.393: [AMF Encoder]     Current: 0
86
-23:23:47.393: [AMF Encoder]     Default: 0
87
-23:23:47.393: [AMF Encoder]     Minimum: Empty
88
-23:23:47.393: [AMF Encoder]     Maximum: Empty
89
-23:23:47.393: [AMF Encoder]   Enumeration: 
90
-23:23:47.393: [AMF Encoder]     Auto (0)
91
-23:23:47.394: [AMF Encoder]     DX9 (1)
92
-23:23:47.394: [AMF Encoder]     DX11 (2)
93
-23:23:47.395: [AMF Encoder]     XVBA (3)
94
-23:23:47.395: [AMF Encoder]  [Usage] Usage (Type: Int64, Index 2)
95
-23:23:47.395: [AMF Encoder]   Content Type: 0
96
-23:23:47.395: [AMF Encoder]   Access: RW
97
-23:23:47.395: [AMF Encoder]   Values:
98
-23:23:47.395: [AMF Encoder]     Current: 0
99
-23:23:47.396: [AMF Encoder]     Default: 0
100
-23:23:47.396: [AMF Encoder]     Minimum: Empty
101
-23:23:47.396: [AMF Encoder]     Maximum: Empty
102
-23:23:47.397: [AMF Encoder]   Enumeration: 
103
-23:23:47.397: [AMF Encoder]     Transcoding (0)
104
-23:23:47.397: [AMF Encoder]     Ultra Low Latency (1)
105
-23:23:47.397: [AMF Encoder]     Low Latency (2)
106
-23:23:47.397: [AMF Encoder]     Webcam (3)
107
-23:23:47.398: [AMF Encoder]  [FrameSize] Width (Type: Size, Index 3)
108
-23:23:47.398: [AMF Encoder]   Content Type: 0
109
-23:23:47.398: [AMF Encoder]   Access: RWX
110
-23:23:47.398: [AMF Encoder]   Values:
111
-23:23:47.398: [AMF Encoder]     Current: 1920x1080
112
-23:23:47.398: [AMF Encoder]     Default: 1920x1080
113
-23:23:47.398: [AMF Encoder]     Minimum: 64x64
114
-23:23:47.398: [AMF Encoder]     Maximum: 4096x2160
115
-23:23:47.399: [AMF Encoder]  [Profile] Profile (Type: Int64, Index 4)
116
-23:23:47.399: [AMF Encoder]   Content Type: 0
117
-23:23:47.399: [AMF Encoder]   Access: RWX
118
-23:23:47.400: [AMF Encoder]   Values:
119
-23:23:47.400: [AMF Encoder]     Current: 77
120
-23:23:47.400: [AMF Encoder]     Default: 77
121
-23:23:47.401: [AMF Encoder]     Minimum: Empty
122
-23:23:47.401: [AMF Encoder]     Maximum: Empty
123
-23:23:47.401: [AMF Encoder]   Enumeration: 
124
-23:23:47.401: [AMF Encoder]     Contrained Base (256)
125
-23:23:47.401: [AMF Encoder]     Baseline (66)
126
-23:23:47.401: [AMF Encoder]     Main (77)
127
-23:23:47.401: [AMF Encoder]     Contrained High (257)
128
-23:23:47.402: [AMF Encoder]     High (100)
129
-23:23:47.402: [AMF Encoder]  [ProfileLevel] Profile-Level (Type: Int64, Index 5)
130
-23:23:47.402: [AMF Encoder]   Content Type: 0
131
-23:23:47.402: [AMF Encoder]   Access: RW
132
-23:23:47.402: [AMF Encoder]   Values:
133
-23:23:47.402: [AMF Encoder]     Current: 42
134
-23:23:47.402: [AMF Encoder]     Default: 42
135
-23:23:47.402: [AMF Encoder]     Minimum: Empty
136
-23:23:47.403: [AMF Encoder]     Maximum: Empty
137
-23:23:47.403: [AMF Encoder]   Enumeration: 
138
-23:23:47.403: [AMF Encoder]     1 (10)
139
-23:23:47.403: [AMF Encoder]     1.1 (11)
140
-23:23:47.403: [AMF Encoder]     1.2 (12)
141
-23:23:47.403: [AMF Encoder]     1.3 (13)
142
-23:23:47.404: [AMF Encoder]     2 (20)
143
-23:23:47.404: [AMF Encoder]     2.1 (21)
144
-23:23:47.404: [AMF Encoder]     2.2 (22)
145
-23:23:47.404: [AMF Encoder]     3 (30)
146
-23:23:47.404: [AMF Encoder]     3.1 (31)
147
-23:23:47.404: [AMF Encoder]     3.2 (32)
148
-23:23:47.404: [AMF Encoder]     4 (40)
149
-23:23:47.404: [AMF Encoder]     4.1 (41)
150
-23:23:47.405: [AMF Encoder]     4.2 (42)
151
-23:23:47.405: [AMF Encoder]     5.0 (50)
152
-23:23:47.405: [AMF Encoder]     5.1 (51)
153
-23:23:47.405: [AMF Encoder]     5.2 (52)
154
-23:23:47.405: [AMF Encoder]  [QualityEnhancementMode] Quality Enhancement Mode (Type: Int64, Index 6)
155
-23:23:47.405: [AMF Encoder]   Content Type: 0
156
-23:23:47.405: [AMF Encoder]   Access: 
157
-23:23:47.405: [AMF Encoder]   Values:
158
-23:23:47.406: [AMF Encoder]     Current: Empty
159
-23:23:47.406: [AMF Encoder]     Default: 0
160
-23:23:47.406: [AMF Encoder]     Minimum: Empty
161
-23:23:47.406: [AMF Encoder]     Maximum: Empty
162
-23:23:47.409: [AMF Encoder]   Enumeration: 
163
-23:23:47.410: [AMF Encoder]     Disable (0)
164
-23:23:47.410: [AMF Encoder]     CGS (1)
165
-23:23:47.410: [AMF Encoder]     CGS Rewrite (2)
166
-23:23:47.411: [AMF Encoder]     MGS (3)
167
-23:23:47.411: [AMF Encoder]  [MaxOfLTRFrames] Max Of LTR (Type: Int64, Index 7)
168
-23:23:47.411: [AMF Encoder]   Content Type: 0
169
-23:23:47.412: [AMF Encoder]   Access: RWX
170
-23:23:47.412: [AMF Encoder]   Values:
171
-23:23:47.412: [AMF Encoder]     Current: 0
172
-23:23:47.412: [AMF Encoder]     Default: 0
173
-23:23:47.413: [AMF Encoder]     Minimum: 0
174
-23:23:47.414: [AMF Encoder]     Maximum: 2
175
-23:23:47.415: [AMF Encoder]  [MaxNumRefFrames] MaxNumRefFrames (Type: Int64, Index 8)
176
-23:23:47.415: [AMF Encoder]   Content Type: 0
177
-23:23:47.416: [AMF Encoder]   Access: RWX
178
-23:23:47.416: [AMF Encoder]   Values:
179
-23:23:47.417: [AMF Encoder]     Current: 4
180
-23:23:47.418: [AMF Encoder]     Default: 4
181
-23:23:47.418: [AMF Encoder]     Minimum: 1
182
-23:23:47.419: [AMF Encoder]     Maximum: 16
183
-23:23:47.419: [AMF Encoder]  [ConstraintSetFlags] ConstraintSetFlags (Type: Int64, Index 9)
184
-23:23:47.419: [AMF Encoder]   Content Type: 0
185
-23:23:47.419: [AMF Encoder]   Access: RW
186
-23:23:47.420: [AMF Encoder]   Values:
187
-23:23:47.420: [AMF Encoder]     Current: 0
188
-23:23:47.420: [AMF Encoder]     Default: 0
189
-23:23:47.420: [AMF Encoder]     Minimum: 0
190
-23:23:47.420: [AMF Encoder]     Maximum: 255
191
-23:23:47.420: [AMF Encoder]  [MaxMBPerSec] MaxMBPerSec (Type: Int64, Index 10)
192
-23:23:47.421: [AMF Encoder]   Content Type: 0
193
-23:23:47.421: [AMF Encoder]   Access: R
194
-23:23:47.421: [AMF Encoder]   Values:
195
-23:23:47.421: [AMF Encoder]     Current: 638704
196
-23:23:47.421: [AMF Encoder]     Default: 638704
197
-23:23:47.421: [AMF Encoder]     Minimum: 0
198
-23:23:47.421: [AMF Encoder]     Maximum: 2147483647
199
-23:23:47.421: [AMF Encoder]  [InstanceID] InstanceID (Type: Int64, Index 11)
200
-23:23:47.421: [AMF Encoder]   Content Type: 0
201
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/detect-amf Deleted
2
 
1
-(directory)
2
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/detect-amf/CMakeLists.txt Deleted
44
 
1
@@ -1,42 +0,0 @@
2
-project(detect-amf)
3
-
4
-set(detect-amf_HEADERS
5
-   )
6
-
7
-set(detect-amf_SOURCES
8
-   ../amf.cpp
9
-   ../amf-capabilities.cpp
10
-   ../amf-encoder.cpp
11
-   ../amf-encoder-h264.cpp
12
-   ../amf-encoder-h265.cpp
13
-   ../api-base.cpp
14
-   ../api-d3d9.cpp
15
-   ../api-d3d11.cpp
16
-   ../utility.cpp
17
-   detect-amf-support.cpp
18
-   )
19
-
20
-if(MSVC)
21
-   add_compile_options("$<$<CONFIG:RelWithDebInfo>:/MT>")
22
-endif()
23
-
24
-add_definitions(-DPIPED_PROCESS)
25
-
26
-add_executable(detect-amf
27
-   ${detect-amf_SOURCES}
28
-   ${detect-amf_HEADERS})
29
-
30
-target_link_libraries(detect-amf
31
-   ${enc-amf_LIBRARIES})
32
-
33
-if(CMAKE_SIZEOF_VOID_P EQUAL 8)
34
-   set(_output_suffix "64")
35
-else()
36
-   set(_output_suffix "32")
37
-endif()
38
-
39
-set_target_properties(detect-amf
40
-   PROPERTIES
41
-       OUTPUT_NAME "detect-amf${_output_suffix}")
42
-
43
-install_obs_datatarget(detect-amf "obs-plugins/enc-amf")
44
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/detect-amf/detect-amf-support.cpp Deleted
47
 
1
@@ -1,45 +0,0 @@
2
-/*
3
- * Piped program that detects AMF support to prevent startup crashes
4
- * Copyright (C) 2018 Hugh Bailey
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License as published by
8
- * the Free Software Foundation; either version 2 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * This program is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
- * GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU General Public License
17
- * along with this program; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
19
- */
20
-
21
-#include "plugin.h"
22
-#include "api-base.h"
23
-#include "amf.h"
24
-#include "amf-capabilities.h"
25
-#include <sstream>
26
-
27
-int main(void) {
28
-   SetErrorMode(SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS);
29
-
30
-   try {
31
-       // AMF
32
-       Plugin::AMD::AMF::Initialize();
33
-
34
-       // Initialize Graphics APIs
35
-       Plugin::API::InitializeAPIs();
36
-
37
-       Plugin::AMD::CapabilityManager::Initialize();
38
-   } catch (...) {
39
-       return 2;
40
-   }
41
-
42
-   Plugin::AMD::CapabilityManager::Finalize();
43
-   Plugin::API::FinalizeAPIs();
44
-   Plugin::AMD::AMF::Finalize();
45
-   return 3;
46
-}
47
obs-studio-21.0.3.tar.xz/.gitmodules -> obs-studio-21.1.2.tar.xz/.gitmodules Changed
10
 
1
@@ -6,7 +6,7 @@
2
    url = https://github.com/palana/Syphon-Framework.git
3
 [submodule "plugins/enc-amf"]
4
    path = plugins/enc-amf
5
-   url = https://github.com/jp9000/obs-studio_amf-encoder-plugin.git
6
+   url = https://github.com/Xaymar/obs-studio_amf-encoder-plugin.git
7
 [submodule "plugins/obs-browser"]
8
    path = plugins/obs-browser
9
    url = https://github.com/kc5nra/obs-browser.git
10
obs-studio-21.0.3.tar.xz/CI/before-script-osx.sh -> obs-studio-21.1.2.tar.xz/CI/before-script-osx.sh Changed
12
 
1
@@ -1,6 +1,10 @@
2
 # Make sure ccache is found
3
 export PATH=/usr/local/opt/ccache/libexec:$PATH
4
 
5
+cd ./plugins/obs-browser
6
+git checkout origin/osx
7
+cd -
8
+
9
 mkdir build
10
 cd build
11
 cmake -DENABLE_SPARKLE_UPDATER=ON \
12
obs-studio-21.0.3.tar.xz/CMakeLists.txt -> obs-studio-21.1.2.tar.xz/CMakeLists.txt Changed
10
 
1
@@ -60,7 +60,7 @@
2
    endif()
3
 
4
    # Disable pointless constant condition warnings
5
-   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4127 /wd4201")
6
+   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4127 /wd4201 /wd4456 /wd4457 /wd4458 /wd4459 /wd4595")
7
 endif()
8
 
9
 if(WIN32)
10
obs-studio-21.0.3.tar.xz/README.rst -> obs-studio-21.1.2.tar.xz/README.rst Changed
24
 
1
@@ -15,11 +15,11 @@
2
 
3
  - Website: https://obsproject.com
4
 
5
- - Help/Documentation/Guides: https://github.com/jp9000/obs-studio/wiki
6
+ - Help/Documentation/Guides: https://github.com/obsproject/obs-studio/wiki
7
 
8
  - Forums: https://obsproject.com/forum/
9
 
10
- - Build Instructions: https://github.com/jp9000/obs-studio/wiki/Install-Instructions
11
+ - Build Instructions: https://github.com/obsproject/obs-studio/wiki/Install-Instructions
12
 
13
  - Developer/API Documentation: https://obsproject.com/docs
14
 
15
@@ -33,7 +33,7 @@
16
 
17
  - If you wish to contribute code to the project, please make sure to
18
    read the coding and commit guidelines:
19
-   https://github.com/jp9000/obs-studio/blob/master/CONTRIBUTING.rst
20
+   https://github.com/obsproject/obs-studio/blob/master/CONTRIBUTING.rst
21
 
22
  - Developer/API documentation can be found here:
23
    https://obsproject.com/docs
24
obs-studio-21.0.3.tar.xz/UI/data/locale.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale.ini Changed
13
 
1
@@ -139,3 +139,11 @@
2
 [nn-NO]
3
 Name=Norsk Nynorsk
4
 
5
+[fil-PH]
6
+Name=Wikang Filipino
7
+
8
+[sq-AL]
9
+Name=gjuha shqipe
10
+
11
+[tl-PH]
12
+Name=Wikang Tagalog
13
obs-studio-21.0.3.tar.xz/UI/data/locale/bg-BG.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/bg-BG.ini Changed
131
 
1
@@ -546,12 +546,27 @@
2
 Basic.Settings.Output.Simple.Warn.Lossless="Предупреждение: Оригиналното качество създава огромни файлове! Запис настроен на Оригинално качество може да заема над 7GB дисково пространство на минута, ако резолюцията и кадрите са високи. Не се препоръчва ако не разполагате със много пространство."
3
 Basic.Settings.Output.Simple.Warn.Lossless.Msg="Сигурни ли сте че искате да ползвате оригиналното качество на записа?"
4
 Basic.Settings.Output.Simple.Warn.Lossless.Title="Предупреждение при ползване на Оригинално Качество!"
5
+Basic.Settings.Output.Simple.Warn.MultipleQSV="Предупреждение: Не можете да ползвате различни и отделни QSV енкодери докато предавате и записвате. Ако искате да предавате и да записвате едновременно, моля променете един от енкодерите."
6
+Basic.Settings.Output.Simple.Encoder.Software="Програмно (x264)"
7
+Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Хардуеър (QSV)"
8
+Basic.Settings.Output.Simple.Encoder.Hardware.AMD="Хардуеър (AMD)"
9
+Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Хардуеър (NVENC)"
10
+Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Програмно (x264 ниска употреба на процесора, увеличава размера на записа)"
11
 Basic.Settings.Output.VideoBitrate="Видео битрейт"
12
 Basic.Settings.Output.AudioBitrate="Аудио битрейт"
13
 Basic.Settings.Output.Reconnect="Автоматично повторно свързване"
14
 Basic.Settings.Output.RetryDelay="Отлагане на повторно свързване (секунди)"
15
 Basic.Settings.Output.MaxRetries="Максимален брой повторни опити"
16
-
17
+Basic.Settings.Output.Advanced="Включи Допълнителни Настройки за Енкодера"
18
+Basic.Settings.Output.EncoderPreset="Настройка на Енкодера (по-висока = по-малко процесор)"
19
+Basic.Settings.Output.CustomEncoderSettings="Допълнителни Настройки на Енкодера"
20
+Basic.Settings.Output.CustomMuxerSettings="Допълнителни Настройки при Смесване"
21
+Basic.Settings.Output.NoSpaceFileName="Създавай името на записа без Празни Места"
22
+
23
+Basic.Settings.Output.Adv.Rescale="Умащабяване на Изхода"
24
+Basic.Settings.Output.Adv.AudioTrack="Звукова Писта"
25
+Basic.Settings.Output.Adv.Streaming="Предаване"
26
+Basic.Settings.Output.Adv.ApplyServiceSettings="Ползвай настройките на енкодера от платформата"
27
 Basic.Settings.Output.Adv.Audio.Track1="Писта 1"
28
 Basic.Settings.Output.Adv.Audio.Track2="Писта 2"
29
 Basic.Settings.Output.Adv.Audio.Track3="Писта 3"
30
@@ -588,7 +603,9 @@
31
 Basic.Settings.Output.Adv.FFmpeg.GOPSize="Интервал между ключови кадри (кадри)"
32
 Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat="Покажи всички кодеци (дори и ако са несъвместими)"
33
 
34
+FilenameFormatting.completer="%ХХГГ-%ММ-%ДД %чч-%мм-%сс\n%ГГ-%ММ-%ДД %чч-%мм-%сс\n%Г-%м-%д %Ч-%М-%С\n%г-%м-%д %Ч-%М-%С\n%а %Г-%м-%д %Ч-%М-%С\n%А %Г-%м-%д %Ч-%М-%С\n%Г-%б-%д %Ч-%М-%С\n%Г-%Б-%д %Ч-%М-%С\n%Г- %м-%д %И-%М-%С-%п\n%Г-%м-%д %Ч-%М-%С-%з\n%Г-%м-%д %Ч-%М-%С-%ст"
35
 
36
+FilenameFormatting.TT="%CCYY   Година, четири цифри\n%YY       Година, последни две цифри (00-99)\n%MM     Месецът като цяло число (01-12)\n%DD        Ден от месеца, със добавена нула (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     Ден от месеца, със добавена нула (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 разминаване със UTC или времева зона\n     име или съкращение\n%Z      Име на Времевата зона или съкращение\n"
37
 
38
 Basic.Settings.Video="Видео"
39
 Basic.Settings.Video.Adapter="Видео адаптер:"
40
@@ -614,6 +631,10 @@
41
 Basic.Settings.Audio="Аудио"
42
 Basic.Settings.Audio.SampleRate="Честота на дискретизацията"
43
 Basic.Settings.Audio.Channels="Канали"
44
+Basic.Settings.Audio.MeterDecayRate="Брой за Звуков Разпад"
45
+Basic.Settings.Audio.MeterDecayRate.Fast="Бързо"
46
+Basic.Settings.Audio.MeterDecayRate.Medium="Средно (ТИП I PPM)"
47
+Basic.Settings.Audio.MeterDecayRate.Slow="Бавно (Type II PPM)"
48
 Basic.Settings.Audio.MultiChannelWarning.Enabled="ПРЕДУПРЕЖДЕНИЕ: Включен е Surround sound."
49
 Basic.Settings.Audio.MultichannelWarning="Ако предавате, проверете дали вашата услуга за стрийминг поддържа едновременно приемане на съраунд звук и възпроизвеждане на съраунд звук. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast са примери, при които съраунд звукът е напълно поддържан. Въпреки че, Facebook Live и YouTube Live подържат и приемат съраунд, Facebook Live пемиксира към стерео звук, а YouTube Live възпроизвежда само два канала.\n\nЗвуковите филтъри на OBS подържат съраунд звук, въпреки това VST поддръжката не е гарантирана."
50
 Basic.Settings.Audio.MultichannelWarning.Title="Включи записването на съраунд звук?"
51
@@ -635,6 +656,7 @@
52
 Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Над Нормата"
53
 Basic.Settings.Advanced.General.ProcessPriority.Normal="Нормален"
54
 Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Под Нормата"
55
+Basic.Settings.Advanced.General.ProcessPriority.Idle="Свободен"
56
 Basic.Settings.Advanced.FormatWarning="Предупреждение: Цветните формати освен NV12 се ползват главно при записи и не са препоръчани при предаване. Предаването може да упражни завишено ползване на Процесора поради прекодиране на форматите."
57
 Basic.Settings.Advanced.Audio.BufferingTime="Време за буфериране на звук"
58
 Basic.Settings.Advanced.Video.ColorFormat="Формат на цвета"
59
@@ -644,22 +666,37 @@
60
 Basic.Settings.Advanced.Video.ColorRange.Full="Пълен"
61
 Basic.Settings.Advanced.Audio.MonitoringDevice="Устройство за Звуково възпроизвеждане"
62
 Basic.Settings.Advanced.Audio.MonitoringDevice.Default="По подразбиране"
63
+Basic.Settings.Advanced.Audio.DisableAudioDucking="Изключи намалянето на звука при разговори"
64
+Basic.Settings.Advanced.StreamDelay="Забавяне на Предаването"
65
 Basic.Settings.Advanced.StreamDelay.Duration="Продължителност (секунди)"
66
 Basic.Settings.Advanced.StreamDelay.Preserve="Запази точката на прекъсване (увеличете забавянето) при повторно свързване"
67
+Basic.Settings.Advanced.StreamDelay.MemoryUsage="Приблизително използвана памет: %1 MB"
68
 Basic.Settings.Advanced.Network="Мрежа"
69
+Basic.Settings.Advanced.Network.BindToIP="Свържи към IP"
70
+Basic.Settings.Advanced.Network.EnableNewSocketLoop="Позволи нов мрежов код"
71
+Basic.Settings.Advanced.Network.EnableLowLatencyMode="Режим на ниска латенция"
72
 
73
 Basic.AdvAudio="Допълнителни Звукови Характеристики"
74
 Basic.AdvAudio.Name="Име"
75
 Basic.AdvAudio.Volume="Сила на звука (%)"
76
 Basic.AdvAudio.Mono="Премиксирай към Mono звук"
77
+Basic.AdvAudio.Panning="Накланяне"
78
+Basic.AdvAudio.SyncOffset="Забавяне (мс)"
79
+Basic.AdvAudio.Monitoring="Звуков Мониториниг "
80
 Basic.AdvAudio.Monitoring.None="Мониторът Изключен"
81
+Basic.AdvAudio.Monitoring.MonitorOnly="Само на Монитора (заглуши изхода)"
82
+Basic.AdvAudio.Monitoring.Both="Монитор и Изход"
83
 Basic.AdvAudio.AudioTracks="Писти"
84
 
85
 Basic.Settings.Hotkeys="Горещи клавиши"
86
+Basic.Settings.Hotkeys.Pair="Клавишни комбинации ползвани от `%1` действат като ключ"
87
 
88
 Basic.Hotkeys.SelectScene="Премини към сцена"
89
 
90
+Basic.SystemTray.Show="Покажи"
91
+Basic.SystemTray.Hide="Скрий"
92
 
93
+Basic.SystemTray.Message.Reconnecting="Връзката Загубена. Свързване..."
94
 
95
 Hotkeys.Insert="Вмъкни"
96
 Hotkeys.Delete="Изтрий"
97
@@ -668,9 +705,33 @@
98
 Hotkeys.PageUp="Страница нагоре"
99
 Hotkeys.PageDown="Страница надолу"
100
 Hotkeys.NumLock="Num Lock"
101
+Hotkeys.ScrollLock="Скрол Лок"
102
+Hotkeys.CapsLock="Капс Лок"
103
+Hotkeys.Backspace="Връщане"
104
+Hotkeys.Tab="Таб"
105
+Hotkeys.Print="Принт"
106
+Hotkeys.Pause="Пауза"
107
+Hotkeys.Left="Ляво"
108
+Hotkeys.Right="Дясно"
109
+Hotkeys.Up="Горе"
110
+Hotkeys.Down="Долу"
111
+Hotkeys.Windows="Windows"
112
+Hotkeys.Super="Супер"
113
+Hotkeys.Menu="Меню"
114
+Hotkeys.Space="Спейс"
115
+Hotkeys.NumpadNum="Нумпад %1"
116
+Hotkeys.NumpadMultiply="Нумпад Умножи"
117
+Hotkeys.NumpadDivide="Нумпад Раздели"
118
 Hotkeys.NumpadAdd="Цифрова клавиатура +"
119
 Hotkeys.NumpadSubtract="Цифрова клавиатура -"
120
 Hotkeys.NumpadDecimal="Цифрова клавиатура ."
121
+Hotkeys.AppleKeypadNum="%1 (Клавиатура)"
122
+Hotkeys.AppleKeypadMultiply="* (Клавиатура)"
123
+Hotkeys.AppleKeypadDivide="/ (Клавиатура)"
124
+Hotkeys.AppleKeypadAdd="+ (Клавиатура)"
125
+Hotkeys.AppleKeypadSubtract="- (Клавиатура)"
126
+Hotkeys.AppleKeypadDecimal=". (Клавиатура)"
127
+Hotkeys.AppleKeypadEqual="= (Клавиатура)"
128
 Hotkeys.MouseButton="Мишка %1"
129
 
130
 Mute="Заглуши"
131
obs-studio-21.0.3.tar.xz/UI/data/locale/cs-CZ.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/cs-CZ.ini Changed
11
 
1
@@ -631,6 +631,9 @@
2
 Basic.Settings.Audio="Zvuk"
3
 Basic.Settings.Audio.SampleRate="Vzorkovací frekvence"
4
 Basic.Settings.Audio.Channels="Kanály"
5
+Basic.Settings.Audio.MeterDecayRate.Fast="Rychle"
6
+Basic.Settings.Audio.MeterDecayRate.Medium="Střední (typ I PPM)"
7
+Basic.Settings.Audio.MeterDecayRate.Slow="Pomalu (typ II PPM)"
8
 Basic.Settings.Audio.MultiChannelWarning.Enabled="VAROVÁNÍ: Prostorový zvuk je zapnut."
9
 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."
10
 Basic.Settings.Audio.MultichannelWarning.Title="Povolit prostorový zvuk?"
11
obs-studio-21.0.3.tar.xz/UI/data/locale/en-US.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/en-US.ini Changed
11
 
1
@@ -535,6 +535,9 @@
2
 Basic.MainMenu.Help.Logs.UploadLastLog="Upload &Last Log File"
3
 Basic.MainMenu.Help.Logs.ViewCurrentLog="&View Current Log"
4
 Basic.MainMenu.Help.CheckForUpdates="Check For Updates"
5
+Basic.MainMenu.Help.CrashLogs="Crash &Reports"
6
+Basic.MainMenu.Help.CrashLogs.ShowLogs="&Show Crash Reports"
7
+Basic.MainMenu.Help.CrashLogs.UploadLastLog="Upload &Last Crash Report"
8
 
9
 # basic mode settings dialog
10
 Basic.Settings.ProgramRestart="The program must be restarted for these settings to take effect."
11
obs-studio-21.1.2.tar.xz/UI/data/locale/fil-PH.ini Added
201
 
1
@@ -0,0 +1,748 @@
2
+
3
+
4
+OK="Sige"
5
+Apply="Ilagay"
6
+Cancel="Kanselahin"
7
+Close="Sarado"
8
+Save="Mag-impok"
9
+Discard="Ialis"
10
+Disable="Huwag paganahin"
11
+Yes="Oo"
12
+No="Hindi"
13
+Add="Idagdag"
14
+Remove="Tanggalin"
15
+Rename="Baguhin ang pangalan"
16
+Interact="Makipag-ugnayan"
17
+Filters="Mga salaan"
18
+Properties="Mga pag-aari"
19
+MoveUp="Gumalaw pataas"
20
+MoveDown="Bumaba"
21
+Settings="Mga pagtatakda"
22
+Display="Ipamalas"
23
+Name="Pangalan"
24
+Exit="Labasan"
25
+Mixer="Panghalo"
26
+Browse="Supling"
27
+Mono="Mono"
28
+Stereo="Stereo"
29
+DroppedFrames="Bumaba ang mga frame %1 (%2%)"
30
+StudioProgramProjector="Fullscreen Projector (Programa)"
31
+PreviewProjector="Fullscreen Projector (Preview)"
32
+SceneProjector="Fullsreen Projector (Eksena)"
33
+SourceProjector="Fullscreen Projector (Pinagmulan)"
34
+StudioProgramWindow="Windowed Projector (Programa)"
35
+PreviewWindow="Windowed Projector (Preview)"
36
+SceneWindow="Windowed Projector (Eksena)"
37
+SourceWindow="Windowed Projector (Pinagmulan)"
38
+MultiviewProjector="Multiview (Fullscreen)"
39
+MultiviewWindowed="Multiview (Windowed)"
40
+Clear="Linisin"
41
+Revert="Ibalik"
42
+Show="Ipakita"
43
+Hide="Itago"
44
+UnhideAll="Huwag itago lahat"
45
+Untitled="Walang pamagat"
46
+New="Bago"
47
+Duplicate="Katulad"
48
+Enable="Paganahin"
49
+DisableOSXVSync="Huwag Paganahin OSX V-Sync"
50
+ResetOSXVSyncOnExit="I-reset ang OSX V-Sync sa Labasan"
51
+HighResourceUsage="Ang Encoding ay labis ang karga! Isaalang alang ang pagbaba ng video settings o gumamit ng mas mabilis na encoding preset."
52
+Transition="Paglipat"
53
+QuickTransitions="Mabilis na Paglipat"
54
+Left="Kaliwa"
55
+Right="Kanan"
56
+Top="Pinakamataas"
57
+Bottom="Kailaliman"
58
+Reset="Baguhin"
59
+Hours="Oras"
60
+Minutes="Minuto"
61
+Seconds="Segundo"
62
+Deprecated="Hindi na ginagamit"
63
+ReplayBuffer="Replay Buffer"
64
+Import="Mag-angkat"
65
+Export="I-export"
66
+Copy="Kopyahin"
67
+Paste="I-paste"
68
+PasteReference="I-paste (Banggit)"
69
+PasteDuplicate="I-paste (Pangalawang salin)"
70
+RemuxRecordings="Mga Pagtatala ng Remux"
71
+Next="Susunod"
72
+Back="Bumalik"
73
+Defaults="Mga hindi pagsipot"
74
+HideMixer="Itago sa panghalo"
75
+TransitionOverride="Override na ang Paglipat"
76
+None="Wala"
77
+StudioMode.Preview="Balikan"
78
+StudioMode.Program="Programa"
79
+ShowInMultiview="Ipakita sa Multiview"
80
+
81
+AlreadyRunning.Title="Tumatakbo na ngayon ang OBS"
82
+AlreadyRunning.Text="Tumatakbo na ang OBS! Maliban na lamang kung gusto mong gawin ito, pakiusap patayin ang anomang nabubuhay na mga mungkahi ng OBS bago subukang magpatakbo ng panibagong mungkahi. Kung meron kang OBS set para mabawasan ang sistemang tray, pakiusap magsiyasat para makita kung ito ay tumatakbo parin."
83
+AlreadyRunning.LaunchAnyway="Maglunsad parin"
84
+
85
+Copy.Filters="Kopyahin ang mga panala"
86
+Paste.Filters="I-paste ang mga panala"
87
+
88
+BandwidthTest.Region="Rehiyon"
89
+BandwidthTest.Region.US="Estados Unidos"
90
+BandwidthTest.Region.EU="Europa"
91
+BandwidthTest.Region.Asia="Asya"
92
+BandwidthTest.Region.Other="Iba pa"
93
+
94
+Basic.FirstStartup.RunWizard="Gusto mo bang mapatakbo ang dalubhasa sa kusang pagkonpigurasyon? Maaari mo ring mano-manuhin ang pagkonpigura ng iyong settings sa pagpindot ng Settings button sa pangunahing window."
95
+Basic.FirstStartup.RunWizard.BetaWarning="(Tandaan: Ang dalubhasang kusang pagkonpigurasyon ay kasalukuyang nasa beta)"
96
+Basic.FirstStartup.RunWizard.NoClicked="Kung magbabago ka ng isip mo, pwede mong patakbuhin ang dalubhasang kusang konpigurasyon anomang oras ulit mula sa mga kasangkapan sa menu."
97
+
98
+Basic.AutoConfig="Dalubhasang Kusang Konpigurasyon"
99
+Basic.AutoConfig.Beta="Dalubhasang Kusang Konpigurasyon (Beta)"
100
+Basic.AutoConfig.ApplySettings="Ilapat ang mga Pagtatakda"
101
+Basic.AutoConfig.StartPage="Paggamit ng Impormasyon"
102
+Basic.AutoConfig.StartPage.SubTitle="Tukuyin ang tamang program na gusto mong gamitin"
103
+Basic.AutoConfig.StartPage.PrioritizeStreaming="Optimize para sa streaming, pangalawa ay ang recording"
104
+Basic.AutoConfig.StartPage.PrioritizeRecording="Optimize para sa recording, Hindi ako mag streaming"
105
+Basic.AutoConfig.VideoPage="Ang mga video settings"
106
+Basic.AutoConfig.VideoPage.SubTitle="Tukuyin ang naayong video settings na gusto mong gamitin"
107
+Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="Kasulukuyang gamitin(%1x%2)"
108
+Basic.AutoConfig.VideoPage.BaseResolution.Display="I-Display %1 (%2x%3)"
109
+Basic.AutoConfig.VideoPage.FPS.UseCurrent="Pangsulukuyang Gamitin (%1)"
110
+Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="Sa 60 or kaya sa 30, Pero mas mabuti 60 kung maaari"
111
+Basic.AutoConfig.VideoPage.FPS.PreferHighRes="Sa 60 or kaya sa 30, Pero mas mabuti 60 para sa mas magandang resolusyon"
112
+Basic.AutoConfig.VideoPage.CanvasExplanation="Paalala: Ang kanbas (base) na ito ay hindi kinakailangan na kaparehas ng resolusyon ng iyong stream or record. Ang iyong actual stream/record na resolusyon ay maaaring pagkasyahin para sa resolusyon ng kanbas para mabawasan ang paggamit kinakailangan na bitrate."
113
+Basic.AutoConfig.StreamPage="Mga batis ng impormasyon"
114
+Basic.AutoConfig.StreamPage.SubTitle="Pakiusap ilagay ang iyong impormasyon pang stream"
115
+Basic.AutoConfig.StreamPage.Service="Serbisyo"
116
+Basic.AutoConfig.StreamPage.Service.ShowAll="Ipakita lahat..."
117
+Basic.AutoConfig.StreamPage.Server="Serber"
118
+Basic.AutoConfig.StreamPage.StreamKey="Ang susi ng iyong stream"
119
+Basic.AutoConfig.StreamPage.StreamKey.LinkToSite="(link)"
120
+Basic.AutoConfig.StreamPage.PerformBandwidthTest="I-estima ang bitrate kasama ang pag eksamina ng bandwidth (maaaring tumagal ng ilang minuto)"
121
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Piliin ang hardware encoding"
122
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Ang Hardware Encoding ay tinatanggal lahat ng nagamit na CPU, pero kailangan ng mas maraming bitrate para makuha ang parehong lebel ng kalidad"
123
+Basic.AutoConfig.StreamPage.StreamWarning.Title="Babala sa pag stream"
124
+Basic.AutoConfig.StreamPage.StreamWarning.Text="Ang bandwidth test ay tungkol sa stream randomized bidyo data at walang audio sa iyong channel. Kung maaari, mas inirerekomenda na pansamantalang i-off ang pag save ng vides of streams at itakda sa pribado hanggang matapos makumpleto ang pag eksamin"
125
+Basic.AutoConfig.TestPage="Huling Resulta"
126
+Basic.AutoConfig.TestPage.SubTitle.Testing="Ang program na ito ay isinasagawa ang mga set para eksamin para matantiya ang pinakamainam na settings"
127
+Basic.AutoConfig.TestPage.SubTitle.Complete="Ang iyong pagsusuri ay kumpleto na"
128
+Basic.AutoConfig.TestPage.TestingBandwidth="Pagsasagawa ng bandwidth test, ito ay maaaring tumagal ng ilang minuto..."
129
+Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Kumukunekta sa: %1..."
130
+Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Bigong kumunekta sa alin mang server, paki tignan ang koneksyon ng iyong internet at subukan ulet."
131
+Basic.AutoConfig.TestPage.TestingBandwidth.Server="Pagsusuri ng bandwidth para sa: %1"
132
+Basic.AutoConfig.TestPage.TestingStreamEncoder="Testingin ang stream encoder, ito ay maaaring tumagal ng isang minuto..."
133
+Basic.AutoConfig.TestPage.TestingRecordingEncoder="Testingin ang recording encoder, ito ay maaaring tumagal ng isang minuto..."
134
+Basic.AutoConfig.TestPage.TestingRes="Testingin ang resolusyon, ito ay maaaring tumagal ng ilang minuto..."
135
+Basic.AutoConfig.TestPage.TestingRes.Fail="Bigong iandar ang encoder"
136
+Basic.AutoConfig.TestPage.TestingRes.Resolution="Testingin %1x%2 %3 FPS..."
137
+Basic.AutoConfig.TestPage.Result.StreamingEncoder="Streaming Encoder"
138
+Basic.AutoConfig.TestPage.Result.RecordingEncoder="Recording Encoder"
139
+Basic.AutoConfig.TestPage.Result.Header="Ang program na ito ay napagkaisahan na ang settings tinatayang lahat ay perpekto para sayo:"
140
+Basic.AutoConfig.TestPage.Result.Footer="Para sa pag gamit ng settings, pindutin ang Apply Settings. Para ma reconfigure ang wizard at simulan muli, pindutin ang Back. Mano-mano i-configure ang settings, at pindutin ang Cancel at buksan ang Settings."
141
+
142
+Basic.Stats="Ang mga Statisktika"
143
+Basic.Stats.CPUUsage="Ang nagamit na CPU"
144
+Basic.Stats.HDDSpaceAvailable="Ang magagamit na espasyo ng HDD"
145
+Basic.Stats.MemoryUsage="Ang nagamit na Memory"
146
+Basic.Stats.AverageTimeToRender="Ang average time para ma render ang frame"
147
+Basic.Stats.SkippedFrames="Laktawin ang frames dahil sa encoding lag"
148
+Basic.Stats.MissedFrames="Nalampasan ang frames dahil sa rendering lag"
149
+Basic.Stats.Output.Stream="Stream"
150
+Basic.Stats.Output.Recording="Recording"
151
+Basic.Stats.Status="Ang estado"
152
+Basic.Stats.Status.Recording="Recording"
153
+Basic.Stats.Status.Live="Naka LIVE"
154
+Basic.Stats.Status.Reconnecting="Muling kumukonekta"
155
+Basic.Stats.Status.Inactive="Hindi na aktiba"
156
+Basic.Stats.DroppedFrames="Naihulog na Frames (Network)"
157
+Basic.Stats.MegabytesSent="Ang total na Data Output"
158
+Basic.Stats.Bitrate="Bitrate"
159
+
160
+Updater.Title="May bagong update na available"
161
+Updater.Text="May bagong update na magagamit:"
162
+Updater.UpdateNow="Mag update ngayon"
163
+Updater.RemindMeLater="Paalalahanan mo ako mamaya"
164
+Updater.Skip="Laktawan ang Bersyon"
165
+Updater.Running.Title="Programa na kasalukuyang aktibo"
166
+Updater.Running.Text="Ang mga output ay kasalukuyang aktibo, mangyaring i-shut down ang anumang mga aktibong output bago sinusubukang i-update"
167
+Updater.NoUpdatesAvailable.Title="Walang magagamit na mga update"
168
+Updater.NoUpdatesAvailable.Text="Walang mga update ang kasalukuyang magagamit"
169
+Updater.FailedToLaunch="Nabigong ilunsad ang updater"
170
+Updater.GameCaptureActive.Title="Kumuha ng laro na aktibo"
171
+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."
172
+
173
+QuickTransitions.SwapScenes="Swap Preview / Output Scenes Pagkatapos Transitioning"
174
+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."
175
+QuickTransitions.DuplicateScene="Gayahin ang eksena"
176
+QuickTransitions.DuplicateSceneTT="Kung mag i-edit ng parehas na eksena. pinapayag ang editing transform/visibility of sources kahit baguhin ang output.\nPara ma edit ang properties wag baguhin ang output, paganahin 'Duplicate Sources'.\nAng pagbago ng kalidad nito ay maaaring ma reset ang eksena (kung ito ay umiiral pa rin)."
177
+QuickTransitions.EditProperties="Gayahin ang mga pinagmulang"
178
+QuickTransitions.EditPropertiesTT="Kung mag i-edit ng kaparehas na eksena. payagan mag edit ng katangian ng mga pinagkukunan nang hindi binabago ang output.\nIto ay magagamit king 'Duplicate Scene' ay pinagana.\nAng mga pinagkukunan(gaya ng nakuhang media sources) hindi suportado at di pwede ma edit nang hiwalay.\nAng pagbago ng value nito ay maaaring ma reset ang kasulukuyang output scene(kung mayroon pa).\n\nBabala: Dahil sa pinagkukunan ay magiging doble, ito ay nangangailangan ng ekstrang sistema or video pagkukunan."
179
+QuickTransitions.HotkeyName="Ilipat ng mabilis: %1"
180
+
181
+Basic.AddTransition="Magdagdag ng configurable na transisyon"
182
+Basic.RemoveTransition="Tangalin ang configurable transition"
183
+Basic.TransitionProperties="Mga Properties ng Transisyon"
184
+Basic.SceneTransitions="Mga transisyon ng mga eksena"
185
+Basic.TransitionDuration="Katagalan"
186
+Basic.TogglePreviewProgramMode="Ang Studio Mode"
187
+
188
+TransitionNameDlg.Text="Pakilagay ang pangalan ng transisyon"
189
+TransitionNameDlg.Title="Pangalan ng Transisyon"
190
+
191
+TitleBar.Profile="Ang Profile"
192
+TitleBar.Scenes="Ang mga Eksena"
193
+
194
+NameExists.Title="Ang pangalan ay umiiral na"
195
+NameExists.Text="Ang pangalan ay nagamit na."
196
+
197
+NoNameEntered.Title="Pakilagay ang balidong pangalan"
198
+NoNameEntered.Text="Hindi pwede gumamit ng walang pangalan."
199
+
200
+ConfirmStart.Title="Magsimula ng mag Stream?"
201
obs-studio-21.0.3.tar.xz/UI/data/locale/he-IL.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/he-IL.ini Changed
171
 
1
@@ -28,16 +28,21 @@
2
 Mono="מונו"
3
 Stereo="סטריאו"
4
 DroppedFrames="השמטת תמונות %1 (%2%)"
5
+StudioProgramProjector="מקרן מסך מלא (תוכנה)"
6
 PreviewProjector="מקרן מסך מלא (תצוגה מקדימה)"
7
 SceneProjector="מקרן מסך מלא (סצנה)"
8
 SourceProjector="מקרן מסך מלא (מקור)"
9
+StudioProgramWindow="מקרן חלון (תוכנה)"
10
 PreviewWindow="הקרנה בחלון (תצוגה מקדימה)"
11
 SceneWindow="הקרנה בחלון (סצנה)"
12
 SourceWindow="הקרנה בחלון (מקור)"
13
+MultiviewProjector="תצוגה מרובה (מסך מלא)"
14
+MultiviewWindowed="תצוגה מרובה (חלון)"
15
 Clear="נקה"
16
 Revert="החזר לקדמותו"
17
 Show="הצג"
18
 Hide="הסתר"
19
+UnhideAll="הצג הכל"
20
 Untitled="ללא כותרת"
21
 New="חדש"
22
 Duplicate="שכפל"
23
@@ -66,6 +71,13 @@
24
 RemuxRecordings="רימיקס הקלטות"
25
 Next="הבא"
26
 Back="קודם"
27
+Defaults="ברירות מחדל"
28
+HideMixer="מוחבא בתוך המיקסר"
29
+TransitionOverride="מעבר דרוס"
30
+None="ללא"
31
+StudioMode.Preview="תצוגה מקדימה"
32
+StudioMode.Program="תוכנה"
33
+ShowInMultiview="הראה בתצוגה מרובה"
34
 
35
 AlreadyRunning.Title="OBS פועל כבר"
36
 AlreadyRunning.Text="OBS פועל כבר!  אלא אם התכוונת לעשות את זה, אנא סגור כל מופע קיים לפני נסיון להפעיל מופע חדש.  אנא בדוק אם קיים מופע  הגדר ממוזער במגש המערכת."
37
@@ -110,6 +122,7 @@
38
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding="העדף קידוד בחומרה"
39
 Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="קידוד בחומרה מבטלת רוב השימוש ב- CPU, אבל עשויים לדרוש קצב נתונים גבוה יותר בכדי להשיג את אותה רמת איכות."
40
 Basic.AutoConfig.StreamPage.StreamWarning.Title="אזהרת זרם"
41
+Basic.AutoConfig.StreamPage.StreamWarning.Text="בדיקת רוחב הפס עומדת להזרים נתוני וידאו אקראיים ללא שמע לערוץ שלך. אם אתה מסוגל, מומלץ לבטל באופן זמני את שמירת קטעי הוידאו של הזרם וקבע את הזרם לפרטי עד לאחר שהבדיקה תסתיים. להמשיך?"
42
 Basic.AutoConfig.TestPage="תוצאות סופיות"
43
 Basic.AutoConfig.TestPage.SubTitle.Testing="התוכנית מתבצעת עכשיו סט של בדיקות כדי להעריך את ההגדרות המיטביות"
44
 Basic.AutoConfig.TestPage.SubTitle.Complete="הבדיקה הסתיימה"
45
@@ -156,6 +169,7 @@
46
 Updater.NoUpdatesAvailable.Text="אין עדכונים זמינים כעת"
47
 Updater.FailedToLaunch="נכשלה הפעלת העידכון"
48
 Updater.GameCaptureActive.Title="לכידת משחק פעיל"
49
+Updater.GameCaptureActive.Text="לכידת משחק נמצאת כעת בשימוש. בבקשה סגור את המשחקים/תוכנות שנמצאים בלכידה (או הפעל מחדש את ווינדוס) ונסה שינת."
50
 
51
 QuickTransitions.SwapScenes="החלף סצינות תצוגה מקדימה/פלט לאחר המעבר"
52
 QuickTransitions.SwapScenesTT="החלף הסצינות של התצוגה המקדימה ושל הפלט לאחר המעבר (באם הסצינה המקורית של הפלט עדיין קיימת). \n פעולה זו לא תבטל כל שינוי שייתכן ובוצע לסצינה המקורית של הפלט."
53
@@ -200,6 +214,7 @@
54
 Output.StartStreamFailed="נכשלה הפעלת זרימה"
55
 Output.StartRecordingFailed="נכשלה הפעלת הקלטה"
56
 Output.StartReplayFailed="נכשלה הפעלת מאגר החוזר"
57
+Output.StartFailedGeneric="הפלט נכשל. בבקשה בדוק את הרישומים עבור. \n\nNote: אם אתה משתמש בNVNEC או AMD מקודדים, הקפד שמנהלי ההתקן של הכרטיס מסך מעודכנים."
58
 
59
 Output.ConnectFail.Title="ההתחברות נכשלה"
60
 Output.ConnectFail.BadPath="URL לא חוקי של נתיב או חיבור.  נא בדוק את ההגדרות שלך כדי לוודא כי הם נכונים."
61
@@ -214,6 +229,8 @@
62
 Output.RecordNoSpace.Msg="אין די שטח דיסק כדי להמשיך הקלטה."
63
 Output.RecordError.Title="שגיאה הקלטה"
64
 Output.RecordError.Msg="אירעה שגיאה לא מוגדרת בזמן ההקלטה."
65
+Output.ReplayBuffer.NoHotkey.Title="אין מקש קיצור שנבחר!"
66
+Output.ReplayBuffer.NoHotkey.Msg="אין hotkey שמור למאגר החוזר. בבקשה הגדר את \"שמור\" hotkey לשימוש עבור שמירת מאגר חוזר להקלטות."
67
 
68
 Output.BadPath.Title="נתיב קובץ לא תקין"
69
 Output.BadPath.Text="נתיב פלט הקובץ שהוגדר אינו חוקי.  נא בדוק את הגדרות כדי לוודא שנתיב קובץ תקני נקבע."
70
@@ -295,6 +312,8 @@
71
 
72
 RenameProfile.Title="שנה שם פרופיל"
73
 
74
+Basic.Main.MixerRename.Title="שינוי שם מקור שמע"
75
+Basic.Main.MixerRename.Text="בבקשה הכנס את שם קובץ השמע"
76
 
77
 
78
 Basic.Main.PreviewDisabled="תצוגה מקדימה אינה זמינה כעת"
79
@@ -374,6 +393,7 @@
80
 
81
 Basic.Main.Scenes="סצינות"
82
 Basic.Main.Sources="מקורות"
83
+Basic.Main.Controls="בקרה"
84
 Basic.Main.Connecting="מתחבר..."
85
 Basic.Main.StartRecording="התחל הקלטה"
86
 Basic.Main.StartReplayBuffer="התחל מאגר החוזר"
87
@@ -429,19 +449,27 @@
88
 
89
 Basic.MainMenu.View="&מבט"
90
 Basic.MainMenu.View.Toolbars="&סרגלי כלים"
91
+Basic.MainMenu.View.Docks="עגינה"
92
+Basic.MainMenu.View.Docks.ResetUI="איפוס UI"
93
+Basic.MainMenu.View.Docks.LockUI="נעילת UI"
94
 Basic.MainMenu.View.Toolbars.Listboxes="&תיבות רשימה"
95
 Basic.MainMenu.View.SceneTransitions="&מעברי סצינות"
96
 Basic.MainMenu.View.StatusBar="&שורת מצב"
97
+Basic.MainMenu.View.Fullscreen.Interface="ממשק מסך מלא"
98
 
99
 Basic.MainMenu.SceneCollection="אוסף סצינות(&S)"
100
 Basic.MainMenu.Profile="פרופיל(&P)"
101
 Basic.MainMenu.Profile.Import="ייבא פרופיל"
102
 Basic.MainMenu.Profile.Export="ייצא פרופיל"
103
+Basic.MainMenu.SceneCollection.Import="ייבא אוסף סצינות"
104
+Basic.MainMenu.SceneCollection.Export="ייצא אוסף סצנות"
105
 Basic.MainMenu.Profile.Exists="הפרופיל קיים כבר"
106
+Basic.MainMenu.SceneCollection.Exists="אוסף הסצנות כבר קיים"
107
 
108
 Basic.MainMenu.Tools="& כלים"
109
 
110
 Basic.MainMenu.Help="עזרה(&H)"
111
+Basic.MainMenu.Help.HelpPortal="עזרה & פורטל"
112
 Basic.MainMenu.Help.Website="בקר אתר(&W)"
113
 Basic.MainMenu.Help.Logs="קבצי יומן רישום(&L)"
114
 Basic.MainMenu.Help.Logs.ShowLogs="הצג קבצי יומן רישום(&S)"
115
@@ -458,10 +486,12 @@
116
 Basic.Settings.General.Theme="ערכת עיצוב"
117
 Basic.Settings.General.Language="שפה"
118
 Basic.Settings.General.EnableAutoUpdates="בדוק באופן אוטומטי אם יש עדכונים בעת ההפעלה"
119
+Basic.Settings.General.OpenStatsOnStartup="פתח סטטיסטיקת דיאלוג בעת ההפעלה"
120
 Basic.Settings.General.WarnBeforeStartingStream="הצג תיבת דו-שיח לאישור בעת הפעלת זרם נתונים"
121
 Basic.Settings.General.WarnBeforeStoppingStream="הצג תיבת דו-שיח לאישור בעת עצירת זרם נתונים"
122
 Basic.Settings.General.Projectors="מקרנים"
123
 Basic.Settings.General.HideProjectorCursor="הסתר את הסמן מעל מקרנים"
124
+Basic.Settings.General.ProjectorAlwaysOnTop="הפוך מקרנים תמיד בעליון"
125
 Basic.Settings.General.Snapping="יישור הצמדת מקור"
126
 Basic.Settings.General.ScreenSnapping="הצמד מקורות לקצה המסך"
127
 Basic.Settings.General.CenterSnapping="הצמד מקורות למרכז אופקי ואנכי"
128
@@ -469,10 +499,19 @@
129
 Basic.Settings.General.SnapDistance="רגישות צמד"
130
 Basic.Settings.General.RecordWhenStreaming="הקלטה אוטומטית בעת הזרמת נתונים"
131
 Basic.Settings.General.KeepRecordingWhenStreamStops="המשך הקלטה כאשר הזרמת נתונים מפסיקה"
132
+Basic.Settings.General.ReplayBufferWhileStreaming="הפעל מאגר חוזר באופן אוטומטי בעת הזרמה"
133
+Basic.Settings.General.KeepReplayBufferStreamStops="השאר את המאגר החוזר פעיל כאשר ההזרמה מפסיקה"
134
 Basic.Settings.General.SysTray="מגש המערכת"
135
 Basic.Settings.General.SysTrayWhenStarted="מזער למגש המערכת בתחילה"
136
 Basic.Settings.General.SystemTrayHideMinimize="מזער תמיד למגש המערכת במקום שורת המשימות"
137
 Basic.Settings.General.SaveProjectors="שמור את המקרנים ביציאה"
138
+Basic.Settings.General.SwitchOnDoubleClick="מעבר לסצנה על ידי הקלקה כפולה"
139
+Basic.Settings.General.StudioPortraitLayout="אפשר פריסה אנכית/דיוקן"
140
+Basic.Settings.General.MultiviewLayout="פריסת תצוגה מרובה"
141
+Basic.Settings.General.MultiviewLayout.Horizontal.Top="אופקי, עליון"
142
+Basic.Settings.General.MultiviewLayout.Horizontal.Bottom="אופקי, תחתון"
143
+Basic.Settings.General.MultiviewLayout.Vertical.Left="אנכי, שמאל"
144
+Basic.Settings.General.MultiviewLayout.Vertical.Right="אנכי, ימין"
145
 
146
 Basic.Settings.Stream="זרם נתונים"
147
 Basic.Settings.Stream.StreamType="סוג זרם נתונים"
148
@@ -592,6 +631,14 @@
149
 Basic.Settings.Audio="אודיו"
150
 Basic.Settings.Audio.SampleRate="קצב דגימה"
151
 Basic.Settings.Audio.Channels="ערוצים"
152
+Basic.Settings.Audio.MeterDecayRate="קצב דעיכה ממד שמע"
153
+Basic.Settings.Audio.MeterDecayRate.Fast="מהיר"
154
+Basic.Settings.Audio.MeterDecayRate.Medium="בינוני (סוג I PPM)"
155
+Basic.Settings.Audio.MeterDecayRate.Slow="איטי (סוג II PPM)"
156
+Basic.Settings.Audio.MultiChannelWarning.Enabled="אזהרה: שמע צליל היקפי מאופשר."
157
+Basic.Settings.Audio.MultichannelWarning="אם הזרימה, בדוק את הזרמת השירות תומך בסראונד סאונד להבלע ואת היקפי הסראונד פלייבק. טוויץ',פייסבוק,360 Liev, מיקסר RTMP, Smashcast דוגמאות לאיפה שסראונד סאונד הוא נתמך. למרות פייסבוק לייב ויוטיוב לייב שניהם מאפשרים סראונד להבלע, פייסבוק לייב משנה לסטריאו ויוטיוב לייב מפעיל בשני ערוצים. \n\nOBS Studio מסנן עם הסראונד סאונד, למרות תמיכת תוסף VST אינו מאובטח."
158
+Basic.Settings.Audio.MultichannelWarning.Title="האם להפעיל שמע צליל היקפי?"
159
+Basic.Settings.Audio.MultichannelWarning.Confirm="אתה בטוח שאתה רוצה לאפשר קול שמע מקיף?"
160
 Basic.Settings.Audio.DesktopDevice="התקן שמע בשולחן עבודה"
161
 Basic.Settings.Audio.DesktopDevice2="התקן שמע בשולחן עבודה 2"
162
 Basic.Settings.Audio.AuxDevice="התקן שמע מיקרופון/עזר"
163
@@ -608,6 +655,7 @@
164
 Basic.Settings.Advanced.General.ProcessPriority.High="גבוה"
165
 Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="מעל לרגיל"
166
 Basic.Settings.Advanced.General.ProcessPriority.Normal="רגיל"
167
+Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="מתחת לעדיפות רגילה"
168
 Basic.Settings.Advanced.General.ProcessPriority.Idle="לא פעיל"
169
 Basic.Settings.Advanced.FormatWarning="אזהרה: תבניות צבע שונות מ-NV12 נועדו בעיקר עבור הקלטה, והם אינם מומלצות בעת הזרמת נתונים.  הזרמת נתונים עלולה לגרום למשאבי עיבוד מוגברים כתוצאה מהמרת תבנית צבע."
170
 Basic.Settings.Advanced.Audio.BufferingTime="זמן אוגר שמע"
171
obs-studio-21.0.3.tar.xz/UI/data/locale/ja-JP.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/ja-JP.ini Changed
20
 
1
@@ -28,15 +28,15 @@
2
 Mono="モノラル"
3
 Stereo="ステレオ"
4
 DroppedFrames="ドロップしたフレーム %1 (%2%)"
5
-StudioProgramProjector="全画面プロジェクター (プログラム)"
6
+StudioProgramProjector="全画面プロジェクター (番組)"
7
 PreviewProjector="全画面プロジェクター (プレビュー)"
8
 SceneProjector="全画面プロジェクター (シーン)"
9
 SourceProjector="全画面プロジェクター (ソース)"
10
-StudioProgramWindow="ウィンドウ付きプロジェクター (プログラム)"
11
+StudioProgramWindow="ウィンドウ プロジェクター (番組)"
12
 PreviewWindow="ウィンドウ プロジェクター (プレビュー)"
13
 SceneWindow="ウィンドウ プロジェクター (シーン)"
14
 SourceWindow="ウィンドウ プロジェクター (ソース)"
15
-MultiviewProjector="マルチビュー (フルスクリーン)"
16
+MultiviewProjector="マルチビュー (全画面)"
17
 MultiviewWindowed="マルチビュー (ウィンドウ)"
18
 Clear="クリア"
19
 Revert="元に戻す"
20
obs-studio-21.0.3.tar.xz/UI/data/locale/ka-GE.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/ka-GE.ini Changed
69
 
1
@@ -1,6 +1,9 @@
2
 
3
+Language="ქართული"
4
+Region="საქართველო"
5
 
6
 OK="კაი"
7
+Apply="მიღება"
8
 Cancel="გაუქმება"
9
 Close="დახურვა"
10
 Save="შენახვა"
11
@@ -11,16 +14,22 @@
12
 Add="დამატება"
13
 Remove="წაშლა"
14
 Rename="გადარქმევა"
15
+Interact="ურთიერთქმედება"
16
 Filters="ფილტრები"
17
+Properties="პარამეტრები"
18
 MoveUp="ზევით"
19
 MoveDown="ქვევით"
20
 Settings="პარამეტრები"
21
+Display="ეკრანი"
22
 Name="სახელი"
23
 Exit="გასვლა"
24
 Mixer="მიქშერი"
25
 Browse="მოძიება"
26
 Mono="მონო"
27
 Stereo="სტერეო"
28
+DroppedFrames="კადრების ვარდნა %1 (%2%)"
29
+Clear="გასუფთავება"
30
+Revert="დაბრუნება"
31
 Show="ჩვენება"
32
 Hide="დამალვა"
33
 UnhideAll="ყველაფრის გამოჩენა"
34
@@ -30,10 +39,32 @@
35
 Enable="ჩართვა"
36
 DisableOSXVSync="OSX V-Sync-ის გამორთვა"
37
 ResetOSXVSyncOnExit="OSX V-Sync-ის გადატვირთვა გასვლისას"
38
+HighResourceUsage="დამშიფრავი გადაიტვირთა! სცადეთ ვიდეოს პარამეტრების შემცირება, ან უფრო სწრაფი შიფრაციის პარამეტრების გამოყენება."
39
+Transition="გადასვლა"
40
+QuickTransitions="სწრაფი გადასვლები"
41
+Left="მარცხნივ"
42
+Right="მარჯვნივ"
43
+Top="ზემოთ"
44
+Bottom="ქვემოთ"
45
+Reset="განულება"
46
+Hours="საათი"
47
 Minutes="წუთი"
48
 Seconds="წამი"
49
-
50
-
51
+Deprecated="მოძველებული"
52
+ReplayBuffer="უკან გადახვევის დრო"
53
+Import="შემოტანა"
54
+Export="გატანა"
55
+Copy="დაკოპირება"
56
+Paste="ჩასმა"
57
+Next="შემდეგ"
58
+Back="უკან"
59
+Defaults="ნაგულისხმევი"
60
+
61
+AlreadyRunning.Title="OBS უკვე გაშვებულია"
62
+AlreadyRunning.Text="OBS უკვე გაშვებულია! გთხოვთ, ჯერ დახუროთ OBS-ის ყველა გაშვებული პროცესი, სანამ ახლის გაშვებას შეეცდებით. თუ მითითებული გაქვთ, რომ დახურვის ნაცვლად, OBS სისტემურ არეში უნდა ჩაიკეცოს, გთხოვთ მანდაც გადაამოწმოთ, დარჩენილი ხომ არაა."
63
+AlreadyRunning.LaunchAnyway="მაინც გაშვება"
64
+
65
+Copy.Filters="ფილტრების დაკოპირება"
66
 
67
 
68
 
69
obs-studio-21.0.3.tar.xz/UI/data/locale/nb-NO.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/nb-NO.ini Changed
10
 
1
@@ -61,7 +61,7 @@
2
 Minutes="Minutter"
3
 Seconds="Sekunder"
4
 Deprecated="Foreldet"
5
-ReplayBuffer="Omspill Buffer"
6
+ReplayBuffer="Omspillingsbuffer"
7
 Import="Importer"
8
 Export="Eksporter"
9
 Copy="Kopier"
10
obs-studio-21.0.3.tar.xz/UI/data/locale/nn-NO.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/nn-NO.ini Changed
46
 
1
@@ -7,6 +7,7 @@
2
 Cancel="Avbryt"
3
 Close="Lukk"
4
 Save="Lagre"
5
+Discard="Bryt av"
6
 Disable="Skrue av"
7
 Yes="Ja"
8
 No="Nei"
9
@@ -22,9 +23,13 @@
10
 Display="Skjerm"
11
 Name="Namn"
12
 Exit="Avslutt"
13
+Mixer="Blandar"
14
 Browse="Bla gjennom"
15
 Mono="Mono"
16
 Stereo="Stereo"
17
+DroppedFrames="Slopne bilete %1 (%2%)"
18
+StudioProgramProjector="Fullskjermframvisar (program)"
19
+PreviewProjector="Fullskjermframvisar (førehandsvising)"
20
 MultiviewProjector="Fleirvising (Fullskjerm)"
21
 MultiviewWindowed="Fleirvising (i vindauge)"
22
 Clear="Tøm"
23
@@ -33,6 +38,22 @@
24
 Untitled="Utan namn"
25
 New="Ny"
26
 Enable="Aktiver"
27
+Left="Venstre"
28
+Right="Høgre"
29
+Top="Topp"
30
+Bottom="Botn"
31
+Reset="Attendeset"
32
+Hours="Timar"
33
+Minutes="Minutt"
34
+Seconds="Sekund"
35
+Import="Innfør"
36
+Export="Utfør"
37
+Copy="Kopier"
38
+Paste="Lim inn"
39
+Next="Neste"
40
+Back="Attende"
41
+Defaults="Standardar"
42
+None="Ingen"
43
 StudioMode.Preview="Førehandsvising"
44
 StudioMode.Program="Program"
45
 
46
obs-studio-21.0.3.tar.xz/UI/data/locale/ru-RU.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/ru-RU.ini Changed
128
 
1
@@ -171,11 +171,11 @@
2
 Updater.GameCaptureActive.Title="Производится захват игры"
3
 Updater.GameCaptureActive.Text="Библиотека захвата игр уже используется. Закройте захватываемые игры/программы (или перезапустите Windows) и попробуйте ещё раз."
4
 
5
-QuickTransitions.SwapScenes="Замена Просмотра/Вывода Сцены После Перехода"
6
-QuickTransitions.SwapScenesTT="Замена просмотра и вывода сцены после перехода (если выходная оригинальная сцена до сих пор существует).\nЭто будет не отмена каких-либо изменений, что, возможно, было сделано в выходной оригинальной сцены."
7
-QuickTransitions.DuplicateScene="Повторяющиеся Сцены"
8
+QuickTransitions.SwapScenes="Менять местами сцены предпросмотра и вывода после перехода"
9
+QuickTransitions.SwapScenesTT="Меняет местами сцены предпросмотра и вывода после перехода (если оригинальная выходная сцена до сих пор существует).\nЭто не отменяет никаких изменений, которые возможно были сделаны в оригинальной выходной сцене."
10
+QuickTransitions.DuplicateScene="Дублировать сцену"
11
 QuickTransitions.DuplicateSceneTT="При редактировании одной и той же сцены, функция позволяет трансформировать редактирования/видимости источников без изменения выхода.\nДля редактирования свойств источников без изменения выходного сигнала, включить \"дублировать источники'.\nИзменение этого параметра приведет к сбросу выходного сигнала в сцене (если оно еще существует)."
12
-QuickTransitions.EditProperties="Дублировать Источники"
13
+QuickTransitions.EditProperties="Дублировать источники"
14
 QuickTransitions.EditPropertiesTT="При редактировании одной и той же сцены, функция позволяет редактировать свойства источников без изменения выхода.\nЭто может только использоваться, если \"Повторяющиеся Сцены\" включен.\nНекоторые источники (такие как захват или медиа-источники) не поддерживаются и не могут быть отредактированы отдельно.\nИзменение этого параметра приведет к сбросу выходного сигнала в сцене (если оно еще существует).\n\nПредупреждение: поскольку источники будут дублироваться, это может потребовать дополнительных системных ресурсов или видео."
15
 QuickTransitions.HotkeyName="Быстрый переход: %1"
16
 
17
@@ -274,10 +274,10 @@
18
 
19
 Basic.Main.PreviewConextMenu.Enable="Включить предпросмотр"
20
 
21
-ScaleFiltering="Фильтрация масштаба"
22
-ScaleFiltering.Point="Точечная"
23
-ScaleFiltering.Bilinear="Билинейная"
24
-ScaleFiltering.Bicubic="Бикубическая"
25
+ScaleFiltering="Фильтр масштабирования"
26
+ScaleFiltering.Point="Точечный"
27
+ScaleFiltering.Bilinear="Билинейный"
28
+ScaleFiltering.Bicubic="Бикубический"
29
 ScaleFiltering.Lanczos="Метод Ланцоша"
30
 
31
 Deinterlacing="Устранение чересстрочности"
32
@@ -399,12 +399,12 @@
33
 Basic.Main.StartReplayBuffer="Запустить повтор"
34
 Basic.Main.StartStreaming="Запустить трансляцию"
35
 Basic.Main.StopRecording="Остановить запись"
36
-Basic.Main.StoppingRecording="Остановка Записи..."
37
+Basic.Main.StoppingRecording="Остановка записи..."
38
 Basic.Main.StopReplayBuffer="Остановить повтор"
39
 Basic.Main.StoppingReplayBuffer="Остановка повтора..."
40
 Basic.Main.StopStreaming="Остановить трансляцию"
41
 Basic.Main.StoppingStreaming="Остановка вещания..."
42
-Basic.Main.ForceStopStreaming="Остановить передачу (отменить задержку)"
43
+Basic.Main.ForceStopStreaming="Остановить трансляцию (сбросить задержку)"
44
 
45
 Basic.MainMenu.File="&Файл"
46
 Basic.MainMenu.File.Export="&Экспорт"
47
@@ -413,7 +413,7 @@
48
 Basic.MainMenu.File.Remux="Ре&мультиплексирование записей"
49
 Basic.MainMenu.File.Settings="&Настройки"
50
 Basic.MainMenu.File.ShowSettingsFolder="Показать папку с настройками"
51
-Basic.MainMenu.File.ShowProfileFolder="Показать папку профиля"
52
+Basic.MainMenu.File.ShowProfileFolder="Показать папку с профилями"
53
 Basic.MainMenu.AlwaysOnTop="&Поверх других окон"
54
 Basic.MainMenu.File.Exit="&Выход"
55
 
56
@@ -423,15 +423,15 @@
57
 Basic.MainMenu.Edit.UndoAction="&Отменить $1"
58
 Basic.MainMenu.Edit.RedoAction="&Повторить $1"
59
 Basic.MainMenu.Edit.LockPreview="&Заблокировать предпросмотр"
60
-Basic.MainMenu.Edit.Scale="Просмотр и масштабирование"
61
+Basic.MainMenu.Edit.Scale="&Масштабирование предпросмотра"
62
 Basic.MainMenu.Edit.Scale.Window="Масштаб окна"
63
 Basic.MainMenu.Edit.Scale.Canvas="Холст (%1x%2)"
64
 Basic.MainMenu.Edit.Scale.Output="Вывод (%1x%2)"
65
-Basic.MainMenu.Edit.Transform="&Преобразовать"
66
-Basic.MainMenu.Edit.Transform.EditTransform="&Изменить преобразование..."
67
-Basic.MainMenu.Edit.Transform.CopyTransform="Копировать преобразование"
68
-Basic.MainMenu.Edit.Transform.PasteTransform="Вставить преобразование"
69
-Basic.MainMenu.Edit.Transform.ResetTransform="&Сбросить преобразование"
70
+Basic.MainMenu.Edit.Transform="&Трансформировать"
71
+Basic.MainMenu.Edit.Transform.EditTransform="&Изменить отображение..."
72
+Basic.MainMenu.Edit.Transform.CopyTransform="Скопировать трансформацию"
73
+Basic.MainMenu.Edit.Transform.PasteTransform="Вставить трансформацию"
74
+Basic.MainMenu.Edit.Transform.ResetTransform="&Сбросить трансформацию"
75
 Basic.MainMenu.Edit.Transform.Rotate90CW="Повернуть на 90 градусов по часовой"
76
 Basic.MainMenu.Edit.Transform.Rotate90CCW="Повернуть на 90 градусов против часовой"
77
 Basic.MainMenu.Edit.Transform.Rotate180="Повернуть на 180 градусов"
78
@@ -441,7 +441,7 @@
79
 Basic.MainMenu.Edit.Transform.StretchToScreen="&Растянуть на весь экран"
80
 Basic.MainMenu.Edit.Transform.CenterToScreen="&Разместить по центру экрана"
81
 Basic.MainMenu.Edit.Order="&Порядок"
82
-Basic.MainMenu.Edit.Order.MoveUp="Переместить &Выше"
83
+Basic.MainMenu.Edit.Order.MoveUp="Переместить &выше"
84
 Basic.MainMenu.Edit.Order.MoveDown="Переместить &Ниже"
85
 Basic.MainMenu.Edit.Order.MoveToTop="Переместить &Наверх"
86
 Basic.MainMenu.Edit.Order.MoveToBottom="Переместить &Вниз"
87
@@ -491,16 +491,16 @@
88
 Basic.Settings.General.WarnBeforeStoppingStream="Показывать окно подтверждения при остановке трансляции"
89
 Basic.Settings.General.Projectors="Проекторы"
90
 Basic.Settings.General.HideProjectorCursor="Скрыть курсор за проекторы"
91
-Basic.Settings.General.ProjectorAlwaysOnTop="Показывать проекторы поверх всего остального"
92
+Basic.Settings.General.ProjectorAlwaysOnTop="Показывать проекторы поверх всех окон"
93
 Basic.Settings.General.Snapping="Привязка расположения источника"
94
 Basic.Settings.General.ScreenSnapping="Привязка к краю экрана"
95
 Basic.Settings.General.CenterSnapping="Привязка к центру по горизонтали и вертикали"
96
 Basic.Settings.General.SourceSnapping="Привязка к другим источникам"
97
 Basic.Settings.General.SnapDistance="Чувствительность привязки"
98
-Basic.Settings.General.RecordWhenStreaming="Автоматическая запись при стриме"
99
-Basic.Settings.General.KeepRecordingWhenStreamStops="Продолжить запись, когда стрим остановится"
100
+Basic.Settings.General.RecordWhenStreaming="Автоматически включать запись во время трансляции"
101
+Basic.Settings.General.KeepRecordingWhenStreamStops="Продолжать запись после завершения трансляции"
102
 Basic.Settings.General.ReplayBufferWhileStreaming="Автоматически запускать буфер повтора во время трансляции"
103
-Basic.Settings.General.KeepReplayBufferStreamStops="Сохранять буфер повтора активным когда останавливается трансляция"
104
+Basic.Settings.General.KeepReplayBufferStreamStops="Сохранять буфер повтора активным после завершения трансляции"
105
 Basic.Settings.General.SysTray="Системный трей"
106
 Basic.Settings.General.SysTrayWhenStarted="Скрывать окно в системный трей при запуске"
107
 Basic.Settings.General.SystemTrayHideMinimize="Всегда сворачивать в трей вместо панели задач"
108
@@ -534,7 +534,7 @@
109
 Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(Примечание: Убедитесь, что установили горячую клавишу для воспроизведения буфера в разделе горячие клавиши)"
110
 Basic.Settings.Output.ReplayBuffer.Prefix="Префикс имени файла повтора"
111
 Basic.Settings.Output.ReplayBuffer.Suffix="Суффикс"
112
-Basic.Settings.Output.Simple.SavePath="Путь к записи"
113
+Basic.Settings.Output.Simple.SavePath="Путь записи"
114
 Basic.Settings.Output.Simple.RecordingQuality="Качество записи"
115
 Basic.Settings.Output.Simple.RecordingQuality.Stream="То же, что у трансляции"
116
 Basic.Settings.Output.Simple.RecordingQuality.Small="Высокое качество, средний размер файла"
117
@@ -552,8 +552,8 @@
118
 Basic.Settings.Output.Simple.Encoder.Hardware.AMD="Аппаратный (AМD)"
119
 Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Аппаратный (NVENC)"
120
 Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Программный (x264 с низкой нагрузкой на ЦП, увеличивает размер файла)"
121
-Basic.Settings.Output.VideoBitrate="Видео битрейт"
122
-Basic.Settings.Output.AudioBitrate="Аудио битрейт"
123
+Basic.Settings.Output.VideoBitrate="Битрейт видео"
124
+Basic.Settings.Output.AudioBitrate="Битрейт аудио"
125
 Basic.Settings.Output.Reconnect="Автопереподключение"
126
 Basic.Settings.Output.RetryDelay="Переподключиться через (секунд)"
127
 Basic.Settings.Output.MaxRetries="Количество попыток подключиться"
128
obs-studio-21.1.2.tar.xz/UI/data/locale/sq-AL.ini Added
172
 
1
@@ -0,0 +1,170 @@
2
+
3
+Language="Gjuha Angleze"
4
+Region="Shtetet e Bashkuara"
5
+
6
+OK="OK"
7
+Apply="Aplikoni"
8
+Cancel="Anuloni"
9
+Close="Mbylle"
10
+Save="Ruaj"
11
+Discard="Mos e ruaj"
12
+Disable="Çaktivizo"
13
+Yes="Po"
14
+No="Jo"
15
+Add="Shto"
16
+Remove="Largoje"
17
+Rename="Riemërto"
18
+Interact="Bashkëveprim"
19
+Filters="Filterar"
20
+Properties="Vetitë"
21
+MoveUp="Lëvize lart"
22
+MoveDown="Lëvize poshtë"
23
+Settings="Cilësimet"
24
+Display="Ekrani"
25
+Name="Emri"
26
+Exit="Dil"
27
+Mixer="Mikser"
28
+Browse="Shfleto"
29
+Mono="Mono"
30
+Stereo="Stereo"
31
+DroppedFrames="Kornizat e rëna %1 (%2%)"
32
+StudioProgramProjector="Projektor me ekran të plotë (Program)"
33
+PreviewProjector="Projektorë me ekran të plotë (Parashikim)"
34
+SceneProjector="Ekran me ekran të plotë (Skena)"
35
+SourceProjector="Projektorë me ekran të plotë (Burimi)"
36
+StudioProgramWindow="Projektor Windowed (Program)"
37
+PreviewWindow="Projektor Windowed (Parashikim)"
38
+SceneWindow="Projektor Windowed (Skena)"
39
+SourceWindow="Projektor Windowed (Burimi)"
40
+MultiviewProjector="Shumë pamje (Ekran i plotë)"
41
+MultiviewWindowed="Shumë pamje (Windowed)"
42
+Clear="Pastro"
43
+Revert="Rikthe"
44
+Show="Shfaq"
45
+Hide="Fsheh"
46
+UnhideAll="Zbuloni të gjitha"
47
+Untitled="I patitulluar"
48
+New="I ri"
49
+Duplicate="Dublikatë"
50
+Enable="Aktivizo"
51
+DisableOSXVSync="Çaktivizo OSX V-Sync"
52
+ResetOSXVSyncOnExit="Rivendos OSX V-Sync në Mbyllje"
53
+HighResourceUsage="Kodimi i mbingarkuar! Merrni parasysh uljen e cilësimeve të videos ose duke përdorur një parazgjedhje më të shpejtë të kodimit."
54
+Transition="Tranzicion"
55
+QuickTransitions="Tranzicione të shpejta"
56
+Left="Majtas"
57
+Right="Djathtas"
58
+Top="Kreu"
59
+Bottom="Fundi"
60
+Reset="Rivë"
61
+Hours="Orë"
62
+Minutes="Minuta"
63
+Seconds="Sekonda"
64
+Deprecated="I pazëvëndësueshëm"
65
+ReplayBuffer="Rifillimi Lustrues"
66
+Import="Importo"
67
+Export="Eksporto"
68
+Copy="Kopjo"
69
+Paste="Ngjit"
70
+PasteReference="Ngjit (Referim)"
71
+PasteDuplicate="Ngjit (Duplikatë)"
72
+RemuxRecordings="Regjistrimet e Remux"
73
+Next="Tjeter"
74
+Back="Prapa"
75
+Defaults="Parazgjedhura"
76
+HideMixer="Fshiheni në Mixer"
77
+TransitionOverride="Zhvendosja e tranzicionit"
78
+None="Asnje"
79
+StudioMode.Preview="Inspektim"
80
+StudioMode.Program="Program"
81
+ShowInMultiview="Shfaqe në Shumë Pamje"
82
+
83
+AlreadyRunning.Title="OBS tashmë po funksion"
84
+AlreadyRunning.Text="OBS tashmë po kandidon! Nëse nuk keni ndërmend ta bëni këtë, mbyllni çdo rast ekzistues të OBS para se të provoni të shkoni në një instancë të re. Nëse keni OBS vendosur për të minimizuar në tabaka e sistemit, ju lutemi kontrolloni për të parë nëse vazhdon të ekzekutohet atje."
85
+AlreadyRunning.LaunchAnyway="Filloje ne nje menyre"
86
+
87
+Copy.Filters="Kopjo Filterat"
88
+Paste.Filters="Ngjit Filterat"
89
+
90
+BandwidthTest.Region="Regjioni"
91
+BandwidthTest.Region.US="Shtetet e Bashkuara"
92
+BandwidthTest.Region.EU="Evropë"
93
+BandwidthTest.Region.Asia="Azi"
94
+BandwidthTest.Region.Other="Të tjera"
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
obs-studio-21.0.3.tar.xz/UI/data/locale/sv-SE.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/sv-SE.ini Changed
30
 
1
@@ -36,8 +36,8 @@
2
 PreviewWindow="Fönsterprojektor (förhandsvisning)"
3
 SceneWindow="Fönsterprojektor (scen)"
4
 SourceWindow="Fönsterprojektor (källa)"
5
-MultiviewProjector="Flervy (helskärm)"
6
-MultiviewWindowed="Flervy (fönster)"
7
+MultiviewProjector="Multivy (helskärm)"
8
+MultiviewWindowed="Multivy (fönster)"
9
 Clear="Rensa"
10
 Revert="Återgå"
11
 Show="Visa"
12
@@ -77,7 +77,7 @@
13
 None="Ingen"
14
 StudioMode.Preview="Förhandsvisning"
15
 StudioMode.Program="Program"
16
-ShowInMultiview="Visa i flervy"
17
+ShowInMultiview="Visa i multivy"
18
 
19
 AlreadyRunning.Title="OBS körs redan"
20
 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."
21
@@ -507,7 +507,7 @@
22
 Basic.Settings.General.SaveProjectors="Spara projektorer vid avslut"
23
 Basic.Settings.General.SwitchOnDoubleClick="Övergång till scen vid dubbelklick"
24
 Basic.Settings.General.StudioPortraitLayout="Aktivera porträtt-/vertikalt utseende"
25
-Basic.Settings.General.MultiviewLayout="Multivisningslayout"
26
+Basic.Settings.General.MultiviewLayout="Utseende för multivy"
27
 Basic.Settings.General.MultiviewLayout.Horizontal.Top="Horisontal, överkant"
28
 Basic.Settings.General.MultiviewLayout.Horizontal.Bottom="Horisontal, nederkant"
29
 Basic.Settings.General.MultiviewLayout.Vertical.Left="Vertikal, vänster"
30
obs-studio-21.1.2.tar.xz/UI/data/locale/tl-PH.ini Added
201
 
1
@@ -0,0 +1,751 @@
2
+
3
+Language="Ingles"
4
+Region="Estados Unidos"
5
+
6
+OK="OK"
7
+Apply="Gamitin"
8
+Cancel="Kanselahin"
9
+Close="Isara"
10
+Save="I-save"
11
+Discard="Alisin"
12
+Disable="I-disable"
13
+Yes="Oo"
14
+No="Hindi"
15
+Add="Idagdag"
16
+Remove="Tanggalin"
17
+Rename="Palitan ang pangalan"
18
+Interact="Interact"
19
+Filters="Pansala"
20
+Properties="Mga Katangian"
21
+MoveUp="I-taas"
22
+MoveDown="I-baba"
23
+Settings="Mga Setting"
24
+Display="Ipakita"
25
+Name="Pangalan"
26
+Exit="Lumabas"
27
+Mixer="Mixer"
28
+Browse="Browse"
29
+Mono="Mono"
30
+Stereo="Stereo"
31
+DroppedFrames="Mga imaheng hindi sinali %1 (%2%)"
32
+StudioProgramProjector="Fullscreen Projector (Programa)"
33
+PreviewProjector="Fullscreen Projector (Preview)"
34
+SceneProjector="Fullscreen Projector (Eksena)"
35
+SourceProjector="Fullscreen Projector (Pinagmulan)"
36
+StudioProgramWindow="Windowed Projector (Programa)"
37
+PreviewWindow="Windowed Projector (Preview)"
38
+SceneWindow="Windowed Projector (Eksena)"
39
+SourceWindow="Windowed Projector (Pinagmulan)"
40
+MultiviewProjector="Multiview (Fullscreen)"
41
+MultiviewWindowed="Multiview (Windowed)"
42
+Clear="Linisin"
43
+Revert="Ibalik"
44
+Show="Ipakita"
45
+Hide="Itago"
46
+UnhideAll="Ipakita Lahat"
47
+Untitled="Walang pamagat"
48
+New="Bago"
49
+Duplicate="Kahalintulad"
50
+Enable="I-enable"
51
+DisableOSXVSync="I-disable ang OSX V-Sync"
52
+ResetOSXVSyncOnExit="I-set muli ang OSX V-Sync sa Exit"
53
+HighResourceUsage="Labis na ang karga sa pag-eencode! Pagisipan ang pagpapababa ng mga video setting o ang pag-gamit ng mas mabilis na encoding preset."
54
+Transition="Transisyon"
55
+QuickTransitions="Mabilis na mga Transisyon"
56
+Left="Kaliwa"
57
+Right="Kanan"
58
+Top="Tuktok"
59
+Bottom="Pinakababa"
60
+Reset="I-set muli"
61
+Hours="Mga oras"
62
+Minutes="Mga minuto"
63
+Seconds="Mga segundo"
64
+Deprecated="Hindi na ginagamit"
65
+ReplayBuffer="Replay Buffer"
66
+Import="I-angkat"
67
+Export="I-export"
68
+Copy="Kopyahin"
69
+Paste="I-paste"
70
+PasteReference="I-paste (Reperensya)"
71
+PasteDuplicate="I-paste (Kopya)"
72
+RemuxRecordings="Remux Recordings"
73
+Next="Sunod"
74
+Back="Bumalik"
75
+Defaults="Mga Default"
76
+HideMixer="Itago sa Mixer"
77
+TransitionOverride="Pagpapawalang-bisa ng Transisyon"
78
+None="Wala"
79
+StudioMode.Preview="Preview"
80
+StudioMode.Program="Programa"
81
+ShowInMultiview="Ipakita sa Multiview"
82
+
83
+AlreadyRunning.Title="Ang OBS ay tumatakbo na"
84
+AlreadyRunning.Text="Ang OBS ay tumatakbo na! Kung hindi mo ito sinasadya, mangyari lamang patayin ang mga umiiral na OBS bago subukang magpatakbo ng bago. Kung ikaw ay may OBS set na kailangan i-minimize sa system tray, mangyari lamang tingnan kung ito ay tumatakbo pa doon."
85
+AlreadyRunning.LaunchAnyway="Ilunsad pa rin"
86
+
87
+Copy.Filters="Kopyahin ang mga Panala"
88
+Paste.Filters="I-paste ang mga Panala"
89
+
90
+BandwidthTest.Region="Rehiyon"
91
+BandwidthTest.Region.US="Estados Unidos"
92
+BandwidthTest.Region.EU="Europa"
93
+BandwidthTest.Region.Asia="Asya"
94
+BandwidthTest.Region.Other="Iba pa"
95
+
96
+Basic.FirstStartup.RunWizard="Nais mo bang patakbuhin ang auto-configuration wizard? Maaari mo ring i-configure ang iyong mga setting ng mano-mano sa pamamagitan ng pagpindot ng Settings na button sa pangunahing window."
97
+Basic.FirstStartup.RunWizard.BetaWarning="(Tandaan: Ang auto-configuration wizard ay kasukuyang nasa beta)"
98
+Basic.FirstStartup.RunWizard.NoClicked="Kung magbabago ang iyong isip, maaari mong patakbuhin ang auto-configuration wizard sa anumang oras mula muli sa Tools na menu."
99
+
100
+Basic.AutoConfig="Auto-Configuration Wizard"
101
+Basic.AutoConfig.Beta="Auto-Configuration Wizard (Beta)"
102
+Basic.AutoConfig.ApplySettings="Gamitin ang mga Setting"
103
+Basic.AutoConfig.StartPage="Impormasyon ukol sa Paggamit"
104
+Basic.AutoConfig.StartPage.SubTitle="Tukuyin kung para saan mo gustong gamitin ang programa"
105
+Basic.AutoConfig.StartPage.PrioritizeStreaming="I-optimize para sa pag-stream, pangalawa lamang pag-rerekord"
106
+Basic.AutoConfig.StartPage.PrioritizeRecording="I-optimize para lamang sa pag-rerekord, Hindi ako mag-iistream"
107
+Basic.AutoConfig.VideoPage="Mga Setting sa Video"
108
+Basic.AutoConfig.VideoPage.SubTitle="Tukuyin ang mga setting ng video na gusto mong gamitin"
109
+Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="Gamitin ang Pangkasalukuyang (%1x%2)"
110
+Basic.AutoConfig.VideoPage.BaseResolution.Display="Ipakita ang %1 (%2x%3)"
111
+Basic.AutoConfig.VideoPage.FPS.UseCurrent="Gamitin ang Pangkasalukuyang (%1)"
112
+Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="60 o 30, pero mas piliin ang 60 kung maaari"
113
+Basic.AutoConfig.VideoPage.FPS.PreferHighRes="60 o 30, pero mas piliin ang mataas na resolution"
114
+Basic.AutoConfig.VideoPage.CanvasExplanation="Tandaan: Ang kanbas (base) na resolution ay hindi kinakailangang katulad sa resolution na gagamitin mo sa pag-stream o pagrekord. Ang actual na resolution ng iyong stream/rekord ay maaaring pababain upang mabawasan ang gamit sa mga resource o mga kakailanganing bitrate."
115
+Basic.AutoConfig.StreamPage="Mag-stream ng Impormasyon"
116
+Basic.AutoConfig.StreamPage.SubTitle="Mangyari lamang ilagay ang impormasyon ng iyong pagstream"
117
+Basic.AutoConfig.StreamPage.Service="Serbisyo"
118
+Basic.AutoConfig.StreamPage.Service.ShowAll="Ipakita Lahat..."
119
+Basic.AutoConfig.StreamPage.Server="Serber"
120
+Basic.AutoConfig.StreamPage.StreamKey="Stream Key"
121
+Basic.AutoConfig.StreamPage.StreamKey.LinkToSite="(Link)"
122
+Basic.AutoConfig.StreamPage.PerformBandwidthTest="Estimahin ang bitrate gamit ang bandwith test (maaaring tumagal ng ilang minuto)"
123
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Mas piliin ang hardware encoding"
124
+Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="Ang Hardware Encoding ay nagtatanggal ng karamihan sa paggamit ng CPU, ngunit maaaring nangangailangan ito ng mas maraming bitrate upang magkaroon ng katulad na lebel ng kalidad."
125
+Basic.AutoConfig.StreamPage.StreamWarning.Title="Babala sa stream"
126
+Basic.AutoConfig.StreamPage.StreamWarning.Text="Ang bandwith test ay mag-iistream ng datos ng video nang walang audio sa iyong channel. Kung kaya mo, minumungkahi namin na pansamantala mong i-off ang pag-save ng mga video ng mga stream at gawing pribado ang stream hanggang sa matapos ang test. Magpatuloy?"
127
+Basic.AutoConfig.TestPage="Mga Huling Resulta"
128
+Basic.AutoConfig.TestPage.SubTitle.Testing="Ang programang ito ay nagapapatupad ngayon ng mga pagsusuri upang matantiya ang pinakamainam na mga setting"
129
+Basic.AutoConfig.TestPage.SubTitle.Complete="Natapos na ang pagsusuri"
130
+Basic.AutoConfig.TestPage.TestingBandwidth="Nagsasagaw ng bandwidth test, maaaring itong magtagal ng ilang minuto..."
131
+Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Kumukonekta sa: %1..."
132
+Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Bigong maka-konekta sa kahit anong mga serber, mangyari lamang suriin ang iyong koneksyon sa internet at subukan muli."
133
+Basic.AutoConfig.TestPage.TestingBandwidth.Server="Sinusuri ang bandwidth para sa: %1"
134
+Basic.AutoConfig.TestPage.TestingStreamEncoder="Sinusuri ang encoder ng stream, maaari itong magtagal ng isang minuto..."
135
+Basic.AutoConfig.TestPage.TestingRecordingEncoder="Sinusuri ang encoder para sa pagrekord, maaari itong magtagal ng isang minuto..."
136
+Basic.AutoConfig.TestPage.TestingRes="Sinusuri ang mga resolusyon, maaari itong magtagal ng ilang minuto..."
137
+Basic.AutoConfig.TestPage.TestingRes.Fail="Bigong mapatakbo ang encoder"
138
+Basic.AutoConfig.TestPage.TestingRes.Resolution="Sinusuri ang %1x%2 %3 FPS..."
139
+Basic.AutoConfig.TestPage.Result.StreamingEncoder="Encoder para sa Pag-stream"
140
+Basic.AutoConfig.TestPage.Result.RecordingEncoder="Encoder para sa Pagrekord"
141
+Basic.AutoConfig.TestPage.Result.Header="Napagtanto ng programa na ang mga setting na ito ang pinakamainam para sa iyo:"
142
+Basic.AutoConfig.TestPage.Result.Footer="Upang magamit ang mga setting, pindutin ang Apply Settings. Upang ma-configure muli ang wizard at subukang muli, pindutin ang Back. Upang ma-configure mo mismo nang mano-mano ang mga setting, pindutin ang Cancel at buksan ang mga Setting."
143
+
144
+Basic.Stats="Mga Statistika"
145
+Basic.Stats.CPUUsage="Paggamit ng CPU"
146
+Basic.Stats.HDDSpaceAvailable="Puwang sa HDD na magagamit pa"
147
+Basic.Stats.MemoryUsage="Paggamit ng Memorya"
148
+Basic.Stats.AverageTimeToRender="Karaniwang bilis upang ma-render ang frame"
149
+Basic.Stats.SkippedFrames="Mga nalaktawang imahe dahil sa antala sa pag-encode"
150
+Basic.Stats.MissedFrames="Mga imaheng di nakuha dahil sa antala sa pag-render"
151
+Basic.Stats.Output.Stream="Stream"
152
+Basic.Stats.Output.Recording="Pag-rerekord"
153
+Basic.Stats.Status="Estado"
154
+Basic.Stats.Status.Recording="Pagrerekord"
155
+Basic.Stats.Status.Live="LIVE"
156
+Basic.Stats.Status.Reconnecting="Muling kumukunekta"
157
+Basic.Stats.Status.Inactive="Hindi aktibo"
158
+Basic.Stats.DroppedFrames="Mga Imaheng hindi sinali (Network)"
159
+Basic.Stats.MegabytesSent="Kabuuan ng Output ng mga Datos"
160
+Basic.Stats.Bitrate="Bitrate"
161
+
162
+Updater.Title="Mga bagong update na magagamit"
163
+Updater.Text="Mayroong bagong update na magagamit:"
164
+Updater.UpdateNow="Iupdate na Ngayon"
165
+Updater.RemindMeLater="Paalalahanan ako Maya-maya"
166
+Updater.Skip="Laktawan ang Bersyon"
167
+Updater.Running.Title="Ang programa ay kasalukuyang aktibo"
168
+Updater.Running.Text="Ang mga output ay kasalukuyang aktibo, mangyari lamang i-shut down ang anumang mga output na aktibo bago subukang mag-update"
169
+Updater.NoUpdatesAvailable.Title="Walang mga update na magagamit"
170
+Updater.NoUpdatesAvailable.Text="Walang mga update ang kasalukuyang magagamit"
171
+Updater.FailedToLaunch="Bigong malunsad ang updater"
172
+Updater.GameCaptureActive.Title="Ang Game capture ay aktibo"
173
+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."
174
+
175
+QuickTransitions.SwapScenes="Pagpalitin ang Preview/Output ng mga Eksena Matapos ang Pag-transisyon"
176
+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."
177
+QuickTransitions.DuplicateScene="Gayahin ang Eksena"
178
+QuickTransitions.DuplicateSceneTT="Kapag nag-eedit ng kaparehong eksena, pinapahintulutan ang pag-edit ng transform/visibility ng mga pinanggalingan nang hindi binabago ang output.\nUpang ma-edit ang mga katangian ng mga pinagmulan nang hindi binabago ang output, paganahin ang 'Duplicate Sources'.\nAng pag-bago ng value na ito ang magseset muli ng pangkasalukuyang output na eksena (kung ito ay nariyan pa)."
179
+QuickTransitions.EditProperties="Gayahin ang mga Source"
180
+QuickTransitions.EditPropertiesTT="Kapag nag-eedit ng kaparehong eksena, pinapahintulutan ang pag-edit ng mga pinagmulan nang hindi binabago ang output.\nMaaari lamang itong gamitin kung ang 'Duplicate Scene' ay gumagana.\nMayroong mga source (tulad ng capture o mga media source) na hindi hindi ito sinusuportahan at hindi maaaring i-edit nang nakahiwalay.\nAng pagbabago ng value na ito ang magseset muli ng kasalukuyang output na eksena (kung nariyan pa ito).\n\nBabala: Dahil kokopyahin ang mga source, maaari itong mangailangan ng dagdag na system o mga video source."
181
+QuickTransitions.HotkeyName="Mabilis na Transisyon: %1"
182
+
183
+Basic.AddTransition="Idagdag ang Configurable na Transisyon"
184
+Basic.RemoveTransition="Alisin ang Configurable na Transisyon"
185
+Basic.TransitionProperties="Mga Katangian ng Transisyon"
186
+Basic.SceneTransitions="Mga Transisyon ng Eksena"
187
+Basic.TransitionDuration="Tagal"
188
+Basic.TogglePreviewProgramMode="Studio Mode"
189
+
190
+TransitionNameDlg.Text="Mangyari lamang ilagay ang pangalan ng transisyon"
191
+TransitionNameDlg.Title="Pangalan ng Transition"
192
+
193
+TitleBar.Profile="Profile"
194
+TitleBar.Scenes="Mga Eksena"
195
+
196
+NameExists.Title="Ang pangalan ay umiiral na"
197
+NameExists.Text="Ang pangalan na ito ay ginagamit na."
198
+
199
+NoNameEntered.Title="Mangyari lamang magbigay ng balidong pangalan"
200
+NoNameEntered.Text="Hindi maaaring walang pangalan."
201
obs-studio-21.0.3.tar.xz/UI/data/locale/tr-TR.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/tr-TR.ini Changed
12
 
1
@@ -631,6 +631,10 @@
2
 Basic.Settings.Audio="Ses"
3
 Basic.Settings.Audio.SampleRate="Örnekleme Sıklığı"
4
 Basic.Settings.Audio.Channels="Kanallar"
5
+Basic.Settings.Audio.MeterDecayRate="Ses Ölçer Sönüm Hızı"
6
+Basic.Settings.Audio.MeterDecayRate.Fast="Hızlı"
7
+Basic.Settings.Audio.MeterDecayRate.Medium="Orta (Tür I PPM)"
8
+Basic.Settings.Audio.MeterDecayRate.Slow="Yavaş (Tür II PPM)"
9
 Basic.Settings.Audio.MultiChannelWarning.Enabled="Uyarı: Surround ses etkin."
10
 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."
11
 Basic.Settings.Audio.MultichannelWarning.Title="Surround ses etkinleştirilsin mi?"
12
obs-studio-21.0.3.tar.xz/UI/data/locale/zh-CN.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/zh-CN.ini Changed
12
 
1
@@ -631,6 +631,10 @@
2
 Basic.Settings.Audio="音频"
3
 Basic.Settings.Audio.SampleRate="采样率"
4
 Basic.Settings.Audio.Channels="声道"
5
+Basic.Settings.Audio.MeterDecayRate="音频表衰减率"
6
+Basic.Settings.Audio.MeterDecayRate.Fast="快速"
7
+Basic.Settings.Audio.MeterDecayRate.Medium="中速(峰值电平表I型)"
8
+Basic.Settings.Audio.MeterDecayRate.Slow="慢速(峰值电平表II型)"
9
 Basic.Settings.Audio.MultiChannelWarning.Enabled="警告: 已启用环绕声音频。"
10
 Basic.Settings.Audio.MultichannelWarning="如果串流, 请检查串流服务是否支持环绕立体声接收和环绕立体声播放。 Twitch, Facebook 360 Live, Mixer RTMP, Smashcast 是充分支持环绕立体声的例子。 虽然 Facebook Live 和 Youtube Live 都支持环绕立体声接收, 但是Facebook Live 降低混合至立体声, 而 Youtube Live 则只播放两个声道。\n\nOBS 音频过滤器与环绕立体声兼容, 但 VST 插件支持无法保证。"
11
 Basic.Settings.Audio.MultichannelWarning.Title="是否启用环绕立体声?"
12
obs-studio-21.0.3.tar.xz/UI/data/locale/zh-TW.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale/zh-TW.ini Changed
12
 
1
@@ -631,6 +631,10 @@
2
 Basic.Settings.Audio="音效"
3
 Basic.Settings.Audio.SampleRate="取樣頻率"
4
 Basic.Settings.Audio.Channels="通道數"
5
+Basic.Settings.Audio.MeterDecayRate="音量計衰減速率"
6
+Basic.Settings.Audio.MeterDecayRate.Fast="快速"
7
+Basic.Settings.Audio.MeterDecayRate.Medium="中 (Type I PPM)"
8
+Basic.Settings.Audio.MeterDecayRate.Slow="慢 (Type II PPM)"
9
 Basic.Settings.Audio.MultiChannelWarning.Enabled="警告: 已啟用環繞聲音訊。"
10
 Basic.Settings.Audio.MultichannelWarning="如果是流媒體,請檢查您的流媒體服務是否同時支持環繞聲攝取和環繞聲播放。 Twitch,Facebook 360 Live,Mixer RTMP,Smashcast都是完全支持環繞聲的例子。 儘管Facebook Live和YouTube Live都接受環繞聲攝取,但是Facebook Live會混音為立體聲,而YouTube Live只播放兩個聲道。\n\n 儘管不支持VST插件,但OBS音頻濾波器與環繞聲兼容。"
11
 Basic.Settings.Audio.MultichannelWarning.Title="是否啟用環繞聲音訊?"
12
obs-studio-21.0.3.tar.xz/UI/forms/OBSBasic.ui -> obs-studio-21.1.2.tar.xz/UI/forms/OBSBasic.ui Changed
57
 
1
@@ -33,6 +33,9 @@
2
   <property name="styleSheet">
3
    <string notr="true"/>
4
   </property>
5
+  <property name="dockOptions">
6
+   <set>QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks</set>
7
+  </property>
8
   <widget class="QWidget" name="centralwidget">
9
    <layout class="QVBoxLayout" name="verticalLayout">
10
     <item>
11
@@ -134,10 +137,19 @@
12
      <addaction name="actionUploadLastLog"/>
13
      <addaction name="actionViewCurrentLog"/>
14
     </widget>
15
+    <widget class="QMenu" name="menuCrashLogs">
16
+     <property name="title">
17
+      <string>Basic.MainMenu.Help.CrashLogs</string>
18
+     </property>
19
+     <addaction name="actionShowCrashLogs"/>
20
+     <addaction name="actionUploadLastCrashLog"/>
21
+    </widget>
22
     <addaction name="actionHelpPortal"/>
23
     <addaction name="actionWebsite"/>
24
     <addaction name="separator"/>
25
     <addaction name="menuLogFiles"/>
26
+    <addaction name="menuCrashLogs"/>
27
+    <addaction name="separator"/>
28
     <addaction name="actionCheckForUpdates"/>
29
    </widget>
30
    <widget class="QMenu" name="menuBasic_MainMenu_Edit">
31
@@ -182,7 +194,7 @@
32
      <addaction name="actionScaleCanvas"/>
33
      <addaction name="actionScaleOutput"/>
34
     </widget>
35
-    <action name="actionCopySource">    
36
+    <action name="actionCopySource">
37
      <property name="text">
38
       <string>Copy</string>
39
      </property>
40
@@ -1579,6 +1591,16 @@
41
     <string>Basic.MainMenu.Help.HelpPortal</string>
42
    </property>
43
   </action>
44
+  <action name="actionShowCrashLogs">
45
+   <property name="text">
46
+    <string>Basic.MainMenu.Help.CrashLogs.ShowLogs</string>
47
+   </property>
48
+  </action>
49
+  <action name="actionUploadLastCrashLog">
50
+   <property name="text">
51
+    <string>Basic.MainMenu.Help.CrashLogs.UploadLastLog</string>
52
+   </property>
53
+  </action>
54
  </widget>
55
  <customwidgets>
56
   <customwidget>
57
obs-studio-21.1.2.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/fil-PH.ini Added
44
 
1
@@ -0,0 +1,42 @@
2
+SceneSwitcher="Awyomatikong Eskana Tagalipat"
3
+SceneSwitcher.OnNoMatch="Kapag walang tumutugma sa bintana:"
4
+SceneSwitcher.OnNoMatch.DontSwitch="Huwag lumipat"
5
+SceneSwitcher.OnNoMatch.SwitchTo="Lumipat sa:"
6
+SceneSwitcher.CheckInterval="Suriin ang aktibong pamagat ng bintana bawat:"
7
+SceneSwitcher.ActiveOrNotActive="Ang Eskana Tagalipat ay:"
8
+InvalidRegex.Title="Di-wastong Regular Expression"
9
+InvalidRegex.Text="Siya ay regular na expression na ipinasok mo ay hindi wasto."
10
+Active="Aktibo"
11
+Inactive="Di-aktibo"
12
+Start="Magsimula"
13
+Stop="Ihinto"
14
+
15
+Captions="Mga Caption (Experimental)"
16
+Captions.AudioSource="Pinagmulan ng audio"
17
+Captions.CurrentSystemLanguage="Kasalukuyang Wika ng Wika (%1)"
18
+Captions.Provider="Tagapagbigay"
19
+Captions.Error.GenericFail="Nabigong magsimula ng mga caption"
20
+
21
+OutputTimer="Output ng Timer"
22
+OutputTimer.Stream="Itigil ang streaming pagkatapos:"
23
+OutputTimer.Record="Itigil ang pag-record pagkatapos ng:"
24
+OutputTimer.Stream.StoppingIn="Ang pagtigil ng streaming sa:"
25
+OutputTimer.Record.StoppingIn="Pagre-record ng pagtigil sa:"
26
+OutputTimer.Stream.EnableEverytime="Paganahin ang streaming timer sa bawat oras"
27
+OutputTimer.Record.EnableEverytime="Paganahin ang timer ng pag-record sa bawat oras"
28
+
29
+Scripts="Mga script"
30
+LoadedScripts="Mga Loaded na Mga Script"
31
+AddScripts="Magdagdag ng Mga Script"
32
+RemoveScripts="Alisin ang Mga Script"
33
+ReloadScripts="I-reload ang Mga Script"
34
+PythonSettings="Mga Setting ng Python"
35
+PythonSettings.PythonInstallPath32bit="Path ng Pag-install ng Python (32bit)"
36
+PythonSettings.PythonInstallPath64bit="Path ng Pag-install ng Python (64bit)"
37
+PythonSettings.BrowsePythonPath="Mag-browse sa Python Path"
38
+ScriptLogWindow="Mag-log ng Script"
39
+Description="Paglalarawan"
40
+
41
+FileFilter.ScriptFiles="Mga File ng Script"
42
+FileFilter.AllFiles="Lahat ng Mga File"
43
+
44
obs-studio-21.0.3.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/he-IL.ini -> obs-studio-21.1.2.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/he-IL.ini Changed
27
 
1
@@ -1,7 +1,9 @@
2
+SceneSwitcher="החלפת סצנה אוטומטית"
3
 SceneSwitcher.OnNoMatch="כאשר אין חלון מתאים:"
4
 SceneSwitcher.OnNoMatch.DontSwitch="אל תעבור"
5
 SceneSwitcher.OnNoMatch.SwitchTo="עבור ל:"
6
 SceneSwitcher.CheckInterval="בדוק כותרת חלון פעיל בכל:"
7
+SceneSwitcher.ActiveOrNotActive="החלפת סצנה זה:"
8
 InvalidRegex.Title="ביטוי רגולרי לא חוקי"
9
 InvalidRegex.Text="הביטוי הרגולרי שהזנת אינו חוקי."
10
 Active="פעיל"
11
@@ -23,6 +25,15 @@
12
 OutputTimer.Stream.EnableEverytime="הפעל טיימר הזרמה כל פעם"
13
 OutputTimer.Record.EnableEverytime="הפעל טיימר הקלטה כל פעם"
14
 
15
+Scripts="תסריטים"
16
+LoadedScripts="תסריטים טעונים"
17
+AddScripts="הוסף תסריט"
18
+RemoveScripts="מחק תסריטים"
19
+ReloadScripts="טען מחדש תסריטים"
20
+PythonSettings="הגדרות פייתון"
21
+PythonSettings.PythonInstallPath32bit="נתיב התקנת פייתון (32 סיביות)"
22
+PythonSettings.PythonInstallPath64bit="התקנת נתיב פייתון (64 סיביות)"
23
+PythonSettings.BrowsePythonPath="עיון בנתיב פייתון"
24
 ScriptLogWindow="סקריפט לוג"
25
 Description="תיאור"
26
 
27
obs-studio-21.0.3.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/ka-GE.ini -> obs-studio-21.1.2.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/ka-GE.ini Changed
44
 
1
@@ -1,11 +1,42 @@
2
+SceneSwitcher="სცენის თვითგადამრთველი"
3
+SceneSwitcher.OnNoMatch="როცა არცერთი ფანჯარა არ ემთხვევა:"
4
+SceneSwitcher.OnNoMatch.DontSwitch="არ გადაირთოს"
5
+SceneSwitcher.OnNoMatch.SwitchTo="გადაირთოს:"
6
+SceneSwitcher.CheckInterval="მოქმედი ფანჯრის დასახელების გადამოწმების დროის შუალედი:"
7
+SceneSwitcher.ActiveOrNotActive="სცენის თვითგადამრთველი:"
8
+InvalidRegex.Title="არამართებული რეგულარული გამოსახულება"
9
+InvalidRegex.Text="შეყვანილი რეგულარული გამოსახულება არასწორია."
10
 Active="ჩართული"
11
 Inactive="გამორთული"
12
 Start="დაწყება"
13
 Stop="შეწყვეტა"
14
 
15
+Captions="წარწერები (საცდელი)"
16
 Captions.AudioSource="აუდიოს წყარო"
17
+Captions.CurrentSystemLanguage="სისტემის მიმდინარე ენა (%1)"
18
+Captions.Provider="მომწოდებელი"
19
+Captions.Error.GenericFail="წარწერების დადება ვერ მოხერხდა"
20
 
21
+OutputTimer="ჩაწერის და ნაკადის წამზომი"
22
+OutputTimer.Stream="ნაკადი გაეშვას არაუმეტეს:"
23
+OutputTimer.Record="ჩაწერა გაგრძელდეს არაუმეტეს:"
24
+OutputTimer.Stream.StoppingIn="ნაკადის შეჩერების დროა:"
25
 OutputTimer.Record.StoppingIn="ჩაწერის შეწყვეტის დრო:"
26
+OutputTimer.Stream.EnableEverytime="ნაკადის წამზომის ჩართვა ყოველ ჯერზე"
27
+OutputTimer.Record.EnableEverytime="ჩაწერის წამზომის ჩართვა ყოველ ჯერზე"
28
 
29
+Scripts="სკრიპტები"
30
+LoadedScripts="ჩატვირთული სკრიპტები"
31
+AddScripts="სკრიპტების დამატება"
32
+RemoveScripts="სკრიპტების მოცილება"
33
+ReloadScripts="სკრიპტების გადატვირთვა"
34
+PythonSettings="Python-ის პარამეტრები"
35
+PythonSettings.PythonInstallPath32bit="Python-ის დასაყენებელი მდებარეობა (32bit)"
36
+PythonSettings.PythonInstallPath64bit="Python-ის დასაყენებელი მდებარეობა (64bit)"
37
+PythonSettings.BrowsePythonPath="Python-ის მდებარეობის მოძიება"
38
+ScriptLogWindow="სკრიპტის აღრიცხვა"
39
+Description="აღწერილობა"
40
 
41
+FileFilter.ScriptFiles="სკრიპტის ფაილები"
42
+FileFilter.AllFiles="ყველა ფაილი"
43
 
44
obs-studio-21.0.3.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/nb-NO.ini -> obs-studio-21.1.2.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/nb-NO.ini Changed
18
 
1
@@ -1,4 +1,4 @@
2
-SceneSwitcher="Automatisk Scene Skifter"
3
+SceneSwitcher="Automatisk sceneskifter"
4
 SceneSwitcher.OnNoMatch="Når ingen vindu passer overens:"
5
 SceneSwitcher.OnNoMatch.DontSwitch="Ikke bytt"
6
 SceneSwitcher.OnNoMatch.SwitchTo="Bytt til:"
7
@@ -22,8 +22,8 @@
8
 OutputTimer.Record="Stopp opptak etter:"
9
 OutputTimer.Stream.StoppingIn="Streaming stopper om:"
10
 OutputTimer.Record.StoppingIn="Opptak stopper om:"
11
-OutputTimer.Stream.EnableEverytime="Aktiver streaming timer hver gang"
12
-OutputTimer.Record.EnableEverytime="Aktiver opptaks timer hver gang"
13
+OutputTimer.Stream.EnableEverytime="Aktiver strømmeklokken hver gang"
14
+OutputTimer.Record.EnableEverytime="Aktiver opptaksklokken hver gang"
15
 
16
 Scripts="Skripter"
17
 LoadedScripts="Innlastede skripter"
18
obs-studio-21.0.3.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/ru-RU.ini -> obs-studio-21.1.2.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/ru-RU.ini Changed
18
 
1
@@ -17,12 +17,12 @@
2
 Captions.Provider="Поставщик"
3
 Captions.Error.GenericFail="Не удалось запустить субтитры"
4
 
5
-OutputTimer="Таймер записи и стрима"
6
-OutputTimer.Stream="Завершить стрим через:"
7
+OutputTimer="Таймер записи и трансляции"
8
+OutputTimer.Stream="Завершить трансляцию через:"
9
 OutputTimer.Record="Завершить запись через:"
10
-OutputTimer.Stream.StoppingIn="Стрим будет завершён через:"
11
+OutputTimer.Stream.StoppingIn="Трансляция будет завершена через:"
12
 OutputTimer.Record.StoppingIn="Запись будет завершена через:"
13
-OutputTimer.Stream.EnableEverytime="Включать таймер стрима каждый раз"
14
+OutputTimer.Stream.EnableEverytime="Включать таймер трансляции каждый раз"
15
 OutputTimer.Record.EnableEverytime="Включать таймер записи каждый раз"
16
 
17
 Scripts="Скрипты"
18
obs-studio-21.1.2.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/tl-PH.ini Added
44
 
1
@@ -0,0 +1,42 @@
2
+SceneSwitcher="Awtomatikong Taga-palit ng Eksena"
3
+SceneSwitcher.OnNoMatch="Kapag walang tumugmang window:"
4
+SceneSwitcher.OnNoMatch.DontSwitch="Huwag lumipat"
5
+SceneSwitcher.OnNoMatch.SwitchTo="Lumipat sa:"
6
+SceneSwitcher.CheckInterval="Suriin ang pamagat ng aktibong window kada:"
7
+SceneSwitcher.ActiveOrNotActive="Ang Tag-palit ng Eksena ay:"
8
+InvalidRegex.Title="Di-wastong Regular Expression"
9
+InvalidRegex.Text="Ang regular na ekspresyon na iyong ipinasok ay imbalido."
10
+Active="Aktibo"
11
+Inactive="Hindi aktibo"
12
+Start="Simula"
13
+Stop="Ihinto"
14
+
15
+Captions="Mga Pamagat (Eksparimento)"
16
+Captions.AudioSource="Pinanggalingan ng Audio"
17
+Captions.CurrentSystemLanguage="Kasalukuyang linggwahe ng sistema (%1)"
18
+Captions.Provider="Tagapagtustos"
19
+Captions.Error.GenericFail="Nabigo sa pasisimula ng mga pamagat"
20
+
21
+OutputTimer="Pamlabas na Orasan"
22
+OutputTimer.Stream="Itigil ang pag-stream pagkatapos:"
23
+OutputTimer.Record="Itigil ang pagtatala pagkatapos:"
24
+OutputTimer.Stream.StoppingIn="Ang pagtigil ng stream sa:"
25
+OutputTimer.Record.StoppingIn="Ang pagtigil ng pagtatala sa:"
26
+OutputTimer.Stream.EnableEverytime="Paganahin ang streaming timer sa bawat oras"
27
+OutputTimer.Record.EnableEverytime="Paganahin ang timer ng pagtatala bawat oras"
28
+
29
+Scripts="Mga iskrip"
30
+LoadedScripts="Mga iskrip na naikarga"
31
+AddScripts="Magdagdag ng iskrip"
32
+RemoveScripts="Tanggalin ang mga iskrip"
33
+ReloadScripts="Ikargang muli ang mga Iskrip"
34
+PythonSettings="Mga Setting Python"
35
+PythonSettings.PythonInstallPath32bit="I-install ang daan sa Python (32bit)"
36
+PythonSettings.PythonInstallPath64bit="I-install ang Daan sa Python (64bit)"
37
+PythonSettings.BrowsePythonPath="Daan ng Browse Python"
38
+ScriptLogWindow="Mag-log sa Iskrip"
39
+Description="Paglalarawan"
40
+
41
+FileFilter.ScriptFiles="Mga File ng Iskrip"
42
+FileFilter.AllFiles="Lahat ng mga File"
43
+
44
obs-studio-21.0.3.tar.xz/UI/obs-app.cpp -> obs-studio-21.1.2.tar.xz/UI/obs-app.cpp Changed
128
 
1
@@ -60,6 +60,7 @@
2
 
3
 static string currentLogFile;
4
 static string lastLogFile;
5
+static string lastCrashLogFile;
6
 
7
 bool portable_mode = false;
8
 static bool multi = false;
9
@@ -1051,6 +1052,11 @@
10
    return currentLogFile.c_str();
11
 }
12
 
13
+const char *OBSApp::GetLastCrashLog() const
14
+{
15
+   return lastCrashLogFile.c_str();
16
+}
17
+
18
 bool OBSApp::TranslateString(const char *lookupVal, const char **out) const
19
 {
20
    for (obs_frontend_translate_ui_cb cb : translatorHooks) {
21
@@ -1097,13 +1103,18 @@
22
    return strref_cmp(&token.text, str) == 0;
23
 }
24
 
25
-static uint64_t convert_log_name(const char *name)
26
+static uint64_t convert_log_name(bool has_prefix, const char *name)
27
 {
28
    BaseLexer  lex;
29
    string     year, month, day, hour, minute, second;
30
 
31
    lexer_start(lex, name);
32
 
33
+   if (has_prefix) {
34
+       string temp;
35
+       if (!get_token(lex, temp, BASETOKEN_ALPHA)) return 0;
36
+   }
37
+
38
    if (!get_token(lex, year,   BASETOKEN_DIGIT)) return 0;
39
    if (!expect_token(lex, "-", BASETOKEN_OTHER)) return 0;
40
    if (!get_token(lex, month,  BASETOKEN_DIGIT)) return 0;
41
@@ -1120,7 +1131,7 @@
42
    return std::stoull(timestring.str());
43
 }
44
 
45
-static void delete_oldest_file(const char *location)
46
+static void delete_oldest_file(bool has_prefix, const char *location)
47
 {
48
    BPtr<char>       logDir(GetConfigPathPtr(location));
49
    string           oldestLog;
50
@@ -1138,7 +1149,8 @@
51
            if (entry->directory || *entry->d_name == '.')
52
                continue;
53
 
54
-           uint64_t ts = convert_log_name(entry->d_name);
55
+           uint64_t ts = convert_log_name(has_prefix,
56
+                   entry->d_name);
57
 
58
            if (ts) {
59
                if (ts < oldest_ts) {
60
@@ -1161,9 +1173,10 @@
61
    }
62
 }
63
 
64
-static void get_last_log(void)
65
+static void get_last_log(bool has_prefix, const char *subdir_to_use,
66
+       std::string &last)
67
 {
68
-   BPtr<char>       logDir(GetConfigPathPtr("obs-studio/logs"));
69
+   BPtr<char>       logDir(GetConfigPathPtr(subdir_to_use));
70
    struct os_dirent *entry;
71
    os_dir_t         *dir        = os_opendir(logDir);
72
    uint64_t         highest_ts = 0;
73
@@ -1173,11 +1186,12 @@
74
            if (entry->directory || *entry->d_name == '.')
75
                continue;
76
 
77
-           uint64_t ts = convert_log_name(entry->d_name);
78
+           uint64_t ts = convert_log_name(has_prefix,
79
+                   entry->d_name);
80
 
81
            if (ts > highest_ts) {
82
-               lastLogFile = entry->d_name;
83
-               highest_ts  = ts;
84
+               last = entry->d_name;
85
+               highest_ts = ts;
86
            }
87
        }
88
 
89
@@ -1240,7 +1254,10 @@
90
 {
91
    stringstream dst;
92
 
93
-   get_last_log();
94
+   get_last_log(false, "obs-studio/logs", lastLogFile);
95
+#ifdef _WIN32
96
+   get_last_log(true, "obs-studio/crashes", lastCrashLogFile);
97
+#endif
98
 
99
    currentLogFile = GenerateTimeDateFilename("txt");
100
    dst << "obs-studio/logs/" << currentLogFile.c_str();
101
@@ -1258,7 +1275,7 @@
102
 #endif
103
 
104
    if (logFile.is_open()) {
105
-       delete_oldest_file("obs-studio/logs");
106
+       delete_oldest_file(false, "obs-studio/logs");
107
        base_set_log_handler(do_log, &logFile);
108
    } else {
109
        blog(LOG_ERROR, "Failed to open log file");
110
@@ -1354,7 +1371,7 @@
111
        OBSTranslator translator;
112
 
113
        create_log_file(logFile);
114
-       delete_oldest_file("obs-studio/profiler_data");
115
+       delete_oldest_file(false, "obs-studio/profiler_data");
116
 
117
        program.installTranslator(&translator);
118
 
119
@@ -1441,7 +1458,7 @@
120
    vsnprintf(text, MAX_CRASH_REPORT_SIZE, format, args);
121
    text[MAX_CRASH_REPORT_SIZE - 1] = 0;
122
 
123
-   delete_oldest_file("obs-studio/crashes");
124
+   delete_oldest_file(true, "obs-studio/crashes");
125
 
126
    string name = "obs-studio/crashes/Crash ";
127
    name += GenerateTimeDateFilename("txt");
128
obs-studio-21.0.3.tar.xz/UI/obs-app.hpp -> obs-studio-21.1.2.tar.xz/UI/obs-app.hpp Changed
10
 
1
@@ -116,6 +116,8 @@
2
    const char *GetLastLog() const;
3
    const char *GetCurrentLog() const;
4
 
5
+   const char *GetLastCrashLog() const;
6
+
7
    std::string GetVersionString() const;
8
    bool IsPortableMode();
9
 
10
obs-studio-21.0.3.tar.xz/UI/properties-view.cpp -> obs-studio-21.1.2.tar.xz/UI/properties-view.cpp Changed
19
 
1
@@ -236,7 +236,7 @@
2
 {
3
    const char    *name = obs_property_name(prop);
4
    const char    *val  = obs_data_get_string(settings, name);
5
-   obs_text_type type  = obs_proprety_text_type(prop);
6
+   obs_text_type type  = obs_property_text_type(prop);
7
 
8
    if (type == OBS_TEXT_MULTILINE) {
9
        QPlainTextEdit *edit = new QPlainTextEdit(QT_UTF8(val));
10
@@ -1529,7 +1529,7 @@
11
 
12
 void WidgetInfo::TextChanged(const char *setting)
13
 {
14
-   obs_text_type type  = obs_proprety_text_type(property);
15
+   obs_text_type type  = obs_property_text_type(property);
16
 
17
    if (type == OBS_TEXT_MULTILINE) {
18
        QPlainTextEdit *edit = static_cast<QPlainTextEdit*>(widget);
19
obs-studio-21.0.3.tar.xz/UI/win-update/updater/hash.cpp -> obs-studio-21.1.2.tar.xz/UI/win-update/updater/hash.cpp Changed
21
 
1
@@ -1,3 +1,19 @@
2
+/*
3
+ * Copyright (c) 2017-2018 Hugh Bailey <obs.jim@gmail.com>
4
+ *
5
+ * Permission to use, copy, modify, and distribute this software for any
6
+ * purpose with or without fee is hereby granted, provided that the above
7
+ * copyright notice and this permission notice appear in all copies.
8
+ *
9
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
+ */
17
+
18
 #include "updater.hpp"
19
 
20
 #include <util/windows/WinHandle.hpp>
21
obs-studio-21.0.3.tar.xz/UI/win-update/updater/http.cpp -> obs-studio-21.1.2.tar.xz/UI/win-update/updater/http.cpp Changed
21
 
1
@@ -1,3 +1,19 @@
2
+/*
3
+ * Copyright (c) 2017-2018 Hugh Bailey <obs.jim@gmail.com>
4
+ *
5
+ * Permission to use, copy, modify, and distribute this software for any
6
+ * purpose with or without fee is hereby granted, provided that the above
7
+ * copyright notice and this permission notice appear in all copies.
8
+ *
9
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
+ */
17
+
18
 #include "Updater.hpp"
19
 
20
 #include <algorithm>
21
obs-studio-21.0.3.tar.xz/UI/win-update/updater/patch.cpp -> obs-studio-21.1.2.tar.xz/UI/win-update/updater/patch.cpp Changed
43
 
1
@@ -1,9 +1,31 @@
2
+/*
3
+ * Copyright (c) 2017-2018 Hugh Bailey <obs.jim@gmail.com>
4
+ *
5
+ * Permission to use, copy, modify, and distribute this software for any
6
+ * purpose with or without fee is hereby granted, provided that the above
7
+ * copyright notice and this permission notice appear in all copies.
8
+ *
9
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
+ */
17
+
18
 #include "updater.hpp"
19
 
20
 #include <stdint.h>
21
 #include <vector>
22
 
23
-#include <lzma.h>
24
+#ifdef _MSC_VER
25
+# define restrict __restrict
26
+# include <lzma.h>
27
+# undef restrict
28
+#else
29
+# include <lzma.h>
30
+#endif
31
 
32
 using namespace std;
33
 
34
@@ -234,7 +256,7 @@
35
 
36
    vector<uint8_t> newData;
37
    try {
38
-       newData.resize(newsize);
39
+       newData.resize((size_t)newsize);
40
    } catch (...) {
41
        throw int(-1);
42
    }
43
obs-studio-21.0.3.tar.xz/UI/win-update/updater/updater.cpp -> obs-studio-21.1.2.tar.xz/UI/win-update/updater/updater.cpp Changed
201
 
1
@@ -1,20 +1,18 @@
2
-/******************************************************************************
3
- Copyright (C) 2017 Hugh Bailey <obs.jim@gmail.com>
4
-
5
- This program is free software; you can redistribute it and/or modify
6
- it under the terms of the GNU General Public License as published by
7
- the Free Software Foundation; either version 2 of the License, or
8
- (at your option) any later version.
9
-
10
- This program is distributed in the hope that it will be useful,
11
- but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
- GNU General Public License for more details.
14
-
15
- You should have received a copy of the GNU General Public License
16
- along with this program; if not, write to the Free Software
17
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
18
-******************************************************************************/
19
+/*
20
+ * Copyright (c) 2017-2018 Hugh Bailey <obs.jim@gmail.com>
21
+ *
22
+ * Permission to use, copy, modify, and distribute this software for any
23
+ * purpose with or without fee is hereby granted, provided that the above
24
+ * copyright notice and this permission notice appear in all copies.
25
+ *
26
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
27
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
28
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
29
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
30
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
31
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
32
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
33
+ */
34
 
35
 #include "updater.hpp"
36
 
37
@@ -59,50 +57,48 @@
38
 
39
 /* ----------------------------------------------------------------------- */
40
 
41
-// http://www.codeproject.com/Articles/320748/Haephrati-Elevating-during-runtime
42
-static bool IsAppRunningAsAdminMode()
43
+static inline bool is_64bit_windows(void);
44
+
45
+static inline bool HasVS2017Redist2()
46
 {
47
-   BOOL  fIsRunAsAdmin        = FALSE;
48
-   DWORD dwError              = ERROR_SUCCESS;
49
-   PSID  pAdministratorsGroup = nullptr;
50
-
51
-   /* Allocate and initialize a SID of the administrators group. */
52
-   SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
53
-   if (!AllocateAndInitializeSid(&NtAuthority,
54
-                                 2,
55
-                                 SECURITY_BUILTIN_DOMAIN_RID,
56
-                                 DOMAIN_ALIAS_RID_ADMINS,
57
-                                 0,
58
-                                 0,
59
-                                 0,
60
-                                 0,
61
-                                 0,
62
-                                 0,
63
-                                 &pAdministratorsGroup)) {
64
-       dwError = GetLastError();
65
-       goto Cleanup;
66
-   }
67
+   wchar_t base[MAX_PATH];
68
+   wchar_t path[MAX_PATH];
69
+   WIN32_FIND_DATAW wfd;
70
+   HANDLE handle;
71
+   int folder = (is32bit && is_64bit_windows())
72
+       ? CSIDL_SYSTEMX86
73
+       : CSIDL_SYSTEM;
74
 
75
-   /* Determine whether the SID of administrators group is enabled in the
76
-    * primary access token of the process. */
77
-   if (!CheckTokenMembership(nullptr, pAdministratorsGroup,
78
-               &fIsRunAsAdmin)) {
79
-       dwError = GetLastError();
80
-       goto Cleanup;
81
-   }
82
+   SHGetFolderPathW(NULL, folder, NULL, SHGFP_TYPE_CURRENT, base);
83
 
84
-Cleanup:
85
-   /* Centralized cleanup for all allocated resources. */
86
-   if (pAdministratorsGroup) {
87
-       FreeSid(pAdministratorsGroup);
88
-       pAdministratorsGroup = nullptr;
89
+   StringCbCopyW(path, sizeof(path), base);
90
+   StringCbCatW(path, sizeof(path), L"\\msvcp140.dll");
91
+   handle = FindFirstFileW(path, &wfd);
92
+   if (handle == INVALID_HANDLE_VALUE) {
93
+       return false;
94
+   } else {
95
+       FindClose(handle);
96
    }
97
 
98
-   /* Throw the error if something failed in the function. */
99
-   if (ERROR_SUCCESS != dwError)
100
+   StringCbCopyW(path, sizeof(path), base);
101
+   StringCbCatW(path, sizeof(path), L"\\vcruntime140.dll");
102
+   handle = FindFirstFileW(path, &wfd);
103
+   if (handle == INVALID_HANDLE_VALUE) {
104
        return false;
105
+   } else {
106
+       FindClose(handle);
107
+   }
108
 
109
-   return !!fIsRunAsAdmin;
110
+   return true;
111
+}
112
+
113
+static bool HasVS2017Redist()
114
+{
115
+   PVOID old = nullptr;
116
+   bool redirect = !!Wow64DisableWow64FsRedirection(&old);
117
+   bool success = HasVS2017Redist2();
118
+   if (redirect) Wow64RevertWow64FsRedirection(old);
119
+   return success;
120
 }
121
 
122
 static void Status(const wchar_t *fmt, ...)
123
@@ -608,6 +604,11 @@
124
           strstr(file, "64.exe") != nullptr;
125
 }
126
 
127
+static inline bool has_str(const char *file, const char *str)
128
+{
129
+   return (file && str) ? (strstr(file, str) != nullptr) : false;
130
+}
131
+
132
 #define UTF8ToWideBuf(wide, utf8) UTF8ToWide(wide, _countof(wide), utf8)
133
 #define WideToUTF8Buf(utf8, wide) WideToUTF8(utf8, _countof(utf8), wide)
134
 
135
@@ -661,6 +662,12 @@
136
        if (!isWin64 && is_64bit_file(fileUTF8))
137
            continue;
138
 
139
+       /* ignore update files of opposite arch to reduce download */
140
+
141
+       if (( is32bit && has_str(fileUTF8, "/64bit/")) ||
142
+           (!is32bit && has_str(fileUTF8, "/32bit/")))
143
+           continue;
144
+
145
        /* convert strings to wide */
146
 
147
        wchar_t sourceURL[1024];
148
@@ -930,6 +937,156 @@
149
 #define HASH_NULL \
150
    L"0000000000000000000000000000000000000000"
151
 
152
+static bool UpdateVS2017Redists(json_t *root)
153
+{
154
+   /* ------------------------------------------ *
155
+    * Initialize session                         */
156
+
157
+   const DWORD tlsProtocols = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2;
158
+
159
+   HttpHandle hSession = WinHttpOpen(L"OBS Studio Updater/2.1",
160
+                                     WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
161
+                                     WINHTTP_NO_PROXY_NAME,
162
+                                     WINHTTP_NO_PROXY_BYPASS,
163
+                                     0);
164
+   if (!hSession) {
165
+       Status(L"Update failed: Couldn't open obsproject.com");
166
+       return false;
167
+   }
168
+
169
+   WinHttpSetOption(hSession, WINHTTP_OPTION_SECURE_PROTOCOLS,
170
+       (LPVOID)&tlsProtocols, sizeof(tlsProtocols));
171
+
172
+   HttpHandle hConnect = WinHttpConnect(hSession, L"obsproject.com",
173
+           INTERNET_DEFAULT_HTTPS_PORT, 0);
174
+   if (!hConnect) {
175
+       Status(L"Update failed: Couldn't connect to obsproject.com");
176
+       return false;
177
+   }
178
+
179
+   int responseCode;
180
+
181
+   DWORD waitResult = WaitForSingleObject(cancelRequested, 0);
182
+   if (waitResult == WAIT_OBJECT_0) {
183
+       return false;
184
+   }
185
+
186
+   /* ------------------------------------------ *
187
+    * Download redist                            */
188
+
189
+   Status(L"Downloading %s", L"Visual C++ 2017 Redistributable");
190
+
191
+   const wchar_t *file = (is32bit)
192
+       ? L"vc2017redist_x86.exe"
193
+       : L"vc2017redist_x64.exe";
194
+
195
+   wstring sourceURL;
196
+   sourceURL += L"https://obsproject.com/downloads/";
197
+   sourceURL += file;
198
+
199
+   wstring destPath;
200
+   destPath += tempPath;
201
obs-studio-21.0.3.tar.xz/UI/win-update/updater/updater.hpp -> obs-studio-21.1.2.tar.xz/UI/win-update/updater/updater.hpp Changed
21
 
1
@@ -1,3 +1,19 @@
2
+/*
3
+ * Copyright (c) 2017-2018 Hugh Bailey <obs.jim@gmail.com>
4
+ *
5
+ * Permission to use, copy, modify, and distribute this software for any
6
+ * purpose with or without fee is hereby granted, provided that the above
7
+ * copyright notice and this permission notice appear in all copies.
8
+ *
9
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
+ */
17
+
18
 #pragma once
19
 
20
 #define WINVER 0x0600
21
obs-studio-21.0.3.tar.xz/UI/win-update/updater/updater.rc -> obs-studio-21.1.2.tar.xz/UI/win-update/updater/updater.rc Changed
10
 
1
@@ -7,7 +7,7 @@
2
 //
3
 // Generated from the TEXTINCLUDE 2 resource.
4
 //
5
-#include "afxres.h"
6
+#include "winres.h"
7
 
8
 /////////////////////////////////////////////////////////////////////////////
9
 #undef APSTUDIO_READONLY_SYMBOLS
10
obs-studio-21.0.3.tar.xz/UI/window-basic-main.cpp -> obs-studio-21.1.2.tar.xz/UI/window-basic-main.cpp Changed
201
 
1
@@ -1647,13 +1647,30 @@
2
 
3
    ui->viewMenu->addSeparator();
4
 
5
-   QMenu *multiviewProjectorMenu = new QMenu(QTStr("MultiviewProjector"));
6
-   AddProjectorMenuMonitors(multiviewProjectorMenu, this,
7
-           SLOT(OpenMultiviewProjector()));
8
+   multiviewProjectorMenu = new QMenu(QTStr("MultiviewProjector"));
9
    ui->viewMenu->addMenu(multiviewProjectorMenu);
10
-
11
+   connect(ui->viewMenu->menuAction(), &QAction::hovered, this,
12
+           &OBSBasic::UpdateMultiviewProjectorMenu);
13
    ui->viewMenu->addAction(QTStr("MultiviewWindowed"),
14
            this, SLOT(OpenMultiviewWindow()));
15
+
16
+#if !defined(_WIN32) && !defined(__APPLE__)
17
+   delete ui->actionShowCrashLogs;
18
+   delete ui->actionUploadLastCrashLog;
19
+   delete ui->menuCrashLogs;
20
+   delete ui->actionCheckForUpdates;
21
+   ui->actionShowCrashLogs = nullptr;
22
+   ui->actionUploadLastCrashLog = nullptr;
23
+   ui->menuCrashLogs = nullptr;
24
+   ui->actionCheckForUpdates = nullptr;
25
+#endif
26
+}
27
+
28
+void OBSBasic::UpdateMultiviewProjectorMenu()
29
+{
30
+   multiviewProjectorMenu->clear();
31
+   AddProjectorMenuMonitors(multiviewProjectorMenu, this,
32
+           SLOT(OpenMultiviewProjector()));
33
 }
34
 
35
 void OBSBasic::InitHotkeys()
36
@@ -3520,10 +3537,10 @@
37
        QString str = QString("%1 %2: %3x%4 @ %5,%6").
38
            arg(QTStr("Display"),
39
                QString::number(i),
40
-               QString::number((int)screenGeometry.width()),
41
-               QString::number((int)screenGeometry.height()),
42
-               QString::number((int)screenGeometry.x()),
43
-               QString::number((int)screenGeometry.y()));
44
+               QString::number(screenGeometry.width()),
45
+               QString::number(screenGeometry.height()),
46
+               QString::number(screenGeometry.x()),
47
+               QString::number(screenGeometry.y()));
48
 
49
        action = parent->addAction(str, target, slot);
50
        action->setProperty("monitor", i);
51
@@ -4220,10 +4237,10 @@
52
    obs_sceneitem_set_order(item, OBS_ORDER_MOVE_BOTTOM);
53
 }
54
 
55
-static BPtr<char> ReadLogFile(const char *log)
56
+static BPtr<char> ReadLogFile(const char *subdir, const char *log)
57
 {
58
    char logDir[512];
59
-   if (GetConfigPath(logDir, sizeof(logDir), "obs-studio/logs") <= 0)
60
+   if (GetConfigPath(logDir, sizeof(logDir), subdir) <= 0)
61
        return nullptr;
62
 
63
    string path = (char*)logDir;
64
@@ -4237,9 +4254,9 @@
65
    return file;
66
 }
67
 
68
-void OBSBasic::UploadLog(const char *file)
69
+void OBSBasic::UploadLog(const char *subdir, const char *file)
70
 {
71
-   BPtr<char> fileString{ReadLogFile(file)};
72
+   BPtr<char> fileString{ReadLogFile(subdir, file)};
73
 
74
    if (!fileString)
75
        return;
76
@@ -4249,32 +4266,11 @@
77
 
78
    ui->menuLogFiles->setEnabled(false);
79
 
80
-   auto data_deleter = [](obs_data_t *d) { obs_data_release(d); };
81
-   using data_t = unique_ptr<struct obs_data, decltype(data_deleter)>;
82
-
83
-   data_t content{obs_data_create(), data_deleter};
84
-   data_t files{obs_data_create(), data_deleter};
85
-   data_t request{obs_data_create(), data_deleter};
86
-
87
-   obs_data_set_string(content.get(), "content", fileString);
88
-
89
-   obs_data_set_obj(files.get(), file, content.get());
90
-
91
    stringstream ss;
92
    ss << "OBS " << App()->GetVersionString()
93
-      << " log file uploaded at " << CurrentDateTimeString();
94
-   obs_data_set_string(request.get(), "description", ss.str().c_str());
95
-   obs_data_set_bool(request.get(), "public", false);
96
-   obs_data_set_obj(request.get(), "files", files.get());
97
+      << " log file uploaded at " << CurrentDateTimeString()
98
+      << "\n\n" << fileString;
99
 
100
-   const char *json = obs_data_get_json(request.get());
101
-   if (!json) {
102
-       blog(LOG_ERROR, "Failed to get JSON data for log upload");
103
-       return;
104
-   }
105
-
106
-   QBuffer *postData = new QBuffer();
107
-   postData->setData(json, (int) strlen(json));
108
 
109
    if (logUploadThread) {
110
        logUploadThread->wait();
111
@@ -4282,8 +4278,9 @@
112
    }
113
 
114
    RemoteTextThread *thread = new RemoteTextThread(
115
-           "https://api.github.com/gists",
116
-           "application/json", json);
117
+           "https://hastebin.com/documents",
118
+           "text/plain", ss.str().c_str());
119
+
120
    logUploadThread = thread;
121
    connect(thread, &RemoteTextThread::Result,
122
            this, &OBSBasic::logUploadFinished);
123
@@ -4302,12 +4299,12 @@
124
 
125
 void OBSBasic::on_actionUploadCurrentLog_triggered()
126
 {
127
-   UploadLog(App()->GetCurrentLog());
128
+   UploadLog("obs-studio/logs", App()->GetCurrentLog());
129
 }
130
 
131
 void OBSBasic::on_actionUploadLastLog_triggered()
132
 {
133
-   UploadLog(App()->GetLastLog());
134
+   UploadLog("obs-studio/logs", App()->GetLastLog());
135
 }
136
 
137
 void OBSBasic::on_actionViewCurrentLog_triggered()
138
@@ -4326,6 +4323,21 @@
139
    QDesktopServices::openUrl(url);
140
 }
141
 
142
+void OBSBasic::on_actionShowCrashLogs_triggered()
143
+{
144
+   char logDir[512];
145
+   if (GetConfigPath(logDir, sizeof(logDir), "obs-studio/crashes") <= 0)
146
+       return;
147
+
148
+   QUrl url = QUrl::fromLocalFile(QT_UTF8(logDir));
149
+   QDesktopServices::openUrl(url);
150
+}
151
+
152
+void OBSBasic::on_actionUploadLastCrashLog_triggered()
153
+{
154
+   UploadLog("obs-studio/crashes", App()->GetLastCrashLog());
155
+}
156
+
157
 void OBSBasic::on_actionCheckForUpdates_triggered()
158
 {
159
    CheckForUpdates(true);
160
@@ -4343,7 +4355,9 @@
161
    }
162
 
163
    obs_data_t *returnData = obs_data_create_from_json(QT_TO_UTF8(text));
164
-   QString logURL         = obs_data_get_string(returnData, "html_url");
165
+   string resURL = "https://hastebin.com/";
166
+   resURL += obs_data_get_string(returnData, "key");
167
+   QString logURL = resURL.c_str();
168
    obs_data_release(returnData);
169
 
170
    OBSLogReply logDialog(this, logURL);
171
@@ -6040,29 +6054,32 @@
172
    connect(exit, SIGNAL(triggered()),
173
            this, SLOT(close()));
174
 
175
-   QMenu *previewProjector = new QMenu(QTStr("PreviewProjector"));
176
-   AddProjectorMenuMonitors(previewProjector, this,
177
-           SLOT(OpenPreviewProjector()));
178
-   QMenu *studioProgramProjector = new QMenu(
179
-           QTStr("StudioProgramProjector"));
180
-   AddProjectorMenuMonitors(studioProgramProjector, this,
181
-           SLOT(OpenStudioProgramProjector()));
182
-
183
    trayMenu = new QMenu;
184
-   trayMenu->addAction(showHide);
185
-   trayMenu->addMenu(previewProjector);
186
-   trayMenu->addMenu(studioProgramProjector);
187
-   trayMenu->addAction(sysTrayStream);
188
-   trayMenu->addAction(sysTrayRecord);
189
-   trayMenu->addAction(sysTrayReplayBuffer);
190
-   trayMenu->addAction(exit);
191
-   trayIcon->setContextMenu(trayMenu);
192
 }
193
 
194
 void OBSBasic::IconActivated(QSystemTrayIcon::ActivationReason reason)
195
 {
196
-   if (reason == QSystemTrayIcon::Trigger)
197
+   if (reason == QSystemTrayIcon::Trigger) {
198
        ToggleShowHide();
199
+   } else if (reason == QSystemTrayIcon::Context) {
200
+       QMenu *previewProjector = new QMenu(QTStr("PreviewProjector"));
201
obs-studio-21.0.3.tar.xz/UI/window-basic-main.hpp -> obs-studio-21.1.2.tar.xz/UI/window-basic-main.hpp Changed
30
 
1
@@ -186,6 +186,9 @@
2
    QPointer<QAction>         exit;
3
    QPointer<QMenu>           trayMenu;
4
 
5
+   QPointer<QMenu> multiviewProjectorMenu;
6
+   void          UpdateMultiviewProjectorMenu();
7
+
8
    void          DrawBackdrop(float cx, float cy);
9
 
10
    void          SetupEncoders();
11
@@ -196,7 +199,7 @@
12
    void          UpdateVolumeControlsDecayRate();
13
    void          ClearVolumeControls();
14
 
15
-   void          UploadLog(const char *file);
16
+   void          UploadLog(const char *subdir, const char *file);
17
 
18
    void          Save(const char *file);
19
    void          Load(const char *file);
20
@@ -586,6 +589,9 @@
21
    void on_actionViewCurrentLog_triggered();
22
    void on_actionCheckForUpdates_triggered();
23
 
24
+   void on_actionShowCrashLogs_triggered();
25
+   void on_actionUploadLastCrashLog_triggered();
26
+
27
    void on_actionEditTransform_triggered();
28
    void on_actionCopyTransform_triggered();
29
    void on_actionPasteTransform_triggered();
30
obs-studio-21.0.3.tar.xz/UI/window-basic-preview.cpp -> obs-studio-21.1.2.tar.xz/UI/window-basic-preview.cpp Changed
11
 
1
@@ -1105,6 +1105,9 @@
2
    if (obs_sceneitem_locked(item))
3
        return true;
4
 
5
+   if (!SceneItemHasVideo(item))
6
+       return true;
7
+
8
    if (!obs_sceneitem_selected(item))
9
        return true;
10
 
11
obs-studio-21.0.3.tar.xz/UI/window-basic-settings.cpp -> obs-studio-21.1.2.tar.xz/UI/window-basic-settings.cpp Changed
25
 
1
@@ -412,7 +412,6 @@
2
    HookWidget(ui->fpsType,              COMBO_CHANGED,  VIDEO_CHANGED);
3
    HookWidget(ui->fpsCommon,            COMBO_CHANGED,  VIDEO_CHANGED);
4
    HookWidget(ui->fpsInteger,           SCROLL_CHANGED, VIDEO_CHANGED);
5
-   HookWidget(ui->fpsInteger,           SCROLL_CHANGED, VIDEO_CHANGED);
6
    HookWidget(ui->fpsNumerator,         SCROLL_CHANGED, VIDEO_CHANGED);
7
    HookWidget(ui->fpsDenominator,       SCROLL_CHANGED, VIDEO_CHANGED);
8
    HookWidget(ui->renderer,             COMBO_CHANGED,  ADV_RESTART);
9
@@ -443,10 +442,13 @@
10
    HookWidget(ui->enableNewSocketLoop,  CHECK_CHANGED,  ADV_CHANGED);
11
    HookWidget(ui->enableLowLatencyMode, CHECK_CHANGED,  ADV_CHANGED);
12
 
13
-#if !defined(_WIN32) && !defined(__APPLE__) && !HAVE_PULSEAUDIO
14
+#if !defined(_WIN32) && !defined(__APPLE__)
15
    delete ui->enableAutoUpdates;
16
-   delete ui->advAudioGroupBox;
17
    ui->enableAutoUpdates = nullptr;
18
+#endif
19
+
20
+#if !defined(_WIN32) && !defined(__APPLE__) && !HAVE_PULSEAUDIO
21
+   delete ui->advAudioGroupBox;
22
    ui->advAudioGroupBox = nullptr;
23
 #endif
24
 
25
obs-studio-21.0.3.tar.xz/cmake/Modules/CopyMSVCBins.cmake -> obs-studio-21.1.2.tar.xz/cmake/Modules/CopyMSVCBins.cmake Changed
106
 
1
@@ -147,27 +147,27 @@
2
        )
3
 endif()
4
 
5
-if (CMAKE_CONFIGURATION_TYPES MATCHES "Debug")
6
-   file(GLOB QT_DEBUG_BIN_FILES
7
-       "${Qt5Core_DIR}/../../../bin/Qt5Cored.dll"
8
-       "${Qt5Core_DIR}/../../../bin/Qt5Guid.dll"
9
-       "${Qt5Core_DIR}/../../../bin/Qt5Widgetsd.dll"
10
-       "${Qt5Core_DIR}/../../../bin/libGLESv2d.dll"
11
-       "${Qt5Core_DIR}/../../../bin/libEGLd.dll")
12
-   file(GLOB QT_DEBUG_PLAT_BIN_FILES
13
-       "${Qt5Core_DIR}/../../../plugins/platforms/qwindowsd.dll")
14
-endif()
15
-
16
-if (CMAKE_CONFIGURATION_TYPES MATCHES "Rel")
17
-   file(GLOB QT_BIN_FILES
18
-       "${Qt5Core_DIR}/../../../bin/Qt5Core.dll"
19
-       "${Qt5Core_DIR}/../../../bin/Qt5Gui.dll"
20
-       "${Qt5Core_DIR}/../../../bin/Qt5Widgets.dll"
21
-       "${Qt5Core_DIR}/../../../bin/libGLESv2.dll"
22
-       "${Qt5Core_DIR}/../../../bin/libEGL.dll")
23
-   file(GLOB QT_PLAT_BIN_FILES
24
-       "${Qt5Core_DIR}/../../../plugins/platforms/qwindows.dll")
25
-endif()
26
+file(GLOB QT_DEBUG_BIN_FILES
27
+   "${Qt5Core_DIR}/../../../bin/Qt5Cored.dll"
28
+   "${Qt5Core_DIR}/../../../bin/Qt5Guid.dll"
29
+   "${Qt5Core_DIR}/../../../bin/Qt5Widgetsd.dll"
30
+   "${Qt5Core_DIR}/../../../bin/libGLESv2d.dll"
31
+   "${Qt5Core_DIR}/../../../bin/libEGLd.dll")
32
+file(GLOB QT_DEBUG_PLAT_BIN_FILES
33
+   "${Qt5Core_DIR}/../../../plugins/platforms/qwindowsd.dll")
34
+file(GLOB QT_DEBUG_STYLES_BIN_FILES
35
+   "${Qt5Core_DIR}/../../../plugins/styles/qwindowsvistastyled.dll")
36
+
37
+file(GLOB QT_BIN_FILES
38
+   "${Qt5Core_DIR}/../../../bin/Qt5Core.dll"
39
+   "${Qt5Core_DIR}/../../../bin/Qt5Gui.dll"
40
+   "${Qt5Core_DIR}/../../../bin/Qt5Widgets.dll"
41
+   "${Qt5Core_DIR}/../../../bin/libGLESv2.dll"
42
+   "${Qt5Core_DIR}/../../../bin/libEGL.dll")
43
+file(GLOB QT_PLAT_BIN_FILES
44
+   "${Qt5Core_DIR}/../../../plugins/platforms/qwindows.dll")
45
+file(GLOB QT_STYLES_BIN_FILES
46
+   "${Qt5Core_DIR}/../../../plugins/styles/qwindowsvistastyle.dll")
47
 
48
 file(GLOB QT_ICU_BIN_FILES
49
    "${Qt5Core_DIR}/../../../bin/icu*.dll")
50
@@ -190,16 +190,21 @@
51
    ${QT_DEBUG_BIN_FILES})
52
 
53
 set(ALL_PLATFORM_BIN_FILES)
54
-
55
 set(ALL_PLATFORM_REL_BIN_FILES
56
    ${QT_PLAT_BIN_FILES})
57
-
58
 set(ALL_PLATFORM_DBG_BIN_FILES
59
    ${QT_DEBUG_PLAT_BIN_FILES})
60
 
61
+set(ALL_STYLES_BIN_FILES)
62
+set(ALL_STYLES_REL_BIN_FILES
63
+   ${QT_STYLES_BIN_FILES})
64
+set(ALL_STYLES_DBG_BIN_FILES
65
+   ${QT_DEBUG_STYLES_BIN_FILES})
66
+
67
 foreach(list
68
        ALL_BASE_BIN_FILES ALL_REL_BIN_FILES ALL_DBG_BIN_FILES
69
-       ALL_PLATFORM_BIN_FILES ALL_PLATFORM_REL_BIN_FILES ALL_PLATFORM_DBG_BIN_FILES)
70
+       ALL_PLATFORM_BIN_FILES ALL_PLATFORM_REL_BIN_FILES ALL_PLATFORM_DBG_BIN_FILES
71
+       ALL_STYLES_BIN_FILES ALL_STYLES_REL_BIN_FILES ALL_STYLES_DBG_BIN_FILES)
72
    if(${list})
73
        list(REMOVE_DUPLICATES ${list})
74
    endif()
75
@@ -215,8 +220,10 @@
76
 message(STATUS "zlib files: ${ZLIB_BIN_FILES}")
77
 message(STATUS "QT Debug files: ${QT_DEBUG_BIN_FILES}")
78
 message(STATUS "QT Debug Platform files: ${QT_DEBUG_PLAT_BIN_FILES}")
79
+message(STATUS "QT Debug Styles files: ${QT_DEBUG_STYLES_BIN_FILES}")
80
 message(STATUS "QT Release files: ${QT_BIN_FILES}")
81
 message(STATUS "QT Release Platform files: ${QT_PLAT_BIN_FILES}")
82
+message(STATUS "QT Release Styles files: ${QT_STYLES_BIN_FILES}")
83
 message(STATUS "QT ICU files: ${QT_ICU_BIN_FILES}")
84
 
85
 foreach(BinFile ${ALL_BASE_BIN_FILES})
86
@@ -249,4 +256,19 @@
87
    file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d/platforms/")
88
 endforeach()
89
 
90
+foreach(BinFile ${ALL_STYLES_BIN_FILES})
91
+   make_directory("${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}/styles")
92
+   file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}/styles/")
93
+endforeach()
94
+
95
+foreach(BinFile ${ALL_STYLES_REL_BIN_FILES})
96
+   make_directory("${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r/styles")
97
+   file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r/styles/")
98
+endforeach()
99
+
100
+foreach(BinFile ${ALL_STYLES_DBG_BIN_FILES})
101
+   make_directory("${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d/styles")
102
+   file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d/styles/")
103
+endforeach()
104
+
105
 set(COPIED_DEPENDENCIES TRUE CACHE BOOL "Dependencies have been copied, set to false to copy again" FORCE)
106
obs-studio-21.0.3.tar.xz/deps/obs-scripting/obs-scripting-lua.c -> obs-studio-21.1.2.tar.xz/deps/obs-scripting/obs-scripting-lua.c Changed
51
 
1
@@ -377,7 +377,7 @@
2
    lock_callback();
3
 
4
    lua_pushnumber(script, (lua_Number)seconds);
5
-   call_func(obs_lua_tick_callback, 2, 0);
6
+   call_func(obs_lua_tick_callback, 1, 0);
7
 
8
    unlock_callback();
9
 }
10
@@ -581,6 +581,32 @@
11
 
12
 /* -------------------------------------------- */
13
 
14
+static bool source_enum_filters_proc(obs_source_t *source, obs_source_t *filter, void *param)
15
+{
16
+   lua_State *script = param;
17
+
18
+   obs_source_get_ref(filter);
19
+   ls_push_libobs_obj(obs_source_t, filter, false);
20
+
21
+   size_t idx = lua_rawlen(script, -2);
22
+   lua_rawseti(script, -2, (int)idx + 1);
23
+   return true;
24
+}
25
+
26
+static int source_enum_filters(lua_State *script)
27
+{
28
+   obs_source_t *source;
29
+   if (!ls_get_libobs_obj(obs_source_t, 1, &source))
30
+       return 0;
31
+
32
+   lua_newtable(script);
33
+   obs_source_enum_filters(source, source_enum_filters_proc, script);
34
+   return 1;
35
+}
36
+
37
+
38
+/* -------------------------------------------- */
39
+
40
 static bool enum_items_proc(obs_scene_t *scene, obs_sceneitem_t *item,
41
        void *param)
42
 {
43
@@ -972,6 +998,7 @@
44
    add_func("timer_remove", timer_remove);
45
    add_func("timer_add", timer_add);
46
    add_func("obs_enum_sources", enum_sources);
47
+   add_func("obs_source_enum_filters", source_enum_filters);
48
    add_func("obs_scene_enum_items", scene_enum_items);
49
    add_func("source_list_release", source_list_release);
50
    add_func("sceneitem_list_release", sceneitem_list_release);
51
obs-studio-21.0.3.tar.xz/deps/obs-scripting/obs-scripting-python.c -> obs-studio-21.1.2.tar.xz/deps/obs-scripting/obs-scripting-python.c Changed
36
 
1
@@ -1595,6 +1595,8 @@
2
 
3
 extern void add_python_frontend_funcs(PyObject *module);
4
 
5
+static bool python_loaded_at_all = false;
6
+
7
 bool obs_scripting_load_python(const char *python_path)
8
 {
9
    if (python_loaded)
10
@@ -1696,6 +1698,8 @@
11
        obs_python_unload();
12
    }
13
 
14
+   python_loaded_at_all = success;
15
+
16
    if (python_loaded)
17
        obs_add_tick_callback(python_tick, NULL);
18
 
19
@@ -1704,6 +1708,9 @@
20
 
21
 void obs_python_unload(void)
22
 {
23
+   if (!python_loaded_at_all)
24
+       return;
25
+
26
    if (python_loaded && Py_IsInitialized()) {
27
        PyGILState_Ensure();
28
 
29
@@ -1722,4 +1729,6 @@
30
    pthread_mutex_destroy(&tick_mutex);
31
    pthread_mutex_destroy(&timer_mutex);
32
    dstr_free(&cur_py_log_chunk);
33
+
34
+   python_loaded_at_all = false;
35
 }
36
obs-studio-21.0.3.tar.xz/deps/obs-scripting/obs-scripting.c -> obs-studio-21.1.2.tar.xz/deps/obs-scripting/obs-scripting.c Changed
10
 
1
@@ -213,6 +213,8 @@
2
 
3
    pthread_mutex_destroy(&defer_call_mutex);
4
    os_sem_destroy(defer_call_semaphore);
5
+
6
+   scripting_loaded = false;
7
 }
8
 
9
 const char **obs_scripting_supported_formats(void)
10
obs-studio-21.0.3.tar.xz/deps/obs-scripting/obslua/obslua.i -> obs-studio-21.1.2.tar.xz/deps/obs-scripting/obslua/obslua.i Changed
9
 
1
@@ -59,6 +59,7 @@
2
 %ignore obs_add_main_render_callback;
3
 %ignore obs_remove_main_render_callback;
4
 %ignore obs_enum_sources;
5
+%ignore obs_source_enum_filters;
6
 %ignore obs_properties_add_button;
7
 %ignore obs_property_set_modified_callback;
8
 %ignore signal_handler_connect;
9
obs-studio-21.0.3.tar.xz/docs/sphinx/reference-properties.rst -> obs-studio-21.1.2.tar.xz/docs/sphinx/reference-properties.rst Changed
10
 
1
@@ -383,7 +383,7 @@
2
 
3
 ---------------------
4
 
5
-.. function:: enum obs_text_type     obs_proprety_text_type(obs_property_t *p)
6
+.. function:: enum obs_text_type     obs_property_text_type(obs_property_t *p)
7
 
8
 ---------------------
9
 
10
obs-studio-21.0.3.tar.xz/libobs-opengl/gl-x11.c -> obs-studio-21.1.2.tar.xz/libobs-opengl/gl-x11.c Changed
9
 
1
@@ -59,6 +59,7 @@
2
    GLX_STENCIL_SIZE, 0,
3
    GLX_DEPTH_SIZE, 0,
4
    GLX_BUFFER_SIZE, 32,
5
+   GLX_ALPHA_SIZE, 8,
6
    GLX_DOUBLEBUFFER, true,
7
    GLX_X_RENDERABLE, true,
8
    None
9
obs-studio-21.0.3.tar.xz/libobs/audio-monitoring/win32/wasapi-output.h -> obs-studio-21.1.2.tar.xz/libobs/audio-monitoring/win32/wasapi-output.h Changed
18
 
1
@@ -3,10 +3,16 @@
2
 #include <audioclient.h>
3
 
4
 
5
+#ifndef KSAUDIO_SPEAKER_2POINT1
6
 #define KSAUDIO_SPEAKER_2POINT1 (KSAUDIO_SPEAKER_STEREO|SPEAKER_LOW_FREQUENCY)
7
+#endif
8
+
9
 #define KSAUDIO_SPEAKER_SURROUND_AVUTIL \
10
    (KSAUDIO_SPEAKER_STEREO|SPEAKER_FRONT_CENTER)
11
+
12
+#ifndef KSAUDIO_SPEAKER_4POINT1
13
 #define KSAUDIO_SPEAKER_4POINT1 (KSAUDIO_SPEAKER_SURROUND|SPEAKER_LOW_FREQUENCY)
14
+#endif
15
 
16
 #define safe_release(ptr) \
17
    do { \
18
obs-studio-21.0.3.tar.xz/libobs/obs-config.h -> obs-studio-21.1.2.tar.xz/libobs/obs-config.h Changed
18
 
1
@@ -34,14 +34,14 @@
2
  *
3
  * Reset to zero each major version
4
  */
5
-#define LIBOBS_API_MINOR_VER  0
6
+#define LIBOBS_API_MINOR_VER  1
7
 
8
 /*
9
  * Increment if backward-compatible bug fix
10
  *
11
  * Reset to zero each major or minor version
12
  */
13
-#define LIBOBS_API_PATCH_VER  3
14
+#define LIBOBS_API_PATCH_VER  2
15
 
16
 #define MAKE_SEMANTIC_VERSION(major, minor, patch) \
17
                              ((major << 24) | \
18
obs-studio-21.0.3.tar.xz/libobs/obs-output.c -> obs-studio-21.1.2.tar.xz/libobs/obs-output.c Changed
11
 
1
@@ -2061,7 +2061,8 @@
2
        struct caption_text *tail, struct caption_text **head)
3
 {
4
    struct caption_text *next = bzalloc(sizeof(struct caption_text));
5
-   snprintf(&next->text[0], CAPTION_LINE_BYTES + 1, "%.*s", bytes, text);
6
+   snprintf(&next->text[0], CAPTION_LINE_BYTES + 1, "%.*s",
7
+           (int)bytes, text);
8
 
9
    if (!*head) {
10
        *head = next;
11
obs-studio-21.0.3.tar.xz/libobs/obs-properties.c -> obs-studio-21.1.2.tar.xz/libobs/obs-properties.c Changed
19
 
1
@@ -738,7 +738,7 @@
2
    return data ? data->type : OBS_NUMBER_SCROLLER;
3
 }
4
 
5
-enum obs_text_type obs_proprety_text_type(obs_property_t *p)
6
+enum obs_text_type obs_property_text_type(obs_property_t *p)
7
 {
8
    struct text_data *data = get_type_data(p, OBS_PROPERTY_TEXT);
9
    return data ? data->type : OBS_TEXT_DEFAULT;
10
@@ -1107,3 +1107,8 @@
11
        data->ranges.array[idx].max_time :
12
        (struct media_frames_per_second){0};
13
 }
14
+
15
+enum obs_text_type obs_proprety_text_type(obs_property_t *p)
16
+{
17
+   return obs_property_text_type(p);
18
+}
19
obs-studio-21.0.3.tar.xz/libobs/obs-properties.h -> obs-studio-21.1.2.tar.xz/libobs/obs-properties.h Changed
22
 
1
@@ -263,7 +263,7 @@
2
 EXPORT double                 obs_property_float_max(obs_property_t *p);
3
 EXPORT double                 obs_property_float_step(obs_property_t *p);
4
 EXPORT enum obs_number_type   obs_property_float_type(obs_property_t *p);
5
-EXPORT enum obs_text_type     obs_proprety_text_type(obs_property_t *p);
6
+EXPORT enum obs_text_type     obs_property_text_type(obs_property_t *p);
7
 EXPORT enum obs_path_type     obs_property_path_type(obs_property_t *p);
8
 EXPORT const char *           obs_property_path_filter(obs_property_t *p);
9
 EXPORT const char *           obs_property_path_default_path(obs_property_t *p);
10
@@ -336,6 +336,11 @@
11
 EXPORT struct media_frames_per_second obs_property_frame_rate_fps_range_max(
12
        obs_property_t *p, size_t idx);
13
 
14
+#ifndef SWIG
15
+DEPRECATED
16
+EXPORT enum obs_text_type     obs_proprety_text_type(obs_property_t *p);
17
+#endif
18
+
19
 #ifdef __cplusplus
20
 }
21
 #endif
22
obs-studio-21.0.3.tar.xz/libobs/obs.h -> obs-studio-21.1.2.tar.xz/libobs/obs.h Changed
54
 
1
@@ -145,15 +145,16 @@
2
    struct vec2          bounds;
3
 };
4
 
5
-#ifndef SWIG
6
 /**
7
  * Video initialization structure
8
  */
9
 struct obs_video_info {
10
+#ifndef SWIG
11
    /**
12
     * Graphics module to use (usually "libobs-opengl" or "libobs-d3d11")
13
     */
14
    const char          *graphics_module;
15
+#endif
16
 
17
    uint32_t            fps_num;       /**< Output FPS numerator */
18
    uint32_t            fps_den;       /**< Output FPS denominator */
19
@@ -176,7 +177,6 @@
20
 
21
    enum obs_scale_type scale_type;    /**< How to scale if scaling */
22
 };
23
-#endif
24
 
25
 /**
26
  * Audio initialization structure
27
@@ -283,7 +283,6 @@
28
  */
29
 EXPORT profiler_name_store_t *obs_get_profiler_name_store(void);
30
 
31
-#ifndef SWIG
32
 /**
33
  * Sets base video output base resolution/fps/format.
34
  *
35
@@ -301,7 +300,6 @@
36
  *               OBS_VIDEO_FAIL for generic failure
37
  */
38
 EXPORT int obs_reset_video(struct obs_video_info *ovi);
39
-#endif
40
 
41
 /**
42
  * Sets base audio output format/channels/samples/etc
43
@@ -310,10 +308,8 @@
44
  */
45
 EXPORT bool obs_reset_audio(const struct obs_audio_info *oai);
46
 
47
-#ifndef SWIG
48
 /** Gets the current video settings, returns false if no video */
49
 EXPORT bool obs_get_video_info(struct obs_video_info *ovi);
50
-#endif
51
 
52
 /** Gets the current audio settings, returns false if no audio */
53
 EXPORT bool obs_get_audio_info(struct obs_audio_info *oai);
54
obs-studio-21.0.3.tar.xz/libobs/util/config-file.c -> obs-studio-21.1.2.tar.xz/libobs/util/config-file.c Changed
18
 
1
@@ -212,8 +212,15 @@
2
        strref_clear(&value);
3
        config_parse_string(lex, &value, 0);
4
 
5
-       if (!strref_is_empty(&value))
6
+       if (strref_is_empty(&value)) {
7
+           struct config_item item;
8
+           item.name  = bstrdup_n(name.array, name.len);
9
+           item.value = bzalloc(1);
10
+           darray_push_back(sizeof(struct config_item),
11
+                   &section->items, &item);
12
+       } else {
13
            config_add_item(&section->items, &name, &value);
14
+       }
15
    }
16
 }
17
 
18
obs-studio-21.1.2.tar.xz/plugins/coreaudio-encoder/data/locale/fil-PH.ini Added
8
 
1
@@ -0,0 +1,6 @@
2
+CoreAudioAAC="CoreAudio AAC encoder"
3
+Bitrate="Bitrate"
4
+AllowHEAAC="Payagan ang HE-AAC"
5
+OutputSamplerate="Output Sample Rate"
6
+UseInputSampleRate="Gamitin ang Sample Rate ng Input (OBS) (maaaring maglista ng mga hindi suportadong bitrates)"
7
+
8
obs-studio-21.1.2.tar.xz/plugins/coreaudio-encoder/data/locale/ka-GE.ini Added
8
 
1
@@ -0,0 +1,6 @@
2
+CoreAudioAAC="CoreAudio AAC გამშიფრავი"
3
+Bitrate="ბიტური სიხშირე"
4
+AllowHEAAC="HE-AAC დაშვება"
5
+OutputSamplerate="გამომავალი სიგნალის სიხშირე"
6
+UseInputSampleRate="შემავალი (OBS) სიგნალის სიხშირის გამოყენება (შესაძლოა მოიცავდეს მხარდაუჭერელ სიხშირეებსაც)"
7
+
8
obs-studio-21.1.2.tar.xz/plugins/coreaudio-encoder/data/locale/tl-PH.ini Added
8
 
1
@@ -0,0 +1,6 @@
2
+CoreAudioAAC="Ang Buod ng Audio AAC encoder"
3
+Bitrate="Baytreyt"
4
+AllowHEAAC="Pahintulutan ang HE-AAC"
5
+OutputSamplerate="Paglabas ng Sample Rate"
6
+UseInputSampleRate="Gamitin ang pangpasok na (OBS) Sample Rate (Maaaring ilista ang mga hindi sinusuportahang bitrates)"
7
+
8
obs-studio-21.1.2.tar.xz/plugins/decklink/data/locale/fil-PH.ini Added
22
 
1
@@ -0,0 +1,20 @@
2
+BlackmagicDevice="Blackmagic Device"
3
+Device="Kagamitan"
4
+Mode="Mode"
5
+Buffering="Gamitin ang Buffering"
6
+PixelFormat="Format ng Pixel"
7
+ColorSpace="YUV Kulay Space"
8
+ColorSpace.Default="Pangunahin"
9
+ColorRange="Saklaw ng Kulay ng YUV"
10
+ColorRange.Default="Pangunahin"
11
+ColorRange.Partial="Bahagyang"
12
+ColorRange.Full="Buong"
13
+ChannelFormat="Pinagmulan"
14
+ChannelFormat.None="Wala"
15
+ChannelFormat.2_0ch="2ch"
16
+ChannelFormat.2_1ch="2.1ch"
17
+ChannelFormat.4_0ch="4ch"
18
+ChannelFormat.4_1ch="4.1ch"
19
+ChannelFormat.5_1ch="5.1ch"
20
+ChannelFormat.7_1ch="7.1ch"
21
+
22
obs-studio-21.1.2.tar.xz/plugins/decklink/data/locale/ka-GE.ini Added
22
 
1
@@ -0,0 +1,20 @@
2
+BlackmagicDevice="Blackmagic მოწყობილობა"
3
+Device="მოწყობილობა"
4
+Mode="რეჟიმი"
5
+Buffering="ბუფერიზაციის გამოყენება"
6
+PixelFormat="პიქსელის ფორმატი"
7
+ColorSpace="YUV ფერთა სისტემა"
8
+ColorSpace.Default="ნაგულისხმევი"
9
+ColorRange="YUV ფერთა გამა"
10
+ColorRange.Default="ნაგულისხმევი"
11
+ColorRange.Partial="ნაწილობრივი"
12
+ColorRange.Full="სრული"
13
+ChannelFormat="არხი"
14
+ChannelFormat.None="არცერთი"
15
+ChannelFormat.2_0ch="2 არხიანი"
16
+ChannelFormat.2_1ch="2.1 არხიანი"
17
+ChannelFormat.4_0ch="4 არხიანი"
18
+ChannelFormat.4_1ch="4.1 არხიანი"
19
+ChannelFormat.5_1ch="5.1 არხიანი"
20
+ChannelFormat.7_1ch="7.1 არხიანი"
21
+
22
obs-studio-21.1.2.tar.xz/plugins/decklink/data/locale/tl-PH.ini Added
22
 
1
@@ -0,0 +1,20 @@
2
+BlackmagicDevice="Itim na salamangka na aparato"
3
+Device="Aparato"
4
+Mode="I-mode"
5
+Buffering="Paggamit ng Buffering"
6
+PixelFormat="Ang Format ng Pixel"
7
+ColorSpace="Pagitan sa kulay na YUV"
8
+ColorSpace.Default="I-default"
9
+ColorRange="Ang Saklaw ng Kulay na YUV"
10
+ColorRange.Default="I-default"
11
+ColorRange.Partial="Bahagya"
12
+ColorRange.Full="Puno"
13
+ChannelFormat="Ang Channel"
14
+ChannelFormat.None="Wala"
15
+ChannelFormat.2_0ch="2ch"
16
+ChannelFormat.2_1ch="2.1ch"
17
+ChannelFormat.4_0ch="4ch"
18
+ChannelFormat.4_1ch="4.1ch"
19
+ChannelFormat.5_1ch="5.1ch"
20
+ChannelFormat.7_1ch="7.1ch"
21
+
22
obs-studio-21.0.3.tar.xz/plugins/enc-amf/#Resources/Installer.in.iss -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/#Resources/Installer.in.iss Changed
10
 
1
@@ -2,7 +2,7 @@
2
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3
 
4
 #define MyAppName "AMD Encoder for OBS Studio"
5
-#define MyAppVersion "@enc-amf_VERSION_MAJOR@.@enc-amf_VERSION_MINOR@.@enc-amf_VERSION_PATCH@"
6
+#define MyAppVersion "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@"
7
 #define MyAppPublisher "Xaymars Technology Workshop"
8
 #define MyAppURL "http://www.xaymar.com/portfolio/plugin-amd-vce-plugin-for-obs-studio/"
9
 
10
obs-studio-21.0.3.tar.xz/plugins/enc-amf/#Resources/PATCH_NOTES.md -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/#Resources/PATCH_NOTES.md Changed
34
 
1
@@ -1,13 +1,27 @@
2
-# 2.3.1 - The Blacklist and imroved support for Replay Buffer
3
-It unfortunately had to come to this. The plugin now finally blacklists older drivers, as it otherwise would turn into an unmaintainable mess trying to support everything back to 16.11.5, the first driver that had AMD AMF support. That means that from this day on, all future versions will only work with a minimum runtime version of 1.4.6.0. So if you're still using an older driver: What are you doing? Update already!
4
+# 2.3.3 - Changes to the Blacklist, Out-of-Process AMF Capability testing and more (Hotfix 1)
5
+The Blacklist introduced with 2.3.0 unfortunately had the side effect that all Windows 8 users were no longer able to use the plugin and had to downgrade. With this version, the blacklist is instead now a warning written into the log file. This is all thanks to @jp9000's work on moving the initial AMF Capability test into a different process, stopping broken drivers from crashing OBS Studio.
6
 
7
-In addition to that, the plugin should now work better with the new networking code as well as replay buffer. The 'Target Bitrate' property is now renamed internally so that external code can properly read it.
8
+Not only that, but a bunch of previously unidentified issues were fixed. H264 VBR should no longer limit the Peak Bitrate to the Target Bitrate, H265 encoding shouldn't get stuck anymore, some older Drivers may now work again with the plugin and Direct 3D 11.1 is now used if it is available.
9
+
10
+Hotfix: Configuration Version should now match the plugin version again.
11
 
12
 ## Changelog
13
+### 2.3.3 (Hotfix)
14
+* Fixed H264 Plugin not properly adjusting config version number.
15
+* Reduced subprocess 'amf-test' size, which is used to check for AMF compatibility.
16
+
17
+### 2.3.2
18
+* Fixed a bunch of startup crashed by moving AMF Capability tests to another process, thanks @jp9000 for doing a lot of the work to make this happen.
19
+* Fixed the H265 encoder not stopping which was caused by 'Keyframe Interval' and 'GOP Size' being stuck at 0 internally.
20
+* Replaced the blacklist with a warning message to allow Windows 8 users to use current versions.
21
+* Fixed a crash with older Drivers which do not have Pre-Pass or VBAQ.
22
+* Fixed 'Target Bitrate' being set as 'Peak Bitrate' in VBR rate control mode.
23
+* Fixed Direct3D 11.1 not being used even if available, resulting in minimally lower performance.
24
+
25
 ### 2.3.1
26
 * Skipped 2.3.0 as it was not included with obs-studio.
27
 * Improved support for the "New Networking Code" and "Replay Buffer" features by renaming 'Bitrate.Target' to 'bitrate'.
28
 
29
 ### 2.3.0
30
 * Added a blacklist for drivers exposing an AMF Runtime older than 1.4.6.0.
31
-* Removed all hidden properties no longer exposed by the newest AMF Runtime.
32
\ No newline at end of file
33
+* Removed all hidden properties no longer exposed by the newest AMF Runtime.
34
obs-studio-21.0.3.tar.xz/plugins/enc-amf/#Resources/package.in.bat -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/#Resources/package.in.bat Changed
10
 
1
@@ -1,7 +1,7 @@
2
 @ECHO OFF
3
 REM Shut up, I'm just as lazy as anyone else.
4
 SET "CURDIR=%~dp0"
5
-SET "FINALNAME=AMD-Encoder-for-OBS-Studio.@enc-amf_VERSION_MAJOR@.@enc-amf_VERSION_MINOR@.@enc-amf_VERSION_PATCH@"
6
+SET "FINALNAME=AMD-Encoder-for-OBS-Studio.@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@"
7
 
8
 SET "SevenZip=C:\Program Files\7-Zip\7z.exe"
9
 SET "InnoSetup=C:\Program Files (x86)\Inno Setup 5\Compil32.exe"
10
obs-studio-21.0.3.tar.xz/plugins/enc-amf/CMakeLists.txt -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/CMakeLists.txt Changed
96
 
1
@@ -15,15 +15,12 @@
2
 # along with this program; if not, write to the Free Software
3
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
4
 
5
-cmake_minimum_required(VERSION 2.8.12)
6
-PROJECT(enc-amf)
7
+cmake_minimum_required(VERSION 3.1.0)
8
+PROJECT(enc-amf VERSION 2.3.3)
9
 
10
 ################################################################################
11
 # Version
12
 ################################################################################
13
-SET(enc-amf_VERSION_MAJOR 2)
14
-SET(enc-amf_VERSION_MINOR 3)
15
-SET(enc-amf_VERSION_PATCH 1)
16
 configure_file(
17
    "${PROJECT_SOURCE_DIR}/#Resources/package.in.bat"
18
    "${PROJECT_SOURCE_DIR}/#Resources/package.bat"
19
@@ -98,7 +95,7 @@
20
 ################################################################################
21
 # Standalone and OBS Studio Build Data
22
 ################################################################################
23
-if(TARGET obs)
24
+if(TARGET libobs)
25
    # OBS Studio Specific
26
    
27
    # Variables
28
@@ -177,7 +174,6 @@
29
        "${PATH_OBSStudio}/"
30
    )
31
    add_definitions(-D_CRT_SECURE_NO_WARNINGS)
32
-   add_definitions(-DNO_PIPED_DETECTION)
33
 endif()
34
 
35
 ################################################################################
36
@@ -195,27 +191,35 @@
37
 
38
 # All Warnings, Extra Warnings, Pedantic
39
 if(MSVC)
40
-  # Force to always compile with W4
41
-  if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
42
-    string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
43
-  else()
44
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
45
-  endif()
46
+   # Force to always compile with W4
47
+   if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
48
+       string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
49
+   else()
50
+       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
51
+   endif()
52
+
53
+   # Enable Options
54
+   # /Gy (Function-Level Linking)
55
+   # /OPT:REF
56
+   # /OPT:NOICF    
57
+   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Gy")
58
+   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Gy")
59
+   set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:REF /OPT:NOICF")
60
 elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
61
-  # Update if necessary
62
-  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic")
63
+   # Update if necessary
64
+   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic")
65
 endif()
66
 
67
-if(TARGET obs)
68
+# Main Project
69
+if(TARGET libobs)
70
    install_obs_plugin_with_data(enc-amf Resources)
71
-   add_subdirectory(Source/detect-amf)
72
 else()
73
    math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}")
74
    add_custom_command(TARGET enc-amf POST_BUILD
75
        COMMAND ${CMAKE_COMMAND} -E copy_directory
76
        "${PROJECT_SOURCE_DIR}/Resources/locale"
77
        "${PROJECT_SOURCE_DIR}/#Build/data/obs-plugins/enc-amf/locale"
78
-   )   
79
+   )
80
    add_custom_command(TARGET enc-amf POST_BUILD
81
        COMMAND ${CMAKE_COMMAND} -E copy
82
        "$<TARGET_FILE:enc-amf>"
83
@@ -223,7 +227,10 @@
84
    )
85
    add_custom_command(TARGET enc-amf POST_BUILD
86
        COMMAND ${CMAKE_COMMAND} -E copy
87
-       "$<TARGET_FILE_DIR:enc-amf>/enc-amf.pdb"
88
-       "${PROJECT_SOURCE_DIR}/#Build/obs-plugins/${BITS}bit/enc-amf.pdb"
89
+       "$<TARGET_PDB_FILE:enc-amf>"
90
+       "${PROJECT_SOURCE_DIR}/#Build/obs-plugins/${BITS}bit/$<TARGET_PDB_FILE_NAME:enc-amf>"
91
    )
92
 endif()
93
+
94
+# Sub Project
95
+add_subdirectory(amf-test)
96
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Include/Version.h.in -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Include/Version.h.in Changed
12
 
1
@@ -19,7 +19,7 @@
2
 
3
 #pragma once
4
 
5
-const uint16_t PLUGIN_VERSION_MAJOR    = @enc-amf_VERSION_MAJOR@;
6
-const uint16_t PLUGIN_VERSION_MINOR    = @enc-amf_VERSION_MINOR@;
7
-const uint32_t PLUGIN_VERSION_PATCH    = @enc-amf_VERSION_PATCH@;
8
+const uint16_t PLUGIN_VERSION_MAJOR    = @PROJECT_VERSION_MAJOR@;
9
+const uint16_t PLUGIN_VERSION_MINOR    = @PROJECT_VERSION_MINOR@;
10
+const uint32_t PLUGIN_VERSION_PATCH    = @PROJECT_VERSION_PATCH@;
11
 const uint64_t PLUGIN_VERSION_FULL = (((uint64_t)(PLUGIN_VERSION_MAJOR & 0xFFFF) << 48ull) | ((uint64_t)(PLUGIN_VERSION_MINOR & 0xFFFF) << 32ull) | ((uint64_t)(PLUGIN_VERSION_PATCH) & 0xFFFFFFFF));
12
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Include/plugin.h -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Include/plugin.h Changed
42
 
1
@@ -33,19 +33,11 @@
2
 #define PLUGIN_NAME                "AMD Advanced Media Framework"
3
 #include "Version.h"
4
 
5
-#ifdef PIPED_PROCESS
6
-#define PLOG(level, ...)
7
-#define PLOG_ERROR(...)
8
-#define PLOG_WARNING(...)
9
-#define PLOG_INFO(...)
10
-#define PLOG_DEBUG(...)
11
-#else
12
 #define PLOG(level, ...)       blog(level, "[AMF] " __VA_ARGS__);
13
 #define PLOG_ERROR(...)            PLOG(LOG_ERROR,   __VA_ARGS__)
14
 #define PLOG_WARNING(...)      PLOG(LOG_WARNING, __VA_ARGS__)
15
 #define PLOG_INFO(...)         PLOG(LOG_INFO,    __VA_ARGS__)
16
 #define PLOG_DEBUG(...)            PLOG(LOG_DEBUG,   __VA_ARGS__)
17
-#endif
18
 
19
 // Utility
20
 #define vstr(s) dstr(s)
21
@@ -70,15 +62,17 @@
22
 #endif
23
 #define OUT
24
 
25
-#ifdef PIPED_PROCESS
26
-#define QUICK_FORMAT_MESSAGE(var, ...) std::string var = "";
27
+#ifdef _WIN64
28
+#define BIT_STR "64"
29
 #else
30
+#define BIT_STR "32"
31
+#endif
32
+
33
 #define QUICK_FORMAT_MESSAGE(var, ...) std::string var = ""; { \
34
        std::vector<char> QUICK_FORMAT_MESSAGE_buf(1024); \
35
        snprintf(QUICK_FORMAT_MESSAGE_buf.data(), QUICK_FORMAT_MESSAGE_buf.size(), __VA_ARGS__); \
36
        var = std::string(QUICK_FORMAT_MESSAGE_buf.data()); \
37
    }
38
-#endif
39
 
40
 #ifndef __FUNCTION_NAME__
41
 #if defined(_WIN32) || defined(_WIN64)   //WINDOWS
42
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Resources/locale/nl-NL.ini -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Resources/locale/nl-NL.ini Changed
11
 
1
@@ -147,8 +147,7 @@
2
 QueueSize="Wachtrij Grootte"
3
 QueueSize.Description="Zet zoveel frames in de wachtrij voor de encoder voordat getracht word om pakketten te ontvangen. Een hogere waarde introduceert meer vertraging terwijl een lagere waarde de encoder kan overbelasten. Het word niet geadviseerd om dit van de standaard waarde te wijzigen."
4
 View="Weergavemodus"
5
-View.Description="Welke eigenschappen moeten worden getoond?\nAls u
6
-'\@AMF.H264.View.Master\@' gebruikt dan ontvangt u verder geen ondersteuning."
7
+View.Description="Welke eigenschappen moeten worden getoond?\nAls u '\@AMF.H264.View.Master\@' gebruikt dan ontvangt u verder geen ondersteuning."
8
 View.Basic="Simpel"
9
 View.Advanced="Geavanceerd"
10
 View.Expert="Expert"
11
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/amf-capabilities.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/amf-capabilities.cpp Changed
31
 
1
@@ -20,11 +20,6 @@
2
 #include "amf-capabilities.h"
3
 #include "utility.h"
4
 
5
-//#ifdef _WIN32
6
-//#include <windows.h>
7
-//#include <VersionHelpers.h>
8
-//#endif
9
-
10
 using namespace Plugin;
11
 using namespace Plugin::AMD;
12
 
13
@@ -51,6 +46,9 @@
14
 #pragma endregion Singleton
15
 
16
 Plugin::AMD::CapabilityManager::CapabilityManager() {
17
+   // Potential fix for unintended crashes by AMD including asserts in release builds.
18
+   AMD::AMF::Instance()->EnableDebugTrace(false);
19
+
20
    // Key order: API, Adapter, Codec
21
    for (auto api : API::EnumerateAPIs()) {
22
        for (auto adapter : api->EnumerateAdapters()) {
23
@@ -69,7 +67,6 @@
24
                        isSupported = true;
25
                } catch (const std::exception& e) {
26
                    PLOG_WARNING("%s", e.what());
27
-                   (void)e;
28
                }
29
 
30
                PLOG_DEBUG("[Capability Manager] Testing %s Adapter '%s' with codec %s: %s.",
31
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/amf-encoder-h264.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/amf-encoder-h264.cpp Changed
28
 
1
@@ -1353,7 +1353,6 @@
2
 
3
 // Internal
4
 void Plugin::AMD::EncoderH264::PacketPriorityAndKeyframe(amf::AMFDataPtr& pData, struct encoder_packet* packet) {
5
-#ifndef PIPED_PROCESS
6
    AMFTRACECALL;
7
    uint64_t pktType;
8
    pData->GetProperty(AMF_VIDEO_ENCODER_OUTPUT_DATA_TYPE, &pktType);
9
@@ -1370,10 +1369,6 @@
10
            packet->priority = 0;
11
            break;
12
    }
13
-#else
14
-   (void)pData;
15
-   (void)packet;
16
-#endif
17
 }
18
 
19
 AMF_RESULT Plugin::AMD::EncoderH264::GetExtraDataInternal(amf::AMFVariant* p) {
20
@@ -1498,7 +1493,6 @@
21
        m_UniqueId,
22
        Utility::QualityPresetToString(GetQualityPreset()));
23
    auto profileLevel = static_cast<uint16_t>(GetProfileLevel());
24
-   (void)profileLevel;
25
    PLOG_INFO(PREFIX "    Profile: %s %" PRIu16 ".%" PRIu16,
26
        m_UniqueId,
27
        Utility::ProfileToString(GetProfile()),
28
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/amf-encoder-h265.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/amf-encoder-h265.cpp Changed
28
 
1
@@ -1402,7 +1402,6 @@
2
 
3
 // Internal
4
 void Plugin::AMD::EncoderH265::PacketPriorityAndKeyframe(amf::AMFDataPtr& pData, struct encoder_packet* packet) {
5
-#ifndef PIPED_PROCESS
6
    AMFTRACECALL;
7
 
8
    uint64_t pktType;
9
@@ -1416,10 +1415,6 @@
10
            packet->priority = 0;
11
            break;
12
    }
13
-#else
14
-   (void)pData;
15
-   (void)packet;
16
-#endif
17
 }
18
 
19
 AMF_RESULT Plugin::AMD::EncoderH265::GetExtraDataInternal(amf::AMFVariant* p) {
20
@@ -1543,7 +1538,6 @@
21
        m_UniqueId,
22
        Utility::QualityPresetToString(GetQualityPreset()));
23
    auto profileLevel = static_cast<uint16_t>(GetProfileLevel());
24
-   (void)profileLevel;
25
    PLOG_INFO(PREFIX "    Profile: %s %" PRIu16 ".%" PRIu16,
26
        m_UniqueId,
27
        Utility::ProfileToString(GetProfile()),
28
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/amf-encoder.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/amf-encoder.cpp Changed
77
 
1
@@ -536,7 +536,6 @@
2
 }
3
 
4
 void Plugin::AMD::Encoder::GetVideoInfo(struct video_scale_info* info) {
5
-#ifndef PIPED_PROCESS
6
    AMFTRACECALL;
7
 
8
    if (!m_AMFContext || !m_AMFEncoder)
9
@@ -572,9 +571,6 @@
10
    } else {
11
        info->range = VIDEO_RANGE_PARTIAL;
12
    }
13
-#else
14
-   (void)info;
15
-#endif
16
 }
17
 
18
 bool Plugin::AMD::Encoder::GetExtraData(uint8_t** extra_data, size_t* size) {
19
@@ -633,7 +629,6 @@
20
 }
21
 
22
 bool Plugin::AMD::Encoder::EncodeStore(OUT amf::AMFSurfacePtr& surface, IN struct encoder_frame* frame) {
23
-#ifndef PIPED_PROCESS
24
    AMFTRACECALL;
25
 
26
    AMF_RESULT res;
27
@@ -731,10 +726,7 @@
28
            surface->GetDuration(),
29
            printableType.c_str());
30
    }
31
-#else
32
-   (void)surface;
33
-   (void)frame;
34
-#endif
35
+
36
    return true;
37
 }
38
 
39
@@ -938,7 +930,6 @@
40
 }
41
 
42
 bool Plugin::AMD::Encoder::EncodeLoad(IN amf::AMFDataPtr& data, OUT struct encoder_packet* packet, OUT bool* received_packet) {
43
-#ifndef PIPED_PROCESS
44
    AMFTRACECALL;
45
 
46
    if (data == nullptr)
47
@@ -1045,18 +1036,12 @@
48
    }
49
 
50
    *received_packet = true;
51
-#else
52
-   (void)data;
53
-   (void)packet;
54
-   (void)received_packet;
55
-#endif
56
+
57
    return true;
58
 }
59
 
60
 int32_t Plugin::AMD::Encoder::AsyncSendMain(Encoder* obj) {
61
-#ifndef PIPED_PROCESS
62
    os_set_thread_name("AMF Asynchronous Queue Sender");
63
-#endif
64
    return obj->AsyncSendLocalMain();
65
 }
66
 
67
@@ -1112,9 +1097,7 @@
68
 }
69
 
70
 int32_t Plugin::AMD::Encoder::AsyncRetrieveMain(Encoder* obj) {
71
-#ifndef PIPED_PROCESS
72
    os_set_thread_name("AMF Asynchronous Queue Retriever");
73
-#endif
74
    return obj->AsyncRetrieveLocalMain();
75
 }
76
 
77
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/amf.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/amf.cpp Changed
39
 
1
@@ -40,7 +40,6 @@
2
    public:
3
 
4
    virtual void __cdecl Write(const wchar_t* scope, const wchar_t* message) override {
5
-#ifndef PIPED_PROCESS
6
        const wchar_t* realmsg = &(message[(33 + wcslen(scope) + 2)]); // Skip Time & Scope
7
        size_t msgLen = wcslen(realmsg) - (sizeof(wchar_t));
8
 
9
@@ -48,10 +47,6 @@
10
            12, &(message[11]),
11
            scope,
12
            msgLen, realmsg);
13
-#else
14
-       (void)scope;
15
-       (void)message;
16
-#endif
17
    }
18
 
19
    virtual void __cdecl Flush() override {}
20
@@ -137,7 +132,7 @@
21
        VerQueryValueA(pBlock, "\\VarFileInfo\\Translation", (LPVOID*)&lpTranslate, &cbTranslate);
22
 
23
        std::vector<char> buf(1024);
24
-       _snprintf(buf.data(), buf.size(), "%s%04x%04x%s",
25
+       snprintf(buf.data(), buf.size(), "%s%04x%04x%s",
26
            "\\StringFileInfo\\",
27
            lpTranslate[0].wLanguage,
28
            lpTranslate[0].wCodePage,
29
@@ -166,8 +161,7 @@
30
 
31
    /// Blacklist Drivers with older SDK.
32
    if (m_AMFVersion_Runtime < AMF_MAKE_FULL_VERSION(1,4,6,0)) {
33
-       QUICK_FORMAT_MESSAGE(msg, "AMF Runtime Version is too old, please update your drivers.");
34
-       throw std::exception(msg.data());
35
+       PLOG_WARNING("The AMF Runtime is very old and unsupported, consider updating your drivers.");
36
    }
37
 
38
    /// Initialize AMF
39
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/api-d3d11.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/api-d3d11.cpp Changed
112
 
1
@@ -27,7 +27,7 @@
2
 class SingletonDXGI {
3
    public:
4
 
5
-   #pragma region Singleton
6
+#pragma region Singleton
7
    static std::shared_ptr<SingletonDXGI> GetInstance() {
8
        static std::shared_ptr<SingletonDXGI> __instance = std::make_shared<SingletonDXGI>();
9
        static std::mutex __mutex;
10
@@ -35,7 +35,7 @@
11
        const std::lock_guard<std::mutex> lock(__mutex);
12
        return __instance;
13
    }
14
-   #pragma endregion Singleton
15
+#pragma endregion Singleton
16
 
17
    SingletonDXGI() {
18
        hModule = LoadLibrary(TEXT("dxgi.dll"));
19
@@ -80,7 +80,7 @@
20
 class SingletonD3D11 {
21
    public:
22
 
23
-   #pragma region Singleton
24
+#pragma region Singleton
25
    static std::shared_ptr<SingletonD3D11> GetInstance() {
26
        static std::shared_ptr<SingletonD3D11> __instance = std::make_shared<SingletonD3D11>();
27
        static std::mutex __mutex;
28
@@ -88,7 +88,7 @@
29
        const std::lock_guard<std::mutex> lock(__mutex);
30
        return __instance;
31
    }
32
-   #pragma endregion Singleton
33
+#pragma endregion Singleton
34
 
35
    SingletonD3D11() {
36
        hModule = LoadLibrary(TEXT("d3d11.dll"));
37
@@ -150,7 +150,7 @@
38
            continue;
39
 
40
        std::vector<char> buf(1024);
41
-       _snprintf(buf.data(), buf.size(), "%ls (VEN_%04x/DEV_%04x/SUB_%04x/REV_%04x)",
42
+       snprintf(buf.data(), buf.size(), "%ls (VEN_%04x/DEV_%04x/SUB_%04x/REV_%04x)",
43
            desc.Description,
44
            desc.VendorId,
45
            desc.DeviceId,
46
@@ -230,37 +230,39 @@
47
        D3D_FEATURE_LEVEL_11_1,
48
        D3D_FEATURE_LEVEL_11_0
49
    };
50
-   for (size_t c = 0; c < 3; c++) {
51
-       uint32_t flags = 0;
52
-
53
-       switch (c) {
54
-           case 0:
55
-               flags |= D3D11_CREATE_DEVICE_VIDEO_SUPPORT;
56
-           case 1:
57
-               flags |= D3D11_CREATE_DEVICE_BGRA_SUPPORT;
58
-           case 2:
59
+   for (size_t featureLevel = 0; featureLevel < _countof(featureLevels); featureLevel++) {
60
+       for (size_t enabledFlags = 0; enabledFlags < 3; enabledFlags++) {
61
+           uint32_t flags = 0;
62
+
63
+           switch (enabledFlags) {
64
+               case 0:
65
+                   flags |= D3D11_CREATE_DEVICE_VIDEO_SUPPORT;
66
+               case 1:
67
+                   flags |= D3D11_CREATE_DEVICE_BGRA_SUPPORT;
68
+               case 2:
69
+                   break;
70
+           }
71
+
72
+           hr = d3dInst->D3D11CreateDevice(
73
+               dxgiAdapter,
74
+               dxgiAdapter == NULL ? D3D_DRIVER_TYPE_HARDWARE : D3D_DRIVER_TYPE_UNKNOWN,
75
+               NULL,
76
+               flags,
77
+               featureLevels + featureLevel, UINT(_countof(featureLevels) - featureLevel),
78
+               D3D11_SDK_VERSION,
79
+               &m_Device,
80
+               NULL,
81
+               &m_DeviceContext);
82
+           if (SUCCEEDED(hr)) {
83
                break;
84
-       }
85
-
86
-       hr = d3dInst->D3D11CreateDevice(
87
-           dxgiAdapter,
88
-           dxgiAdapter == NULL ? D3D_DRIVER_TYPE_HARDWARE : D3D_DRIVER_TYPE_UNKNOWN,
89
-           NULL,
90
-           flags,
91
-           featureLevels + 1, _countof(featureLevels) - 1,
92
-           D3D11_SDK_VERSION,
93
-           &m_Device,
94
-           NULL,
95
-           &m_DeviceContext);
96
-       if (SUCCEEDED(hr)) {
97
-           break;
98
-       } else {
99
-           PLOG_WARNING("<" __FUNCTION_NAME__ "> Unable to create D3D11 device, error code %X (mode %d).", hr, c);
100
+           } else {
101
+               PLOG_DEBUG("<" __FUNCTION_NAME__ "> Unable to create D3D11 device, error code %X (mode %lld, level %lld).", hr, enabledFlags, featureLevel);
102
+           }
103
        }
104
    }
105
    if (FAILED(hr)) {
106
        std::vector<char> buf(1024);
107
-       _snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to create D3D11 device, error code %X.", hr);
108
+       snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to create D3D11 device, error code %X.", hr);
109
        throw std::exception(buf.data());
110
    }
111
 }
112
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/api-d3d9.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/api-d3d9.cpp Changed
28
 
1
@@ -55,7 +55,7 @@
2
            enumeratedLUIDs.push_back(adapterLUID);
3
 
4
        std::vector<char> buf(1024);
5
-       _snprintf(buf.data(), buf.size(), "%s [%s] (VEN_%04x/DEV_%04x/SUB_%04x/REV_%04x)",
6
+       snprintf(buf.data(), buf.size(), "%s [%s] (VEN_%04x/DEV_%04x/SUB_%04x/REV_%04x)",
7
            adapterIdentifier.Description,
8
            adapterIdentifier.DeviceName,
9
 
10
@@ -140,7 +140,7 @@
11
    HRESULT hr = api->m_Direct3D9Ex->GetDeviceCaps((UINT)adapterNum, D3DDEVTYPE_HAL, &ddCaps);
12
    if (FAILED(hr)) {
13
        std::vector<char> buf(1024);
14
-       _snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to query capabilities for D3D9 adapter, error code %X.", hr);
15
+       snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to query capabilities for D3D9 adapter, error code %X.", hr);
16
        throw std::exception(buf.data());
17
    }
18
 
19
@@ -162,7 +162,7 @@
20
    );
21
    if (FAILED(hr)) {
22
        std::vector<char> buf(1024);
23
-       _snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to create D3D9 device, error code %X.", hr);
24
+       snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to create D3D9 device, error code %X.", hr);
25
        throw std::exception(buf.data());
26
    }
27
 }
28
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/enc-h264.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/enc-h264.cpp Changed
201
 
1
@@ -17,48 +17,48 @@
2
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
3
  */
4
 
5
-//////////////////////////////////////////////////////////////////////////
6
-// New UI Design
7
-//////////////////////////////////////////////////////////////////////////
8
-// All: Preset
9
-// ----------- Static Section
10
-// Mas: Usage
11
-// All: Quality Preset
12
-// Adv: Profile
13
-// Adv: Profile Level
14
-// Mas: Aspect Ratio
15
-// Exp: Coding Type
16
-// Exp: Maximum Reference Frames
17
-// ----------- Rate Control Section
18
-// All: Rate Control Method
19
-// Adv: Pre-Pass Encoding (if supported)
20
-// All, CBR&VBR: Target Bitrate
21
-// All, VBR: Peak Bitrate
22
-// All, CQP: QP I/P/B
23
-// Adv, CBR&VBR: Min/Max QP
24
-// CBR: Filler Data
25
-// Adv: Frame Skipping
26
-// Exp: VBAQ
27
-// Exp: Enforce HRD
28
-// ----------- VBV Buffer
29
-// Adv: VBV Buffer Size
30
-// Exp: VBV Buffer Initial Fullness
31
-// ----------- Picture Control
32
-// All: Keyframe Interval (Float)
33
-// Mas: IDR Period (Overrides Keyframe Interval if non-zero)
34
-// Adv: B-Frames (if supported)
35
-// Adv: B-Frame Delta QP (if supported, not CQP)
36
-// Adv: B-Frame Reference (if supported and B-Frames enabled)
37
-// Adv: B-Frame Reference Delta QP (if supported, not CQP)
38
-// Exp: Deblocking Filter
39
-// Exp: Motion Estimation (Dropdown)
40
-// ----------- Intra-Refresh
41
-// ToDo: Master Mode only?
42
-// ----------- System
43
-// Adv: API
44
-// Adv: Adapter
45
-// Exp: OpenCL
46
-// All: View
47
+ //////////////////////////////////////////////////////////////////////////
48
+ // New UI Design
49
+ //////////////////////////////////////////////////////////////////////////
50
+ // All: Preset
51
+ // ----------- Static Section
52
+ // Mas: Usage
53
+ // All: Quality Preset
54
+ // Adv: Profile
55
+ // Adv: Profile Level
56
+ // Mas: Aspect Ratio
57
+ // Exp: Coding Type
58
+ // Exp: Maximum Reference Frames
59
+ // ----------- Rate Control Section
60
+ // All: Rate Control Method
61
+ // Adv: Pre-Pass Encoding (if supported)
62
+ // All, CBR&VBR: Target Bitrate
63
+ // All, VBR: Peak Bitrate
64
+ // All, CQP: QP I/P/B
65
+ // Adv, CBR&VBR: Min/Max QP
66
+ // CBR: Filler Data
67
+ // Adv: Frame Skipping
68
+ // Exp: VBAQ
69
+ // Exp: Enforce HRD
70
+ // ----------- VBV Buffer
71
+ // Adv: VBV Buffer Size
72
+ // Exp: VBV Buffer Initial Fullness
73
+ // ----------- Picture Control
74
+ // All: Keyframe Interval (Float)
75
+ // Mas: IDR Period (Overrides Keyframe Interval if non-zero)
76
+ // Adv: B-Frames (if supported)
77
+ // Adv: B-Frame Delta QP (if supported, not CQP)
78
+ // Adv: B-Frame Reference (if supported and B-Frames enabled)
79
+ // Adv: B-Frame Reference Delta QP (if supported, not CQP)
80
+ // Exp: Deblocking Filter
81
+ // Exp: Motion Estimation (Dropdown)
82
+ // ----------- Intra-Refresh
83
+ // ToDo: Master Mode only?
84
+ // ----------- System
85
+ // Adv: API
86
+ // Adv: Adapter
87
+ // Exp: OpenCL
88
+ // All: View
89
 
90
 #include "enc-h264.h"
91
 #include "amf-encoder-h264.h"
92
@@ -136,13 +136,12 @@
93
 }
94
 
95
 void Plugin::Interface::H264Interface::get_defaults(obs_data_t *data) {
96
-   #pragma region OBS - Enforce Streaming Service Restrictions
97
-   obs_data_set_default_int(data, "bitrate", 0);
98
+#pragma region OBS - Enforce Streaming Service Restrictions
99
    obs_data_set_default_int(data, "keyint_sec", 0);
100
    obs_data_set_default_string(data, "rate_control", "");
101
    obs_data_set_default_string(data, "profile", "");
102
    obs_data_set_default_string(data, "preset", "");
103
-   #pragma endregion OBS - Enforce Streaming Service Restrictions
104
+#pragma endregion OBS - Enforce Streaming Service Restrictions
105
 
106
    // Preset
107
    obs_data_set_default_int(data, P_PRESET, static_cast<int64_t>(Presets::None));
108
@@ -243,7 +242,7 @@
109
    obs_properties* props = obs_properties_create();
110
    obs_property_t* p;
111
 
112
-   #pragma region Preset
113
+#pragma region Preset
114
    p = obs_properties_add_list(props, P_PRESET, P_TRANSLATE(P_PRESET), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
115
    obs_property_set_modified_callback(p, properties_modified);
116
    obs_property_list_add_int(p, "", -1);
117
@@ -254,18 +253,18 @@
118
    obs_property_list_add_int(p, P_TRANSLATE(P_PRESET_LOSSLESS), static_cast<int32_t>(Presets::Lossless));
119
    obs_property_list_add_int(p, P_TRANSLATE(P_PRESET_TWITCH), static_cast<int32_t>(Presets::Twitch));
120
    obs_property_list_add_int(p, P_TRANSLATE(P_PRESET_YOUTUBE), static_cast<int32_t>(Presets::YouTube));
121
-   #pragma endregion Preset
122
+#pragma endregion Preset
123
 
124
    // Static Properties
125
-   #pragma region Quality Preset
126
+#pragma region Quality Preset
127
    p = obs_properties_add_list(props, P_QUALITYPRESET, P_TRANSLATE(P_QUALITYPRESET), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
128
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QUALITYPRESET)));
129
    obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_SPEED), static_cast<int32_t>(QualityPreset::Speed));
130
    obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_BALANCED), static_cast<int32_t>(QualityPreset::Balanced));
131
    obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_QUALITY), static_cast<int32_t>(QualityPreset::Quality));
132
-   #pragma endregion Quality Preset
133
+#pragma endregion Quality Preset
134
 
135
-   #pragma region Profile, Levels
136
+#pragma region Profile, Levels
137
    p = obs_properties_add_list(props, P_PROFILE, P_TRANSLATE(P_PROFILE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
138
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_PROFILE)));
139
    obs_property_list_add_int(p, "Constrained Baseline", static_cast<int32_t>(Profile::ConstrainedBaseline));
140
@@ -293,24 +292,24 @@
141
    obs_property_list_add_int(p, "5.0", static_cast<int32_t>(ProfileLevel::L50));
142
    obs_property_list_add_int(p, "5.1", static_cast<int32_t>(ProfileLevel::L51));
143
    obs_property_list_add_int(p, "5.2", static_cast<int32_t>(ProfileLevel::L52));
144
-   #pragma endregion Profile, Levels
145
+#pragma endregion Profile, Levels
146
 
147
-   #pragma region Coding Type
148
+#pragma region Coding Type
149
    p = obs_properties_add_list(props, P_CODINGTYPE, P_TRANSLATE(P_CODINGTYPE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
150
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_CODINGTYPE)));
151
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_AUTOMATIC), static_cast<int32_t>(CodingType::Automatic));
152
    obs_property_list_add_int(p, "CABAC", static_cast<int32_t>(CodingType::CABAC));
153
    obs_property_list_add_int(p, "CALVC", static_cast<int32_t>(CodingType::CALVC));
154
-   #pragma endregion Coding Type
155
+#pragma endregion Coding Type
156
 
157
-   #pragma region Maximum Reference Frames
158
+#pragma region Maximum Reference Frames
159
    p = obs_properties_add_int_slider(props, P_MAXIMUMREFERENCEFRAMES, P_TRANSLATE(P_MAXIMUMREFERENCEFRAMES),
160
        1, 16, 1);
161
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_MAXIMUMREFERENCEFRAMES)));
162
-   #pragma endregion Maximum Reference Frames
163
+#pragma endregion Maximum Reference Frames
164
 
165
    // Rate Control
166
-   #pragma region Rate Control Method
167
+#pragma region Rate Control Method
168
    p = obs_properties_add_list(props, P_RATECONTROLMETHOD, P_TRANSLATE(P_RATECONTROLMETHOD), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
169
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_RATECONTROLMETHOD)));
170
    obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_CQP), static_cast<int32_t>(RateControlMethod::ConstantQP));
171
@@ -318,16 +317,16 @@
172
    obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_VBR), static_cast<int32_t>(RateControlMethod::PeakConstrainedVariableBitrate));
173
    obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_VBRLAT), static_cast<int32_t>(RateControlMethod::LatencyConstrainedVariableBitrate));
174
    obs_property_set_modified_callback(p, properties_modified);
175
-   #pragma endregion Rate Control Method
176
+#pragma endregion Rate Control Method
177
 
178
-   #pragma region Pre-Pass
179
+#pragma region Pre-Pass
180
    p = obs_properties_add_list(props, P_PREPASSMODE, P_TRANSLATE(P_PREPASSMODE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
181
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_PREPASSMODE)));
182
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), static_cast<int32_t>(PrePassMode::Disabled));
183
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_ENABLED), static_cast<int32_t>(PrePassMode::Enabled));
184
-   #pragma endregion Pre-Pass
185
+#pragma endregion Pre-Pass
186
 
187
-   #pragma region Parameters
188
+#pragma region Parameters
189
    /// Bitrate Constraints
190
    p = obs_properties_add_int(props, "bitrate", P_TRANSLATE(P_BITRATE_TARGET), 0, 1, 1);
191
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_BITRATE_TARGET)));
192
@@ -347,16 +346,16 @@
193
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QP_PFRAME)));
194
    p = obs_properties_add_int_slider(props, P_QP_BFRAME, P_TRANSLATE(P_QP_BFRAME), 0, 51, 1);
195
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QP_BFRAME)));
196
-   #pragma endregion Parameters
197
+#pragma endregion Parameters
198
 
199
-   #pragma region Filler Data
200
+#pragma region Filler Data
201
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/enc-h265.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/enc-h265.cpp Changed
201
 
1
@@ -17,7 +17,6 @@
2
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
3
  */
4
 
5
-
6
 //////////////////////////////////////////////////////////////////////////
7
 // New UI Design
8
 //////////////////////////////////////////////////////////////////////////
9
@@ -111,13 +110,13 @@
10
 }
11
 
12
 void Plugin::Interface::H265Interface::get_defaults(obs_data_t *data) {
13
-   #pragma region OBS - Enforce Streaming Service Restrictions
14
+#pragma region OBS - Enforce Streaming Service Restrictions
15
    obs_data_set_default_int(data, "bitrate", 0);
16
    obs_data_set_default_int(data, "keyint_sec", 0);
17
    obs_data_set_default_string(data, "rate_control", "");
18
    obs_data_set_default_string(data, "profile", "");
19
    obs_data_set_default_string(data, "preset", "");
20
-   #pragma endregion OBS - Enforce Streaming Service Restrictions
21
+#pragma endregion OBS - Enforce Streaming Service Restrictions
22
 
23
    // Static
24
    //obs_data_set_default_int(data, P_USAGE, static_cast<int64_t>(Usage::Transcoding));
25
@@ -220,15 +219,15 @@
26
    obs_property_t* p;
27
 
28
    // Static Properties
29
-   #pragma region Quality Preset
30
+#pragma region Quality Preset
31
    p = obs_properties_add_list(props, P_QUALITYPRESET, P_TRANSLATE(P_QUALITYPRESET), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
32
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QUALITYPRESET)));
33
    obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_SPEED), static_cast<int32_t>(QualityPreset::Speed));
34
    obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_BALANCED), static_cast<int32_t>(QualityPreset::Balanced));
35
    obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_QUALITY), static_cast<int32_t>(QualityPreset::Quality));
36
-   #pragma endregion Quality Preset
37
+#pragma endregion Quality Preset
38
 
39
-   #pragma region Profile, Levels
40
+#pragma region Profile, Levels
41
    p = obs_properties_add_list(props, P_PROFILE, P_TRANSLATE(P_PROFILE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
42
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_PROFILE)));
43
    obs_property_list_add_int(p, "Main", static_cast<int32_t>(Profile::Main));
44
@@ -249,30 +248,30 @@
45
    obs_property_list_add_int(p, "6.0", static_cast<int32_t>(ProfileLevel::L60));
46
    obs_property_list_add_int(p, "6.1", static_cast<int32_t>(ProfileLevel::L61));
47
    obs_property_list_add_int(p, "6.2", static_cast<int32_t>(ProfileLevel::L62));
48
-   #pragma endregion Profile, Levels
49
+#pragma endregion Profile, Levels
50
 
51
-   #pragma region Tier
52
+#pragma region Tier
53
    p = obs_properties_add_list(props, P_TIER, P_TRANSLATE(P_TIER), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
54
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_TIER)));
55
    obs_property_list_add_int(p, "Main", static_cast<int32_t>(H265::Tier::Main));
56
    obs_property_list_add_int(p, "High", static_cast<int32_t>(H265::Tier::High));
57
-   #pragma endregion Tier
58
+#pragma endregion Tier
59
 
60
-   #pragma region Coding Type
61
+#pragma region Coding Type
62
    p = obs_properties_add_list(props, P_CODINGTYPE, P_TRANSLATE(P_CODINGTYPE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
63
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_CODINGTYPE)));
64
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_AUTOMATIC), static_cast<int32_t>(CodingType::Automatic));
65
    obs_property_list_add_int(p, "CABAC", static_cast<int32_t>(CodingType::CABAC));
66
-   #pragma endregion Coding Type
67
+#pragma endregion Coding Type
68
 
69
-   #pragma region Maximum Reference Frames
70
+#pragma region Maximum Reference Frames
71
    p = obs_properties_add_int_slider(props, P_MAXIMUMREFERENCEFRAMES, P_TRANSLATE(P_MAXIMUMREFERENCEFRAMES),
72
        1, 16, 1);
73
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_MAXIMUMREFERENCEFRAMES)));
74
-   #pragma endregion Maximum Reference Frames
75
+#pragma endregion Maximum Reference Frames
76
 
77
    // Rate Control
78
-   #pragma region Rate Control Method
79
+#pragma region Rate Control Method
80
    p = obs_properties_add_list(props, P_RATECONTROLMETHOD, P_TRANSLATE(P_RATECONTROLMETHOD), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
81
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_RATECONTROLMETHOD)));
82
    obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_CQP), static_cast<int32_t>(RateControlMethod::ConstantQP));
83
@@ -280,16 +279,16 @@
84
    obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_VBR), static_cast<int32_t>(RateControlMethod::PeakConstrainedVariableBitrate));
85
    obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_VBRLAT), static_cast<int32_t>(RateControlMethod::LatencyConstrainedVariableBitrate));
86
    obs_property_set_modified_callback(p, properties_modified);
87
-   #pragma endregion Rate Control Method
88
+#pragma endregion Rate Control Method
89
 
90
-   #pragma region Pre-Pass
91
+#pragma region Pre-Pass
92
    p = obs_properties_add_list(props, P_PREPASSMODE, P_TRANSLATE(P_PREPASSMODE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
93
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_PREPASSMODE)));
94
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), static_cast<int32_t>(PrePassMode::Disabled));
95
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_ENABLED), static_cast<int32_t>(PrePassMode::Enabled));
96
-   #pragma endregion Pre-Pass
97
+#pragma endregion Pre-Pass
98
 
99
-   #pragma region Parameters
100
+#pragma region Parameters
101
    /// Bitrate Constraints
102
    p = obs_properties_add_int(props, "bitrate", P_TRANSLATE(P_BITRATE_TARGET), 0, 1, 1);
103
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_BITRATE_TARGET)));
104
@@ -311,16 +310,16 @@
105
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QP_PFRAME_MINIMUM)));
106
    p = obs_properties_add_int_slider(props, P_QP_PFRAME_MAXIMUM, P_TRANSLATE(P_QP_PFRAME_MAXIMUM), 0, 51, 1);
107
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QP_PFRAME_MAXIMUM)));
108
-   #pragma endregion Parameters
109
+#pragma endregion Parameters
110
 
111
-   #pragma region Filler Data
112
+#pragma region Filler Data
113
    p = obs_properties_add_list(props, P_FILLERDATA, P_TRANSLATE(P_FILLERDATA), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
114
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_FILLERDATA)));
115
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), 0);
116
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_ENABLED), 1);
117
-   #pragma endregion Filler Data
118
+#pragma endregion Filler Data
119
 
120
-   #pragma region Frame Skipping
121
+#pragma region Frame Skipping
122
    p = obs_properties_add_list(props, P_FRAMESKIPPING, P_TRANSLATE(P_FRAMESKIPPING), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
123
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_FRAMESKIPPING)));
124
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), 0);
125
@@ -331,49 +330,49 @@
126
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_FRAMESKIPPING_BEHAVIOUR)));
127
    obs_property_list_add_int(p, P_TRANSLATE(P_FRAMESKIPPING_SKIPNTH), 0);
128
    obs_property_list_add_int(p, P_TRANSLATE(P_FRAMESKIPPING_KEEPNTH), 1);
129
-   #pragma endregion Frame Skipping
130
+#pragma endregion Frame Skipping
131
 
132
-   #pragma region VBAQ
133
+#pragma region VBAQ
134
    p = obs_properties_add_list(props, P_VBAQ, P_TRANSLATE(P_VBAQ), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
135
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_VBAQ)));
136
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), 0);
137
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_ENABLED), 1);
138
-   #pragma endregion VBAQ
139
+#pragma endregion VBAQ
140
 
141
-   #pragma region Enforce Hypothetical Reference Decoder Restrictions
142
+#pragma region Enforce Hypothetical Reference Decoder Restrictions
143
    p = obs_properties_add_list(props, P_ENFORCEHRD, P_TRANSLATE(P_ENFORCEHRD), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
144
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_ENFORCEHRD)));
145
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), 0);
146
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_ENABLED), 1);
147
-   #pragma endregion Enforce Hyptothetical Reference Decoder Restrictions
148
+#pragma endregion Enforce Hyptothetical Reference Decoder Restrictions
149
 
150
    // VBV Buffer
151
-   #pragma region VBV Buffer Mode
152
+#pragma region VBV Buffer Mode
153
    p = obs_properties_add_list(props, P_VBVBUFFER, P_TRANSLATE(P_VBVBUFFER), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
154
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_VBVBUFFER)));
155
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_AUTOMATIC), 0);
156
    obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_MANUAL), 1);
157
    obs_property_set_modified_callback(p, properties_modified);
158
-   #pragma endregion VBV Buffer Mode
159
+#pragma endregion VBV Buffer Mode
160
 
161
-   #pragma region VBV Buffer Strictness
162
+#pragma region VBV Buffer Strictness
163
    p = obs_properties_add_float_slider(props, P_VBVBUFFER_STRICTNESS, P_TRANSLATE(P_VBVBUFFER_STRICTNESS), 0.0, 100.0, 0.1);
164
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_VBVBUFFER_STRICTNESS)));
165
-   #pragma endregion VBV Buffer Strictness
166
+#pragma endregion VBV Buffer Strictness
167
 
168
-   #pragma region VBV Buffer Size
169
+#pragma region VBV Buffer Size
170
    p = obs_properties_add_int_slider(props, P_VBVBUFFER_SIZE, P_TRANSLATE(P_VBVBUFFER_SIZE), 1, 1000000, 1);
171
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_VBVBUFFER_SIZE)));
172
-   #pragma endregion VBV Buffer Size
173
+#pragma endregion VBV Buffer Size
174
 
175
-   #pragma region VBV Buffer Initial Fullness
176
+#pragma region VBV Buffer Initial Fullness
177
    p = obs_properties_add_float_slider(props, P_VBVBUFFER_INITIALFULLNESS, P_TRANSLATE(P_VBVBUFFER_INITIALFULLNESS), 0.0, 100.0, 100.0 / 64.0);
178
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_VBVBUFFER_INITIALFULLNESS)));
179
-   #pragma endregion VBV Buffer Initial Fullness
180
+#pragma endregion VBV Buffer Initial Fullness
181
 
182
    // Picture Control
183
-   #pragma region Interval and Periods
184
-   /// Keyframe, IDR
185
+#pragma region Interval and Periods
186
+/// Keyframe, IDR
187
    p = obs_properties_add_float(props, P_INTERVAL_KEYFRAME, P_TRANSLATE(P_INTERVAL_KEYFRAME), 0, 100, 0.001);
188
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_INTERVAL_KEYFRAME)));
189
    p = obs_properties_add_int(props, P_PERIOD_IDR_H265, P_TRANSLATE(P_PERIOD_IDR_H265), 0, 1000, 1);
190
@@ -388,17 +387,17 @@
191
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_INTERVAL_PFRAME)));
192
    p = obs_properties_add_int(props, P_PERIOD_PFRAME, P_TRANSLATE(P_PERIOD_PFRAME), 0, 1000, 1);
193
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_PERIOD_PFRAME)));
194
-   #pragma endregion Interval and Periods
195
+#pragma endregion Interval and Periods
196
 
197
-   #pragma region GOP Type
198
+#pragma region GOP Type
199
    p = obs_properties_add_list(props, P_GOP_TYPE, P_TRANSLATE(P_GOP_TYPE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT);
200
    obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_GOP_TYPE)));
201
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/plugin.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/plugin.cpp Changed
201
 
1
@@ -22,13 +22,12 @@
2
 #include "api-base.h"
3
 #include "amf.h"
4
 #include "amf-capabilities.h"
5
-#include <sstream>
6
-
7
 #include "enc-h264.h"
8
 #include "enc-h265.h"
9
-
10
-#include "libobs/util/util.hpp"
11
-
12
+#include <sstream>
13
+#include <libobs/util/pipe.h>
14
+#include <libobs/util/platform.h>
15
+#include <libobs/util/util.hpp>
16
 #ifdef _WIN32
17
 #include <windows.h>
18
 #endif
19
@@ -36,13 +35,53 @@
20
 using namespace Plugin;
21
 using namespace Plugin::AMD;
22
 
23
-//////////////////////////////////////////////////////////////////////////
24
-// Code
25
-//////////////////////////////////////////////////////////////////////////
26
+#if defined(WIN32)
27
 BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID) {
28
    return TRUE;
29
 }
30
 
31
+static inline bool create_process(const char *cmd_line, HANDLE stdin_handle,
32
+   HANDLE stdout_handle, HANDLE *process) {
33
+   PROCESS_INFORMATION pi = { 0 };
34
+   wchar_t *cmd_line_w = NULL;
35
+   STARTUPINFOW si = { 0 };
36
+   bool success = false;
37
+
38
+   si.cb = sizeof(si);
39
+   si.dwFlags = STARTF_USESTDHANDLES;
40
+   si.hStdInput = stdin_handle;
41
+   si.hStdOutput = stdout_handle;
42
+
43
+   os_utf8_to_wcs_ptr(cmd_line, 0, &cmd_line_w);
44
+   if (cmd_line_w) {
45
+       success = !!CreateProcessW(NULL, cmd_line_w, NULL, NULL, true,
46
+           CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
47
+
48
+       if (success) {
49
+           *process = pi.hProcess;
50
+           CloseHandle(pi.hThread);
51
+       }
52
+
53
+       bfree(cmd_line_w);
54
+   }
55
+
56
+   return success;
57
+}
58
+
59
+static bool create_pipe(HANDLE *input, HANDLE *output) {
60
+   SECURITY_ATTRIBUTES sa = { 0 };
61
+
62
+   sa.nLength = sizeof(sa);
63
+   sa.bInheritHandle = true;
64
+
65
+   if (!CreatePipe(input, output, &sa, 0)) {
66
+       return false;
67
+   }
68
+
69
+   return true;
70
+}
71
+#endif
72
+
73
 OBS_DECLARE_MODULE();
74
 OBS_MODULE_AUTHOR("Michael Fabian Dirks");
75
 OBS_MODULE_USE_DEFAULT_LOCALE("enc-amf", "en-US");
76
@@ -165,71 +204,81 @@
77
 }
78
 #endif
79
 
80
-#ifndef NO_PIPED_DETECTION
81
-static inline bool create_process(const char *cmd_line, HANDLE *process)
82
-{
83
-   PROCESS_INFORMATION pi = {0};
84
-   STARTUPINFOW si = {0};
85
-   wchar_t *cmd_line_w = NULL;
86
-   bool success = false;
87
-
88
-   os_utf8_to_wcs_ptr(cmd_line, 0, &cmd_line_w);
89
-   if (cmd_line_w) {
90
-       si.cb = sizeof(si);
91
-       success = !!CreateProcessW(nullptr, cmd_line_w, nullptr,
92
-               nullptr, true, CREATE_NO_WINDOW, nullptr,
93
-               nullptr, &si, &pi);
94
-
95
-       if (success) {
96
-           *process = pi.hProcess;
97
-           CloseHandle(pi.hThread);
98
-       }
99
-
100
-       bfree(cmd_line_w);
101
-   }
102
-
103
-   return success;
104
-}
105
-#endif
106
-
107
-/**
108
-* Required: Called when the module is loaded.  Use this function to load all
109
-* the sources/encoders/outputs/services for your module, or anything else that
110
-* may need loading.
111
-*
112
-* @return           Return true to continue loading the module, otherwise
113
-*                   false to indicate failure and unload the module
114
-*/
115
 MODULE_EXPORT bool obs_module_load(void) {
116
    PLOG_DEBUG("<" __FUNCTION_NAME__ "> Loading...");
117
 
118
-#ifndef NO_PIPED_DETECTION
119
-   HANDLE process = nullptr;
120
-   DWORD detect_code = 0;
121
+#ifdef _WIN32
122
+   // Out-of-process AMF Test
123
+   {
124
+       unsigned long returnCode = 0xFFFFFFFF;
125
+       HANDLE hProcess, hIn, hOut;
126
+       BPtr<char> path = obs_module_file("enc-amf-test" BIT_STR ".exe");
127
 
128
-#ifdef _WIN64
129
-#define BIT_STR "64"
130
-#else
131
-#define BIT_STR "32"
132
-#endif
133
+       if (!create_pipe(&hIn, &hOut)) {
134
+           PLOG_ERROR("Failed to create pipes for AMF test.");
135
+           return false;
136
+       }
137
+       if (!SetHandleInformation(hIn, HANDLE_FLAG_INHERIT, false)
138
+           || !SetHandleInformation(hOut, HANDLE_FLAG_INHERIT, false)) {
139
+           CloseHandle(hIn);
140
+           CloseHandle(hOut);
141
+           PLOG_ERROR("Failed to modify pipes for AMF test.");
142
+           return false;
143
+       };
144
+       if (!create_process(path, hIn, hOut, &hProcess)) {
145
+           CloseHandle(hIn);
146
+           CloseHandle(hOut);
147
+           PLOG_ERROR("Failed to start AMF test subprocess.");
148
+           return false;
149
+       }
150
 
151
-   // Call amf-detect process to check to see if AMF is available before
152
-   // initializing AMF in the process.  This isolates the check and
153
-   // prevents potential startup crashes from affecting OBS startup.
154
-   BPtr<char> path = obs_module_file("detect-amf" BIT_STR ".exe");
155
-   if (create_process(path, &process)) {
156
-       if (WaitForSingleObject(process, 2000) == WAIT_OBJECT_0)
157
-           GetExitCodeProcess(process, &detect_code);
158
-       CloseHandle(process);
159
-   }
160
+       std::vector<char> buf(1024);
161
+       DWORD bufread = 0;
162
+       while (ReadFile(hOut, buf.data(), 1024, &bufread, NULL)) {
163
+           PLOG_ERROR("%s", buf.data());
164
+       }
165
 
166
-   if (detect_code != 3) {
167
-       if (detect_code == 2) {
168
-           PLOG_INFO("<" __FUNCTION_NAME__ "> AMF not supported (no AMD graphics)");
169
-       } else {
170
-           PLOG_INFO("<" __FUNCTION_NAME__ "> AMF detection failure prevented!  <3");
171
+       if (WaitForSingleObject(hProcess, 2000) == WAIT_OBJECT_0)
172
+           GetExitCodeProcess(hProcess, &returnCode);
173
+
174
+       CloseHandle(hProcess);
175
+       CloseHandle(hIn);
176
+       CloseHandle(hOut);
177
+
178
+       switch (returnCode) {
179
+           case STATUS_ACCESS_VIOLATION:
180
+           case STATUS_ARRAY_BOUNDS_EXCEEDED:
181
+           case STATUS_BREAKPOINT:
182
+           case STATUS_DATATYPE_MISALIGNMENT:
183
+           case STATUS_FLOAT_DENORMAL_OPERAND:
184
+           case STATUS_FLOAT_DIVIDE_BY_ZERO:
185
+           case STATUS_FLOAT_INEXACT_RESULT:
186
+           case STATUS_FLOAT_INVALID_OPERATION:
187
+           case STATUS_FLOAT_OVERFLOW:
188
+           case STATUS_FLOAT_STACK_CHECK:
189
+           case STATUS_FLOAT_UNDERFLOW:
190
+           case STATUS_GUARD_PAGE_VIOLATION:
191
+           case STATUS_ILLEGAL_INSTRUCTION:
192
+           case STATUS_IN_PAGE_ERROR:
193
+           case STATUS_INTEGER_DIVIDE_BY_ZERO:
194
+           case STATUS_INTEGER_OVERFLOW:
195
+           case STATUS_INVALID_DISPOSITION:
196
+           case STATUS_INVALID_HANDLE:
197
+           case STATUS_NONCONTINUABLE_EXCEPTION:
198
+           case STATUS_PRIVILEGED_INSTRUCTION:
199
+           case STATUS_SINGLE_STEP:
200
+           case STATUS_STACK_OVERFLOW:
201
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/utility.cpp -> obs-studio-21.1.2.tar.xz/plugins/enc-amf/Source/utility.cpp Changed
30
 
1
@@ -44,7 +44,6 @@
2
 
3
 static std::map<std::string, std::string> translatedMap;
4
 const char* Utility::obs_module_text_multi(const char *key, uint8_t depth) {
5
-#ifndef PIPED_PROCESS
6
    // Check if it already was translated.
7
    if (!translatedMap.count(std::string(key))) { // If not, translate it now.
8
        const char* out = obs_module_text(key);
9
@@ -90,11 +89,6 @@
10
 
11
    auto value = translatedMap.find(std::string(key));
12
    return value->second.c_str();
13
-#else
14
-   (void)key;
15
-   (void)depth;
16
-   return nullptr;
17
-#endif
18
 }
19
 
20
 
21
@@ -338,7 +332,7 @@
22
    throw std::runtime_error("Invalid Parameter");
23
 }
24
 Plugin::AMD::Profile Utility::ProfileFromAMFH264(AMF_VIDEO_ENCODER_PROFILE_ENUM v) {
25
-   #pragma warning( disable: 4063 ) // Developer Note: I know better, Compiler.
26
+#pragma warning( disable: 4063 ) // Developer Note: I know better, Compiler.
27
    switch (v) {
28
        case (AMF_VIDEO_ENCODER_PROFILE_ENUM)256:
29
            return Profile::ConstrainedBaseline;
30
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test Added
2
 
1
+(directory)
2
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test/CMakeLists.txt Added
111
 
1
@@ -0,0 +1,109 @@
2
+# A Plugin that integrates the AMD AMF encoder into OBS Studio
3
+# Copyright (C) 2016 - 2017 Michael Fabian Dirks
4
+#
5
+# This program is free software; you can redistribute it and/or modify
6
+# it under the terms of the GNU General Public License as published by
7
+# the Free Software Foundation; either version 2 of the License, or
8
+# (at your option) any later version.
9
+#
10
+# This program is distributed in the hope that it will be useful,
11
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
+# GNU General Public License for more details.
14
+#
15
+# You should have received a copy of the GNU General Public License
16
+# along with this program; if not, write to the Free Software
17
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
18
+
19
+cmake_minimum_required(VERSION 3.1.0)
20
+PROJECT(enc-amf-test)
21
+
22
+# All Warnings, Extra Warnings, Pedantic
23
+if(MSVC)
24
+   # Hide Microsofts insecurities, as they are usually not cross-platform compatible changes.
25
+   add_definitions(-D_CRT_SECURE_NO_WARNINGS) 
26
+   
27
+   # Force to always compile with W4
28
+   if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]")
29
+       string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
30
+   else()
31
+       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
32
+   endif()
33
+   
34
+   # Use Static Linking instead of Dynamic Linking
35
+   string(REPLACE "/MT" "/MD"
36
+       "CMAKE_C_FLAGS" 
37
+       "${CMAKE_C_FLAGS}")
38
+   string(REPLACE "/MT" "/MD" 
39
+       "CMAKE_CXX_FLAGS" 
40
+       "${CMAKE_CXX_FLAGS}")
41
+   string(TOUPPER "${CMAKE_CONFIGURATION_TYPES}" UPPER_CONFIG_TYPES)
42
+   foreach(CONFIG_TYPE ${UPPER_CONFIG_TYPES})
43
+       string(REPLACE "/MT" "/MD"
44
+           "CMAKE_C_FLAGS_${CONFIG_TYPE}" 
45
+           "${CMAKE_C_FLAGS_${CONFIG_TYPE}}")
46
+
47
+       string(REPLACE "/MT" "/MD" 
48
+           "CMAKE_CXX_FLAGS_${CONFIG_TYPE}" 
49
+           "${CMAKE_CXX_FLAGS_${CONFIG_TYPE}}")
50
+   endforeach()
51
+   
52
+   # Enable Options
53
+   # /Gy (Function-Level Linking)
54
+   # /OPT:REF
55
+   # /OPT:NOICF    
56
+   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Gy")
57
+   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Gy")
58
+   set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:REF /OPT:NOICF")
59
+elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
60
+  # Update if necessary
61
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic")
62
+endif()
63
+
64
+# Detect Architecture (Bitness)
65
+math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}")
66
+
67
+# Project
68
+add_executable(enc-amf-test
69
+   "${PROJECT_SOURCE_DIR}/main.cpp"
70
+   "${PROJECT_SOURCE_DIR}/libobs/obs-module.h"
71
+   "${PROJECT_SOURCE_DIR}/libobs/obs-module.c"
72
+   "${enc-amf_SOURCE_DIR}/Source/amf.cpp"
73
+   "${enc-amf_SOURCE_DIR}/Source/amf-capabilities.cpp"
74
+   "${enc-amf_SOURCE_DIR}/Source/amf-encoder.cpp"
75
+   "${enc-amf_SOURCE_DIR}/Source/amf-encoder-h264.cpp"
76
+   "${enc-amf_SOURCE_DIR}/Source/amf-encoder-h265.cpp"
77
+   "${enc-amf_SOURCE_DIR}/Source/api-base.cpp"
78
+   "${enc-amf_SOURCE_DIR}/Source/api-d3d9.cpp"
79
+   "${enc-amf_SOURCE_DIR}/Source/api-d3d11.cpp"
80
+   "${enc-amf_SOURCE_DIR}/Source/utility.cpp"
81
+   "${enc-amf_SOURCE_DIR}/Include/amf.h"
82
+   "${enc-amf_SOURCE_DIR}/Include/amf-capabilities.h"
83
+   "${enc-amf_SOURCE_DIR}/Include/amf-encoder.h"
84
+   "${enc-amf_SOURCE_DIR}/Include/amf-encoder-h264.h"
85
+   "${enc-amf_SOURCE_DIR}/Include/amf-encoder-h265.h"
86
+   "${enc-amf_SOURCE_DIR}/Include/api-base.h"
87
+   "${enc-amf_SOURCE_DIR}/Include/api-d3d9.h"
88
+   "${enc-amf_SOURCE_DIR}/Include/api-d3d11.h"
89
+   "${enc-amf_SOURCE_DIR}/Include/utility.h"
90
+)
91
+include_directories(enc-amf-test BEFORE ${PROJECT_SOURCE_DIR}) 
92
+target_link_libraries(enc-amf-test ${enc-amf_LIBRARIES})
93
+set_target_properties(enc-amf-test
94
+   PROPERTIES
95
+       OUTPUT_NAME "enc-amf-test${BITS}")
96
+
97
+if(TARGET libobs)
98
+   install_obs_datatarget(enc-amf-test "obs-plugins/enc-amf")
99
+else()
100
+   add_custom_command(TARGET enc-amf-test POST_BUILD
101
+       COMMAND ${CMAKE_COMMAND} -E copy
102
+       "$<TARGET_FILE:enc-amf-test>"
103
+       "${enc-amf_SOURCE_DIR}/#Build/data/obs-plugins/enc-amf/$<TARGET_FILE_NAME:enc-amf-test>"
104
+   )
105
+   add_custom_command(TARGET enc-amf-test POST_BUILD
106
+       COMMAND ${CMAKE_COMMAND} -E copy
107
+       "$<TARGET_PDB_FILE:enc-amf-test>"
108
+       "${enc-amf_SOURCE_DIR}/#Build/data/obs-plugins/enc-amf/$<TARGET_PDB_FILE_NAME:enc-amf-test>"
109
+   )
110
+endif()
111
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test/libobs Added
2
 
1
+(directory)
2
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test/libobs/obs-module.c Added
35
 
1
@@ -0,0 +1,33 @@
2
+/*
3
+ * A Plugin that integrates the AMD AMF encoder into OBS Studio
4
+ * Copyright (C) 2016 - 2017 Michael Fabian Dirks
5
+ *
6
+ * This program is free software; you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation; either version 2 of the License, or
9
+ * (at your option) any later version.
10
+ *
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
19
+ */
20
+
21
+const char *obs_module_text(const char *name) {
22
+   return name;
23
+}
24
+
25
+void blog(int level, char* formatting, ...) {
26
+   level;
27
+   formatting;
28
+   return;
29
+}
30
+
31
+void os_set_thread_name(const char *name) {
32
+   name;
33
+   return;
34
+}
35
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test/libobs/obs-module.h Added
24
 
1
@@ -0,0 +1,22 @@
2
+/*
3
+ * A Plugin that integrates the AMD AMF encoder into OBS Studio
4
+ * Copyright (C) 2016 - 2017 Michael Fabian Dirks
5
+ *
6
+ * This program is free software; you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation; either version 2 of the License, or
9
+ * (at your option) any later version.
10
+ *
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
19
+ */
20
+
21
+const char *obs_module_text(const char *);
22
+void blog(int, char*, ...);
23
+void os_set_thread_name(const char *name);
24
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test/main.cpp Added
57
 
1
@@ -0,0 +1,55 @@
2
+/*
3
+ * A Plugin that integrates the AMD AMF encoder into OBS Studio
4
+ * Copyright (C) 2016 - 2017 Michael Fabian Dirks
5
+ *
6
+ * This program is free software; you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation; either version 2 of the License, or
9
+ * (at your option) any later version.
10
+ *
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
19
+ */
20
+
21
+#include "amf.h"
22
+#include "amf-capabilities.h"
23
+#include "api-base.h"
24
+#include <iostream>
25
+
26
+#ifdef _WIN32
27
+#include "windows.h"
28
+#endif
29
+
30
+using namespace Plugin;
31
+using namespace Plugin::AMD;
32
+
33
+int main(int argc, char* argv[]) {
34
+   argc;
35
+   argv;
36
+
37
+#ifdef _WIN32
38
+   SetErrorMode(SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS);
39
+#endif
40
+
41
+   try {
42
+       AMF::Initialize();
43
+       API::InitializeAPIs();
44
+       CapabilityManager::Initialize();
45
+       CapabilityManager::Finalize();
46
+       API::FinalizeAPIs();
47
+       AMF::Finalize();
48
+       return 0;
49
+   } catch (std::exception ex) {
50
+       std::cout << ex.what() << std::endl;
51
+       return 1;
52
+   } catch (...) {
53
+       std::cout << "Unknown Error" << std::endl;
54
+       return 2;
55
+   }
56
+}
57
obs-studio-21.1.2.tar.xz/plugins/image-source/data/locale/fil-PH.ini Added
38
 
1
@@ -0,0 +1,36 @@
2
+ImageInput="Larawan"
3
+File="Dokumentong Larawan"
4
+UnloadWhenNotShowing="Mag-ibis ng imahe kapag hindi nagpapakita"
5
+
6
+SlideShow="Ipakita ang Slide ng Larawan"
7
+SlideShow.TransitionSpeed="Bilis ng Paglipat (milliseconds)"
8
+SlideShow.SlideTime="Oras sa Pagitan ng Mga Slide (millisecond)"
9
+SlideShow.Files="Dokumentong Larawan"
10
+SlideShow.CustomSize="Bounding Size / Aspect Ratio"
11
+SlideShow.CustomSize.Auto="Awtomatikong"
12
+SlideShow.Randomize="Simulan ang Pag-playback"
13
+SlideShow.Loop="Silo"
14
+SlideShow.Transition="Paglipat"
15
+SlideShow.Transition.Cut="Kunin"
16
+SlideShow.Transition.Fade="Fade"
17
+SlideShow.Transition.Swipe="Mag-swipe"
18
+SlideShow.Transition.Slide="Slide"
19
+SlideShow.PlaybackBehavior="Pag-uugali ng Pagtingin"
20
+SlideShow.PlaybackBehavior.StopRestart="Itigil kapag hindi nakikita, i-restart kapag nakikita"
21
+SlideShow.PlaybackBehavior.PauseUnpause="I-pause kapag hindi nakikita, i-unpause kapag nakikita"
22
+SlideShow.PlaybackBehavior.AlwaysPlay="Laging i-play kahit na hindi nakikita"
23
+SlideShow.SlideMode="Slide Mode"
24
+SlideShow.SlideMode.Auto="Awtomatikong"
25
+SlideShow.SlideMode.Manual="Mano-manong (Gamitin ang mga hotkey upang kontrolin ang slideshow)"
26
+SlideShow.PlayPause="I-play / I-pause"
27
+SlideShow.Restart="I-restart"
28
+SlideShow.Stop="Itigil"
29
+SlideShow.NextSlide="Susunod na Slide"
30
+SlideShow.PreviousSlide="Nakaraang Slide"
31
+SlideShow.HideWhenDone="Itago kapag tapos na ang slideshow"
32
+
33
+ColorSource="Pinagmulan ng Kulay"
34
+ColorSource.Color="Kulay"
35
+ColorSource.Width="Lapad"
36
+ColorSource.Height="Taas"
37
+
38
obs-studio-21.1.2.tar.xz/plugins/image-source/data/locale/ka-GE.ini Added
38
 
1
@@ -0,0 +1,36 @@
2
+ImageInput="სურათი"
3
+File="სურათის ფაილი"
4
+UnloadWhenNotShowing="სურათის ამოღება, თუ არ გამოჩნდება"
5
+
6
+SlideShow="სლაიდშოუ"
7
+SlideShow.TransitionSpeed="გადასვლის სიჩქარე (მილიწამებში)"
8
+SlideShow.SlideTime="დაყოვნება სლაიდებს შორის (მილიწამებში)"
9
+SlideShow.Files="სურათების ფაილები"
10
+SlideShow.CustomSize="ჩარჩოს ზომა/გვერდების თანაფარდობა"
11
+SlideShow.CustomSize.Auto="ავტომატური"
12
+SlideShow.Randomize="შემთხვევითი შერჩევა"
13
+SlideShow.Loop="გამეორება"
14
+SlideShow.Transition="გადასვლები"
15
+SlideShow.Transition.Cut="მოჭრა"
16
+SlideShow.Transition.Fade="მილევა"
17
+SlideShow.Transition.Swipe="შენაცვლება"
18
+SlideShow.Transition.Slide="გადაწევა"
19
+SlideShow.PlaybackBehavior="ხილვადობის მიხედვით მოქმედება"
20
+SlideShow.PlaybackBehavior.StopRestart="შეწყვეტა თუ უხილავია, თავიდან გაშვება თუ ხილულია"
21
+SlideShow.PlaybackBehavior.PauseUnpause="შეჩერება თუ უხილავია, გაშვება თუ ხილულია"
22
+SlideShow.PlaybackBehavior.AlwaysPlay="ყოველთვის გაშვება, ხილვადობის მიუხედავად"
23
+SlideShow.SlideMode="სლაიდების მართვა"
24
+SlideShow.SlideMode.Auto="ავტომატური"
25
+SlideShow.SlideMode.Manual="ხელით (ღილაკების გამოყენება სლაიდშოუს სამართავად)"
26
+SlideShow.PlayPause="გაშვება/შეჩერება"
27
+SlideShow.Restart="თავიდან გაშვება"
28
+SlideShow.Stop="შეწყვეტა"
29
+SlideShow.NextSlide="მომდევნო სლაიდი"
30
+SlideShow.PreviousSlide="წინა სლაიდი"
31
+SlideShow.HideWhenDone="დამალვა სლაიდშოუს დასრულებისას"
32
+
33
+ColorSource="ფონის ფერი"
34
+ColorSource.Color="ფერი"
35
+ColorSource.Width="სიგანე"
36
+ColorSource.Height="სიმაღლე"
37
+
38
obs-studio-21.0.3.tar.xz/plugins/image-source/data/locale/ro-RO.ini -> obs-studio-21.1.2.tar.xz/plugins/image-source/data/locale/ro-RO.ini Changed
17
 
1
@@ -5,9 +5,15 @@
2
 SlideShow="Slide Show de imagini"
3
 SlideShow.TransitionSpeed="Viteza de tranziție (milisecunde)"
4
 SlideShow.SlideTime="Timpul dintre diapozitive (milisecunde)"
5
+SlideShow.Files="Fișiere Imagine"
6
+SlideShow.CustomSize.Auto="Automat"
7
+SlideShow.Loop="Buclă"
8
 SlideShow.Transition="Tranziție"
9
 SlideShow.Transition.Cut="Decupare"
10
 SlideShow.Transition.Slide="Diapozitiv"
11
+SlideShow.SlideMode.Auto="Automat"
12
+SlideShow.NextSlide="Următorul diapozitiv"
13
+SlideShow.PreviousSlide="Diapozitiv anterior"
14
 
15
 ColorSource.Color="Culoare"
16
 ColorSource.Width="Lățime"
17
obs-studio-21.0.3.tar.xz/plugins/image-source/data/locale/ru-RU.ini -> obs-studio-21.1.2.tar.xz/plugins/image-source/data/locale/ru-RU.ini Changed
10
 
1
@@ -11,7 +11,7 @@
2
 SlideShow.Randomize="Случайное воспроизведение"
3
 SlideShow.Loop="Повтор"
4
 SlideShow.Transition="Переход"
5
-SlideShow.Transition.Cut="Обрезать"
6
+SlideShow.Transition.Cut="Обрезка"
7
 SlideShow.Transition.Fade="Затухание"
8
 SlideShow.Transition.Swipe="Перемещение"
9
 SlideShow.Transition.Slide="Сдвиг"
10
obs-studio-21.1.2.tar.xz/plugins/image-source/data/locale/tl-PH.ini Added
38
 
1
@@ -0,0 +1,36 @@
2
+ImageInput="Imahe"
3
+File="Imahe ng File"
4
+UnloadWhenNotShowing="Mag-ibis ng imahe kapag hindi nagpapakita"
5
+
6
+SlideShow="Ipakita ang pag-slide ng Larawan"
7
+SlideShow.TransitionSpeed="Bilis ng Paglipat (milsegundo)"
8
+SlideShow.SlideTime="Oras sa Pagitan ng mga Slide (milsegundo)"
9
+SlideShow.Files="Mga Imahe ng File"
10
+SlideShow.CustomSize="Karatig na Sukat/Ayos ng Ratio"
11
+SlideShow.CustomSize.Auto="Awtomatiko"
12
+SlideShow.Randomize="Pagkumpara sa Pag-play pabalik"
13
+SlideShow.Loop="Silo"
14
+SlideShow.Transition="Paglipat"
15
+SlideShow.Transition.Cut="Kunin"
16
+SlideShow.Transition.Fade="Kumupas"
17
+SlideShow.Transition.Swipe="Mag-swipe"
18
+SlideShow.Transition.Slide="Mag-slide"
19
+SlideShow.PlaybackBehavior="Paggiging kita ng Pag-uugali"
20
+SlideShow.PlaybackBehavior.StopRestart="Itigil kapag hindi ito makita, i-restart kapag nakikita na"
21
+SlideShow.PlaybackBehavior.PauseUnpause="I-pause kapag hindi makita, i-unpause kapag kita na"
22
+SlideShow.PlaybackBehavior.AlwaysPlay="Laging paandarin kahit hindi nakikita"
23
+SlideShow.SlideMode="Naka-slide Mode"
24
+SlideShow.SlideMode.Auto="Awtomatiko"
25
+SlideShow.SlideMode.Manual="Mano-mano (gamitin ang mga hotkey para makontrol ang pagpapakita ng slide)"
26
+SlideShow.PlayPause="Paganahin/I-pause"
27
+SlideShow.Restart="I-restart"
28
+SlideShow.Stop="Itigil"
29
+SlideShow.NextSlide="Susunod na Slide"
30
+SlideShow.PreviousSlide="Ang nakaraang Slide"
31
+SlideShow.HideWhenDone="Itago kapag ang pagpapakita ng slide ay tapos na"
32
+
33
+ColorSource="Pinagmulan ng kulay"
34
+ColorSource.Color="Kulay"
35
+ColorSource.Width="Lapad"
36
+ColorSource.Height="Taas"
37
+
38
obs-studio-21.0.3.tar.xz/plugins/image-source/obs-slideshow.c -> obs-studio-21.1.2.tar.xz/plugins/image-source/obs-slideshow.c Changed
22
 
1
@@ -657,6 +657,20 @@
2
    if (ss->pause_on_deactivate || ss->manual || ss->stop || ss->paused)
3
        return;
4
 
5
+   /* ----------------------------------------------------- */
6
+   /* fade to transparency when the file list becomes empty */
7
+   if (!ss->files.num) {
8
+       obs_source_t* active_transition_source =
9
+           obs_transition_get_active_source(ss->transition);
10
+
11
+       if (active_transition_source) {
12
+           obs_source_release(active_transition_source);
13
+           do_transition(ss, true);
14
+       }
15
+   }
16
+
17
+   /* ----------------------------------------------------- */
18
+   /* do transition when slide time reached                 */
19
    ss->elapsed += seconds;
20
 
21
    if (ss->elapsed > ss->slide_time) {
22
obs-studio-21.1.2.tar.xz/plugins/linux-alsa/data/locale/fil-PH.ini Added
5
 
1
@@ -0,0 +1,3 @@
2
+AlsaInput="Audio Capture Device (ALSA)"
3
+Device="Device"
4
+
5
obs-studio-21.1.2.tar.xz/plugins/linux-alsa/data/locale/ka-GE.ini Added
5
 
1
@@ -0,0 +1,3 @@
2
+AlsaInput="ხმის ჩამწერი მოწყობილობა (ALSA)"
3
+Device="მოწყობილობა"
4
+
5
obs-studio-21.1.2.tar.xz/plugins/linux-alsa/data/locale/tl-PH.ini Added
5
 
1
@@ -0,0 +1,3 @@
2
+AlsaInput="Aparatong Pangkuha ng Audio (APA)"
3
+Device="Device"
4
+
5
obs-studio-21.1.2.tar.xz/plugins/linux-capture/data/locale/fil-PH.ini Added
18
 
1
@@ -0,0 +1,16 @@
2
+X11SharedMemoryScreenInput="Screen Capture (XSHM)"
3
+Screen="Screen"
4
+CaptureCursor="Kunin ang Cursor"
5
+AdvancedSettings="Mga Advanced na Setting"
6
+XServer="X Server"
7
+XCCapture="Pagkuha ng Window (Xcomposite)"
8
+Window="Window"
9
+CropTop="I-crop ang Tuktok (mga pixel)"
10
+CropLeft="I-crop ang Kaliwa (mga pixel)"
11
+CropRight="I-crop ang Kanan (mga pixel)"
12
+CropBottom="I-crop ang Ika (pixels)"
13
+SwapRedBlue="Magpalit ng pula at asul"
14
+LockX="Lock X server kapag nakukuha"
15
+IncludeXBorder="Isama ang X Border"
16
+ExcludeAlpha="Gumamit ng alpha-less texture na format (Mesa workaround)"
17
+
18
obs-studio-21.1.2.tar.xz/plugins/linux-capture/data/locale/ka-GE.ini Added
18
 
1
@@ -0,0 +1,16 @@
2
+X11SharedMemoryScreenInput="ეკრანის გადაღება (XSHM)"
3
+Screen="ეკრანი"
4
+CaptureCursor="მაჩვენებლის ასახვა"
5
+AdvancedSettings="დამატებითი პარამეტრები"
6
+XServer="X სერვერი"
7
+XCCapture="ფანჯრის გადაღება (Xcomposite)"
8
+Window="ფანჯარა"
9
+CropTop="ზემოდან მოჭრა (პიქსელი)"
10
+CropLeft="მარცხნიდან მოჭრა (პიქსელი)"
11
+CropRight="მარჯვნიდან მოჭრა (პიქსელი)"
12
+CropBottom="ქვემოდან მოჭრა (პიქსელი)"
13
+SwapRedBlue="წითლისა ლურჯის შენაცვლება"
14
+LockX="X სერვერის შეზღუდვა გადაღებისას"
15
+IncludeXBorder="X ჩარჩოიანად"
16
+ExcludeAlpha="გაუმჭვირვალე ზედაპირის გამოყენება (Mesa-ს ხარვეზის მოსაგვარებლად)"
17
+
18
obs-studio-21.1.2.tar.xz/plugins/linux-capture/data/locale/tl-PH.ini Added
18
 
1
@@ -0,0 +1,16 @@
2
+X11SharedMemoryScreenInput="Pamagat ng Screen (XSHM)"
3
+Screen="Ang Screen"
4
+CaptureCursor="Pamagat ng kursor"
5
+AdvancedSettings="Ang mga nauunang setting"
6
+XServer="X tagapagsilbi"
7
+XCCapture="Pamagat ng Bintana (Xpinaghalo)"
8
+Window="Bintana"
9
+CropTop="I-crop ang Top (mga pixel)"
10
+CropLeft="I-crop ang kaliwa (mga pixel)"
11
+CropRight="I-crop ang kanan (mga pixel)"
12
+CropBottom="I-crop ang pinakailalim (mga pixel)"
13
+SwapRedBlue="Pagpalitin ang pula at ang asul"
14
+LockX="Kandado sa X server kapag kukuha"
15
+IncludeXBorder="Kasama sa X na hangganan"
16
+ExcludeAlpha="Gumamit ng alpha-less texture na format (Mesa workaround)"
17
+
18
obs-studio-21.0.3.tar.xz/plugins/linux-capture/xcompcap-main.cpp -> obs-studio-21.1.2.tar.xz/plugins/linux-capture/xcompcap-main.cpp Changed
9
 
1
@@ -400,6 +400,7 @@
2
        GLX_BIND_TO_TEXTURE_RGBA_EXT, GL_TRUE,
3
        GLX_DRAWABLE_TYPE, GLX_PIXMAP_BIT,
4
        GLX_BIND_TO_TEXTURE_TARGETS_EXT, GLX_TEXTURE_2D_BIT_EXT,
5
+       GLX_ALPHA_SIZE, 8,
6
        GLX_DOUBLEBUFFER, GL_FALSE,
7
        None
8
    };
9
obs-studio-21.1.2.tar.xz/plugins/linux-jack/data/locale/fil-PH.ini Added
6
 
1
@@ -0,0 +1,4 @@
2
+StartJACKServer="Simulan ang JACK Server"
3
+Channels="Bilang ng Mga Channel"
4
+JACKInput="JACK Input Client"
5
+
6
obs-studio-21.1.2.tar.xz/plugins/linux-jack/data/locale/ka-GE.ini Added
6
 
1
@@ -0,0 +1,4 @@
2
+StartJACKServer="JACK სერვერის გაშვება"
3
+Channels="არხების რაოდენობა"
4
+JACKInput="JACK შეტანის კლიენტი"
5
+
6
obs-studio-21.1.2.tar.xz/plugins/linux-pulseaudio/data/locale/fil-PH.ini Added
6
 
1
@@ -0,0 +1,4 @@
2
+PulseInput="Audio Input Capture (PulseAudio)"
3
+PulseOutput="Audio Output Capture (PulseAudio)"
4
+Device="Device"
5
+
6
obs-studio-21.1.2.tar.xz/plugins/linux-pulseaudio/data/locale/ka-GE.ini Added
6
 
1
@@ -0,0 +1,4 @@
2
+PulseInput="შემავალი ხმოვანი სიგნალის ჩაწერა (PulseAudio)"
3
+PulseOutput="გამომავალი ხმოვანი სიგნალის ჩაწერა (PulseAudio)"
4
+Device="მოწყობილობა"
5
+
6
obs-studio-21.1.2.tar.xz/plugins/linux-v4l2/data/locale/fil-PH.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+V4L2Input="Video Capture Device (V4L2)"
3
+Device="Device"
4
+Input="Input"
5
+VideoFormat="Format ng Video"
6
+VideoStandard="Standard Video"
7
+DVTiming="DV Timing"
8
+Resolution="Resolution"
9
+FrameRate="Frame rate"
10
+LeaveUnchanged="Mag-iwan ng hindi nabago"
11
+UseBuffering="Gamitin ang Buffering"
12
+
13
obs-studio-21.1.2.tar.xz/plugins/linux-v4l2/data/locale/ka-GE.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+V4L2Input="ვიდეოს ჩამწერი მოწყობილობა (V4L2)"
3
+Device="მოწყობილობა"
4
+Input="შემავალი"
5
+VideoFormat="ვიდეოს ფორმატი"
6
+VideoStandard="ვიდეოს სტანდარტი"
7
+DVTiming="ციფრული ვიდეოს სინქრონიზაცია"
8
+Resolution="გარჩევადობა"
9
+FrameRate="კადრის სიხშირე"
10
+LeaveUnchanged="უცვლელად დატოვება"
11
+UseBuffering="ბუფერიზაციის გამოყენება"
12
+
13
obs-studio-21.1.2.tar.xz/plugins/linux-v4l2/data/locale/tl-PH.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+V4L2Input="Pagkuha ng Video sa Aparato (V4L2)"
3
+Device="Aparato"
4
+Input="Pampasok"
5
+VideoFormat="Ang Format ng Video"
6
+VideoStandard="Ang Pamantayan ng Video"
7
+DVTiming="Ang Tiyempong DV"
8
+Resolution="Resulusyon"
9
+FrameRate="Pag-Rate ng Frame"
10
+LeaveUnchanged="Iniwa ng hindi nabago"
11
+UseBuffering="Gamitin ang Buffering"
12
+
13
obs-studio-21.1.2.tar.xz/plugins/mac-avcapture/data/locale/fil-PH.ini Added
16
 
1
@@ -0,0 +1,14 @@
2
+AVCapture="Video Capture aparato"
3
+Device="Aparato"
4
+UsePreset="Gamitin ang Preset"
5
+Preset="Ang Preset"
6
+Buffering="Gamitin ang Buffering"
7
+FrameRate="Rate ng frame"
8
+InputFormat="Format ng input"
9
+ColorSpace="Kulay ng puwang"
10
+VideoRange="Saklaw ng video"
11
+VideoRange.Partial="Bahagyang"
12
+VideoRange.Full="Buong"
13
+Auto="I-Auto"
14
+Unknown="Hindi kilalang ($1)"
15
+
16
obs-studio-21.1.2.tar.xz/plugins/mac-avcapture/data/locale/tl-PH.ini Added
16
 
1
@@ -0,0 +1,14 @@
2
+AVCapture="Pagkuha ng Aparato ng Video"
3
+Device="Aparato"
4
+UsePreset="Gamitin ang Preset"
5
+Preset="Ang Preset"
6
+Buffering="Gamitin ang Buffering"
7
+FrameRate="Pag-rate ng Frame"
8
+InputFormat="Pampasok na format"
9
+ColorSpace="Pagitan na Kulay"
10
+VideoRange="Saklaw na Video"
11
+VideoRange.Partial="Ang Partial"
12
+VideoRange.Full="Puno"
13
+Auto="Awto"
14
+Unknown="Hindi kilalang ($1)"
15
+
16
obs-studio-21.1.2.tar.xz/plugins/mac-capture/data/locale/fil-PH.ini Added
23
 
1
@@ -0,0 +1,21 @@
2
+CoreAudio.InputCapture="Awdyo Input KaptyuraPag-capture ng Audio Input"
3
+CoreAudio.OutputCapture="Awdyo Awtput Kaptyura"
4
+CoreAudio.Device="Aparato"
5
+CoreAudio.Device.Default="Pumalya"
6
+DisplayCapture="Ipakita paghuli"
7
+DisplayCapture.Display="Ihayag"
8
+DisplayCapture.ShowCursor="Ipakita ang Cursor"
9
+WindowCapture="Pagkuha ng Window"
10
+WindowCapture.ShowShadow="Ipakita ang anino ng Window"
11
+WindowUtils.Window="Window"
12
+WindowUtils.ShowEmptyNames="Ipakita ang Windows gamit ang mga walang laman na pangalan"
13
+CropMode="I-crop"
14
+CropMode.None="Wala"
15
+CropMode.Manual="Mano-manong"
16
+CropMode.ToWindow="Sa Window"
17
+CropMode.ToWindowAndManual="Upang Window at Manu-manong"
18
+Crop.origin.x="I-crop ang kaliwa"
19
+Crop.origin.y="I-crop ang tuktok"
20
+Crop.size.width="I-crop ang kanan"
21
+Crop.size.height="I-crop ang ibaba"
22
+
23
obs-studio-21.1.2.tar.xz/plugins/mac-capture/data/locale/tl-PH.ini Added
23
 
1
@@ -0,0 +1,21 @@
2
+CoreAudio.InputCapture="Pampasok na Pagkuha ng Audio"
3
+CoreAudio.OutputCapture="Panglabas na pagkuha ng Audio"
4
+CoreAudio.Device="Aparato"
5
+CoreAudio.Device.Default="I-default"
6
+DisplayCapture="Ipakita ang nakuha"
7
+DisplayCapture.Display="Ipakita"
8
+DisplayCapture.ShowCursor="Ipakita ang Kursor"
9
+WindowCapture="Nakuhang bintana"
10
+WindowCapture.ShowShadow="Ipakita ang Anino ng Bintana"
11
+WindowUtils.Window="Bintana"
12
+WindowUtils.ShowEmptyNames="Ipakita ang bintana na may mga walang laman na pangalan"
13
+CropMode="I-crop"
14
+CropMode.None="Wala"
15
+CropMode.Manual="Mano-mano"
16
+CropMode.ToWindow="Sa Bintana"
17
+CropMode.ToWindowAndManual="Sa Bintana at mano-mano"
18
+Crop.origin.x="I-crop sa kaliwa"
19
+Crop.origin.y="I-crop sa taas"
20
+Crop.size.width="I-crop sa kanan"
21
+Crop.size.height="I-crop sa pinakailalim"
22
+
23
obs-studio-21.0.3.tar.xz/plugins/mac-capture/mac-audio.c -> obs-studio-21.1.2.tar.xz/plugins/mac-capture/mac-audio.c Changed
11
 
1
@@ -89,6 +89,9 @@
2
    if (!ca->device_uid)
3
        ca->device_uid = bstrdup("default");
4
 
5
+   ca->default_device = false;
6
+   ca->no_devices = false;
7
+
8
    /* have to do this because mac output devices don't actually exist */
9
    if (astrcmpi(ca->device_uid, "default") == 0) {
10
        if (ca->input) {
11
obs-studio-21.1.2.tar.xz/plugins/mac-syphon/data/locale/fil-PH.ini Added
15
 
1
@@ -0,0 +1,13 @@
2
+Syphon="Pagkuha ng Laro (Siphon)"
3
+Source="Pinagkukunan"
4
+LaunchSyphonInject="Simulan ang SayponIngekt"
5
+Inject="Turukan"
6
+Application="Aplikasyon"
7
+SyphonLicense="Ipahigod ang Lisensya"
8
+Crop="I-crop"
9
+Crop.origin.x="Gupitin ng maigsi sa kaliwa"
10
+Crop.origin.y="Gupitin ng maigsi sa taas"
11
+Crop.size.width="Gupitin ng maigsi sa kanan"
12
+Crop.size.height="Gupitin ng maigsi sa ibaba"
13
+AllowTransparency="Pahintulutan ang aninaw"
14
+
15
obs-studio-21.1.2.tar.xz/plugins/mac-vth264/data/locale/fil-PH.ini Added
16
 
1
@@ -0,0 +1,14 @@
2
+VTH264EncHW="Apol VT H264 Softwer Enkoder"
3
+VTH264EncSW="Apol VT H264 Softwer Enkoder"
4
+VTEncoder="Bidyo ng Kahon ng kasangkapan Enkoder"
5
+Bitrate="Bitreyt"
6
+UseMaxBitrate="Limitasyon ng bitreyt"
7
+MaxBitrate="Pinakamataas na bitreyt"
8
+MaxBitrateWindow="Pinakamataas na bitreyt window (segundo)"
9
+KeyframeIntervalSec="Ang Agwat ng Keypreym (segundo, 0=awto)"
10
+Profile="Propayl"
11
+None="(Wala)"
12
+DefaultEncoder="(Depolt Enkoder)"
13
+UseBFrames="Gamitin ang B-Preyms"
14
+
15
+
16
obs-studio-21.1.2.tar.xz/plugins/mac-vth264/data/locale/tl-PH.ini Added
16
 
1
@@ -0,0 +1,14 @@
2
+VTH264EncHW="Ang Hardware Encoder ng Apple VT H264"
3
+VTH264EncSW="Ang Software Encoder ng Apple VT H264"
4
+VTEncoder="Ang VideoToolbox ng Encoder"
5
+Bitrate="Bitreyt"
6
+UseMaxBitrate="Limitasyon sa Bitreyt"
7
+MaxBitrate="Pinakamalakas na bitrate"
8
+MaxBitrateWindow="Pinakamalakas na bitrate window (segundo)"
9
+KeyframeIntervalSec="Ang Pagitan sa Keyframe (segundo, 0=awto)"
10
+Profile="Bista sa Tagiliran"
11
+None="(Wala)"
12
+DefaultEncoder="(I-default ang Encoder)"
13
+UseBFrames="Gumamit ng mga B-Frame"
14
+
15
+
16
obs-studio-21.0.3.tar.xz/plugins/obs-browser/BSUtils.cmake -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/BSUtils.cmake Changed
8
 
1
@@ -49,4 +49,4 @@
2
 macro (set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE)
3
     set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY}
4
         ${XCODE_VALUE})
5
-endmacro (set_xcode_property)
6
\ No newline at end of file
7
+endmacro (set_xcode_property)
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/CMakeLists.txt -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/CMakeLists.txt Changed
71
 
1
@@ -16,14 +16,24 @@
2
    option(USE_STATIC_CRT "Use static CRT" ON)
3
 
4
    if(USE_STATIC_CRT)
5
-       set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS} /MT")
6
-       set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} /MT")
7
-       set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} /MT")
8
-       set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} /MTd")
9
-       set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS} /MT")
10
-       set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} /MT")
11
-       set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} /MT")
12
-       set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} /MTd")
13
+       string(REPLACE "/MD" "/MT" 
14
+           "CMAKE_C_FLAGS" 
15
+           "${CMAKE_C_FLAGS}")
16
+
17
+       string(REPLACE "/MD" "/MT" 
18
+           "CMAKE_CXX_FLAGS" 
19
+           "${CMAKE_CXX_FLAGS}")
20
+
21
+       string(TOUPPER "${CMAKE_CONFIGURATION_TYPES}" UPPER_CONFIG_TYPES)
22
+       foreach(CONFIG_TYPE ${UPPER_CONFIG_TYPES})
23
+           string(REPLACE "/MD" "/MT" 
24
+               "CMAKE_C_FLAGS_${CONFIG_TYPE}" 
25
+               "${CMAKE_C_FLAGS_${CONFIG_TYPE}}")
26
+
27
+           string(REPLACE "/MD" "/MT" 
28
+               "CMAKE_CXX_FLAGS_${CONFIG_TYPE}" 
29
+               "${CMAKE_CXX_FLAGS_${CONFIG_TYPE}}")
30
+       endforeach()
31
    endif()
32
 endif()
33
 
34
@@ -318,7 +328,35 @@
35
        COMMAND rm -rf "$<TARGET_FILE_DIR:cef-isolation>/../Frameworks/CEF Helper.app"
36
        COMMAND cp -Rf "$<TARGET_FILE_DIR:cef-bootstrap>/../../../CEF Helper.app" "$<TARGET_FILE_DIR:cef-isolation>/../Frameworks"
37
        )
38
-       
39
+
40
+else(APPLE)
41
+   math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}")
42
+   add_custom_command(TARGET obs-browser POST_BUILD
43
+       COMMAND ${CMAKE_COMMAND} -E copy_directory
44
+       "${CEF_ROOT_DIR}/Resources"
45
+       "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/"
46
+   )
47
+
48
+   add_custom_command(TARGET obs-browser POST_BUILD
49
+       COMMAND ${CMAKE_COMMAND} -E copy
50
+       "${CEF_ROOT_DIR}/Release/chrome_elf.dll"
51
+       "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/"
52
+       COMMAND ${CMAKE_COMMAND} -E copy
53
+       "${CEF_ROOT_DIR}/Release/libcef.dll"
54
+       "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/"
55
+       COMMAND ${CMAKE_COMMAND} -E copy
56
+       "${CEF_ROOT_DIR}/Release/libEGL.dll"
57
+       "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/"
58
+       COMMAND ${CMAKE_COMMAND} -E copy
59
+       "${CEF_ROOT_DIR}/Release/libGLESv2.dll"
60
+       "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/"
61
+       COMMAND ${CMAKE_COMMAND} -E copy
62
+       "${CEF_ROOT_DIR}/Release/natives_blob.bin"
63
+       "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/"
64
+       COMMAND ${CMAKE_COMMAND} -E copy
65
+       "${CEF_ROOT_DIR}/Release/snapshot_blob.bin"
66
+       "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/"
67
+   )
68
 endif(APPLE)
69
 
70
 if(APPLE)
71
obs-studio-21.0.3.tar.xz/plugins/obs-browser/FindCEF.cmake -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/FindCEF.cmake Changed
47
 
1
@@ -1,5 +1,7 @@
2
 include(FindPackageHandleStandardArgs)
3
 
4
+SET(CEF_ROOT_DIR "" CACHE PATH "Path to a CEF distributed build")
5
+
6
 message("Looking for Chromium Embedded Framework in ${CEF_ROOT_DIR}")
7
 
8
 find_path(CEF_INCLUDE_DIR "include/cef_version.h"
9
@@ -8,10 +10,19 @@
10
 find_library(CEF_LIBRARY
11
    NAMES cef libcef cef.lib libcef.o "Chromium Embedded Framework"
12
    PATHS ${CEF_ROOT_DIR} ${CEF_ROOT_DIR}/Release)
13
+find_library(CEF_LIBRARY_DEBUG
14
+   NAMES cef libcef cef.lib libcef.o "Chromium Embedded Framework"
15
+   PATHS ${CEF_ROOT_DIR} ${CEF_ROOT_DIR}/Debug)
16
 
17
 find_library(CEFWRAPPER_LIBRARY
18
    NAMES cef_dll_wrapper libcef_dll_wrapper
19
-   PATHS ${CEF_ROOT_DIR}/build/libcef_dll ${CEF_ROOT_DIR}/build/libcef_dll_wrapper)
20
+   PATHS ${CEF_ROOT_DIR}/build/libcef_dll/Release
21
+       ${CEF_ROOT_DIR}/build/libcef_dll_wrapper/Release
22
+       ${CEF_ROOT_DIR}/build/libcef_dll
23
+       ${CEF_ROOT_DIR}/build/libcef_dll_wrapper)
24
+find_library(CEFWRAPPER_LIBRARY_DEBUG
25
+   NAMES cef_dll_wrapper libcef_dll_wrapper
26
+   PATHS ${CEF_ROOT_DIR}/build/libcef_dll/Debug ${CEF_ROOT_DIR}/build/libcef_dll_wrapper/Debug)
27
 
28
 if (NOT CEF_LIBRARY)
29
    message(FATAL_ERROR "Could not find the CEF shared library" )
30
@@ -22,8 +33,14 @@
31
 endif (NOT CEFWRAPPER_LIBRARY)
32
 
33
 set(CEF_LIBRARIES
34
-   ${CEF_LIBRARY}
35
-   ${CEFWRAPPER_LIBRARY})
36
+       optimized ${CEFWRAPPER_LIBRARY}
37
+       optimized ${CEF_LIBRARY})
38
+
39
+if (CEF_LIBRARY_DEBUG AND CEFWRAPPER_LIBRARY_DEBUG)
40
+   list(APPEND CEF_LIBRARIES
41
+           debug ${CEFWRAPPER_LIBRARY_DEBUG}
42
+           debug ${CEF_LIBRARY_DEBUG})
43
+endif()
44
 
45
 find_package_handle_standard_args(CEF DEFAULT_MSG CEF_LIBRARY 
46
    CEFWRAPPER_LIBRARY CEF_INCLUDE_DIR)
47
obs-studio-21.0.3.tar.xz/plugins/obs-browser/README.md -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/README.md Changed
34
 
1
@@ -55,7 +55,22 @@
2
 
3
 ### Get the current scene
4
 ```
5
-window.obsstudio.getCurrentScene(function(data) {console.log(data);});
6
+window.obsstudio.getCurrentScene(function(data) { console.log(data); });
7
+
8
+data is a Javascript object containing the following properties:
9
+* width
10
+* height
11
+* name
12
+```
13
+
14
+### Get OBS output status
15
+```
16
+window.obsstudio.getStatus(function data) { console.log(data); });
17
+
18
+data is a Javascript object containing the following properties:
19
+* recording (true/false)
20
+* streaming (true/false)
21
+* replaybuffer (true/false)
22
 ```
23
 
24
 ## Building on OSX
25
@@ -104,7 +119,7 @@
26
 ### Building CEF
27
 #### Getting
28
 *  Download CEF Windows 64bit from [http://opensource.spotify.com/cefbuilds/index.html](http://opensource.spotify.com/cefbuilds/index.html)
29
-  *  Use CEF branch 2987
30
+  *  Use CEF branch 2987, or newer branches up until 3112
31
 *  Extract and cd into the folder
32
 
33
 #### Setting Up Project
34
obs-studio-21.0.3.tar.xz/plugins/obs-browser/cef-bootstrap/main.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/cef-bootstrap/main.cpp Changed
8
 
1
@@ -31,4 +31,4 @@
2
 #endif
3
    CefRefPtr<BrowserApp> mainApp(new BrowserApp());
4
    return CefExecuteProcess(mainArgs, mainApp.get(), NULL);                   
5
-}
6
\ No newline at end of file
7
+}
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/cef-isolation/browser-handle.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/cef-isolation/browser-handle.h Changed
6
 
1
@@ -60,4 +60,3 @@
2
 
3
    std::unique_ptr<BrowserTexture> browserTexture;
4
 };
5
-
6
obs-studio-21.0.3.tar.xz/plugins/obs-browser/cef-isolation/browser-obs-bridge-mac.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/cef-isolation/browser-obs-bridge-mac.hpp Changed
9
 
1
@@ -9,6 +9,7 @@
2
    BrowserOBSBridgeMac(id<CEFIsolationService> cefIsolationService);
3
 
4
     const char* GetCurrentSceneJSONData() override;
5
+   const char* GetStatus() override;
6
 
7
 private:
8
    id<CEFIsolationService> cefIsolationService;    
9
obs-studio-21.0.3.tar.xz/plugins/obs-browser/cef-isolation/browser-obs-bridge-mac.mm -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/cef-isolation/browser-obs-bridge-mac.mm Changed
10
 
1
@@ -8,3 +8,8 @@
2
 {
3
    return [cefIsolationService getCurrentSceneJSONData];
4
 }
5
+
6
+const char* BrowserOBSBridgeMac::GetStatus()
7
+{
8
+   return [cefIsolationService getStatus];
9
+}
10
obs-studio-21.0.3.tar.xz/plugins/obs-browser/cef-isolation/browser-render-handler.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/cef-isolation/browser-render-handler.hpp Changed
8
 
1
@@ -42,4 +42,4 @@
2
 public:
3
    IMPLEMENT_REFCOUNTING(BrowserRenderHandler);
4
    
5
-};
6
\ No newline at end of file
7
+};
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/cef-isolation/browser-render-handler.mm -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/cef-isolation/browser-render-handler.mm Changed
8
 
1
@@ -48,4 +48,4 @@
2
    (void)(dirtyRects);
3
 
4
    browserHandle->RenderToAvailableTexture(width, height, data);
5
-}
6
\ No newline at end of file
7
+}
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/cef-isolation/browser-texture-mac.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/cef-isolation/browser-texture-mac.h Changed
8
 
1
@@ -34,4 +34,4 @@
2
    const int height;
3
    const BrowserSurfaceHandle surfaceHandle;
4
    IOSurfaceRef ioSurfaceRef;
5
-};
6
\ No newline at end of file
7
+};
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/cef-isolation/browser-texture-mac.mm -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/cef-isolation/browser-texture-mac.mm Changed
8
 
1
@@ -91,4 +91,4 @@
2
    }
3
    return false;
4
 
5
-}
6
\ No newline at end of file
7
+}
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/cef-isolation/cef-isolated-client.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/cef-isolation/cef-isolated-client.h Changed
6
 
1
@@ -27,4 +27,3 @@
2
    std::map<int, std::shared_ptr<BrowserHandle> > map;
3
 }
4
 @end
5
-
6
obs-studio-21.0.3.tar.xz/plugins/obs-browser/cef-isolation/service-connection-delegate.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/cef-isolation/service-connection-delegate.h Changed
8
 
1
@@ -34,4 +34,4 @@
2
 - (void)createConnectionThread;
3
 - (void)shutdown;
4
 
5
-@end
6
\ No newline at end of file
7
+@end
8
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/ca-ES.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Fitxer local"
3
+URL="URL"
4
+Width="Amplada"
5
+Height="Alçada"
6
+FPS="FPS"
7
+CSS="CSS personalizat"
8
+ShutdownSourceNotVisible="Apaga la font quan no sigui visible"
9
+RefreshBrowserActive="Actualitza el navegador en activar-se l'escena"
10
+RefreshNoCache="Actualitza la memòria cau de la pàgina actual"
11
+RestartCEF="Reinicia CEF"
12
+BrowserSource="Navegador"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/cs-CZ.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Místní soubor"
3
+URL="Adresa URL"
4
+Width="Šířka"
5
+Height="Výška"
6
+FPS="FPS"
7
+CSS="Vlastní styly"
8
+ShutdownSourceNotVisible="Vypnout zdroj, pokud není vidět"
9
+RefreshBrowserActive="Obnovit stránku při aktivaci scény"
10
+RefreshNoCache="Vyčistit mezipaměť (cache) aktuální stránky"
11
+RestartCEF="Restartovat CEF"
12
+BrowserSource="Prohlížeč"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/da-DK.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Lokal fil"
3
+URL="URL"
4
+Width="Bredde"
5
+Height="Højde"
6
+FPS="FPS"
7
+CSS="Tilpasset CSS"
8
+ShutdownSourceNotVisible="Luk kilden, når den ikke er synlig"
9
+RefreshBrowserActive="Opfrisk browseren, når scenen bliver aktiv"
10
+RefreshNoCache="Opfrisk aktuelle side-cache"
11
+RestartCEF="Genstart CEF"
12
+BrowserSource="Browser"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/de-DE.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Lokale Datei"
3
+URL="URL"
4
+Width="Breite"
5
+Height="Höhe"
6
+FPS="FPS"
7
+CSS="Benutzerdefiniertes CSS"
8
+ShutdownSourceNotVisible="Deaktivieren, wenn Quelle nicht sichtbar ist"
9
+RefreshBrowserActive="Browser aktualisieren, wenn die Szene aktiv wird"
10
+RefreshNoCache="Cache der aktuellen Seite aktualisieren"
11
+RestartCEF="CEF neu starten"
12
+BrowserSource="Browser"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/el-GR.ini Added
10
 
1
@@ -0,0 +1,8 @@
2
+LocalFile="Τοπικό αρχείο"
3
+URL="Διεύθυνση URL"
4
+Width="Πλάτος"
5
+Height="Ύψος"
6
+FPS="Καρέ ανά δευτερόλεπτο"
7
+CSS="Προσαρμοσμένο CSS"
8
+RefreshNoCache="Ανανέωση της μνήμης cache της τρέχουσας σελίδας"
9
+BrowserSource="Πρόγραμμα περιήγησης"
10
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/es-ES.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Archivo local"
3
+URL="URL"
4
+Width="Ancho"
5
+Height="Alto"
6
+FPS="FPS"
7
+CSS="CSS personalizado"
8
+ShutdownSourceNotVisible="Apagar fuente cuando no sea visible"
9
+RefreshBrowserActive="Actualizar el navegador cuando la escena se active"
10
+RefreshNoCache="Actualizar la caché de la página actual"
11
+RestartCEF="Reiniciar CEF"
12
+BrowserSource="Navegador"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/eu-ES.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Bertako fitxategia"
3
+URL="URL"
4
+Width="Zabalera"
5
+Height="Altuera"
6
+FPS="FPS"
7
+CSS="CSS pertsonalizatua"
8
+ShutdownSourceNotVisible="Itzali iturburua ikusgai ez dagoenean"
9
+RefreshBrowserActive="Freskatu nabigatzailea eszena aktibatzen denean"
10
+RefreshNoCache="Freskatu uneko orriaren cachea"
11
+RestartCEF="Berrabiarazi CEF"
12
+BrowserSource="Nabigatzailea"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/fi-FI.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Paikallinen tiedosto"
3
+URL="URL"
4
+Width="Leveys"
5
+Height="Korkeus"
6
+FPS="FPS"
7
+CSS="Mukautettu CSS"
8
+ShutdownSourceNotVisible="Sulje lähde kun se ei ole näkyvissä"
9
+RefreshBrowserActive="Lataa selain uudelleen kun skenestä tulee aktiivinen"
10
+RefreshNoCache="Lataa nykyisen sivun välimuisti uudelleen"
11
+RestartCEF="Uudelleenkäynnistä CEF"
12
+BrowserSource="Selain"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/fr-FR.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Fichier local"
3
+URL="URL"
4
+Width="Largeur"
5
+Height="Hauteur"
6
+FPS="FPS"
7
+CSS="CSS personnalisé"
8
+ShutdownSourceNotVisible="Désactiver la source si elle n'est pas visible"
9
+RefreshBrowserActive="Rafraîchir le navigateur lorsque la scène devient active"
10
+RefreshNoCache="Rafraîchir le cache de cette page"
11
+RestartCEF="Relancer le CEF"
12
+BrowserSource="Navigateur"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/hu-HU.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Helyi fájl"
3
+URL="Webcím"
4
+Width="Szélesség"
5
+Height="Magasság"
6
+FPS="FPS"
7
+CSS="Egyéni CSS"
8
+ShutdownSourceNotVisible="Lekapcsolás, ha nem látható"
9
+RefreshBrowserActive="Böngésző frissítése ha aktívvá válik"
10
+RefreshNoCache="Aktuális oldal gyorsítótárának frissítése"
11
+RestartCEF="CEF újraindítása"
12
+BrowserSource="Böngésző"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/it-IT.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="File locale"
3
+URL="URL"
4
+Width="Larghezza"
5
+Height="Altezza"
6
+FPS="FPS (Fotogrammi al secondo)"
7
+CSS="CSS personalizzato"
8
+ShutdownSourceNotVisible="Arresta quando la sorgente non è visibile"
9
+RefreshBrowserActive="Aggiorna il browser quando la scena diventa attiva"
10
+RefreshNoCache="Ricarica cache della la pagina attuale"
11
+RestartCEF="Riavvia il CEF"
12
+BrowserSource="Browser"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/ja-JP.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="ローカルファイル"
3
+URL="URL"
4
+Width="幅"
5
+Height="高さ"
6
+FPS="FPS"
7
+CSS="カスタム CSS"
8
+ShutdownSourceNotVisible="見えないときにソースをシャットダウン"
9
+RefreshBrowserActive="シーンがアクティブになったときにブラウザの表示を更新"
10
+RefreshNoCache="現在のページを再読込"
11
+RestartCEF="CEF を再起動"
12
+BrowserSource="ブラウザ"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/ko-KR.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="로컬 파일"
3
+URL="URL"
4
+Width="너비"
5
+Height="높이"
6
+FPS="FPS"
7
+CSS="CSS"
8
+ShutdownSourceNotVisible="소스가 보이지 않는 경우 종료"
9
+RefreshBrowserActive="장면이 활성화되면 브라우저를 새로고침"
10
+RefreshNoCache="현재 페이지의 캐시를 새로고침"
11
+RestartCEF="CEF 재시작"
12
+BrowserSource="브라우저"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/nb-NO.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Lokal fil"
3
+URL="URL"
4
+Width="Bredde"
5
+Height="Høyde"
6
+FPS="FPS"
7
+CSS="Egendefinert CSS"
8
+ShutdownSourceNotVisible="Deaktiver kilde når ikke synlig"
9
+RefreshBrowserActive="Oppdater nettleseren når scenen blir aktiv"
10
+RefreshNoCache="Oppdater bufferen for denne siden"
11
+RestartCEF="Restart CEF"
12
+BrowserSource="Nettleser"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/nl-NL.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Lokaal bestand"
3
+URL="URL"
4
+Width="Breedte"
5
+Height="Hoogte"
6
+FPS="FPS"
7
+CSS="Aangepaste CSS"
8
+ShutdownSourceNotVisible="Schakel bron uit wanneer deze niet zichtbaar is"
9
+RefreshBrowserActive="Vernieuw browser wanneer een scène actief wordt"
10
+RefreshNoCache="Cache van de huidige pagina vernieuwen"
11
+RestartCEF="CEF herstarten"
12
+BrowserSource="Browser"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/pl-PL.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Plik lokalny"
3
+URL="Adres URL"
4
+Width="Szerokość"
5
+Height="Wysokość"
6
+FPS="FPS"
7
+CSS="Własny CSS"
8
+ShutdownSourceNotVisible="Zamknij źródło, gdy niewidoczne"
9
+RefreshBrowserActive="Odśwież przeglądarkę, gdy scena zostanie aktywowana"
10
+RefreshNoCache="Odśwież pamięć podręczną bieżącej strony"
11
+RestartCEF="Uruchom ponownie CEF"
12
+BrowserSource="Przeglądarka"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/pt-BR.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Arquivo local"
3
+URL="URL"
4
+Width="Largura"
5
+Height="Altura"
6
+FPS="FPS"
7
+CSS="CSS Personalizado"
8
+ShutdownSourceNotVisible="Desativar fonte quando Invisível"
9
+RefreshBrowserActive="Atualizar o navegador quando a cena se tornar ativa"
10
+RefreshNoCache="Atualizar o cache da página atual"
11
+RestartCEF="Reiniciar o CEF"
12
+BrowserSource="Navegador"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/ru-RU.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Локальный файл"
3
+URL="Адрес URL"
4
+Width="Ширина"
5
+Height="Высота"
6
+FPS="FPS"
7
+CSS="CSS"
8
+ShutdownSourceNotVisible="Отключать, когда не видим"
9
+RefreshBrowserActive="Обновить браузер, когда сцена становится активной"
10
+RefreshNoCache="Обновить кэш текущей страницы"
11
+RestartCEF="Перезапустить CEF"
12
+BrowserSource="Браузер"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/sk-SK.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Lokálny súbor"
3
+URL="URL adresa"
4
+Width="Šírka"
5
+Height="Výška"
6
+FPS="FPS"
7
+CSS="Vlastné CSS"
8
+ShutdownSourceNotVisible="Vypnúť zdroj, keď nie je viditeľný"
9
+RefreshBrowserActive="Obnoviť prehliadač, keď sa scéna stane aktívna"
10
+RefreshNoCache="Vyčistiť medzi-pamäť aktuálnej stránky"
11
+RestartCEF="Reštartovať CEF"
12
+BrowserSource="Prehliadač"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/sv-SE.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Lokal fil"
3
+URL="URL"
4
+Width="Bredd"
5
+Height="Höjd"
6
+FPS="Bildfrekvens"
7
+CSS="Anpassad CSS"
8
+ShutdownSourceNotVisible="Stäng ned källor som inte visas"
9
+RefreshBrowserActive="Uppdatera webbläsaren när scenen blir aktiv"
10
+RefreshNoCache="Uppdatera cachen för aktuell sida"
11
+RestartCEF="Uppdatera CEF"
12
+BrowserSource="Webbläsare"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/tr-TR.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Yerel dosya"
3
+URL="URL"
4
+Width="Genişlik"
5
+Height="Yükseklik"
6
+FPS="FPS"
7
+CSS="Özel CSS"
8
+ShutdownSourceNotVisible="Görünür değilken kaynağı kapat"
9
+RefreshBrowserActive="Sahne etkin olduğunda tarayıcıyı yenile"
10
+RefreshNoCache="Geçerli sayfanın önbelleğini yenile"
11
+RestartCEF="CEF'i Yeniden Başlat"
12
+BrowserSource="Tarayıcı"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/uk-UA.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="Локальний файл"
3
+URL="URL-адреса"
4
+Width="Ширина"
5
+Height="Висота"
6
+FPS="Кадрів в секунду"
7
+CSS="Власний CSS код"
8
+ShutdownSourceNotVisible="Вимикати джерело, коли воно не видиме"
9
+RefreshBrowserActive="Оновити браузер, коли сцена стає активною"
10
+RefreshNoCache="Оновити кеш поточної сторінки"
11
+RestartCEF="Перезапустити CEF"
12
+BrowserSource="Браузер"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/vi-VN.ini Added
12
 
1
@@ -0,0 +1,10 @@
2
+LocalFile="Tập tin cục bộ"
3
+URL="URL"
4
+Width="Rộng"
5
+Height="Cao"
6
+FPS="FPS"
7
+CSS="CSS tùy chỉnh"
8
+ShutdownSourceNotVisible="Tắt máy khi không hiển thị"
9
+RefreshNoCache="Làm mới cache trang hiện tại"
10
+RestartCEF="Khởi động lại CEF"
11
+BrowserSource="Trình duyệt"
12
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/zh-CN.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="本地文件"
3
+URL="URL"
4
+Width="宽度"
5
+Height="高度"
6
+FPS="FPS"
7
+CSS="自定义 CSS"
8
+ShutdownSourceNotVisible="不可见时关闭源"
9
+RefreshBrowserActive="场景变为活动状态时,刷新浏览器"
10
+RefreshNoCache="刷新当前页面缓存"
11
+RestartCEF="重启 CEF"
12
+BrowserSource="浏览器"
13
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/zh-TW.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+LocalFile="本機檔案"
3
+URL="網址"
4
+Width="寬度"
5
+Height="高度"
6
+FPS="FPS (影格率)"
7
+CSS="自訂CSS"
8
+ShutdownSourceNotVisible="不可見時關閉來源"
9
+RefreshBrowserActive="取得焦點時更新瀏覽器"
10
+RefreshNoCache="更新當前頁面快取"
11
+RestartCEF="重新啟動CEF"
12
+BrowserSource="瀏覽器"
13
obs-studio-21.0.3.tar.xz/plugins/obs-browser/nowide/encoding_errors.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/nowide/encoding_errors.hpp Changed
6
 
1
@@ -55,4 +55,3 @@
2
 #endif
3
 
4
 // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
5
-
6
obs-studio-21.0.3.tar.xz/plugins/obs-browser/nowide/encoding_utf.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/nowide/encoding_utf.hpp Changed
6
 
1
@@ -81,4 +81,3 @@
2
 #endif
3
 
4
 // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
5
-
6
obs-studio-21.0.3.tar.xz/plugins/obs-browser/nowide/scoped_ptr.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/nowide/scoped_ptr.hpp Changed
6
 
1
@@ -90,4 +90,3 @@
2
 
3
 #endif
4
 // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
5
-
6
obs-studio-21.0.3.tar.xz/plugins/obs-browser/nowide/utf.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/nowide/utf.hpp Changed
6
 
1
@@ -466,4 +466,3 @@
2
 #endif
3
 
4
 // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
5
-
6
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser-facade/main.c -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser-facade/main.c Changed
8
 
1
@@ -76,4 +76,4 @@
2
    }
3
 
4
 
5
-}
6
\ No newline at end of file
7
+}
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/apple/browser-source-listener-mac.mm -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/apple/browser-source-listener-mac.mm Changed
8
 
1
@@ -140,4 +140,4 @@
2
    obs_leave_graphics();
3
 
4
    browserSource->GetParent()->UpdateBrowser();
5
-}
6
\ No newline at end of file
7
+}
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/apple/browser-source-mac.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/apple/browser-source-mac.h Changed
8
 
1
@@ -41,4 +41,4 @@
2
    gs_samplerstate_t *sampler;
3
    gs_vertbuffer_t *vertexBuffer;
4
 
5
-};
6
\ No newline at end of file
7
+};
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/apple/browser-source-mac.mm -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/apple/browser-source-mac.mm Changed
10
 
1
@@ -53,7 +53,7 @@
2
 {
3
    obs_enter_graphics();
4
 
5
-   drawEffect = obs_get_default_rect_effect();
6
+   drawEffect = obs_get_base_effect(OBS_EFFECT_DEFAULT_RECT);
7
 
8
    struct gs_sampler_info info = {
9
        .filter = GS_FILTER_LINEAR,
10
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/apple/cef-isolation-service.mm -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/apple/cef-isolation-service.mm Changed
14
 
1
@@ -120,6 +120,12 @@
2
    return jsonString;
3
 }
4
 
5
+- (const char*)getStatus
6
+{
7
+   const char* jsonString = obsStatusToJSON();
8
+   return jsonString;
9
+}
10
+
11
 - (void)invalidateClient:(id)client withException:(NSException *)exception
12
 {
13
    UNUSED_PARAMETER(client);
14
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/apple/client-connection-delegate.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/apple/client-connection-delegate.h Changed
8
 
1
@@ -29,4 +29,4 @@
2
 - (void)restart;
3
 - (void)shutdown;
4
 
5
-@end
6
\ No newline at end of file
7
+@end
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/apple/graphics-helpers.c -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/apple/graphics-helpers.c Changed
8
 
1
@@ -67,4 +67,4 @@
2
 {
3
    build_sprite(data, fabs(end_x - origin_x), fabs(end_y - origin_y),
4
            origin_x, end_x, origin_y, end_y);
5
-}
6
\ No newline at end of file
7
+}
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/apple/graphics-helpers.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/apple/graphics-helpers.h Changed
8
 
1
@@ -27,4 +27,4 @@
2
 
3
 void build_sprite_rect(
4
        struct gs_vb_data *data, float origin_x, float origin_y,
5
-       float end_x, float end_y);
6
\ No newline at end of file
7
+       float end_x, float end_y);
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/browser-load-handler.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/browser-load-handler.cpp Changed
8
 
1
@@ -45,4 +45,4 @@
2
        
3
        frame->ExecuteJavaScript(script, href, 0);
4
    }
5
-}
6
\ No newline at end of file
7
+}
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/browser-load-handler.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/browser-load-handler.hpp Changed
8
 
1
@@ -41,4 +41,4 @@
2
 private:
3
    IMPLEMENT_REFCOUNTING(BrowserLoadHandler);
4
 
5
-};
6
\ No newline at end of file
7
+};
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/browser-manager-base.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/browser-manager-base.cpp Changed
139
 
1
@@ -10,6 +10,7 @@
2
 #include "browser-render-handler.hpp"
3
 #include "browser-load-handler.hpp"
4
 #include "browser-obs-bridge-base.hpp"
5
+#include "browser-listener.hpp"
6
 
7
 BrowserManager::BrowserManager()
8
 : pimpl(new BrowserManager::Impl())
9
@@ -35,6 +36,26 @@
10
    return pimpl->CreateBrowser(browserSettings, browserListener);
11
 }
12
 
13
+CefBrowserHost* BrowserManager::GetBrowserHost(int browserIdentifier)
14
+{
15
+   return pimpl->GetBrowserHost(browserIdentifier);
16
+}
17
+
18
+CefBrowser* BrowserManager::GetBrowser(int browserIdentifier)
19
+{
20
+   return pimpl->GetBrowser(browserIdentifier);
21
+}
22
+
23
+void BrowserManager::LoadURL(int browserIdentifier, CefString& url)
24
+{
25
+   return pimpl->LoadURL(browserIdentifier, url);
26
+}
27
+
28
+bool BrowserManager::IsValidBrowserIdentifier(int browserIdentifier)
29
+{
30
+   return pimpl->IsValidBrowserIdentifier(browserIdentifier);
31
+}
32
+
33
 void BrowserManager::DestroyBrowser(int browserIdentifier)
34
 {
35
    pimpl->DestroyBrowser(browserIdentifier);
36
@@ -128,7 +149,7 @@
37
        const BrowserSettings &browserSettings,
38
        const std::shared_ptr<BrowserListener> &browserListener)
39
 {
40
-   int browserIdentifier = 0;
41
+   int browserIdentifier = -1;
42
    os_event_t *createdEvent;
43
    os_event_init(&createdEvent, OS_EVENT_TYPE_AUTO);
44
 
45
@@ -167,6 +188,7 @@
46
 
47
        if (browser != nullptr) {
48
            browserIdentifier = browser->GetIdentifier();
49
+           browserListener->SetBrowserIdentifier(browserIdentifier);
50
            browserMap[browserIdentifier] = browser;
51
        }
52
        os_event_signal(createdEvent);
53
@@ -177,15 +199,85 @@
54
    return browserIdentifier;
55
 }
56
 
57
+CefBrowserHost* BrowserManager::Impl::GetBrowserHost(int browserIdentifier)
58
+{
59
+   CefBrowserHost* result = NULL;
60
+
61
+   os_event_t* complete_event;
62
+   os_event_init(&complete_event, OS_EVENT_TYPE_AUTO);
63
+
64
+   CefPostTask(TID_UI, BrowserTask::newTask(
65
+       [&]
66
+   {
67
+       result = browserMap[browserIdentifier]->GetHost();
68
+
69
+       os_event_signal(complete_event);
70
+   }));
71
+
72
+   os_event_wait(complete_event);
73
+   os_event_destroy(complete_event);
74
+
75
+   return result;
76
+}
77
+
78
+CefBrowser* BrowserManager::Impl::GetBrowser(int browserIdentifier)
79
+{
80
+   CefBrowser* result = NULL;
81
+
82
+   os_event_t* complete_event;
83
+   os_event_init(&complete_event, OS_EVENT_TYPE_AUTO);
84
+
85
+   CefPostTask(TID_UI, BrowserTask::newTask(
86
+       [&]
87
+   {
88
+       result = browserMap[browserIdentifier];
89
+
90
+       os_event_signal(complete_event);
91
+   }));
92
+
93
+   os_event_wait(complete_event);
94
+   os_event_destroy(complete_event);
95
+
96
+   return result;
97
+}
98
+
99
+void BrowserManager::Impl::LoadURL(int browserIdentifier, CefString& url)
100
+{
101
+   os_event_t* complete_event;
102
+   os_event_init(&complete_event, OS_EVENT_TYPE_AUTO);
103
+
104
+   CefPostTask(TID_UI, BrowserTask::newTask(
105
+       [&]
106
+   {
107
+       browserMap[browserIdentifier]->GetMainFrame()->LoadURL(url);
108
+
109
+       os_event_signal(complete_event);
110
+   }));
111
+
112
+   os_event_wait(complete_event);
113
+   os_event_destroy(complete_event);
114
+}
115
+
116
+bool BrowserManager::Impl::IsValidBrowserIdentifier(int browserIdentifier)
117
+{
118
+   return browserIdentifier >= 0 && browserMap.count(browserIdentifier) > 0;
119
+}
120
+
121
 void 
122
 BrowserManager::Impl::DestroyBrowser(int browserIdentifier)
123
 {
124
    if (browserMap.count(browserIdentifier) > 0) {
125
        CefRefPtr<CefBrowser> browser = browserMap[browserIdentifier];
126
+       browserMap.erase(browserIdentifier);
127
        os_event_t *closeEvent;
128
        os_event_init(&closeEvent, OS_EVENT_TYPE_AUTO);
129
        CefPostTask(TID_UI, BrowserTask::newTask([&, browser] 
130
        {
131
+           // This stops rendering
132
+           // http://magpcss.org/ceforum/viewtopic.php?f=6&t=12079
133
+           // https://bitbucket.org/chromiumembedded/cef/issues/1363/washidden-api-got-broken-on-branch-2062)
134
+           browser->GetHost()->WasHidden(true);
135
+
136
            browser->GetHost()->CloseBrowser(true);
137
            os_event_signal(closeEvent);
138
        }));
139
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/browser-manager-base.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/browser-manager-base.hpp Changed
13
 
1
@@ -33,6 +33,11 @@
2
        const BrowserSettings &browserSettings,
3
        const std::shared_ptr<BrowserListener> &browserListener);
4
 
5
+   CefBrowserHost* GetBrowserHost(int browserIdentifier);
6
+   CefBrowser* GetBrowser(int browserIdentifier);
7
+   void LoadURL(int browserIdentifier, CefString& url);
8
+
9
+   bool IsValidBrowserIdentifier(int browserIdentifier);
10
    void DestroyBrowser(int browserIdentifier);
11
    void TickBrowser(int browserIdentifier);
12
 
13
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/browser-obs-bridge-base.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/browser-obs-bridge-base.cpp Changed
11
 
1
@@ -15,3 +15,9 @@
2
 
3
    return jsonString; 
4
 }
5
+
6
+const char* BrowserOBSBridgeBase::GetStatus()
7
+{
8
+   const char* jsonString = obsStatusToJSON();
9
+   return jsonString;
10
+}
11
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/browser-obs-bridge-base.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/browser-obs-bridge-base.hpp Changed
7
 
1
@@ -8,4 +8,5 @@
2
    BrowserOBSBridgeBase();
3
 
4
     const char* GetCurrentSceneJSONData() override;
5
+    const char* GetStatus() override;
6
 };
7
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/browser-render-handler.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/browser-render-handler.cpp Changed
38
 
1
@@ -106,7 +106,7 @@
2
    {
3
        viewWidth = width;
4
        viewHeight = height;
5
-       if (surfaceHandles.size() < 2) {
6
+       if (surfaceHandles.size() < 1) {
7
            BrowserSurfaceHandle newSurfaceHandle = 0;
8
            browserListener->CreateSurface(width, height,
9
                &newSurfaceHandle);
10
@@ -116,16 +116,10 @@
11
            }
12
        }
13
 
14
-       int previousSurfaceHandle = currentSurfaceHandle;
15
-
16
-       currentSurfaceHandle = (++currentSurfaceHandle % surfaceHandles.size());
17
-
18
-       if (currentSurfaceHandle != previousSurfaceHandle) {
19
-           obs_enter_graphics();
20
-           gs_texture_set_image(surfaceHandles[currentSurfaceHandle],
21
-               (const uint8_t*)data, width * 4, false);
22
-           obs_leave_graphics();
23
-       }
24
+       obs_enter_graphics();
25
+       gs_texture_set_image(surfaceHandles[currentSurfaceHandle],
26
+           (const uint8_t*)data, width * 4, false);
27
+       obs_leave_graphics();
28
    }
29
    else if (type == PET_POPUP && popupRect.width > 0 &&
30
        popupRect.height > 0)
31
@@ -156,4 +150,4 @@
32
    
33
 
34
    browserListener->OnDraw(surfaceHandles[currentSurfaceHandle], viewWidth, viewHeight);
35
-}
36
\ No newline at end of file
37
+}
38
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/browser-render-handler.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/browser-render-handler.hpp Changed
17
 
1
@@ -64,7 +64,7 @@
2
    const int height;
3
    const std::shared_ptr<BrowserListener> browserListener;
4
    std::vector<struct gs_texture *> surfaceHandles;
5
-   int currentSurfaceHandle;
6
+   int currentSurfaceHandle = 0;
7
    int viewWidth;
8
    int viewHeight;
9
    CefRect popupRect;
10
@@ -73,4 +73,4 @@
11
 private:
12
    IMPLEMENT_REFCOUNTING(BrowserRenderHandler);
13
    
14
-};
15
\ No newline at end of file
16
+};
17
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/browser-source-base.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/browser-source-base.hpp Changed
8
 
1
@@ -39,4 +39,4 @@
2
    BrowserSource *parent;
3
    gs_texture_t *activeTexture;
4
 
5
-};
6
\ No newline at end of file
7
+};
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/browser-source-listener-base.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/browser-source-listener-base.cpp Changed
31
 
1
@@ -19,6 +19,7 @@
2
 #include "browser-source-base.hpp"
3
 #include "browser-types.h"
4
 #include "browser-source-listener-base.hpp"
5
+#include "browser-manager-base.hpp"
6
 
7
 void BrowserSource::Impl::Listener::OnDraw( BrowserSurfaceHandle surfaceHandle,
8
        int width, int height)
9
@@ -26,6 +27,14 @@
10
    UNUSED_PARAMETER(width);
11
    UNUSED_PARAMETER(height);
12
 
13
+   // Check if our browser has not been destroyed yet.
14
+   //
15
+   // Due to the asynchronous nature of CEF, we can get an OnDraw call after
16
+   // BrowserManager::Instance()->DestroyBrowser() call has been made.
17
+   //
18
+   if (!BrowserManager::Instance()->IsValidBrowserIdentifier(GetBrowserIdentifier()))
19
+       return;
20
+
21
    if (textureSet.count(surfaceHandle) > 0) {
22
        obs_enter_graphics();
23
        if (browserSource)
24
@@ -102,4 +111,4 @@
25
        browserSource->activeTexture = nullptr;
26
        obs_leave_graphics();
27
    }
28
-}
29
\ No newline at end of file
30
+}
31
obs-studio-21.0.3.tar.xz/plugins/obs-browser/obs-browser/main-source.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/obs-browser/main-source.cpp Changed
65
 
1
@@ -176,6 +176,16 @@
2
    else {
3
        bs->ExecuteVisiblityJSCallback(true);
4
    }
5
+
6
+   // Start animation
7
+   BrowserManager::Instance()->GetBrowser(bs->GetBrowserIdentifier())->GetHost()->WasHidden(false);
8
+
9
+#ifdef APPLE
10
+   BrowserManager::Instance()->GetBrowser(bs->GetBrowserIdentifier())->GetHost()->SetWindowVisibility(true);
11
+#endif
12
+
13
+   // Repaint the view
14
+   BrowserManager::Instance()->GetBrowser(bs->GetBrowserIdentifier())->GetHost()->Invalidate(PET_VIEW);
15
 }
16
 
17
 // Called when the source is no longer visible
18
@@ -183,6 +193,13 @@
19
 {
20
    BrowserSource *bs = static_cast<BrowserSource *>(data);
21
 
22
+   // Stop animation
23
+   BrowserManager::Instance()->GetBrowser(bs->GetBrowserIdentifier())->GetHost()->WasHidden(true);
24
+
25
+#ifdef APPLE
26
+   BrowserManager::Instance()->GetBrowser(bs->GetBrowserIdentifier())->GetHost()->SetWindowVisibility(false);
27
+#endif
28
+
29
    if (bs->GetShutdown()) {
30
        BrowserManager::Instance()->DestroyBrowser(bs->GetBrowserIdentifier());
31
    }
32
@@ -196,7 +213,17 @@
33
    BrowserSource *browserSource = new BrowserSource(settings, source);
34
 
35
    if (browserSource->GetShutdown() && !obs_source_showing(source))
36
+   {
37
        BrowserManager::Instance()->DestroyBrowser(browserSource->GetBrowserIdentifier());
38
+   }
39
+   else
40
+   {
41
+       if (!obs_source_showing(source))
42
+       {
43
+           // Stop animation
44
+           BrowserManager::Instance()->GetBrowser(browserSource->GetBrowserIdentifier())->GetHost()->WasHidden(true);
45
+       }
46
+   }
47
 
48
    return browserSource;
49
 }
50
@@ -206,6 +233,7 @@
51
    BrowserSource *bs = static_cast<BrowserSource *>(data);
52
 
53
    delete bs;
54
+   bs = nullptr;
55
 }
56
 
57
 
58
@@ -294,4 +322,4 @@
59
 
60
 
61
    return browser_source_info;
62
-}
63
\ No newline at end of file
64
+}
65
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared-apple/browser-bridges.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared-apple/browser-bridges.h Changed
6
 
1
@@ -56,4 +56,3 @@
2
 + (id)fromObsKeyEvent: (const obs_key_event *)event;
3
 
4
 @end
5
-
6
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared-apple/browser-bridges.mm -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared-apple/browser-bridges.mm Changed
8
 
1
@@ -83,4 +83,4 @@
2
    return [[ObsKeyEventBridge alloc] initWithObsKeyEvent:event];
3
 }
4
 
5
-@end
6
\ No newline at end of file
7
+@end
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared-apple/cef-isolation.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared-apple/cef-isolation.h Changed
15
 
1
@@ -38,6 +38,7 @@
2
        surfaceHandle:(BrowserSurfaceHandle)surfaceHandle;
3
 - (void)invalidateClient:(id)client withException:(NSException *)exception;
4
 - (const char*)getCurrentSceneJSONData;
5
+- (const char*)getStatus;
6
 @end
7
 
8
 @protocol CEFIsolatedClient
9
@@ -63,5 +64,3 @@
10
 - (void)executeSceneChangeJSCallback:(const char *)name;
11
 - (void)dispatchJSEvent:(const char *)eventName data:(const char*) jsonString;
12
 @end
13
-
14
-
15
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared-apple/cef-logging.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared-apple/cef-logging.h Changed
8
 
1
@@ -23,4 +23,4 @@
2
 #define CEFLogDebug(...) NSLog(__VA_ARGS__)
3
 #endif
4
 
5
-#define CEFLogError(...) NSLog(__VA_ARGS__)
6
\ No newline at end of file
7
+#define CEFLogError(...) NSLog(__VA_ARGS__)
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/base64.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/base64.cpp Changed
8
 
1
@@ -120,4 +120,4 @@
2
    }
3
 
4
    return ret;
5
-}
6
\ No newline at end of file
7
+}
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/base64.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/base64.hpp Changed
8
 
1
@@ -1,4 +1,4 @@
2
 #include <string>
3
 
4
 std::string base64_encode(unsigned char const*, unsigned int len);
5
-std::string base64_decode(std::string const& s);
6
\ No newline at end of file
7
+std::string base64_decode(std::string const& s);
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-app.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-app.cpp Changed
89
 
1
@@ -78,6 +78,9 @@
2
 
3
    CefRefPtr<CefV8Value> func = CefV8Value::CreateFunction("getCurrentScene", this);
4
    obsStudioObj->SetValue("getCurrentScene", func, V8_PROPERTY_ATTRIBUTE_NONE);
5
+
6
+   CefRefPtr<CefV8Value> getStatus = CefV8Value::CreateFunction("getStatus", this);
7
+   obsStudioObj->SetValue("getStatus", getStatus, V8_PROPERTY_ATTRIBUTE_NONE);
8
 }
9
 
10
 void BrowserApp::ExecuteJSFunction(CefRefPtr<CefBrowser> browser,
11
@@ -164,23 +167,33 @@
12
 
13
        return true;
14
    }
15
-   else if (message->GetName() == "executeCallback") {
16
-        CefRefPtr<CefV8Context> context = browser->GetMainFrame()->GetV8Context();
17
+   else if (message->GetName() == "executeCallback")
18
+   {
19
+       CefRefPtr<CefV8Context> context = browser->GetMainFrame()->GetV8Context();
20
+       CefRefPtr<CefV8Value> retval;
21
+       CefRefPtr<CefV8Exception> exception;
22
         
23
-        context->Enter();
24
+       context->Enter();
25
+
26
+       CefRefPtr<CefListValue> arguments = message->GetArgumentList();
27
+       int callbackID = arguments->GetInt(0);
28
+       CefString jsonString = arguments->GetString(1);
29
 
30
-       int callbackID = message->GetArgumentList()->GetInt(0);
31
-       CefString jsonString = message->GetArgumentList()->GetString(1);
32
+       std::string script = fmt::format(
33
+           "JSON.parse('{}');",
34
+           arguments->GetString(1).ToString(),
35
+           jsonString.ToString().c_str());
36
 
37
        CefRefPtr<CefV8Value> callback = callbackMap[callbackID];
38
        CefV8ValueList args;
39
-       args.push_back(CefV8Value::CreateString(jsonString));
40
 
41
-       CefRefPtr<CefV8Value> retval;
42
-       CefRefPtr<CefV8Exception> exception;
43
-        callback->ExecuteFunction(NULL, args);
44
+       context->Eval(script, browser->GetMainFrame()->GetURL(), 0, retval, exception);
45
+
46
+       args.push_back(retval);
47
+
48
+       callback->ExecuteFunction(NULL, args);
49
         
50
-        context->Exit();
51
+       context->Exit();
52
 
53
        callbackMap.erase(callbackID);
54
 
55
@@ -198,8 +211,8 @@
56
        CefRefPtr<CefV8Value>& retval,
57
        CefString& exception)
58
 {
59
-   if (name == "getCurrentScene") {
60
-
61
+   if (name == "getCurrentScene")
62
+   {
63
        if (arguments.size() == 1 && arguments[0]->IsFunction()) {
64
            callbackId++;
65
            callbackMap[callbackId] = arguments[0];
66
@@ -215,6 +228,22 @@
67
 
68
        return true;
69
    }
70
+   else if (name == "getStatus")
71
+   {
72
+       if (arguments.size() == 1 && arguments[0]->IsFunction()) {
73
+           callbackId++;
74
+           callbackMap[callbackId] = arguments[0];
75
+       }
76
+
77
+       CefRefPtr<CefProcessMessage> msg = CefProcessMessage::Create("getStatus");
78
+       CefRefPtr<CefListValue> args = msg->GetArgumentList();
79
+       args->SetInt(0, callbackId);
80
+
81
+       CefRefPtr<CefBrowser> browser = CefV8Context::GetCurrentContext()->GetBrowser();
82
+       browser->SendProcessMessage(PID_BROWSER, msg);
83
+
84
+       return true;
85
+   }
86
 
87
    // Function does not exist.
88
    return false;
89
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-client.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-client.cpp Changed
22
 
1
@@ -105,5 +105,20 @@
2
 
3
        return true;
4
    }
5
+   else if (message_name == "getStatus") {
6
+
7
+       int callbackID = message->GetArgumentList()->GetInt(0);
8
+
9
+       CefString jsonString = browserOBSBridge->GetStatus();
10
+
11
+       CefRefPtr<CefProcessMessage> msg = CefProcessMessage::Create("executeCallback");
12
+       CefRefPtr<CefListValue> args = msg->GetArgumentList();
13
+       args->SetInt(0, callbackID);
14
+       args->SetString(1, jsonString);
15
+
16
+       browser->SendProcessMessage(PID_RENDERER, msg);
17
+
18
+       return true;
19
+   }
20
    return false;
21
 }
22
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-listener.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-listener.hpp Changed
22
 
1
@@ -81,4 +81,18 @@
2
    }
3
 
4
    virtual void Invalidated() override {}
5
-};
6
\ No newline at end of file
7
+
8
+private:
9
+   int m_browserIdentifier = -1;
10
+
11
+public:
12
+   void SetBrowserIdentifier(const int browserIdentifier)
13
+   {
14
+       m_browserIdentifier = browserIdentifier;
15
+   }
16
+
17
+   const int GetBrowserIdentifier()
18
+   {
19
+       return m_browserIdentifier;
20
+   }
21
+};
22
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-manager.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-manager.hpp Changed
23
 
1
@@ -19,6 +19,8 @@
2
 
3
 #include <memory>
4
 #include <jansson.h>
5
+#include <include/cef_base.h>
6
+#include <include/cef_client.h>
7
 
8
 class BrowserListener;
9
 struct BrowserSettings;
10
@@ -42,6 +44,12 @@
11
            const std::shared_ptr<BrowserListener>
12
                &browserListener);
13
 
14
+   CefBrowserHost* GetBrowserHost(int browserIdentifier);
15
+   CefBrowser* GetBrowser(int browserIdentifier);
16
+   void LoadURL(int browserIdentifier, CefString& url);
17
+
18
+   bool IsValidBrowserIdentifier(int browserIdentifier);
19
+
20
    void DestroyBrowser(int browserIdentifier);
21
 
22
    void TickBrowser(int browserIdentifier);
23
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-obs-bridge.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-obs-bridge.hpp Changed
9
 
1
@@ -4,4 +4,5 @@
2
 {
3
 public:
4
    virtual const char* GetCurrentSceneJSONData() = 0;
5
-};
6
\ No newline at end of file
7
+   virtual const char* GetStatus() = 0;
8
+};
9
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-scheme.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-scheme.cpp Changed
8
 
1
@@ -116,4 +116,4 @@
2
 {
3
    if (inputStream.is_open())
4
        inputStream.close();
5
-}
6
\ No newline at end of file
7
+}
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-scheme.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-scheme.hpp Changed
8
 
1
@@ -59,4 +59,4 @@
2
 
3
 public:
4
    IMPLEMENT_REFCOUNTING(BrowserSchemeHandler);
5
-};
6
\ No newline at end of file
7
+};
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-settings.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-settings.hpp Changed
8
 
1
@@ -25,4 +25,4 @@
2
    unsigned int width;
3
    unsigned int height;
4
    unsigned int fps;
5
-};
6
\ No newline at end of file
7
+};
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-task.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-task.cpp Changed
8
 
1
@@ -25,4 +25,4 @@
2
 void BrowserTask::Execute()
3
 {
4
    task();
5
-}
6
\ No newline at end of file
7
+}
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-task.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-task.hpp Changed
8
 
1
@@ -35,4 +35,4 @@
2
    std::function<void()> task;
3
 private:
4
    IMPLEMENT_REFCOUNTING(BrowserTask);
5
-};
6
\ No newline at end of file
7
+};
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-texture-reference.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-texture-reference.hpp Changed
8
 
1
@@ -36,4 +36,4 @@
2
 private:
3
    class Impl;
4
    std::unique_ptr<Impl> pimpl;
5
-};
6
\ No newline at end of file
7
+};
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-texture.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-texture.hpp Changed
8
 
1
@@ -36,4 +36,4 @@
2
 private:
3
    class Impl;
4
    std::unique_ptr<Impl> pimpl;
5
-};
6
\ No newline at end of file
7
+};
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-types.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-types.h Changed
8
 
1
@@ -25,4 +25,4 @@
2
 typedef int BrowserSurfaceHandle;
3
 #else
4
 typedef struct gs_texture *BrowserSurfaceHandle;
5
-#endif
6
\ No newline at end of file
7
+#endif
8
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/browser-version.h -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/browser-version.h Changed
7
 
1
@@ -1,3 +1,3 @@
2
 #pragma once
3
 
4
-#define OBS_BROWSER_VERSION "1.30.1"
5
\ No newline at end of file
6
+#define OBS_BROWSER_VERSION "1.31.0"
7
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/util.cpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/util.cpp Changed
25
 
1
@@ -18,4 +18,21 @@
2
    free(obj);
3
 
4
    return jsonString;
5
-}
6
\ No newline at end of file
7
+}
8
+
9
+/**
10
+   Gets the OBS status and generates a JSON encoded string representing the status (recording, streaming etc.).
11
+
12
+   @return json encoded string
13
+*/
14
+const char* obsStatusToJSON()
15
+{
16
+   json_t *obj = json_object();
17
+   json_object_set_new(obj, "recording", json_boolean(obs_frontend_recording_active()));
18
+   json_object_set_new(obj, "streaming", json_boolean(obs_frontend_streaming_active()));
19
+   json_object_set_new(obj, "replaybuffer", json_boolean(obs_frontend_replay_buffer_active()));
20
+   const char *jsonString = json_dumps(obj, 0);
21
+   free(obj);
22
+
23
+   return jsonString;
24
+}
25
obs-studio-21.0.3.tar.xz/plugins/obs-browser/shared/util.hpp -> obs-studio-21.1.2.tar.xz/plugins/obs-browser/shared/util.hpp Changed
9
 
1
@@ -3,4 +3,5 @@
2
 #include <jansson.h>
3
 #include <obs-frontend-api.h>
4
 
5
-extern const char* obsSourceToJSON(obs_source_t *source);
6
\ No newline at end of file
7
+extern const char* obsSourceToJSON(obs_source_t *source);
8
+extern const char* obsStatusToJSON();
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/ca-ES.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/ca-ES.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Parcial"
3
 ColorRange.Full="Màxim"
4
 RestartMedia="Reinicia els mitjans"
5
+SpeedPercentage="Velocitat (percentatge)"
6
 Seekable="Cercable"
7
 
8
 MediaFileFilter.AllMediaFiles="Tots els arxius multimèdia"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/de-DE.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/de-DE.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Teilweise"
3
 ColorRange.Full="Voll"
4
 RestartMedia="Medium neu starten"
5
+SpeedPercentage="Geschwindigkeit (Prozent)"
6
 Seekable="Durchsuchbar"
7
 
8
 MediaFileFilter.AllMediaFiles="Alle Mediendateien"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/en-US.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/en-US.ini Changed
10
 
1
@@ -36,7 +36,7 @@
2
 ColorRange.Partial="Partial"
3
 ColorRange.Full="Full"
4
 RestartMedia="Restart Media"
5
-SpeedPercentage="Speed (perecent)"
6
+SpeedPercentage="Speed (percent)"
7
 Seekable="Seekable"
8
 
9
 MediaFileFilter.AllMediaFiles="All Media Files"
10
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/fi-FI.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/fi-FI.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Osittainen"
3
 ColorRange.Full="Täysi"
4
 RestartMedia="Uudelleenkäynnistä media"
5
+SpeedPercentage="Nopeus (prosentti)"
6
 Seekable="Haettava"
7
 
8
 MediaFileFilter.AllMediaFiles="Kaikki mediatiedostot"
9
obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/fil-PH.ini Added
53
 
1
@@ -0,0 +1,51 @@
2
+FFmpegOutput="Ang Awput ng FFmpeg"
3
+FFmpegAAC="Ang Default FFmpeg AAC Encoder"
4
+FFmpegOpus="Ang FFmpeg Opus Encoder"
5
+Bitrate="Bitrate"
6
+Preset="Ang Preset"
7
+RateControl="Kontrolin ang Antas"
8
+KeyframeIntervalSec="Ang pagitan ng Keyframe (segundos, 0=auto)"
9
+Lossless="Lossless"
10
+
11
+BFrames="B-frames"
12
+
13
+NVENC.Use2Pass="Gamitin ang Two-Pass Encoding"
14
+NVENC.Preset.default="I-Default"
15
+NVENC.Preset.hq="Itaas ang Kalidad"
16
+NVENC.Preset.hp="Itaas ang Pagganap"
17
+NVENC.Preset.bd="Bluray"
18
+NVENC.Preset.ll="Mababa na Latency"
19
+NVENC.Preset.llhq="Mababa na Latency Mataas na kalidad"
20
+NVENC.Preset.llhp="Mababa na Latency Mataas na pagganap"
21
+NVENC.Level="Lebel"
22
+
23
+FFmpegSource="Pagkunan ng Media"
24
+LocalFile="Ang File na lokal"
25
+Looping="I-Loop"
26
+Input="Ang Input"
27
+InputFormat="Ang Format ng Input"
28
+BufferingMB="Nag buffering ang Network (MB)"
29
+HardwareDecode="Gamitin ang hardware decoding kapag magagamit"
30
+ClearOnMediaEnd="Itago ang pinagmulan kung tapos ang playback"
31
+Advanced="I-Advanced"
32
+RestartWhenActivated="Simulan mulang ang playback kapag aktibo ang pinagmulan"
33
+CloseFileWhenInactive="Isarado ang file pag di aktibo"
34
+CloseFileWhenInactive.ToolTip="Isarado ang file kapag ang pinagmulan ay di ipinapakita ang stream or\nrecording. Ito nagpapahintulot na baguhin ang pinagmulang pag hindi aktibo,'\n pero dapat mayroong startup delay kapang ang pinagmulan muliang aktibo."
35
+ColorRange="Antas ng kulay ng YUV"
36
+ColorRange.Auto="I-Auto"
37
+ColorRange.Partial="I-Partial"
38
+ColorRange.Full="Buo"
39
+RestartMedia="Simulan muli ang Media"
40
+Seekable="I-Seekable"
41
+
42
+MediaFileFilter.AllMediaFiles="Lahat ng Media Files"
43
+MediaFileFilter.VideoFiles="Bidyo Files"
44
+MediaFileFilter.AudioFiles="Audio Files"
45
+MediaFileFilter.AllFiles="Lahat ng Files"
46
+
47
+ReplayBuffer="Ang Replay Buffer"
48
+ReplayBuffer.Save="I-Save ang Replay"
49
+
50
+HelperProcessFailed="Hindi pwedeng simulan ang pag proseso ng recording helper. Tingan kung OBS file ay hindi hinarangan o tinanggal ng anumang 3rd part antivirus / security software."
51
+UnableToWritePath="Hindi pwedeng sumulat sa %1. Siguraduhin na gamit ang recording path kung saan ang user account mo ay tanggap ang pagsulat at mayroon sapat na espasyo sa disk."
52
+
53
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/fr-FR.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/fr-FR.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Partielle"
3
 ColorRange.Full="Complète"
4
 RestartMedia="Redémarrez Media"
5
+SpeedPercentage="Vitesse (pourcent)"
6
 Seekable="Navigable"
7
 
8
 MediaFileFilter.AllMediaFiles="Tous les fichiers multimédias"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/hu-HU.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/hu-HU.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Részleges"
3
 ColorRange.Full="Teljes"
4
 RestartMedia="Media újraindítása"
5
+SpeedPercentage="Sebesség (százalékos)"
6
 Seekable="Kereshető"
7
 
8
 MediaFileFilter.AllMediaFiles="Minden médiafájl"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/ja-JP.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/ja-JP.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="一部"
3
 ColorRange.Full="全部"
4
 RestartMedia="メディアを再開する"
5
+SpeedPercentage="速度 (パーセント)"
6
 Seekable="シーク可能"
7
 
8
 MediaFileFilter.AllMediaFiles="すべてのメディアファイル"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/ko-KR.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/ko-KR.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="부분"
3
 ColorRange.Full="전체"
4
 RestartMedia="미디어 다시재생"
5
+SpeedPercentage="속도 (백분율)"
6
 Seekable="탐색 가능"
7
 
8
 MediaFileFilter.AllMediaFiles="모든 미디어 파일"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/nl-NL.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/nl-NL.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Gedeeltelijk"
3
 ColorRange.Full="Volledig"
4
 RestartMedia="Media herstarten"
5
+SpeedPercentage="Snelheid (percentage)"
6
 Seekable="Zoekbaar"
7
 
8
 MediaFileFilter.AllMediaFiles="Alle mediabestanden"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/pl-PL.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/pl-PL.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Częściowy"
3
 ColorRange.Full="Pełny"
4
 RestartMedia="Zrestartuj plik audio-wideo"
5
+SpeedPercentage="Szybkość (procent)"
6
 Seekable="Przeszukiwalny"
7
 
8
 MediaFileFilter.AllMediaFiles="Wszystkie pliki multimedialne"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/pt-BR.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/pt-BR.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Parcial"
3
 ColorRange.Full="Completo"
4
 RestartMedia="Reiniciar Mídia"
5
+SpeedPercentage="Velocidade (percentagem)"
6
 Seekable="Procurável"
7
 
8
 MediaFileFilter.AllMediaFiles="Todos Arquivos de Mídia"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/ru-RU.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/ru-RU.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Частичный"
3
 ColorRange.Full="Полный"
4
 RestartMedia="Перезапустить медиа"
5
+SpeedPercentage="Скорость (проценты)"
6
 Seekable="Перематываемый"
7
 
8
 MediaFileFilter.AllMediaFiles="Все медиа-файлы"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/sv-SE.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/sv-SE.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Delvis"
3
 ColorRange.Full="Full"
4
 RestartMedia="Starta om media"
5
+SpeedPercentage="Hastighet (procent)"
6
 Seekable="Sökbar"
7
 
8
 MediaFileFilter.AllMediaFiles="Alla mediafiler"
9
obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/tl-PH.ini Added
53
 
1
@@ -0,0 +1,51 @@
2
+FFmpegOutput="FFmpeg Panglabas"
3
+FFmpegAAC="Ang hindi pagharap ng FFmpeg AAC Encoder"
4
+FFmpegOpus="Ang FFmpeg Opus Encoder"
5
+Bitrate="Bitreyt"
6
+Preset="I-preset"
7
+RateControl="Kontrolin ang Rate"
8
+KeyframeIntervalSec="Ang Pagitan ng Keyframe (segundo, 0=awto)"
9
+Lossless="Walang Pagkawala"
10
+
11
+BFrames="Ang mga B-frame"
12
+
13
+NVENC.Use2Pass="Gamitin ang Dalawang Pass ng Encoding"
14
+NVENC.Preset.default="I-default"
15
+NVENC.Preset.hq="Mataas na Kalidad"
16
+NVENC.Preset.hp="Mataas na Pagganap"
17
+NVENC.Preset.bd="Ang Bluray"
18
+NVENC.Preset.ll="Mababang Pagkawalang kilos"
19
+NVENC.Preset.llhq="Mababang-Pagkawalang kilos na Mataas ang Kalidad"
20
+NVENC.Preset.llhp="Mababang-Pagkawalang kilos na Mataan ang Pagganap"
21
+NVENC.Level="Antas"
22
+
23
+FFmpegSource="Pinagmulan ng Media"
24
+LocalFile="Ang Lokal na File"
25
+Looping="Silo"
26
+Input="Pampasok"
27
+InputFormat="Pampasok na Format"
28
+BufferingMB="Ang Network Buffering (MB)"
29
+HardwareDecode="Gamitin ang hardware sa pag-decode kapag itong magagamit na"
30
+ClearOnMediaEnd="Itago ang pinagmulan kapag ang playback ay natapos"
31
+Advanced="Nauuna"
32
+RestartWhenActivated="I-restart ang playback kapag ang pinagmulan ay naging aktibo na"
33
+CloseFileWhenInactive="Isarado ang file kapag hindi ito aktibo"
34
+CloseFileWhenInactive.ToolTip="Tinatanggal ang file kapag ang pinagmulan ay hindi ipinapakita sa stream o\nnatala. Pinapayagan nito na mabago ang file kapag ang pinagmulan ay hindi aktibo,\nngunit maaaring may ilang pagkaantala sa startup kapag muling pinagana ang pinagmulan."
35
+ColorRange="Ang Saklaw ng Kulay na YUV"
36
+ColorRange.Auto="Awto"
37
+ColorRange.Partial="Bahagya"
38
+ColorRange.Full="Puno"
39
+RestartMedia="I-restart ang Media"
40
+Seekable="Maayos"
41
+
42
+MediaFileFilter.AllMediaFiles="Lahat ng mga Media File"
43
+MediaFileFilter.VideoFiles="Ang mga Video File"
44
+MediaFileFilter.AudioFiles="Ang mga Audio File"
45
+MediaFileFilter.AllFiles="Lahat ng mga File"
46
+
47
+ReplayBuffer="I-replay ang Buffer"
48
+ReplayBuffer.Save="I-save ang Replay"
49
+
50
+HelperProcessFailed="Hindi magawang simulan ang pagtatala ng proseso ng katulong. Suriin na ang mga file ng OBS ay hindi na-block o inalis ng anumang 3rd party antivirus / seguridad ng software."
51
+UnableToWritePath="Hindi makapagsulat sa %1. Tiyaking gumagamit ka ng isang landas sa pagtatala kung saan pinahihintulutan ang iyong user account na magsulat at mayroong sapat na puwang sa disk."
52
+
53
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/tr-TR.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/tr-TR.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Kısmi"
3
 ColorRange.Full="Tam"
4
 RestartMedia="Ortamı Yeniden Başlat"
5
+SpeedPercentage="Hız (yüzde)"
6
 Seekable="Aranabilir"
7
 
8
 MediaFileFilter.AllMediaFiles="Tüm Medya Dosyaları"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/uk-UA.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/uk-UA.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="Частковий"
3
 ColorRange.Full="Повний"
4
 RestartMedia="Перезапустити медіа"
5
+SpeedPercentage="Швидкість (відсотків)"
6
 Seekable="HTTP з перемотуванням"
7
 
8
 MediaFileFilter.AllMediaFiles="Файли мультимедіа"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/zh-CN.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/zh-CN.ini Changed
16
 
1
@@ -30,12 +30,13 @@
2
 Advanced="高级"
3
 RestartWhenActivated="当源变为活动状态时重新启动播放"
4
 CloseFileWhenInactive="非活跃状态时关闭文件"
5
-CloseFileWhenInactive.ToolTip="当源没有显示在推流或者\n录像时关闭文件. 这使得在源不活跃状态时可以更改文件,\n但是当当源重新激活时, 可能有一些启动延迟."
6
+CloseFileWhenInactive.ToolTip="当源没有显示在推流或者\n录像时关闭文件。这使得在源不活跃状态时可以更改文件,\n但是当当源重新激活时, 可能有一些启动延迟。"
7
 ColorRange="YUV 颜色范围"
8
 ColorRange.Auto="自动"
9
 ColorRange.Partial="局部"
10
 ColorRange.Full="全部"
11
 RestartMedia="重新启动媒体"
12
+SpeedPercentage="速度(百分比)"
13
 Seekable="可搜索"
14
 
15
 MediaFileFilter.AllMediaFiles="所有媒体文件"
16
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/zh-TW.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/zh-TW.ini Changed
9
 
1
@@ -36,6 +36,7 @@
2
 ColorRange.Partial="部分"
3
 ColorRange.Full="全部"
4
 RestartMedia="重新播放媒體"
5
+SpeedPercentage="速度 (百分比)"
6
 Seekable="可查找"
7
 
8
 MediaFileFilter.AllMediaFiles="所有媒體檔案"
9
obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c -> obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c Changed
28
 
1
@@ -20,6 +20,7 @@
2
 #include <util/darray.h>
3
 #include <obs-module.h>
4
 
5
+#include <libavutil/opt.h>
6
 #include <libavformat/avformat.h>
7
 
8
 #include "obs-ffmpeg-formats.h"
9
@@ -229,17 +230,8 @@
10
            enc->context->sample_rate = closest;
11
    }
12
 
13
-   /* if using FFmpeg's AAC encoder, at least set a cutoff value
14
-    * (recommended by konverter) */
15
    if (strcmp(enc->codec->name, "aac") == 0) {
16
-       int cutoff1 = 4000 + (int)enc->context->bit_rate / 8;
17
-       int cutoff2 = 12000 + (int)enc->context->bit_rate / 8;
18
-       int cutoff3 = enc->context->sample_rate / 2;
19
-       int cutoff;
20
-
21
-       cutoff = MIN(cutoff1, cutoff2);
22
-       cutoff = MIN(cutoff, cutoff3);
23
-       enc->context->cutoff = cutoff;
24
+       av_opt_set(enc->context->priv_data, "aac_coder", "fast", 0);
25
    }
26
 
27
    info("bitrate: %" PRId64 ", channels: %d, channel_layout: %x\n",
28
obs-studio-21.1.2.tar.xz/plugins/obs-filters/data/locale/fil-PH.ini Added
79
 
1
@@ -0,0 +1,77 @@
2
+ColorFilter="Pagtama ng Kulay"
3
+ColorGradeFilter="Mag-aplay ng LUT"
4
+MaskFilter="Imahe ng Maskara/Timpla"
5
+AsyncDelayFilter="Naantalang bidyo (Async)"
6
+CropFilter="I-Crop/Pad"
7
+ScrollFilter="Mag-scroll"
8
+ChromaKeyFilter="Susi ng Chroma"
9
+ColorKeyFilter="Susi ng Kulay"
10
+SharpnessFilter="I-Sharpen"
11
+ScaleFilter="I-Scaling/Ratio ng Aspeto"
12
+GPUDelayFilter="I-Render Delay"
13
+UndistortCenter="Undistort center ng imahe kapang nag scaling mula sa ultrawide"
14
+NoiseGate="Ang Noise Gate"
15
+NoiseSuppress="Ang Noise Suppression"
16
+Gain="Ang Gain"
17
+DelayMs="I-Delay (millisegundos)"
18
+Type="I-Type"
19
+MaskBlendType.MaskColor="I-Alpha Mask (Kulang ng Channel)"
20
+MaskBlendType.MaskAlpha="I-Alpha Mask (Alpha ng Channel)"
21
+MaskBlendType.BlendMultiply="I-Blend (Paramihin)"
22
+MaskBlendType.BlendAddition="I-Blend (Dagdagan)"
23
+MaskBlendType.BlendSubtraction="I-Blend (Bawasan)"
24
+Path="Ang Landas"
25
+Color="Kulay"
26
+Opacity="Kalabuan"
27
+Contrast="Kaibahan"
28
+Brightness="Kaliwanagan"
29
+Gamma="Ang Gamma"
30
+BrowsePath.Images="Lahat ng Image Files"
31
+BrowsePath.AllFiles="Lahat ng Files"
32
+KeyColorType="Susi ng Color Type"
33
+KeyColor="Susi ng Kulay"
34
+Similarity="Ang pagkapareho (1-1000)"
35
+Smoothness="Ang pagkakinis (1-1000)"
36
+ColorSpillReduction="Ang pagbawas ng Key Color Spill (1-1000)"
37
+Crop.Left="Kaliwa"
38
+Crop.Right="Kanan"
39
+Crop.Top="Itaas"
40
+Crop.Bottom="Ibaba"
41
+Crop.Width="Ang Lapad"
42
+Crop.Height="Ang Taas"
43
+Crop.Relative="Ang Relative"
44
+ScrollFilter.SpeedX="Ang Horizontal Speed"
45
+ScrollFilter.SpeedY="Ang Vertical Speed"
46
+ScrollFilter.LimitWidth="Limitasyon ng Lapad"
47
+ScrollFilter.LimitHeight="Limitasyon ng Taas"
48
+CustomColor="Pagsadya ng kulay"
49
+Red="Pula"
50
+Green="Berde"
51
+Blue="Asul"
52
+Magenta="Magenta"
53
+NoiseGate.OpenThreshold="Buksan ang Threshold (dB)"
54
+NoiseGate.CloseThreshold="Isarado ang Threshold (dB)"
55
+NoiseGate.AttackTime="Oras ng Pag-atake (milsegudo)"
56
+NoiseGate.HoldTime="Paghawak ng Oras (milsegudo)"
57
+NoiseGate.ReleaseTime="Paglabas ng Oras (milsegudo)"
58
+Gain.GainDB="Makakuha (dB)"
59
+StretchImage="Mag-stretch ng Imahe (itapon ang imahe ng anyong panumbasan)"
60
+Resolution="Resolusyon"
61
+None="Wala"
62
+ScaleFiltering="Iskala ng Pagsasala"
63
+ScaleFiltering.Point="Punto"
64
+ScaleFiltering.Bilinear="Bilinir"
65
+ScaleFiltering.Bicubic="Bikyubik"
66
+ScaleFiltering.Lanczos="Lankzos"
67
+NoiseSuppress.SuppressLevel="Antas ng Pagpigil (dB)"
68
+Saturation="Pagbababad"
69
+HueShift="Kulay ng pagririlyebo"
70
+Amount="Halaga"
71
+Compressor="Kompresor"
72
+Compressor.Ratio="Tumbasan (X:1)"
73
+Compressor.Threshold="Threshold (dB)"
74
+Compressor.AttackTime="Atake (ms)"
75
+Compressor.ReleaseTime="Paglabas (ms)"
76
+Compressor.OutputGain="Makakuha ng Awput (dB)"
77
+Compressor.SidechainSource="Saydcheyn/Pinagmulan ng Daking"
78
+
79
obs-studio-21.0.3.tar.xz/plugins/obs-filters/data/locale/ru-RU.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-filters/data/locale/ru-RU.ini Changed
31
 
1
@@ -2,12 +2,12 @@
2
 ColorGradeFilter="Применить LUT"
3
 MaskFilter="Маска изображения/Смешивание"
4
 AsyncDelayFilter="Задержка видео (асинхронность)"
5
-CropFilter="Кадрировать"
6
+CropFilter="Кадрирование"
7
 ScrollFilter="Прокрутка"
8
 ChromaKeyFilter="Хромакей"
9
 ColorKeyFilter="Цветовой ключ"
10
 SharpnessFilter="Увеличить резкость"
11
-ScaleFilter="Коэффициент Масштабирования/Аспект"
12
+ScaleFilter="Масштабирование/Соотношение сторон"
13
 GPUDelayFilter="Задержка отображения"
14
 UndistortCenter="Не искривлять центр изображения при масштабировании Ultrawide разрешения"
15
 NoiseGate="Пропускной уровень шума"
16
@@ -58,10 +58,10 @@
17
 StretchImage="Растянуть изображение (игнорировать пропорции изображения)"
18
 Resolution="Разрешение"
19
 None="Нет"
20
-ScaleFiltering="Масштаб Фильтрации"
21
-ScaleFiltering.Point="Точечная"
22
-ScaleFiltering.Bilinear="Билинейная"
23
-ScaleFiltering.Bicubic="Бикубическая"
24
+ScaleFiltering="Фильтр масштабирования"
25
+ScaleFiltering.Point="Точечный"
26
+ScaleFiltering.Bilinear="Билинейный"
27
+ScaleFiltering.Bicubic="Бикубический"
28
 ScaleFiltering.Lanczos="Метод Ланцоша"
29
 NoiseSuppress.SuppressLevel="Уровень подавления (дБ)"
30
 Saturation="Насыщенность"
31
obs-studio-21.1.2.tar.xz/plugins/obs-filters/data/locale/tl-PH.ini Added
79
 
1
@@ -0,0 +1,77 @@
2
+ColorFilter="Koreksyon ng mga Kulay"
3
+ColorGradeFilter="I-apply ang LUT"
4
+MaskFilter="Imahe ng Mask/Blend"
5
+AsyncDelayFilter="I-delay ang Video (Async)"
6
+CropFilter="I-crop/Pad"
7
+ScrollFilter="I-scroll"
8
+ChromaKeyFilter="Ang Chroma Key"
9
+ColorKeyFilter="Kulay ng mga Key"
10
+SharpnessFilter="Patalasan pa"
11
+ScaleFilter="Scaling/Aspect Ratio"
12
+GPUDelayFilter="Mad-render ng Delay"
13
+UndistortCenter="Ang sentro ay i-undistort kapag ang scaling ay mula sa ultrawide"
14
+NoiseGate="Noise Gate"
15
+NoiseSuppress="Pagtimpiin ang tunog"
16
+Gain="Napunan"
17
+DelayMs="I-delay (millisegundos)"
18
+Type="Tipo"
19
+MaskBlendType.MaskColor="Alpha Mask (Kulay ng Channel)"
20
+MaskBlendType.MaskAlpha="Alpha Mask (Alpha Channel)"
21
+MaskBlendType.BlendMultiply="I-blend (pagpaparami)"
22
+MaskBlendType.BlendAddition="I-blend (pagsamahin)"
23
+MaskBlendType.BlendSubtraction="I-blend (paghiwalayin)"
24
+Path="Daanan"
25
+Color="Kulay"
26
+Opacity="Opacity"
27
+Contrast="Kaibahan"
28
+Brightness="Gaano kaliwanag"
29
+Gamma="Gamma"
30
+BrowsePath.Images="Lahat ng mga Imahen sa File"
31
+BrowsePath.AllFiles="Lahat ng mga Files"
32
+KeyColorType="Tipo ng Kulay sa Key"
33
+KeyColor="Kulay ng Key"
34
+Similarity="Kapareho (1-1000)"
35
+Smoothness="Kakinisan (1-1000)"
36
+ColorSpillReduction="Kulay ng Key sa Spill Reduction (1-1000)"
37
+Crop.Left="Kaliwa"
38
+Crop.Right="Kanan"
39
+Crop.Top="Itaas"
40
+Crop.Bottom="Ibaba"
41
+Crop.Width="Lapad"
42
+Crop.Height="Taas"
43
+Crop.Relative="Kaugnayan"
44
+ScrollFilter.SpeedX="Pahigang Bilis"
45
+ScrollFilter.SpeedY="Patayong Bilis"
46
+ScrollFilter.LimitWidth="Limitasyon ng Lapad"
47
+ScrollFilter.LimitHeight="Limitasyon sa Haba"
48
+CustomColor="Custom na Kulay"
49
+Red="Pula"
50
+Green="Kulay Luntian"
51
+Blue="Bughaw"
52
+Magenta="Magenta"
53
+NoiseGate.OpenThreshold="I-open ang Threshold (dB)"
54
+NoiseGate.CloseThreshold="Isarado ang Threshold (dB)"
55
+NoiseGate.AttackTime="Atakihin ang Oras (millisegundo)"
56
+NoiseGate.HoldTime="Pigilin ang Oras (millisegundo)"
57
+NoiseGate.ReleaseTime="Pakawalan ang Oras (millisegundo)"
58
+Gain.GainDB="Napunan (dB)"
59
+StretchImage="I-stretch ang Imahe (baliwalain ang imahe mula sa aspect ratio)"
60
+Resolution="Resulosyon"
61
+None="Wala"
62
+ScaleFiltering="I-filter ang Scale"
63
+ScaleFiltering.Point="Tuldok"
64
+ScaleFiltering.Bilinear="Bilinear"
65
+ScaleFiltering.Bicubic="Bicubic"
66
+ScaleFiltering.Lanczos="Lanczos"
67
+NoiseSuppress.SuppressLevel="Lebel ng Suppression (dB)"
68
+Saturation="Saturation"
69
+HueShift="Hue Shift"
70
+Amount="Ang Halaga"
71
+Compressor="Ang Comppressor"
72
+Compressor.Ratio="Proporsyon (X:1)"
73
+Compressor.Threshold="Threshold (dB)"
74
+Compressor.AttackTime="Atake (ms)"
75
+Compressor.ReleaseTime="Pakawalan (ms)"
76
+Compressor.OutputGain="Ang nadagdag sa panlabas (dB)"
77
+Compressor.SidechainSource="Pinagmulan ng Sidechain/Ducking"
78
+
79
obs-studio-21.1.2.tar.xz/plugins/obs-libfdk/data/locale/fil-PH.ini Added
6
 
1
@@ -0,0 +1,4 @@
2
+LibFDK="libfdk AAC Enkoder"
3
+Bitrate="Bitreyt"
4
+Afterburner="Paganhin ang AAC Afterburner"
5
+
6
obs-studio-21.1.2.tar.xz/plugins/obs-libfdk/data/locale/tl-PH.ini Added
6
 
1
@@ -0,0 +1,4 @@
2
+LibFDK="libfdk na AAC Encoder"
3
+Bitrate="Ang Bitrate"
4
+Afterburner="Paganahin ang AAC Afterburner"
5
+
6
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/CMakeLists.txt -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/CMakeLists.txt Changed
10
 
1
@@ -22,6 +22,8 @@
2
 if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/CMakeLists.txt")
3
    find_package(Libcurl REQUIRED)
4
 
5
+   add_definitions(-DFTL_STATIC_COMPILE)
6
+
7
    include_directories(${LIBCURL_INCLUDE_DIRS})
8
 
9
    set(ftl_SOURCES
10
obs-studio-21.1.2.tar.xz/plugins/obs-outputs/data/locale/fil-PH.ini Added
16
 
1
@@ -0,0 +1,14 @@
2
+RTMPStream="Ang RTMP Stream"
3
+RTMPStream.DropThreshold="Ang Drop Treshold (millisegundos)"
4
+FLVOutput="Ang FLV File Awput"
5
+FLVOutput.FilePath="Ang Landas ng File"
6
+Default="I-Default"
7
+
8
+ConnectionTimedOut="Ang koneskyong ay nag time out. Siguraduhin na nakaayos at balido ang streaming service at walang firewall na nakaharang sa koneksyon."
9
+PermissionDenied="Ang koneksyon ay hinarang. Suriin ang firewall / anti-virus settings upang matiyak na tiyak na may buong access sa internet ang OBS."
10
+ConnectionAborted="Ang koneksyon ay naudlot. Ito ay karaniwang nagpapahiwatig na may problema sa iyong internet koneksyon at sa streaming service."
11
+ConnectionReset="Ang koneksyon ay na i-reset ng peer. Ito ay karaniwang nagpapahiwatig na may problema sa iyong internet koneksyon at sa streaming service."
12
+HostNotFound="Hindi makita ang Hostname. Siguraduhin na nilagay mo ay balidong streaming server at ang iyong internet koneksyon / DNS ay gumagana ng mabuti."
13
+NoData="Ang hostname ay nakita, pero walang hinihinging tipo ng datus. Ito ay ay nangyayari kapag naka bound sa IPv6 address at ang iyong streaming service ay IPv4 lamang (tignan Settings / Advanced)."
14
+AddressNotAvailable="Hindi magamit ang address. Ikaw ay gumamit at na i-bind ito sa di balidong IP address ( tingan ang Settings / Advanced)."
15
+
16
obs-studio-21.1.2.tar.xz/plugins/obs-outputs/data/locale/tl-PH.ini Added
16
 
1
@@ -0,0 +1,14 @@
2
+RTMPStream="RTMP Stream"
3
+RTMPStream.DropThreshold="Treshold ng pagbaba (millisegundos)"
4
+FLVOutput="Ang kinalabasan ng FLV File"
5
+FLVOutput.FilePath="Ang Daanan ng File"
6
+Default="Ang Default"
7
+
8
+ConnectionTimedOut="Ang koneksyon ay nawala. Siguraduhing ikaw ay nag-configured ng isang balidong serbisyo ng streaming at walang firewall na nagpipigil sa koneksyon."
9
+PermissionDenied="Ang koneksyon ay na-block. I-check ang iyong firewall / anti-virus na settings para masiguradong ang OBS ay pwedeng makapasok sa internet."
10
+ConnectionAborted="Ang koneksyon ay nabigo. Ito ay kadalasang indikasyon na ang internet nakoneksyon ay may problema sa'yo o kay sa serbisyo ng streaming."
11
+ConnectionReset="Ang koneksyon ay ni-reset ng peer. Ito ay kadalasang indikasyon na ang internet nakoneksyon ay may problema sa'yo o kay sa serbisyo ng streaming."
12
+HostNotFound="Ang hostname ay hindi matagpuan. Siguraduhing ang nilagay mo ay isang balidong stereaming server at ang iyong internet koneksyon / DNS ay gumagana ng sakto."
13
+NoData="Ang hostname ay natagpuan, ngunit walang data sa ni-request na tipo. Ito ay pwedeng mangyari kung wala kang bound para sa IPv6 na address at ang iyong streaming service ay meron lang IPv4 na mga address (tingnan ang Setting / Advanced)."
14
+AddressNotAvailable="Ang address ay hindi pwede. Pwede kang sumubok na i-bind sa isang hindi balidong IP address (tingnan ang Setting / Advanced)."
15
+
16
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/CMakeLists.txt -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/CMakeLists.txt Changed
159
 
1
@@ -3,64 +3,64 @@
2
 project(libftl)
3
 
4
 option(DISABLE_AUTO_INGEST "Set to TRUE to disable auto ingest feature which removes curl and jansson dependancies" FALSE)
5
+MESSAGE( STATUS "FTL DISABLE_AUTO_INGEST: " ${DISABLE_AUTO_INGEST})
6
 
7
 find_package(Threads REQUIRED)
8
 
9
 set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
10
 set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
11
 
12
-FIND_PACKAGE(CURL)
13
-
14
 if (DISABLE_AUTO_INGEST)
15
-add_definitions(-DDISABLE_AUTO_INGEST)
16
+  add_definitions(-DDISABLE_AUTO_INGEST)
17
 endif()
18
 
19
+# We will only try to include curl if we have auto ingest enabled.
20
+if (NOT DISABLE_AUTO_INGEST)
21
+  FIND_PACKAGE(CURL)
22
+endif()
23
 if (NOT CURL_FOUND AND NOT DISABLE_AUTO_INGEST)
24
-SET(CURL_DISABLE_NTLM ON CACHE BOOL "Disabling NTLM")
25
-SET(CURL_DISABLE_TELNET ON CACHE BOOL "Disabling Telnet")
26
-SET(CURL_DISABLE_LDAP ON CACHE BOOL "Disabling Ldap")
27
-SET(CURL_DISABLE_LDAPS ON CACHE BOOL "Disabling secure ldap")
28
-SET(BUILD_CURL_EXE OFF CACHE BOOL "Building libcurl")
29
-SET(HTTP_ONLY ON CACHE BOOL "using compiling HTTP")
30
-SET(BUILD_TESTING OFF CACHE BOOL "Not building Tests")
31
-add_subdirectory(libcurl)
32
-SET(CURL_INCLUDE_DIRS libcurl/include ${CMAKE_CURRENT_BINARY_DIR}/libcurl/include/curl)
33
-SET(CURL_LIBRARIES libcurl)
34
+  SET(CURL_DISABLE_NTLM ON CACHE BOOL "Disabling NTLM")
35
+  SET(CURL_DISABLE_TELNET ON CACHE BOOL "Disabling Telnet")
36
+  SET(CURL_DISABLE_LDAP ON CACHE BOOL "Disabling Ldap")
37
+  SET(CURL_DISABLE_LDAPS ON CACHE BOOL "Disabling secure ldap")
38
+  SET(BUILD_CURL_EXE OFF CACHE BOOL "Building libcurl")
39
+  SET(HTTP_ONLY ON CACHE BOOL "using compiling HTTP")
40
+  SET(BUILD_TESTING OFF CACHE BOOL "Not building Tests")
41
+  add_subdirectory(libcurl)
42
+  SET(CURL_INCLUDE_DIRS libcurl/include ${CMAKE_CURRENT_BINARY_DIR}/libcurl/include/curl)
43
+  SET(CURL_LIBRARIES libcurl)
44
+  include_directories(${CURL_INCLUDE_DIRS})
45
 endif()
46
-MESSAGE( STATUS "Curl include dir: " ${CURL_INCLUDE_DIRS}) 
47
-include_directories(${CURL_INCLUDE_DIRS})
48
 
49
+# We will only try to include lib jansson if auto ingest is enabled.
50
+SET(JANSSON_LIBRARIES "")
51
 if (NOT DISABLE_AUTO_INGEST)
52
-SET(JANSSON_BUILD_DOCS OFF CACHE BOOL "Jansson docs off")
53
-SET(JANSSON_WITHOUT_TESTS ON CACHE BOOL "Jansson build without tests")
54
-SET(JANSSON_EXAMPLES OFF CACHE BOOL "Jansson disable examples")
55
-SET(USE_WINDOWS_CRYPTOAPI off)
56
-add_subdirectory(libjansson)
57
-include_directories(${CMAKE_CURRENT_BINARY_DIR}/libjansson/include)
58
-SET(JANSSON_LIBRARIES jansson)
59
+  SET(JANSSON_BUILD_DOCS OFF CACHE BOOL "Jansson docs off")
60
+  SET(JANSSON_WITHOUT_TESTS ON CACHE BOOL "Jansson build without tests")
61
+  SET(JANSSON_EXAMPLES OFF CACHE BOOL "Jansson disable examples")
62
+  SET(USE_WINDOWS_CRYPTOAPI off)
63
+  add_subdirectory(libjansson)
64
+  include_directories(${CMAKE_CURRENT_BINARY_DIR}/libjansson/include)
65
+  SET(JANSSON_LIBRARIES jansson)
66
 endif()
67
 
68
-include_directories(libftl libftl/gettimeofday)
69
-
70
-
71
 if (WIN32)
72
-  set(FTL_PLATFORM_FILES ftl_app/win32/xgetopt.c
73
-                            ftl_app/win32/xgetopt.h
74
-                            ftl_app/win32/ctrlc_handler.c)
75
+  set(FTL_PLATFORM_FILES  ftl_app/win32/xgetopt.c
76
+                          ftl_app/win32/xgetopt.h
77
+                          ftl_app/win32/ctrlc_handler.c)
78
   #set(FTL_PLATFORM_LIBS kernel32 user32 gdi32 advapi32 )
79
   #set(FTL_PLATFORM_LIBS ws2_32 )
80
   set(FTLSDK_PLATFORM_FILES libftl/win32/socket.c
81
-                      libftl/win32/socket.h
82
-                       libftl/win32/threads.c
83
-                         libftl/win32/threads.h)
84
-
85
+                            libftl/win32/socket.h
86
+                            libftl/win32/threads.c
87
+                            libftl/win32/threads.h)
88
   include_directories(libftl/win32)
89
 else()
90
   set(FTL_PLATFORM_FILES ftl_app/posix/ctrlc_handler.c)
91
   set(FTLSDK_PLATFORM_FILES libftl/posix/socket.c
92
                             libftl/posix/socket.h
93
-                               libftl/posix/threads.c
94
-                                 libftl/posix/threads.h)
95
+                            libftl/posix/threads.c
96
+                            libftl/posix/threads.h)
97
   include_directories(libftl/posix)
98
 endif()
99
 
100
@@ -74,15 +74,18 @@
101
                        libftl/handshake.c
102
                        libftl/ingest.c
103
                        libftl/ftl_helpers.c
104
-                      libftl/media.c
105
+                       libftl/media.c
106
                        libftl/logging.c
107
                        libftl/ftl.h
108
                        libftl/ftl_private.h
109
                        ${FTLSDK_PLATFORM_FILES})
110
+include_directories(libftl libftl/gettimeofday)
111
+
112
 set_target_properties(ftl PROPERTIES VERSION "0.5.0")
113
 set_target_properties(ftl PROPERTIES SOVERSION 0)
114
 
115
 target_link_libraries(ftl ${CURL_LIBRARIES} ${JANSSON_LIBRARIES})
116
+
117
 if(WIN32)
118
   target_link_libraries(ftl ws2_32)
119
 endif()
120
@@ -93,24 +96,22 @@
121
                ftl_app/file_parser.c
122
                ftl_app/file_parser.h              
123
                ftl_app/gettimeofday.c
124
-              ftl_app/gettimeofday.h
125
-              ftl_app/bitstream.c
126
-              ftl_app/bitstream.h
127
-              ftl_app/cavlc.c
128
-              ftl_app/cavlc.h
129
-              ftl_app/decode.c
130
-              ftl_app/decode.h
131
-              ftl_app/nalu.c
132
-              ftl_app/nalu.h
133
-              ftl_app/utils.c
134
-              ftl_app/utils.h
135
-              ftl_app/dec_obj.h
136
+               ftl_app/gettimeofday.h
137
+               ftl_app/bitstream.c
138
+               ftl_app/bitstream.h
139
+               ftl_app/cavlc.c
140
+               ftl_app/cavlc.h
141
+               ftl_app/decode.c
142
+               ftl_app/decode.h
143
+               ftl_app/nalu.c
144
+               ftl_app/nalu.h
145
+               ftl_app/utils.c
146
+               ftl_app/utils.h
147
+               ftl_app/dec_obj.h
148
                ${FTL_PLATFORM_FILES})
149
 
150
 target_link_libraries(ftl_app ftl ${CURL_LIBRARIES} ${JANSSON_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${FTL_PLATFORM_LIBS})
151
 target_include_directories(ftl_app PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/ftl_app)
152
 
153
 # Install rules
154
-install(TARGETS ftl DESTINATION lib)
155
-
156
-
157
+install(TARGETS ftl DESTINATION lib)
158
\ No newline at end of file
159
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/ftl-sdk.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/ftl-sdk.c Changed
123
 
1
@@ -12,15 +12,20 @@
2
 char error_message[1000];
3
 FTL_API const int FTL_VERSION_MAJOR = 0;
4
 FTL_API const int FTL_VERSION_MINOR = 9;
5
-FTL_API const int FTL_VERSION_MAINTENANCE = 9;
6
+FTL_API const int FTL_VERSION_MAINTENANCE = 13;
7
 
8
 // Initializes all sublibraries used by FTL
9
 FTL_API ftl_status_t ftl_init() {
10
+  struct timeval now;
11
+
12
   init_sockets();
13
   os_init();
14
 #ifndef DISABLE_AUTO_INGEST
15
   curl_global_init(CURL_GLOBAL_ALL);
16
 #endif
17
+
18
+  gettimeofday(&now, NULL);
19
+  srand((unsigned int)now.tv_sec);
20
   return FTL_SUCCESS;
21
 }
22
 
23
@@ -42,7 +47,7 @@
24
     os_init_mutex(&ftl->disconnect_mutex);
25
     os_init_mutex(&ftl->status_q.mutex);
26
 
27
-    if (os_semaphore_create(&ftl->status_q.sem, "/StatusQueue", O_CREAT, 0) < 0) {
28
+    if (os_semaphore_create(&ftl->status_q.sem, "/StatusQueue", O_CREAT, 0, FALSE) < 0) {
29
         ret_status = FTL_MALLOC_FAILURE;
30
         break;
31
     }
32
@@ -82,7 +87,7 @@
33
     ftl->video.height = 720;
34
 
35
     ftl->video.media_component.peak_kbps = params->peak_kbps;
36
-    ftl->ingest_hostname = _strdup(params->ingest_hostname);
37
+    ftl->param_ingest_hostname = _strdup(params->ingest_hostname);
38
 
39
     ftl->status_q.count = 0;
40
     ftl->status_q.head = NULL;
41
@@ -118,14 +123,16 @@
42
     return status;
43
   } while (0);
44
 
45
-  internal_ingest_disconnect(ftl);
46
+  if (os_trylock_mutex(&ftl->disconnect_mutex)) {
47
+    internal_ingest_disconnect(ftl);
48
+    os_unlock_mutex(&ftl->disconnect_mutex);
49
+  }
50
   
51
   return status;
52
 }
53
 
54
 FTL_API ftl_status_t ftl_ingest_get_status(ftl_handle_t *ftl_handle, ftl_status_msg_t *msg, int ms_timeout) {
55
   ftl_stream_configuration_private_t *ftl = (ftl_stream_configuration_private_t *)ftl_handle->priv;
56
-  ftl_status_t status = FTL_SUCCESS;
57
 
58
   if (ftl == NULL) {
59
     return FTL_NOT_INITIALIZED;
60
@@ -141,12 +148,12 @@
61
   ftl->video.media_component.peak_kbps = params->peak_kbps;
62
 
63
   if (params->ingest_hostname != NULL) {
64
-    if (ftl->ingest_hostname != NULL) {
65
-      free(ftl->ingest_hostname);
66
-      ftl->ingest_hostname = NULL;
67
+    if (ftl->param_ingest_hostname != NULL) {
68
+      free(ftl->param_ingest_hostname);
69
+      ftl->param_ingest_hostname = NULL;
70
     }
71
 
72
-    ftl->ingest_hostname = _strdup(params->ingest_hostname);
73
+    ftl->param_ingest_hostname = _strdup(params->ingest_hostname);
74
   }
75
 
76
   /* not going to update fps for the moment*/
77
@@ -201,7 +208,7 @@
78
 FTL_API int ftl_ingest_send_media(ftl_handle_t *ftl_handle, ftl_media_type_t media_type, uint8_t *data, int32_t len, int end_of_frame) {
79
 
80
   ftl_stream_configuration_private_t *ftl = (ftl_stream_configuration_private_t *)ftl_handle->priv;
81
-  int64_t dts_increment_usec, dts_usec;
82
+  int64_t dts_increment_usec, dts_usec = 0;
83
 
84
   if (media_type == FTL_AUDIO_DATA) {
85
     dts_usec = ftl->audio.dts_usec;
86
@@ -316,6 +323,10 @@
87
       free(ftl->ingest_hostname);
88
     }
89
 
90
+  if (ftl->param_ingest_hostname != NULL) {
91
+    free(ftl->param_ingest_hostname);
92
+  }
93
+
94
     free(ftl);
95
   }
96
 
97
@@ -324,14 +335,13 @@
98
 
99
 FTL_API ftl_status_t ftl_ingest_destroy(ftl_handle_t *ftl_handle){
100
   ftl_stream_configuration_private_t *ftl = (ftl_stream_configuration_private_t *)ftl_handle->priv;
101
-  ftl_status_t status = FTL_SUCCESS;
102
 
103
   ftl_handle->priv = NULL;
104
 
105
   return internal_ftl_ingest_destroy(ftl);
106
 }
107
 
108
-char* ftl_status_code_to_string(ftl_status_t status) {
109
+FTL_API char* ftl_status_code_to_string(ftl_status_t status) {
110
 
111
   switch (status) {
112
   case FTL_SUCCESS:
113
@@ -406,8 +416,7 @@
114
 }
115
 
116
 BOOL _get_chan_id_and_key(const char *stream_key, uint32_t *chan_id, char *key) {
117
-  size_t len;
118
-  int i;
119
+  size_t len, i = 0;
120
   
121
   len = strlen(stream_key);
122
   for (i = 0; i != len; i++) {
123
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/ftl.h -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/ftl.h Changed
105
 
1
@@ -28,10 +28,14 @@
2
 #include <stdint.h>
3
 
4
 #ifdef _WIN32
5
-#  ifdef __FTL_INTERNAL
6
-#    define FTL_API __declspec(dllexport)
7
+#  ifdef FTL_STATIC_COMPILE
8
+#    define FTL_API
9
 #  else
10
-#    define FTL_API __declspec(dllimport)
11
+#    ifdef __FTL_INTERNAL
12
+#      define FTL_API __declspec(dllexport)
13
+#    else
14
+#      define FTL_API __declspec(dllimport)
15
+#    endif
16
 #  endif
17
 #else
18
 #  define FTL_API
19
@@ -174,7 +178,8 @@
20
   FTL_STATUS_VIDEO,
21
   FTL_STATUS_AUDIO,
22
   FTL_STATUS_FRAMES_DROPPED,
23
-  FTL_STATUS_NETWORK
24
+  FTL_STATUS_NETWORK,
25
+  FTL_BITRATE_CHANGED
26
 } ftl_status_types_t;
27
 
28
 typedef enum {
29
@@ -233,16 +238,47 @@
30
   int max_frame_size;
31
 }ftl_video_frame_stats_msg_t;
32
 
33
+typedef enum
34
+{
35
+    FTL_BITRATE_DECREASED,
36
+    FTL_BITRATE_INCREASED,
37
+    FTL_BITRATE_STABILIZED
38
+}ftl_bitrate_changed_type_t;
39
+
40
+typedef enum
41
+{
42
+    FTL_BANDWIDTH_CONSTRAINED,
43
+    FTL_UPGRADE_EXCESSIVE,
44
+    FTL_BANDWIDTH_AVAILABLE,
45
+    FTL_STABILIZE_ON_LOWER_BITRATE,
46
+    FTL_STABILIZE_ON_ORIGINAL_BITRATE,
47
+} ftl_bitrate_changed_reason_t;
48
+
49
+typedef struct
50
+{
51
+    ftl_bitrate_changed_type_t bitrate_changed_type;
52
+    ftl_bitrate_changed_reason_t bitrate_changed_reason;
53
+    uint64_t current_encoding_bitrate;
54
+    uint64_t previous_encoding_bitrate;
55
+    float nacks_to_frames_ratio;
56
+    float avg_rtt;
57
+    uint64_t avg_frames_dropped;
58
+    float queue_fullness;
59
+} ftl_bitrate_changed_msg_t;
60
+
61
 /*status messages*/
62
-typedef struct {
63
-  ftl_status_types_t type;
64
-  union {
65
-    ftl_status_log_msg_t log;
66
-    ftl_status_event_msg_t event;
67
-    ftl_packet_stats_msg_t pkt_stats;
68
-    ftl_packet_stats_instant_msg_t ipkt_stats;
69
-    ftl_video_frame_stats_msg_t video_stats;
70
-  } msg;
71
+typedef struct
72
+{
73
+    ftl_status_types_t type;
74
+    union
75
+    {
76
+        ftl_status_log_msg_t log;
77
+        ftl_status_event_msg_t event;
78
+        ftl_packet_stats_msg_t pkt_stats;
79
+        ftl_packet_stats_instant_msg_t ipkt_stats;
80
+        ftl_video_frame_stats_msg_t video_stats;
81
+        ftl_bitrate_changed_msg_t bitrate_changed_msg;
82
+    } msg;
83
 }ftl_status_msg_t;
84
 
85
 /*!
86
@@ -285,8 +321,16 @@
87
 
88
 FTL_API char* ftl_status_code_to_string(ftl_status_t status);
89
 
90
-FTL_API ftl_status_t find_closest_available_ingest(const char* ingestIps[], int ingestsCount, char* bestIngestIpComputed);
91
+FTL_API ftl_status_t ftl_get_video_stats(ftl_handle_t* handle, uint64_t* frames_sent, uint64_t* nacks_received, uint64_t* rtt_recorded, uint64_t* frames_dropped, float* queue_fullness);
92
+
93
+FTL_API ftl_status_t ftl_adaptive_bitrate_thread(
94
+    ftl_handle_t* ftl_handle,
95
+    void* context,
96
+    int(*change_bitrate_callback)(void*, uint64_t),
97
+    uint64_t initial_encoding_bitrate,
98
+    uint64_t min_encoding_bitrate,
99
+    uint64_t max_encoding_bitrate
100
+);
101
 
102
-FTL_API ftl_status_t ftl_get_video_stats(ftl_handle_t* handle, uint64_t* frames_sent, uint64_t* nacks_received);
103
 
104
 #endif // __FTL_H
105
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/ftl_helpers.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/ftl_helpers.c Changed
60
 
1
@@ -261,34 +261,39 @@
2
   return retval;
3
 }
4
 
5
-ftl_status_t _set_ingest_ip(ftl_stream_configuration_private_t *ftl) {
6
-  char *ingest_ip = NULL;
7
+ftl_status_t _set_ingest_hostname(ftl_stream_configuration_private_t *ftl) {
8
+
9
   ftl_status_t ret_status = FTL_SUCCESS;
10
 
11
   do {
12
-    if (!isdigit(ftl->ingest_hostname[0])) {
13
 #ifndef DISABLE_AUTO_INGEST
14
-      if (strcmp(ftl->ingest_hostname, "auto") == 0) {
15
-        ingest_ip = ingest_find_best(ftl);
16
+      if (strcmp(ftl->param_ingest_hostname, "auto") == 0) {
17
+      ftl->ingest_hostname = ingest_find_best(ftl);
18
       }
19
       else
20
 #endif
21
-      {
22
-        ingest_ip = ingest_get_ip(ftl, ftl->ingest_hostname);
23
-      }
24
+    ftl->ingest_hostname = _strdup(ftl->param_ingest_hostname);
25
+  } while (0);
26
 
27
-      if (ingest_ip == NULL) {
28
-        ret_status = FTL_DNS_FAILURE;
29
-        break;
30
-      }
31
-    }
32
-    else {
33
-      ingest_ip = _strdup(ftl->ingest_hostname);
34
+  return ret_status;
35
+}
36
+
37
+int _get_remote_ip(struct sockaddr *addr, size_t addrlen, char *remote_ip, size_t ip_len) {
38
+  if (addr->sa_family == AF_INET)
39
+  {
40
+    struct sockaddr_in *ipv4_addr = (struct sockaddr_in *)addr;
41
+
42
+    if (inet_ntop(AF_INET, &ipv4_addr->sin_addr.s_addr, remote_ip, ip_len) == NULL) {
43
+      return -1;
44
     }
45
+  }
46
+  else if (addr->sa_family == AF_INET6) {
47
+    struct sockaddr_in6 *ipv6_addr = (struct sockaddr_in6 *)addr;
48
 
49
-    strcpy_s(ftl->ingest_ip, sizeof(ftl->ingest_ip), ingest_ip);
50
-    free(ingest_ip);
51
-  } while (0);
52
+    if (inet_ntop(AF_INET6, &ipv6_addr->sin6_addr.s6_addr, remote_ip, ip_len) == NULL) {
53
+      return -1;
54
+    }
55
+  }
56
 
57
-  return ret_status;
58
+  return 0;
59
 }
60
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/ftl_private.h -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/ftl_private.h Changed
181
 
1
@@ -58,6 +58,8 @@
2
 #define SOCKET_RECV_TIMEOUT_MS 5000
3
 #define SOCKET_SEND_TIMEOUT_MS 1000
4
 #define KEEPALIVE_FREQUENCY_MS 5000
5
+#define KEEPALIVE_SEND_WARN_TOLERANCE_MS 1000
6
+#define STATUS_THREAD_SLEEP_TIME_MS 500
7
 #define MAX_PACKET_BUFFER 1500  //Max length of buffer
8
 #define MAX_MTU 1392
9
 #define FTL_UDP_MEDIA_PORT 8082   //legacy port
10
@@ -71,16 +73,58 @@
11
 #define VIDEO_RTP_TS_CLOCK_HZ 90000
12
 #define AUDIO_SAMPLE_RATE 48000
13
 #define AUDIO_PACKET_DURATION_MS 20
14
-#define IPV4_ADDR_ASCII_LEN INET_ADDRSTRLEN 
15
+#define IPVX_ADDR_ASCII_LEN INET6_ADDRSTRLEN
16
 #define INGEST_LIST_URI "https://mixer.com/api/v1/ingests/best"
17
 #define INGEST_LOAD_PORT 8079
18
 #define INGEST_PING_PORT 8079
19
 #define PEAK_BITRATE_KBPS 10000 /*if not supplied this is the peak from the perspective of the send buffer*/
20
 #define PING_TX_INTERVAL_MS 25
21
-#define SENDER_REPORT_TX_INTERVAL_MS 5000
22
+#define SENDER_REPORT_TX_INTERVAL_MS 1000
23
 #define PING_PTYPE 250
24
 #define SENDER_REPORT_PTYPE 200
25
 
26
+ // Adaptive bitrate constants
27
+
28
+ // If the ratio of nacks received to packets sent is greater than the following value, we request a bitrate downgrade.
29
+#define MIN_NACKS_RECEIVED_TO_PACKETS_SENT_RATIO_FOR_BITRATE_DOWNGRADE 0.1
30
+
31
+ // Duration at which we capture stream stats , i.e frames sent and nacks received
32
+#define STREAM_STATS_CAPTURE_MS 1000
33
+
34
+ // Duration over which we evaluate whether we need to downgrade/upgrade bitrate. Note that we 
35
+ // look at stats over the last c_ulBwCheckDurationMs milliseconds, every c_ulStreamStatsCaptureMs milliseconds.
36
+#define BW_CHECK_DURATION_MS 5000
37
+
38
+ // Interval to wait for bw test after we update bitrate.
39
+#define BITRATE_CHANGED_COOLDOWN_INTERVAL_MS 10000
40
+
41
+ // Percentage to reduce the bitrate to if bandwidth seems too constrained
42
+#define BW_INSUFFICIENT_BITRATE_DOWNGRADE_PERCENTAGE 50
43
+
44
+ // Percentange to reduce the bitrate to if bw upgrade was too excessive
45
+#define REVERT_TO_STABLE_BITRATE_DOWNGRADE_PERCENTAGE 80
46
+
47
+ // Percentage to increase bitrate by if conditions look ideal
48
+#define BW_IDEAL_BITRATE_UPGRADE_BPS 256000;
49
+
50
+ // If ratio of nacks received to packets sent is below the following value bitrate update can be requested
51
+#define MAX_NACKS_RECEIVED_TO_PACKETS_SENT_RATIO_FORBITRATE_UPGRADE 0.01
52
+
53
+ // If bandwidth is constrained within MaxBitrateUpgradeExcessiveSeconds after bitrate update, revert to last stable bitrate.
54
+#define MAX_MS_TO_DEEM_UPGRADE_EXCESSIVE 60000
55
+
56
+#define MAX_AVG_RTT_TO_DEEM_BW_STABLE 100
57
+
58
+#define MAX_QUEUE_FULLNESS_TO_DEEM_BW_STABLE 0.1
59
+
60
+#define MIN_QUEUE_FULLNESS_TO_DEEM_BW_CONSTRAINED 0.3
61
+
62
+#define MIN_AVG_RTT_TO_DEEM_BW_CONSTRAINED 300
63
+ // If bitrate upgrade was excessive we freeze bitrate upgrade for the next c_bitrateUpgradeFreezeTimeMs milliseconds.
64
+#define BITRATE_UPGRADE_FREEZE_TIME_MS 600000 // 10*60*1000
65
+
66
+#define MAX_STAT_SIZE 5
67
+
68
 #ifndef _WIN32
69
 #define strncpy_s(dst, dstsz, src, cnt) strncpy(dst, src, cnt)
70
 #define sprintf_s(buf, bufsz, fmt, ...) sprintf(buf, fmt, __VA_ARGS__)
71
@@ -110,6 +154,7 @@
72
   FTL_TX_THRD = 0x0080,
73
   FTL_DISABLE_TX_PING_PKTS = 0x0100,
74
   FTL_SPEED_TEST = 0x0200,
75
+  FTL_BITRATE_THRD = 0x0400,
76
   FTL_DISCONNECT_IN_PROGRESS = 0x1000,
77
   FTL_DISABLE_TX_SENDER_REPORT = 0x2000
78
 }ftl_state_t;
79
@@ -151,6 +196,7 @@
80
   int first;/*first packet in frame*/
81
   int last; /*last packet in frame*/
82
   OS_MUTEX mutex;
83
+  BOOL isPartOfIframe;
84
 }nack_slot_t;
85
 
86
 typedef struct _ping_pkt_t {
87
@@ -159,13 +205,13 @@
88
 }ping_pkt_t;
89
 
90
 typedef struct _senderReport_pkt_t {
91
-   uint32_t header;
92
-   uint32_t ssrc;
93
-   uint32_t ntpTimestampHigh;
94
-   uint32_t ntpTimestampLow;
95
-   uint32_t rtpTimestamp;
96
-   uint32_t senderPacketCount;
97
-   uint32_t senderOctetCount;
98
+  uint32_t header;
99
+  uint32_t ssrc;
100
+  uint32_t ntpTimestampHigh;
101
+  uint32_t ntpTimestampLow;
102
+  uint32_t rtpTimestamp;
103
+  uint32_t senderPacketCount;
104
+  uint32_t senderOctetCount;
105
 }senderReport_pkt_t;
106
 
107
 typedef struct {
108
@@ -244,7 +290,8 @@
109
 } ftl_video_component_t;
110
 
111
 typedef struct {
112
-  struct sockaddr_in server_addr;
113
+  size_t ingest_addrlen;
114
+  struct sockaddr *ingest_addr;
115
   SOCKET media_socket;
116
   OS_MUTEX mutex;
117
   int assigned_port;
118
@@ -260,19 +307,32 @@
119
 } ftl_media_config_t;
120
 
121
 typedef struct _ftl_ingest_t {
122
-  char name[30];
123
-  char ip[IPV4_ADDR_ASCII_LEN];
124
+  char *name;
125
+  char *ip;
126
+  char *hostname;
127
   int rtt;
128
   struct _ftl_ingest_t *next;
129
 }ftl_ingest_t;
130
 
131
+typedef struct
132
+{
133
+    ftl_handle_t* handle;
134
+    BOOL(*change_bitrate_callback)(void*, uint64_t);
135
+    void* context;
136
+    uint64_t initial_encoding_bitrate;
137
+    uint64_t max_encoding_bitrate;
138
+    uint64_t min_encoding_bitrate;
139
+} ftl_adaptive_bitrate_thread_params_t;
140
+
141
 typedef struct {
142
   SOCKET ingest_socket;
143
   ftl_state_t state;
144
   OS_MUTEX state_mutex;
145
   OS_MUTEX disconnect_mutex;
146
+  char *param_ingest_hostname;
147
   char *ingest_hostname;
148
-  char ingest_ip[IPV4_ADDR_ASCII_LEN];//ipv4 only
149
+  char *ingest_ip;
150
+  short socket_family;
151
   uint32_t channel_id;
152
   char *key;
153
   char hmacBuffer[512];
154
@@ -281,8 +341,10 @@
155
   char vendor_version[20];
156
   OS_THREAD_HANDLE connection_thread;
157
   OS_THREAD_HANDLE keepalive_thread;
158
+  OS_THREAD_HANDLE bitrate_monitor_thread;
159
   OS_SEMAPHORE connection_thread_shutdown;
160
   OS_SEMAPHORE keepalive_thread_shutdown;
161
+  OS_SEMAPHORE bitrate_thread_shutdown;
162
   ftl_media_config_t media;
163
   ftl_audio_component_t audio;
164
   ftl_video_component_t video;
165
@@ -361,13 +423,13 @@
166
 BOOL is_legacy_ingest(ftl_stream_configuration_private_t *ftl);
167
 ftl_status_t dequeue_status_msg(ftl_stream_configuration_private_t *ftl, ftl_status_msg_t *stats_msg, int ms_timeout);
168
 ftl_status_t enqueue_status_msg(ftl_stream_configuration_private_t *ftl, ftl_status_msg_t *stats_msg);
169
-ftl_status_t _set_ingest_ip(ftl_stream_configuration_private_t *ftl);
170
+ftl_status_t _set_ingest_hostname(ftl_stream_configuration_private_t *ftl);
171
+int _get_remote_ip(struct sockaddr *addr, size_t addrlen, char *remote_ip, size_t ip_len);
172
 
173
 ftl_status_t _init_control_connection(ftl_stream_configuration_private_t *ftl);
174
 ftl_status_t _ingest_connect(ftl_stream_configuration_private_t *stream_config);
175
 ftl_status_t _ingest_disconnect(ftl_stream_configuration_private_t *stream_config);
176
 char * ingest_find_best(ftl_stream_configuration_private_t *ftl);
177
-char * ingest_get_ip(ftl_stream_configuration_private_t *ftl, char *host);
178
 void ingest_release(ftl_stream_configuration_private_t *ftl);
179
 
180
 ftl_status_t media_init(ftl_stream_configuration_private_t *ftl);
181
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/gettimeofday/gettimeofday.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/gettimeofday/gettimeofday.c Changed
48
 
1
@@ -26,6 +26,7 @@
2
 * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
3
 */
4
 
5
+#include <stddef.h>
6
 #include "gettimeofday.h"
7
 
8
 #define NSEC_IN_SEC 1000000000
9
@@ -98,10 +99,10 @@
10
   differenceUs = timeval_subtract_to_us(end, start);
11
 
12
   // Get the number of seconds
13
-  result->tv_sec = USEC_TO_SEC(differenceUs);
14
+  result->tv_sec = (long)USEC_TO_SEC(differenceUs);
15
   
16
   // Put the remainder NS into the second value.
17
-  result->tv_usec = differenceUs - SEC_TO_USEC(result->tv_sec);
18
+  result->tv_usec = (long)(differenceUs - SEC_TO_USEC(result->tv_sec));
19
 
20
   /* Return 1 if result is negative. */
21
   return differenceUs < 0;
22
@@ -161,13 +162,20 @@
23
 uint64_t timeval_to_ntp(struct timeval * tv) {
24
   uint64_t ntpts;
25
 
26
-  ntpts = (((uint64_t)tv->tv_sec + 2208988800u) << 32) + ((uint32_t)tv->tv_usec * 4294.967296);
27
+  ntpts = (uint64_t)((((uint64_t)tv->tv_sec + 2208988800u) << 32) + ((uint32_t)tv->tv_usec * 4294.967296));
28
 
29
   return (ntpts);
30
 }
31
 
32
 void us_to_timeval(struct timeval *outputTimeVal, const int64_t inputTimeUs)
33
 {
34
-  outputTimeVal->tv_sec = USEC_TO_SEC(inputTimeUs);
35
-  outputTimeVal->tv_usec = inputTimeUs - SEC_TO_USEC(outputTimeVal->tv_sec);
36
-}
37
\ No newline at end of file
38
+  outputTimeVal->tv_sec = (long)USEC_TO_SEC(inputTimeUs);
39
+  outputTimeVal->tv_usec = (long)(inputTimeUs - SEC_TO_USEC(outputTimeVal->tv_sec));
40
+}
41
+
42
+int64_t get_ms_elapsed_since(struct timeval *tv)
43
+{
44
+    struct timeval now;
45
+    gettimeofday(&now, NULL);
46
+    return timeval_subtract_to_ms(&now, tv);
47
+}
48
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/gettimeofday/gettimeofday.h -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/gettimeofday/gettimeofday.h Changed
8
 
1
@@ -20,5 +20,6 @@
2
 uint64_t timeval_to_us(struct timeval *tv);
3
 uint64_t timeval_to_ntp(struct timeval *tv);
4
 void us_to_timeval(struct timeval *outputTimeVal, const int64_t inputTimeUs);
5
+int64_t get_ms_elapsed_since(struct timeval *tv);
6
 
7
 #endif // __GETTIMEOFDAY_H
8
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/handshake.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/handshake.c Changed
201
 
1
@@ -35,8 +35,6 @@
2
 ftl_status_t _log_response(ftl_stream_configuration_private_t *ftl, int response_code);
3
 
4
 ftl_status_t _init_control_connection(ftl_stream_configuration_private_t *ftl) {
5
-  ftl_response_code_t response_code = FTL_INGEST_RESP_UNKNOWN;
6
-
7
   int err = 0;
8
   SOCKET sock = 0;
9
   struct addrinfo hints;
10
@@ -47,6 +45,8 @@
11
   hints.ai_socktype = SOCK_STREAM;
12
   hints.ai_protocol = 0;
13
 
14
+  char ingest_ip[IPVX_ADDR_ASCII_LEN];
15
+
16
   struct addrinfo* resolved_names = 0;
17
   struct addrinfo* p = 0;
18
 
19
@@ -59,13 +59,13 @@
20
 
21
   snprintf(ingest_port_str, 10, "%d", ingest_port);
22
 
23
-  if ((retval = _set_ingest_ip(ftl)) != FTL_SUCCESS) {
24
+  if ((retval = _set_ingest_hostname(ftl)) != FTL_SUCCESS) {
25
     return retval;
26
   }
27
-
28
-  err = getaddrinfo(ftl->ingest_ip, ingest_port_str, &hints, &resolved_names);
29
+  
30
+  err = getaddrinfo(ftl->ingest_hostname, ingest_port_str, &hints, &resolved_names);
31
   if (err != 0) {
32
-    FTL_LOG(ftl, FTL_LOG_ERROR, "getaddrinfo failed to look up ingest address %s.", ftl->ingest_ip);
33
+    FTL_LOG(ftl, FTL_LOG_ERROR, "getaddrinfo failed to look up ingest address %s.", ftl->ingest_hostname);
34
     FTL_LOG(ftl, FTL_LOG_ERROR, "gai error was: %s", gai_strerror(err));
35
     return FTL_DNS_FAILURE;
36
   }
37
@@ -79,6 +79,22 @@
38
       continue;
39
     }
40
 
41
+  if (p->ai_family == AF_INET) {
42
+    struct sockaddr_in *ipv4_addr = (struct sockaddr_in *)p->ai_addr;
43
+    inet_ntop(p->ai_family, &ipv4_addr->sin_addr, ingest_ip, sizeof(ingest_ip));
44
+  }
45
+  else if (p->ai_family == AF_INET6) {
46
+    struct sockaddr_in6 *ipv6_addr = (struct sockaddr_in6 *)p->ai_addr;
47
+    inet_ntop(p->ai_family, &ipv6_addr->sin6_addr, ingest_ip, sizeof(ingest_ip));
48
+  }
49
+  else {
50
+  continue;
51
+  }
52
+
53
+  FTL_LOG(ftl, FTL_LOG_DEBUG, "Got IP: %s\n", ingest_ip);
54
+  ftl->ingest_ip = _strdup(ingest_ip);
55
+  ftl->socket_family = p->ai_family;
56
+
57
     /* Go for broke */
58
     if (connect(sock, p->ai_addr, (int)p->ai_addrlen) == -1) {
59
       FTL_LOG(ftl, FTL_LOG_DEBUG, "failed to connect on candidate, error: %s", get_socket_error());
60
@@ -120,8 +136,6 @@
61
 
62
 ftl_status_t _ingest_connect(ftl_stream_configuration_private_t *ftl) {
63
   ftl_response_code_t response_code = FTL_INGEST_RESP_UNKNOWN;
64
-
65
-  int err = 0;
66
   char response[MAX_INGEST_COMMAND_LEN];
67
 
68
   if (ftl_get_state(ftl, FTL_CONNECTED)) {
69
@@ -213,12 +227,12 @@
70
 
71
     ftl_set_state(ftl, FTL_CONNECTED);
72
 
73
-    if (os_semaphore_create(&ftl->connection_thread_shutdown, "/ConnectionThreadShutdown", O_CREAT, 0) < 0) {
74
+    if (os_semaphore_create(&ftl->connection_thread_shutdown, "/ConnectionThreadShutdown", O_CREAT, 0, FALSE) < 0) {
75
         response_code = FTL_MALLOC_FAILURE;
76
         break;
77
     }
78
 
79
-    if (os_semaphore_create(&ftl->keepalive_thread_shutdown, "/KeepAliveThreadShutdown", O_CREAT, 0) < 0) {
80
+    if (os_semaphore_create(&ftl->keepalive_thread_shutdown, "/KeepAliveThreadShutdown", O_CREAT, 0, FALSE) < 0) {
81
         response_code = FTL_MALLOC_FAILURE;
82
         break;
83
     }
84
@@ -249,46 +263,54 @@
85
 
86
 ftl_status_t _ingest_disconnect(ftl_stream_configuration_private_t *ftl) {
87
 
88
-  ftl_response_code_t response_code = FTL_INGEST_RESP_UNKNOWN;
89
-  char response[MAX_INGEST_COMMAND_LEN];
90
+    ftl_response_code_t response_code = FTL_INGEST_RESP_UNKNOWN;
91
+    char response[MAX_INGEST_COMMAND_LEN];
92
 
93
-  if (ftl_get_state(ftl, FTL_KEEPALIVE_THRD)) {
94
-    ftl_clear_state(ftl, FTL_KEEPALIVE_THRD);
95
-    os_semaphore_post(&ftl->keepalive_thread_shutdown);
96
-    os_wait_thread(ftl->keepalive_thread);
97
-    os_destroy_thread(ftl->keepalive_thread);
98
-    os_semaphore_delete(&ftl->keepalive_thread_shutdown);
99
-  }
100
+    if (ftl_get_state(ftl, FTL_KEEPALIVE_THRD)) {
101
+        ftl_clear_state(ftl, FTL_KEEPALIVE_THRD);
102
+        os_semaphore_post(&ftl->keepalive_thread_shutdown);
103
+        os_wait_thread(ftl->keepalive_thread);
104
+        os_destroy_thread(ftl->keepalive_thread);
105
+        os_semaphore_delete(&ftl->keepalive_thread_shutdown);
106
+    }
107
 
108
-  if (ftl_get_state(ftl, FTL_CXN_STATUS_THRD)) {
109
-    ftl_clear_state(ftl, FTL_CXN_STATUS_THRD);
110
-    os_semaphore_post(&ftl->connection_thread_shutdown);
111
-    os_wait_thread(ftl->connection_thread);
112
-    os_destroy_thread(ftl->connection_thread);
113
-    os_semaphore_delete(&ftl->connection_thread_shutdown);
114
-  }
115
+    if (ftl_get_state(ftl, FTL_CXN_STATUS_THRD)) {
116
+        ftl_clear_state(ftl, FTL_CXN_STATUS_THRD);
117
+        os_semaphore_post(&ftl->connection_thread_shutdown);
118
+        os_wait_thread(ftl->connection_thread);
119
+        os_destroy_thread(ftl->connection_thread);
120
+        os_semaphore_delete(&ftl->connection_thread_shutdown);
121
+    }
122
 
123
-  if (ftl_get_state(ftl, FTL_CONNECTED)) {
124
+    if (ftl_get_state(ftl, FTL_BITRATE_THRD))
125
+    {
126
+        ftl_clear_state(ftl, FTL_BITRATE_THRD);
127
+        os_semaphore_post(&ftl->bitrate_thread_shutdown);
128
+        os_wait_thread(ftl->bitrate_monitor_thread);
129
+        os_destroy_thread(ftl->bitrate_monitor_thread);
130
+        os_semaphore_delete(&ftl->bitrate_thread_shutdown);
131
+    }
132
 
133
-    ftl_clear_state(ftl, FTL_CONNECTED);
134
+    if (ftl_get_state(ftl, FTL_CONNECTED)) {
135
 
136
-    FTL_LOG(ftl, FTL_LOG_INFO, "light-saber disconnect\n");
137
-    if ((response_code = _ftl_send_command(ftl, FALSE, response, sizeof(response), "DISCONNECT", ftl->channel_id)) != FTL_INGEST_RESP_OK) {
138
-      FTL_LOG(ftl, FTL_LOG_ERROR, "Ingest Disconnect failed with %d (%s)\n", response_code, response);
139
+        ftl_clear_state(ftl, FTL_CONNECTED);
140
+
141
+        FTL_LOG(ftl, FTL_LOG_INFO, "light-saber disconnect\n");
142
+        if ((response_code = _ftl_send_command(ftl, FALSE, response, sizeof(response), "DISCONNECT", ftl->channel_id)) != FTL_INGEST_RESP_OK) {
143
+            FTL_LOG(ftl, FTL_LOG_ERROR, "Ingest Disconnect failed with %d (%s)\n", response_code, response);
144
+        }
145
     }
146
-  }
147
 
148
-  if (ftl->ingest_socket > 0) {
149
-    close_socket(ftl->ingest_socket);
150
-    ftl->ingest_socket = 0;
151
-  }
152
-  
153
-  return FTL_SUCCESS;
154
+    if (ftl->ingest_socket > 0) {
155
+        close_socket(ftl->ingest_socket);
156
+        ftl->ingest_socket = 0;
157
+    }
158
+
159
+    return FTL_SUCCESS;
160
 }
161
 
162
 static ftl_response_code_t _ftl_get_response(ftl_stream_configuration_private_t *ftl, char *response_buf, int response_len){
163
   int len;
164
-  int resp_code = FTL_INGEST_RESP_OK;
165
   memset(response_buf, 0, response_len);
166
   len = recv_all(ftl->ingest_socket, response_buf, response_len, '\n');
167
 
168
@@ -322,7 +344,6 @@
169
 static ftl_response_code_t _ftl_send_command(ftl_stream_configuration_private_t *ftl, BOOL need_response, char *response_buf, int response_len, const char *cmd_fmt, ...) {
170
   int resp_code = FTL_INGEST_RESP_OK;
171
   va_list valist;
172
-  double sum = 0.0;
173
   char *buf = NULL;
174
   int len;
175
   int buflen = MAX_INGEST_COMMAND_LEN * sizeof(char);
176
@@ -376,6 +397,10 @@
177
 {
178
   ftl_stream_configuration_private_t *ftl = (ftl_stream_configuration_private_t *)data;
179
   ftl_response_code_t response_code;
180
+  struct timeval last_send_time, now;
181
+  int64_t ms_since_send = 0;
182
+
183
+  gettimeofday(&last_send_time, NULL);
184
 
185
   while (ftl_get_state(ftl, FTL_KEEPALIVE_THRD)) {
186
     os_semaphore_pend(&ftl->keepalive_thread_shutdown, KEEPALIVE_FREQUENCY_MS);
187
@@ -385,6 +410,16 @@
188
       break;
189
     }
190
 
191
+    // Check how long it has been since we sent a ping last.
192
+    gettimeofday(&now, NULL);
193
+    ms_since_send = timeval_subtract_to_ms(&now, &last_send_time);
194
+    if (ms_since_send > KEEPALIVE_FREQUENCY_MS + KEEPALIVE_SEND_WARN_TOLERANCE_MS)
195
+    {
196
+       FTL_LOG(ftl, FTL_LOG_INFO, "Warning, ping time tolerance warning. Time since last ping %d ms", ms_since_send);
197
+    }
198
+    gettimeofday(&last_send_time, NULL);
199
+
200
+    // Send the ping to ingest now.
201
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/hmac/hmac.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/hmac/hmac.c Changed
26
 
1
@@ -17,7 +17,7 @@
2
   const char * key;
3
   if (keyLen > SHA512_BLOCK_SIZE) {
4
     Sha512Initialise(&ctx);
5
-    Sha512Update(&ctx, (void*)rawKey, keyLen);
6
+    Sha512Update(&ctx, (void*)rawKey, (uint32_t)keyLen);
7
     Sha512Finalise(&ctx, &computedHash);
8
 
9
     key = (const char *)computedHash.bytes;
10
@@ -32,7 +32,7 @@
11
   memset(oKeyPad, O_KEY_PAD, SHA512_BLOCK_SIZE);
12
   memset(iKeyPad, I_KEY_PAD, SHA512_BLOCK_SIZE);
13
 
14
-  int i;
15
+  size_t i = 0;
16
   for(i = 0; i < keyLen; i++) {
17
     oKeyPad[i] ^= key[i];
18
     iKeyPad[i] ^= key[i];
19
@@ -60,4 +60,4 @@
20
   memset(computedHash.bytes, 0, sizeof(computedHash.bytes));
21
 
22
   return SHA512_HEX_STRING_HASH_SIZE;
23
-}
24
\ No newline at end of file
25
+}
26
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/ingest.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/ingest.c Changed
201
 
1
@@ -14,47 +14,63 @@
2
     ftl_stream_configuration_private_t *ftl;
3
 }_tmp_ingest_thread_data_t;
4
 
5
-static int _ping_server(const char *ip, int port) {
6
+static int _ping_server(const char *hostname, int port) {
7
 
8
   SOCKET sock;
9
-  struct sockaddr_in server_addr;
10
-  unsigned char buf[sizeof(struct in_addr)];
11
-  uint8_t dummy[4];
12
+  struct addrinfo hints;
13
+  char dummy[4];
14
   struct timeval start, stop, delta;
15
   int retval = -1;
16
+  struct addrinfo* resolved_names = 0;
17
+  struct addrinfo* p = 0;
18
+  int err = 0;
19
+  int off = 0;
20
+
21
+  memset(&hints, 0, sizeof(hints));
22
+  hints.ai_family = PF_UNSPEC;
23
+  hints.ai_socktype = SOCK_DGRAM;
24
+  hints.ai_protocol = 0;
25
 
26
-  do {
27
-    if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET)
28
-    {
29
-      break;
30
-    }
31
+  int ingest_port = INGEST_PORT;
32
+  char port_str[10];
33
 
34
-    if (inet_pton(AF_INET, ip, buf) == 0) {
35
-      break;
36
-    }
37
+  snprintf(port_str, 10, "%d", port);
38
+  
39
+   err = getaddrinfo(hostname, port_str, &hints, &resolved_names);
40
+  if (err != 0) {
41
+    return FTL_DNS_FAILURE;
42
+  }
43
+  
44
+  do {
45
+    for (p = resolved_names; p != NULL; p = p->ai_next) {
46
+      sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol);
47
+      if (sock == -1) {
48
+        continue;
49
+      }
50
 
51
-    //Prepare the sockaddr_in structure
52
-    server_addr.sin_family = AF_INET;
53
-    memcpy((char *)&server_addr.sin_addr.s_addr, (char *)buf, sizeof(buf));
54
-    server_addr.sin_port = htons(port);
55
+      setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&off, sizeof(off));
56
+      set_socket_recv_timeout(sock, 500);
57
 
58
-    set_socket_recv_timeout(sock, 500);
59
+      gettimeofday(&start, NULL);
60
 
61
-    gettimeofday(&start, NULL);
62
+      if (sendto(sock, dummy, sizeof(dummy), 0, p->ai_addr, (int)p->ai_addrlen) == SOCKET_ERROR) {
63
+        printf("Sendto error: %s\n", get_socket_error());
64
+        break;
65
+      }
66
 
67
-    if (sendto(sock, dummy, sizeof(dummy), 0, (struct sockaddr*) &server_addr, sizeof(struct sockaddr_in)) == SOCKET_ERROR) {
68
-      break;
69
-    }
70
+      if (recv(sock, dummy, sizeof(dummy), 0) < 0) {
71
+        break;
72
+      }
73
 
74
-    if (recv(sock, dummy, sizeof(dummy), 0) < 0) {
75
-      break;
76
+      gettimeofday(&stop, NULL);
77
+      timeval_subtract(&delta, &stop, &start);
78
+      retval = (int)timeval_to_ms(&delta);
79
     }
80
-
81
-    gettimeofday(&stop, NULL);
82
-    timeval_subtract(&delta, &stop, &start);
83
-    retval = (int)timeval_to_ms(&delta);
84
   } while (0);
85
 
86
+  /* Free the resolved name struct */
87
+  freeaddrinfo(resolved_names);
88
+
89
   shutdown_socket(sock, SD_BOTH);
90
   close_socket(sock);
91
 
92
@@ -69,92 +85,13 @@
93
 
94
     ingest->rtt = 1000;
95
 
96
-    if ((ping = _ping_server(ingest->ip, INGEST_PING_PORT)) >= 0) {
97
+    if ((ping = _ping_server(ingest->hostname, INGEST_PING_PORT)) >= 0) {
98
         ingest->rtt = ping;
99
     }
100
 
101
     return 0;
102
 }
103
 
104
-ftl_status_t find_closest_available_ingest(const char* ingestIps[], int ingestsCount, char* bestIngestIpComputed)
105
-{
106
-    ftl_ingest_t* ingestElements;
107
-    int i;
108
-
109
-    if ((ingestElements = malloc(sizeof(ftl_ingest_t) * ingestsCount)) == NULL) {
110
-        return FTL_MALLOC_FAILURE;
111
-    }
112
-
113
-    for (i =0; i < ingestsCount; i++) {
114
-        strcpy_s(ingestElements[i].ip, sizeof(ingestElements[i].ip), ingestIps[i]);
115
-        ingestElements[i].rtt = 1000;
116
-        ingestElements[i].next = NULL;
117
-    }
118
-
119
-    OS_THREAD_HANDLE *handles;
120
-    _tmp_ingest_thread_data_t *data;
121
-
122
-    ftl_ingest_t *elmt, *best = NULL;
123
-    struct timeval start, stop, delta;
124
-
125
-    if ((handles = (OS_THREAD_HANDLE *)malloc(sizeof(OS_THREAD_HANDLE) * ingestsCount)) == NULL) {
126
-        free(ingestElements);
127
-        return FTL_MALLOC_FAILURE;
128
-    }
129
-
130
-    if ((data = (_tmp_ingest_thread_data_t *)malloc(sizeof(_tmp_ingest_thread_data_t) * ingestsCount)) == NULL) {
131
-        free(ingestElements);
132
-        free(handles);
133
-        return FTL_MALLOC_FAILURE;
134
-    }
135
-
136
-    gettimeofday(&start, NULL);
137
-
138
-    /*query all the ingests about cpu and rtt*/
139
-    for (i = 0; i < ingestsCount; i++) {
140
-        handles[i] = 0;
141
-        data[i].ingest = &ingestElements[i];
142
-        data[i].ftl = NULL;
143
-        os_create_thread(&handles[i], NULL, _ingest_get_rtt, &data[i]);
144
-        sleep_ms(5); //space out the pings
145
-    }
146
-
147
-    /*wait for all the ingests to complete*/
148
-    for (i = 0; i < ingestsCount; i++) {
149
-
150
-        if (handles[i] != 0) {
151
-            os_wait_thread(handles[i]);
152
-        }
153
-
154
-        if (best == NULL || ingestElements[i].rtt < best->rtt) {
155
-            best = &ingestElements[i];
156
-        }
157
-    }
158
-
159
-    gettimeofday(&stop, NULL);
160
-    timeval_subtract(&delta, &stop, &start);
161
-    int ms = (int)timeval_to_ms(&delta);
162
-
163
-    for (i = 0; i < ingestsCount; i++) {
164
-        if (handles[i] != 0) {
165
-            os_destroy_thread(handles[i]);
166
-        }
167
-    }
168
-
169
-    free(handles);
170
-    free(data);
171
-
172
-    if (best) {
173
-        strcpy_s(bestIngestIpComputed, sizeof(best->ip), best->ip);
174
-        free(ingestElements);
175
-        return FTL_SUCCESS;
176
-    }
177
-
178
-    free(ingestElements);
179
-
180
-    return FTL_UNKNOWN_ERROR_CODE;
181
-}
182
-
183
 #ifndef DISABLE_AUTO_INGEST
184
 OS_THREAD_ROUTINE _ingest_get_hosts(ftl_stream_configuration_private_t *ftl);
185
 
186
@@ -218,9 +155,11 @@
187
   size_t size = json_array_size(ingests);
188
 
189
   for (i = 0; i < size; i++) {
190
-    const char *name, *ip;
191
+    char *name = NULL, *ip=NULL, *hostname=NULL;
192
     ingest_item = json_array_get(ingests, i);
193
-    json_unpack(ingest_item, "{s:s, s:s}", "name", &name, "ip", &ip);
194
+  if (json_unpack(ingest_item, "{s:s, s:s, s:s}", "name", &name, "ip", &ip, "hostname", &hostname) < 0) {
195
+    continue;
196
+  }
197
 
198
     ftl_ingest_t *ingest_elmt;
199
 
200
@@ -228,8 +167,10 @@
201
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/media.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/media.c Changed
201
 
1
@@ -1,5 +1,7 @@
2
+#define __FTL_INTERNAL
3
 #include "ftl.h"
4
 #include "ftl_private.h"
5
+#include <assert.h>
6
 
7
 #define MAX_RTT_FACTOR 1.3
8
 #define USEC_IN_SEC 1000000
9
@@ -8,6 +10,7 @@
10
 OS_THREAD_ROUTINE audio_send_thread(void *data);
11
 OS_THREAD_ROUTINE recv_thread(void *data);
12
 OS_THREAD_ROUTINE ping_thread(void *data);
13
+OS_THREAD_ROUTINE adaptive_bitrate_thread(void* data);
14
 ftl_status_t _internal_media_destroy(ftl_stream_configuration_private_t *ftl);
15
 static int _nack_init(ftl_media_component_common_t *media);
16
 static int _nack_destroy(ftl_media_component_common_t *media);
17
@@ -28,10 +31,70 @@
18
 static int _send_video_stats(ftl_stream_configuration_private_t *ftl, ftl_media_component_common_t *mc, int interval_ms);
19
 static int _send_instant_pkt_stats(ftl_stream_configuration_private_t *ftl, ftl_media_component_common_t *mc, int interval_ms);
20
 
21
+size_t ingest_addrlen;
22
+struct sockaddr *ingest_addr;
23
+
24
+ftl_status_t _get_addr_info(short family, char *ip, short port, struct sockaddr **addr, size_t *addrlen) {
25
+
26
+  ftl_status_t retval = FTL_SUCCESS;
27
+
28
+    do {
29
+      if (family == AF_INET) {
30
+        struct sockaddr_in *ipv4_addr = NULL;
31
+        size_t len;
32
+
33
+        len = sizeof(struct sockaddr_in);
34
+
35
+        if ((ipv4_addr = malloc(len)) == NULL) {
36
+          retval = FTL_MALLOC_FAILURE;
37
+          break;
38
+        }
39
+
40
+        memset(ipv4_addr, 0, len);
41
+
42
+        ipv4_addr->sin_family = family;
43
+        ipv4_addr->sin_port = htons(port);
44
+
45
+        if (inet_pton(family, ip, &ipv4_addr->sin_addr) != 1) {
46
+          retval = FTL_DNS_FAILURE;
47
+          break;
48
+        }
49
+
50
+        *addrlen = len;
51
+        *addr = (struct sockaddr *)ipv4_addr;
52
+      }
53
+      else if (family == AF_INET6) {
54
+        struct sockaddr_in6 *ipv6_addr = NULL;
55
+        size_t len;
56
+
57
+        len = sizeof(struct sockaddr_in6);
58
+
59
+        if ((ipv6_addr = malloc(len)) == NULL) {
60
+                retval = FTL_MALLOC_FAILURE;
61
+                break;
62
+        }
63
+
64
+        memset(ipv6_addr, 0, len);
65
+
66
+        ipv6_addr->sin6_family = family;
67
+        ipv6_addr->sin6_port = htons(port);
68
+
69
+        if (inet_pton(family, ip, &ipv6_addr->sin6_addr) != 1) {
70
+                retval = FTL_DNS_FAILURE;
71
+                break;
72
+        }
73
+
74
+        *addrlen = len;
75
+        *addr = (struct sockaddr *)ipv6_addr;
76
+      }
77
+  }
78
+  while (0);
79
+  return retval;
80
+}
81
+
82
 ftl_status_t media_init(ftl_stream_configuration_private_t *ftl) {
83
 
84
   ftl_media_config_t *media = &ftl->media;
85
-  unsigned char buf[sizeof(struct in_addr)];
86
   ftl_status_t status = FTL_SUCCESS;
87
   int idx;
88
 
89
@@ -44,27 +107,16 @@
90
     os_init_mutex(&ftl->video.mutex);
91
     os_init_mutex(&ftl->audio.mutex);
92
 
93
-    //Create a socket
94
-    if ((media->media_socket = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET)
95
-    {
96
-      FTL_LOG(ftl, FTL_LOG_ERROR, "Could not create socket : %s", get_socket_error());
97
-      status = FTL_INTERNAL_ERROR;
98
-      break;
99
+    //use the same socket family as the control connection
100
+    media->media_socket = socket(ftl->socket_family, SOCK_DGRAM, IPPROTO_UDP);
101
+    if (media->media_socket == -1) {
102
+            return FTL_DNS_FAILURE;
103
     }
104
 
105
-    set_socket_send_buf(media->media_socket, 2048);
106
-
107
-    FTL_LOG(ftl, FTL_LOG_INFO, "Socket created\n");
108
-
109
-    if (inet_pton(AF_INET, ftl->ingest_ip, buf) == 0) {
110
-      break;
111
+    if ((status = _get_addr_info(ftl->socket_family, ftl->ingest_ip, media->assigned_port, &media->ingest_addr, &media->ingest_addrlen)) != FTL_SUCCESS) {
112
+            return status;
113
     }
114
 
115
-    //Prepare the sockaddr_in structure
116
-    media->server_addr.sin_family = AF_INET;
117
-    memcpy((char *)&media->server_addr.sin_addr.s_addr, (char *)buf, sizeof(buf));
118
-    media->server_addr.sin_port = htons(media->assigned_port);
119
-
120
     media->max_mtu = MAX_MTU;
121
     gettimeofday(&media->stats_tv, NULL);
122
     media->sender_report_base_ntp.tv_usec = 0;
123
@@ -110,12 +162,12 @@
124
       break;
125
     }
126
 
127
-    if (os_semaphore_create(&ftl->video.media_component.pkt_ready, "/VideoPkt", O_CREAT, 0) < 0) {
128
+    if (os_semaphore_create(&ftl->video.media_component.pkt_ready, "/VideoPkt", O_CREAT, 0, FALSE) < 0) {
129
       status = FTL_MALLOC_FAILURE;
130
       break;
131
     }
132
 
133
-    if (os_semaphore_create(&ftl->audio.media_component.pkt_ready, "/AudioPkt", O_CREAT, 0) < 0) {
134
+    if (os_semaphore_create(&ftl->audio.media_component.pkt_ready, "/AudioPkt", O_CREAT, 0, FALSE) < 0) {
135
         status = FTL_MALLOC_FAILURE;
136
         break;
137
     }
138
@@ -138,7 +190,7 @@
139
         break;
140
     }
141
 
142
-    if (os_semaphore_create(&media->ping_thread_shutdown, "/PingThreadShutdown", O_CREAT, 0) < 0) {
143
+    if (os_semaphore_create(&media->ping_thread_shutdown, "/PingThreadShutdown", O_CREAT, 0, FALSE) < 0) {
144
       status = FTL_MALLOC_FAILURE;
145
       break;
146
     }
147
@@ -217,6 +269,9 @@
148
       shutdown_socket(media->media_socket, SD_BOTH);
149
       close_socket(media->media_socket);
150
       media->media_socket = INVALID_SOCKET;
151
+      if (media->ingest_addr) {
152
+        free(media->ingest_addr);
153
+      }
154
     }
155
     os_unlock_mutex(&media->mutex);
156
   }
157
@@ -278,6 +333,7 @@
158
 
159
     slot->len = 0;
160
     slot->sn = -1;
161
+    slot->isPartOfIframe = 0;
162
   }
163
 
164
   os_init_mutex(&media->nack_slots_lock);
165
@@ -487,7 +543,7 @@
166
 
167
     float adjusted_bytes_sent = (float)total_sent * (1.f - pkt_loss_percent);
168
     int64_t actual_send_time = total_ms + final_rtt - initial_rtt;
169
-    effective_kbps = (int)(adjusted_bytes_sent * 8.f * 1000.f / (float)actual_send_time) / 1000.f;
170
+    effective_kbps = (int)(((float)adjusted_bytes_sent * 8.f * 1000.f / (float)actual_send_time) / 1000.f);
171
 
172
     results->pkts_sent = (int)pkts_sent;
173
     results->nack_requests = (int)lost_pkts;
174
@@ -655,7 +711,7 @@
175
           }
176
           os_unlock_mutex(&ftl->video.mutex);
177
           return bytes_queued;
178
-        }
179
+        }       
180
 
181
         os_lock_mutex(&slot->mutex);
182
 
183
@@ -682,6 +738,7 @@
184
         slot->len = pkt_len;
185
         slot->sn = sn;
186
         gettimeofday(&slot->insert_time, NULL);
187
+        slot->isPartOfIframe = nalu_type == H264_NALU_TYPE_IDR;
188
 
189
         os_unlock_mutex(&slot->mutex);
190
         os_semaphore_post(&mc->pkt_ready);
191
@@ -781,13 +838,19 @@
192
 static int _media_send_slot(ftl_stream_configuration_private_t *ftl, nack_slot_t *slot) {
193
   int tx_len;
194
 
195
+  uint8_t pkt[MAX_PACKET_BUFFER];
196
+  int pkt_len;
197
+
198
   os_lock_mutex(&ftl->media.mutex);
199
-  if ((tx_len = sendto(ftl->media.media_socket, slot->packet, slot->len, 0, (struct sockaddr*) &ftl->media.server_addr, sizeof(struct sockaddr_in))) == SOCKET_ERROR)
200
+  memcpy(pkt, slot->packet, slot->len);
201
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/posix/socket.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/posix/socket.c Changed
20
 
1
@@ -28,6 +28,7 @@
2
 #include <string.h>
3
 #include <unistd.h>
4
 #include <sys/socket.h>
5
+#include <sys/ioctl.h>
6
 #include <errno.h>
7
 #include <poll.h>
8
 
9
@@ -85,6 +86,10 @@
10
   return setsockopt(socket, SOL_SOCKET, SO_SNDBUF, (char*)&buffer_space, sizeof(buffer_space));
11
 }
12
 
13
+int get_socket_bytes_available(SOCKET socket, unsigned long *bytes_available) {
14
+  return ioctl(socket, FIONREAD, bytes_available);
15
+}
16
+
17
 int poll_socket_for_receive(SOCKET socket, int timeoutMs)
18
 {
19
   // timeoutMs behavior
20
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/posix/socket.h -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/posix/socket.h Changed
7
 
1
@@ -13,4 +13,5 @@
2
 int get_socket_send_buf(SOCKET socket, int *buffer_space);
3
 int set_socket_send_buf(SOCKET socket, int buffer_space);
4
 int poll_socket_for_receive(SOCKET socket, int ms_timeout);
5
+int get_socket_bytes_available(SOCKET socket, unsigned long *bytes_available);
6
 int shutdown_socket(SOCKET sock, int how);
7
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/posix/threads.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/posix/threads.c Changed
78
 
1
@@ -66,29 +66,62 @@
2
   return 0;
3
 }
4
 
5
-int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value) {
6
+int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value, BOOL is_global) {
7
 
8
-  if ((sem->name = strdup(name)) == NULL) {
9
-    return -1;
10
-  }
11
+  int retval = 0;
12
 
13
-  if (name == NULL || name[0] != '/') {
14
-    return -2;
15
-  }
16
+  sem->name = NULL;
17
+  sem->sem = NULL;
18
+
19
+  do {
20
+    if (name == NULL || name[0] != '/') {
21
+      retval = -1;
22
+      break;
23
+    }
24
+
25
+    //if the semaphore is intended to only be used by the same process and not across processes, give it unique name
26
+    if(!is_global) {
27
+      int name_len = strlen(name);
28
+
29
+      if ((sem->name = (char*)malloc( (name_len + 20) * sizeof(char))) == NULL) {
30
+        retval = -2;
31
+        break;
32
+      }
33
+
34
+      sprintf(sem->name, "%s_%d", name, (unsigned int)rand());
35
+    }
36
+    else {
37
+      if ((sem->name = strdup(name)) == NULL) {
38
+        return -2;
39
+      }
40
+    }
41
 
42
 #ifdef __ANDROID__
43
-  if ((sem->sem = (sem_t*)malloc(sizeof(sem_t))) == NULL) {
44
-    return -4;
45
-  }
46
+    if ((sem->sem = (sem_t*)malloc(sizeof(sem_t))) == NULL) {
47
+      retval = -4;
48
+      break;
49
+    }
50
 
51
-  if (sem_init(sem->sem, 0 /* pshared */, 0 /* value */)) {
52
+    if (sem_init(sem->sem, 0 /* pshared */, 0 /* value */)) {
53
 #else
54
-  if ((sem->sem = sem_open(name, oflag, 0644, value)) == SEM_FAILED) {
55
+    if ((sem->sem = sem_open(sem->name, oflag, 0644, value)) == SEM_FAILED) {
56
 #endif
57
-    return -3;
58
+      retval = -3;
59
+      break;
60
+    }
61
+
62
+    return retval;
63
+  }while(0);
64
+
65
+  if(sem->name != NULL){
66
+    free(sem->name);
67
   }
68
 
69
-  return 0;
70
+  if(sem->sem != NULL){
71
+    free(sem->sem);
72
+  }
73
+
74
+  return retval;
75
 }
76
 
77
 int os_semaphore_pend(OS_SEMAPHORE *sem, int ms_timeout) {
78
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/posix/threads.h -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/posix/threads.h Changed
18
 
1
@@ -23,6 +23,7 @@
2
 **/
3
 
4
 #include <stdbool.h>
5
+#include <stdio.h>
6
 #include <pthread.h>
7
 #include <semaphore.h>
8
 #include <fcntl.h>
9
@@ -58,7 +59,7 @@
10
 int os_unlock_mutex(OS_MUTEX *mutex);
11
 int os_delete_mutex(OS_MUTEX *mutex);
12
 
13
-int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value);
14
+int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value, BOOL is_global);
15
 int os_semaphore_pend(OS_SEMAPHORE *sem, int ms_timeout);
16
 int os_semaphore_post(OS_SEMAPHORE *sem);
17
 int os_semaphore_delete(OS_SEMAPHORE *sem);
18
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/win32/socket.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/win32/socket.c Changed
12
 
1
@@ -77,6 +77,10 @@
2
   return setsockopt(socket, SOL_SOCKET, SO_SNDBUF, (char*)&buffer_space, sizeof(buffer_space));
3
 }
4
 
5
+int get_socket_bytes_available(SOCKET socket, unsigned long *bytes_available) {
6
+  return ioctlsocket(socket, FIONREAD, bytes_available);
7
+}
8
+
9
 int poll_socket_for_receive(SOCKET socket, int timeoutMs)
10
 {
11
   // timeoutMs behavior
12
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/win32/socket.h -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/win32/socket.h Changed
7
 
1
@@ -7,4 +7,5 @@
2
 int get_socket_send_buf(SOCKET socket, int *buffer_space);
3
 int set_socket_send_buf(SOCKET socket, int buffer_space);
4
 int poll_socket_for_receive(SOCKET socket, int ms_timeout);
5
+int get_socket_bytes_available(SOCKET socket, unsigned long *bytes_available);
6
 int shutdown_socket(SOCKET sock, int how);
7
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/win32/threads.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/win32/threads.c Changed
71
 
1
@@ -22,6 +22,7 @@
2
 * SOFTWARE.
3
 **/
4
 
5
+#include <stdlib.h>
6
 #include "threads.h"
7
 
8
 int os_init(){
9
@@ -86,22 +87,47 @@
10
   return 0;
11
 }
12
 
13
-char tmp[1024];
14
-
15
-int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value) {
16
-
17
-  if (name == NULL) {
18
-    return -1;
19
-  }
20
-
21
-  if ( (*sem = CreateSemaphore(NULL, value, MAX_SEM_COUNT, name)) == NULL){
22
-
23
-    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), 0, (LPTSTR)&tmp, 1000, NULL);
24
-
25
-    return -3;
26
+int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value, BOOL is_global) {
27
+
28
+  char *internal_name = NULL;
29
+  int retval = 0;
30
+
31
+  do {
32
+    if (name == NULL) {
33
+      retval = -1;
34
+      break;
35
+    }
36
+
37
+    //if the semaphore is intended to only be used by the same process and not across processes, give it unique name
38
+    if(!is_global) {
39
+      size_t name_len = strlen(name);
40
+      size_t max_name = name_len + 20;
41
+
42
+      if ((internal_name = (char*)malloc(max_name * sizeof(char))) == NULL) {
43
+        retval = -2;
44
+        break;
45
+      }
46
+
47
+      sprintf_s(internal_name, max_name, "%s_%d", name, (unsigned int)rand());
48
+    }
49
+    else {
50
+      if ((internal_name = _strdup(name)) == NULL) {
51
+        retval = -2;
52
+        break;
53
+      }
54
+    }  
55
+
56
+    if ( (*sem = CreateSemaphoreA(NULL, value, MAX_SEM_COUNT, (LPCSTR)internal_name)) == NULL){
57
+      retval = -3;
58
+      break;
59
+    }
60
+  }while(0);
61
+
62
+  if(internal_name != NULL){
63
+    free(internal_name);
64
   }
65
 
66
-  return 0;
67
+  return retval;
68
 }
69
 
70
 int os_semaphore_pend(OS_SEMAPHORE *sem, int ms_timeout) {
71
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/win32/threads.h -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-sdk/libftl/win32/threads.h Changed
18
 
1
@@ -23,6 +23,7 @@
2
 **/
3
 
4
 #include <Windows.h>
5
+#include <stdio.h>
6
 
7
 typedef CRITICAL_SECTION OS_MUTEX;
8
 
9
@@ -51,7 +52,7 @@
10
 int os_unlock_mutex(OS_MUTEX *mutex);
11
 int os_delete_mutex(OS_MUTEX *mutex);
12
 
13
-int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value);
14
+int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value, BOOL is_global);
15
 int os_semaphore_pend(OS_SEMAPHORE *sem, int ms_timeout);
16
 int os_semaphore_post(OS_SEMAPHORE *sem);
17
 int os_semaphore_delete(OS_SEMAPHORE *sem);
18
obs-studio-21.0.3.tar.xz/plugins/obs-outputs/ftl-stream.c -> obs-studio-21.1.2.tar.xz/plugins/obs-outputs/ftl-stream.c Changed
28
 
1
@@ -930,7 +930,7 @@
2
                    p->nack_reqs -stream->last_nack_count;
3
            stream->last_nack_count = p->nack_reqs;
4
 
5
-           int log_level = p->nack_reqs > 2 ? LOG_INFO : LOG_DEBUG;
6
+           int log_level = p->nack_reqs > 0 ? LOG_INFO : LOG_DEBUG;
7
 
8
            blog(log_level, "Avg packet send per second %3.1f, "
9
                    "total nack requests %d",
10
@@ -941,7 +941,7 @@
11
            ftl_packet_stats_instant_msg_t *p =
12
                &status.msg.ipkt_stats;
13
 
14
-           int log_level = p->avg_rtt > 200 ? LOG_INFO : LOG_DEBUG;
15
+           int log_level = p->avg_rtt > 20 ? LOG_INFO : LOG_DEBUG;
16
 
17
            blog(log_level, "avg transmit delay %dms "
18
                    "(min: %d, max: %d), "
19
@@ -954,7 +954,7 @@
20
            ftl_video_frame_stats_msg_t *v =
21
                &status.msg.video_stats;
22
 
23
-           int log_level = v->queue_fullness > 5 ?
24
+           int log_level = v->queue_fullness > 0 ?
25
                LOG_INFO : LOG_DEBUG;
26
 
27
            blog(log_level, "Queue an average of %3.2f fps "
28
obs-studio-21.1.2.tar.xz/plugins/obs-qsv11/data/locale/fil-PH.ini Added
14
 
1
@@ -0,0 +1,12 @@
2
+TargetUsage="Paggamit ng Target"
3
+Bitrate="Bitreyt"
4
+MaxBitrate="Malakas na Bitreyt"
5
+RateControl="Pagkontrol ng rate"
6
+KeyframeIntervalSec="Pagitan ng Keyframe (segundo, 0=awto)"
7
+Profile="Anyo sa tagiliran"
8
+AsyncDepth="Lalim ng Async"
9
+Accuracy="Katumapakan"
10
+Convergence="Tagpo"
11
+ICQQuality="Kalidad ng ICQ"
12
+LookAheadDepth="Tignan mo ang nasa unahan ng Malalim"
13
+
14
obs-studio-21.1.2.tar.xz/plugins/obs-qsv11/data/locale/tl-PH.ini Added
14
 
1
@@ -0,0 +1,12 @@
2
+TargetUsage="Ang Target ng Usage"
3
+Bitrate="Bitrate"
4
+MaxBitrate="Pinakamataas na bitrate"
5
+RateControl="Ang Rate Kontrol"
6
+KeyframeIntervalSec="Ang Keyframe Interval (segundos, 0=awtomatik)"
7
+Profile="Ang Profile"
8
+AsyncDepth="Async Depth"
9
+Accuracy="Kahusayan"
10
+Convergence="Patagpo"
11
+ICQQuality="Kalidad ng ICQ"
12
+LookAheadDepth="Lalim ng Lookahead"
13
+
14
obs-studio-21.1.2.tar.xz/plugins/obs-text/data/locale/fil-PH.ini Added
36
 
1
@@ -0,0 +1,34 @@
2
+TextGDIPlus="Teksto (GDI+)"
3
+Font="Benditahan"
4
+Text="Teksto"
5
+ReadFromFile="Basahin galing sa file"
6
+TextFile="Tekstong file (UTF-8)"
7
+Filter.TextFiles="Teksto ng mga file"
8
+Filter.AllFiles="Ang lahat ng mga file"
9
+Color="Kulay"
10
+Opacity="Kalabuan"
11
+Gradient="Mapagmahal"
12
+Gradient.Color="Mapagmahal na Kulay"
13
+Gradient.Opacity="Mapagmahal na kalabuan"
14
+Gradient.Direction="Mapagmahal na Direksyon"
15
+BkColor="Panglikuran na Kulay"
16
+BkOpacity="Panglikuran na Kalabuan"
17
+Alignment="Pagkakahanay"
18
+Alignment.Left="Kaliwa"
19
+Alignment.Center="Gitna"
20
+Alignment.Right="Kanan"
21
+Vertical="Patayo"
22
+VerticalAlignment="Patayong Pagkakahanay"
23
+VerticalAlignment.Top="Nangunguna"
24
+VerticalAlignment.Bottom="Pinakailalim"
25
+Outline="Balangkas"
26
+Outline.Size="Balangkas na Sukat"
27
+Outline.Color="Balangkas na kulay"
28
+Outline.Opacity="Balangkas ng kalabuan"
29
+ChatlogMode="Chatlag Mowd"
30
+ChatlogMode.Lines="Linya ng limitasyon sa Chatlog"
31
+UseCustomExtents="Gamitin ang Pasadyang Nakakalawak na Teksto"
32
+UseCustomExtents.Wrap="Ibalot"
33
+Width="Lapad"
34
+Height="Taas"
35
+
36
obs-studio-21.1.2.tar.xz/plugins/obs-text/data/locale/tl-PH.ini Added
36
 
1
@@ -0,0 +1,34 @@
2
+TextGDIPlus="Teksto (GDI+)"
3
+Font="AngFont"
4
+Text="Teksto"
5
+ReadFromFile="Magbasa mula sa file"
6
+TextFile="Teksto File (UTF-8)"
7
+Filter.TextFiles="Teksto ng mgaFiles"
8
+Filter.AllFiles="Lahat ng mga Files"
9
+Color="Kulay"
10
+Opacity="Opacity"
11
+Gradient="Gradient"
12
+Gradient.Color="Gradient na Kulay"
13
+Gradient.Opacity="Gradient na Opacity"
14
+Gradient.Direction="Gradient na Direksyon"
15
+BkColor="Kulay sa Background"
16
+BkOpacity="Backround na Opacity"
17
+Alignment="Amgpagka-align"
18
+Alignment.Left="Kaliwa"
19
+Alignment.Center="Gitna"
20
+Alignment.Right="Kanan"
21
+Vertical="Patayo"
22
+VerticalAlignment="Patayo ang Pagka-align"
23
+VerticalAlignment.Top="Taas"
24
+VerticalAlignment.Bottom="Baba"
25
+Outline="Ang Outline"
26
+Outline.Size="Ang laki ng Outline"
27
+Outline.Color="Ang Kulay ng Outline"
28
+Outline.Opacity="Ang Outline Opacity"
29
+ChatlogMode="Modo ng Chatlog"
30
+ChatlogMode.Lines="Limitasyon ng linya sa Chatlog"
31
+UseCustomExtents="Gumamit ng Custom na Teksto sa Extents"
32
+UseCustomExtents.Wrap="Wrap"
33
+Width="Ang lapad"
34
+Height="Ang Taas"
35
+
36
obs-studio-21.1.2.tar.xz/plugins/obs-transitions/data/locale/fil-PH.ini Added
68
 
1
@@ -0,0 +1,66 @@
2
+FadeTransition="Kumupas"
3
+CutTransition="Gumupit"
4
+SwipeTransition="Nakawin"
5
+SlideTransition="Magpadulas"
6
+StingerTransition="Tibo"
7
+FadeToColorTransition="Paglabong sagad sa kulay"
8
+Direction="Direksyon"
9
+Direction.Left="Kaliwa"
10
+Direction.Right="Kanan"
11
+Direction.Up="Pataas"
12
+Direction.Down="Pababa"
13
+SwipeIn="Mag-swipe In"
14
+Color="Kulay"
15
+VideoFile="Bidyo File"
16
+TransitionPoint="Paglipat ng tuldok (milsegundo)"
17
+TransitionPointFrame="Paglipat ng Punto (preym)"
18
+TransitionPointType="Paglipat ng Uri ng Punto"
19
+TransitionPointTypeFrame="Preym"
20
+TransitionPointTypeTime="Oras (milsegundo)"
21
+AudioFadeStyle="Lumabo ang Estilo ng Awdiyo"
22
+AudioFadeStyle.FadeOutFadeIn="Lumalabo sa paglipat ng punto pagkatapos maglabo"
23
+AudioFadeStyle.CrossFade="Kruspeyd"
24
+SwitchPoint="Tugatok ng Kulay ng Punto (porsyento)"
25
+LumaWipeTransition="Pamunas na Luma"
26
+LumaWipe.Image="Larawan"
27
+LumaWipe.Invert="Baliktarin"
28
+LumaWipe.Softness="Lambot"
29
+LumaWipe.Type.BarndoorBottomLeft="Kamalig na pinto sa Kailaliman ng Kaliwa"
30
+LumaWipe.Type.BarndoorHorizontal="Kamalig na pintong Pahalang"
31
+LumaWipe.Type.BarndoorTopLeft="Kamalig na pinto sa Taas ng kaliwa"
32
+LumaWipe.Type.BarndoorVertical="Kamalig na pintong Patayo"
33
+LumaWipe.Type.BlindsHorizontal="Mga blind na Pahalang"
34
+LumaWipe.Type.BoxBottomLeft="Kahon sa Kailaliman ng Kaliwa"
35
+LumaWipe.Type.BoxBottomRight="Kahon sa Kailaliman ng Kanan"
36
+LumaWipe.Type.BoxTopLeft="Kahon sa tuktok ng kaliwang bahagi"
37
+LumaWipe.Type.BoxTopRight="Kahon sa Tuktok ng Kanang bahagi"
38
+LumaWipe.Type.Burst="Pagputok"
39
+LumaWipe.Type.CheckerboardSmall="Damahang maliit"
40
+LumaWipe.Type.Circles="Mga lupon"
41
+LumaWipe.Type.Clock="Orasan"
42
+LumaWipe.Type.Cloud="Ulap"
43
+LumaWipe.Type.Curtain="Kurtina"
44
+LumaWipe.Type.Fan="Pamaypay"
45
+LumaWipe.Type.Fractal="Fraktal"
46
+LumaWipe.Type.Iris="Ayris"
47
+LumaWipe.Type.LinearHorizontal="Sa guhit na Pahalang"
48
+LumaWipe.Type.LinearTopLeft="Guhit sa Kaliwang tuktok"
49
+LumaWipe.Type.LinearTopRight="Guhit sa kanang tuktok"
50
+LumaWipe.Type.LinearVertical="Sa guhit na patayo"
51
+LumaWipe.Type.ParallelZigzagHorizontal="Nakahirelang Palikong Pahalang"
52
+LumaWipe.Type.ParallelZigzagVertical="Pahirelang Palikong Patayo"
53
+LumaWipe.Type.Sinus9="Sinus na 9"
54
+LumaWipe.Type.Spiral="Pilipit"
55
+LumaWipe.Type.Square="Kuwadrado"
56
+LumaWipe.Type.Squares="Mga kuwadrado"
57
+LumaWipe.Type.Stripes="Mga guhit"
58
+LumaWipe.Type.StripsHorizontal="Pahalang na Simutin"
59
+LumaWipe.Type.StripsVertical="Patayong simutin"
60
+LumaWipe.Type.Watercolor="Waterkolor"
61
+LumaWipe.Type.ZigzagHorizontal="Palikong Pahalang"
62
+LumaWipe.Type.ZigzagVertical="Palikong Patayo"
63
+AudioMonitoring="Pagsubaybay sa Audio"
64
+AudioMonitoring.None="I-off ang Pagsubaybay"
65
+AudioMonitoring.MonitorOnly="Magsubaybay lang (i-mute ang output)"
66
+AudioMonitoring.Both="Subaybayan at Output"
67
+
68
obs-studio-21.0.3.tar.xz/plugins/obs-transitions/data/locale/ru-RU.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-transitions/data/locale/ru-RU.ini Changed
8
 
1
@@ -1,5 +1,5 @@
2
 FadeTransition="Затухание"
3
-CutTransition="Обрезать"
4
+CutTransition="Обрезка"
5
 SwipeTransition="Перемещение"
6
 SlideTransition="Сдвиг"
7
 StingerTransition="Стингер"
8
obs-studio-21.1.2.tar.xz/plugins/obs-transitions/data/locale/tl-PH.ini Added
68
 
1
@@ -0,0 +1,66 @@
2
+FadeTransition="Palabo"
3
+CutTransition="Putulin"
4
+SwipeTransition="I-swipe"
5
+SlideTransition="I-slide"
6
+StingerTransition="Stinger"
7
+FadeToColorTransition="Palabo sa Kulay"
8
+Direction="Direksyon"
9
+Direction.Left="Kaliwa"
10
+Direction.Right="Kanan"
11
+Direction.Up="Pataas"
12
+Direction.Down="Pababa"
13
+SwipeIn="Mag-swipe papasok"
14
+Color="Kulay"
15
+VideoFile="File ng mga video"
16
+TransitionPoint="Pinagmulan ng Pagbabago (millisegundos)"
17
+TransitionPointFrame="Pinagmulan ng Pagbabago (Frame)"
18
+TransitionPointType="Pinagmulan ng Pagbabago ng Tipo"
19
+TransitionPointTypeFrame="Ang frame"
20
+TransitionPointTypeTime="Oras (millisegundos)"
21
+AudioFadeStyle="Palabo ang istilo ng Audio"
22
+AudioFadeStyle.FadeOutFadeIn="Palabo ang palabas sa pinagmulan ng pagbabago tapos palabo papasok"
23
+AudioFadeStyle.CrossFade="Crossfade"
24
+SwitchPoint="Peak Color Point (porsyento)"
25
+LumaWipeTransition="Luma Wipe"
26
+LumaWipe.Image="Imahe"
27
+LumaWipe.Invert="Ibaliktad"
28
+LumaWipe.Softness="Kalambutan"
29
+LumaWipe.Type.BarndoorBottomLeft="Barndoor Pailalim sa Kaliwa"
30
+LumaWipe.Type.BarndoorHorizontal="Barndoor Pahiga"
31
+LumaWipe.Type.BarndoorTopLeft="Barndoor Pataas sa Kaliwa"
32
+LumaWipe.Type.BarndoorVertical="Barndoor Patayo"
33
+LumaWipe.Type.BlindsHorizontal="Blinds Pahiga"
34
+LumaWipe.Type.BoxBottomLeft="Box Pailalim sa Kaliwa"
35
+LumaWipe.Type.BoxBottomRight="Box Pailalim sa Kanan"
36
+LumaWipe.Type.BoxTopLeft="Box Paitaas sa Kaliwa"
37
+LumaWipe.Type.BoxTopRight="Box Paitaas sa Kanan"
38
+LumaWipe.Type.Burst="Pasabog"
39
+LumaWipe.Type.CheckerboardSmall="Maliit na Checkerboard"
40
+LumaWipe.Type.Circles="Mga Bilog"
41
+LumaWipe.Type.Clock="Orasan"
42
+LumaWipe.Type.Cloud="Ulap"
43
+LumaWipe.Type.Curtain="Kurtina"
44
+LumaWipe.Type.Fan="Fan"
45
+LumaWipe.Type.Fractal="Fractal"
46
+LumaWipe.Type.Iris="Iris"
47
+LumaWipe.Type.LinearHorizontal="Linear Pahiga"
48
+LumaWipe.Type.LinearTopLeft="Linear Pataas sa Kaliwa"
49
+LumaWipe.Type.LinearTopRight="Linear Pataas sa Kanan"
50
+LumaWipe.Type.LinearVertical="Linear Patayo"
51
+LumaWipe.Type.ParallelZigzagHorizontal="Parallel Zigzag Pahiga"
52
+LumaWipe.Type.ParallelZigzagVertical="Parallel Zigzag Patayo"
53
+LumaWipe.Type.Sinus9="Sinus 9"
54
+LumaWipe.Type.Spiral="Pilipit"
55
+LumaWipe.Type.Square="Kuwadrado"
56
+LumaWipe.Type.Squares="Mga kuwadrado"
57
+LumaWipe.Type.Stripes="Mga guhit"
58
+LumaWipe.Type.StripsHorizontal="Pahiga na strips"
59
+LumaWipe.Type.StripsVertical="Patayo na mga strips"
60
+LumaWipe.Type.Watercolor="Watercolor"
61
+LumaWipe.Type.ZigzagHorizontal="Zigzag Pahiga"
62
+LumaWipe.Type.ZigzagVertical="Vertical"
63
+AudioMonitoring="Pag-monitor sa audio"
64
+AudioMonitoring.None="Patayin ang Monitor"
65
+AudioMonitoring.MonitorOnly="Monitor lamang (i-mute ang output)"
66
+AudioMonitoring.Both="Monitor at Output"
67
+
68
obs-studio-21.0.3.tar.xz/plugins/obs-transitions/data/locale/tr-TR.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-transitions/data/locale/tr-TR.ini Changed
10
 
1
@@ -2,7 +2,7 @@
2
 CutTransition="Kes"
3
 SwipeTransition="Kaydır"
4
 SlideTransition="Kaydır"
5
-StingerTransition="Isırıcı"
6
+StingerTransition="Stinger"
7
 FadeToColorTransition="Fade to Color"
8
 Direction="Yönlendir"
9
 Direction.Left="Sol"
10
obs-studio-21.1.2.tar.xz/plugins/obs-x264/data/locale/fil-PH.ini Added
15
 
1
@@ -0,0 +1,13 @@
2
+Bitrate="Bitreyt"
3
+CustomBufsize="Gamitin ang Pasadyang Sukat ng Buffer"
4
+BufferSize="Sukat Buffer"
5
+RateControl="Kontrolin ang Singil"
6
+CRF="CRF"
7
+KeyframeIntervalSec="Pagitan ng Keyframe (segundo, 0=awto)"
8
+CPUPreset="Paggamit sa Preset ng CPU (mataas=konti CPU)"
9
+Profile="Propayl"
10
+Tune="Tono"
11
+None="(Wala)"
12
+EncoderOptions="x264 Pagpipilian (magkahiwalay sa pamamagitan ng patlang)"
13
+VFR="Pabago-bago ng Framerate (VFR)"
14
+
15
obs-studio-21.0.3.tar.xz/plugins/obs-x264/data/locale/nb-NO.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-x264/data/locale/nb-NO.ini Changed
10
 
1
@@ -4,7 +4,7 @@
2
 RateControl="Hastighetskontroll"
3
 CRF="CRF"
4
 KeyframeIntervalSec="Nøkkelbildeintervall (sekunder, 0 = automatisk)"
5
-CPUPreset="Forhåndsinstilling for prosessorbruk (raskere betyr mindre belastning)"
6
+CPUPreset="Forhåndsinnstilling for prosessorbruk (raskere = mindre CPU-bruk)"
7
 Profile="Profil"
8
 Tune="Still inn"
9
 None="(Ingen)"
10
obs-studio-21.0.3.tar.xz/plugins/obs-x264/data/locale/ru-RU.ini -> obs-studio-21.1.2.tar.xz/plugins/obs-x264/data/locale/ru-RU.ini Changed
10
 
1
@@ -6,7 +6,7 @@
2
 KeyframeIntervalSec="Интервал ключевых кадров (сек, 0=авто)"
3
 CPUPreset="Предустановка использования ЦП (выше = меньше)"
4
 Profile="Профиль"
5
-Tune="Настроить"
6
+Tune="Настройка"
7
 None="(Нет)"
8
 EncoderOptions="Настройки x264 (разделённые пробелом)"
9
 VFR="Переменная частота кадров (VFR)"
10
obs-studio-21.1.2.tar.xz/plugins/obs-x264/data/locale/tl-PH.ini Added
15
 
1
@@ -0,0 +1,13 @@
2
+Bitrate="Ang Bitrate"
3
+CustomBufsize="Gamitin ang Custom Buffer Size"
4
+BufferSize="Laki ng Buffer"
5
+RateControl="Kontrol ng Rate"
6
+CRF="CRF"
7
+KeyframeIntervalSec="Interbalng Keyframe (segundos, 0=awtomatik)"
8
+CPUPreset="Ang Usage Preset ng CPU (mataas = mababang CPU)"
9
+Profile="Ang Profile"
10
+Tune="Ang tono"
11
+None="(Wala)"
12
+EncoderOptions="x264 Mga opsyon (pinaghiwalay ng espasyo)"
13
+VFR="Variable Framerate (VFR)"
14
+
15
obs-studio-21.1.2.tar.xz/plugins/rtmp-services/data/locale/fil-PH.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+StreamingServices="Serbisyong Striming"
3
+CustomStreamingServer="Pagsadya ng striming na serber"
4
+Service="Serbisyo"
5
+Server="Serber"
6
+Server.Auto="Awto (Nirekomenda)"
7
+StreamKey="Susi ng Strim"
8
+UseAuth="Paggamit ng pagpapatunay"
9
+Username="Ginagamit na pangalan"
10
+Password="Password"
11
+ShowAll="Ipakita ang lahat ng mga serbisyo"
12
+
13
obs-studio-21.0.3.tar.xz/plugins/rtmp-services/data/locale/nb-NO.ini -> obs-studio-21.1.2.tar.xz/plugins/rtmp-services/data/locale/nb-NO.ini Changed
10
 
1
@@ -3,7 +3,7 @@
2
 Service="Tjeneste"
3
 Server="Tjener"
4
 Server.Auto="Auto (Anbefales)"
5
-StreamKey="Strømingsnøkkel"
6
+StreamKey="Strømmenøkkel"
7
 UseAuth="Bruk godkjenning"
8
 Username="Brukernavn"
9
 Password="Passord"
10
obs-studio-21.1.2.tar.xz/plugins/rtmp-services/data/locale/tl-PH.ini Added
13
 
1
@@ -0,0 +1,11 @@
2
+StreamingServices="Serbisyo ng Streaming"
3
+CustomStreamingServer="Ang Server ng Custom Streaming"
4
+Service="Serbisyo"
5
+Server="Ang Server"
6
+Server.Auto="Awtomatik (Nirokomenda)"
7
+StreamKey="Ang Stream key"
8
+UseAuth="Gumamit ng patunay"
9
+Username="Username"
10
+Password="Password"
11
+ShowAll="Ipakita ang lahat ng mga serbisyo"
12
+
13
obs-studio-21.0.3.tar.xz/plugins/rtmp-services/data/package.json -> obs-studio-21.1.2.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": 78,
5
+   "version": 80,
6
    "files": [
7
        {
8
            "name": "services.json",
9
-           "version": 78
10
+           "version": 80
11
        }
12
    ]
13
 }
14
obs-studio-21.0.3.tar.xz/plugins/rtmp-services/data/services.json -> obs-studio-21.1.2.tar.xz/plugins/rtmp-services/data/services.json Changed
142
 
1
@@ -714,6 +714,10 @@
2
                     "url": "rtmp://seoul.restream.io/live"
3
                 },
4
                 {
5
+                    "name": "Asia (Tokyo, Japan)",
6
+                    "url": "rtmp://tokyo.restream.io/live"
7
+                },
8
+                {
9
                     "name": "Australia (Sydney)",
10
                     "url": "rtmp://au.restream.io/live"
11
                 }
12
@@ -725,39 +729,74 @@
13
         {
14
             "name": "Nood",
15
             "servers": [
16
-              {
17
-                  "name": "EU Central: Frankfurt, Germany",
18
-                  "url": "rtmp://broadcast-frf.nood.tv/20D2AB/live"
19
-              },
20
-              {
21
-                  "name": "EU North: Amsterdam, Netherlands",
22
-                  "url": "rtmp://broadcast-ams.nood.tv/20D2AB/live"
23
-              },
24
-              {
25
-                  "name": "EU West: Stockholm, Sweden",
26
-                  "url": "rtmp://broadcast-arn.nood.tv/20D2AB/live"
27
-              },
28
-              {
29
-                  "name": "US East: Washington, DC",
30
-                  "url": "rtmp://broadcast-dca.nood.tv/20D2AB/live"
31
-              },
32
-              {
33
-                  "name": "US West: Los Angeles, CA",
34
-                  "url": "rtmp://broadcast-oxr.nood.tv/20D2AB/live"
35
-              },
36
-              {
37
-                  "name": "Australia: Sydney",
38
-                  "url": "rtmp://broadcast-syd.nood.tv/20D2AB/live"
39
-              },
40
-              {
41
-                  "name": "Asia: Hong Kong, China",
42
-                  "url": "rtmp://broadcast-hhp.nood.tv/20D2AB/live"
43
-              }
44
+                {
45
+                    "name": "Global: Fastest (Recommended)",
46
+                    "url": "rtmp://stream.nood.tv/live_source"
47
+                },
48
+                {
49
+                    "name": "NA East: Ashburn, VA, USA",
50
+                    "url": "rtmp://us-east-1.stream.nood.tv/live_source"
51
+                },
52
+                {
53
+                    "name": "NA East: Columbus, OH, USA",
54
+                    "url": "rtmp://us-east-2.stream.nood.tv/live_source"
55
+                },
56
+                {
57
+                    "name": "NA East: Montreal, QC, CAN",
58
+                    "url": "rtmp://ca-central-1.stream.nood.tv/live_source"
59
+                },
60
+                {
61
+                    "name": "NA West: San Francisco, CA, USA",
62
+                    "url": "rtmp://us-west-1.stream.nood.tv/live_source"
63
+                },
64
+                {
65
+                    "name": "NA West: Portland, OR, USA",
66
+                    "url": "rtmp://us-west-2.stream.nood.tv/live_source"
67
+                },
68
+                {
69
+                    "name": "SA East: Sao Paulo, BRA",
70
+                    "url": "rtmp://sa-east-1.stream.nood.tv/live_source"
71
+                },
72
+                {
73
+                    "name": "EU West: Dublin, IRL",
74
+                    "url": "rtmp://eu-west-1.stream.nood.tv/live_source"
75
+                },
76
+                {
77
+                    "name": "EU West: London, GBR",
78
+                    "url": "rtmp://eu-west-2.stream.nood.tv/live_source"
79
+                },
80
+                {
81
+                    "name": "EU West: Paris, FRA",
82
+                    "url": "rtmp://eu-west-3.stream.nood.tv/live_source"
83
+                },
84
+                {
85
+                    "name": "EU West: Frankfurt, DEU",
86
+                    "url": "rtmp://eu-central-1.stream.nood.tv/live_source"
87
+                },
88
+                {
89
+                    "name": "Asia North-East: Tokyo, JPN",
90
+                    "url": "rtmp://ap-northeast-1.stream.nood.tv/live_source"
91
+                },
92
+                {
93
+                    "name": "Asia North-East: Seoul, KOR",
94
+                    "url": "rtmp://ap-northeast-2.stream.nood.tv/live_source"
95
+                },
96
+                {
97
+                    "name": "Asia South-East: Singapore, SGP",
98
+                    "url": "rtmp://ap-southeast-1.stream.nood.tv/live_source"
99
+                },
100
+                {
101
+                    "name": "Asia South-East: Sydney, AUS",
102
+                    "url": "rtmp://ap-southeast-2.stream.nood.tv/live_source"
103
+                },
104
+                {
105
+                    "name": "Asia South: Mumbai, IND",
106
+                    "url": "rtmp://ap-south-1.stream.nood.tv/live_source"
107
+                }
108
             ],
109
             "recommended": {
110
                 "keyint": 2,
111
-                "profile": "main",
112
-                "max video bitrate": 3500,
113
+                "max video bitrate": 25000,
114
                 "max audio bitrate": 192
115
             }
116
         },
117
@@ -1175,6 +1214,24 @@
118
                 "max video bitrate": 1000,
119
                 "max audio bitrate": 64
120
             }
121
+        },
122
+        {
123
+            "name": "Vimeo",
124
+            "servers": [
125
+                {
126
+                    "name": "Default",
127
+                    "url": "rtmp://rtmp.cloud.vimeo.com/live"
128
+                }
129
+            ]
130
+        },
131
+        {
132
+            "name": "Aparat",
133
+            "servers": [
134
+                {
135
+                    "name": "Default",
136
+                    "url": "rtmp://rtmp.cdn.asset.aparat.com:443/event"
137
+                }
138
+            ]
139
         }
140
     ]
141
 }
142
obs-studio-21.1.2.tar.xz/plugins/text-freetype2/data/locale/fil-PH.ini Added
16
 
1
@@ -0,0 +1,14 @@
2
+TextFreetype2="Teksto (Libreng uri 2)"
3
+Font="Benditahan"
4
+Text="Teksto"
5
+TextFile="Pagkikil sa Teksto (UTF-8 o UTF-16)"
6
+TextFileFilter="Pakikil sa mga Teksto (*. txt);;"
7
+ChatLogMode="Ang Satsatan ay nasa paraan na log (huling anim na mga linya)"
8
+Color1="Kulay isa"
9
+Color2="Kulay pangalawa"
10
+Outline="Balangkas"
11
+DropShadow="I-drop ang Anino"
12
+ReadFromFile="Bahasin mula sa payl"
13
+CustomWidth="Pasadyang pahalang na teksto"
14
+WordWrap="Salitang Na-i-wrap"
15
+
16
obs-studio-21.1.2.tar.xz/plugins/text-freetype2/data/locale/tl-PH.ini Added
16
 
1
@@ -0,0 +1,14 @@
2
+TextFreetype2="Teskto (FreeType 2)"
3
+Font="Ang font"
4
+Text="Teksto"
5
+TextFile="Teksto ng file (UTF-8 or UTF-16)"
6
+TextFileFilter="Teksto ng mga nilalaman (*.txt);;"
7
+ChatLogMode="Ang log modeng chat (huling 6 na linya)"
8
+Color1="Unang Kulay"
9
+Color2="Pangalawang Kulay"
10
+Outline="Ang Outline"
11
+DropShadow="I-drop ang Shadow"
12
+ReadFromFile="Magabasa mula sa aking file"
13
+CustomWidth="Ang custom width ng teksto"
14
+WordWrap="Wrap ng mga Salita"
15
+
16
obs-studio-21.1.2.tar.xz/plugins/vlc-video/data/locale/fil-PH.ini Added
17
 
1
@@ -0,0 +1,15 @@
2
+VLCSource="VLC Pinagmulan ng Bidyo"
3
+Playlist="Playlist"
4
+LoopPlaylist="Talaan ng siluin"
5
+Shuffle="I-shuffle na Playlist"
6
+PlaybackBehavior="Pagiging kita ng PagPag-uugali"
7
+PlaybackBehavior.StopRestart="Itigil kapag hindi nakikita, i-restart kapag nakikita na"
8
+PlaybackBehavior.PauseUnpause="I-pause kapag hindi nakikita, i-unpause kapag nakikita na"
9
+PlaybackBehavior.AlwaysPlay="Palaging paganahin kahit na hindi nakikita"
10
+NetworkCaching="Network Kaching (ms)"
11
+PlayPause="Patugtugin/I-pause"
12
+Restart="I-restart"
13
+Stop="Itigil"
14
+PlaylistNext="Susunod"
15
+PlaylistPrev="Nakaraan"
16
+
17
obs-studio-21.0.3.tar.xz/plugins/vlc-video/data/locale/he-IL.ini -> obs-studio-21.1.2.tar.xz/plugins/vlc-video/data/locale/he-IL.ini Changed
17
 
1
@@ -1,8 +1,15 @@
2
 VLCSource="מקור וידאו VLC"
3
 Playlist="רשימת השמעה"
4
 LoopPlaylist="לולאת רשימת השמעה"
5
+Shuffle="ערבב רשימת השמעה"
6
 PlaybackBehavior="התנהגות ניראות"
7
 PlaybackBehavior.StopRestart="עצור כאשר אינו נראה, התחל מחדש כאשר נראה"
8
 PlaybackBehavior.PauseUnpause="השהה כאשר אינו נראה, בטל השהייה כאשר נראה"
9
 PlaybackBehavior.AlwaysPlay="נגן תמיד גם כאשר לא נראה"
10
+NetworkCaching="רשת אחסון מטמטון (מילי שניות)"
11
+PlayPause="הפעל/הפסק"
12
+Restart="הפעל מחדש"
13
+Stop="עצור"
14
+PlaylistNext="הבא"
15
+PlaylistPrev="הקודם"
16
 
17
obs-studio-21.1.2.tar.xz/plugins/vlc-video/data/locale/ro-RO.ini Added
4
 
1
@@ -0,0 +1,2 @@
2
+VLCSource="Sursă Video VLC"
3
+
4
obs-studio-21.1.2.tar.xz/plugins/vlc-video/data/locale/tl-PH.ini Added
17
 
1
@@ -0,0 +1,15 @@
2
+VLCSource="Pinagmulan ng VLC Video"
3
+Playlist="Mga Playlist"
4
+LoopPlaylist="Loop ng mga Playlist"
5
+Shuffle="I-shuffle ang mga Playlist"
6
+PlaybackBehavior="Ang nakikitang kilos"
7
+PlaybackBehavior.StopRestart="Huminto kung wala ng makita, i-restart kung mero ng makita"
8
+PlaybackBehavior.PauseUnpause="Ihinto kung walang makita, magpatuloy kungwala ng makita"
9
+PlaybackBehavior.AlwaysPlay="Patuloy na mag-play kahit wala ng makita"
10
+NetworkCaching="Network Caching (ms)"
11
+PlayPause="I-play/Ihinto"
12
+Restart="I-restart"
13
+Stop="Ihinto"
14
+PlaylistNext="Susunod"
15
+PlaylistPrev="Nakaraan"
16
+
17
obs-studio-21.0.3.tar.xz/plugins/win-capture/data/locale/cs-CZ.ini -> obs-studio-21.1.2.tar.xz/plugins/win-capture/data/locale/cs-CZ.ini Changed
9
 
1
@@ -7,6 +7,7 @@
2
 WindowCapture.Priority.Exe="Shoda názvu, jinak najít okno stejného procesu"
3
 CaptureCursor="Zaznamenávat kurzor"
4
 Compatibility="Více-adaptérová kompaktibilita"
5
+SLIFix="Zaznamenávací mód SLI/Crossfire (pomalý)"
6
 AllowTransparency="Povolit průhlednost"
7
 Monitor="Obrazovka"
8
 PrimaryMonitor="Primární obrazovka"
9
obs-studio-21.1.2.tar.xz/plugins/win-capture/data/locale/fil-PH.ini Added
28
 
1
@@ -0,0 +1,26 @@
2
+MonitorCapture="Ipakita ang Kumuha"
3
+WindowCapture="Kumuha ng window"
4
+WindowCapture.Window="Bintana"
5
+WindowCapture.Priority="Bintanang Tugma sa Prayoridad"
6
+WindowCapture.Priority.Title="Pamagat ng Window na mas tugma"
7
+WindowCapture.Priority.Class="Tugmang pamagat, kung hindi matatagpuan ang window sa parehong uri"
8
+WindowCapture.Priority.Exe="Tugmang pamagat, kung hindi makikita ang window sa parehong maipapatupad"
9
+CaptureCursor="Kumuha ng Cursor"
10
+Compatibility="Ang Pagkatugma ng Multi-adapter"
11
+SLIFix="SLI/Crossfire nasa Mode ng Pagkuha (Mabagal)"
12
+AllowTransparency="Pahintulutan ang Pag-aninaw"
13
+Monitor="Magpakita"
14
+PrimaryMonitor="Pangunahing pagsubaybay"
15
+GameCapture="Makuha ang Laro"
16
+GameCapture.AnyFullscreen="Kumuha ng kahit na anong fullscreen ng aplikasyon"
17
+GameCapture.CaptureWindow="Kumuha ng tiyak na window"
18
+GameCapture.UseHotkey="Kumuha ng pangbungad na window kasama ang hotkey"
19
+GameCapture.ForceScaling="Pwersahang Pagsusukat"
20
+GameCapture.ScaleRes="Antas ng Paglutas"
21
+GameCapture.LimitFramerate="Limitahan ang pagkuha ng framerate"
22
+GameCapture.CaptureOverlays="Kumuha ng ikatlong-parte ng mga overlays (tulad ng koponan)"
23
+GameCapture.AntiCheatHook="Gamitin ang iwas-daya para sa pagkatugma ng hook"
24
+GameCapture.HotkeyStart="Kumuha ng pangbungad na window"
25
+GameCapture.HotkeyStop="I-de-aktibo ang pagkuha"
26
+Mode="Paraan"
27
+
28
obs-studio-21.1.2.tar.xz/plugins/win-capture/data/locale/he-IL.ini Added
28
 
1
@@ -0,0 +1,26 @@
2
+MonitorCapture="לכידת תצוגה"
3
+WindowCapture="לכידת חלון"
4
+WindowCapture.Window="חלון"
5
+WindowCapture.Priority="חלון התאמת עדיפות"
6
+WindowCapture.Priority.Title="כותרת חלון חייבת להתאים"
7
+WindowCapture.Priority.Class="התאם כותרת, אחרת מצא חלון מאותו סוג"
8
+WindowCapture.Priority.Exe="התאם כותרת, אחרת תמצא חלון של אותו קובץ הפעלה"
9
+CaptureCursor="לכד סמן"
10
+Compatibility="מתאם מרובה תאימות"
11
+SLIFix="SLI/Crossfire מצב לכידה (איטי)"
12
+AllowTransparency="אפשר שקיפות"
13
+Monitor="צג"
14
+PrimaryMonitor="צג ראשי"
15
+GameCapture="לכידת משחק"
16
+GameCapture.AnyFullscreen="לכוד כל יישום מסך מלא"
17
+GameCapture.CaptureWindow="לכידת חלון ספציפי"
18
+GameCapture.UseHotkey="לכוד חלון חזית עם hotkey"
19
+GameCapture.ForceScaling="הכרח שינוי גודל"
20
+GameCapture.ScaleRes="גודל רזולוציה"
21
+GameCapture.LimitFramerate="מגבלת לכידת קצב פריימים"
22
+GameCapture.CaptureOverlays="לכידת כיסוי צד שלישי (כגון סטים)"
23
+GameCapture.AntiCheatHook="השתמש באנטי-צ'יט לרמות הוק"
24
+GameCapture.HotkeyStart="לכידת חלון חזית"
25
+GameCapture.HotkeyStop="בטל לכידה"
26
+Mode="מצב"
27
+
28
obs-studio-21.1.2.tar.xz/plugins/win-capture/data/locale/tl-PH.ini Added
28
 
1
@@ -0,0 +1,26 @@
2
+MonitorCapture="Mag Capture ng Display"
3
+WindowCapture="Mag Capture ng Window"
4
+WindowCapture.Window="Ang Window"
5
+WindowCapture.Priority="Ang Match Priority ng Window"
6
+WindowCapture.Priority.Title="Ang paksa ay dapat tumugma sa Window"
7
+WindowCapture.Priority.Class="Tumugma ang paksa, kung hindi hanapin ang kapareho"
8
+WindowCapture.Priority.Exe="Tumugma ang paksa, kung hindi hanapin ang kaparehong pinatutupad"
9
+CaptureCursor="Ang Capture Cursor"
10
+Compatibility="Maraming-adapter Compatibility"
11
+SLIFix="SLI/Crossfire Capture Mode (Mahina)"
12
+AllowTransparency="Hayaan ang Transparency"
13
+Monitor="Ang Display"
14
+PrimaryMonitor="Ang Primirong Monitor"
15
+GameCapture="Ang GameCapture"
16
+GameCapture.AnyFullscreen="Mag-capture ng kahit alin sa fullscreen na aplikasyon"
17
+GameCapture.CaptureWindow="Mag-capture ng partikular na window"
18
+GameCapture.UseHotkey="Mag-capture ng foreground window kasama ang hotkey"
19
+GameCapture.ForceScaling="Pwersa ng Scaling"
20
+GameCapture.ScaleRes="Resolusyon ng Scale"
21
+GameCapture.LimitFramerate="Limitahan ang capture framerate"
22
+GameCapture.CaptureOverlays="Mag-capture ng mga third-party overlays (katulad ng steam)"
23
+GameCapture.AntiCheatHook="Gumamit ng pangkontra-cheat compatibility hook"
24
+GameCapture.HotkeyStart="Mag-capture ng foreground window"
25
+GameCapture.HotkeyStop="I-deactivate ang capture"
26
+Mode="Ang Moda"
27
+
28
obs-studio-21.0.3.tar.xz/plugins/win-capture/data/locale/zh-CN.ini -> obs-studio-21.1.2.tar.xz/plugins/win-capture/data/locale/zh-CN.ini Changed
9
 
1
@@ -7,6 +7,7 @@
2
 WindowCapture.Priority.Exe="匹配标题, 否则查找同样可执行程序的窗口"
3
 CaptureCursor="捕捉光标"
4
 Compatibility="多适配器的兼容性"
5
+SLIFix="SLI/Crossfire 捕获模式 (慢)"
6
 AllowTransparency="允许透明度"
7
 Monitor="显示器"
8
 PrimaryMonitor="主监视器"
9
obs-studio-21.0.3.tar.xz/plugins/win-capture/data/locale/zh-TW.ini -> obs-studio-21.1.2.tar.xz/plugins/win-capture/data/locale/zh-TW.ini Changed
9
 
1
@@ -7,6 +7,7 @@
2
 WindowCapture.Priority.Exe="與標題相符,如沒有則找尋相同執行檔的視窗"
3
 CaptureCursor="擷取游標"
4
 Compatibility="多顯示卡相容性"
5
+SLIFix="SLI/Crossfire擷取模式(慢)"
6
 AllowTransparency="允許透明"
7
 Monitor="顯示器"
8
 PrimaryMonitor="主顯示器"
9
obs-studio-21.0.3.tar.xz/plugins/win-capture/game-capture.c -> obs-studio-21.1.2.tar.xz/plugins/win-capture/game-capture.c Changed
20
 
1
@@ -456,7 +456,7 @@
2
    if (pressed && gc->config.mode == CAPTURE_MODE_HOTKEY) {
3
        info("Activate hotkey pressed");
4
        os_atomic_set_long(&gc->hotkey_window,
5
-               (long)GetForegroundWindow());
6
+               (long)(uintptr_t)GetForegroundWindow());
7
        os_atomic_set_bool(&gc->deactivate_hook, true);
8
        os_atomic_set_bool(&gc->activate_hook_now, true);
9
    }
10
@@ -1582,7 +1582,8 @@
11
    bool activate_now = os_atomic_set_bool(&gc->activate_hook_now, false);
12
 
13
    if (activate_now) {
14
-       HWND hwnd = (HWND)os_atomic_load_long(&gc->hotkey_window);
15
+       HWND hwnd = (HWND)(uintptr_t)os_atomic_load_long(
16
+               &gc->hotkey_window);
17
 
18
        if (is_uwp_window(hwnd))
19
            hwnd = get_uwp_actual_window(hwnd);
20
obs-studio-21.0.3.tar.xz/plugins/win-capture/get-graphics-offsets/d3d9-offsets.cpp -> obs-studio-21.1.2.tar.xz/plugins/win-capture/get-graphics-offsets/d3d9-offsets.cpp Changed
90
 
1
@@ -95,7 +95,13 @@
2
        0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00,
3
        0xFF, 0x00,
4
        0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00
5
-   }
6
+   },
7
+   {
8
+       0xF8, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00,
9
+       0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00,
10
+       0xFF, 0x00,
11
+       0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00
12
+   },
13
 };
14
 
15
 static const uint8_t mask_cmp[][MAX_CMP_SIZE] = {
16
@@ -124,6 +130,21 @@
17
        0x39, 0x80, 0x00, 0x00, 0x00, 0x00,
18
        0x75, 0x00,
19
        0x40, 0xB8, 0x00, 0x00, 0x00, 0x00
20
+   },
21
+   /*
22
+   * Windows 10 April 2018
23
+   * 49 8B 87 58 40 00 00                 mov     rax, [r15+4058h]
24
+   * 39 98 C0 53 00 00                    cmp     [rax+53C0h], ebx
25
+   * 75 12                                jnz     short loc_1800A7FEC
26
+   * 48 8D 15 7F B6 09 00                 lea     rdx, addrErrorMsg
27
+   *
28
+   * Note: different instructions, last byte skipped due to MAX_CMP_SIZE
29
+   */
30
+   {
31
+       0x48, 0x8B, 0x80, 0x00, 0x00, 0x00, 0x00,
32
+       0x39, 0x80, 0x00, 0x00, 0x00, 0x00,
33
+       0x75, 0x00,
34
+       0x48, 0x8D, 0x00, 0x00, 0x00, 0x00
35
    }
36
 };
37
 
38
@@ -131,6 +152,7 @@
39
 static const uint32_t code_offsets[][2] = {
40
    {3, 10},
41
    {3, 9},
42
+   {3, 9},
43
 };
44
 #else
45
 
46
@@ -148,7 +170,13 @@
47
        0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF,
48
        0xFF, 0x00,
49
        0xFF, 0x00, 0x00, 0x00, 0x00
50
-   }
51
+   },
52
+   {
53
+       0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00,
54
+       0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF,
55
+       0xFF, 0x00,
56
+       0xFF, 0x00, 0x00, 0x00, 0x00
57
+   },
58
 };
59
 
60
 static const uint8_t mask_cmp[][MAX_CMP_SIZE] = {
61
@@ -177,6 +205,20 @@
62
        0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
63
        0x75, 0x00,
64
        0x68, 0x00, 0x00, 0x00, 0x00
65
+   },
66
+
67
+   /*
68
+   * Windows 10 April 2018 Update
69
+   * 8B 86 68 2B 00 00         mov     eax, [esi+2B68h]
70
+   * 83 B8 F4 4D 00 00 00      cmp     dword ptr [eax+4DF4h], 0
71
+   * 75 0F                     jnz     short loc_100D9A9C
72
+   * BA 08 71 01 10            mov     edx, offset errMsg
73
+   */
74
+   {
75
+       0x8B, 0x80, 0x00, 0x00, 0x00, 0x00,
76
+       0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
77
+       0x75, 0x00,
78
+       0xBA, 0x00, 0x00, 0x00, 0x00
79
    }
80
 };
81
 
82
@@ -184,6 +226,7 @@
83
 static const uint32_t code_offsets[][2] = {
84
    {2, 8},
85
    {2, 8},
86
+   {2, 8},
87
 };
88
 #endif
89
 
90
obs-studio-21.0.3.tar.xz/plugins/win-capture/graphics-hook/graphics-hook.c -> obs-studio-21.1.2.tar.xz/plugins/win-capture/graphics-hook/graphics-hook.c Changed
20
 
1
@@ -690,7 +690,7 @@
2
    uint32_t  tex_size       = cy * pitch;
3
    uint32_t  aligned_header = ALIGN(sizeof(struct shmem_data), 32);
4
    uint32_t  aligned_tex    = ALIGN(tex_size, 32);
5
-   uint32_t  total_size     = aligned_header + aligned_tex * 2;
6
+   uint32_t  total_size     = aligned_header + aligned_tex * 2 + 32;
7
    uintptr_t align_pos;
8
 
9
    if (!init_shared_info(total_size)) {
10
@@ -706,6 +706,9 @@
11
    align_pos &= ~(32 - 1);
12
    align_pos -= (uintptr_t)shmem_info;
13
 
14
+   if (align_pos < sizeof(struct shmem_data))
15
+       align_pos += 32;
16
+
17
    (*data)->last_tex = -1;
18
    (*data)->tex1_offset = (uint32_t)align_pos;
19
    (*data)->tex2_offset = (*data)->tex1_offset + aligned_tex;
20
obs-studio-21.0.3.tar.xz/plugins/win-capture/nt-stuff.h -> obs-studio-21.1.2.tar.xz/plugins/win-capture/nt-stuff.h Changed
19
 
1
@@ -140,7 +140,7 @@
2
    OBS_SYSTEM_PROCESS_INFORMATION2 *spi = data;
3
 
4
    for (;;) {
5
-       if (spi->UniqueProcessId == (HANDLE)process_id) {
6
+       if (spi->UniqueProcessId == (HANDLE)(DWORD_PTR)process_id) {
7
            break;
8
        }
9
 
10
@@ -156,7 +156,7 @@
11
    sti = (OBS_SYSTEM_THREAD_INFORMATION*)((BYTE*)spi + sizeof(*spi));
12
 
13
    for (ULONG i = 0; i < spi->ThreadCount; i++) {
14
-       if (sti[i].UniqueThreadId == (HANDLE)thread_id) {
15
+       if (sti[i].UniqueThreadId == (HANDLE)(DWORD_PTR)thread_id) {
16
            info = &sti[i];
17
            break;
18
        }
19
obs-studio-21.1.2.tar.xz/plugins/win-dshow/data/locale/fil-PH.ini Added
41
 
1
@@ -0,0 +1,39 @@
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
+ConfigureVideo="Ang Configure Bidyo"
11
+ConfigureCrossbar="I-Configure ang Crossbar"
12
+ResFPSType="Ang Resolusyon/Tipo ng FPS"
13
+ResFPSType.Custom="I-Custom"
14
+ResFPSType.DevPreferred="I-Device Default"
15
+FPS.Matching="I-Match Output FPS"
16
+FPS.Highest="Pinakamataas na FPS"
17
+Resolution="Ang Resolusyon"
18
+VideoFormat="Ang Bidyo Format"
19
+VideoFormat.Any="Kahit Ano"
20
+VideoFormat.Unknown="Unknown (%1)"
21
+AudioOutputMode="Ang Audio Output Mode"
22
+AudioOutputMode.Capture="I-Capture lamang ang audio"
23
+AudioOutputMode.DirectSound="Ang Awput desktop audio (DirectSound)"
24
+AudioOutputMode.WaveOut="Ang Output desktop audio (WaveOut)"
25
+UseCustomAudioDevice="Gamitin ang custom audio device"
26
+AudioDevice="Ang Audio Device"
27
+Buffering="Nag Buffering"
28
+Buffering.ToolTip="Kapag pinagana, buffer video/audi datus para masiguro ang smoothest at pinakamainam\ntumpak na possibleng playback, pero nadagdagan ng latency. Kapag gamit\nnagbuffering na may bidyo capture kard, inirekomenda na itakda ang kard at ang \nprogram sa parehong framerate para sa magandang resulta.\n\nKapag di pinagana, tiyakin na mababa nag latency playback, pero kapalit nito ang frame\nplayback accuracy. Ito ay perpekto sa mukha ng kamera, o kaya gusto gumamit ng \nprogram's preview window para i-play ang console.\n\nAuto-detect (default) itakda ito para ipagana kung and device ay delay, at di pinagana\nkung ito ay walang delay."
29
+Buffering.AutoDetect="I-Auto-Detect"
30
+Buffering.Enable="I-Enable"
31
+Buffering.Disable="I-Disable"
32
+Activate="I-Activate"
33
+Deactivate="I-Deactivate"
34
+FlipVertically="I-paltik patayo"
35
+DeactivateWhenNotShowing="I-Deactivate kapag di nagpapakita"
36
+
37
+Bitrate="Bitrate"
38
+Encoder.C985="Ang AVerMedia H.264 Encoder (c985)"
39
+Encoder.C353="Ang AVerMedia H.264 Encoder"
40
+
41
obs-studio-21.1.2.tar.xz/plugins/win-dshow/data/locale/he-IL.ini Added
40
 
1
@@ -0,0 +1,38 @@
2
+VideoCaptureDevice="התקן לכידת וידאו"
3
+Device="התקן"
4
+ColorSpace="מרחב צבע YUV"
5
+ColorSpace.Default="ברירת מחדל"
6
+ColorRange="טווח צבע YUV"
7
+ColorRange.Partial="חלקי"
8
+ColorRange.Full="מלא"
9
+ConfigureAudio="הגדר שמע"
10
+ConfigureVideo="הגדר וידאו"
11
+ConfigureCrossbar="קביעת תצורה של המוט"
12
+ResFPSType="סוג רזולוציה/קצב פריימים לשנייה"
13
+ResFPSType.Custom="מותאם אישית"
14
+ResFPSType.DevPreferred="התקן ברירת מחדל"
15
+FPS.Matching="התאמת פלט קצב פריימים לשנייה"
16
+FPS.Highest="קצב הפריימים לשנייה הגבוה ביותר"
17
+Resolution="רזולוציה"
18
+VideoFormat="פורמט וידאו"
19
+VideoFormat.Any="כל"
20
+VideoFormat.Unknown="לא ידוע (1%)"
21
+AudioOutputMode="מצב פלט קול"
22
+AudioOutputMode.Capture="לכידת שמע בלבד"
23
+AudioOutputMode.DirectSound="פלט שמע בשולחן העבודה (DirectSound)"
24
+AudioOutputMode.WaveOut="פלט שמע בשולחן העבודה (צליל יוצא)"
25
+UseCustomAudioDevice="השתמש בהתקן שמע מותאם אישית"
26
+AudioDevice="התקן שמע"
27
+Buffering="אגירה"
28
+Buffering.ToolTip="כאשר מאופשר, מאגר נתונים וידאו / אודיו כדי להבטיח את ההשמעה חלקה ביותר \n accurate אפשרי, אבל במחיר של חביון מוגברת. בעת שימוש \n בכביסה עם כרטיס לכידת וידאו, מומלץ להגדיר את הכרטיס ואת \ nprogram לאותו פרמטרט לקבלת התוצאות הטובות ביותר. \n\n כאשר הוא מושבת, מבטיח השמעת חביון נמוכה ביותר, אך במחיר של מסגרת \n דיוק חזרה. זה אידיאלי למצלמות פנים, או כאשר ברצונך להשתמש בחלון התצוגה המקדימה של \n כדי להציג קונסולה.   \n\n גילוי אוטומטי (ברירת מחדל) מגדיר אותו כך שאם המכשיר יש עיכוב, והוא מושבת \ nif ללא עיכוב."
29
+Buffering.AutoDetect="זיהוי אוטומטי"
30
+Buffering.Enable="אפשר"
31
+Buffering.Disable="בטל"
32
+Activate="הפעל"
33
+Deactivate="השבת"
34
+FlipVertically="הפוך אנכית"
35
+DeactivateWhenNotShowing="השבת כאשר לא נראה"
36
+
37
+Bitrate="קצב נתונים"
38
+Encoder.C985="מקודד AverMedia H.264 (c985)"
39
+
40
obs-studio-21.1.2.tar.xz/plugins/win-dshow/data/locale/tl-PH.ini Added
41
 
1
@@ -0,0 +1,39 @@
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
+ConfigureVideo="I-configure ang Video"
11
+ConfigureCrossbar="I-configure ang Crossbar"
12
+ResFPSType="Resolusyon/FPS na Tipo"
13
+ResFPSType.Custom="Ang Custom"
14
+ResFPSType.DevPreferred="Ang Default ng Device"
15
+FPS.Matching="I-match ang Output ng FPS"
16
+FPS.Highest="Pinakamataas na FPS"
17
+Resolution="Resolusyon"
18
+VideoFormat="Ang format ng video"
19
+VideoFormat.Any="Kahit ano"
20
+VideoFormat.Unknown="Hindi matukoy (%1)"
21
+AudioOutputMode="Ang Audio Output Mode"
22
+AudioOutputMode.Capture="Mag-capture ng mga audio lamang"
23
+AudioOutputMode.DirectSound="Ang kinalabasan ng desktop audio (DirektangTunog)"
24
+AudioOutputMode.WaveOut="Ang kinalabasan ng desktop audio (WaveOut)"
25
+UseCustomAudioDevice="Gumamit ng mga audio device"
26
+AudioDevice="Mga Audio Device"
27
+Buffering="Ang Buffering"
28
+Buffering.ToolTip="Kapag pinagana na, ang buffers ng video/audio data ay para masiguro ang pinakamaayos at lahat\nsakto ang posibleng playback, ngunit ang kapalit ay ang pagtaas ng latency. Kung gamit\nbuffering kasama ang video capture na card, inirekomendana i-set angcard at ang\nprograma sa mga kaparehong framerate para sa maayos na resulta.\n\nKung hindi pinagana, tiyakin ang pinakamamabang latency playback, pero sa paggamit ng frame\nplayback na sakto. Ito ay tama para sa mukha ng camera, or kung gusto mong gamitin ang\nang preview ng programa sa window para maglaro ng console.\n\nAwtomatik-detect (default) ang i-set upang mapagana kung ang device ay nagkaroon ng delay, at hindi paganahin\nkung walang delay."
29
+Buffering.AutoDetect="Awtomatik-detect"
30
+Buffering.Enable="Paganahin"
31
+Buffering.Disable="Hindi paganahin"
32
+Activate="Gawing aktibo"
33
+Deactivate="Ihinto ang pagiging aktibo"
34
+FlipVertically="Patayong i-flip"
35
+DeactivateWhenNotShowing="Ihinto ang pagiging aktibo kung walangpinapakita"
36
+
37
+Bitrate="Ang Bitrate"
38
+Encoder.C985="Ang AVerMedia H.264 Encoder (c985)"
39
+Encoder.C353="Ang AVerMedia H.264 Encoder"
40
+
41
obs-studio-21.0.3.tar.xz/plugins/win-mf/CMakeLists.txt -> obs-studio-21.1.2.tar.xz/plugins/win-mf/CMakeLists.txt Changed
82
 
1
@@ -1,32 +1,58 @@
2
 project(win-mf)
3
 
4
-set(win-mf_SOURCES
5
-   mf-plugin.cpp
6
-   mf-aac.cpp
7
-   mf-aac-encoder.cpp
8
-   mf-common.cpp
9
-   mf-encoder-descriptor.cpp
10
-   mf-h264.cpp
11
-   mf-h264-encoder.cpp)
12
-
13
-set(win-mf_HEADERS
14
-   mf-common.hpp
15
-   mf-encoder-descriptor.hpp
16
-   mf-aac-encoder.hpp
17
-   mf-h264-encoder.hpp)
18
+set(ENABLE_WINMF FALSE CACHE BOOL "Enables the now deprecated win-mf plugin")
19
+
20
+configure_file(
21
+   "${CMAKE_CURRENT_SOURCE_DIR}/mf-config.hpp.in"
22
+   "${CMAKE_CURRENT_BINARY_DIR}/mf-config.hpp")
23
+
24
+set(win-mf_config_HEADERS
25
+   "${CMAKE_CURRENT_BINARY_DIR}/mf-config.hpp")
26
+
27
+if(ENABLE_WINMF)
28
+   set(win-mf_SOURCES
29
+       mf-plugin.cpp
30
+       mf-aac.cpp
31
+       mf-aac-encoder.cpp
32
+       mf-common.cpp
33
+       mf-encoder-descriptor.cpp
34
+       mf-h264.cpp
35
+       mf-h264-encoder.cpp)
36
+
37
+   set(win-mf_HEADERS
38
+       mf-common.hpp
39
+       mf-encoder-descriptor.hpp
40
+       mf-aac-encoder.hpp
41
+       mf-h264-encoder.hpp)
42
+
43
+   set(win-mf_DEPS
44
+       d3d9
45
+       dxva2
46
+       uuid
47
+       mfplat
48
+       mfuuid
49
+       mf
50
+       wmcodecdspuuid)
51
+else()
52
+   set(win-mf_SOURCES
53
+       mf-plugin.cpp)
54
+endif()
55
 
56
 add_library(win-mf MODULE
57
+   ${win-mf_config_HEADERS}
58
    ${win-mf_SOURCES}
59
    ${win-mf_HEADERS})
60
 
61
 target_link_libraries(win-mf
62
-   d3d9
63
-   dxva2
64
-   uuid
65
-   mfplat
66
-   mfuuid
67
-   mf
68
-   wmcodecdspuuid
69
+   ${win-mf_DEPS}
70
    libobs)
71
 
72
-install_obs_plugin_with_data(win-mf data)
73
+target_include_directories(win-mf
74
+   PUBLIC
75
+   "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>")
76
+
77
+if(ENABLE_WINMF)
78
+   install_obs_plugin_with_data(win-mf data)
79
+else()
80
+   install_obs_plugin(win-mf)
81
+endif()
82
obs-studio-21.1.2.tar.xz/plugins/win-mf/data/locale/fil-PH.ini Added
32
 
1
@@ -0,0 +1,30 @@
2
+MFAACEnc="Saligan ng Media AAC Enkoder"
3
+Bitrate="Bitreyt"
4
+
5
+MF.H264.EncoderName="Saligan ng Media H264 Encoder"
6
+MF.H264.Encoder="Pangalan ng Encoder"
7
+MF.H264.LowLatency="Mababang Pagwalang-kilos (Huwag paganahin sa muling pag-order ng frame)"
8
+MF.H264.BFrames="Magkakasunod na pagbilang ng B-Frame"
9
+MF.H264.CustomBufsize="Gamitin ang Pasadyang Sukat ng Buffer"
10
+MF.H264.BufferSize="Sukat ng Buffer"
11
+MF.H264.CustomMaxBitrate="Gamitin ang pasadyang Max Bitrate"
12
+MF.H264.Bitrate="Bitreyt"
13
+MF.H264.MaxBitrate="Max Bitreyt"
14
+MF.H264.KeyframeIntervalSec="Pagitan ng Keyframe (segundo, 0=awto)"
15
+MF.H264.RateControl="Pagkontral ng Rate"
16
+MF.H264.CBR="CBR (Patuloy na Bitrate)"
17
+MF.H264.VBR="VBR (Baryante Bitrate)"
18
+MF.H264.CQP="CQP (Patuloy na Kalidad)"
19
+MF.H264.MinQP="Pinakamababang QP"
20
+MF.H264.MaxQP="Pinakamataas QP"
21
+MF.H264.QPI="QP Ay-Freym"
22
+MF.H264.QPP="QP Pi-Freym"
23
+MF.H264.QPB="QP Bi-Freym"
24
+MF.H264.Profile="Propayl"
25
+MF.H264.Advanced="Masulong"
26
+
27
+MF.H264.EncoderSWMicrosoft="Microsoft Software H.264 Enkoder"
28
+MF.H264.EncoderHWAMD="AMD Coding Video ng Makina H. 264 Encoder (Pundasyon ng Media)"
29
+MF.H264.EncoderHWIntel="Mabilis na Intel Sync H.264 Encoder (Pundasyon ng Media)"
30
+MF.H264.EncoderHWNVIDIA="NVIDIA NVENC H.264 Encoder (Pundasyon ng Media)"
31
+
32
obs-studio-21.1.2.tar.xz/plugins/win-mf/data/locale/he-IL.ini Added
32
 
1
@@ -0,0 +1,30 @@
2
+MFAACEnc="מקודד מדיה על בסיס AAC"
3
+Bitrate="קצב נתונים"
4
+
5
+MF.H264.EncoderName="מקודד מדיה על בסיס H264"
6
+MF.H264.Encoder="שם מקודד"
7
+MF.H264.LowLatency="השהיה נמוכה (ביטול מסגרת הזמנה-חדשה)"
8
+MF.H264.BFrames="ספירה B-מסגרת רצופה"
9
+MF.H264.CustomBufsize="השתמש בגודל מותאם אישית לאוגר"
10
+MF.H264.BufferSize="גודל אוגר"
11
+MF.H264.CustomMaxBitrate="שימוש מותאם אישית במקסימום קצב נתונים"
12
+MF.H264.Bitrate="קצב נתונים"
13
+MF.H264.MaxBitrate="מקסימום קצב נתונים"
14
+MF.H264.KeyframeIntervalSec="מרווח ערך המפתח פריים בשניות (0=אוטומטי)"
15
+MF.H264.RateControl="בקרת קצב"
16
+MF.H264.CBR="CBR(קצב נתונים קבוע)"
17
+MF.H264.VBR="VBR(קצב נתונים משתנה)"
18
+MF.H264.CQP="CQP(איכות קבועה)"
19
+MF.H264.MinQP="מינימום QP"
20
+MF.H264.MaxQP="מקסימום QP"
21
+MF.H264.QPI="מסגרת-QP"
22
+MF.H264.QPP="P-מסגרת QP"
23
+MF.H264.QPB="B-מסגרת QP"
24
+MF.H264.Profile="פרופיל"
25
+MF.H264.Advanced="מתקדם"
26
+
27
+MF.H264.EncoderSWMicrosoft="מקודד תוכנת מייקרוסופט H.264"
28
+MF.H264.EncoderHWAMD="קידוד מנוע AMD H.264 מקודד (בסיס מדיה)"
29
+MF.H264.EncoderHWIntel="סנכרון מהיר Intel H.264 מקודד (בסיס מדיה)"
30
+MF.H264.EncoderHWNVIDIA="מקודד NVIDIA NVENC H.264 מקודד (בסיס מדיה)"
31
+
32
obs-studio-21.1.2.tar.xz/plugins/win-mf/data/locale/tl-PH.ini Added
32
 
1
@@ -0,0 +1,30 @@
2
+MFAACEnc="Ang Media Foundation AAC Encoder"
3
+Bitrate="Ang Bitrate"
4
+
5
+MF.H264.EncoderName="Ang Media Foundation H264 Encoder"
6
+MF.H264.Encoder="Pangalan ng Encoder"
7
+MF.H264.LowLatency="Mababang Latency (Hindi paganahin ang frame re-ordering)"
8
+MF.H264.BFrames="Magkasunod na B-Frame na pagbilang"
9
+MF.H264.CustomBufsize="Gumamit ng Custom Buffer Size"
10
+MF.H264.BufferSize="Ang Buffer Size"
11
+MF.H264.CustomMaxBitrate="Gumamit ng Custom Max Bitrate"
12
+MF.H264.Bitrate="Ang Bitrate"
13
+MF.H264.MaxBitrate="Ang pinakamataas na Bitrate"
14
+MF.H264.KeyframeIntervalSec="Ang Keyframe Interval (segundos, 0=awtomatik)"
15
+MF.H264.RateControl="Ang Rate ng Kontrol"
16
+MF.H264.CBR="Ang CBR (Constant Bitrate)"
17
+MF.H264.VBR="Ang VBR (Variable Bitrate)"
18
+MF.H264.CQP="Ang VBR (Variable Bitrate)"
19
+MF.H264.MinQP="Pinakamaliit QP"
20
+MF.H264.MaxQP="Pinakamataas QP"
21
+MF.H264.QPI="Ang QP I-Frame"
22
+MF.H264.QPP="Ang QP P-Frame"
23
+MF.H264.QPB="Ang QP B-Frame"
24
+MF.H264.Profile="Ang Profile"
25
+MF.H264.Advanced="Advanced"
26
+
27
+MF.H264.EncoderSWMicrosoft="Microsoft Software H.264 Encoder"
28
+MF.H264.EncoderHWAMD="AMD Video Coding Engine H.264 Encoder (Media Foundation)"
29
+MF.H264.EncoderHWIntel="Intel Quick Sync H.264 Encoder (Media Foundation)"
30
+MF.H264.EncoderHWNVIDIA="NVIDIA NVENC H.264 Encoder (Media Foundation)"
31
+
32
obs-studio-21.1.2.tar.xz/plugins/win-mf/mf-config.hpp.in Added
19
 
1
@@ -0,0 +1,17 @@
2
+#ifndef TRUE
3
+#define TRUE 1
4
+#endif
5
+
6
+#ifndef ON
7
+#define ON 1
8
+#endif
9
+
10
+#ifndef FALSE
11
+#define FALSE 0
12
+#endif
13
+
14
+#ifndef OFF
15
+#define OFF 0
16
+#endif
17
+
18
+#define ENABLE_WINMF @ENABLE_WINMF@
19
obs-studio-21.0.3.tar.xz/plugins/win-mf/mf-plugin.cpp -> obs-studio-21.1.2.tar.xz/plugins/win-mf/mf-plugin.cpp Changed
39
 
1
@@ -1,26 +1,36 @@
2
 #include <obs-module.h>
3
-#include <util/profiler.h>
4
+#include "mf-config.hpp"
5
 
6
+#if ENABLE_WINMF
7
+#include <util/profiler.h>
8
 #include "mf-common.hpp"
9
 
10
 extern "C" extern void RegisterMFAACEncoder();
11
 extern void RegisterMFH264Encoders();
12
+#endif
13
 
14
 
15
 extern "C" bool obs_module_load(void)
16
 {
17
+#if ENABLE_WINMF
18
    MFStartup(MF_VERSION, MFSTARTUP_FULL);
19
 
20
    RegisterMFAACEncoder();
21
    RegisterMFH264Encoders();
22
+#endif
23
 
24
    return true;
25
 }
26
 
27
 extern "C" void obs_module_unload(void)
28
 {
29
+#if ENABLE_WINMF
30
    MFShutdown();
31
+#endif
32
 }
33
 
34
 OBS_DECLARE_MODULE()
35
+
36
+#if ENABLE_WINMF
37
 OBS_MODULE_USE_DEFAULT_LOCALE("win-mf", "en-US")
38
+#endif
39
obs-studio-21.1.2.tar.xz/plugins/win-wasapi/data/locale/fil-PH.ini Added
8
 
1
@@ -0,0 +1,6 @@
2
+AudioInput="Pagkuha ng Pangpasok sa Awdyio"
3
+AudioOutput="Kumuha ng Palabas na Awdiyo"
4
+Device="Aparato"
5
+Default="Kawalan"
6
+UseDeviceTiming="Gamitin ang Kawalan ng mga selyo ng oras"
7
+
8
obs-studio-21.1.2.tar.xz/plugins/win-wasapi/data/locale/he-IL.ini Added
8
 
1
@@ -0,0 +1,6 @@
2
+AudioInput="לכידת קלט שמע"
3
+AudioOutput="לכידת פלט קולי"
4
+Device="התקן"
5
+Default="ברירת מחדל"
6
+UseDeviceTiming="השתמש בהתקן חותמת זמן"
7
+
8
obs-studio-21.1.2.tar.xz/plugins/win-wasapi/data/locale/tl-PH.ini Added
8
 
1
@@ -0,0 +1,6 @@
2
+AudioInput="Pampasok Audio Capture"
3
+AudioOutput="Pamlabas na Audio Capture"
4
+Device="Ang Device"
5
+Default="Ang Default"
6
+UseDeviceTiming="Gumamit ng Device Timestamps"
7
+
8