Projects
Multimedia
obs-studio
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 56
View file
obs-studio.changes
Changed
@@ -1,4 +1,65 @@ ------------------------------------------------------------------- +Sat May 12 23:59:07 UTC 2018 - jimmy@boombatower.com + +- Update to version 21.1.2: + * libobs: Update version to 21.1.2 + * win-capture: Update D3D9 signature for Win10 April 2018 Update + * CI: Check out OSX branch of obs-browser + * cmake: Include windows style DLL when copying Qt files + * obs-browser: Update submodule to latest version + * UI/updater: Delete visual studio runtimes after execution + * deps/obs-scripting: Prevent python unload more than once + * obs-browser: Update submodule to latest version + * deps/obs-scripting: Don't allow unloading more than once + * enc-amf: Version 2.3.3 + * libobs: Update version to 21.1.0 + * deps/obs-scripting: Add obs_source_enum_filters + * rtmp-services: Update ingest list for Aparat.com + * mac-capture: Fix bug where audio device couldn't be changed + * UI: Add Help -> Crash Reports submenu + * UI: Add subdir param to OBSBasic::UploadLog + * UI: Specify whether crash/profiler/logs have prefix + * UI: Specify subdir/variable to save to for get_last_log + * rtmp-services: Update ingest list for Nood.tv + * UI: Replace gist with hastebin for log uploads + * UI/updater: Return false on integrity check failure + * UI/updater: Don't update modules of opposite arch + * UI/updater: Add automatic check/install for VS2017 redist + * UI/updater: Fix a few type size mismatch warnings + * UI/updater: Fix resource compiling bug + * UI/updater: Fix bug with restrict keyword on VS2017 + * UI/updater: Set license of windows update module to ISC + * UI/updater: Rewrite function + * Update translations from Crowdin + * UI: Refresh multiview projector menu per click + * cmake: Remove extraneous checks + * UI: Refresh system tray projector menu per click + * UI: Remove unnecessary casts + * Update README.rst + * libobs-opengl: Request at least 8 bits for alpha + * linux-capture: Request at least 8 bits for alpha + * UI: Remove check for updates on Linux + * cmake, libobs, win-capture: Fix VS2017 warnings + * cmake: Add .vs directories to .gitignore + * deps/obs-scripting: Fix tick function arg number + * obs-ffmpeg: Fix locale typo + * rtmp-services: Update ingest list for Restream.io + * deps/obs-scripting: Expose obs video info to swig + * image-source: Fade to transparency if slideshow list is cleared + * rtmp-services: Add Vimeo to services list + * libobs: Fix property text typo + * libobs/util: Fix blank config file values being ignored + * obs-ffmpeg: Use FFmpeg's "fast" AAC encoder by default + * obs-ffmpeg: Remove cutoff hack for AAC encoder + * win-mf: Deprecate plugin + * win-capture/graphics-hook: Fix memory offset calculation + * UI: Remove duplicate line + * obs-output: Update ftl-sdk version and ftl logging values + * enc-amf: Version 2.3.2 + * UI: Allow nested docks + * UI: Don't draw bounding boxes for sources without video flag + +------------------------------------------------------------------- Wed Feb 21 20:31:20 UTC 2018 - jimmy@boombatower.com - Update to version 21.0.3:
View file
obs-studio.spec
Changed
@@ -1,5 +1,5 @@ Name: obs-studio -Version: 21.0.3 +Version: 21.1.2 Release: 0 Summary: A recording/broadcasting program Group: Productivity/Multimedia/Video/Editors and Convertors
View file
_service
Changed
@@ -1,7 +1,7 @@ <services> <service name="tar_scm" mode="disabled"> <param name="versionformat">@PARENT_TAG@</param> - <param name="revision">refs/tags/21.0.3</param> + <param name="revision">refs/tags/21.1.2</param> <param name="url">git://github.com/jp9000/obs-studio.git</param> <param name="scm">git</param> <param name="changesgenerate">enable</param>
View file
_servicedata
Changed
@@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/jp9000/obs-studio.git</param> - <param name="changesrevision">90692c9791ed33648b40916fa353aa3f2df35f2f</param> + <param name="changesrevision">8718b33875695dc66eec701816d62158d01ac71e</param> </service> </servicedata>
View file
obs-studio-21.0.3.tar.xz/plugins/enc-amf/#Resources/HIDDEN_PARAMETERS.md
Deleted
@@ -1,1330 +0,0 @@ -For an unknown reason, there are hidden parameters in the Runtime that can be set. - -## AVC Properties -### Static -* FrameSize -* FrameRate -* ExtraData (Read-Only) -* Usage -* Profile<br/>Two new profiles are in the runtime, Constrained Base and Constrained High. -* Profile Level -* MaxOfLTRFrames -* ScanType -* QualityPreset - -### Dynamic -* RateControlMethod -* TargetBitrate -* PeakBitrate -* RateControlSkipFrameEnable -* MinQP -* MaxQP -* QPI -* QPP -* QPB -* VBVBufferSize -* VBVBufferFullness -* EnforceHRD -* MaxAUSize -* FillerDataEnable -* BPicturesDeltaQP -* ReferenceBPicturesDeltaQP -* HeaderInsertionSpacing -* IDRPeriod -* DeBlockingFilter -* IntraRefreshMBsNumberPerSlot -* SlicesPerFrame -* BPicturesPattern -* BReferenceEnable -* HalfPixel -* QuarterPixel - -### Unknown / New - -* **QualityEnhancementMode**<br/>So far always 0. -* **MaxNumRefFrames**<br/>Shouldn't this be a Capability instead? Could perhaps be used to control B-Pictures more. -* **MaxMBPerSec**<br/>Unknown value. -* **InstanceID** -* **EnableVBAQ**<br/>Unknown meaning. -* **RateControlPreanalysisEnable**<br/>Is this Two-Pass encoding? -* **GOPSize**<br/>Technically ignored, but still there in code. -* **AspectRatio** -* **NominalRange** -* **IntraRefreshNumOfStripes**<br/>New, was not here before. -* **SliceMode**<br/>New, was not here before. -* **MaxSliceSize**<br/>New, was not here before. -* **LowLatencyInternal** -* **CommonLowLatencyInternal** -* **SliceControlMode** -* **SliceControlSize** -* **CABACEnable**<br/>Not yet publicly available, but 16.10.3 always uses it anyway. -* **UniqueInstance** -* **EncoderMaxInstances** -* **MultiInstanceMode** -* **MultiInstanceCurrentQueue** -* **WaitForTask** - -23:23:47.388: [AMF Encoder] [CodecId] CodecId (Type: Int64, Index 0) -23:23:47.389: [AMF Encoder] Content Type: 0 -23:23:47.389: [AMF Encoder] Access: RW -23:23:47.389: [AMF Encoder] Values: -23:23:47.389: [AMF Encoder] Current: 5 -23:23:47.389: [AMF Encoder] Default: 5 -23:23:47.389: [AMF Encoder] Minimum: Empty -23:23:47.389: [AMF Encoder] Maximum: Empty -23:23:47.389: [AMF Encoder] Enumeration: -23:23:47.391: [AMF Encoder] H264 (5) -23:23:47.391: [AMF Encoder] UNKNOWN (0) -23:23:47.391: [AMF Encoder] H264SVC (8) -23:23:47.391: [AMF Encoder] UNKNOWN (0) -23:23:47.392: [AMF Encoder] [EngineType] EngineType (Type: Int64, Index 1) -23:23:47.392: [AMF Encoder] Content Type: 0 -23:23:47.392: [AMF Encoder] Access: RW -23:23:47.392: [AMF Encoder] Values: -23:23:47.393: [AMF Encoder] Current: 0 -23:23:47.393: [AMF Encoder] Default: 0 -23:23:47.393: [AMF Encoder] Minimum: Empty -23:23:47.393: [AMF Encoder] Maximum: Empty -23:23:47.393: [AMF Encoder] Enumeration: -23:23:47.393: [AMF Encoder] Auto (0) -23:23:47.394: [AMF Encoder] DX9 (1) -23:23:47.394: [AMF Encoder] DX11 (2) -23:23:47.395: [AMF Encoder] XVBA (3) -23:23:47.395: [AMF Encoder] [Usage] Usage (Type: Int64, Index 2) -23:23:47.395: [AMF Encoder] Content Type: 0 -23:23:47.395: [AMF Encoder] Access: RW -23:23:47.395: [AMF Encoder] Values: -23:23:47.395: [AMF Encoder] Current: 0 -23:23:47.396: [AMF Encoder] Default: 0 -23:23:47.396: [AMF Encoder] Minimum: Empty -23:23:47.396: [AMF Encoder] Maximum: Empty -23:23:47.397: [AMF Encoder] Enumeration: -23:23:47.397: [AMF Encoder] Transcoding (0) -23:23:47.397: [AMF Encoder] Ultra Low Latency (1) -23:23:47.397: [AMF Encoder] Low Latency (2) -23:23:47.397: [AMF Encoder] Webcam (3) -23:23:47.398: [AMF Encoder] [FrameSize] Width (Type: Size, Index 3) -23:23:47.398: [AMF Encoder] Content Type: 0 -23:23:47.398: [AMF Encoder] Access: RWX -23:23:47.398: [AMF Encoder] Values: -23:23:47.398: [AMF Encoder] Current: 1920x1080 -23:23:47.398: [AMF Encoder] Default: 1920x1080 -23:23:47.398: [AMF Encoder] Minimum: 64x64 -23:23:47.398: [AMF Encoder] Maximum: 4096x2160 -23:23:47.399: [AMF Encoder] [Profile] Profile (Type: Int64, Index 4) -23:23:47.399: [AMF Encoder] Content Type: 0 -23:23:47.399: [AMF Encoder] Access: RWX -23:23:47.400: [AMF Encoder] Values: -23:23:47.400: [AMF Encoder] Current: 77 -23:23:47.400: [AMF Encoder] Default: 77 -23:23:47.401: [AMF Encoder] Minimum: Empty -23:23:47.401: [AMF Encoder] Maximum: Empty -23:23:47.401: [AMF Encoder] Enumeration: -23:23:47.401: [AMF Encoder] Contrained Base (256) -23:23:47.401: [AMF Encoder] Baseline (66) -23:23:47.401: [AMF Encoder] Main (77) -23:23:47.401: [AMF Encoder] Contrained High (257) -23:23:47.402: [AMF Encoder] High (100) -23:23:47.402: [AMF Encoder] [ProfileLevel] Profile-Level (Type: Int64, Index 5) -23:23:47.402: [AMF Encoder] Content Type: 0 -23:23:47.402: [AMF Encoder] Access: RW -23:23:47.402: [AMF Encoder] Values: -23:23:47.402: [AMF Encoder] Current: 42 -23:23:47.402: [AMF Encoder] Default: 42 -23:23:47.402: [AMF Encoder] Minimum: Empty -23:23:47.403: [AMF Encoder] Maximum: Empty -23:23:47.403: [AMF Encoder] Enumeration: -23:23:47.403: [AMF Encoder] 1 (10) -23:23:47.403: [AMF Encoder] 1.1 (11) -23:23:47.403: [AMF Encoder] 1.2 (12) -23:23:47.403: [AMF Encoder] 1.3 (13) -23:23:47.404: [AMF Encoder] 2 (20) -23:23:47.404: [AMF Encoder] 2.1 (21) -23:23:47.404: [AMF Encoder] 2.2 (22) -23:23:47.404: [AMF Encoder] 3 (30) -23:23:47.404: [AMF Encoder] 3.1 (31) -23:23:47.404: [AMF Encoder] 3.2 (32) -23:23:47.404: [AMF Encoder] 4 (40) -23:23:47.404: [AMF Encoder] 4.1 (41) -23:23:47.405: [AMF Encoder] 4.2 (42) -23:23:47.405: [AMF Encoder] 5.0 (50) -23:23:47.405: [AMF Encoder] 5.1 (51) -23:23:47.405: [AMF Encoder] 5.2 (52) -23:23:47.405: [AMF Encoder] [QualityEnhancementMode] Quality Enhancement Mode (Type: Int64, Index 6) -23:23:47.405: [AMF Encoder] Content Type: 0 -23:23:47.405: [AMF Encoder] Access: -23:23:47.405: [AMF Encoder] Values: -23:23:47.406: [AMF Encoder] Current: Empty -23:23:47.406: [AMF Encoder] Default: 0 -23:23:47.406: [AMF Encoder] Minimum: Empty -23:23:47.406: [AMF Encoder] Maximum: Empty -23:23:47.409: [AMF Encoder] Enumeration: -23:23:47.410: [AMF Encoder] Disable (0) -23:23:47.410: [AMF Encoder] CGS (1) -23:23:47.410: [AMF Encoder] CGS Rewrite (2) -23:23:47.411: [AMF Encoder] MGS (3) -23:23:47.411: [AMF Encoder] [MaxOfLTRFrames] Max Of LTR (Type: Int64, Index 7) -23:23:47.411: [AMF Encoder] Content Type: 0 -23:23:47.412: [AMF Encoder] Access: RWX -23:23:47.412: [AMF Encoder] Values: -23:23:47.412: [AMF Encoder] Current: 0 -23:23:47.412: [AMF Encoder] Default: 0 -23:23:47.413: [AMF Encoder] Minimum: 0 -23:23:47.414: [AMF Encoder] Maximum: 2 -23:23:47.415: [AMF Encoder] [MaxNumRefFrames] MaxNumRefFrames (Type: Int64, Index 8) -23:23:47.415: [AMF Encoder] Content Type: 0 -23:23:47.416: [AMF Encoder] Access: RWX -23:23:47.416: [AMF Encoder] Values: -23:23:47.417: [AMF Encoder] Current: 4 -23:23:47.418: [AMF Encoder] Default: 4 -23:23:47.418: [AMF Encoder] Minimum: 1 -23:23:47.419: [AMF Encoder] Maximum: 16 -23:23:47.419: [AMF Encoder] [ConstraintSetFlags] ConstraintSetFlags (Type: Int64, Index 9) -23:23:47.419: [AMF Encoder] Content Type: 0 -23:23:47.419: [AMF Encoder] Access: RW -23:23:47.420: [AMF Encoder] Values: -23:23:47.420: [AMF Encoder] Current: 0 -23:23:47.420: [AMF Encoder] Default: 0 -23:23:47.420: [AMF Encoder] Minimum: 0 -23:23:47.420: [AMF Encoder] Maximum: 255 -23:23:47.420: [AMF Encoder] [MaxMBPerSec] MaxMBPerSec (Type: Int64, Index 10) -23:23:47.421: [AMF Encoder] Content Type: 0 -23:23:47.421: [AMF Encoder] Access: R -23:23:47.421: [AMF Encoder] Values: -23:23:47.421: [AMF Encoder] Current: 638704 -23:23:47.421: [AMF Encoder] Default: 638704 -23:23:47.421: [AMF Encoder] Minimum: 0 -23:23:47.421: [AMF Encoder] Maximum: 2147483647 -23:23:47.421: [AMF Encoder] [InstanceID] InstanceID (Type: Int64, Index 11) -23:23:47.421: [AMF Encoder] Content Type: 0
View file
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/detect-amf
Deleted
-(directory)
View file
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/detect-amf/CMakeLists.txt
Deleted
@@ -1,42 +0,0 @@ -project(detect-amf) - -set(detect-amf_HEADERS - ) - -set(detect-amf_SOURCES - ../amf.cpp - ../amf-capabilities.cpp - ../amf-encoder.cpp - ../amf-encoder-h264.cpp - ../amf-encoder-h265.cpp - ../api-base.cpp - ../api-d3d9.cpp - ../api-d3d11.cpp - ../utility.cpp - detect-amf-support.cpp - ) - -if(MSVC) - add_compile_options("$<$<CONFIG:RelWithDebInfo>:/MT>") -endif() - -add_definitions(-DPIPED_PROCESS) - -add_executable(detect-amf - ${detect-amf_SOURCES} - ${detect-amf_HEADERS}) - -target_link_libraries(detect-amf - ${enc-amf_LIBRARIES}) - -if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(_output_suffix "64") -else() - set(_output_suffix "32") -endif() - -set_target_properties(detect-amf - PROPERTIES - OUTPUT_NAME "detect-amf${_output_suffix}") - -install_obs_datatarget(detect-amf "obs-plugins/enc-amf")
View file
obs-studio-21.0.3.tar.xz/plugins/enc-amf/Source/detect-amf/detect-amf-support.cpp
Deleted
@@ -1,45 +0,0 @@ -/* - * Piped program that detects AMF support to prevent startup crashes - * Copyright (C) 2018 Hugh Bailey - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "plugin.h" -#include "api-base.h" -#include "amf.h" -#include "amf-capabilities.h" -#include <sstream> - -int main(void) { - SetErrorMode(SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS); - - try { - // AMF - Plugin::AMD::AMF::Initialize(); - - // Initialize Graphics APIs - Plugin::API::InitializeAPIs(); - - Plugin::AMD::CapabilityManager::Initialize(); - } catch (...) { - return 2; - } - - Plugin::AMD::CapabilityManager::Finalize(); - Plugin::API::FinalizeAPIs(); - Plugin::AMD::AMF::Finalize(); - return 3; -}
View file
obs-studio-21.0.3.tar.xz/.gitmodules -> obs-studio-21.1.2.tar.xz/.gitmodules
Changed
@@ -6,7 +6,7 @@ url = https://github.com/palana/Syphon-Framework.git [submodule "plugins/enc-amf"] path = plugins/enc-amf - url = https://github.com/jp9000/obs-studio_amf-encoder-plugin.git + url = https://github.com/Xaymar/obs-studio_amf-encoder-plugin.git [submodule "plugins/obs-browser"] path = plugins/obs-browser url = https://github.com/kc5nra/obs-browser.git
View file
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
@@ -1,6 +1,10 @@ # Make sure ccache is found export PATH=/usr/local/opt/ccache/libexec:$PATH +cd ./plugins/obs-browser +git checkout origin/osx +cd - + mkdir build cd build cmake -DENABLE_SPARKLE_UPDATER=ON \
View file
obs-studio-21.0.3.tar.xz/CMakeLists.txt -> obs-studio-21.1.2.tar.xz/CMakeLists.txt
Changed
@@ -60,7 +60,7 @@ endif() # Disable pointless constant condition warnings - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4127 /wd4201") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4127 /wd4201 /wd4456 /wd4457 /wd4458 /wd4459 /wd4595") endif() if(WIN32)
View file
obs-studio-21.0.3.tar.xz/README.rst -> obs-studio-21.1.2.tar.xz/README.rst
Changed
@@ -15,11 +15,11 @@ - Website: https://obsproject.com - - Help/Documentation/Guides: https://github.com/jp9000/obs-studio/wiki + - Help/Documentation/Guides: https://github.com/obsproject/obs-studio/wiki - Forums: https://obsproject.com/forum/ - - Build Instructions: https://github.com/jp9000/obs-studio/wiki/Install-Instructions + - Build Instructions: https://github.com/obsproject/obs-studio/wiki/Install-Instructions - Developer/API Documentation: https://obsproject.com/docs @@ -33,7 +33,7 @@ - If you wish to contribute code to the project, please make sure to read the coding and commit guidelines: - https://github.com/jp9000/obs-studio/blob/master/CONTRIBUTING.rst + https://github.com/obsproject/obs-studio/blob/master/CONTRIBUTING.rst - Developer/API documentation can be found here: https://obsproject.com/docs
View file
obs-studio-21.0.3.tar.xz/UI/data/locale.ini -> obs-studio-21.1.2.tar.xz/UI/data/locale.ini
Changed
@@ -139,3 +139,11 @@ [nn-NO] Name=Norsk Nynorsk +[fil-PH] +Name=Wikang Filipino + +[sq-AL] +Name=gjuha shqipe + +[tl-PH] +Name=Wikang Tagalog
View file
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
@@ -546,12 +546,27 @@ Basic.Settings.Output.Simple.Warn.Lossless="Предупреждение: Оригиналното качество създава огромни файлове! Запис настроен на Оригинално качество може да заема над 7GB дисково пространство на минута, ако резолюцията и кадрите са високи. Не се препоръчва ако не разполагате със много пространство." Basic.Settings.Output.Simple.Warn.Lossless.Msg="Сигурни ли сте че искате да ползвате оригиналното качество на записа?" Basic.Settings.Output.Simple.Warn.Lossless.Title="Предупреждение при ползване на Оригинално Качество!" +Basic.Settings.Output.Simple.Warn.MultipleQSV="Предупреждение: Не можете да ползвате различни и отделни QSV енкодери докато предавате и записвате. Ако искате да предавате и да записвате едновременно, моля променете един от енкодерите." +Basic.Settings.Output.Simple.Encoder.Software="Програмно (x264)" +Basic.Settings.Output.Simple.Encoder.Hardware.QSV="Хардуеър (QSV)" +Basic.Settings.Output.Simple.Encoder.Hardware.AMD="Хардуеър (AMD)" +Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Хардуеър (NVENC)" +Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Програмно (x264 ниска употреба на процесора, увеличава размера на записа)" Basic.Settings.Output.VideoBitrate="Видео битрейт" Basic.Settings.Output.AudioBitrate="Аудио битрейт" Basic.Settings.Output.Reconnect="Автоматично повторно свързване" Basic.Settings.Output.RetryDelay="Отлагане на повторно свързване (секунди)" Basic.Settings.Output.MaxRetries="Максимален брой повторни опити" - +Basic.Settings.Output.Advanced="Включи Допълнителни Настройки за Енкодера" +Basic.Settings.Output.EncoderPreset="Настройка на Енкодера (по-висока = по-малко процесор)" +Basic.Settings.Output.CustomEncoderSettings="Допълнителни Настройки на Енкодера" +Basic.Settings.Output.CustomMuxerSettings="Допълнителни Настройки при Смесване" +Basic.Settings.Output.NoSpaceFileName="Създавай името на записа без Празни Места" + +Basic.Settings.Output.Adv.Rescale="Умащабяване на Изхода" +Basic.Settings.Output.Adv.AudioTrack="Звукова Писта" +Basic.Settings.Output.Adv.Streaming="Предаване" +Basic.Settings.Output.Adv.ApplyServiceSettings="Ползвай настройките на енкодера от платформата" Basic.Settings.Output.Adv.Audio.Track1="Писта 1" Basic.Settings.Output.Adv.Audio.Track2="Писта 2" Basic.Settings.Output.Adv.Audio.Track3="Писта 3" @@ -588,7 +603,9 @@ Basic.Settings.Output.Adv.FFmpeg.GOPSize="Интервал между ключови кадри (кадри)" Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat="Покажи всички кодеци (дори и ако са несъвместими)" +FilenameFormatting.completer="%ХХГГ-%ММ-%ДД %чч-%мм-%сс\n%ГГ-%ММ-%ДД %чч-%мм-%сс\n%Г-%м-%д %Ч-%М-%С\n%г-%м-%д %Ч-%М-%С\n%а %Г-%м-%д %Ч-%М-%С\n%А %Г-%м-%д %Ч-%М-%С\n%Г-%б-%д %Ч-%М-%С\n%Г-%Б-%д %Ч-%М-%С\n%Г- %м-%д %И-%М-%С-%п\n%Г-%м-%д %Ч-%М-%С-%з\n%Г-%м-%д %Ч-%М-%С-%ст" +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" Basic.Settings.Video="Видео" Basic.Settings.Video.Adapter="Видео адаптер:" @@ -614,6 +631,10 @@ Basic.Settings.Audio="Аудио" Basic.Settings.Audio.SampleRate="Честота на дискретизацията" Basic.Settings.Audio.Channels="Канали" +Basic.Settings.Audio.MeterDecayRate="Брой за Звуков Разпад" +Basic.Settings.Audio.MeterDecayRate.Fast="Бързо" +Basic.Settings.Audio.MeterDecayRate.Medium="Средно (ТИП I PPM)" +Basic.Settings.Audio.MeterDecayRate.Slow="Бавно (Type II PPM)" Basic.Settings.Audio.MultiChannelWarning.Enabled="ПРЕДУПРЕЖДЕНИЕ: Включен е Surround sound." Basic.Settings.Audio.MultichannelWarning="Ако предавате, проверете дали вашата услуга за стрийминг поддържа едновременно приемане на съраунд звук и възпроизвеждане на съраунд звук. Twitch, Facebook 360 Live, Mixer RTMP, Smashcast са примери, при които съраунд звукът е напълно поддържан. Въпреки че, Facebook Live и YouTube Live подържат и приемат съраунд, Facebook Live пемиксира към стерео звук, а YouTube Live възпроизвежда само два канала.\n\nЗвуковите филтъри на OBS подържат съраунд звук, въпреки това VST поддръжката не е гарантирана." Basic.Settings.Audio.MultichannelWarning.Title="Включи записването на съраунд звук?" @@ -635,6 +656,7 @@ Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="Над Нормата" Basic.Settings.Advanced.General.ProcessPriority.Normal="Нормален" Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="Под Нормата" +Basic.Settings.Advanced.General.ProcessPriority.Idle="Свободен" Basic.Settings.Advanced.FormatWarning="Предупреждение: Цветните формати освен NV12 се ползват главно при записи и не са препоръчани при предаване. Предаването може да упражни завишено ползване на Процесора поради прекодиране на форматите." Basic.Settings.Advanced.Audio.BufferingTime="Време за буфериране на звук" Basic.Settings.Advanced.Video.ColorFormat="Формат на цвета" @@ -644,22 +666,37 @@ Basic.Settings.Advanced.Video.ColorRange.Full="Пълен" Basic.Settings.Advanced.Audio.MonitoringDevice="Устройство за Звуково възпроизвеждане" Basic.Settings.Advanced.Audio.MonitoringDevice.Default="По подразбиране" +Basic.Settings.Advanced.Audio.DisableAudioDucking="Изключи намалянето на звука при разговори" +Basic.Settings.Advanced.StreamDelay="Забавяне на Предаването" Basic.Settings.Advanced.StreamDelay.Duration="Продължителност (секунди)" Basic.Settings.Advanced.StreamDelay.Preserve="Запази точката на прекъсване (увеличете забавянето) при повторно свързване" +Basic.Settings.Advanced.StreamDelay.MemoryUsage="Приблизително използвана памет: %1 MB" Basic.Settings.Advanced.Network="Мрежа" +Basic.Settings.Advanced.Network.BindToIP="Свържи към IP" +Basic.Settings.Advanced.Network.EnableNewSocketLoop="Позволи нов мрежов код" +Basic.Settings.Advanced.Network.EnableLowLatencyMode="Режим на ниска латенция" Basic.AdvAudio="Допълнителни Звукови Характеристики" Basic.AdvAudio.Name="Име" Basic.AdvAudio.Volume="Сила на звука (%)" Basic.AdvAudio.Mono="Премиксирай към Mono звук" +Basic.AdvAudio.Panning="Накланяне" +Basic.AdvAudio.SyncOffset="Забавяне (мс)" +Basic.AdvAudio.Monitoring="Звуков Мониториниг " Basic.AdvAudio.Monitoring.None="Мониторът Изключен" +Basic.AdvAudio.Monitoring.MonitorOnly="Само на Монитора (заглуши изхода)" +Basic.AdvAudio.Monitoring.Both="Монитор и Изход" Basic.AdvAudio.AudioTracks="Писти" Basic.Settings.Hotkeys="Горещи клавиши" +Basic.Settings.Hotkeys.Pair="Клавишни комбинации ползвани от `%1` действат като ключ" Basic.Hotkeys.SelectScene="Премини към сцена" +Basic.SystemTray.Show="Покажи" +Basic.SystemTray.Hide="Скрий" +Basic.SystemTray.Message.Reconnecting="Връзката Загубена. Свързване..." Hotkeys.Insert="Вмъкни" Hotkeys.Delete="Изтрий" @@ -668,9 +705,33 @@ Hotkeys.PageUp="Страница нагоре" Hotkeys.PageDown="Страница надолу" Hotkeys.NumLock="Num Lock" +Hotkeys.ScrollLock="Скрол Лок" +Hotkeys.CapsLock="Капс Лок" +Hotkeys.Backspace="Връщане" +Hotkeys.Tab="Таб" +Hotkeys.Print="Принт" +Hotkeys.Pause="Пауза" +Hotkeys.Left="Ляво" +Hotkeys.Right="Дясно" +Hotkeys.Up="Горе" +Hotkeys.Down="Долу" +Hotkeys.Windows="Windows" +Hotkeys.Super="Супер" +Hotkeys.Menu="Меню" +Hotkeys.Space="Спейс" +Hotkeys.NumpadNum="Нумпад %1" +Hotkeys.NumpadMultiply="Нумпад Умножи" +Hotkeys.NumpadDivide="Нумпад Раздели" Hotkeys.NumpadAdd="Цифрова клавиатура +" Hotkeys.NumpadSubtract="Цифрова клавиатура -" Hotkeys.NumpadDecimal="Цифрова клавиатура ." +Hotkeys.AppleKeypadNum="%1 (Клавиатура)" +Hotkeys.AppleKeypadMultiply="* (Клавиатура)" +Hotkeys.AppleKeypadDivide="/ (Клавиатура)" +Hotkeys.AppleKeypadAdd="+ (Клавиатура)" +Hotkeys.AppleKeypadSubtract="- (Клавиатура)" +Hotkeys.AppleKeypadDecimal=". (Клавиатура)" +Hotkeys.AppleKeypadEqual="= (Клавиатура)" Hotkeys.MouseButton="Мишка %1" Mute="Заглуши"
View file
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
@@ -631,6 +631,9 @@ Basic.Settings.Audio="Zvuk" Basic.Settings.Audio.SampleRate="Vzorkovací frekvence" Basic.Settings.Audio.Channels="Kanály" +Basic.Settings.Audio.MeterDecayRate.Fast="Rychle" +Basic.Settings.Audio.MeterDecayRate.Medium="Střední (typ I PPM)" +Basic.Settings.Audio.MeterDecayRate.Slow="Pomalu (typ II PPM)" Basic.Settings.Audio.MultiChannelWarning.Enabled="VAROVÁNÍ: Prostorový zvuk je zapnut." 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." Basic.Settings.Audio.MultichannelWarning.Title="Povolit prostorový zvuk?"
View file
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
@@ -535,6 +535,9 @@ Basic.MainMenu.Help.Logs.UploadLastLog="Upload &Last Log File" Basic.MainMenu.Help.Logs.ViewCurrentLog="&View Current Log" Basic.MainMenu.Help.CheckForUpdates="Check For Updates" +Basic.MainMenu.Help.CrashLogs="Crash &Reports" +Basic.MainMenu.Help.CrashLogs.ShowLogs="&Show Crash Reports" +Basic.MainMenu.Help.CrashLogs.UploadLastLog="Upload &Last Crash Report" # basic mode settings dialog Basic.Settings.ProgramRestart="The program must be restarted for these settings to take effect."
View file
obs-studio-21.1.2.tar.xz/UI/data/locale/fil-PH.ini
Added
@@ -0,0 +1,748 @@ + + +OK="Sige" +Apply="Ilagay" +Cancel="Kanselahin" +Close="Sarado" +Save="Mag-impok" +Discard="Ialis" +Disable="Huwag paganahin" +Yes="Oo" +No="Hindi" +Add="Idagdag" +Remove="Tanggalin" +Rename="Baguhin ang pangalan" +Interact="Makipag-ugnayan" +Filters="Mga salaan" +Properties="Mga pag-aari" +MoveUp="Gumalaw pataas" +MoveDown="Bumaba" +Settings="Mga pagtatakda" +Display="Ipamalas" +Name="Pangalan" +Exit="Labasan" +Mixer="Panghalo" +Browse="Supling" +Mono="Mono" +Stereo="Stereo" +DroppedFrames="Bumaba ang mga frame %1 (%2%)" +StudioProgramProjector="Fullscreen Projector (Programa)" +PreviewProjector="Fullscreen Projector (Preview)" +SceneProjector="Fullsreen Projector (Eksena)" +SourceProjector="Fullscreen Projector (Pinagmulan)" +StudioProgramWindow="Windowed Projector (Programa)" +PreviewWindow="Windowed Projector (Preview)" +SceneWindow="Windowed Projector (Eksena)" +SourceWindow="Windowed Projector (Pinagmulan)" +MultiviewProjector="Multiview (Fullscreen)" +MultiviewWindowed="Multiview (Windowed)" +Clear="Linisin" +Revert="Ibalik" +Show="Ipakita" +Hide="Itago" +UnhideAll="Huwag itago lahat" +Untitled="Walang pamagat" +New="Bago" +Duplicate="Katulad" +Enable="Paganahin" +DisableOSXVSync="Huwag Paganahin OSX V-Sync" +ResetOSXVSyncOnExit="I-reset ang OSX V-Sync sa Labasan" +HighResourceUsage="Ang Encoding ay labis ang karga! Isaalang alang ang pagbaba ng video settings o gumamit ng mas mabilis na encoding preset." +Transition="Paglipat" +QuickTransitions="Mabilis na Paglipat" +Left="Kaliwa" +Right="Kanan" +Top="Pinakamataas" +Bottom="Kailaliman" +Reset="Baguhin" +Hours="Oras" +Minutes="Minuto" +Seconds="Segundo" +Deprecated="Hindi na ginagamit" +ReplayBuffer="Replay Buffer" +Import="Mag-angkat" +Export="I-export" +Copy="Kopyahin" +Paste="I-paste" +PasteReference="I-paste (Banggit)" +PasteDuplicate="I-paste (Pangalawang salin)" +RemuxRecordings="Mga Pagtatala ng Remux" +Next="Susunod" +Back="Bumalik" +Defaults="Mga hindi pagsipot" +HideMixer="Itago sa panghalo" +TransitionOverride="Override na ang Paglipat" +None="Wala" +StudioMode.Preview="Balikan" +StudioMode.Program="Programa" +ShowInMultiview="Ipakita sa Multiview" + +AlreadyRunning.Title="Tumatakbo na ngayon ang OBS" +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." +AlreadyRunning.LaunchAnyway="Maglunsad parin" + +Copy.Filters="Kopyahin ang mga panala" +Paste.Filters="I-paste ang mga panala" + +BandwidthTest.Region="Rehiyon" +BandwidthTest.Region.US="Estados Unidos" +BandwidthTest.Region.EU="Europa" +BandwidthTest.Region.Asia="Asya" +BandwidthTest.Region.Other="Iba pa" + +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." +Basic.FirstStartup.RunWizard.BetaWarning="(Tandaan: Ang dalubhasang kusang pagkonpigurasyon ay kasalukuyang nasa beta)" +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." + +Basic.AutoConfig="Dalubhasang Kusang Konpigurasyon" +Basic.AutoConfig.Beta="Dalubhasang Kusang Konpigurasyon (Beta)" +Basic.AutoConfig.ApplySettings="Ilapat ang mga Pagtatakda" +Basic.AutoConfig.StartPage="Paggamit ng Impormasyon" +Basic.AutoConfig.StartPage.SubTitle="Tukuyin ang tamang program na gusto mong gamitin" +Basic.AutoConfig.StartPage.PrioritizeStreaming="Optimize para sa streaming, pangalawa ay ang recording" +Basic.AutoConfig.StartPage.PrioritizeRecording="Optimize para sa recording, Hindi ako mag streaming" +Basic.AutoConfig.VideoPage="Ang mga video settings" +Basic.AutoConfig.VideoPage.SubTitle="Tukuyin ang naayong video settings na gusto mong gamitin" +Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="Kasulukuyang gamitin(%1x%2)" +Basic.AutoConfig.VideoPage.BaseResolution.Display="I-Display %1 (%2x%3)" +Basic.AutoConfig.VideoPage.FPS.UseCurrent="Pangsulukuyang Gamitin (%1)" +Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="Sa 60 or kaya sa 30, Pero mas mabuti 60 kung maaari" +Basic.AutoConfig.VideoPage.FPS.PreferHighRes="Sa 60 or kaya sa 30, Pero mas mabuti 60 para sa mas magandang resolusyon" +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." +Basic.AutoConfig.StreamPage="Mga batis ng impormasyon" +Basic.AutoConfig.StreamPage.SubTitle="Pakiusap ilagay ang iyong impormasyon pang stream" +Basic.AutoConfig.StreamPage.Service="Serbisyo" +Basic.AutoConfig.StreamPage.Service.ShowAll="Ipakita lahat..." +Basic.AutoConfig.StreamPage.Server="Serber" +Basic.AutoConfig.StreamPage.StreamKey="Ang susi ng iyong stream" +Basic.AutoConfig.StreamPage.StreamKey.LinkToSite="(link)" +Basic.AutoConfig.StreamPage.PerformBandwidthTest="I-estima ang bitrate kasama ang pag eksamina ng bandwidth (maaaring tumagal ng ilang minuto)" +Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Piliin ang hardware encoding" +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" +Basic.AutoConfig.StreamPage.StreamWarning.Title="Babala sa pag stream" +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" +Basic.AutoConfig.TestPage="Huling Resulta" +Basic.AutoConfig.TestPage.SubTitle.Testing="Ang program na ito ay isinasagawa ang mga set para eksamin para matantiya ang pinakamainam na settings" +Basic.AutoConfig.TestPage.SubTitle.Complete="Ang iyong pagsusuri ay kumpleto na" +Basic.AutoConfig.TestPage.TestingBandwidth="Pagsasagawa ng bandwidth test, ito ay maaaring tumagal ng ilang minuto..." +Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Kumukunekta sa: %1..." +Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Bigong kumunekta sa alin mang server, paki tignan ang koneksyon ng iyong internet at subukan ulet." +Basic.AutoConfig.TestPage.TestingBandwidth.Server="Pagsusuri ng bandwidth para sa: %1" +Basic.AutoConfig.TestPage.TestingStreamEncoder="Testingin ang stream encoder, ito ay maaaring tumagal ng isang minuto..." +Basic.AutoConfig.TestPage.TestingRecordingEncoder="Testingin ang recording encoder, ito ay maaaring tumagal ng isang minuto..." +Basic.AutoConfig.TestPage.TestingRes="Testingin ang resolusyon, ito ay maaaring tumagal ng ilang minuto..." +Basic.AutoConfig.TestPage.TestingRes.Fail="Bigong iandar ang encoder" +Basic.AutoConfig.TestPage.TestingRes.Resolution="Testingin %1x%2 %3 FPS..." +Basic.AutoConfig.TestPage.Result.StreamingEncoder="Streaming Encoder" +Basic.AutoConfig.TestPage.Result.RecordingEncoder="Recording Encoder" +Basic.AutoConfig.TestPage.Result.Header="Ang program na ito ay napagkaisahan na ang settings tinatayang lahat ay perpekto para sayo:" +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." + +Basic.Stats="Ang mga Statisktika" +Basic.Stats.CPUUsage="Ang nagamit na CPU" +Basic.Stats.HDDSpaceAvailable="Ang magagamit na espasyo ng HDD" +Basic.Stats.MemoryUsage="Ang nagamit na Memory" +Basic.Stats.AverageTimeToRender="Ang average time para ma render ang frame" +Basic.Stats.SkippedFrames="Laktawin ang frames dahil sa encoding lag" +Basic.Stats.MissedFrames="Nalampasan ang frames dahil sa rendering lag" +Basic.Stats.Output.Stream="Stream" +Basic.Stats.Output.Recording="Recording" +Basic.Stats.Status="Ang estado" +Basic.Stats.Status.Recording="Recording" +Basic.Stats.Status.Live="Naka LIVE" +Basic.Stats.Status.Reconnecting="Muling kumukonekta" +Basic.Stats.Status.Inactive="Hindi na aktiba" +Basic.Stats.DroppedFrames="Naihulog na Frames (Network)" +Basic.Stats.MegabytesSent="Ang total na Data Output" +Basic.Stats.Bitrate="Bitrate" + +Updater.Title="May bagong update na available" +Updater.Text="May bagong update na magagamit:" +Updater.UpdateNow="Mag update ngayon" +Updater.RemindMeLater="Paalalahanan mo ako mamaya" +Updater.Skip="Laktawan ang Bersyon" +Updater.Running.Title="Programa na kasalukuyang aktibo" +Updater.Running.Text="Ang mga output ay kasalukuyang aktibo, mangyaring i-shut down ang anumang mga aktibong output bago sinusubukang i-update" +Updater.NoUpdatesAvailable.Title="Walang magagamit na mga update" +Updater.NoUpdatesAvailable.Text="Walang mga update ang kasalukuyang magagamit" +Updater.FailedToLaunch="Nabigong ilunsad ang updater" +Updater.GameCaptureActive.Title="Kumuha ng laro na aktibo" +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." + +QuickTransitions.SwapScenes="Swap Preview / Output Scenes Pagkatapos Transitioning" +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." +QuickTransitions.DuplicateScene="Gayahin ang eksena" +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)." +QuickTransitions.EditProperties="Gayahin ang mga pinagmulang" +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." +QuickTransitions.HotkeyName="Ilipat ng mabilis: %1" + +Basic.AddTransition="Magdagdag ng configurable na transisyon" +Basic.RemoveTransition="Tangalin ang configurable transition" +Basic.TransitionProperties="Mga Properties ng Transisyon" +Basic.SceneTransitions="Mga transisyon ng mga eksena" +Basic.TransitionDuration="Katagalan" +Basic.TogglePreviewProgramMode="Ang Studio Mode" + +TransitionNameDlg.Text="Pakilagay ang pangalan ng transisyon" +TransitionNameDlg.Title="Pangalan ng Transisyon" + +TitleBar.Profile="Ang Profile" +TitleBar.Scenes="Ang mga Eksena" + +NameExists.Title="Ang pangalan ay umiiral na" +NameExists.Text="Ang pangalan ay nagamit na." + +NoNameEntered.Title="Pakilagay ang balidong pangalan" +NoNameEntered.Text="Hindi pwede gumamit ng walang pangalan." + +ConfirmStart.Title="Magsimula ng mag Stream?"
View file
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
@@ -28,16 +28,21 @@ Mono="מונו" Stereo="סטריאו" DroppedFrames="השמטת תמונות %1 (%2%)" +StudioProgramProjector="מקרן מסך מלא (תוכנה)" PreviewProjector="מקרן מסך מלא (תצוגה מקדימה)" SceneProjector="מקרן מסך מלא (סצנה)" SourceProjector="מקרן מסך מלא (מקור)" +StudioProgramWindow="מקרן חלון (תוכנה)" PreviewWindow="הקרנה בחלון (תצוגה מקדימה)" SceneWindow="הקרנה בחלון (סצנה)" SourceWindow="הקרנה בחלון (מקור)" +MultiviewProjector="תצוגה מרובה (מסך מלא)" +MultiviewWindowed="תצוגה מרובה (חלון)" Clear="נקה" Revert="החזר לקדמותו" Show="הצג" Hide="הסתר" +UnhideAll="הצג הכל" Untitled="ללא כותרת" New="חדש" Duplicate="שכפל" @@ -66,6 +71,13 @@ RemuxRecordings="רימיקס הקלטות" Next="הבא" Back="קודם" +Defaults="ברירות מחדל" +HideMixer="מוחבא בתוך המיקסר" +TransitionOverride="מעבר דרוס" +None="ללא" +StudioMode.Preview="תצוגה מקדימה" +StudioMode.Program="תוכנה" +ShowInMultiview="הראה בתצוגה מרובה" AlreadyRunning.Title="OBS פועל כבר" AlreadyRunning.Text="OBS פועל כבר! אלא אם התכוונת לעשות את זה, אנא סגור כל מופע קיים לפני נסיון להפעיל מופע חדש. אנא בדוק אם קיים מופע הגדר ממוזער במגש המערכת." @@ -110,6 +122,7 @@ Basic.AutoConfig.StreamPage.PreferHardwareEncoding="העדף קידוד בחומרה" Basic.AutoConfig.StreamPage.PreferHardwareEncoding.ToolTip="קידוד בחומרה מבטלת רוב השימוש ב- CPU, אבל עשויים לדרוש קצב נתונים גבוה יותר בכדי להשיג את אותה רמת איכות." Basic.AutoConfig.StreamPage.StreamWarning.Title="אזהרת זרם" +Basic.AutoConfig.StreamPage.StreamWarning.Text="בדיקת רוחב הפס עומדת להזרים נתוני וידאו אקראיים ללא שמע לערוץ שלך. אם אתה מסוגל, מומלץ לבטל באופן זמני את שמירת קטעי הוידאו של הזרם וקבע את הזרם לפרטי עד לאחר שהבדיקה תסתיים. להמשיך?" Basic.AutoConfig.TestPage="תוצאות סופיות" Basic.AutoConfig.TestPage.SubTitle.Testing="התוכנית מתבצעת עכשיו סט של בדיקות כדי להעריך את ההגדרות המיטביות" Basic.AutoConfig.TestPage.SubTitle.Complete="הבדיקה הסתיימה" @@ -156,6 +169,7 @@ Updater.NoUpdatesAvailable.Text="אין עדכונים זמינים כעת" Updater.FailedToLaunch="נכשלה הפעלת העידכון" Updater.GameCaptureActive.Title="לכידת משחק פעיל" +Updater.GameCaptureActive.Text="לכידת משחק נמצאת כעת בשימוש. בבקשה סגור את המשחקים/תוכנות שנמצאים בלכידה (או הפעל מחדש את ווינדוס) ונסה שינת." QuickTransitions.SwapScenes="החלף סצינות תצוגה מקדימה/פלט לאחר המעבר" QuickTransitions.SwapScenesTT="החלף הסצינות של התצוגה המקדימה ושל הפלט לאחר המעבר (באם הסצינה המקורית של הפלט עדיין קיימת). \n פעולה זו לא תבטל כל שינוי שייתכן ובוצע לסצינה המקורית של הפלט." @@ -200,6 +214,7 @@ Output.StartStreamFailed="נכשלה הפעלת זרימה" Output.StartRecordingFailed="נכשלה הפעלת הקלטה" Output.StartReplayFailed="נכשלה הפעלת מאגר החוזר" +Output.StartFailedGeneric="הפלט נכשל. בבקשה בדוק את הרישומים עבור. \n\nNote: אם אתה משתמש בNVNEC או AMD מקודדים, הקפד שמנהלי ההתקן של הכרטיס מסך מעודכנים." Output.ConnectFail.Title="ההתחברות נכשלה" Output.ConnectFail.BadPath="URL לא חוקי של נתיב או חיבור. נא בדוק את ההגדרות שלך כדי לוודא כי הם נכונים." @@ -214,6 +229,8 @@ Output.RecordNoSpace.Msg="אין די שטח דיסק כדי להמשיך הקלטה." Output.RecordError.Title="שגיאה הקלטה" Output.RecordError.Msg="אירעה שגיאה לא מוגדרת בזמן ההקלטה." +Output.ReplayBuffer.NoHotkey.Title="אין מקש קיצור שנבחר!" +Output.ReplayBuffer.NoHotkey.Msg="אין hotkey שמור למאגר החוזר. בבקשה הגדר את \"שמור\" hotkey לשימוש עבור שמירת מאגר חוזר להקלטות." Output.BadPath.Title="נתיב קובץ לא תקין" Output.BadPath.Text="נתיב פלט הקובץ שהוגדר אינו חוקי. נא בדוק את הגדרות כדי לוודא שנתיב קובץ תקני נקבע." @@ -295,6 +312,8 @@ RenameProfile.Title="שנה שם פרופיל" +Basic.Main.MixerRename.Title="שינוי שם מקור שמע" +Basic.Main.MixerRename.Text="בבקשה הכנס את שם קובץ השמע" Basic.Main.PreviewDisabled="תצוגה מקדימה אינה זמינה כעת" @@ -374,6 +393,7 @@ Basic.Main.Scenes="סצינות" Basic.Main.Sources="מקורות" +Basic.Main.Controls="בקרה" Basic.Main.Connecting="מתחבר..." Basic.Main.StartRecording="התחל הקלטה" Basic.Main.StartReplayBuffer="התחל מאגר החוזר" @@ -429,19 +449,27 @@ Basic.MainMenu.View="&מבט" Basic.MainMenu.View.Toolbars="&סרגלי כלים" +Basic.MainMenu.View.Docks="עגינה" +Basic.MainMenu.View.Docks.ResetUI="איפוס UI" +Basic.MainMenu.View.Docks.LockUI="נעילת UI" Basic.MainMenu.View.Toolbars.Listboxes="&תיבות רשימה" Basic.MainMenu.View.SceneTransitions="&מעברי סצינות" Basic.MainMenu.View.StatusBar="&שורת מצב" +Basic.MainMenu.View.Fullscreen.Interface="ממשק מסך מלא" Basic.MainMenu.SceneCollection="אוסף סצינות(&S)" Basic.MainMenu.Profile="פרופיל(&P)" Basic.MainMenu.Profile.Import="ייבא פרופיל" Basic.MainMenu.Profile.Export="ייצא פרופיל" +Basic.MainMenu.SceneCollection.Import="ייבא אוסף סצינות" +Basic.MainMenu.SceneCollection.Export="ייצא אוסף סצנות" Basic.MainMenu.Profile.Exists="הפרופיל קיים כבר" +Basic.MainMenu.SceneCollection.Exists="אוסף הסצנות כבר קיים" Basic.MainMenu.Tools="& כלים" Basic.MainMenu.Help="עזרה(&H)" +Basic.MainMenu.Help.HelpPortal="עזרה & פורטל" Basic.MainMenu.Help.Website="בקר אתר(&W)" Basic.MainMenu.Help.Logs="קבצי יומן רישום(&L)" Basic.MainMenu.Help.Logs.ShowLogs="הצג קבצי יומן רישום(&S)" @@ -458,10 +486,12 @@ Basic.Settings.General.Theme="ערכת עיצוב" Basic.Settings.General.Language="שפה" Basic.Settings.General.EnableAutoUpdates="בדוק באופן אוטומטי אם יש עדכונים בעת ההפעלה" +Basic.Settings.General.OpenStatsOnStartup="פתח סטטיסטיקת דיאלוג בעת ההפעלה" Basic.Settings.General.WarnBeforeStartingStream="הצג תיבת דו-שיח לאישור בעת הפעלת זרם נתונים" Basic.Settings.General.WarnBeforeStoppingStream="הצג תיבת דו-שיח לאישור בעת עצירת זרם נתונים" Basic.Settings.General.Projectors="מקרנים" Basic.Settings.General.HideProjectorCursor="הסתר את הסמן מעל מקרנים" +Basic.Settings.General.ProjectorAlwaysOnTop="הפוך מקרנים תמיד בעליון" Basic.Settings.General.Snapping="יישור הצמדת מקור" Basic.Settings.General.ScreenSnapping="הצמד מקורות לקצה המסך" Basic.Settings.General.CenterSnapping="הצמד מקורות למרכז אופקי ואנכי" @@ -469,10 +499,19 @@ Basic.Settings.General.SnapDistance="רגישות צמד" Basic.Settings.General.RecordWhenStreaming="הקלטה אוטומטית בעת הזרמת נתונים" Basic.Settings.General.KeepRecordingWhenStreamStops="המשך הקלטה כאשר הזרמת נתונים מפסיקה" +Basic.Settings.General.ReplayBufferWhileStreaming="הפעל מאגר חוזר באופן אוטומטי בעת הזרמה" +Basic.Settings.General.KeepReplayBufferStreamStops="השאר את המאגר החוזר פעיל כאשר ההזרמה מפסיקה" Basic.Settings.General.SysTray="מגש המערכת" Basic.Settings.General.SysTrayWhenStarted="מזער למגש המערכת בתחילה" Basic.Settings.General.SystemTrayHideMinimize="מזער תמיד למגש המערכת במקום שורת המשימות" Basic.Settings.General.SaveProjectors="שמור את המקרנים ביציאה" +Basic.Settings.General.SwitchOnDoubleClick="מעבר לסצנה על ידי הקלקה כפולה" +Basic.Settings.General.StudioPortraitLayout="אפשר פריסה אנכית/דיוקן" +Basic.Settings.General.MultiviewLayout="פריסת תצוגה מרובה" +Basic.Settings.General.MultiviewLayout.Horizontal.Top="אופקי, עליון" +Basic.Settings.General.MultiviewLayout.Horizontal.Bottom="אופקי, תחתון" +Basic.Settings.General.MultiviewLayout.Vertical.Left="אנכי, שמאל" +Basic.Settings.General.MultiviewLayout.Vertical.Right="אנכי, ימין" Basic.Settings.Stream="זרם נתונים" Basic.Settings.Stream.StreamType="סוג זרם נתונים" @@ -592,6 +631,14 @@ Basic.Settings.Audio="אודיו" Basic.Settings.Audio.SampleRate="קצב דגימה" Basic.Settings.Audio.Channels="ערוצים" +Basic.Settings.Audio.MeterDecayRate="קצב דעיכה ממד שמע" +Basic.Settings.Audio.MeterDecayRate.Fast="מהיר" +Basic.Settings.Audio.MeterDecayRate.Medium="בינוני (סוג I PPM)" +Basic.Settings.Audio.MeterDecayRate.Slow="איטי (סוג II PPM)" +Basic.Settings.Audio.MultiChannelWarning.Enabled="אזהרה: שמע צליל היקפי מאופשר." +Basic.Settings.Audio.MultichannelWarning="אם הזרימה, בדוק את הזרמת השירות תומך בסראונד סאונד להבלע ואת היקפי הסראונד פלייבק. טוויץ',פייסבוק,360 Liev, מיקסר RTMP, Smashcast דוגמאות לאיפה שסראונד סאונד הוא נתמך. למרות פייסבוק לייב ויוטיוב לייב שניהם מאפשרים סראונד להבלע, פייסבוק לייב משנה לסטריאו ויוטיוב לייב מפעיל בשני ערוצים. \n\nOBS Studio מסנן עם הסראונד סאונד, למרות תמיכת תוסף VST אינו מאובטח." +Basic.Settings.Audio.MultichannelWarning.Title="האם להפעיל שמע צליל היקפי?" +Basic.Settings.Audio.MultichannelWarning.Confirm="אתה בטוח שאתה רוצה לאפשר קול שמע מקיף?" Basic.Settings.Audio.DesktopDevice="התקן שמע בשולחן עבודה" Basic.Settings.Audio.DesktopDevice2="התקן שמע בשולחן עבודה 2" Basic.Settings.Audio.AuxDevice="התקן שמע מיקרופון/עזר" @@ -608,6 +655,7 @@ Basic.Settings.Advanced.General.ProcessPriority.High="גבוה" Basic.Settings.Advanced.General.ProcessPriority.AboveNormal="מעל לרגיל" Basic.Settings.Advanced.General.ProcessPriority.Normal="רגיל" +Basic.Settings.Advanced.General.ProcessPriority.BelowNormal="מתחת לעדיפות רגילה" Basic.Settings.Advanced.General.ProcessPriority.Idle="לא פעיל" Basic.Settings.Advanced.FormatWarning="אזהרה: תבניות צבע שונות מ-NV12 נועדו בעיקר עבור הקלטה, והם אינם מומלצות בעת הזרמת נתונים. הזרמת נתונים עלולה לגרום למשאבי עיבוד מוגברים כתוצאה מהמרת תבנית צבע." Basic.Settings.Advanced.Audio.BufferingTime="זמן אוגר שמע"
View file
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
@@ -28,15 +28,15 @@ Mono="モノラル" Stereo="ステレオ" DroppedFrames="ドロップしたフレーム %1 (%2%)" -StudioProgramProjector="全画面プロジェクター (プログラム)" +StudioProgramProjector="全画面プロジェクター (番組)" PreviewProjector="全画面プロジェクター (プレビュー)" SceneProjector="全画面プロジェクター (シーン)" SourceProjector="全画面プロジェクター (ソース)" -StudioProgramWindow="ウィンドウ付きプロジェクター (プログラム)" +StudioProgramWindow="ウィンドウ プロジェクター (番組)" PreviewWindow="ウィンドウ プロジェクター (プレビュー)" SceneWindow="ウィンドウ プロジェクター (シーン)" SourceWindow="ウィンドウ プロジェクター (ソース)" -MultiviewProjector="マルチビュー (フルスクリーン)" +MultiviewProjector="マルチビュー (全画面)" MultiviewWindowed="マルチビュー (ウィンドウ)" Clear="クリア" Revert="元に戻す"
View file
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
@@ -1,6 +1,9 @@ +Language="ქართული" +Region="საქართველო" OK="კაი" +Apply="მიღება" Cancel="გაუქმება" Close="დახურვა" Save="შენახვა" @@ -11,16 +14,22 @@ Add="დამატება" Remove="წაშლა" Rename="გადარქმევა" +Interact="ურთიერთქმედება" Filters="ფილტრები" +Properties="პარამეტრები" MoveUp="ზევით" MoveDown="ქვევით" Settings="პარამეტრები" +Display="ეკრანი" Name="სახელი" Exit="გასვლა" Mixer="მიქშერი" Browse="მოძიება" Mono="მონო" Stereo="სტერეო" +DroppedFrames="კადრების ვარდნა %1 (%2%)" +Clear="გასუფთავება" +Revert="დაბრუნება" Show="ჩვენება" Hide="დამალვა" UnhideAll="ყველაფრის გამოჩენა" @@ -30,10 +39,32 @@ Enable="ჩართვა" DisableOSXVSync="OSX V-Sync-ის გამორთვა" ResetOSXVSyncOnExit="OSX V-Sync-ის გადატვირთვა გასვლისას" +HighResourceUsage="დამშიფრავი გადაიტვირთა! სცადეთ ვიდეოს პარამეტრების შემცირება, ან უფრო სწრაფი შიფრაციის პარამეტრების გამოყენება." +Transition="გადასვლა" +QuickTransitions="სწრაფი გადასვლები" +Left="მარცხნივ" +Right="მარჯვნივ" +Top="ზემოთ" +Bottom="ქვემოთ" +Reset="განულება" +Hours="საათი" Minutes="წუთი" Seconds="წამი" - - +Deprecated="მოძველებული" +ReplayBuffer="უკან გადახვევის დრო" +Import="შემოტანა" +Export="გატანა" +Copy="დაკოპირება" +Paste="ჩასმა" +Next="შემდეგ" +Back="უკან" +Defaults="ნაგულისხმევი" + +AlreadyRunning.Title="OBS უკვე გაშვებულია" +AlreadyRunning.Text="OBS უკვე გაშვებულია! გთხოვთ, ჯერ დახუროთ OBS-ის ყველა გაშვებული პროცესი, სანამ ახლის გაშვებას შეეცდებით. თუ მითითებული გაქვთ, რომ დახურვის ნაცვლად, OBS სისტემურ არეში უნდა ჩაიკეცოს, გთხოვთ მანდაც გადაამოწმოთ, დარჩენილი ხომ არაა." +AlreadyRunning.LaunchAnyway="მაინც გაშვება" + +Copy.Filters="ფილტრების დაკოპირება"
View file
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
@@ -61,7 +61,7 @@ Minutes="Minutter" Seconds="Sekunder" Deprecated="Foreldet" -ReplayBuffer="Omspill Buffer" +ReplayBuffer="Omspillingsbuffer" Import="Importer" Export="Eksporter" Copy="Kopier"
View file
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
@@ -7,6 +7,7 @@ Cancel="Avbryt" Close="Lukk" Save="Lagre" +Discard="Bryt av" Disable="Skrue av" Yes="Ja" No="Nei" @@ -22,9 +23,13 @@ Display="Skjerm" Name="Namn" Exit="Avslutt" +Mixer="Blandar" Browse="Bla gjennom" Mono="Mono" Stereo="Stereo" +DroppedFrames="Slopne bilete %1 (%2%)" +StudioProgramProjector="Fullskjermframvisar (program)" +PreviewProjector="Fullskjermframvisar (førehandsvising)" MultiviewProjector="Fleirvising (Fullskjerm)" MultiviewWindowed="Fleirvising (i vindauge)" Clear="Tøm" @@ -33,6 +38,22 @@ Untitled="Utan namn" New="Ny" Enable="Aktiver" +Left="Venstre" +Right="Høgre" +Top="Topp" +Bottom="Botn" +Reset="Attendeset" +Hours="Timar" +Minutes="Minutt" +Seconds="Sekund" +Import="Innfør" +Export="Utfør" +Copy="Kopier" +Paste="Lim inn" +Next="Neste" +Back="Attende" +Defaults="Standardar" +None="Ingen" StudioMode.Preview="Førehandsvising" StudioMode.Program="Program"
View file
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
@@ -171,11 +171,11 @@ Updater.GameCaptureActive.Title="Производится захват игры" Updater.GameCaptureActive.Text="Библиотека захвата игр уже используется. Закройте захватываемые игры/программы (или перезапустите Windows) и попробуйте ещё раз." -QuickTransitions.SwapScenes="Замена Просмотра/Вывода Сцены После Перехода" -QuickTransitions.SwapScenesTT="Замена просмотра и вывода сцены после перехода (если выходная оригинальная сцена до сих пор существует).\nЭто будет не отмена каких-либо изменений, что, возможно, было сделано в выходной оригинальной сцены." -QuickTransitions.DuplicateScene="Повторяющиеся Сцены" +QuickTransitions.SwapScenes="Менять местами сцены предпросмотра и вывода после перехода" +QuickTransitions.SwapScenesTT="Меняет местами сцены предпросмотра и вывода после перехода (если оригинальная выходная сцена до сих пор существует).\nЭто не отменяет никаких изменений, которые возможно были сделаны в оригинальной выходной сцене." +QuickTransitions.DuplicateScene="Дублировать сцену" QuickTransitions.DuplicateSceneTT="При редактировании одной и той же сцены, функция позволяет трансформировать редактирования/видимости источников без изменения выхода.\nДля редактирования свойств источников без изменения выходного сигнала, включить \"дублировать источники'.\nИзменение этого параметра приведет к сбросу выходного сигнала в сцене (если оно еще существует)." -QuickTransitions.EditProperties="Дублировать Источники" +QuickTransitions.EditProperties="Дублировать источники" QuickTransitions.EditPropertiesTT="При редактировании одной и той же сцены, функция позволяет редактировать свойства источников без изменения выхода.\nЭто может только использоваться, если \"Повторяющиеся Сцены\" включен.\nНекоторые источники (такие как захват или медиа-источники) не поддерживаются и не могут быть отредактированы отдельно.\nИзменение этого параметра приведет к сбросу выходного сигнала в сцене (если оно еще существует).\n\nПредупреждение: поскольку источники будут дублироваться, это может потребовать дополнительных системных ресурсов или видео." QuickTransitions.HotkeyName="Быстрый переход: %1" @@ -274,10 +274,10 @@ Basic.Main.PreviewConextMenu.Enable="Включить предпросмотр" -ScaleFiltering="Фильтрация масштаба" -ScaleFiltering.Point="Точечная" -ScaleFiltering.Bilinear="Билинейная" -ScaleFiltering.Bicubic="Бикубическая" +ScaleFiltering="Фильтр масштабирования" +ScaleFiltering.Point="Точечный" +ScaleFiltering.Bilinear="Билинейный" +ScaleFiltering.Bicubic="Бикубический" ScaleFiltering.Lanczos="Метод Ланцоша" Deinterlacing="Устранение чересстрочности" @@ -399,12 +399,12 @@ Basic.Main.StartReplayBuffer="Запустить повтор" Basic.Main.StartStreaming="Запустить трансляцию" Basic.Main.StopRecording="Остановить запись" -Basic.Main.StoppingRecording="Остановка Записи..." +Basic.Main.StoppingRecording="Остановка записи..." Basic.Main.StopReplayBuffer="Остановить повтор" Basic.Main.StoppingReplayBuffer="Остановка повтора..." Basic.Main.StopStreaming="Остановить трансляцию" Basic.Main.StoppingStreaming="Остановка вещания..." -Basic.Main.ForceStopStreaming="Остановить передачу (отменить задержку)" +Basic.Main.ForceStopStreaming="Остановить трансляцию (сбросить задержку)" Basic.MainMenu.File="&Файл" Basic.MainMenu.File.Export="&Экспорт" @@ -413,7 +413,7 @@ Basic.MainMenu.File.Remux="Ре&мультиплексирование записей" Basic.MainMenu.File.Settings="&Настройки" Basic.MainMenu.File.ShowSettingsFolder="Показать папку с настройками" -Basic.MainMenu.File.ShowProfileFolder="Показать папку профиля" +Basic.MainMenu.File.ShowProfileFolder="Показать папку с профилями" Basic.MainMenu.AlwaysOnTop="&Поверх других окон" Basic.MainMenu.File.Exit="&Выход" @@ -423,15 +423,15 @@ Basic.MainMenu.Edit.UndoAction="&Отменить $1" Basic.MainMenu.Edit.RedoAction="&Повторить $1" Basic.MainMenu.Edit.LockPreview="&Заблокировать предпросмотр" -Basic.MainMenu.Edit.Scale="Просмотр и масштабирование" +Basic.MainMenu.Edit.Scale="&Масштабирование предпросмотра" Basic.MainMenu.Edit.Scale.Window="Масштаб окна" Basic.MainMenu.Edit.Scale.Canvas="Холст (%1x%2)" Basic.MainMenu.Edit.Scale.Output="Вывод (%1x%2)" -Basic.MainMenu.Edit.Transform="&Преобразовать" -Basic.MainMenu.Edit.Transform.EditTransform="&Изменить преобразование..." -Basic.MainMenu.Edit.Transform.CopyTransform="Копировать преобразование" -Basic.MainMenu.Edit.Transform.PasteTransform="Вставить преобразование" -Basic.MainMenu.Edit.Transform.ResetTransform="&Сбросить преобразование" +Basic.MainMenu.Edit.Transform="&Трансформировать" +Basic.MainMenu.Edit.Transform.EditTransform="&Изменить отображение..." +Basic.MainMenu.Edit.Transform.CopyTransform="Скопировать трансформацию" +Basic.MainMenu.Edit.Transform.PasteTransform="Вставить трансформацию" +Basic.MainMenu.Edit.Transform.ResetTransform="&Сбросить трансформацию" Basic.MainMenu.Edit.Transform.Rotate90CW="Повернуть на 90 градусов по часовой" Basic.MainMenu.Edit.Transform.Rotate90CCW="Повернуть на 90 градусов против часовой" Basic.MainMenu.Edit.Transform.Rotate180="Повернуть на 180 градусов" @@ -441,7 +441,7 @@ Basic.MainMenu.Edit.Transform.StretchToScreen="&Растянуть на весь экран" Basic.MainMenu.Edit.Transform.CenterToScreen="&Разместить по центру экрана" Basic.MainMenu.Edit.Order="&Порядок" -Basic.MainMenu.Edit.Order.MoveUp="Переместить &Выше" +Basic.MainMenu.Edit.Order.MoveUp="Переместить &выше" Basic.MainMenu.Edit.Order.MoveDown="Переместить &Ниже" Basic.MainMenu.Edit.Order.MoveToTop="Переместить &Наверх" Basic.MainMenu.Edit.Order.MoveToBottom="Переместить &Вниз" @@ -491,16 +491,16 @@ Basic.Settings.General.WarnBeforeStoppingStream="Показывать окно подтверждения при остановке трансляции" Basic.Settings.General.Projectors="Проекторы" Basic.Settings.General.HideProjectorCursor="Скрыть курсор за проекторы" -Basic.Settings.General.ProjectorAlwaysOnTop="Показывать проекторы поверх всего остального" +Basic.Settings.General.ProjectorAlwaysOnTop="Показывать проекторы поверх всех окон" Basic.Settings.General.Snapping="Привязка расположения источника" Basic.Settings.General.ScreenSnapping="Привязка к краю экрана" Basic.Settings.General.CenterSnapping="Привязка к центру по горизонтали и вертикали" Basic.Settings.General.SourceSnapping="Привязка к другим источникам" Basic.Settings.General.SnapDistance="Чувствительность привязки" -Basic.Settings.General.RecordWhenStreaming="Автоматическая запись при стриме" -Basic.Settings.General.KeepRecordingWhenStreamStops="Продолжить запись, когда стрим остановится" +Basic.Settings.General.RecordWhenStreaming="Автоматически включать запись во время трансляции" +Basic.Settings.General.KeepRecordingWhenStreamStops="Продолжать запись после завершения трансляции" Basic.Settings.General.ReplayBufferWhileStreaming="Автоматически запускать буфер повтора во время трансляции" -Basic.Settings.General.KeepReplayBufferStreamStops="Сохранять буфер повтора активным когда останавливается трансляция" +Basic.Settings.General.KeepReplayBufferStreamStops="Сохранять буфер повтора активным после завершения трансляции" Basic.Settings.General.SysTray="Системный трей" Basic.Settings.General.SysTrayWhenStarted="Скрывать окно в системный трей при запуске" Basic.Settings.General.SystemTrayHideMinimize="Всегда сворачивать в трей вместо панели задач" @@ -534,7 +534,7 @@ Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(Примечание: Убедитесь, что установили горячую клавишу для воспроизведения буфера в разделе горячие клавиши)" Basic.Settings.Output.ReplayBuffer.Prefix="Префикс имени файла повтора" Basic.Settings.Output.ReplayBuffer.Suffix="Суффикс" -Basic.Settings.Output.Simple.SavePath="Путь к записи" +Basic.Settings.Output.Simple.SavePath="Путь записи" Basic.Settings.Output.Simple.RecordingQuality="Качество записи" Basic.Settings.Output.Simple.RecordingQuality.Stream="То же, что у трансляции" Basic.Settings.Output.Simple.RecordingQuality.Small="Высокое качество, средний размер файла" @@ -552,8 +552,8 @@ Basic.Settings.Output.Simple.Encoder.Hardware.AMD="Аппаратный (AМD)" Basic.Settings.Output.Simple.Encoder.Hardware.NVENC="Аппаратный (NVENC)" Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Программный (x264 с низкой нагрузкой на ЦП, увеличивает размер файла)" -Basic.Settings.Output.VideoBitrate="Видео битрейт" -Basic.Settings.Output.AudioBitrate="Аудио битрейт" +Basic.Settings.Output.VideoBitrate="Битрейт видео" +Basic.Settings.Output.AudioBitrate="Битрейт аудио" Basic.Settings.Output.Reconnect="Автопереподключение" Basic.Settings.Output.RetryDelay="Переподключиться через (секунд)" Basic.Settings.Output.MaxRetries="Количество попыток подключиться"
View file
obs-studio-21.1.2.tar.xz/UI/data/locale/sq-AL.ini
Added
@@ -0,0 +1,170 @@ + +Language="Gjuha Angleze" +Region="Shtetet e Bashkuara" + +OK="OK" +Apply="Aplikoni" +Cancel="Anuloni" +Close="Mbylle" +Save="Ruaj" +Discard="Mos e ruaj" +Disable="Çaktivizo" +Yes="Po" +No="Jo" +Add="Shto" +Remove="Largoje" +Rename="Riemërto" +Interact="Bashkëveprim" +Filters="Filterar" +Properties="Vetitë" +MoveUp="Lëvize lart" +MoveDown="Lëvize poshtë" +Settings="Cilësimet" +Display="Ekrani" +Name="Emri" +Exit="Dil" +Mixer="Mikser" +Browse="Shfleto" +Mono="Mono" +Stereo="Stereo" +DroppedFrames="Kornizat e rëna %1 (%2%)" +StudioProgramProjector="Projektor me ekran të plotë (Program)" +PreviewProjector="Projektorë me ekran të plotë (Parashikim)" +SceneProjector="Ekran me ekran të plotë (Skena)" +SourceProjector="Projektorë me ekran të plotë (Burimi)" +StudioProgramWindow="Projektor Windowed (Program)" +PreviewWindow="Projektor Windowed (Parashikim)" +SceneWindow="Projektor Windowed (Skena)" +SourceWindow="Projektor Windowed (Burimi)" +MultiviewProjector="Shumë pamje (Ekran i plotë)" +MultiviewWindowed="Shumë pamje (Windowed)" +Clear="Pastro" +Revert="Rikthe" +Show="Shfaq" +Hide="Fsheh" +UnhideAll="Zbuloni të gjitha" +Untitled="I patitulluar" +New="I ri" +Duplicate="Dublikatë" +Enable="Aktivizo" +DisableOSXVSync="Çaktivizo OSX V-Sync" +ResetOSXVSyncOnExit="Rivendos OSX V-Sync në Mbyllje" +HighResourceUsage="Kodimi i mbingarkuar! Merrni parasysh uljen e cilësimeve të videos ose duke përdorur një parazgjedhje më të shpejtë të kodimit." +Transition="Tranzicion" +QuickTransitions="Tranzicione të shpejta" +Left="Majtas" +Right="Djathtas" +Top="Kreu" +Bottom="Fundi" +Reset="Rivë" +Hours="Orë" +Minutes="Minuta" +Seconds="Sekonda" +Deprecated="I pazëvëndësueshëm" +ReplayBuffer="Rifillimi Lustrues" +Import="Importo" +Export="Eksporto" +Copy="Kopjo" +Paste="Ngjit" +PasteReference="Ngjit (Referim)" +PasteDuplicate="Ngjit (Duplikatë)" +RemuxRecordings="Regjistrimet e Remux" +Next="Tjeter" +Back="Prapa" +Defaults="Parazgjedhura" +HideMixer="Fshiheni në Mixer" +TransitionOverride="Zhvendosja e tranzicionit" +None="Asnje" +StudioMode.Preview="Inspektim" +StudioMode.Program="Program" +ShowInMultiview="Shfaqe në Shumë Pamje" + +AlreadyRunning.Title="OBS tashmë po funksion" +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." +AlreadyRunning.LaunchAnyway="Filloje ne nje menyre" + +Copy.Filters="Kopjo Filterat" +Paste.Filters="Ngjit Filterat" + +BandwidthTest.Region="Regjioni" +BandwidthTest.Region.US="Shtetet e Bashkuara" +BandwidthTest.Region.EU="Evropë" +BandwidthTest.Region.Asia="Azi" +BandwidthTest.Region.Other="Të tjera" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
View file
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
@@ -36,8 +36,8 @@ PreviewWindow="Fönsterprojektor (förhandsvisning)" SceneWindow="Fönsterprojektor (scen)" SourceWindow="Fönsterprojektor (källa)" -MultiviewProjector="Flervy (helskärm)" -MultiviewWindowed="Flervy (fönster)" +MultiviewProjector="Multivy (helskärm)" +MultiviewWindowed="Multivy (fönster)" Clear="Rensa" Revert="Återgå" Show="Visa" @@ -77,7 +77,7 @@ None="Ingen" StudioMode.Preview="Förhandsvisning" StudioMode.Program="Program" -ShowInMultiview="Visa i flervy" +ShowInMultiview="Visa i multivy" AlreadyRunning.Title="OBS körs redan" 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." @@ -507,7 +507,7 @@ Basic.Settings.General.SaveProjectors="Spara projektorer vid avslut" Basic.Settings.General.SwitchOnDoubleClick="Övergång till scen vid dubbelklick" Basic.Settings.General.StudioPortraitLayout="Aktivera porträtt-/vertikalt utseende" -Basic.Settings.General.MultiviewLayout="Multivisningslayout" +Basic.Settings.General.MultiviewLayout="Utseende för multivy" Basic.Settings.General.MultiviewLayout.Horizontal.Top="Horisontal, överkant" Basic.Settings.General.MultiviewLayout.Horizontal.Bottom="Horisontal, nederkant" Basic.Settings.General.MultiviewLayout.Vertical.Left="Vertikal, vänster"
View file
obs-studio-21.1.2.tar.xz/UI/data/locale/tl-PH.ini
Added
@@ -0,0 +1,751 @@ + +Language="Ingles" +Region="Estados Unidos" + +OK="OK" +Apply="Gamitin" +Cancel="Kanselahin" +Close="Isara" +Save="I-save" +Discard="Alisin" +Disable="I-disable" +Yes="Oo" +No="Hindi" +Add="Idagdag" +Remove="Tanggalin" +Rename="Palitan ang pangalan" +Interact="Interact" +Filters="Pansala" +Properties="Mga Katangian" +MoveUp="I-taas" +MoveDown="I-baba" +Settings="Mga Setting" +Display="Ipakita" +Name="Pangalan" +Exit="Lumabas" +Mixer="Mixer" +Browse="Browse" +Mono="Mono" +Stereo="Stereo" +DroppedFrames="Mga imaheng hindi sinali %1 (%2%)" +StudioProgramProjector="Fullscreen Projector (Programa)" +PreviewProjector="Fullscreen Projector (Preview)" +SceneProjector="Fullscreen Projector (Eksena)" +SourceProjector="Fullscreen Projector (Pinagmulan)" +StudioProgramWindow="Windowed Projector (Programa)" +PreviewWindow="Windowed Projector (Preview)" +SceneWindow="Windowed Projector (Eksena)" +SourceWindow="Windowed Projector (Pinagmulan)" +MultiviewProjector="Multiview (Fullscreen)" +MultiviewWindowed="Multiview (Windowed)" +Clear="Linisin" +Revert="Ibalik" +Show="Ipakita" +Hide="Itago" +UnhideAll="Ipakita Lahat" +Untitled="Walang pamagat" +New="Bago" +Duplicate="Kahalintulad" +Enable="I-enable" +DisableOSXVSync="I-disable ang OSX V-Sync" +ResetOSXVSyncOnExit="I-set muli ang OSX V-Sync sa Exit" +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." +Transition="Transisyon" +QuickTransitions="Mabilis na mga Transisyon" +Left="Kaliwa" +Right="Kanan" +Top="Tuktok" +Bottom="Pinakababa" +Reset="I-set muli" +Hours="Mga oras" +Minutes="Mga minuto" +Seconds="Mga segundo" +Deprecated="Hindi na ginagamit" +ReplayBuffer="Replay Buffer" +Import="I-angkat" +Export="I-export" +Copy="Kopyahin" +Paste="I-paste" +PasteReference="I-paste (Reperensya)" +PasteDuplicate="I-paste (Kopya)" +RemuxRecordings="Remux Recordings" +Next="Sunod" +Back="Bumalik" +Defaults="Mga Default" +HideMixer="Itago sa Mixer" +TransitionOverride="Pagpapawalang-bisa ng Transisyon" +None="Wala" +StudioMode.Preview="Preview" +StudioMode.Program="Programa" +ShowInMultiview="Ipakita sa Multiview" + +AlreadyRunning.Title="Ang OBS ay tumatakbo na" +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." +AlreadyRunning.LaunchAnyway="Ilunsad pa rin" + +Copy.Filters="Kopyahin ang mga Panala" +Paste.Filters="I-paste ang mga Panala" + +BandwidthTest.Region="Rehiyon" +BandwidthTest.Region.US="Estados Unidos" +BandwidthTest.Region.EU="Europa" +BandwidthTest.Region.Asia="Asya" +BandwidthTest.Region.Other="Iba pa" + +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." +Basic.FirstStartup.RunWizard.BetaWarning="(Tandaan: Ang auto-configuration wizard ay kasukuyang nasa beta)" +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." + +Basic.AutoConfig="Auto-Configuration Wizard" +Basic.AutoConfig.Beta="Auto-Configuration Wizard (Beta)" +Basic.AutoConfig.ApplySettings="Gamitin ang mga Setting" +Basic.AutoConfig.StartPage="Impormasyon ukol sa Paggamit" +Basic.AutoConfig.StartPage.SubTitle="Tukuyin kung para saan mo gustong gamitin ang programa" +Basic.AutoConfig.StartPage.PrioritizeStreaming="I-optimize para sa pag-stream, pangalawa lamang pag-rerekord" +Basic.AutoConfig.StartPage.PrioritizeRecording="I-optimize para lamang sa pag-rerekord, Hindi ako mag-iistream" +Basic.AutoConfig.VideoPage="Mga Setting sa Video" +Basic.AutoConfig.VideoPage.SubTitle="Tukuyin ang mga setting ng video na gusto mong gamitin" +Basic.AutoConfig.VideoPage.BaseResolution.UseCurrent="Gamitin ang Pangkasalukuyang (%1x%2)" +Basic.AutoConfig.VideoPage.BaseResolution.Display="Ipakita ang %1 (%2x%3)" +Basic.AutoConfig.VideoPage.FPS.UseCurrent="Gamitin ang Pangkasalukuyang (%1)" +Basic.AutoConfig.VideoPage.FPS.PreferHighFPS="60 o 30, pero mas piliin ang 60 kung maaari" +Basic.AutoConfig.VideoPage.FPS.PreferHighRes="60 o 30, pero mas piliin ang mataas na resolution" +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." +Basic.AutoConfig.StreamPage="Mag-stream ng Impormasyon" +Basic.AutoConfig.StreamPage.SubTitle="Mangyari lamang ilagay ang impormasyon ng iyong pagstream" +Basic.AutoConfig.StreamPage.Service="Serbisyo" +Basic.AutoConfig.StreamPage.Service.ShowAll="Ipakita Lahat..." +Basic.AutoConfig.StreamPage.Server="Serber" +Basic.AutoConfig.StreamPage.StreamKey="Stream Key" +Basic.AutoConfig.StreamPage.StreamKey.LinkToSite="(Link)" +Basic.AutoConfig.StreamPage.PerformBandwidthTest="Estimahin ang bitrate gamit ang bandwith test (maaaring tumagal ng ilang minuto)" +Basic.AutoConfig.StreamPage.PreferHardwareEncoding="Mas piliin ang hardware encoding" +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." +Basic.AutoConfig.StreamPage.StreamWarning.Title="Babala sa stream" +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?" +Basic.AutoConfig.TestPage="Mga Huling Resulta" +Basic.AutoConfig.TestPage.SubTitle.Testing="Ang programang ito ay nagapapatupad ngayon ng mga pagsusuri upang matantiya ang pinakamainam na mga setting" +Basic.AutoConfig.TestPage.SubTitle.Complete="Natapos na ang pagsusuri" +Basic.AutoConfig.TestPage.TestingBandwidth="Nagsasagaw ng bandwidth test, maaaring itong magtagal ng ilang minuto..." +Basic.AutoConfig.TestPage.TestingBandwidth.Connecting="Kumukonekta sa: %1..." +Basic.AutoConfig.TestPage.TestingBandwidth.ConnectFailed="Bigong maka-konekta sa kahit anong mga serber, mangyari lamang suriin ang iyong koneksyon sa internet at subukan muli." +Basic.AutoConfig.TestPage.TestingBandwidth.Server="Sinusuri ang bandwidth para sa: %1" +Basic.AutoConfig.TestPage.TestingStreamEncoder="Sinusuri ang encoder ng stream, maaari itong magtagal ng isang minuto..." +Basic.AutoConfig.TestPage.TestingRecordingEncoder="Sinusuri ang encoder para sa pagrekord, maaari itong magtagal ng isang minuto..." +Basic.AutoConfig.TestPage.TestingRes="Sinusuri ang mga resolusyon, maaari itong magtagal ng ilang minuto..." +Basic.AutoConfig.TestPage.TestingRes.Fail="Bigong mapatakbo ang encoder" +Basic.AutoConfig.TestPage.TestingRes.Resolution="Sinusuri ang %1x%2 %3 FPS..." +Basic.AutoConfig.TestPage.Result.StreamingEncoder="Encoder para sa Pag-stream" +Basic.AutoConfig.TestPage.Result.RecordingEncoder="Encoder para sa Pagrekord" +Basic.AutoConfig.TestPage.Result.Header="Napagtanto ng programa na ang mga setting na ito ang pinakamainam para sa iyo:" +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." + +Basic.Stats="Mga Statistika" +Basic.Stats.CPUUsage="Paggamit ng CPU" +Basic.Stats.HDDSpaceAvailable="Puwang sa HDD na magagamit pa" +Basic.Stats.MemoryUsage="Paggamit ng Memorya" +Basic.Stats.AverageTimeToRender="Karaniwang bilis upang ma-render ang frame" +Basic.Stats.SkippedFrames="Mga nalaktawang imahe dahil sa antala sa pag-encode" +Basic.Stats.MissedFrames="Mga imaheng di nakuha dahil sa antala sa pag-render" +Basic.Stats.Output.Stream="Stream" +Basic.Stats.Output.Recording="Pag-rerekord" +Basic.Stats.Status="Estado" +Basic.Stats.Status.Recording="Pagrerekord" +Basic.Stats.Status.Live="LIVE" +Basic.Stats.Status.Reconnecting="Muling kumukunekta" +Basic.Stats.Status.Inactive="Hindi aktibo" +Basic.Stats.DroppedFrames="Mga Imaheng hindi sinali (Network)" +Basic.Stats.MegabytesSent="Kabuuan ng Output ng mga Datos" +Basic.Stats.Bitrate="Bitrate" + +Updater.Title="Mga bagong update na magagamit" +Updater.Text="Mayroong bagong update na magagamit:" +Updater.UpdateNow="Iupdate na Ngayon" +Updater.RemindMeLater="Paalalahanan ako Maya-maya" +Updater.Skip="Laktawan ang Bersyon" +Updater.Running.Title="Ang programa ay kasalukuyang aktibo" +Updater.Running.Text="Ang mga output ay kasalukuyang aktibo, mangyari lamang i-shut down ang anumang mga output na aktibo bago subukang mag-update" +Updater.NoUpdatesAvailable.Title="Walang mga update na magagamit" +Updater.NoUpdatesAvailable.Text="Walang mga update ang kasalukuyang magagamit" +Updater.FailedToLaunch="Bigong malunsad ang updater" +Updater.GameCaptureActive.Title="Ang Game capture ay aktibo" +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." + +QuickTransitions.SwapScenes="Pagpalitin ang Preview/Output ng mga Eksena Matapos ang Pag-transisyon" +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." +QuickTransitions.DuplicateScene="Gayahin ang Eksena" +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)." +QuickTransitions.EditProperties="Gayahin ang mga Source" +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." +QuickTransitions.HotkeyName="Mabilis na Transisyon: %1" + +Basic.AddTransition="Idagdag ang Configurable na Transisyon" +Basic.RemoveTransition="Alisin ang Configurable na Transisyon" +Basic.TransitionProperties="Mga Katangian ng Transisyon" +Basic.SceneTransitions="Mga Transisyon ng Eksena" +Basic.TransitionDuration="Tagal" +Basic.TogglePreviewProgramMode="Studio Mode" + +TransitionNameDlg.Text="Mangyari lamang ilagay ang pangalan ng transisyon" +TransitionNameDlg.Title="Pangalan ng Transition" + +TitleBar.Profile="Profile" +TitleBar.Scenes="Mga Eksena" + +NameExists.Title="Ang pangalan ay umiiral na" +NameExists.Text="Ang pangalan na ito ay ginagamit na." + +NoNameEntered.Title="Mangyari lamang magbigay ng balidong pangalan" +NoNameEntered.Text="Hindi maaaring walang pangalan."
View file
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
@@ -631,6 +631,10 @@ Basic.Settings.Audio="Ses" Basic.Settings.Audio.SampleRate="Örnekleme Sıklığı" Basic.Settings.Audio.Channels="Kanallar" +Basic.Settings.Audio.MeterDecayRate="Ses Ölçer Sönüm Hızı" +Basic.Settings.Audio.MeterDecayRate.Fast="Hızlı" +Basic.Settings.Audio.MeterDecayRate.Medium="Orta (Tür I PPM)" +Basic.Settings.Audio.MeterDecayRate.Slow="Yavaş (Tür II PPM)" Basic.Settings.Audio.MultiChannelWarning.Enabled="Uyarı: Surround ses etkin." 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." Basic.Settings.Audio.MultichannelWarning.Title="Surround ses etkinleştirilsin mi?"
View file
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
@@ -631,6 +631,10 @@ Basic.Settings.Audio="音频" Basic.Settings.Audio.SampleRate="采样率" Basic.Settings.Audio.Channels="声道" +Basic.Settings.Audio.MeterDecayRate="音频表衰减率" +Basic.Settings.Audio.MeterDecayRate.Fast="快速" +Basic.Settings.Audio.MeterDecayRate.Medium="中速(峰值电平表I型)" +Basic.Settings.Audio.MeterDecayRate.Slow="慢速(峰值电平表II型)" Basic.Settings.Audio.MultiChannelWarning.Enabled="警告: 已启用环绕声音频。" Basic.Settings.Audio.MultichannelWarning="如果串流, 请检查串流服务是否支持环绕立体声接收和环绕立体声播放。 Twitch, Facebook 360 Live, Mixer RTMP, Smashcast 是充分支持环绕立体声的例子。 虽然 Facebook Live 和 Youtube Live 都支持环绕立体声接收, 但是Facebook Live 降低混合至立体声, 而 Youtube Live 则只播放两个声道。\n\nOBS 音频过滤器与环绕立体声兼容, 但 VST 插件支持无法保证。" Basic.Settings.Audio.MultichannelWarning.Title="是否启用环绕立体声?"
View file
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
@@ -631,6 +631,10 @@ Basic.Settings.Audio="音效" Basic.Settings.Audio.SampleRate="取樣頻率" Basic.Settings.Audio.Channels="通道數" +Basic.Settings.Audio.MeterDecayRate="音量計衰減速率" +Basic.Settings.Audio.MeterDecayRate.Fast="快速" +Basic.Settings.Audio.MeterDecayRate.Medium="中 (Type I PPM)" +Basic.Settings.Audio.MeterDecayRate.Slow="慢 (Type II PPM)" Basic.Settings.Audio.MultiChannelWarning.Enabled="警告: 已啟用環繞聲音訊。" Basic.Settings.Audio.MultichannelWarning="如果是流媒體,請檢查您的流媒體服務是否同時支持環繞聲攝取和環繞聲播放。 Twitch,Facebook 360 Live,Mixer RTMP,Smashcast都是完全支持環繞聲的例子。 儘管Facebook Live和YouTube Live都接受環繞聲攝取,但是Facebook Live會混音為立體聲,而YouTube Live只播放兩個聲道。\n\n 儘管不支持VST插件,但OBS音頻濾波器與環繞聲兼容。" Basic.Settings.Audio.MultichannelWarning.Title="是否啟用環繞聲音訊?"
View file
obs-studio-21.0.3.tar.xz/UI/forms/OBSBasic.ui -> obs-studio-21.1.2.tar.xz/UI/forms/OBSBasic.ui
Changed
@@ -33,6 +33,9 @@ <property name="styleSheet"> <string notr="true"/> </property> + <property name="dockOptions"> + <set>QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks</set> + </property> <widget class="QWidget" name="centralwidget"> <layout class="QVBoxLayout" name="verticalLayout"> <item> @@ -134,10 +137,19 @@ <addaction name="actionUploadLastLog"/> <addaction name="actionViewCurrentLog"/> </widget> + <widget class="QMenu" name="menuCrashLogs"> + <property name="title"> + <string>Basic.MainMenu.Help.CrashLogs</string> + </property> + <addaction name="actionShowCrashLogs"/> + <addaction name="actionUploadLastCrashLog"/> + </widget> <addaction name="actionHelpPortal"/> <addaction name="actionWebsite"/> <addaction name="separator"/> <addaction name="menuLogFiles"/> + <addaction name="menuCrashLogs"/> + <addaction name="separator"/> <addaction name="actionCheckForUpdates"/> </widget> <widget class="QMenu" name="menuBasic_MainMenu_Edit"> @@ -182,7 +194,7 @@ <addaction name="actionScaleCanvas"/> <addaction name="actionScaleOutput"/> </widget> - <action name="actionCopySource"> + <action name="actionCopySource"> <property name="text"> <string>Copy</string> </property> @@ -1579,6 +1591,16 @@ <string>Basic.MainMenu.Help.HelpPortal</string> </property> </action> + <action name="actionShowCrashLogs"> + <property name="text"> + <string>Basic.MainMenu.Help.CrashLogs.ShowLogs</string> + </property> + </action> + <action name="actionUploadLastCrashLog"> + <property name="text"> + <string>Basic.MainMenu.Help.CrashLogs.UploadLastLog</string> + </property> + </action> </widget> <customwidgets> <customwidget>
View file
obs-studio-21.1.2.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/fil-PH.ini
Added
@@ -0,0 +1,42 @@ +SceneSwitcher="Awyomatikong Eskana Tagalipat" +SceneSwitcher.OnNoMatch="Kapag walang tumutugma sa bintana:" +SceneSwitcher.OnNoMatch.DontSwitch="Huwag lumipat" +SceneSwitcher.OnNoMatch.SwitchTo="Lumipat sa:" +SceneSwitcher.CheckInterval="Suriin ang aktibong pamagat ng bintana bawat:" +SceneSwitcher.ActiveOrNotActive="Ang Eskana Tagalipat ay:" +InvalidRegex.Title="Di-wastong Regular Expression" +InvalidRegex.Text="Siya ay regular na expression na ipinasok mo ay hindi wasto." +Active="Aktibo" +Inactive="Di-aktibo" +Start="Magsimula" +Stop="Ihinto" + +Captions="Mga Caption (Experimental)" +Captions.AudioSource="Pinagmulan ng audio" +Captions.CurrentSystemLanguage="Kasalukuyang Wika ng Wika (%1)" +Captions.Provider="Tagapagbigay" +Captions.Error.GenericFail="Nabigong magsimula ng mga caption" + +OutputTimer="Output ng Timer" +OutputTimer.Stream="Itigil ang streaming pagkatapos:" +OutputTimer.Record="Itigil ang pag-record pagkatapos ng:" +OutputTimer.Stream.StoppingIn="Ang pagtigil ng streaming sa:" +OutputTimer.Record.StoppingIn="Pagre-record ng pagtigil sa:" +OutputTimer.Stream.EnableEverytime="Paganahin ang streaming timer sa bawat oras" +OutputTimer.Record.EnableEverytime="Paganahin ang timer ng pag-record sa bawat oras" + +Scripts="Mga script" +LoadedScripts="Mga Loaded na Mga Script" +AddScripts="Magdagdag ng Mga Script" +RemoveScripts="Alisin ang Mga Script" +ReloadScripts="I-reload ang Mga Script" +PythonSettings="Mga Setting ng Python" +PythonSettings.PythonInstallPath32bit="Path ng Pag-install ng Python (32bit)" +PythonSettings.PythonInstallPath64bit="Path ng Pag-install ng Python (64bit)" +PythonSettings.BrowsePythonPath="Mag-browse sa Python Path" +ScriptLogWindow="Mag-log ng Script" +Description="Paglalarawan" + +FileFilter.ScriptFiles="Mga File ng Script" +FileFilter.AllFiles="Lahat ng Mga File" +
View file
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
@@ -1,7 +1,9 @@ +SceneSwitcher="החלפת סצנה אוטומטית" SceneSwitcher.OnNoMatch="כאשר אין חלון מתאים:" SceneSwitcher.OnNoMatch.DontSwitch="אל תעבור" SceneSwitcher.OnNoMatch.SwitchTo="עבור ל:" SceneSwitcher.CheckInterval="בדוק כותרת חלון פעיל בכל:" +SceneSwitcher.ActiveOrNotActive="החלפת סצנה זה:" InvalidRegex.Title="ביטוי רגולרי לא חוקי" InvalidRegex.Text="הביטוי הרגולרי שהזנת אינו חוקי." Active="פעיל" @@ -23,6 +25,15 @@ OutputTimer.Stream.EnableEverytime="הפעל טיימר הזרמה כל פעם" OutputTimer.Record.EnableEverytime="הפעל טיימר הקלטה כל פעם" +Scripts="תסריטים" +LoadedScripts="תסריטים טעונים" +AddScripts="הוסף תסריט" +RemoveScripts="מחק תסריטים" +ReloadScripts="טען מחדש תסריטים" +PythonSettings="הגדרות פייתון" +PythonSettings.PythonInstallPath32bit="נתיב התקנת פייתון (32 סיביות)" +PythonSettings.PythonInstallPath64bit="התקנת נתיב פייתון (64 סיביות)" +PythonSettings.BrowsePythonPath="עיון בנתיב פייתון" ScriptLogWindow="סקריפט לוג" Description="תיאור"
View file
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
@@ -1,11 +1,42 @@ +SceneSwitcher="სცენის თვითგადამრთველი" +SceneSwitcher.OnNoMatch="როცა არცერთი ფანჯარა არ ემთხვევა:" +SceneSwitcher.OnNoMatch.DontSwitch="არ გადაირთოს" +SceneSwitcher.OnNoMatch.SwitchTo="გადაირთოს:" +SceneSwitcher.CheckInterval="მოქმედი ფანჯრის დასახელების გადამოწმების დროის შუალედი:" +SceneSwitcher.ActiveOrNotActive="სცენის თვითგადამრთველი:" +InvalidRegex.Title="არამართებული რეგულარული გამოსახულება" +InvalidRegex.Text="შეყვანილი რეგულარული გამოსახულება არასწორია." Active="ჩართული" Inactive="გამორთული" Start="დაწყება" Stop="შეწყვეტა" +Captions="წარწერები (საცდელი)" Captions.AudioSource="აუდიოს წყარო" +Captions.CurrentSystemLanguage="სისტემის მიმდინარე ენა (%1)" +Captions.Provider="მომწოდებელი" +Captions.Error.GenericFail="წარწერების დადება ვერ მოხერხდა" +OutputTimer="ჩაწერის და ნაკადის წამზომი" +OutputTimer.Stream="ნაკადი გაეშვას არაუმეტეს:" +OutputTimer.Record="ჩაწერა გაგრძელდეს არაუმეტეს:" +OutputTimer.Stream.StoppingIn="ნაკადის შეჩერების დროა:" OutputTimer.Record.StoppingIn="ჩაწერის შეწყვეტის დრო:" +OutputTimer.Stream.EnableEverytime="ნაკადის წამზომის ჩართვა ყოველ ჯერზე" +OutputTimer.Record.EnableEverytime="ჩაწერის წამზომის ჩართვა ყოველ ჯერზე" +Scripts="სკრიპტები" +LoadedScripts="ჩატვირთული სკრიპტები" +AddScripts="სკრიპტების დამატება" +RemoveScripts="სკრიპტების მოცილება" +ReloadScripts="სკრიპტების გადატვირთვა" +PythonSettings="Python-ის პარამეტრები" +PythonSettings.PythonInstallPath32bit="Python-ის დასაყენებელი მდებარეობა (32bit)" +PythonSettings.PythonInstallPath64bit="Python-ის დასაყენებელი მდებარეობა (64bit)" +PythonSettings.BrowsePythonPath="Python-ის მდებარეობის მოძიება" +ScriptLogWindow="სკრიპტის აღრიცხვა" +Description="აღწერილობა" +FileFilter.ScriptFiles="სკრიპტის ფაილები" +FileFilter.AllFiles="ყველა ფაილი"
View file
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
@@ -1,4 +1,4 @@ -SceneSwitcher="Automatisk Scene Skifter" +SceneSwitcher="Automatisk sceneskifter" SceneSwitcher.OnNoMatch="Når ingen vindu passer overens:" SceneSwitcher.OnNoMatch.DontSwitch="Ikke bytt" SceneSwitcher.OnNoMatch.SwitchTo="Bytt til:" @@ -22,8 +22,8 @@ OutputTimer.Record="Stopp opptak etter:" OutputTimer.Stream.StoppingIn="Streaming stopper om:" OutputTimer.Record.StoppingIn="Opptak stopper om:" -OutputTimer.Stream.EnableEverytime="Aktiver streaming timer hver gang" -OutputTimer.Record.EnableEverytime="Aktiver opptaks timer hver gang" +OutputTimer.Stream.EnableEverytime="Aktiver strømmeklokken hver gang" +OutputTimer.Record.EnableEverytime="Aktiver opptaksklokken hver gang" Scripts="Skripter" LoadedScripts="Innlastede skripter"
View file
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
@@ -17,12 +17,12 @@ Captions.Provider="Поставщик" Captions.Error.GenericFail="Не удалось запустить субтитры" -OutputTimer="Таймер записи и стрима" -OutputTimer.Stream="Завершить стрим через:" +OutputTimer="Таймер записи и трансляции" +OutputTimer.Stream="Завершить трансляцию через:" OutputTimer.Record="Завершить запись через:" -OutputTimer.Stream.StoppingIn="Стрим будет завершён через:" +OutputTimer.Stream.StoppingIn="Трансляция будет завершена через:" OutputTimer.Record.StoppingIn="Запись будет завершена через:" -OutputTimer.Stream.EnableEverytime="Включать таймер стрима каждый раз" +OutputTimer.Stream.EnableEverytime="Включать таймер трансляции каждый раз" OutputTimer.Record.EnableEverytime="Включать таймер записи каждый раз" Scripts="Скрипты"
View file
obs-studio-21.1.2.tar.xz/UI/frontend-plugins/frontend-tools/data/locale/tl-PH.ini
Added
@@ -0,0 +1,42 @@ +SceneSwitcher="Awtomatikong Taga-palit ng Eksena" +SceneSwitcher.OnNoMatch="Kapag walang tumugmang window:" +SceneSwitcher.OnNoMatch.DontSwitch="Huwag lumipat" +SceneSwitcher.OnNoMatch.SwitchTo="Lumipat sa:" +SceneSwitcher.CheckInterval="Suriin ang pamagat ng aktibong window kada:" +SceneSwitcher.ActiveOrNotActive="Ang Tag-palit ng Eksena ay:" +InvalidRegex.Title="Di-wastong Regular Expression" +InvalidRegex.Text="Ang regular na ekspresyon na iyong ipinasok ay imbalido." +Active="Aktibo" +Inactive="Hindi aktibo" +Start="Simula" +Stop="Ihinto" + +Captions="Mga Pamagat (Eksparimento)" +Captions.AudioSource="Pinanggalingan ng Audio" +Captions.CurrentSystemLanguage="Kasalukuyang linggwahe ng sistema (%1)" +Captions.Provider="Tagapagtustos" +Captions.Error.GenericFail="Nabigo sa pasisimula ng mga pamagat" + +OutputTimer="Pamlabas na Orasan" +OutputTimer.Stream="Itigil ang pag-stream pagkatapos:" +OutputTimer.Record="Itigil ang pagtatala pagkatapos:" +OutputTimer.Stream.StoppingIn="Ang pagtigil ng stream sa:" +OutputTimer.Record.StoppingIn="Ang pagtigil ng pagtatala sa:" +OutputTimer.Stream.EnableEverytime="Paganahin ang streaming timer sa bawat oras" +OutputTimer.Record.EnableEverytime="Paganahin ang timer ng pagtatala bawat oras" + +Scripts="Mga iskrip" +LoadedScripts="Mga iskrip na naikarga" +AddScripts="Magdagdag ng iskrip" +RemoveScripts="Tanggalin ang mga iskrip" +ReloadScripts="Ikargang muli ang mga Iskrip" +PythonSettings="Mga Setting Python" +PythonSettings.PythonInstallPath32bit="I-install ang daan sa Python (32bit)" +PythonSettings.PythonInstallPath64bit="I-install ang Daan sa Python (64bit)" +PythonSettings.BrowsePythonPath="Daan ng Browse Python" +ScriptLogWindow="Mag-log sa Iskrip" +Description="Paglalarawan" + +FileFilter.ScriptFiles="Mga File ng Iskrip" +FileFilter.AllFiles="Lahat ng mga File" +
View file
obs-studio-21.0.3.tar.xz/UI/obs-app.cpp -> obs-studio-21.1.2.tar.xz/UI/obs-app.cpp
Changed
@@ -60,6 +60,7 @@ static string currentLogFile; static string lastLogFile; +static string lastCrashLogFile; bool portable_mode = false; static bool multi = false; @@ -1051,6 +1052,11 @@ return currentLogFile.c_str(); } +const char *OBSApp::GetLastCrashLog() const +{ + return lastCrashLogFile.c_str(); +} + bool OBSApp::TranslateString(const char *lookupVal, const char **out) const { for (obs_frontend_translate_ui_cb cb : translatorHooks) { @@ -1097,13 +1103,18 @@ return strref_cmp(&token.text, str) == 0; } -static uint64_t convert_log_name(const char *name) +static uint64_t convert_log_name(bool has_prefix, const char *name) { BaseLexer lex; string year, month, day, hour, minute, second; lexer_start(lex, name); + if (has_prefix) { + string temp; + if (!get_token(lex, temp, BASETOKEN_ALPHA)) return 0; + } + if (!get_token(lex, year, BASETOKEN_DIGIT)) return 0; if (!expect_token(lex, "-", BASETOKEN_OTHER)) return 0; if (!get_token(lex, month, BASETOKEN_DIGIT)) return 0; @@ -1120,7 +1131,7 @@ return std::stoull(timestring.str()); } -static void delete_oldest_file(const char *location) +static void delete_oldest_file(bool has_prefix, const char *location) { BPtr<char> logDir(GetConfigPathPtr(location)); string oldestLog; @@ -1138,7 +1149,8 @@ if (entry->directory || *entry->d_name == '.') continue; - uint64_t ts = convert_log_name(entry->d_name); + uint64_t ts = convert_log_name(has_prefix, + entry->d_name); if (ts) { if (ts < oldest_ts) { @@ -1161,9 +1173,10 @@ } } -static void get_last_log(void) +static void get_last_log(bool has_prefix, const char *subdir_to_use, + std::string &last) { - BPtr<char> logDir(GetConfigPathPtr("obs-studio/logs")); + BPtr<char> logDir(GetConfigPathPtr(subdir_to_use)); struct os_dirent *entry; os_dir_t *dir = os_opendir(logDir); uint64_t highest_ts = 0; @@ -1173,11 +1186,12 @@ if (entry->directory || *entry->d_name == '.') continue; - uint64_t ts = convert_log_name(entry->d_name); + uint64_t ts = convert_log_name(has_prefix, + entry->d_name); if (ts > highest_ts) { - lastLogFile = entry->d_name; - highest_ts = ts; + last = entry->d_name; + highest_ts = ts; } } @@ -1240,7 +1254,10 @@ { stringstream dst; - get_last_log(); + get_last_log(false, "obs-studio/logs", lastLogFile); +#ifdef _WIN32 + get_last_log(true, "obs-studio/crashes", lastCrashLogFile); +#endif currentLogFile = GenerateTimeDateFilename("txt"); dst << "obs-studio/logs/" << currentLogFile.c_str(); @@ -1258,7 +1275,7 @@ #endif if (logFile.is_open()) { - delete_oldest_file("obs-studio/logs"); + delete_oldest_file(false, "obs-studio/logs"); base_set_log_handler(do_log, &logFile); } else { blog(LOG_ERROR, "Failed to open log file"); @@ -1354,7 +1371,7 @@ OBSTranslator translator; create_log_file(logFile); - delete_oldest_file("obs-studio/profiler_data"); + delete_oldest_file(false, "obs-studio/profiler_data"); program.installTranslator(&translator); @@ -1441,7 +1458,7 @@ vsnprintf(text, MAX_CRASH_REPORT_SIZE, format, args); text[MAX_CRASH_REPORT_SIZE - 1] = 0; - delete_oldest_file("obs-studio/crashes"); + delete_oldest_file(true, "obs-studio/crashes"); string name = "obs-studio/crashes/Crash "; name += GenerateTimeDateFilename("txt");
View file
obs-studio-21.0.3.tar.xz/UI/obs-app.hpp -> obs-studio-21.1.2.tar.xz/UI/obs-app.hpp
Changed
@@ -116,6 +116,8 @@ const char *GetLastLog() const; const char *GetCurrentLog() const; + const char *GetLastCrashLog() const; + std::string GetVersionString() const; bool IsPortableMode();
View file
obs-studio-21.0.3.tar.xz/UI/properties-view.cpp -> obs-studio-21.1.2.tar.xz/UI/properties-view.cpp
Changed
@@ -236,7 +236,7 @@ { const char *name = obs_property_name(prop); const char *val = obs_data_get_string(settings, name); - obs_text_type type = obs_proprety_text_type(prop); + obs_text_type type = obs_property_text_type(prop); if (type == OBS_TEXT_MULTILINE) { QPlainTextEdit *edit = new QPlainTextEdit(QT_UTF8(val)); @@ -1529,7 +1529,7 @@ void WidgetInfo::TextChanged(const char *setting) { - obs_text_type type = obs_proprety_text_type(property); + obs_text_type type = obs_property_text_type(property); if (type == OBS_TEXT_MULTILINE) { QPlainTextEdit *edit = static_cast<QPlainTextEdit*>(widget);
View file
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
@@ -1,3 +1,19 @@ +/* + * Copyright (c) 2017-2018 Hugh Bailey <obs.jim@gmail.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + #include "updater.hpp" #include <util/windows/WinHandle.hpp>
View file
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
@@ -1,3 +1,19 @@ +/* + * Copyright (c) 2017-2018 Hugh Bailey <obs.jim@gmail.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + #include "Updater.hpp" #include <algorithm>
View file
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
@@ -1,9 +1,31 @@ +/* + * Copyright (c) 2017-2018 Hugh Bailey <obs.jim@gmail.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + #include "updater.hpp" #include <stdint.h> #include <vector> -#include <lzma.h> +#ifdef _MSC_VER +# define restrict __restrict +# include <lzma.h> +# undef restrict +#else +# include <lzma.h> +#endif using namespace std; @@ -234,7 +256,7 @@ vector<uint8_t> newData; try { - newData.resize(newsize); + newData.resize((size_t)newsize); } catch (...) { throw int(-1); }
View file
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
@@ -1,20 +1,18 @@ -/****************************************************************************** - Copyright (C) 2017 Hugh Bailey <obs.jim@gmail.com> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. -******************************************************************************/ +/* + * Copyright (c) 2017-2018 Hugh Bailey <obs.jim@gmail.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ #include "updater.hpp" @@ -59,50 +57,48 @@ /* ----------------------------------------------------------------------- */ -// http://www.codeproject.com/Articles/320748/Haephrati-Elevating-during-runtime -static bool IsAppRunningAsAdminMode() +static inline bool is_64bit_windows(void); + +static inline bool HasVS2017Redist2() { - BOOL fIsRunAsAdmin = FALSE; - DWORD dwError = ERROR_SUCCESS; - PSID pAdministratorsGroup = nullptr; - - /* Allocate and initialize a SID of the administrators group. */ - SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY; - if (!AllocateAndInitializeSid(&NtAuthority, - 2, - SECURITY_BUILTIN_DOMAIN_RID, - DOMAIN_ALIAS_RID_ADMINS, - 0, - 0, - 0, - 0, - 0, - 0, - &pAdministratorsGroup)) { - dwError = GetLastError(); - goto Cleanup; - } + wchar_t base[MAX_PATH]; + wchar_t path[MAX_PATH]; + WIN32_FIND_DATAW wfd; + HANDLE handle; + int folder = (is32bit && is_64bit_windows()) + ? CSIDL_SYSTEMX86 + : CSIDL_SYSTEM; - /* Determine whether the SID of administrators group is enabled in the - * primary access token of the process. */ - if (!CheckTokenMembership(nullptr, pAdministratorsGroup, - &fIsRunAsAdmin)) { - dwError = GetLastError(); - goto Cleanup; - } + SHGetFolderPathW(NULL, folder, NULL, SHGFP_TYPE_CURRENT, base); -Cleanup: - /* Centralized cleanup for all allocated resources. */ - if (pAdministratorsGroup) { - FreeSid(pAdministratorsGroup); - pAdministratorsGroup = nullptr; + StringCbCopyW(path, sizeof(path), base); + StringCbCatW(path, sizeof(path), L"\\msvcp140.dll"); + handle = FindFirstFileW(path, &wfd); + if (handle == INVALID_HANDLE_VALUE) { + return false; + } else { + FindClose(handle); } - /* Throw the error if something failed in the function. */ - if (ERROR_SUCCESS != dwError) + StringCbCopyW(path, sizeof(path), base); + StringCbCatW(path, sizeof(path), L"\\vcruntime140.dll"); + handle = FindFirstFileW(path, &wfd); + if (handle == INVALID_HANDLE_VALUE) { return false; + } else { + FindClose(handle); + } - return !!fIsRunAsAdmin; + return true; +} + +static bool HasVS2017Redist() +{ + PVOID old = nullptr; + bool redirect = !!Wow64DisableWow64FsRedirection(&old); + bool success = HasVS2017Redist2(); + if (redirect) Wow64RevertWow64FsRedirection(old); + return success; } static void Status(const wchar_t *fmt, ...) @@ -608,6 +604,11 @@ strstr(file, "64.exe") != nullptr; } +static inline bool has_str(const char *file, const char *str) +{ + return (file && str) ? (strstr(file, str) != nullptr) : false; +} + #define UTF8ToWideBuf(wide, utf8) UTF8ToWide(wide, _countof(wide), utf8) #define WideToUTF8Buf(utf8, wide) WideToUTF8(utf8, _countof(utf8), wide) @@ -661,6 +662,12 @@ if (!isWin64 && is_64bit_file(fileUTF8)) continue; + /* ignore update files of opposite arch to reduce download */ + + if (( is32bit && has_str(fileUTF8, "/64bit/")) || + (!is32bit && has_str(fileUTF8, "/32bit/"))) + continue; + /* convert strings to wide */ wchar_t sourceURL[1024]; @@ -930,6 +937,156 @@ #define HASH_NULL \ L"0000000000000000000000000000000000000000" +static bool UpdateVS2017Redists(json_t *root) +{ + /* ------------------------------------------ * + * Initialize session */ + + const DWORD tlsProtocols = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2; + + HttpHandle hSession = WinHttpOpen(L"OBS Studio Updater/2.1", + WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, + WINHTTP_NO_PROXY_NAME, + WINHTTP_NO_PROXY_BYPASS, + 0); + if (!hSession) { + Status(L"Update failed: Couldn't open obsproject.com"); + return false; + } + + WinHttpSetOption(hSession, WINHTTP_OPTION_SECURE_PROTOCOLS, + (LPVOID)&tlsProtocols, sizeof(tlsProtocols)); + + HttpHandle hConnect = WinHttpConnect(hSession, L"obsproject.com", + INTERNET_DEFAULT_HTTPS_PORT, 0); + if (!hConnect) { + Status(L"Update failed: Couldn't connect to obsproject.com"); + return false; + } + + int responseCode; + + DWORD waitResult = WaitForSingleObject(cancelRequested, 0); + if (waitResult == WAIT_OBJECT_0) { + return false; + } + + /* ------------------------------------------ * + * Download redist */ + + Status(L"Downloading %s", L"Visual C++ 2017 Redistributable"); + + const wchar_t *file = (is32bit) + ? L"vc2017redist_x86.exe" + : L"vc2017redist_x64.exe"; + + wstring sourceURL; + sourceURL += L"https://obsproject.com/downloads/"; + sourceURL += file; + + wstring destPath; + destPath += tempPath;
View file
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
@@ -1,3 +1,19 @@ +/* + * Copyright (c) 2017-2018 Hugh Bailey <obs.jim@gmail.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + #pragma once #define WINVER 0x0600
View file
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
@@ -7,7 +7,7 @@ // // Generated from the TEXTINCLUDE 2 resource. // -#include "afxres.h" +#include "winres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS
View file
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
@@ -1647,13 +1647,30 @@ ui->viewMenu->addSeparator(); - QMenu *multiviewProjectorMenu = new QMenu(QTStr("MultiviewProjector")); - AddProjectorMenuMonitors(multiviewProjectorMenu, this, - SLOT(OpenMultiviewProjector())); + multiviewProjectorMenu = new QMenu(QTStr("MultiviewProjector")); ui->viewMenu->addMenu(multiviewProjectorMenu); - + connect(ui->viewMenu->menuAction(), &QAction::hovered, this, + &OBSBasic::UpdateMultiviewProjectorMenu); ui->viewMenu->addAction(QTStr("MultiviewWindowed"), this, SLOT(OpenMultiviewWindow())); + +#if !defined(_WIN32) && !defined(__APPLE__) + delete ui->actionShowCrashLogs; + delete ui->actionUploadLastCrashLog; + delete ui->menuCrashLogs; + delete ui->actionCheckForUpdates; + ui->actionShowCrashLogs = nullptr; + ui->actionUploadLastCrashLog = nullptr; + ui->menuCrashLogs = nullptr; + ui->actionCheckForUpdates = nullptr; +#endif +} + +void OBSBasic::UpdateMultiviewProjectorMenu() +{ + multiviewProjectorMenu->clear(); + AddProjectorMenuMonitors(multiviewProjectorMenu, this, + SLOT(OpenMultiviewProjector())); } void OBSBasic::InitHotkeys() @@ -3520,10 +3537,10 @@ QString str = QString("%1 %2: %3x%4 @ %5,%6"). arg(QTStr("Display"), QString::number(i), - QString::number((int)screenGeometry.width()), - QString::number((int)screenGeometry.height()), - QString::number((int)screenGeometry.x()), - QString::number((int)screenGeometry.y())); + QString::number(screenGeometry.width()), + QString::number(screenGeometry.height()), + QString::number(screenGeometry.x()), + QString::number(screenGeometry.y())); action = parent->addAction(str, target, slot); action->setProperty("monitor", i); @@ -4220,10 +4237,10 @@ obs_sceneitem_set_order(item, OBS_ORDER_MOVE_BOTTOM); } -static BPtr<char> ReadLogFile(const char *log) +static BPtr<char> ReadLogFile(const char *subdir, const char *log) { char logDir[512]; - if (GetConfigPath(logDir, sizeof(logDir), "obs-studio/logs") <= 0) + if (GetConfigPath(logDir, sizeof(logDir), subdir) <= 0) return nullptr; string path = (char*)logDir; @@ -4237,9 +4254,9 @@ return file; } -void OBSBasic::UploadLog(const char *file) +void OBSBasic::UploadLog(const char *subdir, const char *file) { - BPtr<char> fileString{ReadLogFile(file)}; + BPtr<char> fileString{ReadLogFile(subdir, file)}; if (!fileString) return; @@ -4249,32 +4266,11 @@ ui->menuLogFiles->setEnabled(false); - auto data_deleter = [](obs_data_t *d) { obs_data_release(d); }; - using data_t = unique_ptr<struct obs_data, decltype(data_deleter)>; - - data_t content{obs_data_create(), data_deleter}; - data_t files{obs_data_create(), data_deleter}; - data_t request{obs_data_create(), data_deleter}; - - obs_data_set_string(content.get(), "content", fileString); - - obs_data_set_obj(files.get(), file, content.get()); - stringstream ss; ss << "OBS " << App()->GetVersionString() - << " log file uploaded at " << CurrentDateTimeString(); - obs_data_set_string(request.get(), "description", ss.str().c_str()); - obs_data_set_bool(request.get(), "public", false); - obs_data_set_obj(request.get(), "files", files.get()); + << " log file uploaded at " << CurrentDateTimeString() + << "\n\n" << fileString; - const char *json = obs_data_get_json(request.get()); - if (!json) { - blog(LOG_ERROR, "Failed to get JSON data for log upload"); - return; - } - - QBuffer *postData = new QBuffer(); - postData->setData(json, (int) strlen(json)); if (logUploadThread) { logUploadThread->wait(); @@ -4282,8 +4278,9 @@ } RemoteTextThread *thread = new RemoteTextThread( - "https://api.github.com/gists", - "application/json", json); + "https://hastebin.com/documents", + "text/plain", ss.str().c_str()); + logUploadThread = thread; connect(thread, &RemoteTextThread::Result, this, &OBSBasic::logUploadFinished); @@ -4302,12 +4299,12 @@ void OBSBasic::on_actionUploadCurrentLog_triggered() { - UploadLog(App()->GetCurrentLog()); + UploadLog("obs-studio/logs", App()->GetCurrentLog()); } void OBSBasic::on_actionUploadLastLog_triggered() { - UploadLog(App()->GetLastLog()); + UploadLog("obs-studio/logs", App()->GetLastLog()); } void OBSBasic::on_actionViewCurrentLog_triggered() @@ -4326,6 +4323,21 @@ QDesktopServices::openUrl(url); } +void OBSBasic::on_actionShowCrashLogs_triggered() +{ + char logDir[512]; + if (GetConfigPath(logDir, sizeof(logDir), "obs-studio/crashes") <= 0) + return; + + QUrl url = QUrl::fromLocalFile(QT_UTF8(logDir)); + QDesktopServices::openUrl(url); +} + +void OBSBasic::on_actionUploadLastCrashLog_triggered() +{ + UploadLog("obs-studio/crashes", App()->GetLastCrashLog()); +} + void OBSBasic::on_actionCheckForUpdates_triggered() { CheckForUpdates(true); @@ -4343,7 +4355,9 @@ } obs_data_t *returnData = obs_data_create_from_json(QT_TO_UTF8(text)); - QString logURL = obs_data_get_string(returnData, "html_url"); + string resURL = "https://hastebin.com/"; + resURL += obs_data_get_string(returnData, "key"); + QString logURL = resURL.c_str(); obs_data_release(returnData); OBSLogReply logDialog(this, logURL); @@ -6040,29 +6054,32 @@ connect(exit, SIGNAL(triggered()), this, SLOT(close())); - QMenu *previewProjector = new QMenu(QTStr("PreviewProjector")); - AddProjectorMenuMonitors(previewProjector, this, - SLOT(OpenPreviewProjector())); - QMenu *studioProgramProjector = new QMenu( - QTStr("StudioProgramProjector")); - AddProjectorMenuMonitors(studioProgramProjector, this, - SLOT(OpenStudioProgramProjector())); - trayMenu = new QMenu; - trayMenu->addAction(showHide); - trayMenu->addMenu(previewProjector); - trayMenu->addMenu(studioProgramProjector); - trayMenu->addAction(sysTrayStream); - trayMenu->addAction(sysTrayRecord); - trayMenu->addAction(sysTrayReplayBuffer); - trayMenu->addAction(exit); - trayIcon->setContextMenu(trayMenu); } void OBSBasic::IconActivated(QSystemTrayIcon::ActivationReason reason) { - if (reason == QSystemTrayIcon::Trigger) + if (reason == QSystemTrayIcon::Trigger) { ToggleShowHide(); + } else if (reason == QSystemTrayIcon::Context) { + QMenu *previewProjector = new QMenu(QTStr("PreviewProjector"));
View file
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
@@ -186,6 +186,9 @@ QPointer<QAction> exit; QPointer<QMenu> trayMenu; + QPointer<QMenu> multiviewProjectorMenu; + void UpdateMultiviewProjectorMenu(); + void DrawBackdrop(float cx, float cy); void SetupEncoders(); @@ -196,7 +199,7 @@ void UpdateVolumeControlsDecayRate(); void ClearVolumeControls(); - void UploadLog(const char *file); + void UploadLog(const char *subdir, const char *file); void Save(const char *file); void Load(const char *file); @@ -586,6 +589,9 @@ void on_actionViewCurrentLog_triggered(); void on_actionCheckForUpdates_triggered(); + void on_actionShowCrashLogs_triggered(); + void on_actionUploadLastCrashLog_triggered(); + void on_actionEditTransform_triggered(); void on_actionCopyTransform_triggered(); void on_actionPasteTransform_triggered();
View file
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
@@ -1105,6 +1105,9 @@ if (obs_sceneitem_locked(item)) return true; + if (!SceneItemHasVideo(item)) + return true; + if (!obs_sceneitem_selected(item)) return true;
View file
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
@@ -412,7 +412,6 @@ HookWidget(ui->fpsType, COMBO_CHANGED, VIDEO_CHANGED); HookWidget(ui->fpsCommon, COMBO_CHANGED, VIDEO_CHANGED); HookWidget(ui->fpsInteger, SCROLL_CHANGED, VIDEO_CHANGED); - HookWidget(ui->fpsInteger, SCROLL_CHANGED, VIDEO_CHANGED); HookWidget(ui->fpsNumerator, SCROLL_CHANGED, VIDEO_CHANGED); HookWidget(ui->fpsDenominator, SCROLL_CHANGED, VIDEO_CHANGED); HookWidget(ui->renderer, COMBO_CHANGED, ADV_RESTART); @@ -443,10 +442,13 @@ HookWidget(ui->enableNewSocketLoop, CHECK_CHANGED, ADV_CHANGED); HookWidget(ui->enableLowLatencyMode, CHECK_CHANGED, ADV_CHANGED); -#if !defined(_WIN32) && !defined(__APPLE__) && !HAVE_PULSEAUDIO +#if !defined(_WIN32) && !defined(__APPLE__) delete ui->enableAutoUpdates; - delete ui->advAudioGroupBox; ui->enableAutoUpdates = nullptr; +#endif + +#if !defined(_WIN32) && !defined(__APPLE__) && !HAVE_PULSEAUDIO + delete ui->advAudioGroupBox; ui->advAudioGroupBox = nullptr; #endif
View file
obs-studio-21.0.3.tar.xz/cmake/Modules/CopyMSVCBins.cmake -> obs-studio-21.1.2.tar.xz/cmake/Modules/CopyMSVCBins.cmake
Changed
@@ -147,27 +147,27 @@ ) endif() -if (CMAKE_CONFIGURATION_TYPES MATCHES "Debug") - file(GLOB QT_DEBUG_BIN_FILES - "${Qt5Core_DIR}/../../../bin/Qt5Cored.dll" - "${Qt5Core_DIR}/../../../bin/Qt5Guid.dll" - "${Qt5Core_DIR}/../../../bin/Qt5Widgetsd.dll" - "${Qt5Core_DIR}/../../../bin/libGLESv2d.dll" - "${Qt5Core_DIR}/../../../bin/libEGLd.dll") - file(GLOB QT_DEBUG_PLAT_BIN_FILES - "${Qt5Core_DIR}/../../../plugins/platforms/qwindowsd.dll") -endif() - -if (CMAKE_CONFIGURATION_TYPES MATCHES "Rel") - file(GLOB QT_BIN_FILES - "${Qt5Core_DIR}/../../../bin/Qt5Core.dll" - "${Qt5Core_DIR}/../../../bin/Qt5Gui.dll" - "${Qt5Core_DIR}/../../../bin/Qt5Widgets.dll" - "${Qt5Core_DIR}/../../../bin/libGLESv2.dll" - "${Qt5Core_DIR}/../../../bin/libEGL.dll") - file(GLOB QT_PLAT_BIN_FILES - "${Qt5Core_DIR}/../../../plugins/platforms/qwindows.dll") -endif() +file(GLOB QT_DEBUG_BIN_FILES + "${Qt5Core_DIR}/../../../bin/Qt5Cored.dll" + "${Qt5Core_DIR}/../../../bin/Qt5Guid.dll" + "${Qt5Core_DIR}/../../../bin/Qt5Widgetsd.dll" + "${Qt5Core_DIR}/../../../bin/libGLESv2d.dll" + "${Qt5Core_DIR}/../../../bin/libEGLd.dll") +file(GLOB QT_DEBUG_PLAT_BIN_FILES + "${Qt5Core_DIR}/../../../plugins/platforms/qwindowsd.dll") +file(GLOB QT_DEBUG_STYLES_BIN_FILES + "${Qt5Core_DIR}/../../../plugins/styles/qwindowsvistastyled.dll") + +file(GLOB QT_BIN_FILES + "${Qt5Core_DIR}/../../../bin/Qt5Core.dll" + "${Qt5Core_DIR}/../../../bin/Qt5Gui.dll" + "${Qt5Core_DIR}/../../../bin/Qt5Widgets.dll" + "${Qt5Core_DIR}/../../../bin/libGLESv2.dll" + "${Qt5Core_DIR}/../../../bin/libEGL.dll") +file(GLOB QT_PLAT_BIN_FILES + "${Qt5Core_DIR}/../../../plugins/platforms/qwindows.dll") +file(GLOB QT_STYLES_BIN_FILES + "${Qt5Core_DIR}/../../../plugins/styles/qwindowsvistastyle.dll") file(GLOB QT_ICU_BIN_FILES "${Qt5Core_DIR}/../../../bin/icu*.dll") @@ -190,16 +190,21 @@ ${QT_DEBUG_BIN_FILES}) set(ALL_PLATFORM_BIN_FILES) - set(ALL_PLATFORM_REL_BIN_FILES ${QT_PLAT_BIN_FILES}) - set(ALL_PLATFORM_DBG_BIN_FILES ${QT_DEBUG_PLAT_BIN_FILES}) +set(ALL_STYLES_BIN_FILES) +set(ALL_STYLES_REL_BIN_FILES + ${QT_STYLES_BIN_FILES}) +set(ALL_STYLES_DBG_BIN_FILES + ${QT_DEBUG_STYLES_BIN_FILES}) + foreach(list ALL_BASE_BIN_FILES ALL_REL_BIN_FILES ALL_DBG_BIN_FILES - ALL_PLATFORM_BIN_FILES ALL_PLATFORM_REL_BIN_FILES ALL_PLATFORM_DBG_BIN_FILES) + ALL_PLATFORM_BIN_FILES ALL_PLATFORM_REL_BIN_FILES ALL_PLATFORM_DBG_BIN_FILES + ALL_STYLES_BIN_FILES ALL_STYLES_REL_BIN_FILES ALL_STYLES_DBG_BIN_FILES) if(${list}) list(REMOVE_DUPLICATES ${list}) endif() @@ -215,8 +220,10 @@ message(STATUS "zlib files: ${ZLIB_BIN_FILES}") message(STATUS "QT Debug files: ${QT_DEBUG_BIN_FILES}") message(STATUS "QT Debug Platform files: ${QT_DEBUG_PLAT_BIN_FILES}") +message(STATUS "QT Debug Styles files: ${QT_DEBUG_STYLES_BIN_FILES}") message(STATUS "QT Release files: ${QT_BIN_FILES}") message(STATUS "QT Release Platform files: ${QT_PLAT_BIN_FILES}") +message(STATUS "QT Release Styles files: ${QT_STYLES_BIN_FILES}") message(STATUS "QT ICU files: ${QT_ICU_BIN_FILES}") foreach(BinFile ${ALL_BASE_BIN_FILES}) @@ -249,4 +256,19 @@ file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d/platforms/") endforeach() +foreach(BinFile ${ALL_STYLES_BIN_FILES}) + make_directory("${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}/styles") + file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}/styles/") +endforeach() + +foreach(BinFile ${ALL_STYLES_REL_BIN_FILES}) + make_directory("${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r/styles") + file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}r/styles/") +endforeach() + +foreach(BinFile ${ALL_STYLES_DBG_BIN_FILES}) + make_directory("${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d/styles") + file(COPY "${BinFile}" DESTINATION "${CMAKE_SOURCE_DIR}/additional_install_files/exec${_bin_suffix}d/styles/") +endforeach() + set(COPIED_DEPENDENCIES TRUE CACHE BOOL "Dependencies have been copied, set to false to copy again" FORCE)
View file
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
@@ -377,7 +377,7 @@ lock_callback(); lua_pushnumber(script, (lua_Number)seconds); - call_func(obs_lua_tick_callback, 2, 0); + call_func(obs_lua_tick_callback, 1, 0); unlock_callback(); } @@ -581,6 +581,32 @@ /* -------------------------------------------- */ +static bool source_enum_filters_proc(obs_source_t *source, obs_source_t *filter, void *param) +{ + lua_State *script = param; + + obs_source_get_ref(filter); + ls_push_libobs_obj(obs_source_t, filter, false); + + size_t idx = lua_rawlen(script, -2); + lua_rawseti(script, -2, (int)idx + 1); + return true; +} + +static int source_enum_filters(lua_State *script) +{ + obs_source_t *source; + if (!ls_get_libobs_obj(obs_source_t, 1, &source)) + return 0; + + lua_newtable(script); + obs_source_enum_filters(source, source_enum_filters_proc, script); + return 1; +} + + +/* -------------------------------------------- */ + static bool enum_items_proc(obs_scene_t *scene, obs_sceneitem_t *item, void *param) { @@ -972,6 +998,7 @@ add_func("timer_remove", timer_remove); add_func("timer_add", timer_add); add_func("obs_enum_sources", enum_sources); + add_func("obs_source_enum_filters", source_enum_filters); add_func("obs_scene_enum_items", scene_enum_items); add_func("source_list_release", source_list_release); add_func("sceneitem_list_release", sceneitem_list_release);
View file
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
@@ -1595,6 +1595,8 @@ extern void add_python_frontend_funcs(PyObject *module); +static bool python_loaded_at_all = false; + bool obs_scripting_load_python(const char *python_path) { if (python_loaded) @@ -1696,6 +1698,8 @@ obs_python_unload(); } + python_loaded_at_all = success; + if (python_loaded) obs_add_tick_callback(python_tick, NULL); @@ -1704,6 +1708,9 @@ void obs_python_unload(void) { + if (!python_loaded_at_all) + return; + if (python_loaded && Py_IsInitialized()) { PyGILState_Ensure(); @@ -1722,4 +1729,6 @@ pthread_mutex_destroy(&tick_mutex); pthread_mutex_destroy(&timer_mutex); dstr_free(&cur_py_log_chunk); + + python_loaded_at_all = false; }
View file
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
@@ -213,6 +213,8 @@ pthread_mutex_destroy(&defer_call_mutex); os_sem_destroy(defer_call_semaphore); + + scripting_loaded = false; } const char **obs_scripting_supported_formats(void)
View file
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
@@ -59,6 +59,7 @@ %ignore obs_add_main_render_callback; %ignore obs_remove_main_render_callback; %ignore obs_enum_sources; +%ignore obs_source_enum_filters; %ignore obs_properties_add_button; %ignore obs_property_set_modified_callback; %ignore signal_handler_connect;
View file
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
@@ -383,7 +383,7 @@ --------------------- -.. function:: enum obs_text_type obs_proprety_text_type(obs_property_t *p) +.. function:: enum obs_text_type obs_property_text_type(obs_property_t *p) ---------------------
View file
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
@@ -59,6 +59,7 @@ GLX_STENCIL_SIZE, 0, GLX_DEPTH_SIZE, 0, GLX_BUFFER_SIZE, 32, + GLX_ALPHA_SIZE, 8, GLX_DOUBLEBUFFER, true, GLX_X_RENDERABLE, true, None
View file
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
@@ -3,10 +3,16 @@ #include <audioclient.h> +#ifndef KSAUDIO_SPEAKER_2POINT1 #define KSAUDIO_SPEAKER_2POINT1 (KSAUDIO_SPEAKER_STEREO|SPEAKER_LOW_FREQUENCY) +#endif + #define KSAUDIO_SPEAKER_SURROUND_AVUTIL \ (KSAUDIO_SPEAKER_STEREO|SPEAKER_FRONT_CENTER) + +#ifndef KSAUDIO_SPEAKER_4POINT1 #define KSAUDIO_SPEAKER_4POINT1 (KSAUDIO_SPEAKER_SURROUND|SPEAKER_LOW_FREQUENCY) +#endif #define safe_release(ptr) \ do { \
View file
obs-studio-21.0.3.tar.xz/libobs/obs-config.h -> obs-studio-21.1.2.tar.xz/libobs/obs-config.h
Changed
@@ -34,14 +34,14 @@ * * Reset to zero each major version */ -#define LIBOBS_API_MINOR_VER 0 +#define LIBOBS_API_MINOR_VER 1 /* * Increment if backward-compatible bug fix * * Reset to zero each major or minor version */ -#define LIBOBS_API_PATCH_VER 3 +#define LIBOBS_API_PATCH_VER 2 #define MAKE_SEMANTIC_VERSION(major, minor, patch) \ ((major << 24) | \
View file
obs-studio-21.0.3.tar.xz/libobs/obs-output.c -> obs-studio-21.1.2.tar.xz/libobs/obs-output.c
Changed
@@ -2061,7 +2061,8 @@ struct caption_text *tail, struct caption_text **head) { struct caption_text *next = bzalloc(sizeof(struct caption_text)); - snprintf(&next->text[0], CAPTION_LINE_BYTES + 1, "%.*s", bytes, text); + snprintf(&next->text[0], CAPTION_LINE_BYTES + 1, "%.*s", + (int)bytes, text); if (!*head) { *head = next;
View file
obs-studio-21.0.3.tar.xz/libobs/obs-properties.c -> obs-studio-21.1.2.tar.xz/libobs/obs-properties.c
Changed
@@ -738,7 +738,7 @@ return data ? data->type : OBS_NUMBER_SCROLLER; } -enum obs_text_type obs_proprety_text_type(obs_property_t *p) +enum obs_text_type obs_property_text_type(obs_property_t *p) { struct text_data *data = get_type_data(p, OBS_PROPERTY_TEXT); return data ? data->type : OBS_TEXT_DEFAULT; @@ -1107,3 +1107,8 @@ data->ranges.array[idx].max_time : (struct media_frames_per_second){0}; } + +enum obs_text_type obs_proprety_text_type(obs_property_t *p) +{ + return obs_property_text_type(p); +}
View file
obs-studio-21.0.3.tar.xz/libobs/obs-properties.h -> obs-studio-21.1.2.tar.xz/libobs/obs-properties.h
Changed
@@ -263,7 +263,7 @@ EXPORT double obs_property_float_max(obs_property_t *p); EXPORT double obs_property_float_step(obs_property_t *p); EXPORT enum obs_number_type obs_property_float_type(obs_property_t *p); -EXPORT enum obs_text_type obs_proprety_text_type(obs_property_t *p); +EXPORT enum obs_text_type obs_property_text_type(obs_property_t *p); EXPORT enum obs_path_type obs_property_path_type(obs_property_t *p); EXPORT const char * obs_property_path_filter(obs_property_t *p); EXPORT const char * obs_property_path_default_path(obs_property_t *p); @@ -336,6 +336,11 @@ EXPORT struct media_frames_per_second obs_property_frame_rate_fps_range_max( obs_property_t *p, size_t idx); +#ifndef SWIG +DEPRECATED +EXPORT enum obs_text_type obs_proprety_text_type(obs_property_t *p); +#endif + #ifdef __cplusplus } #endif
View file
obs-studio-21.0.3.tar.xz/libobs/obs.h -> obs-studio-21.1.2.tar.xz/libobs/obs.h
Changed
@@ -145,15 +145,16 @@ struct vec2 bounds; }; -#ifndef SWIG /** * Video initialization structure */ struct obs_video_info { +#ifndef SWIG /** * Graphics module to use (usually "libobs-opengl" or "libobs-d3d11") */ const char *graphics_module; +#endif uint32_t fps_num; /**< Output FPS numerator */ uint32_t fps_den; /**< Output FPS denominator */ @@ -176,7 +177,6 @@ enum obs_scale_type scale_type; /**< How to scale if scaling */ }; -#endif /** * Audio initialization structure @@ -283,7 +283,6 @@ */ EXPORT profiler_name_store_t *obs_get_profiler_name_store(void); -#ifndef SWIG /** * Sets base video output base resolution/fps/format. * @@ -301,7 +300,6 @@ * OBS_VIDEO_FAIL for generic failure */ EXPORT int obs_reset_video(struct obs_video_info *ovi); -#endif /** * Sets base audio output format/channels/samples/etc @@ -310,10 +308,8 @@ */ EXPORT bool obs_reset_audio(const struct obs_audio_info *oai); -#ifndef SWIG /** Gets the current video settings, returns false if no video */ EXPORT bool obs_get_video_info(struct obs_video_info *ovi); -#endif /** Gets the current audio settings, returns false if no audio */ EXPORT bool obs_get_audio_info(struct obs_audio_info *oai);
View file
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
@@ -212,8 +212,15 @@ strref_clear(&value); config_parse_string(lex, &value, 0); - if (!strref_is_empty(&value)) + if (strref_is_empty(&value)) { + struct config_item item; + item.name = bstrdup_n(name.array, name.len); + item.value = bzalloc(1); + darray_push_back(sizeof(struct config_item), + §ion->items, &item); + } else { config_add_item(§ion->items, &name, &value); + } } }
View file
obs-studio-21.1.2.tar.xz/plugins/coreaudio-encoder/data/locale/fil-PH.ini
Added
@@ -0,0 +1,6 @@ +CoreAudioAAC="CoreAudio AAC encoder" +Bitrate="Bitrate" +AllowHEAAC="Payagan ang HE-AAC" +OutputSamplerate="Output Sample Rate" +UseInputSampleRate="Gamitin ang Sample Rate ng Input (OBS) (maaaring maglista ng mga hindi suportadong bitrates)" +
View file
obs-studio-21.1.2.tar.xz/plugins/coreaudio-encoder/data/locale/ka-GE.ini
Added
@@ -0,0 +1,6 @@ +CoreAudioAAC="CoreAudio AAC გამშიფრავი" +Bitrate="ბიტური სიხშირე" +AllowHEAAC="HE-AAC დაშვება" +OutputSamplerate="გამომავალი სიგნალის სიხშირე" +UseInputSampleRate="შემავალი (OBS) სიგნალის სიხშირის გამოყენება (შესაძლოა მოიცავდეს მხარდაუჭერელ სიხშირეებსაც)" +
View file
obs-studio-21.1.2.tar.xz/plugins/coreaudio-encoder/data/locale/tl-PH.ini
Added
@@ -0,0 +1,6 @@ +CoreAudioAAC="Ang Buod ng Audio AAC encoder" +Bitrate="Baytreyt" +AllowHEAAC="Pahintulutan ang HE-AAC" +OutputSamplerate="Paglabas ng Sample Rate" +UseInputSampleRate="Gamitin ang pangpasok na (OBS) Sample Rate (Maaaring ilista ang mga hindi sinusuportahang bitrates)" +
View file
obs-studio-21.1.2.tar.xz/plugins/decklink/data/locale/fil-PH.ini
Added
@@ -0,0 +1,20 @@ +BlackmagicDevice="Blackmagic Device" +Device="Kagamitan" +Mode="Mode" +Buffering="Gamitin ang Buffering" +PixelFormat="Format ng Pixel" +ColorSpace="YUV Kulay Space" +ColorSpace.Default="Pangunahin" +ColorRange="Saklaw ng Kulay ng YUV" +ColorRange.Default="Pangunahin" +ColorRange.Partial="Bahagyang" +ColorRange.Full="Buong" +ChannelFormat="Pinagmulan" +ChannelFormat.None="Wala" +ChannelFormat.2_0ch="2ch" +ChannelFormat.2_1ch="2.1ch" +ChannelFormat.4_0ch="4ch" +ChannelFormat.4_1ch="4.1ch" +ChannelFormat.5_1ch="5.1ch" +ChannelFormat.7_1ch="7.1ch" +
View file
obs-studio-21.1.2.tar.xz/plugins/decklink/data/locale/ka-GE.ini
Added
@@ -0,0 +1,20 @@ +BlackmagicDevice="Blackmagic მოწყობილობა" +Device="მოწყობილობა" +Mode="რეჟიმი" +Buffering="ბუფერიზაციის გამოყენება" +PixelFormat="პიქსელის ფორმატი" +ColorSpace="YUV ფერთა სისტემა" +ColorSpace.Default="ნაგულისხმევი" +ColorRange="YUV ფერთა გამა" +ColorRange.Default="ნაგულისხმევი" +ColorRange.Partial="ნაწილობრივი" +ColorRange.Full="სრული" +ChannelFormat="არხი" +ChannelFormat.None="არცერთი" +ChannelFormat.2_0ch="2 არხიანი" +ChannelFormat.2_1ch="2.1 არხიანი" +ChannelFormat.4_0ch="4 არხიანი" +ChannelFormat.4_1ch="4.1 არხიანი" +ChannelFormat.5_1ch="5.1 არხიანი" +ChannelFormat.7_1ch="7.1 არხიანი" +
View file
obs-studio-21.1.2.tar.xz/plugins/decklink/data/locale/tl-PH.ini
Added
@@ -0,0 +1,20 @@ +BlackmagicDevice="Itim na salamangka na aparato" +Device="Aparato" +Mode="I-mode" +Buffering="Paggamit ng Buffering" +PixelFormat="Ang Format ng Pixel" +ColorSpace="Pagitan sa kulay na YUV" +ColorSpace.Default="I-default" +ColorRange="Ang Saklaw ng Kulay na YUV" +ColorRange.Default="I-default" +ColorRange.Partial="Bahagya" +ColorRange.Full="Puno" +ChannelFormat="Ang Channel" +ChannelFormat.None="Wala" +ChannelFormat.2_0ch="2ch" +ChannelFormat.2_1ch="2.1ch" +ChannelFormat.4_0ch="4ch" +ChannelFormat.4_1ch="4.1ch" +ChannelFormat.5_1ch="5.1ch" +ChannelFormat.7_1ch="7.1ch" +
View file
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
@@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "AMD Encoder for OBS Studio" -#define MyAppVersion "@enc-amf_VERSION_MAJOR@.@enc-amf_VERSION_MINOR@.@enc-amf_VERSION_PATCH@" +#define MyAppVersion "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@" #define MyAppPublisher "Xaymars Technology Workshop" #define MyAppURL "http://www.xaymar.com/portfolio/plugin-amd-vce-plugin-for-obs-studio/"
View file
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
@@ -1,13 +1,27 @@ -# 2.3.1 - The Blacklist and imroved support for Replay Buffer -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! +# 2.3.3 - Changes to the Blacklist, Out-of-Process AMF Capability testing and more (Hotfix 1) +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. -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. +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. + +Hotfix: Configuration Version should now match the plugin version again. ## Changelog +### 2.3.3 (Hotfix) +* Fixed H264 Plugin not properly adjusting config version number. +* Reduced subprocess 'amf-test' size, which is used to check for AMF compatibility. + +### 2.3.2 +* 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. +* Fixed the H265 encoder not stopping which was caused by 'Keyframe Interval' and 'GOP Size' being stuck at 0 internally. +* Replaced the blacklist with a warning message to allow Windows 8 users to use current versions. +* Fixed a crash with older Drivers which do not have Pre-Pass or VBAQ. +* Fixed 'Target Bitrate' being set as 'Peak Bitrate' in VBR rate control mode. +* Fixed Direct3D 11.1 not being used even if available, resulting in minimally lower performance. + ### 2.3.1 * Skipped 2.3.0 as it was not included with obs-studio. * Improved support for the "New Networking Code" and "Replay Buffer" features by renaming 'Bitrate.Target' to 'bitrate'. ### 2.3.0 * Added a blacklist for drivers exposing an AMF Runtime older than 1.4.6.0. -* Removed all hidden properties no longer exposed by the newest AMF Runtime. \ No newline at end of file +* Removed all hidden properties no longer exposed by the newest AMF Runtime.
View file
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
@@ -1,7 +1,7 @@ @ECHO OFF REM Shut up, I'm just as lazy as anyone else. SET "CURDIR=%~dp0" -SET "FINALNAME=AMD-Encoder-for-OBS-Studio.@enc-amf_VERSION_MAJOR@.@enc-amf_VERSION_MINOR@.@enc-amf_VERSION_PATCH@" +SET "FINALNAME=AMD-Encoder-for-OBS-Studio.@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@" SET "SevenZip=C:\Program Files\7-Zip\7z.exe" SET "InnoSetup=C:\Program Files (x86)\Inno Setup 5\Compil32.exe"
View file
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
@@ -15,15 +15,12 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -cmake_minimum_required(VERSION 2.8.12) -PROJECT(enc-amf) +cmake_minimum_required(VERSION 3.1.0) +PROJECT(enc-amf VERSION 2.3.3) ################################################################################ # Version ################################################################################ -SET(enc-amf_VERSION_MAJOR 2) -SET(enc-amf_VERSION_MINOR 3) -SET(enc-amf_VERSION_PATCH 1) configure_file( "${PROJECT_SOURCE_DIR}/#Resources/package.in.bat" "${PROJECT_SOURCE_DIR}/#Resources/package.bat" @@ -98,7 +95,7 @@ ################################################################################ # Standalone and OBS Studio Build Data ################################################################################ -if(TARGET obs) +if(TARGET libobs) # OBS Studio Specific # Variables @@ -177,7 +174,6 @@ "${PATH_OBSStudio}/" ) add_definitions(-D_CRT_SECURE_NO_WARNINGS) - add_definitions(-DNO_PIPED_DETECTION) endif() ################################################################################ @@ -195,27 +191,35 @@ # All Warnings, Extra Warnings, Pedantic if(MSVC) - # Force to always compile with W4 - if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") - string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") - endif() + # Force to always compile with W4 + if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") + string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") + endif() + + # Enable Options + # /Gy (Function-Level Linking) + # /OPT:REF + # /OPT:NOICF + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Gy") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Gy") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:REF /OPT:NOICF") elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) - # Update if necessary - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic") + # Update if necessary + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic") endif() -if(TARGET obs) +# Main Project +if(TARGET libobs) install_obs_plugin_with_data(enc-amf Resources) - add_subdirectory(Source/detect-amf) else() math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}") add_custom_command(TARGET enc-amf POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${PROJECT_SOURCE_DIR}/Resources/locale" "${PROJECT_SOURCE_DIR}/#Build/data/obs-plugins/enc-amf/locale" - ) + ) add_custom_command(TARGET enc-amf POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:enc-amf>" @@ -223,7 +227,10 @@ ) add_custom_command(TARGET enc-amf POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy - "$<TARGET_FILE_DIR:enc-amf>/enc-amf.pdb" - "${PROJECT_SOURCE_DIR}/#Build/obs-plugins/${BITS}bit/enc-amf.pdb" + "$<TARGET_PDB_FILE:enc-amf>" + "${PROJECT_SOURCE_DIR}/#Build/obs-plugins/${BITS}bit/$<TARGET_PDB_FILE_NAME:enc-amf>" ) endif() + +# Sub Project +add_subdirectory(amf-test)
View file
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
@@ -19,7 +19,7 @@ #pragma once -const uint16_t PLUGIN_VERSION_MAJOR = @enc-amf_VERSION_MAJOR@; -const uint16_t PLUGIN_VERSION_MINOR = @enc-amf_VERSION_MINOR@; -const uint32_t PLUGIN_VERSION_PATCH = @enc-amf_VERSION_PATCH@; +const uint16_t PLUGIN_VERSION_MAJOR = @PROJECT_VERSION_MAJOR@; +const uint16_t PLUGIN_VERSION_MINOR = @PROJECT_VERSION_MINOR@; +const uint32_t PLUGIN_VERSION_PATCH = @PROJECT_VERSION_PATCH@; 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));
View file
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
@@ -33,19 +33,11 @@ #define PLUGIN_NAME "AMD Advanced Media Framework" #include "Version.h" -#ifdef PIPED_PROCESS -#define PLOG(level, ...) -#define PLOG_ERROR(...) -#define PLOG_WARNING(...) -#define PLOG_INFO(...) -#define PLOG_DEBUG(...) -#else #define PLOG(level, ...) blog(level, "[AMF] " __VA_ARGS__); #define PLOG_ERROR(...) PLOG(LOG_ERROR, __VA_ARGS__) #define PLOG_WARNING(...) PLOG(LOG_WARNING, __VA_ARGS__) #define PLOG_INFO(...) PLOG(LOG_INFO, __VA_ARGS__) #define PLOG_DEBUG(...) PLOG(LOG_DEBUG, __VA_ARGS__) -#endif // Utility #define vstr(s) dstr(s) @@ -70,15 +62,17 @@ #endif #define OUT -#ifdef PIPED_PROCESS -#define QUICK_FORMAT_MESSAGE(var, ...) std::string var = ""; +#ifdef _WIN64 +#define BIT_STR "64" #else +#define BIT_STR "32" +#endif + #define QUICK_FORMAT_MESSAGE(var, ...) std::string var = ""; { \ std::vector<char> QUICK_FORMAT_MESSAGE_buf(1024); \ snprintf(QUICK_FORMAT_MESSAGE_buf.data(), QUICK_FORMAT_MESSAGE_buf.size(), __VA_ARGS__); \ var = std::string(QUICK_FORMAT_MESSAGE_buf.data()); \ } -#endif #ifndef __FUNCTION_NAME__ #if defined(_WIN32) || defined(_WIN64) //WINDOWS
View file
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
@@ -147,8 +147,7 @@ QueueSize="Wachtrij Grootte" 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." View="Weergavemodus" -View.Description="Welke eigenschappen moeten worden getoond?\nAls u -'\@AMF.H264.View.Master\@' gebruikt dan ontvangt u verder geen ondersteuning." +View.Description="Welke eigenschappen moeten worden getoond?\nAls u '\@AMF.H264.View.Master\@' gebruikt dan ontvangt u verder geen ondersteuning." View.Basic="Simpel" View.Advanced="Geavanceerd" View.Expert="Expert"
View file
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
@@ -20,11 +20,6 @@ #include "amf-capabilities.h" #include "utility.h" -//#ifdef _WIN32 -//#include <windows.h> -//#include <VersionHelpers.h> -//#endif - using namespace Plugin; using namespace Plugin::AMD; @@ -51,6 +46,9 @@ #pragma endregion Singleton Plugin::AMD::CapabilityManager::CapabilityManager() { + // Potential fix for unintended crashes by AMD including asserts in release builds. + AMD::AMF::Instance()->EnableDebugTrace(false); + // Key order: API, Adapter, Codec for (auto api : API::EnumerateAPIs()) { for (auto adapter : api->EnumerateAdapters()) { @@ -69,7 +67,6 @@ isSupported = true; } catch (const std::exception& e) { PLOG_WARNING("%s", e.what()); - (void)e; } PLOG_DEBUG("[Capability Manager] Testing %s Adapter '%s' with codec %s: %s.",
View file
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
@@ -1353,7 +1353,6 @@ // Internal void Plugin::AMD::EncoderH264::PacketPriorityAndKeyframe(amf::AMFDataPtr& pData, struct encoder_packet* packet) { -#ifndef PIPED_PROCESS AMFTRACECALL; uint64_t pktType; pData->GetProperty(AMF_VIDEO_ENCODER_OUTPUT_DATA_TYPE, &pktType); @@ -1370,10 +1369,6 @@ packet->priority = 0; break; } -#else - (void)pData; - (void)packet; -#endif } AMF_RESULT Plugin::AMD::EncoderH264::GetExtraDataInternal(amf::AMFVariant* p) { @@ -1498,7 +1493,6 @@ m_UniqueId, Utility::QualityPresetToString(GetQualityPreset())); auto profileLevel = static_cast<uint16_t>(GetProfileLevel()); - (void)profileLevel; PLOG_INFO(PREFIX " Profile: %s %" PRIu16 ".%" PRIu16, m_UniqueId, Utility::ProfileToString(GetProfile()),
View file
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
@@ -1402,7 +1402,6 @@ // Internal void Plugin::AMD::EncoderH265::PacketPriorityAndKeyframe(amf::AMFDataPtr& pData, struct encoder_packet* packet) { -#ifndef PIPED_PROCESS AMFTRACECALL; uint64_t pktType; @@ -1416,10 +1415,6 @@ packet->priority = 0; break; } -#else - (void)pData; - (void)packet; -#endif } AMF_RESULT Plugin::AMD::EncoderH265::GetExtraDataInternal(amf::AMFVariant* p) { @@ -1543,7 +1538,6 @@ m_UniqueId, Utility::QualityPresetToString(GetQualityPreset())); auto profileLevel = static_cast<uint16_t>(GetProfileLevel()); - (void)profileLevel; PLOG_INFO(PREFIX " Profile: %s %" PRIu16 ".%" PRIu16, m_UniqueId, Utility::ProfileToString(GetProfile()),
View file
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
@@ -536,7 +536,6 @@ } void Plugin::AMD::Encoder::GetVideoInfo(struct video_scale_info* info) { -#ifndef PIPED_PROCESS AMFTRACECALL; if (!m_AMFContext || !m_AMFEncoder) @@ -572,9 +571,6 @@ } else { info->range = VIDEO_RANGE_PARTIAL; } -#else - (void)info; -#endif } bool Plugin::AMD::Encoder::GetExtraData(uint8_t** extra_data, size_t* size) { @@ -633,7 +629,6 @@ } bool Plugin::AMD::Encoder::EncodeStore(OUT amf::AMFSurfacePtr& surface, IN struct encoder_frame* frame) { -#ifndef PIPED_PROCESS AMFTRACECALL; AMF_RESULT res; @@ -731,10 +726,7 @@ surface->GetDuration(), printableType.c_str()); } -#else - (void)surface; - (void)frame; -#endif + return true; } @@ -938,7 +930,6 @@ } bool Plugin::AMD::Encoder::EncodeLoad(IN amf::AMFDataPtr& data, OUT struct encoder_packet* packet, OUT bool* received_packet) { -#ifndef PIPED_PROCESS AMFTRACECALL; if (data == nullptr) @@ -1045,18 +1036,12 @@ } *received_packet = true; -#else - (void)data; - (void)packet; - (void)received_packet; -#endif + return true; } int32_t Plugin::AMD::Encoder::AsyncSendMain(Encoder* obj) { -#ifndef PIPED_PROCESS os_set_thread_name("AMF Asynchronous Queue Sender"); -#endif return obj->AsyncSendLocalMain(); } @@ -1112,9 +1097,7 @@ } int32_t Plugin::AMD::Encoder::AsyncRetrieveMain(Encoder* obj) { -#ifndef PIPED_PROCESS os_set_thread_name("AMF Asynchronous Queue Retriever"); -#endif return obj->AsyncRetrieveLocalMain(); }
View file
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
@@ -40,7 +40,6 @@ public: virtual void __cdecl Write(const wchar_t* scope, const wchar_t* message) override { -#ifndef PIPED_PROCESS const wchar_t* realmsg = &(message[(33 + wcslen(scope) + 2)]); // Skip Time & Scope size_t msgLen = wcslen(realmsg) - (sizeof(wchar_t)); @@ -48,10 +47,6 @@ 12, &(message[11]), scope, msgLen, realmsg); -#else - (void)scope; - (void)message; -#endif } virtual void __cdecl Flush() override {} @@ -137,7 +132,7 @@ VerQueryValueA(pBlock, "\\VarFileInfo\\Translation", (LPVOID*)&lpTranslate, &cbTranslate); std::vector<char> buf(1024); - _snprintf(buf.data(), buf.size(), "%s%04x%04x%s", + snprintf(buf.data(), buf.size(), "%s%04x%04x%s", "\\StringFileInfo\\", lpTranslate[0].wLanguage, lpTranslate[0].wCodePage, @@ -166,8 +161,7 @@ /// Blacklist Drivers with older SDK. if (m_AMFVersion_Runtime < AMF_MAKE_FULL_VERSION(1,4,6,0)) { - QUICK_FORMAT_MESSAGE(msg, "AMF Runtime Version is too old, please update your drivers."); - throw std::exception(msg.data()); + PLOG_WARNING("The AMF Runtime is very old and unsupported, consider updating your drivers."); } /// Initialize AMF
View file
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
@@ -27,7 +27,7 @@ class SingletonDXGI { public: - #pragma region Singleton +#pragma region Singleton static std::shared_ptr<SingletonDXGI> GetInstance() { static std::shared_ptr<SingletonDXGI> __instance = std::make_shared<SingletonDXGI>(); static std::mutex __mutex; @@ -35,7 +35,7 @@ const std::lock_guard<std::mutex> lock(__mutex); return __instance; } - #pragma endregion Singleton +#pragma endregion Singleton SingletonDXGI() { hModule = LoadLibrary(TEXT("dxgi.dll")); @@ -80,7 +80,7 @@ class SingletonD3D11 { public: - #pragma region Singleton +#pragma region Singleton static std::shared_ptr<SingletonD3D11> GetInstance() { static std::shared_ptr<SingletonD3D11> __instance = std::make_shared<SingletonD3D11>(); static std::mutex __mutex; @@ -88,7 +88,7 @@ const std::lock_guard<std::mutex> lock(__mutex); return __instance; } - #pragma endregion Singleton +#pragma endregion Singleton SingletonD3D11() { hModule = LoadLibrary(TEXT("d3d11.dll")); @@ -150,7 +150,7 @@ continue; std::vector<char> buf(1024); - _snprintf(buf.data(), buf.size(), "%ls (VEN_%04x/DEV_%04x/SUB_%04x/REV_%04x)", + snprintf(buf.data(), buf.size(), "%ls (VEN_%04x/DEV_%04x/SUB_%04x/REV_%04x)", desc.Description, desc.VendorId, desc.DeviceId, @@ -230,37 +230,39 @@ D3D_FEATURE_LEVEL_11_1, D3D_FEATURE_LEVEL_11_0 }; - for (size_t c = 0; c < 3; c++) { - uint32_t flags = 0; - - switch (c) { - case 0: - flags |= D3D11_CREATE_DEVICE_VIDEO_SUPPORT; - case 1: - flags |= D3D11_CREATE_DEVICE_BGRA_SUPPORT; - case 2: + for (size_t featureLevel = 0; featureLevel < _countof(featureLevels); featureLevel++) { + for (size_t enabledFlags = 0; enabledFlags < 3; enabledFlags++) { + uint32_t flags = 0; + + switch (enabledFlags) { + case 0: + flags |= D3D11_CREATE_DEVICE_VIDEO_SUPPORT; + case 1: + flags |= D3D11_CREATE_DEVICE_BGRA_SUPPORT; + case 2: + break; + } + + hr = d3dInst->D3D11CreateDevice( + dxgiAdapter, + dxgiAdapter == NULL ? D3D_DRIVER_TYPE_HARDWARE : D3D_DRIVER_TYPE_UNKNOWN, + NULL, + flags, + featureLevels + featureLevel, UINT(_countof(featureLevels) - featureLevel), + D3D11_SDK_VERSION, + &m_Device, + NULL, + &m_DeviceContext); + if (SUCCEEDED(hr)) { break; - } - - hr = d3dInst->D3D11CreateDevice( - dxgiAdapter, - dxgiAdapter == NULL ? D3D_DRIVER_TYPE_HARDWARE : D3D_DRIVER_TYPE_UNKNOWN, - NULL, - flags, - featureLevels + 1, _countof(featureLevels) - 1, - D3D11_SDK_VERSION, - &m_Device, - NULL, - &m_DeviceContext); - if (SUCCEEDED(hr)) { - break; - } else { - PLOG_WARNING("<" __FUNCTION_NAME__ "> Unable to create D3D11 device, error code %X (mode %d).", hr, c); + } else { + PLOG_DEBUG("<" __FUNCTION_NAME__ "> Unable to create D3D11 device, error code %X (mode %lld, level %lld).", hr, enabledFlags, featureLevel); + } } } if (FAILED(hr)) { std::vector<char> buf(1024); - _snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to create D3D11 device, error code %X.", hr); + snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to create D3D11 device, error code %X.", hr); throw std::exception(buf.data()); } }
View file
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
@@ -55,7 +55,7 @@ enumeratedLUIDs.push_back(adapterLUID); std::vector<char> buf(1024); - _snprintf(buf.data(), buf.size(), "%s [%s] (VEN_%04x/DEV_%04x/SUB_%04x/REV_%04x)", + snprintf(buf.data(), buf.size(), "%s [%s] (VEN_%04x/DEV_%04x/SUB_%04x/REV_%04x)", adapterIdentifier.Description, adapterIdentifier.DeviceName, @@ -140,7 +140,7 @@ HRESULT hr = api->m_Direct3D9Ex->GetDeviceCaps((UINT)adapterNum, D3DDEVTYPE_HAL, &ddCaps); if (FAILED(hr)) { std::vector<char> buf(1024); - _snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to query capabilities for D3D9 adapter, error code %X.", hr); + snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to query capabilities for D3D9 adapter, error code %X.", hr); throw std::exception(buf.data()); } @@ -162,7 +162,7 @@ ); if (FAILED(hr)) { std::vector<char> buf(1024); - _snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to create D3D9 device, error code %X.", hr); + snprintf(buf.data(), buf.size(), "<" __FUNCTION_NAME__ "> Unable to create D3D9 device, error code %X.", hr); throw std::exception(buf.data()); } }
View file
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
@@ -17,48 +17,48 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ -////////////////////////////////////////////////////////////////////////// -// New UI Design -////////////////////////////////////////////////////////////////////////// -// All: Preset -// ----------- Static Section -// Mas: Usage -// All: Quality Preset -// Adv: Profile -// Adv: Profile Level -// Mas: Aspect Ratio -// Exp: Coding Type -// Exp: Maximum Reference Frames -// ----------- Rate Control Section -// All: Rate Control Method -// Adv: Pre-Pass Encoding (if supported) -// All, CBR&VBR: Target Bitrate -// All, VBR: Peak Bitrate -// All, CQP: QP I/P/B -// Adv, CBR&VBR: Min/Max QP -// CBR: Filler Data -// Adv: Frame Skipping -// Exp: VBAQ -// Exp: Enforce HRD -// ----------- VBV Buffer -// Adv: VBV Buffer Size -// Exp: VBV Buffer Initial Fullness -// ----------- Picture Control -// All: Keyframe Interval (Float) -// Mas: IDR Period (Overrides Keyframe Interval if non-zero) -// Adv: B-Frames (if supported) -// Adv: B-Frame Delta QP (if supported, not CQP) -// Adv: B-Frame Reference (if supported and B-Frames enabled) -// Adv: B-Frame Reference Delta QP (if supported, not CQP) -// Exp: Deblocking Filter -// Exp: Motion Estimation (Dropdown) -// ----------- Intra-Refresh -// ToDo: Master Mode only? -// ----------- System -// Adv: API -// Adv: Adapter -// Exp: OpenCL -// All: View + ////////////////////////////////////////////////////////////////////////// + // New UI Design + ////////////////////////////////////////////////////////////////////////// + // All: Preset + // ----------- Static Section + // Mas: Usage + // All: Quality Preset + // Adv: Profile + // Adv: Profile Level + // Mas: Aspect Ratio + // Exp: Coding Type + // Exp: Maximum Reference Frames + // ----------- Rate Control Section + // All: Rate Control Method + // Adv: Pre-Pass Encoding (if supported) + // All, CBR&VBR: Target Bitrate + // All, VBR: Peak Bitrate + // All, CQP: QP I/P/B + // Adv, CBR&VBR: Min/Max QP + // CBR: Filler Data + // Adv: Frame Skipping + // Exp: VBAQ + // Exp: Enforce HRD + // ----------- VBV Buffer + // Adv: VBV Buffer Size + // Exp: VBV Buffer Initial Fullness + // ----------- Picture Control + // All: Keyframe Interval (Float) + // Mas: IDR Period (Overrides Keyframe Interval if non-zero) + // Adv: B-Frames (if supported) + // Adv: B-Frame Delta QP (if supported, not CQP) + // Adv: B-Frame Reference (if supported and B-Frames enabled) + // Adv: B-Frame Reference Delta QP (if supported, not CQP) + // Exp: Deblocking Filter + // Exp: Motion Estimation (Dropdown) + // ----------- Intra-Refresh + // ToDo: Master Mode only? + // ----------- System + // Adv: API + // Adv: Adapter + // Exp: OpenCL + // All: View #include "enc-h264.h" #include "amf-encoder-h264.h" @@ -136,13 +136,12 @@ } void Plugin::Interface::H264Interface::get_defaults(obs_data_t *data) { - #pragma region OBS - Enforce Streaming Service Restrictions - obs_data_set_default_int(data, "bitrate", 0); +#pragma region OBS - Enforce Streaming Service Restrictions obs_data_set_default_int(data, "keyint_sec", 0); obs_data_set_default_string(data, "rate_control", ""); obs_data_set_default_string(data, "profile", ""); obs_data_set_default_string(data, "preset", ""); - #pragma endregion OBS - Enforce Streaming Service Restrictions +#pragma endregion OBS - Enforce Streaming Service Restrictions // Preset obs_data_set_default_int(data, P_PRESET, static_cast<int64_t>(Presets::None)); @@ -243,7 +242,7 @@ obs_properties* props = obs_properties_create(); obs_property_t* p; - #pragma region Preset +#pragma region Preset p = obs_properties_add_list(props, P_PRESET, P_TRANSLATE(P_PRESET), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_modified_callback(p, properties_modified); obs_property_list_add_int(p, "", -1); @@ -254,18 +253,18 @@ obs_property_list_add_int(p, P_TRANSLATE(P_PRESET_LOSSLESS), static_cast<int32_t>(Presets::Lossless)); obs_property_list_add_int(p, P_TRANSLATE(P_PRESET_TWITCH), static_cast<int32_t>(Presets::Twitch)); obs_property_list_add_int(p, P_TRANSLATE(P_PRESET_YOUTUBE), static_cast<int32_t>(Presets::YouTube)); - #pragma endregion Preset +#pragma endregion Preset // Static Properties - #pragma region Quality Preset +#pragma region Quality Preset p = obs_properties_add_list(props, P_QUALITYPRESET, P_TRANSLATE(P_QUALITYPRESET), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QUALITYPRESET))); obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_SPEED), static_cast<int32_t>(QualityPreset::Speed)); obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_BALANCED), static_cast<int32_t>(QualityPreset::Balanced)); obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_QUALITY), static_cast<int32_t>(QualityPreset::Quality)); - #pragma endregion Quality Preset +#pragma endregion Quality Preset - #pragma region Profile, Levels +#pragma region Profile, Levels p = obs_properties_add_list(props, P_PROFILE, P_TRANSLATE(P_PROFILE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_PROFILE))); obs_property_list_add_int(p, "Constrained Baseline", static_cast<int32_t>(Profile::ConstrainedBaseline)); @@ -293,24 +292,24 @@ obs_property_list_add_int(p, "5.0", static_cast<int32_t>(ProfileLevel::L50)); obs_property_list_add_int(p, "5.1", static_cast<int32_t>(ProfileLevel::L51)); obs_property_list_add_int(p, "5.2", static_cast<int32_t>(ProfileLevel::L52)); - #pragma endregion Profile, Levels +#pragma endregion Profile, Levels - #pragma region Coding Type +#pragma region Coding Type p = obs_properties_add_list(props, P_CODINGTYPE, P_TRANSLATE(P_CODINGTYPE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_CODINGTYPE))); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_AUTOMATIC), static_cast<int32_t>(CodingType::Automatic)); obs_property_list_add_int(p, "CABAC", static_cast<int32_t>(CodingType::CABAC)); obs_property_list_add_int(p, "CALVC", static_cast<int32_t>(CodingType::CALVC)); - #pragma endregion Coding Type +#pragma endregion Coding Type - #pragma region Maximum Reference Frames +#pragma region Maximum Reference Frames p = obs_properties_add_int_slider(props, P_MAXIMUMREFERENCEFRAMES, P_TRANSLATE(P_MAXIMUMREFERENCEFRAMES), 1, 16, 1); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_MAXIMUMREFERENCEFRAMES))); - #pragma endregion Maximum Reference Frames +#pragma endregion Maximum Reference Frames // Rate Control - #pragma region Rate Control Method +#pragma region Rate Control Method p = obs_properties_add_list(props, P_RATECONTROLMETHOD, P_TRANSLATE(P_RATECONTROLMETHOD), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_RATECONTROLMETHOD))); obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_CQP), static_cast<int32_t>(RateControlMethod::ConstantQP)); @@ -318,16 +317,16 @@ obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_VBR), static_cast<int32_t>(RateControlMethod::PeakConstrainedVariableBitrate)); obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_VBRLAT), static_cast<int32_t>(RateControlMethod::LatencyConstrainedVariableBitrate)); obs_property_set_modified_callback(p, properties_modified); - #pragma endregion Rate Control Method +#pragma endregion Rate Control Method - #pragma region Pre-Pass +#pragma region Pre-Pass p = obs_properties_add_list(props, P_PREPASSMODE, P_TRANSLATE(P_PREPASSMODE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_PREPASSMODE))); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), static_cast<int32_t>(PrePassMode::Disabled)); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_ENABLED), static_cast<int32_t>(PrePassMode::Enabled)); - #pragma endregion Pre-Pass +#pragma endregion Pre-Pass - #pragma region Parameters +#pragma region Parameters /// Bitrate Constraints p = obs_properties_add_int(props, "bitrate", P_TRANSLATE(P_BITRATE_TARGET), 0, 1, 1); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_BITRATE_TARGET))); @@ -347,16 +346,16 @@ obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QP_PFRAME))); p = obs_properties_add_int_slider(props, P_QP_BFRAME, P_TRANSLATE(P_QP_BFRAME), 0, 51, 1); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QP_BFRAME))); - #pragma endregion Parameters +#pragma endregion Parameters - #pragma region Filler Data +#pragma region Filler Data
View file
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
@@ -17,7 +17,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ - ////////////////////////////////////////////////////////////////////////// // New UI Design ////////////////////////////////////////////////////////////////////////// @@ -111,13 +110,13 @@ } void Plugin::Interface::H265Interface::get_defaults(obs_data_t *data) { - #pragma region OBS - Enforce Streaming Service Restrictions +#pragma region OBS - Enforce Streaming Service Restrictions obs_data_set_default_int(data, "bitrate", 0); obs_data_set_default_int(data, "keyint_sec", 0); obs_data_set_default_string(data, "rate_control", ""); obs_data_set_default_string(data, "profile", ""); obs_data_set_default_string(data, "preset", ""); - #pragma endregion OBS - Enforce Streaming Service Restrictions +#pragma endregion OBS - Enforce Streaming Service Restrictions // Static //obs_data_set_default_int(data, P_USAGE, static_cast<int64_t>(Usage::Transcoding)); @@ -220,15 +219,15 @@ obs_property_t* p; // Static Properties - #pragma region Quality Preset +#pragma region Quality Preset p = obs_properties_add_list(props, P_QUALITYPRESET, P_TRANSLATE(P_QUALITYPRESET), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QUALITYPRESET))); obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_SPEED), static_cast<int32_t>(QualityPreset::Speed)); obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_BALANCED), static_cast<int32_t>(QualityPreset::Balanced)); obs_property_list_add_int(p, P_TRANSLATE(P_QUALITYPRESET_QUALITY), static_cast<int32_t>(QualityPreset::Quality)); - #pragma endregion Quality Preset +#pragma endregion Quality Preset - #pragma region Profile, Levels +#pragma region Profile, Levels p = obs_properties_add_list(props, P_PROFILE, P_TRANSLATE(P_PROFILE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_PROFILE))); obs_property_list_add_int(p, "Main", static_cast<int32_t>(Profile::Main)); @@ -249,30 +248,30 @@ obs_property_list_add_int(p, "6.0", static_cast<int32_t>(ProfileLevel::L60)); obs_property_list_add_int(p, "6.1", static_cast<int32_t>(ProfileLevel::L61)); obs_property_list_add_int(p, "6.2", static_cast<int32_t>(ProfileLevel::L62)); - #pragma endregion Profile, Levels +#pragma endregion Profile, Levels - #pragma region Tier +#pragma region Tier p = obs_properties_add_list(props, P_TIER, P_TRANSLATE(P_TIER), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_TIER))); obs_property_list_add_int(p, "Main", static_cast<int32_t>(H265::Tier::Main)); obs_property_list_add_int(p, "High", static_cast<int32_t>(H265::Tier::High)); - #pragma endregion Tier +#pragma endregion Tier - #pragma region Coding Type +#pragma region Coding Type p = obs_properties_add_list(props, P_CODINGTYPE, P_TRANSLATE(P_CODINGTYPE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_CODINGTYPE))); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_AUTOMATIC), static_cast<int32_t>(CodingType::Automatic)); obs_property_list_add_int(p, "CABAC", static_cast<int32_t>(CodingType::CABAC)); - #pragma endregion Coding Type +#pragma endregion Coding Type - #pragma region Maximum Reference Frames +#pragma region Maximum Reference Frames p = obs_properties_add_int_slider(props, P_MAXIMUMREFERENCEFRAMES, P_TRANSLATE(P_MAXIMUMREFERENCEFRAMES), 1, 16, 1); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_MAXIMUMREFERENCEFRAMES))); - #pragma endregion Maximum Reference Frames +#pragma endregion Maximum Reference Frames // Rate Control - #pragma region Rate Control Method +#pragma region Rate Control Method p = obs_properties_add_list(props, P_RATECONTROLMETHOD, P_TRANSLATE(P_RATECONTROLMETHOD), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_RATECONTROLMETHOD))); obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_CQP), static_cast<int32_t>(RateControlMethod::ConstantQP)); @@ -280,16 +279,16 @@ obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_VBR), static_cast<int32_t>(RateControlMethod::PeakConstrainedVariableBitrate)); obs_property_list_add_int(p, P_TRANSLATE(P_RATECONTROLMETHOD_VBRLAT), static_cast<int32_t>(RateControlMethod::LatencyConstrainedVariableBitrate)); obs_property_set_modified_callback(p, properties_modified); - #pragma endregion Rate Control Method +#pragma endregion Rate Control Method - #pragma region Pre-Pass +#pragma region Pre-Pass p = obs_properties_add_list(props, P_PREPASSMODE, P_TRANSLATE(P_PREPASSMODE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_PREPASSMODE))); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), static_cast<int32_t>(PrePassMode::Disabled)); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_ENABLED), static_cast<int32_t>(PrePassMode::Enabled)); - #pragma endregion Pre-Pass +#pragma endregion Pre-Pass - #pragma region Parameters +#pragma region Parameters /// Bitrate Constraints p = obs_properties_add_int(props, "bitrate", P_TRANSLATE(P_BITRATE_TARGET), 0, 1, 1); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_BITRATE_TARGET))); @@ -311,16 +310,16 @@ obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QP_PFRAME_MINIMUM))); p = obs_properties_add_int_slider(props, P_QP_PFRAME_MAXIMUM, P_TRANSLATE(P_QP_PFRAME_MAXIMUM), 0, 51, 1); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_QP_PFRAME_MAXIMUM))); - #pragma endregion Parameters +#pragma endregion Parameters - #pragma region Filler Data +#pragma region Filler Data p = obs_properties_add_list(props, P_FILLERDATA, P_TRANSLATE(P_FILLERDATA), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_FILLERDATA))); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), 0); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_ENABLED), 1); - #pragma endregion Filler Data +#pragma endregion Filler Data - #pragma region Frame Skipping +#pragma region Frame Skipping p = obs_properties_add_list(props, P_FRAMESKIPPING, P_TRANSLATE(P_FRAMESKIPPING), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_FRAMESKIPPING))); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), 0); @@ -331,49 +330,49 @@ obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_FRAMESKIPPING_BEHAVIOUR))); obs_property_list_add_int(p, P_TRANSLATE(P_FRAMESKIPPING_SKIPNTH), 0); obs_property_list_add_int(p, P_TRANSLATE(P_FRAMESKIPPING_KEEPNTH), 1); - #pragma endregion Frame Skipping +#pragma endregion Frame Skipping - #pragma region VBAQ +#pragma region VBAQ p = obs_properties_add_list(props, P_VBAQ, P_TRANSLATE(P_VBAQ), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_VBAQ))); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), 0); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_ENABLED), 1); - #pragma endregion VBAQ +#pragma endregion VBAQ - #pragma region Enforce Hypothetical Reference Decoder Restrictions +#pragma region Enforce Hypothetical Reference Decoder Restrictions p = obs_properties_add_list(props, P_ENFORCEHRD, P_TRANSLATE(P_ENFORCEHRD), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_ENFORCEHRD))); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_DISABLED), 0); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_SWITCH_ENABLED), 1); - #pragma endregion Enforce Hyptothetical Reference Decoder Restrictions +#pragma endregion Enforce Hyptothetical Reference Decoder Restrictions // VBV Buffer - #pragma region VBV Buffer Mode +#pragma region VBV Buffer Mode p = obs_properties_add_list(props, P_VBVBUFFER, P_TRANSLATE(P_VBVBUFFER), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_VBVBUFFER))); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_AUTOMATIC), 0); obs_property_list_add_int(p, P_TRANSLATE(P_UTIL_MANUAL), 1); obs_property_set_modified_callback(p, properties_modified); - #pragma endregion VBV Buffer Mode +#pragma endregion VBV Buffer Mode - #pragma region VBV Buffer Strictness +#pragma region VBV Buffer Strictness p = obs_properties_add_float_slider(props, P_VBVBUFFER_STRICTNESS, P_TRANSLATE(P_VBVBUFFER_STRICTNESS), 0.0, 100.0, 0.1); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_VBVBUFFER_STRICTNESS))); - #pragma endregion VBV Buffer Strictness +#pragma endregion VBV Buffer Strictness - #pragma region VBV Buffer Size +#pragma region VBV Buffer Size p = obs_properties_add_int_slider(props, P_VBVBUFFER_SIZE, P_TRANSLATE(P_VBVBUFFER_SIZE), 1, 1000000, 1); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_VBVBUFFER_SIZE))); - #pragma endregion VBV Buffer Size +#pragma endregion VBV Buffer Size - #pragma region VBV Buffer Initial Fullness +#pragma region VBV Buffer Initial Fullness p = obs_properties_add_float_slider(props, P_VBVBUFFER_INITIALFULLNESS, P_TRANSLATE(P_VBVBUFFER_INITIALFULLNESS), 0.0, 100.0, 100.0 / 64.0); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_VBVBUFFER_INITIALFULLNESS))); - #pragma endregion VBV Buffer Initial Fullness +#pragma endregion VBV Buffer Initial Fullness // Picture Control - #pragma region Interval and Periods - /// Keyframe, IDR +#pragma region Interval and Periods +/// Keyframe, IDR p = obs_properties_add_float(props, P_INTERVAL_KEYFRAME, P_TRANSLATE(P_INTERVAL_KEYFRAME), 0, 100, 0.001); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_INTERVAL_KEYFRAME))); p = obs_properties_add_int(props, P_PERIOD_IDR_H265, P_TRANSLATE(P_PERIOD_IDR_H265), 0, 1000, 1); @@ -388,17 +387,17 @@ obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_INTERVAL_PFRAME))); p = obs_properties_add_int(props, P_PERIOD_PFRAME, P_TRANSLATE(P_PERIOD_PFRAME), 0, 1000, 1); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_PERIOD_PFRAME))); - #pragma endregion Interval and Periods +#pragma endregion Interval and Periods - #pragma region GOP Type +#pragma region GOP Type p = obs_properties_add_list(props, P_GOP_TYPE, P_TRANSLATE(P_GOP_TYPE), OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_INT); obs_property_set_long_description(p, P_TRANSLATE(P_DESC(P_GOP_TYPE)));
View file
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
@@ -22,13 +22,12 @@ #include "api-base.h" #include "amf.h" #include "amf-capabilities.h" -#include <sstream> - #include "enc-h264.h" #include "enc-h265.h" - -#include "libobs/util/util.hpp" - +#include <sstream> +#include <libobs/util/pipe.h> +#include <libobs/util/platform.h> +#include <libobs/util/util.hpp> #ifdef _WIN32 #include <windows.h> #endif @@ -36,13 +35,53 @@ using namespace Plugin; using namespace Plugin::AMD; -////////////////////////////////////////////////////////////////////////// -// Code -////////////////////////////////////////////////////////////////////////// +#if defined(WIN32) BOOL WINAPI DllMain(HINSTANCE, DWORD, LPVOID) { return TRUE; } +static inline bool create_process(const char *cmd_line, HANDLE stdin_handle, + HANDLE stdout_handle, HANDLE *process) { + PROCESS_INFORMATION pi = { 0 }; + wchar_t *cmd_line_w = NULL; + STARTUPINFOW si = { 0 }; + bool success = false; + + si.cb = sizeof(si); + si.dwFlags = STARTF_USESTDHANDLES; + si.hStdInput = stdin_handle; + si.hStdOutput = stdout_handle; + + os_utf8_to_wcs_ptr(cmd_line, 0, &cmd_line_w); + if (cmd_line_w) { + success = !!CreateProcessW(NULL, cmd_line_w, NULL, NULL, true, + CREATE_NO_WINDOW, NULL, NULL, &si, &pi); + + if (success) { + *process = pi.hProcess; + CloseHandle(pi.hThread); + } + + bfree(cmd_line_w); + } + + return success; +} + +static bool create_pipe(HANDLE *input, HANDLE *output) { + SECURITY_ATTRIBUTES sa = { 0 }; + + sa.nLength = sizeof(sa); + sa.bInheritHandle = true; + + if (!CreatePipe(input, output, &sa, 0)) { + return false; + } + + return true; +} +#endif + OBS_DECLARE_MODULE(); OBS_MODULE_AUTHOR("Michael Fabian Dirks"); OBS_MODULE_USE_DEFAULT_LOCALE("enc-amf", "en-US"); @@ -165,71 +204,81 @@ } #endif -#ifndef NO_PIPED_DETECTION -static inline bool create_process(const char *cmd_line, HANDLE *process) -{ - PROCESS_INFORMATION pi = {0}; - STARTUPINFOW si = {0}; - wchar_t *cmd_line_w = NULL; - bool success = false; - - os_utf8_to_wcs_ptr(cmd_line, 0, &cmd_line_w); - if (cmd_line_w) { - si.cb = sizeof(si); - success = !!CreateProcessW(nullptr, cmd_line_w, nullptr, - nullptr, true, CREATE_NO_WINDOW, nullptr, - nullptr, &si, &pi); - - if (success) { - *process = pi.hProcess; - CloseHandle(pi.hThread); - } - - bfree(cmd_line_w); - } - - return success; -} -#endif - -/** -* Required: Called when the module is loaded. Use this function to load all -* the sources/encoders/outputs/services for your module, or anything else that -* may need loading. -* -* @return Return true to continue loading the module, otherwise -* false to indicate failure and unload the module -*/ MODULE_EXPORT bool obs_module_load(void) { PLOG_DEBUG("<" __FUNCTION_NAME__ "> Loading..."); -#ifndef NO_PIPED_DETECTION - HANDLE process = nullptr; - DWORD detect_code = 0; +#ifdef _WIN32 + // Out-of-process AMF Test + { + unsigned long returnCode = 0xFFFFFFFF; + HANDLE hProcess, hIn, hOut; + BPtr<char> path = obs_module_file("enc-amf-test" BIT_STR ".exe"); -#ifdef _WIN64 -#define BIT_STR "64" -#else -#define BIT_STR "32" -#endif + if (!create_pipe(&hIn, &hOut)) { + PLOG_ERROR("Failed to create pipes for AMF test."); + return false; + } + if (!SetHandleInformation(hIn, HANDLE_FLAG_INHERIT, false) + || !SetHandleInformation(hOut, HANDLE_FLAG_INHERIT, false)) { + CloseHandle(hIn); + CloseHandle(hOut); + PLOG_ERROR("Failed to modify pipes for AMF test."); + return false; + }; + if (!create_process(path, hIn, hOut, &hProcess)) { + CloseHandle(hIn); + CloseHandle(hOut); + PLOG_ERROR("Failed to start AMF test subprocess."); + return false; + } - // Call amf-detect process to check to see if AMF is available before - // initializing AMF in the process. This isolates the check and - // prevents potential startup crashes from affecting OBS startup. - BPtr<char> path = obs_module_file("detect-amf" BIT_STR ".exe"); - if (create_process(path, &process)) { - if (WaitForSingleObject(process, 2000) == WAIT_OBJECT_0) - GetExitCodeProcess(process, &detect_code); - CloseHandle(process); - } + std::vector<char> buf(1024); + DWORD bufread = 0; + while (ReadFile(hOut, buf.data(), 1024, &bufread, NULL)) { + PLOG_ERROR("%s", buf.data()); + } - if (detect_code != 3) { - if (detect_code == 2) { - PLOG_INFO("<" __FUNCTION_NAME__ "> AMF not supported (no AMD graphics)"); - } else { - PLOG_INFO("<" __FUNCTION_NAME__ "> AMF detection failure prevented! <3"); + if (WaitForSingleObject(hProcess, 2000) == WAIT_OBJECT_0) + GetExitCodeProcess(hProcess, &returnCode); + + CloseHandle(hProcess); + CloseHandle(hIn); + CloseHandle(hOut); + + switch (returnCode) { + case STATUS_ACCESS_VIOLATION: + case STATUS_ARRAY_BOUNDS_EXCEEDED: + case STATUS_BREAKPOINT: + case STATUS_DATATYPE_MISALIGNMENT: + case STATUS_FLOAT_DENORMAL_OPERAND: + case STATUS_FLOAT_DIVIDE_BY_ZERO: + case STATUS_FLOAT_INEXACT_RESULT: + case STATUS_FLOAT_INVALID_OPERATION: + case STATUS_FLOAT_OVERFLOW: + case STATUS_FLOAT_STACK_CHECK: + case STATUS_FLOAT_UNDERFLOW: + case STATUS_GUARD_PAGE_VIOLATION: + case STATUS_ILLEGAL_INSTRUCTION: + case STATUS_IN_PAGE_ERROR: + case STATUS_INTEGER_DIVIDE_BY_ZERO: + case STATUS_INTEGER_OVERFLOW: + case STATUS_INVALID_DISPOSITION: + case STATUS_INVALID_HANDLE: + case STATUS_NONCONTINUABLE_EXCEPTION: + case STATUS_PRIVILEGED_INSTRUCTION: + case STATUS_SINGLE_STEP: + case STATUS_STACK_OVERFLOW:
View file
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
@@ -44,7 +44,6 @@ static std::map<std::string, std::string> translatedMap; const char* Utility::obs_module_text_multi(const char *key, uint8_t depth) { -#ifndef PIPED_PROCESS // Check if it already was translated. if (!translatedMap.count(std::string(key))) { // If not, translate it now. const char* out = obs_module_text(key); @@ -90,11 +89,6 @@ auto value = translatedMap.find(std::string(key)); return value->second.c_str(); -#else - (void)key; - (void)depth; - return nullptr; -#endif } @@ -338,7 +332,7 @@ throw std::runtime_error("Invalid Parameter"); } Plugin::AMD::Profile Utility::ProfileFromAMFH264(AMF_VIDEO_ENCODER_PROFILE_ENUM v) { - #pragma warning( disable: 4063 ) // Developer Note: I know better, Compiler. +#pragma warning( disable: 4063 ) // Developer Note: I know better, Compiler. switch (v) { case (AMF_VIDEO_ENCODER_PROFILE_ENUM)256: return Profile::ConstrainedBaseline;
View file
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test
Added
+(directory)
View file
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test/CMakeLists.txt
Added
@@ -0,0 +1,109 @@ +# A Plugin that integrates the AMD AMF encoder into OBS Studio +# Copyright (C) 2016 - 2017 Michael Fabian Dirks +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + +cmake_minimum_required(VERSION 3.1.0) +PROJECT(enc-amf-test) + +# All Warnings, Extra Warnings, Pedantic +if(MSVC) + # Hide Microsofts insecurities, as they are usually not cross-platform compatible changes. + add_definitions(-D_CRT_SECURE_NO_WARNINGS) + + # Force to always compile with W4 + if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") + string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + else() + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") + endif() + + # Use Static Linking instead of Dynamic Linking + string(REPLACE "/MT" "/MD" + "CMAKE_C_FLAGS" + "${CMAKE_C_FLAGS}") + string(REPLACE "/MT" "/MD" + "CMAKE_CXX_FLAGS" + "${CMAKE_CXX_FLAGS}") + string(TOUPPER "${CMAKE_CONFIGURATION_TYPES}" UPPER_CONFIG_TYPES) + foreach(CONFIG_TYPE ${UPPER_CONFIG_TYPES}) + string(REPLACE "/MT" "/MD" + "CMAKE_C_FLAGS_${CONFIG_TYPE}" + "${CMAKE_C_FLAGS_${CONFIG_TYPE}}") + + string(REPLACE "/MT" "/MD" + "CMAKE_CXX_FLAGS_${CONFIG_TYPE}" + "${CMAKE_CXX_FLAGS_${CONFIG_TYPE}}") + endforeach() + + # Enable Options + # /Gy (Function-Level Linking) + # /OPT:REF + # /OPT:NOICF + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /Gy") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Gy") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:REF /OPT:NOICF") +elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX) + # Update if necessary + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic") +endif() + +# Detect Architecture (Bitness) +math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}") + +# Project +add_executable(enc-amf-test + "${PROJECT_SOURCE_DIR}/main.cpp" + "${PROJECT_SOURCE_DIR}/libobs/obs-module.h" + "${PROJECT_SOURCE_DIR}/libobs/obs-module.c" + "${enc-amf_SOURCE_DIR}/Source/amf.cpp" + "${enc-amf_SOURCE_DIR}/Source/amf-capabilities.cpp" + "${enc-amf_SOURCE_DIR}/Source/amf-encoder.cpp" + "${enc-amf_SOURCE_DIR}/Source/amf-encoder-h264.cpp" + "${enc-amf_SOURCE_DIR}/Source/amf-encoder-h265.cpp" + "${enc-amf_SOURCE_DIR}/Source/api-base.cpp" + "${enc-amf_SOURCE_DIR}/Source/api-d3d9.cpp" + "${enc-amf_SOURCE_DIR}/Source/api-d3d11.cpp" + "${enc-amf_SOURCE_DIR}/Source/utility.cpp" + "${enc-amf_SOURCE_DIR}/Include/amf.h" + "${enc-amf_SOURCE_DIR}/Include/amf-capabilities.h" + "${enc-amf_SOURCE_DIR}/Include/amf-encoder.h" + "${enc-amf_SOURCE_DIR}/Include/amf-encoder-h264.h" + "${enc-amf_SOURCE_DIR}/Include/amf-encoder-h265.h" + "${enc-amf_SOURCE_DIR}/Include/api-base.h" + "${enc-amf_SOURCE_DIR}/Include/api-d3d9.h" + "${enc-amf_SOURCE_DIR}/Include/api-d3d11.h" + "${enc-amf_SOURCE_DIR}/Include/utility.h" +) +include_directories(enc-amf-test BEFORE ${PROJECT_SOURCE_DIR}) +target_link_libraries(enc-amf-test ${enc-amf_LIBRARIES}) +set_target_properties(enc-amf-test + PROPERTIES + OUTPUT_NAME "enc-amf-test${BITS}") + +if(TARGET libobs) + install_obs_datatarget(enc-amf-test "obs-plugins/enc-amf") +else() + add_custom_command(TARGET enc-amf-test POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + "$<TARGET_FILE:enc-amf-test>" + "${enc-amf_SOURCE_DIR}/#Build/data/obs-plugins/enc-amf/$<TARGET_FILE_NAME:enc-amf-test>" + ) + add_custom_command(TARGET enc-amf-test POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + "$<TARGET_PDB_FILE:enc-amf-test>" + "${enc-amf_SOURCE_DIR}/#Build/data/obs-plugins/enc-amf/$<TARGET_PDB_FILE_NAME:enc-amf-test>" + ) +endif()
View file
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test/libobs
Added
+(directory)
View file
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test/libobs/obs-module.c
Added
@@ -0,0 +1,33 @@ +/* + * A Plugin that integrates the AMD AMF encoder into OBS Studio + * Copyright (C) 2016 - 2017 Michael Fabian Dirks + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +const char *obs_module_text(const char *name) { + return name; +} + +void blog(int level, char* formatting, ...) { + level; + formatting; + return; +} + +void os_set_thread_name(const char *name) { + name; + return; +}
View file
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test/libobs/obs-module.h
Added
@@ -0,0 +1,22 @@ +/* + * A Plugin that integrates the AMD AMF encoder into OBS Studio + * Copyright (C) 2016 - 2017 Michael Fabian Dirks + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +const char *obs_module_text(const char *); +void blog(int, char*, ...); +void os_set_thread_name(const char *name);
View file
obs-studio-21.1.2.tar.xz/plugins/enc-amf/amf-test/main.cpp
Added
@@ -0,0 +1,55 @@ +/* + * A Plugin that integrates the AMD AMF encoder into OBS Studio + * Copyright (C) 2016 - 2017 Michael Fabian Dirks + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "amf.h" +#include "amf-capabilities.h" +#include "api-base.h" +#include <iostream> + +#ifdef _WIN32 +#include "windows.h" +#endif + +using namespace Plugin; +using namespace Plugin::AMD; + +int main(int argc, char* argv[]) { + argc; + argv; + +#ifdef _WIN32 + SetErrorMode(SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS); +#endif + + try { + AMF::Initialize(); + API::InitializeAPIs(); + CapabilityManager::Initialize(); + CapabilityManager::Finalize(); + API::FinalizeAPIs(); + AMF::Finalize(); + return 0; + } catch (std::exception ex) { + std::cout << ex.what() << std::endl; + return 1; + } catch (...) { + std::cout << "Unknown Error" << std::endl; + return 2; + } +}
View file
obs-studio-21.1.2.tar.xz/plugins/image-source/data/locale/fil-PH.ini
Added
@@ -0,0 +1,36 @@ +ImageInput="Larawan" +File="Dokumentong Larawan" +UnloadWhenNotShowing="Mag-ibis ng imahe kapag hindi nagpapakita" + +SlideShow="Ipakita ang Slide ng Larawan" +SlideShow.TransitionSpeed="Bilis ng Paglipat (milliseconds)" +SlideShow.SlideTime="Oras sa Pagitan ng Mga Slide (millisecond)" +SlideShow.Files="Dokumentong Larawan" +SlideShow.CustomSize="Bounding Size / Aspect Ratio" +SlideShow.CustomSize.Auto="Awtomatikong" +SlideShow.Randomize="Simulan ang Pag-playback" +SlideShow.Loop="Silo" +SlideShow.Transition="Paglipat" +SlideShow.Transition.Cut="Kunin" +SlideShow.Transition.Fade="Fade" +SlideShow.Transition.Swipe="Mag-swipe" +SlideShow.Transition.Slide="Slide" +SlideShow.PlaybackBehavior="Pag-uugali ng Pagtingin" +SlideShow.PlaybackBehavior.StopRestart="Itigil kapag hindi nakikita, i-restart kapag nakikita" +SlideShow.PlaybackBehavior.PauseUnpause="I-pause kapag hindi nakikita, i-unpause kapag nakikita" +SlideShow.PlaybackBehavior.AlwaysPlay="Laging i-play kahit na hindi nakikita" +SlideShow.SlideMode="Slide Mode" +SlideShow.SlideMode.Auto="Awtomatikong" +SlideShow.SlideMode.Manual="Mano-manong (Gamitin ang mga hotkey upang kontrolin ang slideshow)" +SlideShow.PlayPause="I-play / I-pause" +SlideShow.Restart="I-restart" +SlideShow.Stop="Itigil" +SlideShow.NextSlide="Susunod na Slide" +SlideShow.PreviousSlide="Nakaraang Slide" +SlideShow.HideWhenDone="Itago kapag tapos na ang slideshow" + +ColorSource="Pinagmulan ng Kulay" +ColorSource.Color="Kulay" +ColorSource.Width="Lapad" +ColorSource.Height="Taas" +
View file
obs-studio-21.1.2.tar.xz/plugins/image-source/data/locale/ka-GE.ini
Added
@@ -0,0 +1,36 @@ +ImageInput="სურათი" +File="სურათის ფაილი" +UnloadWhenNotShowing="სურათის ამოღება, თუ არ გამოჩნდება" + +SlideShow="სლაიდშოუ" +SlideShow.TransitionSpeed="გადასვლის სიჩქარე (მილიწამებში)" +SlideShow.SlideTime="დაყოვნება სლაიდებს შორის (მილიწამებში)" +SlideShow.Files="სურათების ფაილები" +SlideShow.CustomSize="ჩარჩოს ზომა/გვერდების თანაფარდობა" +SlideShow.CustomSize.Auto="ავტომატური" +SlideShow.Randomize="შემთხვევითი შერჩევა" +SlideShow.Loop="გამეორება" +SlideShow.Transition="გადასვლები" +SlideShow.Transition.Cut="მოჭრა" +SlideShow.Transition.Fade="მილევა" +SlideShow.Transition.Swipe="შენაცვლება" +SlideShow.Transition.Slide="გადაწევა" +SlideShow.PlaybackBehavior="ხილვადობის მიხედვით მოქმედება" +SlideShow.PlaybackBehavior.StopRestart="შეწყვეტა თუ უხილავია, თავიდან გაშვება თუ ხილულია" +SlideShow.PlaybackBehavior.PauseUnpause="შეჩერება თუ უხილავია, გაშვება თუ ხილულია" +SlideShow.PlaybackBehavior.AlwaysPlay="ყოველთვის გაშვება, ხილვადობის მიუხედავად" +SlideShow.SlideMode="სლაიდების მართვა" +SlideShow.SlideMode.Auto="ავტომატური" +SlideShow.SlideMode.Manual="ხელით (ღილაკების გამოყენება სლაიდშოუს სამართავად)" +SlideShow.PlayPause="გაშვება/შეჩერება" +SlideShow.Restart="თავიდან გაშვება" +SlideShow.Stop="შეწყვეტა" +SlideShow.NextSlide="მომდევნო სლაიდი" +SlideShow.PreviousSlide="წინა სლაიდი" +SlideShow.HideWhenDone="დამალვა სლაიდშოუს დასრულებისას" + +ColorSource="ფონის ფერი" +ColorSource.Color="ფერი" +ColorSource.Width="სიგანე" +ColorSource.Height="სიმაღლე" +
View file
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
@@ -5,9 +5,15 @@ SlideShow="Slide Show de imagini" SlideShow.TransitionSpeed="Viteza de tranziție (milisecunde)" SlideShow.SlideTime="Timpul dintre diapozitive (milisecunde)" +SlideShow.Files="Fișiere Imagine" +SlideShow.CustomSize.Auto="Automat" +SlideShow.Loop="Buclă" SlideShow.Transition="Tranziție" SlideShow.Transition.Cut="Decupare" SlideShow.Transition.Slide="Diapozitiv" +SlideShow.SlideMode.Auto="Automat" +SlideShow.NextSlide="Următorul diapozitiv" +SlideShow.PreviousSlide="Diapozitiv anterior" ColorSource.Color="Culoare" ColorSource.Width="Lățime"
View file
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
@@ -11,7 +11,7 @@ SlideShow.Randomize="Случайное воспроизведение" SlideShow.Loop="Повтор" SlideShow.Transition="Переход" -SlideShow.Transition.Cut="Обрезать" +SlideShow.Transition.Cut="Обрезка" SlideShow.Transition.Fade="Затухание" SlideShow.Transition.Swipe="Перемещение" SlideShow.Transition.Slide="Сдвиг"
View file
obs-studio-21.1.2.tar.xz/plugins/image-source/data/locale/tl-PH.ini
Added
@@ -0,0 +1,36 @@ +ImageInput="Imahe" +File="Imahe ng File" +UnloadWhenNotShowing="Mag-ibis ng imahe kapag hindi nagpapakita" + +SlideShow="Ipakita ang pag-slide ng Larawan" +SlideShow.TransitionSpeed="Bilis ng Paglipat (milsegundo)" +SlideShow.SlideTime="Oras sa Pagitan ng mga Slide (milsegundo)" +SlideShow.Files="Mga Imahe ng File" +SlideShow.CustomSize="Karatig na Sukat/Ayos ng Ratio" +SlideShow.CustomSize.Auto="Awtomatiko" +SlideShow.Randomize="Pagkumpara sa Pag-play pabalik" +SlideShow.Loop="Silo" +SlideShow.Transition="Paglipat" +SlideShow.Transition.Cut="Kunin" +SlideShow.Transition.Fade="Kumupas" +SlideShow.Transition.Swipe="Mag-swipe" +SlideShow.Transition.Slide="Mag-slide" +SlideShow.PlaybackBehavior="Paggiging kita ng Pag-uugali" +SlideShow.PlaybackBehavior.StopRestart="Itigil kapag hindi ito makita, i-restart kapag nakikita na" +SlideShow.PlaybackBehavior.PauseUnpause="I-pause kapag hindi makita, i-unpause kapag kita na" +SlideShow.PlaybackBehavior.AlwaysPlay="Laging paandarin kahit hindi nakikita" +SlideShow.SlideMode="Naka-slide Mode" +SlideShow.SlideMode.Auto="Awtomatiko" +SlideShow.SlideMode.Manual="Mano-mano (gamitin ang mga hotkey para makontrol ang pagpapakita ng slide)" +SlideShow.PlayPause="Paganahin/I-pause" +SlideShow.Restart="I-restart" +SlideShow.Stop="Itigil" +SlideShow.NextSlide="Susunod na Slide" +SlideShow.PreviousSlide="Ang nakaraang Slide" +SlideShow.HideWhenDone="Itago kapag ang pagpapakita ng slide ay tapos na" + +ColorSource="Pinagmulan ng kulay" +ColorSource.Color="Kulay" +ColorSource.Width="Lapad" +ColorSource.Height="Taas" +
View file
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
@@ -657,6 +657,20 @@ if (ss->pause_on_deactivate || ss->manual || ss->stop || ss->paused) return; + /* ----------------------------------------------------- */ + /* fade to transparency when the file list becomes empty */ + if (!ss->files.num) { + obs_source_t* active_transition_source = + obs_transition_get_active_source(ss->transition); + + if (active_transition_source) { + obs_source_release(active_transition_source); + do_transition(ss, true); + } + } + + /* ----------------------------------------------------- */ + /* do transition when slide time reached */ ss->elapsed += seconds; if (ss->elapsed > ss->slide_time) {
View file
obs-studio-21.1.2.tar.xz/plugins/linux-alsa/data/locale/fil-PH.ini
Added
@@ -0,0 +1,3 @@ +AlsaInput="Audio Capture Device (ALSA)" +Device="Device" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-alsa/data/locale/ka-GE.ini
Added
@@ -0,0 +1,3 @@ +AlsaInput="ხმის ჩამწერი მოწყობილობა (ALSA)" +Device="მოწყობილობა" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-alsa/data/locale/tl-PH.ini
Added
@@ -0,0 +1,3 @@ +AlsaInput="Aparatong Pangkuha ng Audio (APA)" +Device="Device" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-capture/data/locale/fil-PH.ini
Added
@@ -0,0 +1,16 @@ +X11SharedMemoryScreenInput="Screen Capture (XSHM)" +Screen="Screen" +CaptureCursor="Kunin ang Cursor" +AdvancedSettings="Mga Advanced na Setting" +XServer="X Server" +XCCapture="Pagkuha ng Window (Xcomposite)" +Window="Window" +CropTop="I-crop ang Tuktok (mga pixel)" +CropLeft="I-crop ang Kaliwa (mga pixel)" +CropRight="I-crop ang Kanan (mga pixel)" +CropBottom="I-crop ang Ika (pixels)" +SwapRedBlue="Magpalit ng pula at asul" +LockX="Lock X server kapag nakukuha" +IncludeXBorder="Isama ang X Border" +ExcludeAlpha="Gumamit ng alpha-less texture na format (Mesa workaround)" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-capture/data/locale/ka-GE.ini
Added
@@ -0,0 +1,16 @@ +X11SharedMemoryScreenInput="ეკრანის გადაღება (XSHM)" +Screen="ეკრანი" +CaptureCursor="მაჩვენებლის ასახვა" +AdvancedSettings="დამატებითი პარამეტრები" +XServer="X სერვერი" +XCCapture="ფანჯრის გადაღება (Xcomposite)" +Window="ფანჯარა" +CropTop="ზემოდან მოჭრა (პიქსელი)" +CropLeft="მარცხნიდან მოჭრა (პიქსელი)" +CropRight="მარჯვნიდან მოჭრა (პიქსელი)" +CropBottom="ქვემოდან მოჭრა (პიქსელი)" +SwapRedBlue="წითლისა ლურჯის შენაცვლება" +LockX="X სერვერის შეზღუდვა გადაღებისას" +IncludeXBorder="X ჩარჩოიანად" +ExcludeAlpha="გაუმჭვირვალე ზედაპირის გამოყენება (Mesa-ს ხარვეზის მოსაგვარებლად)" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-capture/data/locale/tl-PH.ini
Added
@@ -0,0 +1,16 @@ +X11SharedMemoryScreenInput="Pamagat ng Screen (XSHM)" +Screen="Ang Screen" +CaptureCursor="Pamagat ng kursor" +AdvancedSettings="Ang mga nauunang setting" +XServer="X tagapagsilbi" +XCCapture="Pamagat ng Bintana (Xpinaghalo)" +Window="Bintana" +CropTop="I-crop ang Top (mga pixel)" +CropLeft="I-crop ang kaliwa (mga pixel)" +CropRight="I-crop ang kanan (mga pixel)" +CropBottom="I-crop ang pinakailalim (mga pixel)" +SwapRedBlue="Pagpalitin ang pula at ang asul" +LockX="Kandado sa X server kapag kukuha" +IncludeXBorder="Kasama sa X na hangganan" +ExcludeAlpha="Gumamit ng alpha-less texture na format (Mesa workaround)" +
View file
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
@@ -400,6 +400,7 @@ GLX_BIND_TO_TEXTURE_RGBA_EXT, GL_TRUE, GLX_DRAWABLE_TYPE, GLX_PIXMAP_BIT, GLX_BIND_TO_TEXTURE_TARGETS_EXT, GLX_TEXTURE_2D_BIT_EXT, + GLX_ALPHA_SIZE, 8, GLX_DOUBLEBUFFER, GL_FALSE, None };
View file
obs-studio-21.1.2.tar.xz/plugins/linux-jack/data/locale/fil-PH.ini
Added
@@ -0,0 +1,4 @@ +StartJACKServer="Simulan ang JACK Server" +Channels="Bilang ng Mga Channel" +JACKInput="JACK Input Client" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-jack/data/locale/ka-GE.ini
Added
@@ -0,0 +1,4 @@ +StartJACKServer="JACK სერვერის გაშვება" +Channels="არხების რაოდენობა" +JACKInput="JACK შეტანის კლიენტი" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-pulseaudio/data/locale/fil-PH.ini
Added
@@ -0,0 +1,4 @@ +PulseInput="Audio Input Capture (PulseAudio)" +PulseOutput="Audio Output Capture (PulseAudio)" +Device="Device" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-pulseaudio/data/locale/ka-GE.ini
Added
@@ -0,0 +1,4 @@ +PulseInput="შემავალი ხმოვანი სიგნალის ჩაწერა (PulseAudio)" +PulseOutput="გამომავალი ხმოვანი სიგნალის ჩაწერა (PulseAudio)" +Device="მოწყობილობა" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-v4l2/data/locale/fil-PH.ini
Added
@@ -0,0 +1,11 @@ +V4L2Input="Video Capture Device (V4L2)" +Device="Device" +Input="Input" +VideoFormat="Format ng Video" +VideoStandard="Standard Video" +DVTiming="DV Timing" +Resolution="Resolution" +FrameRate="Frame rate" +LeaveUnchanged="Mag-iwan ng hindi nabago" +UseBuffering="Gamitin ang Buffering" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-v4l2/data/locale/ka-GE.ini
Added
@@ -0,0 +1,11 @@ +V4L2Input="ვიდეოს ჩამწერი მოწყობილობა (V4L2)" +Device="მოწყობილობა" +Input="შემავალი" +VideoFormat="ვიდეოს ფორმატი" +VideoStandard="ვიდეოს სტანდარტი" +DVTiming="ციფრული ვიდეოს სინქრონიზაცია" +Resolution="გარჩევადობა" +FrameRate="კადრის სიხშირე" +LeaveUnchanged="უცვლელად დატოვება" +UseBuffering="ბუფერიზაციის გამოყენება" +
View file
obs-studio-21.1.2.tar.xz/plugins/linux-v4l2/data/locale/tl-PH.ini
Added
@@ -0,0 +1,11 @@ +V4L2Input="Pagkuha ng Video sa Aparato (V4L2)" +Device="Aparato" +Input="Pampasok" +VideoFormat="Ang Format ng Video" +VideoStandard="Ang Pamantayan ng Video" +DVTiming="Ang Tiyempong DV" +Resolution="Resulusyon" +FrameRate="Pag-Rate ng Frame" +LeaveUnchanged="Iniwa ng hindi nabago" +UseBuffering="Gamitin ang Buffering" +
View file
obs-studio-21.1.2.tar.xz/plugins/mac-avcapture/data/locale/fil-PH.ini
Added
@@ -0,0 +1,14 @@ +AVCapture="Video Capture aparato" +Device="Aparato" +UsePreset="Gamitin ang Preset" +Preset="Ang Preset" +Buffering="Gamitin ang Buffering" +FrameRate="Rate ng frame" +InputFormat="Format ng input" +ColorSpace="Kulay ng puwang" +VideoRange="Saklaw ng video" +VideoRange.Partial="Bahagyang" +VideoRange.Full="Buong" +Auto="I-Auto" +Unknown="Hindi kilalang ($1)" +
View file
obs-studio-21.1.2.tar.xz/plugins/mac-avcapture/data/locale/tl-PH.ini
Added
@@ -0,0 +1,14 @@ +AVCapture="Pagkuha ng Aparato ng Video" +Device="Aparato" +UsePreset="Gamitin ang Preset" +Preset="Ang Preset" +Buffering="Gamitin ang Buffering" +FrameRate="Pag-rate ng Frame" +InputFormat="Pampasok na format" +ColorSpace="Pagitan na Kulay" +VideoRange="Saklaw na Video" +VideoRange.Partial="Ang Partial" +VideoRange.Full="Puno" +Auto="Awto" +Unknown="Hindi kilalang ($1)" +
View file
obs-studio-21.1.2.tar.xz/plugins/mac-capture/data/locale/fil-PH.ini
Added
@@ -0,0 +1,21 @@ +CoreAudio.InputCapture="Awdyo Input KaptyuraPag-capture ng Audio Input" +CoreAudio.OutputCapture="Awdyo Awtput Kaptyura" +CoreAudio.Device="Aparato" +CoreAudio.Device.Default="Pumalya" +DisplayCapture="Ipakita paghuli" +DisplayCapture.Display="Ihayag" +DisplayCapture.ShowCursor="Ipakita ang Cursor" +WindowCapture="Pagkuha ng Window" +WindowCapture.ShowShadow="Ipakita ang anino ng Window" +WindowUtils.Window="Window" +WindowUtils.ShowEmptyNames="Ipakita ang Windows gamit ang mga walang laman na pangalan" +CropMode="I-crop" +CropMode.None="Wala" +CropMode.Manual="Mano-manong" +CropMode.ToWindow="Sa Window" +CropMode.ToWindowAndManual="Upang Window at Manu-manong" +Crop.origin.x="I-crop ang kaliwa" +Crop.origin.y="I-crop ang tuktok" +Crop.size.width="I-crop ang kanan" +Crop.size.height="I-crop ang ibaba" +
View file
obs-studio-21.1.2.tar.xz/plugins/mac-capture/data/locale/tl-PH.ini
Added
@@ -0,0 +1,21 @@ +CoreAudio.InputCapture="Pampasok na Pagkuha ng Audio" +CoreAudio.OutputCapture="Panglabas na pagkuha ng Audio" +CoreAudio.Device="Aparato" +CoreAudio.Device.Default="I-default" +DisplayCapture="Ipakita ang nakuha" +DisplayCapture.Display="Ipakita" +DisplayCapture.ShowCursor="Ipakita ang Kursor" +WindowCapture="Nakuhang bintana" +WindowCapture.ShowShadow="Ipakita ang Anino ng Bintana" +WindowUtils.Window="Bintana" +WindowUtils.ShowEmptyNames="Ipakita ang bintana na may mga walang laman na pangalan" +CropMode="I-crop" +CropMode.None="Wala" +CropMode.Manual="Mano-mano" +CropMode.ToWindow="Sa Bintana" +CropMode.ToWindowAndManual="Sa Bintana at mano-mano" +Crop.origin.x="I-crop sa kaliwa" +Crop.origin.y="I-crop sa taas" +Crop.size.width="I-crop sa kanan" +Crop.size.height="I-crop sa pinakailalim" +
View file
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
@@ -89,6 +89,9 @@ if (!ca->device_uid) ca->device_uid = bstrdup("default"); + ca->default_device = false; + ca->no_devices = false; + /* have to do this because mac output devices don't actually exist */ if (astrcmpi(ca->device_uid, "default") == 0) { if (ca->input) {
View file
obs-studio-21.1.2.tar.xz/plugins/mac-syphon/data/locale/fil-PH.ini
Added
@@ -0,0 +1,13 @@ +Syphon="Pagkuha ng Laro (Siphon)" +Source="Pinagkukunan" +LaunchSyphonInject="Simulan ang SayponIngekt" +Inject="Turukan" +Application="Aplikasyon" +SyphonLicense="Ipahigod ang Lisensya" +Crop="I-crop" +Crop.origin.x="Gupitin ng maigsi sa kaliwa" +Crop.origin.y="Gupitin ng maigsi sa taas" +Crop.size.width="Gupitin ng maigsi sa kanan" +Crop.size.height="Gupitin ng maigsi sa ibaba" +AllowTransparency="Pahintulutan ang aninaw" +
View file
obs-studio-21.1.2.tar.xz/plugins/mac-vth264/data/locale/fil-PH.ini
Added
@@ -0,0 +1,14 @@ +VTH264EncHW="Apol VT H264 Softwer Enkoder" +VTH264EncSW="Apol VT H264 Softwer Enkoder" +VTEncoder="Bidyo ng Kahon ng kasangkapan Enkoder" +Bitrate="Bitreyt" +UseMaxBitrate="Limitasyon ng bitreyt" +MaxBitrate="Pinakamataas na bitreyt" +MaxBitrateWindow="Pinakamataas na bitreyt window (segundo)" +KeyframeIntervalSec="Ang Agwat ng Keypreym (segundo, 0=awto)" +Profile="Propayl" +None="(Wala)" +DefaultEncoder="(Depolt Enkoder)" +UseBFrames="Gamitin ang B-Preyms" + +
View file
obs-studio-21.1.2.tar.xz/plugins/mac-vth264/data/locale/tl-PH.ini
Added
@@ -0,0 +1,14 @@ +VTH264EncHW="Ang Hardware Encoder ng Apple VT H264" +VTH264EncSW="Ang Software Encoder ng Apple VT H264" +VTEncoder="Ang VideoToolbox ng Encoder" +Bitrate="Bitreyt" +UseMaxBitrate="Limitasyon sa Bitreyt" +MaxBitrate="Pinakamalakas na bitrate" +MaxBitrateWindow="Pinakamalakas na bitrate window (segundo)" +KeyframeIntervalSec="Ang Pagitan sa Keyframe (segundo, 0=awto)" +Profile="Bista sa Tagiliran" +None="(Wala)" +DefaultEncoder="(I-default ang Encoder)" +UseBFrames="Gumamit ng mga B-Frame" + +
View file
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
@@ -49,4 +49,4 @@ macro (set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE) set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE}) -endmacro (set_xcode_property) \ No newline at end of file +endmacro (set_xcode_property)
View file
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
@@ -16,14 +16,24 @@ option(USE_STATIC_CRT "Use static CRT" ON) if(USE_STATIC_CRT) - set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS} /MT") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} /MT") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} /MT") - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} /MTd") - set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS} /MT") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} /MT") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} /MT") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} /MTd") + string(REPLACE "/MD" "/MT" + "CMAKE_C_FLAGS" + "${CMAKE_C_FLAGS}") + + string(REPLACE "/MD" "/MT" + "CMAKE_CXX_FLAGS" + "${CMAKE_CXX_FLAGS}") + + string(TOUPPER "${CMAKE_CONFIGURATION_TYPES}" UPPER_CONFIG_TYPES) + foreach(CONFIG_TYPE ${UPPER_CONFIG_TYPES}) + string(REPLACE "/MD" "/MT" + "CMAKE_C_FLAGS_${CONFIG_TYPE}" + "${CMAKE_C_FLAGS_${CONFIG_TYPE}}") + + string(REPLACE "/MD" "/MT" + "CMAKE_CXX_FLAGS_${CONFIG_TYPE}" + "${CMAKE_CXX_FLAGS_${CONFIG_TYPE}}") + endforeach() endif() endif() @@ -318,7 +328,35 @@ COMMAND rm -rf "$<TARGET_FILE_DIR:cef-isolation>/../Frameworks/CEF Helper.app" COMMAND cp -Rf "$<TARGET_FILE_DIR:cef-bootstrap>/../../../CEF Helper.app" "$<TARGET_FILE_DIR:cef-isolation>/../Frameworks" ) - + +else(APPLE) + math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}") + add_custom_command(TARGET obs-browser POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${CEF_ROOT_DIR}/Resources" + "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/" + ) + + add_custom_command(TARGET obs-browser POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + "${CEF_ROOT_DIR}/Release/chrome_elf.dll" + "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/" + COMMAND ${CMAKE_COMMAND} -E copy + "${CEF_ROOT_DIR}/Release/libcef.dll" + "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/" + COMMAND ${CMAKE_COMMAND} -E copy + "${CEF_ROOT_DIR}/Release/libEGL.dll" + "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/" + COMMAND ${CMAKE_COMMAND} -E copy + "${CEF_ROOT_DIR}/Release/libGLESv2.dll" + "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/" + COMMAND ${CMAKE_COMMAND} -E copy + "${CEF_ROOT_DIR}/Release/natives_blob.bin" + "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/" + COMMAND ${CMAKE_COMMAND} -E copy + "${CEF_ROOT_DIR}/Release/snapshot_blob.bin" + "${CMAKE_BINARY_DIR}/rundir/$<CONFIGURATION>/obs-plugins/${BITS}bit/" + ) endif(APPLE) if(APPLE)
View file
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
@@ -1,5 +1,7 @@ include(FindPackageHandleStandardArgs) +SET(CEF_ROOT_DIR "" CACHE PATH "Path to a CEF distributed build") + message("Looking for Chromium Embedded Framework in ${CEF_ROOT_DIR}") find_path(CEF_INCLUDE_DIR "include/cef_version.h" @@ -8,10 +10,19 @@ find_library(CEF_LIBRARY NAMES cef libcef cef.lib libcef.o "Chromium Embedded Framework" PATHS ${CEF_ROOT_DIR} ${CEF_ROOT_DIR}/Release) +find_library(CEF_LIBRARY_DEBUG + NAMES cef libcef cef.lib libcef.o "Chromium Embedded Framework" + PATHS ${CEF_ROOT_DIR} ${CEF_ROOT_DIR}/Debug) find_library(CEFWRAPPER_LIBRARY NAMES cef_dll_wrapper libcef_dll_wrapper - PATHS ${CEF_ROOT_DIR}/build/libcef_dll ${CEF_ROOT_DIR}/build/libcef_dll_wrapper) + PATHS ${CEF_ROOT_DIR}/build/libcef_dll/Release + ${CEF_ROOT_DIR}/build/libcef_dll_wrapper/Release + ${CEF_ROOT_DIR}/build/libcef_dll + ${CEF_ROOT_DIR}/build/libcef_dll_wrapper) +find_library(CEFWRAPPER_LIBRARY_DEBUG + NAMES cef_dll_wrapper libcef_dll_wrapper + PATHS ${CEF_ROOT_DIR}/build/libcef_dll/Debug ${CEF_ROOT_DIR}/build/libcef_dll_wrapper/Debug) if (NOT CEF_LIBRARY) message(FATAL_ERROR "Could not find the CEF shared library" ) @@ -22,8 +33,14 @@ endif (NOT CEFWRAPPER_LIBRARY) set(CEF_LIBRARIES - ${CEF_LIBRARY} - ${CEFWRAPPER_LIBRARY}) + optimized ${CEFWRAPPER_LIBRARY} + optimized ${CEF_LIBRARY}) + +if (CEF_LIBRARY_DEBUG AND CEFWRAPPER_LIBRARY_DEBUG) + list(APPEND CEF_LIBRARIES + debug ${CEFWRAPPER_LIBRARY_DEBUG} + debug ${CEF_LIBRARY_DEBUG}) +endif() find_package_handle_standard_args(CEF DEFAULT_MSG CEF_LIBRARY CEFWRAPPER_LIBRARY CEF_INCLUDE_DIR)
View file
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
@@ -55,7 +55,22 @@ ### Get the current scene ``` -window.obsstudio.getCurrentScene(function(data) {console.log(data);}); +window.obsstudio.getCurrentScene(function(data) { console.log(data); }); + +data is a Javascript object containing the following properties: +* width +* height +* name +``` + +### Get OBS output status +``` +window.obsstudio.getStatus(function data) { console.log(data); }); + +data is a Javascript object containing the following properties: +* recording (true/false) +* streaming (true/false) +* replaybuffer (true/false) ``` ## Building on OSX @@ -104,7 +119,7 @@ ### Building CEF #### Getting * Download CEF Windows 64bit from [http://opensource.spotify.com/cefbuilds/index.html](http://opensource.spotify.com/cefbuilds/index.html) - * Use CEF branch 2987 + * Use CEF branch 2987, or newer branches up until 3112 * Extract and cd into the folder #### Setting Up Project
View file
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
@@ -31,4 +31,4 @@ #endif CefRefPtr<BrowserApp> mainApp(new BrowserApp()); return CefExecuteProcess(mainArgs, mainApp.get(), NULL); -} \ No newline at end of file +}
View file
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
@@ -60,4 +60,3 @@ std::unique_ptr<BrowserTexture> browserTexture; }; -
View file
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,6 +9,7 @@ BrowserOBSBridgeMac(id<CEFIsolationService> cefIsolationService); const char* GetCurrentSceneJSONData() override; + const char* GetStatus() override; private: id<CEFIsolationService> cefIsolationService;
View file
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
@@ -8,3 +8,8 @@ { return [cefIsolationService getCurrentSceneJSONData]; } + +const char* BrowserOBSBridgeMac::GetStatus() +{ + return [cefIsolationService getStatus]; +}
View file
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
@@ -42,4 +42,4 @@ public: IMPLEMENT_REFCOUNTING(BrowserRenderHandler); -}; \ No newline at end of file +};
View file
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
@@ -48,4 +48,4 @@ (void)(dirtyRects); browserHandle->RenderToAvailableTexture(width, height, data); -} \ No newline at end of file +}
View file
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
@@ -34,4 +34,4 @@ const int height; const BrowserSurfaceHandle surfaceHandle; IOSurfaceRef ioSurfaceRef; -}; \ No newline at end of file +};
View file
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
@@ -91,4 +91,4 @@ } return false; -} \ No newline at end of file +}
View file
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
@@ -27,4 +27,3 @@ std::map<int, std::shared_ptr<BrowserHandle> > map; } @end -
View file
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
@@ -34,4 +34,4 @@ - (void)createConnectionThread; - (void)shutdown; -@end \ No newline at end of file +@end
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/ca-ES.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Fitxer local" +URL="URL" +Width="Amplada" +Height="Alçada" +FPS="FPS" +CSS="CSS personalizat" +ShutdownSourceNotVisible="Apaga la font quan no sigui visible" +RefreshBrowserActive="Actualitza el navegador en activar-se l'escena" +RefreshNoCache="Actualitza la memòria cau de la pàgina actual" +RestartCEF="Reinicia CEF" +BrowserSource="Navegador"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/cs-CZ.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Místní soubor" +URL="Adresa URL" +Width="Šířka" +Height="Výška" +FPS="FPS" +CSS="Vlastní styly" +ShutdownSourceNotVisible="Vypnout zdroj, pokud není vidět" +RefreshBrowserActive="Obnovit stránku při aktivaci scény" +RefreshNoCache="Vyčistit mezipaměť (cache) aktuální stránky" +RestartCEF="Restartovat CEF" +BrowserSource="Prohlížeč"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/da-DK.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Lokal fil" +URL="URL" +Width="Bredde" +Height="Højde" +FPS="FPS" +CSS="Tilpasset CSS" +ShutdownSourceNotVisible="Luk kilden, når den ikke er synlig" +RefreshBrowserActive="Opfrisk browseren, når scenen bliver aktiv" +RefreshNoCache="Opfrisk aktuelle side-cache" +RestartCEF="Genstart CEF" +BrowserSource="Browser"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/de-DE.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Lokale Datei" +URL="URL" +Width="Breite" +Height="Höhe" +FPS="FPS" +CSS="Benutzerdefiniertes CSS" +ShutdownSourceNotVisible="Deaktivieren, wenn Quelle nicht sichtbar ist" +RefreshBrowserActive="Browser aktualisieren, wenn die Szene aktiv wird" +RefreshNoCache="Cache der aktuellen Seite aktualisieren" +RestartCEF="CEF neu starten" +BrowserSource="Browser"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/el-GR.ini
Added
@@ -0,0 +1,8 @@ +LocalFile="Τοπικό αρχείο" +URL="Διεύθυνση URL" +Width="Πλάτος" +Height="Ύψος" +FPS="Καρέ ανά δευτερόλεπτο" +CSS="Προσαρμοσμένο CSS" +RefreshNoCache="Ανανέωση της μνήμης cache της τρέχουσας σελίδας" +BrowserSource="Πρόγραμμα περιήγησης"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/es-ES.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Archivo local" +URL="URL" +Width="Ancho" +Height="Alto" +FPS="FPS" +CSS="CSS personalizado" +ShutdownSourceNotVisible="Apagar fuente cuando no sea visible" +RefreshBrowserActive="Actualizar el navegador cuando la escena se active" +RefreshNoCache="Actualizar la caché de la página actual" +RestartCEF="Reiniciar CEF" +BrowserSource="Navegador"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/eu-ES.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Bertako fitxategia" +URL="URL" +Width="Zabalera" +Height="Altuera" +FPS="FPS" +CSS="CSS pertsonalizatua" +ShutdownSourceNotVisible="Itzali iturburua ikusgai ez dagoenean" +RefreshBrowserActive="Freskatu nabigatzailea eszena aktibatzen denean" +RefreshNoCache="Freskatu uneko orriaren cachea" +RestartCEF="Berrabiarazi CEF" +BrowserSource="Nabigatzailea"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/fi-FI.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Paikallinen tiedosto" +URL="URL" +Width="Leveys" +Height="Korkeus" +FPS="FPS" +CSS="Mukautettu CSS" +ShutdownSourceNotVisible="Sulje lähde kun se ei ole näkyvissä" +RefreshBrowserActive="Lataa selain uudelleen kun skenestä tulee aktiivinen" +RefreshNoCache="Lataa nykyisen sivun välimuisti uudelleen" +RestartCEF="Uudelleenkäynnistä CEF" +BrowserSource="Selain"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/fr-FR.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Fichier local" +URL="URL" +Width="Largeur" +Height="Hauteur" +FPS="FPS" +CSS="CSS personnalisé" +ShutdownSourceNotVisible="Désactiver la source si elle n'est pas visible" +RefreshBrowserActive="Rafraîchir le navigateur lorsque la scène devient active" +RefreshNoCache="Rafraîchir le cache de cette page" +RestartCEF="Relancer le CEF" +BrowserSource="Navigateur"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/hu-HU.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Helyi fájl" +URL="Webcím" +Width="Szélesség" +Height="Magasság" +FPS="FPS" +CSS="Egyéni CSS" +ShutdownSourceNotVisible="Lekapcsolás, ha nem látható" +RefreshBrowserActive="Böngésző frissítése ha aktívvá válik" +RefreshNoCache="Aktuális oldal gyorsítótárának frissítése" +RestartCEF="CEF újraindítása" +BrowserSource="Böngésző"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/it-IT.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="File locale" +URL="URL" +Width="Larghezza" +Height="Altezza" +FPS="FPS (Fotogrammi al secondo)" +CSS="CSS personalizzato" +ShutdownSourceNotVisible="Arresta quando la sorgente non è visibile" +RefreshBrowserActive="Aggiorna il browser quando la scena diventa attiva" +RefreshNoCache="Ricarica cache della la pagina attuale" +RestartCEF="Riavvia il CEF" +BrowserSource="Browser"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/ja-JP.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="ローカルファイル" +URL="URL" +Width="幅" +Height="高さ" +FPS="FPS" +CSS="カスタム CSS" +ShutdownSourceNotVisible="見えないときにソースをシャットダウン" +RefreshBrowserActive="シーンがアクティブになったときにブラウザの表示を更新" +RefreshNoCache="現在のページを再読込" +RestartCEF="CEF を再起動" +BrowserSource="ブラウザ"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/ko-KR.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="로컬 파일" +URL="URL" +Width="너비" +Height="높이" +FPS="FPS" +CSS="CSS" +ShutdownSourceNotVisible="소스가 보이지 않는 경우 종료" +RefreshBrowserActive="장면이 활성화되면 브라우저를 새로고침" +RefreshNoCache="현재 페이지의 캐시를 새로고침" +RestartCEF="CEF 재시작" +BrowserSource="브라우저"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/nb-NO.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Lokal fil" +URL="URL" +Width="Bredde" +Height="Høyde" +FPS="FPS" +CSS="Egendefinert CSS" +ShutdownSourceNotVisible="Deaktiver kilde når ikke synlig" +RefreshBrowserActive="Oppdater nettleseren når scenen blir aktiv" +RefreshNoCache="Oppdater bufferen for denne siden" +RestartCEF="Restart CEF" +BrowserSource="Nettleser"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/nl-NL.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Lokaal bestand" +URL="URL" +Width="Breedte" +Height="Hoogte" +FPS="FPS" +CSS="Aangepaste CSS" +ShutdownSourceNotVisible="Schakel bron uit wanneer deze niet zichtbaar is" +RefreshBrowserActive="Vernieuw browser wanneer een scène actief wordt" +RefreshNoCache="Cache van de huidige pagina vernieuwen" +RestartCEF="CEF herstarten" +BrowserSource="Browser"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/pl-PL.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Plik lokalny" +URL="Adres URL" +Width="Szerokość" +Height="Wysokość" +FPS="FPS" +CSS="Własny CSS" +ShutdownSourceNotVisible="Zamknij źródło, gdy niewidoczne" +RefreshBrowserActive="Odśwież przeglądarkę, gdy scena zostanie aktywowana" +RefreshNoCache="Odśwież pamięć podręczną bieżącej strony" +RestartCEF="Uruchom ponownie CEF" +BrowserSource="Przeglądarka"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/pt-BR.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Arquivo local" +URL="URL" +Width="Largura" +Height="Altura" +FPS="FPS" +CSS="CSS Personalizado" +ShutdownSourceNotVisible="Desativar fonte quando Invisível" +RefreshBrowserActive="Atualizar o navegador quando a cena se tornar ativa" +RefreshNoCache="Atualizar o cache da página atual" +RestartCEF="Reiniciar o CEF" +BrowserSource="Navegador"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/ru-RU.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Локальный файл" +URL="Адрес URL" +Width="Ширина" +Height="Высота" +FPS="FPS" +CSS="CSS" +ShutdownSourceNotVisible="Отключать, когда не видим" +RefreshBrowserActive="Обновить браузер, когда сцена становится активной" +RefreshNoCache="Обновить кэш текущей страницы" +RestartCEF="Перезапустить CEF" +BrowserSource="Браузер"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/sk-SK.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Lokálny súbor" +URL="URL adresa" +Width="Šírka" +Height="Výška" +FPS="FPS" +CSS="Vlastné CSS" +ShutdownSourceNotVisible="Vypnúť zdroj, keď nie je viditeľný" +RefreshBrowserActive="Obnoviť prehliadač, keď sa scéna stane aktívna" +RefreshNoCache="Vyčistiť medzi-pamäť aktuálnej stránky" +RestartCEF="Reštartovať CEF" +BrowserSource="Prehliadač"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/sv-SE.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Lokal fil" +URL="URL" +Width="Bredd" +Height="Höjd" +FPS="Bildfrekvens" +CSS="Anpassad CSS" +ShutdownSourceNotVisible="Stäng ned källor som inte visas" +RefreshBrowserActive="Uppdatera webbläsaren när scenen blir aktiv" +RefreshNoCache="Uppdatera cachen för aktuell sida" +RestartCEF="Uppdatera CEF" +BrowserSource="Webbläsare"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/tr-TR.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Yerel dosya" +URL="URL" +Width="Genişlik" +Height="Yükseklik" +FPS="FPS" +CSS="Özel CSS" +ShutdownSourceNotVisible="Görünür değilken kaynağı kapat" +RefreshBrowserActive="Sahne etkin olduğunda tarayıcıyı yenile" +RefreshNoCache="Geçerli sayfanın önbelleğini yenile" +RestartCEF="CEF'i Yeniden Başlat" +BrowserSource="Tarayıcı"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/uk-UA.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="Локальний файл" +URL="URL-адреса" +Width="Ширина" +Height="Висота" +FPS="Кадрів в секунду" +CSS="Власний CSS код" +ShutdownSourceNotVisible="Вимикати джерело, коли воно не видиме" +RefreshBrowserActive="Оновити браузер, коли сцена стає активною" +RefreshNoCache="Оновити кеш поточної сторінки" +RestartCEF="Перезапустити CEF" +BrowserSource="Браузер"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/vi-VN.ini
Added
@@ -0,0 +1,10 @@ +LocalFile="Tập tin cục bộ" +URL="URL" +Width="Rộng" +Height="Cao" +FPS="FPS" +CSS="CSS tùy chỉnh" +ShutdownSourceNotVisible="Tắt máy khi không hiển thị" +RefreshNoCache="Làm mới cache trang hiện tại" +RestartCEF="Khởi động lại CEF" +BrowserSource="Trình duyệt"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/zh-CN.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="本地文件" +URL="URL" +Width="宽度" +Height="高度" +FPS="FPS" +CSS="自定义 CSS" +ShutdownSourceNotVisible="不可见时关闭源" +RefreshBrowserActive="场景变为活动状态时,刷新浏览器" +RefreshNoCache="刷新当前页面缓存" +RestartCEF="重启 CEF" +BrowserSource="浏览器"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-browser/data/locale/zh-TW.ini
Added
@@ -0,0 +1,11 @@ +LocalFile="本機檔案" +URL="網址" +Width="寬度" +Height="高度" +FPS="FPS (影格率)" +CSS="自訂CSS" +ShutdownSourceNotVisible="不可見時關閉來源" +RefreshBrowserActive="取得焦點時更新瀏覽器" +RefreshNoCache="更新當前頁面快取" +RestartCEF="重新啟動CEF" +BrowserSource="瀏覽器"
View file
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
@@ -55,4 +55,3 @@ #endif // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 -
View file
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
@@ -81,4 +81,3 @@ #endif // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 -
View file
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
@@ -90,4 +90,3 @@ #endif // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 -
View file
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
@@ -466,4 +466,3 @@ #endif // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 -
View file
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
@@ -76,4 +76,4 @@ } -} \ No newline at end of file +}
View file
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
@@ -140,4 +140,4 @@ obs_leave_graphics(); browserSource->GetParent()->UpdateBrowser(); -} \ No newline at end of file +}
View file
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
@@ -41,4 +41,4 @@ gs_samplerstate_t *sampler; gs_vertbuffer_t *vertexBuffer; -}; \ No newline at end of file +};
View file
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
@@ -53,7 +53,7 @@ { obs_enter_graphics(); - drawEffect = obs_get_default_rect_effect(); + drawEffect = obs_get_base_effect(OBS_EFFECT_DEFAULT_RECT); struct gs_sampler_info info = { .filter = GS_FILTER_LINEAR,
View file
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
@@ -120,6 +120,12 @@ return jsonString; } +- (const char*)getStatus +{ + const char* jsonString = obsStatusToJSON(); + return jsonString; +} + - (void)invalidateClient:(id)client withException:(NSException *)exception { UNUSED_PARAMETER(client);
View file
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
@@ -29,4 +29,4 @@ - (void)restart; - (void)shutdown; -@end \ No newline at end of file +@end
View file
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
@@ -67,4 +67,4 @@ { build_sprite(data, fabs(end_x - origin_x), fabs(end_y - origin_y), origin_x, end_x, origin_y, end_y); -} \ No newline at end of file +}
View file
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
@@ -27,4 +27,4 @@ void build_sprite_rect( struct gs_vb_data *data, float origin_x, float origin_y, - float end_x, float end_y); \ No newline at end of file + float end_x, float end_y);
View file
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
@@ -45,4 +45,4 @@ frame->ExecuteJavaScript(script, href, 0); } -} \ No newline at end of file +}
View file
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
@@ -41,4 +41,4 @@ private: IMPLEMENT_REFCOUNTING(BrowserLoadHandler); -}; \ No newline at end of file +};
View file
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
@@ -10,6 +10,7 @@ #include "browser-render-handler.hpp" #include "browser-load-handler.hpp" #include "browser-obs-bridge-base.hpp" +#include "browser-listener.hpp" BrowserManager::BrowserManager() : pimpl(new BrowserManager::Impl()) @@ -35,6 +36,26 @@ return pimpl->CreateBrowser(browserSettings, browserListener); } +CefBrowserHost* BrowserManager::GetBrowserHost(int browserIdentifier) +{ + return pimpl->GetBrowserHost(browserIdentifier); +} + +CefBrowser* BrowserManager::GetBrowser(int browserIdentifier) +{ + return pimpl->GetBrowser(browserIdentifier); +} + +void BrowserManager::LoadURL(int browserIdentifier, CefString& url) +{ + return pimpl->LoadURL(browserIdentifier, url); +} + +bool BrowserManager::IsValidBrowserIdentifier(int browserIdentifier) +{ + return pimpl->IsValidBrowserIdentifier(browserIdentifier); +} + void BrowserManager::DestroyBrowser(int browserIdentifier) { pimpl->DestroyBrowser(browserIdentifier); @@ -128,7 +149,7 @@ const BrowserSettings &browserSettings, const std::shared_ptr<BrowserListener> &browserListener) { - int browserIdentifier = 0; + int browserIdentifier = -1; os_event_t *createdEvent; os_event_init(&createdEvent, OS_EVENT_TYPE_AUTO); @@ -167,6 +188,7 @@ if (browser != nullptr) { browserIdentifier = browser->GetIdentifier(); + browserListener->SetBrowserIdentifier(browserIdentifier); browserMap[browserIdentifier] = browser; } os_event_signal(createdEvent); @@ -177,15 +199,85 @@ return browserIdentifier; } +CefBrowserHost* BrowserManager::Impl::GetBrowserHost(int browserIdentifier) +{ + CefBrowserHost* result = NULL; + + os_event_t* complete_event; + os_event_init(&complete_event, OS_EVENT_TYPE_AUTO); + + CefPostTask(TID_UI, BrowserTask::newTask( + [&] + { + result = browserMap[browserIdentifier]->GetHost(); + + os_event_signal(complete_event); + })); + + os_event_wait(complete_event); + os_event_destroy(complete_event); + + return result; +} + +CefBrowser* BrowserManager::Impl::GetBrowser(int browserIdentifier) +{ + CefBrowser* result = NULL; + + os_event_t* complete_event; + os_event_init(&complete_event, OS_EVENT_TYPE_AUTO); + + CefPostTask(TID_UI, BrowserTask::newTask( + [&] + { + result = browserMap[browserIdentifier]; + + os_event_signal(complete_event); + })); + + os_event_wait(complete_event); + os_event_destroy(complete_event); + + return result; +} + +void BrowserManager::Impl::LoadURL(int browserIdentifier, CefString& url) +{ + os_event_t* complete_event; + os_event_init(&complete_event, OS_EVENT_TYPE_AUTO); + + CefPostTask(TID_UI, BrowserTask::newTask( + [&] + { + browserMap[browserIdentifier]->GetMainFrame()->LoadURL(url); + + os_event_signal(complete_event); + })); + + os_event_wait(complete_event); + os_event_destroy(complete_event); +} + +bool BrowserManager::Impl::IsValidBrowserIdentifier(int browserIdentifier) +{ + return browserIdentifier >= 0 && browserMap.count(browserIdentifier) > 0; +} + void BrowserManager::Impl::DestroyBrowser(int browserIdentifier) { if (browserMap.count(browserIdentifier) > 0) { CefRefPtr<CefBrowser> browser = browserMap[browserIdentifier]; + browserMap.erase(browserIdentifier); os_event_t *closeEvent; os_event_init(&closeEvent, OS_EVENT_TYPE_AUTO); CefPostTask(TID_UI, BrowserTask::newTask([&, browser] { + // This stops rendering + // http://magpcss.org/ceforum/viewtopic.php?f=6&t=12079 + // https://bitbucket.org/chromiumembedded/cef/issues/1363/washidden-api-got-broken-on-branch-2062) + browser->GetHost()->WasHidden(true); + browser->GetHost()->CloseBrowser(true); os_event_signal(closeEvent); }));
View file
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
@@ -33,6 +33,11 @@ const BrowserSettings &browserSettings, const std::shared_ptr<BrowserListener> &browserListener); + CefBrowserHost* GetBrowserHost(int browserIdentifier); + CefBrowser* GetBrowser(int browserIdentifier); + void LoadURL(int browserIdentifier, CefString& url); + + bool IsValidBrowserIdentifier(int browserIdentifier); void DestroyBrowser(int browserIdentifier); void TickBrowser(int browserIdentifier);
View file
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
@@ -15,3 +15,9 @@ return jsonString; } + +const char* BrowserOBSBridgeBase::GetStatus() +{ + const char* jsonString = obsStatusToJSON(); + return jsonString; +}
View file
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
@@ -8,4 +8,5 @@ BrowserOBSBridgeBase(); const char* GetCurrentSceneJSONData() override; + const char* GetStatus() override; };
View file
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
@@ -106,7 +106,7 @@ { viewWidth = width; viewHeight = height; - if (surfaceHandles.size() < 2) { + if (surfaceHandles.size() < 1) { BrowserSurfaceHandle newSurfaceHandle = 0; browserListener->CreateSurface(width, height, &newSurfaceHandle); @@ -116,16 +116,10 @@ } } - int previousSurfaceHandle = currentSurfaceHandle; - - currentSurfaceHandle = (++currentSurfaceHandle % surfaceHandles.size()); - - if (currentSurfaceHandle != previousSurfaceHandle) { - obs_enter_graphics(); - gs_texture_set_image(surfaceHandles[currentSurfaceHandle], - (const uint8_t*)data, width * 4, false); - obs_leave_graphics(); - } + obs_enter_graphics(); + gs_texture_set_image(surfaceHandles[currentSurfaceHandle], + (const uint8_t*)data, width * 4, false); + obs_leave_graphics(); } else if (type == PET_POPUP && popupRect.width > 0 && popupRect.height > 0) @@ -156,4 +150,4 @@ browserListener->OnDraw(surfaceHandles[currentSurfaceHandle], viewWidth, viewHeight); -} \ No newline at end of file +}
View file
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
@@ -64,7 +64,7 @@ const int height; const std::shared_ptr<BrowserListener> browserListener; std::vector<struct gs_texture *> surfaceHandles; - int currentSurfaceHandle; + int currentSurfaceHandle = 0; int viewWidth; int viewHeight; CefRect popupRect; @@ -73,4 +73,4 @@ private: IMPLEMENT_REFCOUNTING(BrowserRenderHandler); -}; \ No newline at end of file +};
View file
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
@@ -39,4 +39,4 @@ BrowserSource *parent; gs_texture_t *activeTexture; -}; \ No newline at end of file +};
View file
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
@@ -19,6 +19,7 @@ #include "browser-source-base.hpp" #include "browser-types.h" #include "browser-source-listener-base.hpp" +#include "browser-manager-base.hpp" void BrowserSource::Impl::Listener::OnDraw( BrowserSurfaceHandle surfaceHandle, int width, int height) @@ -26,6 +27,14 @@ UNUSED_PARAMETER(width); UNUSED_PARAMETER(height); + // Check if our browser has not been destroyed yet. + // + // Due to the asynchronous nature of CEF, we can get an OnDraw call after + // BrowserManager::Instance()->DestroyBrowser() call has been made. + // + if (!BrowserManager::Instance()->IsValidBrowserIdentifier(GetBrowserIdentifier())) + return; + if (textureSet.count(surfaceHandle) > 0) { obs_enter_graphics(); if (browserSource) @@ -102,4 +111,4 @@ browserSource->activeTexture = nullptr; obs_leave_graphics(); } -} \ No newline at end of file +}
View file
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
@@ -176,6 +176,16 @@ else { bs->ExecuteVisiblityJSCallback(true); } + + // Start animation + BrowserManager::Instance()->GetBrowser(bs->GetBrowserIdentifier())->GetHost()->WasHidden(false); + +#ifdef APPLE + BrowserManager::Instance()->GetBrowser(bs->GetBrowserIdentifier())->GetHost()->SetWindowVisibility(true); +#endif + + // Repaint the view + BrowserManager::Instance()->GetBrowser(bs->GetBrowserIdentifier())->GetHost()->Invalidate(PET_VIEW); } // Called when the source is no longer visible @@ -183,6 +193,13 @@ { BrowserSource *bs = static_cast<BrowserSource *>(data); + // Stop animation + BrowserManager::Instance()->GetBrowser(bs->GetBrowserIdentifier())->GetHost()->WasHidden(true); + +#ifdef APPLE + BrowserManager::Instance()->GetBrowser(bs->GetBrowserIdentifier())->GetHost()->SetWindowVisibility(false); +#endif + if (bs->GetShutdown()) { BrowserManager::Instance()->DestroyBrowser(bs->GetBrowserIdentifier()); } @@ -196,7 +213,17 @@ BrowserSource *browserSource = new BrowserSource(settings, source); if (browserSource->GetShutdown() && !obs_source_showing(source)) + { BrowserManager::Instance()->DestroyBrowser(browserSource->GetBrowserIdentifier()); + } + else + { + if (!obs_source_showing(source)) + { + // Stop animation + BrowserManager::Instance()->GetBrowser(browserSource->GetBrowserIdentifier())->GetHost()->WasHidden(true); + } + } return browserSource; } @@ -206,6 +233,7 @@ BrowserSource *bs = static_cast<BrowserSource *>(data); delete bs; + bs = nullptr; } @@ -294,4 +322,4 @@ return browser_source_info; -} \ No newline at end of file +}
View file
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
@@ -56,4 +56,3 @@ + (id)fromObsKeyEvent: (const obs_key_event *)event; @end -
View file
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
@@ -83,4 +83,4 @@ return [[ObsKeyEventBridge alloc] initWithObsKeyEvent:event]; } -@end \ No newline at end of file +@end
View file
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
@@ -38,6 +38,7 @@ surfaceHandle:(BrowserSurfaceHandle)surfaceHandle; - (void)invalidateClient:(id)client withException:(NSException *)exception; - (const char*)getCurrentSceneJSONData; +- (const char*)getStatus; @end @protocol CEFIsolatedClient @@ -63,5 +64,3 @@ - (void)executeSceneChangeJSCallback:(const char *)name; - (void)dispatchJSEvent:(const char *)eventName data:(const char*) jsonString; @end - -
View file
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
@@ -23,4 +23,4 @@ #define CEFLogDebug(...) NSLog(__VA_ARGS__) #endif -#define CEFLogError(...) NSLog(__VA_ARGS__) \ No newline at end of file +#define CEFLogError(...) NSLog(__VA_ARGS__)
View file
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
@@ -120,4 +120,4 @@ } return ret; -} \ No newline at end of file +}
View file
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
@@ -1,4 +1,4 @@ #include <string> std::string base64_encode(unsigned char const*, unsigned int len); -std::string base64_decode(std::string const& s); \ No newline at end of file +std::string base64_decode(std::string const& s);
View file
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
@@ -78,6 +78,9 @@ CefRefPtr<CefV8Value> func = CefV8Value::CreateFunction("getCurrentScene", this); obsStudioObj->SetValue("getCurrentScene", func, V8_PROPERTY_ATTRIBUTE_NONE); + + CefRefPtr<CefV8Value> getStatus = CefV8Value::CreateFunction("getStatus", this); + obsStudioObj->SetValue("getStatus", getStatus, V8_PROPERTY_ATTRIBUTE_NONE); } void BrowserApp::ExecuteJSFunction(CefRefPtr<CefBrowser> browser, @@ -164,23 +167,33 @@ return true; } - else if (message->GetName() == "executeCallback") { - CefRefPtr<CefV8Context> context = browser->GetMainFrame()->GetV8Context(); + else if (message->GetName() == "executeCallback") + { + CefRefPtr<CefV8Context> context = browser->GetMainFrame()->GetV8Context(); + CefRefPtr<CefV8Value> retval; + CefRefPtr<CefV8Exception> exception; - context->Enter(); + context->Enter(); + + CefRefPtr<CefListValue> arguments = message->GetArgumentList(); + int callbackID = arguments->GetInt(0); + CefString jsonString = arguments->GetString(1); - int callbackID = message->GetArgumentList()->GetInt(0); - CefString jsonString = message->GetArgumentList()->GetString(1); + std::string script = fmt::format( + "JSON.parse('{}');", + arguments->GetString(1).ToString(), + jsonString.ToString().c_str()); CefRefPtr<CefV8Value> callback = callbackMap[callbackID]; CefV8ValueList args; - args.push_back(CefV8Value::CreateString(jsonString)); - CefRefPtr<CefV8Value> retval; - CefRefPtr<CefV8Exception> exception; - callback->ExecuteFunction(NULL, args); + context->Eval(script, browser->GetMainFrame()->GetURL(), 0, retval, exception); + + args.push_back(retval); + + callback->ExecuteFunction(NULL, args); - context->Exit(); + context->Exit(); callbackMap.erase(callbackID); @@ -198,8 +211,8 @@ CefRefPtr<CefV8Value>& retval, CefString& exception) { - if (name == "getCurrentScene") { - + if (name == "getCurrentScene") + { if (arguments.size() == 1 && arguments[0]->IsFunction()) { callbackId++; callbackMap[callbackId] = arguments[0]; @@ -215,6 +228,22 @@ return true; } + else if (name == "getStatus") + { + if (arguments.size() == 1 && arguments[0]->IsFunction()) { + callbackId++; + callbackMap[callbackId] = arguments[0]; + } + + CefRefPtr<CefProcessMessage> msg = CefProcessMessage::Create("getStatus"); + CefRefPtr<CefListValue> args = msg->GetArgumentList(); + args->SetInt(0, callbackId); + + CefRefPtr<CefBrowser> browser = CefV8Context::GetCurrentContext()->GetBrowser(); + browser->SendProcessMessage(PID_BROWSER, msg); + + return true; + } // Function does not exist. return false;
View file
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
@@ -105,5 +105,20 @@ return true; } + else if (message_name == "getStatus") { + + int callbackID = message->GetArgumentList()->GetInt(0); + + CefString jsonString = browserOBSBridge->GetStatus(); + + CefRefPtr<CefProcessMessage> msg = CefProcessMessage::Create("executeCallback"); + CefRefPtr<CefListValue> args = msg->GetArgumentList(); + args->SetInt(0, callbackID); + args->SetString(1, jsonString); + + browser->SendProcessMessage(PID_RENDERER, msg); + + return true; + } return false; }
View file
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
@@ -81,4 +81,18 @@ } virtual void Invalidated() override {} -}; \ No newline at end of file + +private: + int m_browserIdentifier = -1; + +public: + void SetBrowserIdentifier(const int browserIdentifier) + { + m_browserIdentifier = browserIdentifier; + } + + const int GetBrowserIdentifier() + { + return m_browserIdentifier; + } +};
View file
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
@@ -19,6 +19,8 @@ #include <memory> #include <jansson.h> +#include <include/cef_base.h> +#include <include/cef_client.h> class BrowserListener; struct BrowserSettings; @@ -42,6 +44,12 @@ const std::shared_ptr<BrowserListener> &browserListener); + CefBrowserHost* GetBrowserHost(int browserIdentifier); + CefBrowser* GetBrowser(int browserIdentifier); + void LoadURL(int browserIdentifier, CefString& url); + + bool IsValidBrowserIdentifier(int browserIdentifier); + void DestroyBrowser(int browserIdentifier); void TickBrowser(int browserIdentifier);
View file
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
@@ -4,4 +4,5 @@ { public: virtual const char* GetCurrentSceneJSONData() = 0; -}; \ No newline at end of file + virtual const char* GetStatus() = 0; +};
View file
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
@@ -116,4 +116,4 @@ { if (inputStream.is_open()) inputStream.close(); -} \ No newline at end of file +}
View file
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
@@ -59,4 +59,4 @@ public: IMPLEMENT_REFCOUNTING(BrowserSchemeHandler); -}; \ No newline at end of file +};
View file
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
@@ -25,4 +25,4 @@ unsigned int width; unsigned int height; unsigned int fps; -}; \ No newline at end of file +};
View file
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
@@ -25,4 +25,4 @@ void BrowserTask::Execute() { task(); -} \ No newline at end of file +}
View file
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
@@ -35,4 +35,4 @@ std::function<void()> task; private: IMPLEMENT_REFCOUNTING(BrowserTask); -}; \ No newline at end of file +};
View file
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
@@ -36,4 +36,4 @@ private: class Impl; std::unique_ptr<Impl> pimpl; -}; \ No newline at end of file +};
View file
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
@@ -36,4 +36,4 @@ private: class Impl; std::unique_ptr<Impl> pimpl; -}; \ No newline at end of file +};
View file
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
@@ -25,4 +25,4 @@ typedef int BrowserSurfaceHandle; #else typedef struct gs_texture *BrowserSurfaceHandle; -#endif \ No newline at end of file +#endif
View file
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
@@ -1,3 +1,3 @@ #pragma once -#define OBS_BROWSER_VERSION "1.30.1" \ No newline at end of file +#define OBS_BROWSER_VERSION "1.31.0"
View file
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
@@ -18,4 +18,21 @@ free(obj); return jsonString; -} \ No newline at end of file +} + +/** + Gets the OBS status and generates a JSON encoded string representing the status (recording, streaming etc.). + + @return json encoded string +*/ +const char* obsStatusToJSON() +{ + json_t *obj = json_object(); + json_object_set_new(obj, "recording", json_boolean(obs_frontend_recording_active())); + json_object_set_new(obj, "streaming", json_boolean(obs_frontend_streaming_active())); + json_object_set_new(obj, "replaybuffer", json_boolean(obs_frontend_replay_buffer_active())); + const char *jsonString = json_dumps(obj, 0); + free(obj); + + return jsonString; +}
View file
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
@@ -3,4 +3,5 @@ #include <jansson.h> #include <obs-frontend-api.h> -extern const char* obsSourceToJSON(obs_source_t *source); \ No newline at end of file +extern const char* obsSourceToJSON(obs_source_t *source); +extern const char* obsStatusToJSON();
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Parcial" ColorRange.Full="Màxim" RestartMedia="Reinicia els mitjans" +SpeedPercentage="Velocitat (percentatge)" Seekable="Cercable" MediaFileFilter.AllMediaFiles="Tots els arxius multimèdia"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Teilweise" ColorRange.Full="Voll" RestartMedia="Medium neu starten" +SpeedPercentage="Geschwindigkeit (Prozent)" Seekable="Durchsuchbar" MediaFileFilter.AllMediaFiles="Alle Mediendateien"
View file
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
@@ -36,7 +36,7 @@ ColorRange.Partial="Partial" ColorRange.Full="Full" RestartMedia="Restart Media" -SpeedPercentage="Speed (perecent)" +SpeedPercentage="Speed (percent)" Seekable="Seekable" MediaFileFilter.AllMediaFiles="All Media Files"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Osittainen" ColorRange.Full="Täysi" RestartMedia="Uudelleenkäynnistä media" +SpeedPercentage="Nopeus (prosentti)" Seekable="Haettava" MediaFileFilter.AllMediaFiles="Kaikki mediatiedostot"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/fil-PH.ini
Added
@@ -0,0 +1,51 @@ +FFmpegOutput="Ang Awput ng FFmpeg" +FFmpegAAC="Ang Default FFmpeg AAC Encoder" +FFmpegOpus="Ang FFmpeg Opus Encoder" +Bitrate="Bitrate" +Preset="Ang Preset" +RateControl="Kontrolin ang Antas" +KeyframeIntervalSec="Ang pagitan ng Keyframe (segundos, 0=auto)" +Lossless="Lossless" + +BFrames="B-frames" + +NVENC.Use2Pass="Gamitin ang Two-Pass Encoding" +NVENC.Preset.default="I-Default" +NVENC.Preset.hq="Itaas ang Kalidad" +NVENC.Preset.hp="Itaas ang Pagganap" +NVENC.Preset.bd="Bluray" +NVENC.Preset.ll="Mababa na Latency" +NVENC.Preset.llhq="Mababa na Latency Mataas na kalidad" +NVENC.Preset.llhp="Mababa na Latency Mataas na pagganap" +NVENC.Level="Lebel" + +FFmpegSource="Pagkunan ng Media" +LocalFile="Ang File na lokal" +Looping="I-Loop" +Input="Ang Input" +InputFormat="Ang Format ng Input" +BufferingMB="Nag buffering ang Network (MB)" +HardwareDecode="Gamitin ang hardware decoding kapag magagamit" +ClearOnMediaEnd="Itago ang pinagmulan kung tapos ang playback" +Advanced="I-Advanced" +RestartWhenActivated="Simulan mulang ang playback kapag aktibo ang pinagmulan" +CloseFileWhenInactive="Isarado ang file pag di aktibo" +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." +ColorRange="Antas ng kulay ng YUV" +ColorRange.Auto="I-Auto" +ColorRange.Partial="I-Partial" +ColorRange.Full="Buo" +RestartMedia="Simulan muli ang Media" +Seekable="I-Seekable" + +MediaFileFilter.AllMediaFiles="Lahat ng Media Files" +MediaFileFilter.VideoFiles="Bidyo Files" +MediaFileFilter.AudioFiles="Audio Files" +MediaFileFilter.AllFiles="Lahat ng Files" + +ReplayBuffer="Ang Replay Buffer" +ReplayBuffer.Save="I-Save ang Replay" + +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." +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." +
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Partielle" ColorRange.Full="Complète" RestartMedia="Redémarrez Media" +SpeedPercentage="Vitesse (pourcent)" Seekable="Navigable" MediaFileFilter.AllMediaFiles="Tous les fichiers multimédias"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Részleges" ColorRange.Full="Teljes" RestartMedia="Media újraindítása" +SpeedPercentage="Sebesség (százalékos)" Seekable="Kereshető" MediaFileFilter.AllMediaFiles="Minden médiafájl"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="一部" ColorRange.Full="全部" RestartMedia="メディアを再開する" +SpeedPercentage="速度 (パーセント)" Seekable="シーク可能" MediaFileFilter.AllMediaFiles="すべてのメディアファイル"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="부분" ColorRange.Full="전체" RestartMedia="미디어 다시재생" +SpeedPercentage="속도 (백분율)" Seekable="탐색 가능" MediaFileFilter.AllMediaFiles="모든 미디어 파일"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Gedeeltelijk" ColorRange.Full="Volledig" RestartMedia="Media herstarten" +SpeedPercentage="Snelheid (percentage)" Seekable="Zoekbaar" MediaFileFilter.AllMediaFiles="Alle mediabestanden"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Częściowy" ColorRange.Full="Pełny" RestartMedia="Zrestartuj plik audio-wideo" +SpeedPercentage="Szybkość (procent)" Seekable="Przeszukiwalny" MediaFileFilter.AllMediaFiles="Wszystkie pliki multimedialne"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Parcial" ColorRange.Full="Completo" RestartMedia="Reiniciar Mídia" +SpeedPercentage="Velocidade (percentagem)" Seekable="Procurável" MediaFileFilter.AllMediaFiles="Todos Arquivos de Mídia"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Частичный" ColorRange.Full="Полный" RestartMedia="Перезапустить медиа" +SpeedPercentage="Скорость (проценты)" Seekable="Перематываемый" MediaFileFilter.AllMediaFiles="Все медиа-файлы"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Delvis" ColorRange.Full="Full" RestartMedia="Starta om media" +SpeedPercentage="Hastighet (procent)" Seekable="Sökbar" MediaFileFilter.AllMediaFiles="Alla mediafiler"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-ffmpeg/data/locale/tl-PH.ini
Added
@@ -0,0 +1,51 @@ +FFmpegOutput="FFmpeg Panglabas" +FFmpegAAC="Ang hindi pagharap ng FFmpeg AAC Encoder" +FFmpegOpus="Ang FFmpeg Opus Encoder" +Bitrate="Bitreyt" +Preset="I-preset" +RateControl="Kontrolin ang Rate" +KeyframeIntervalSec="Ang Pagitan ng Keyframe (segundo, 0=awto)" +Lossless="Walang Pagkawala" + +BFrames="Ang mga B-frame" + +NVENC.Use2Pass="Gamitin ang Dalawang Pass ng Encoding" +NVENC.Preset.default="I-default" +NVENC.Preset.hq="Mataas na Kalidad" +NVENC.Preset.hp="Mataas na Pagganap" +NVENC.Preset.bd="Ang Bluray" +NVENC.Preset.ll="Mababang Pagkawalang kilos" +NVENC.Preset.llhq="Mababang-Pagkawalang kilos na Mataas ang Kalidad" +NVENC.Preset.llhp="Mababang-Pagkawalang kilos na Mataan ang Pagganap" +NVENC.Level="Antas" + +FFmpegSource="Pinagmulan ng Media" +LocalFile="Ang Lokal na File" +Looping="Silo" +Input="Pampasok" +InputFormat="Pampasok na Format" +BufferingMB="Ang Network Buffering (MB)" +HardwareDecode="Gamitin ang hardware sa pag-decode kapag itong magagamit na" +ClearOnMediaEnd="Itago ang pinagmulan kapag ang playback ay natapos" +Advanced="Nauuna" +RestartWhenActivated="I-restart ang playback kapag ang pinagmulan ay naging aktibo na" +CloseFileWhenInactive="Isarado ang file kapag hindi ito aktibo" +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." +ColorRange="Ang Saklaw ng Kulay na YUV" +ColorRange.Auto="Awto" +ColorRange.Partial="Bahagya" +ColorRange.Full="Puno" +RestartMedia="I-restart ang Media" +Seekable="Maayos" + +MediaFileFilter.AllMediaFiles="Lahat ng mga Media File" +MediaFileFilter.VideoFiles="Ang mga Video File" +MediaFileFilter.AudioFiles="Ang mga Audio File" +MediaFileFilter.AllFiles="Lahat ng mga File" + +ReplayBuffer="I-replay ang Buffer" +ReplayBuffer.Save="I-save ang Replay" + +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." +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." +
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Kısmi" ColorRange.Full="Tam" RestartMedia="Ortamı Yeniden Başlat" +SpeedPercentage="Hız (yüzde)" Seekable="Aranabilir" MediaFileFilter.AllMediaFiles="Tüm Medya Dosyaları"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Частковий" ColorRange.Full="Повний" RestartMedia="Перезапустити медіа" +SpeedPercentage="Швидкість (відсотків)" Seekable="HTTP з перемотуванням" MediaFileFilter.AllMediaFiles="Файли мультимедіа"
View file
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
@@ -30,12 +30,13 @@ Advanced="高级" RestartWhenActivated="当源变为活动状态时重新启动播放" CloseFileWhenInactive="非活跃状态时关闭文件" -CloseFileWhenInactive.ToolTip="当源没有显示在推流或者\n录像时关闭文件. 这使得在源不活跃状态时可以更改文件,\n但是当当源重新激活时, 可能有一些启动延迟." +CloseFileWhenInactive.ToolTip="当源没有显示在推流或者\n录像时关闭文件。这使得在源不活跃状态时可以更改文件,\n但是当当源重新激活时, 可能有一些启动延迟。" ColorRange="YUV 颜色范围" ColorRange.Auto="自动" ColorRange.Partial="局部" ColorRange.Full="全部" RestartMedia="重新启动媒体" +SpeedPercentage="速度(百分比)" Seekable="可搜索" MediaFileFilter.AllMediaFiles="所有媒体文件"
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="部分" ColorRange.Full="全部" RestartMedia="重新播放媒體" +SpeedPercentage="速度 (百分比)" Seekable="可查找" MediaFileFilter.AllMediaFiles="所有媒體檔案"
View file
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
@@ -20,6 +20,7 @@ #include <util/darray.h> #include <obs-module.h> +#include <libavutil/opt.h> #include <libavformat/avformat.h> #include "obs-ffmpeg-formats.h" @@ -229,17 +230,8 @@ enc->context->sample_rate = closest; } - /* if using FFmpeg's AAC encoder, at least set a cutoff value - * (recommended by konverter) */ if (strcmp(enc->codec->name, "aac") == 0) { - int cutoff1 = 4000 + (int)enc->context->bit_rate / 8; - int cutoff2 = 12000 + (int)enc->context->bit_rate / 8; - int cutoff3 = enc->context->sample_rate / 2; - int cutoff; - - cutoff = MIN(cutoff1, cutoff2); - cutoff = MIN(cutoff, cutoff3); - enc->context->cutoff = cutoff; + av_opt_set(enc->context->priv_data, "aac_coder", "fast", 0); } info("bitrate: %" PRId64 ", channels: %d, channel_layout: %x\n",
View file
obs-studio-21.1.2.tar.xz/plugins/obs-filters/data/locale/fil-PH.ini
Added
@@ -0,0 +1,77 @@ +ColorFilter="Pagtama ng Kulay" +ColorGradeFilter="Mag-aplay ng LUT" +MaskFilter="Imahe ng Maskara/Timpla" +AsyncDelayFilter="Naantalang bidyo (Async)" +CropFilter="I-Crop/Pad" +ScrollFilter="Mag-scroll" +ChromaKeyFilter="Susi ng Chroma" +ColorKeyFilter="Susi ng Kulay" +SharpnessFilter="I-Sharpen" +ScaleFilter="I-Scaling/Ratio ng Aspeto" +GPUDelayFilter="I-Render Delay" +UndistortCenter="Undistort center ng imahe kapang nag scaling mula sa ultrawide" +NoiseGate="Ang Noise Gate" +NoiseSuppress="Ang Noise Suppression" +Gain="Ang Gain" +DelayMs="I-Delay (millisegundos)" +Type="I-Type" +MaskBlendType.MaskColor="I-Alpha Mask (Kulang ng Channel)" +MaskBlendType.MaskAlpha="I-Alpha Mask (Alpha ng Channel)" +MaskBlendType.BlendMultiply="I-Blend (Paramihin)" +MaskBlendType.BlendAddition="I-Blend (Dagdagan)" +MaskBlendType.BlendSubtraction="I-Blend (Bawasan)" +Path="Ang Landas" +Color="Kulay" +Opacity="Kalabuan" +Contrast="Kaibahan" +Brightness="Kaliwanagan" +Gamma="Ang Gamma" +BrowsePath.Images="Lahat ng Image Files" +BrowsePath.AllFiles="Lahat ng Files" +KeyColorType="Susi ng Color Type" +KeyColor="Susi ng Kulay" +Similarity="Ang pagkapareho (1-1000)" +Smoothness="Ang pagkakinis (1-1000)" +ColorSpillReduction="Ang pagbawas ng Key Color Spill (1-1000)" +Crop.Left="Kaliwa" +Crop.Right="Kanan" +Crop.Top="Itaas" +Crop.Bottom="Ibaba" +Crop.Width="Ang Lapad" +Crop.Height="Ang Taas" +Crop.Relative="Ang Relative" +ScrollFilter.SpeedX="Ang Horizontal Speed" +ScrollFilter.SpeedY="Ang Vertical Speed" +ScrollFilter.LimitWidth="Limitasyon ng Lapad" +ScrollFilter.LimitHeight="Limitasyon ng Taas" +CustomColor="Pagsadya ng kulay" +Red="Pula" +Green="Berde" +Blue="Asul" +Magenta="Magenta" +NoiseGate.OpenThreshold="Buksan ang Threshold (dB)" +NoiseGate.CloseThreshold="Isarado ang Threshold (dB)" +NoiseGate.AttackTime="Oras ng Pag-atake (milsegudo)" +NoiseGate.HoldTime="Paghawak ng Oras (milsegudo)" +NoiseGate.ReleaseTime="Paglabas ng Oras (milsegudo)" +Gain.GainDB="Makakuha (dB)" +StretchImage="Mag-stretch ng Imahe (itapon ang imahe ng anyong panumbasan)" +Resolution="Resolusyon" +None="Wala" +ScaleFiltering="Iskala ng Pagsasala" +ScaleFiltering.Point="Punto" +ScaleFiltering.Bilinear="Bilinir" +ScaleFiltering.Bicubic="Bikyubik" +ScaleFiltering.Lanczos="Lankzos" +NoiseSuppress.SuppressLevel="Antas ng Pagpigil (dB)" +Saturation="Pagbababad" +HueShift="Kulay ng pagririlyebo" +Amount="Halaga" +Compressor="Kompresor" +Compressor.Ratio="Tumbasan (X:1)" +Compressor.Threshold="Threshold (dB)" +Compressor.AttackTime="Atake (ms)" +Compressor.ReleaseTime="Paglabas (ms)" +Compressor.OutputGain="Makakuha ng Awput (dB)" +Compressor.SidechainSource="Saydcheyn/Pinagmulan ng Daking" +
View file
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
@@ -2,12 +2,12 @@ ColorGradeFilter="Применить LUT" MaskFilter="Маска изображения/Смешивание" AsyncDelayFilter="Задержка видео (асинхронность)" -CropFilter="Кадрировать" +CropFilter="Кадрирование" ScrollFilter="Прокрутка" ChromaKeyFilter="Хромакей" ColorKeyFilter="Цветовой ключ" SharpnessFilter="Увеличить резкость" -ScaleFilter="Коэффициент Масштабирования/Аспект" +ScaleFilter="Масштабирование/Соотношение сторон" GPUDelayFilter="Задержка отображения" UndistortCenter="Не искривлять центр изображения при масштабировании Ultrawide разрешения" NoiseGate="Пропускной уровень шума" @@ -58,10 +58,10 @@ StretchImage="Растянуть изображение (игнорировать пропорции изображения)" Resolution="Разрешение" None="Нет" -ScaleFiltering="Масштаб Фильтрации" -ScaleFiltering.Point="Точечная" -ScaleFiltering.Bilinear="Билинейная" -ScaleFiltering.Bicubic="Бикубическая" +ScaleFiltering="Фильтр масштабирования" +ScaleFiltering.Point="Точечный" +ScaleFiltering.Bilinear="Билинейный" +ScaleFiltering.Bicubic="Бикубический" ScaleFiltering.Lanczos="Метод Ланцоша" NoiseSuppress.SuppressLevel="Уровень подавления (дБ)" Saturation="Насыщенность"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-filters/data/locale/tl-PH.ini
Added
@@ -0,0 +1,77 @@ +ColorFilter="Koreksyon ng mga Kulay" +ColorGradeFilter="I-apply ang LUT" +MaskFilter="Imahe ng Mask/Blend" +AsyncDelayFilter="I-delay ang Video (Async)" +CropFilter="I-crop/Pad" +ScrollFilter="I-scroll" +ChromaKeyFilter="Ang Chroma Key" +ColorKeyFilter="Kulay ng mga Key" +SharpnessFilter="Patalasan pa" +ScaleFilter="Scaling/Aspect Ratio" +GPUDelayFilter="Mad-render ng Delay" +UndistortCenter="Ang sentro ay i-undistort kapag ang scaling ay mula sa ultrawide" +NoiseGate="Noise Gate" +NoiseSuppress="Pagtimpiin ang tunog" +Gain="Napunan" +DelayMs="I-delay (millisegundos)" +Type="Tipo" +MaskBlendType.MaskColor="Alpha Mask (Kulay ng Channel)" +MaskBlendType.MaskAlpha="Alpha Mask (Alpha Channel)" +MaskBlendType.BlendMultiply="I-blend (pagpaparami)" +MaskBlendType.BlendAddition="I-blend (pagsamahin)" +MaskBlendType.BlendSubtraction="I-blend (paghiwalayin)" +Path="Daanan" +Color="Kulay" +Opacity="Opacity" +Contrast="Kaibahan" +Brightness="Gaano kaliwanag" +Gamma="Gamma" +BrowsePath.Images="Lahat ng mga Imahen sa File" +BrowsePath.AllFiles="Lahat ng mga Files" +KeyColorType="Tipo ng Kulay sa Key" +KeyColor="Kulay ng Key" +Similarity="Kapareho (1-1000)" +Smoothness="Kakinisan (1-1000)" +ColorSpillReduction="Kulay ng Key sa Spill Reduction (1-1000)" +Crop.Left="Kaliwa" +Crop.Right="Kanan" +Crop.Top="Itaas" +Crop.Bottom="Ibaba" +Crop.Width="Lapad" +Crop.Height="Taas" +Crop.Relative="Kaugnayan" +ScrollFilter.SpeedX="Pahigang Bilis" +ScrollFilter.SpeedY="Patayong Bilis" +ScrollFilter.LimitWidth="Limitasyon ng Lapad" +ScrollFilter.LimitHeight="Limitasyon sa Haba" +CustomColor="Custom na Kulay" +Red="Pula" +Green="Kulay Luntian" +Blue="Bughaw" +Magenta="Magenta" +NoiseGate.OpenThreshold="I-open ang Threshold (dB)" +NoiseGate.CloseThreshold="Isarado ang Threshold (dB)" +NoiseGate.AttackTime="Atakihin ang Oras (millisegundo)" +NoiseGate.HoldTime="Pigilin ang Oras (millisegundo)" +NoiseGate.ReleaseTime="Pakawalan ang Oras (millisegundo)" +Gain.GainDB="Napunan (dB)" +StretchImage="I-stretch ang Imahe (baliwalain ang imahe mula sa aspect ratio)" +Resolution="Resulosyon" +None="Wala" +ScaleFiltering="I-filter ang Scale" +ScaleFiltering.Point="Tuldok" +ScaleFiltering.Bilinear="Bilinear" +ScaleFiltering.Bicubic="Bicubic" +ScaleFiltering.Lanczos="Lanczos" +NoiseSuppress.SuppressLevel="Lebel ng Suppression (dB)" +Saturation="Saturation" +HueShift="Hue Shift" +Amount="Ang Halaga" +Compressor="Ang Comppressor" +Compressor.Ratio="Proporsyon (X:1)" +Compressor.Threshold="Threshold (dB)" +Compressor.AttackTime="Atake (ms)" +Compressor.ReleaseTime="Pakawalan (ms)" +Compressor.OutputGain="Ang nadagdag sa panlabas (dB)" +Compressor.SidechainSource="Pinagmulan ng Sidechain/Ducking" +
View file
obs-studio-21.1.2.tar.xz/plugins/obs-libfdk/data/locale/fil-PH.ini
Added
@@ -0,0 +1,4 @@ +LibFDK="libfdk AAC Enkoder" +Bitrate="Bitreyt" +Afterburner="Paganhin ang AAC Afterburner" +
View file
obs-studio-21.1.2.tar.xz/plugins/obs-libfdk/data/locale/tl-PH.ini
Added
@@ -0,0 +1,4 @@ +LibFDK="libfdk na AAC Encoder" +Bitrate="Ang Bitrate" +Afterburner="Paganahin ang AAC Afterburner" +
View file
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
@@ -22,6 +22,8 @@ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/CMakeLists.txt") find_package(Libcurl REQUIRED) + add_definitions(-DFTL_STATIC_COMPILE) + include_directories(${LIBCURL_INCLUDE_DIRS}) set(ftl_SOURCES
View file
obs-studio-21.1.2.tar.xz/plugins/obs-outputs/data/locale/fil-PH.ini
Added
@@ -0,0 +1,14 @@ +RTMPStream="Ang RTMP Stream" +RTMPStream.DropThreshold="Ang Drop Treshold (millisegundos)" +FLVOutput="Ang FLV File Awput" +FLVOutput.FilePath="Ang Landas ng File" +Default="I-Default" + +ConnectionTimedOut="Ang koneskyong ay nag time out. Siguraduhin na nakaayos at balido ang streaming service at walang firewall na nakaharang sa koneksyon." +PermissionDenied="Ang koneksyon ay hinarang. Suriin ang firewall / anti-virus settings upang matiyak na tiyak na may buong access sa internet ang OBS." +ConnectionAborted="Ang koneksyon ay naudlot. Ito ay karaniwang nagpapahiwatig na may problema sa iyong internet koneksyon at sa streaming service." +ConnectionReset="Ang koneksyon ay na i-reset ng peer. Ito ay karaniwang nagpapahiwatig na may problema sa iyong internet koneksyon at sa streaming service." +HostNotFound="Hindi makita ang Hostname. Siguraduhin na nilagay mo ay balidong streaming server at ang iyong internet koneksyon / DNS ay gumagana ng mabuti." +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)." +AddressNotAvailable="Hindi magamit ang address. Ikaw ay gumamit at na i-bind ito sa di balidong IP address ( tingan ang Settings / Advanced)." +
View file
obs-studio-21.1.2.tar.xz/plugins/obs-outputs/data/locale/tl-PH.ini
Added
@@ -0,0 +1,14 @@ +RTMPStream="RTMP Stream" +RTMPStream.DropThreshold="Treshold ng pagbaba (millisegundos)" +FLVOutput="Ang kinalabasan ng FLV File" +FLVOutput.FilePath="Ang Daanan ng File" +Default="Ang Default" + +ConnectionTimedOut="Ang koneksyon ay nawala. Siguraduhing ikaw ay nag-configured ng isang balidong serbisyo ng streaming at walang firewall na nagpipigil sa koneksyon." +PermissionDenied="Ang koneksyon ay na-block. I-check ang iyong firewall / anti-virus na settings para masiguradong ang OBS ay pwedeng makapasok sa internet." +ConnectionAborted="Ang koneksyon ay nabigo. Ito ay kadalasang indikasyon na ang internet nakoneksyon ay may problema sa'yo o kay sa serbisyo ng streaming." +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." +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." +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)." +AddressNotAvailable="Ang address ay hindi pwede. Pwede kang sumubok na i-bind sa isang hindi balidong IP address (tingnan ang Setting / Advanced)." +
View file
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
@@ -3,64 +3,64 @@ project(libftl) option(DISABLE_AUTO_INGEST "Set to TRUE to disable auto ingest feature which removes curl and jansson dependancies" FALSE) +MESSAGE( STATUS "FTL DISABLE_AUTO_INGEST: " ${DISABLE_AUTO_INGEST}) find_package(Threads REQUIRED) set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) -FIND_PACKAGE(CURL) - if (DISABLE_AUTO_INGEST) -add_definitions(-DDISABLE_AUTO_INGEST) + add_definitions(-DDISABLE_AUTO_INGEST) endif() +# We will only try to include curl if we have auto ingest enabled. +if (NOT DISABLE_AUTO_INGEST) + FIND_PACKAGE(CURL) +endif() if (NOT CURL_FOUND AND NOT DISABLE_AUTO_INGEST) -SET(CURL_DISABLE_NTLM ON CACHE BOOL "Disabling NTLM") -SET(CURL_DISABLE_TELNET ON CACHE BOOL "Disabling Telnet") -SET(CURL_DISABLE_LDAP ON CACHE BOOL "Disabling Ldap") -SET(CURL_DISABLE_LDAPS ON CACHE BOOL "Disabling secure ldap") -SET(BUILD_CURL_EXE OFF CACHE BOOL "Building libcurl") -SET(HTTP_ONLY ON CACHE BOOL "using compiling HTTP") -SET(BUILD_TESTING OFF CACHE BOOL "Not building Tests") -add_subdirectory(libcurl) -SET(CURL_INCLUDE_DIRS libcurl/include ${CMAKE_CURRENT_BINARY_DIR}/libcurl/include/curl) -SET(CURL_LIBRARIES libcurl) + SET(CURL_DISABLE_NTLM ON CACHE BOOL "Disabling NTLM") + SET(CURL_DISABLE_TELNET ON CACHE BOOL "Disabling Telnet") + SET(CURL_DISABLE_LDAP ON CACHE BOOL "Disabling Ldap") + SET(CURL_DISABLE_LDAPS ON CACHE BOOL "Disabling secure ldap") + SET(BUILD_CURL_EXE OFF CACHE BOOL "Building libcurl") + SET(HTTP_ONLY ON CACHE BOOL "using compiling HTTP") + SET(BUILD_TESTING OFF CACHE BOOL "Not building Tests") + add_subdirectory(libcurl) + SET(CURL_INCLUDE_DIRS libcurl/include ${CMAKE_CURRENT_BINARY_DIR}/libcurl/include/curl) + SET(CURL_LIBRARIES libcurl) + include_directories(${CURL_INCLUDE_DIRS}) endif() -MESSAGE( STATUS "Curl include dir: " ${CURL_INCLUDE_DIRS}) -include_directories(${CURL_INCLUDE_DIRS}) +# We will only try to include lib jansson if auto ingest is enabled. +SET(JANSSON_LIBRARIES "") if (NOT DISABLE_AUTO_INGEST) -SET(JANSSON_BUILD_DOCS OFF CACHE BOOL "Jansson docs off") -SET(JANSSON_WITHOUT_TESTS ON CACHE BOOL "Jansson build without tests") -SET(JANSSON_EXAMPLES OFF CACHE BOOL "Jansson disable examples") -SET(USE_WINDOWS_CRYPTOAPI off) -add_subdirectory(libjansson) -include_directories(${CMAKE_CURRENT_BINARY_DIR}/libjansson/include) -SET(JANSSON_LIBRARIES jansson) + SET(JANSSON_BUILD_DOCS OFF CACHE BOOL "Jansson docs off") + SET(JANSSON_WITHOUT_TESTS ON CACHE BOOL "Jansson build without tests") + SET(JANSSON_EXAMPLES OFF CACHE BOOL "Jansson disable examples") + SET(USE_WINDOWS_CRYPTOAPI off) + add_subdirectory(libjansson) + include_directories(${CMAKE_CURRENT_BINARY_DIR}/libjansson/include) + SET(JANSSON_LIBRARIES jansson) endif() -include_directories(libftl libftl/gettimeofday) - - if (WIN32) - set(FTL_PLATFORM_FILES ftl_app/win32/xgetopt.c - ftl_app/win32/xgetopt.h - ftl_app/win32/ctrlc_handler.c) + set(FTL_PLATFORM_FILES ftl_app/win32/xgetopt.c + ftl_app/win32/xgetopt.h + ftl_app/win32/ctrlc_handler.c) #set(FTL_PLATFORM_LIBS kernel32 user32 gdi32 advapi32 ) #set(FTL_PLATFORM_LIBS ws2_32 ) set(FTLSDK_PLATFORM_FILES libftl/win32/socket.c - libftl/win32/socket.h - libftl/win32/threads.c - libftl/win32/threads.h) - + libftl/win32/socket.h + libftl/win32/threads.c + libftl/win32/threads.h) include_directories(libftl/win32) else() set(FTL_PLATFORM_FILES ftl_app/posix/ctrlc_handler.c) set(FTLSDK_PLATFORM_FILES libftl/posix/socket.c libftl/posix/socket.h - libftl/posix/threads.c - libftl/posix/threads.h) + libftl/posix/threads.c + libftl/posix/threads.h) include_directories(libftl/posix) endif() @@ -74,15 +74,18 @@ libftl/handshake.c libftl/ingest.c libftl/ftl_helpers.c - libftl/media.c + libftl/media.c libftl/logging.c libftl/ftl.h libftl/ftl_private.h ${FTLSDK_PLATFORM_FILES}) +include_directories(libftl libftl/gettimeofday) + set_target_properties(ftl PROPERTIES VERSION "0.5.0") set_target_properties(ftl PROPERTIES SOVERSION 0) target_link_libraries(ftl ${CURL_LIBRARIES} ${JANSSON_LIBRARIES}) + if(WIN32) target_link_libraries(ftl ws2_32) endif() @@ -93,24 +96,22 @@ ftl_app/file_parser.c ftl_app/file_parser.h ftl_app/gettimeofday.c - ftl_app/gettimeofday.h - ftl_app/bitstream.c - ftl_app/bitstream.h - ftl_app/cavlc.c - ftl_app/cavlc.h - ftl_app/decode.c - ftl_app/decode.h - ftl_app/nalu.c - ftl_app/nalu.h - ftl_app/utils.c - ftl_app/utils.h - ftl_app/dec_obj.h + ftl_app/gettimeofday.h + ftl_app/bitstream.c + ftl_app/bitstream.h + ftl_app/cavlc.c + ftl_app/cavlc.h + ftl_app/decode.c + ftl_app/decode.h + ftl_app/nalu.c + ftl_app/nalu.h + ftl_app/utils.c + ftl_app/utils.h + ftl_app/dec_obj.h ${FTL_PLATFORM_FILES}) target_link_libraries(ftl_app ftl ${CURL_LIBRARIES} ${JANSSON_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${FTL_PLATFORM_LIBS}) target_include_directories(ftl_app PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/ftl_app) # Install rules -install(TARGETS ftl DESTINATION lib) - - +install(TARGETS ftl DESTINATION lib) \ No newline at end of file
View file
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
@@ -12,15 +12,20 @@ char error_message[1000]; FTL_API const int FTL_VERSION_MAJOR = 0; FTL_API const int FTL_VERSION_MINOR = 9; -FTL_API const int FTL_VERSION_MAINTENANCE = 9; +FTL_API const int FTL_VERSION_MAINTENANCE = 13; // Initializes all sublibraries used by FTL FTL_API ftl_status_t ftl_init() { + struct timeval now; + init_sockets(); os_init(); #ifndef DISABLE_AUTO_INGEST curl_global_init(CURL_GLOBAL_ALL); #endif + + gettimeofday(&now, NULL); + srand((unsigned int)now.tv_sec); return FTL_SUCCESS; } @@ -42,7 +47,7 @@ os_init_mutex(&ftl->disconnect_mutex); os_init_mutex(&ftl->status_q.mutex); - if (os_semaphore_create(&ftl->status_q.sem, "/StatusQueue", O_CREAT, 0) < 0) { + if (os_semaphore_create(&ftl->status_q.sem, "/StatusQueue", O_CREAT, 0, FALSE) < 0) { ret_status = FTL_MALLOC_FAILURE; break; } @@ -82,7 +87,7 @@ ftl->video.height = 720; ftl->video.media_component.peak_kbps = params->peak_kbps; - ftl->ingest_hostname = _strdup(params->ingest_hostname); + ftl->param_ingest_hostname = _strdup(params->ingest_hostname); ftl->status_q.count = 0; ftl->status_q.head = NULL; @@ -118,14 +123,16 @@ return status; } while (0); - internal_ingest_disconnect(ftl); + if (os_trylock_mutex(&ftl->disconnect_mutex)) { + internal_ingest_disconnect(ftl); + os_unlock_mutex(&ftl->disconnect_mutex); + } return status; } FTL_API ftl_status_t ftl_ingest_get_status(ftl_handle_t *ftl_handle, ftl_status_msg_t *msg, int ms_timeout) { ftl_stream_configuration_private_t *ftl = (ftl_stream_configuration_private_t *)ftl_handle->priv; - ftl_status_t status = FTL_SUCCESS; if (ftl == NULL) { return FTL_NOT_INITIALIZED; @@ -141,12 +148,12 @@ ftl->video.media_component.peak_kbps = params->peak_kbps; if (params->ingest_hostname != NULL) { - if (ftl->ingest_hostname != NULL) { - free(ftl->ingest_hostname); - ftl->ingest_hostname = NULL; + if (ftl->param_ingest_hostname != NULL) { + free(ftl->param_ingest_hostname); + ftl->param_ingest_hostname = NULL; } - ftl->ingest_hostname = _strdup(params->ingest_hostname); + ftl->param_ingest_hostname = _strdup(params->ingest_hostname); } /* not going to update fps for the moment*/ @@ -201,7 +208,7 @@ 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) { ftl_stream_configuration_private_t *ftl = (ftl_stream_configuration_private_t *)ftl_handle->priv; - int64_t dts_increment_usec, dts_usec; + int64_t dts_increment_usec, dts_usec = 0; if (media_type == FTL_AUDIO_DATA) { dts_usec = ftl->audio.dts_usec; @@ -316,6 +323,10 @@ free(ftl->ingest_hostname); } + if (ftl->param_ingest_hostname != NULL) { + free(ftl->param_ingest_hostname); + } + free(ftl); } @@ -324,14 +335,13 @@ FTL_API ftl_status_t ftl_ingest_destroy(ftl_handle_t *ftl_handle){ ftl_stream_configuration_private_t *ftl = (ftl_stream_configuration_private_t *)ftl_handle->priv; - ftl_status_t status = FTL_SUCCESS; ftl_handle->priv = NULL; return internal_ftl_ingest_destroy(ftl); } -char* ftl_status_code_to_string(ftl_status_t status) { +FTL_API char* ftl_status_code_to_string(ftl_status_t status) { switch (status) { case FTL_SUCCESS: @@ -406,8 +416,7 @@ } BOOL _get_chan_id_and_key(const char *stream_key, uint32_t *chan_id, char *key) { - size_t len; - int i; + size_t len, i = 0; len = strlen(stream_key); for (i = 0; i != len; i++) {
View file
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
@@ -28,10 +28,14 @@ #include <stdint.h> #ifdef _WIN32 -# ifdef __FTL_INTERNAL -# define FTL_API __declspec(dllexport) +# ifdef FTL_STATIC_COMPILE +# define FTL_API # else -# define FTL_API __declspec(dllimport) +# ifdef __FTL_INTERNAL +# define FTL_API __declspec(dllexport) +# else +# define FTL_API __declspec(dllimport) +# endif # endif #else # define FTL_API @@ -174,7 +178,8 @@ FTL_STATUS_VIDEO, FTL_STATUS_AUDIO, FTL_STATUS_FRAMES_DROPPED, - FTL_STATUS_NETWORK + FTL_STATUS_NETWORK, + FTL_BITRATE_CHANGED } ftl_status_types_t; typedef enum { @@ -233,16 +238,47 @@ int max_frame_size; }ftl_video_frame_stats_msg_t; +typedef enum +{ + FTL_BITRATE_DECREASED, + FTL_BITRATE_INCREASED, + FTL_BITRATE_STABILIZED +}ftl_bitrate_changed_type_t; + +typedef enum +{ + FTL_BANDWIDTH_CONSTRAINED, + FTL_UPGRADE_EXCESSIVE, + FTL_BANDWIDTH_AVAILABLE, + FTL_STABILIZE_ON_LOWER_BITRATE, + FTL_STABILIZE_ON_ORIGINAL_BITRATE, +} ftl_bitrate_changed_reason_t; + +typedef struct +{ + ftl_bitrate_changed_type_t bitrate_changed_type; + ftl_bitrate_changed_reason_t bitrate_changed_reason; + uint64_t current_encoding_bitrate; + uint64_t previous_encoding_bitrate; + float nacks_to_frames_ratio; + float avg_rtt; + uint64_t avg_frames_dropped; + float queue_fullness; +} ftl_bitrate_changed_msg_t; + /*status messages*/ -typedef struct { - ftl_status_types_t type; - union { - ftl_status_log_msg_t log; - ftl_status_event_msg_t event; - ftl_packet_stats_msg_t pkt_stats; - ftl_packet_stats_instant_msg_t ipkt_stats; - ftl_video_frame_stats_msg_t video_stats; - } msg; +typedef struct +{ + ftl_status_types_t type; + union + { + ftl_status_log_msg_t log; + ftl_status_event_msg_t event; + ftl_packet_stats_msg_t pkt_stats; + ftl_packet_stats_instant_msg_t ipkt_stats; + ftl_video_frame_stats_msg_t video_stats; + ftl_bitrate_changed_msg_t bitrate_changed_msg; + } msg; }ftl_status_msg_t; /*! @@ -285,8 +321,16 @@ FTL_API char* ftl_status_code_to_string(ftl_status_t status); -FTL_API ftl_status_t find_closest_available_ingest(const char* ingestIps[], int ingestsCount, char* bestIngestIpComputed); +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); + +FTL_API ftl_status_t ftl_adaptive_bitrate_thread( + ftl_handle_t* ftl_handle, + void* context, + int(*change_bitrate_callback)(void*, uint64_t), + uint64_t initial_encoding_bitrate, + uint64_t min_encoding_bitrate, + uint64_t max_encoding_bitrate +); -FTL_API ftl_status_t ftl_get_video_stats(ftl_handle_t* handle, uint64_t* frames_sent, uint64_t* nacks_received); #endif // __FTL_H
View file
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
@@ -261,34 +261,39 @@ return retval; } -ftl_status_t _set_ingest_ip(ftl_stream_configuration_private_t *ftl) { - char *ingest_ip = NULL; +ftl_status_t _set_ingest_hostname(ftl_stream_configuration_private_t *ftl) { + ftl_status_t ret_status = FTL_SUCCESS; do { - if (!isdigit(ftl->ingest_hostname[0])) { #ifndef DISABLE_AUTO_INGEST - if (strcmp(ftl->ingest_hostname, "auto") == 0) { - ingest_ip = ingest_find_best(ftl); + if (strcmp(ftl->param_ingest_hostname, "auto") == 0) { + ftl->ingest_hostname = ingest_find_best(ftl); } else #endif - { - ingest_ip = ingest_get_ip(ftl, ftl->ingest_hostname); - } + ftl->ingest_hostname = _strdup(ftl->param_ingest_hostname); + } while (0); - if (ingest_ip == NULL) { - ret_status = FTL_DNS_FAILURE; - break; - } - } - else { - ingest_ip = _strdup(ftl->ingest_hostname); + return ret_status; +} + +int _get_remote_ip(struct sockaddr *addr, size_t addrlen, char *remote_ip, size_t ip_len) { + if (addr->sa_family == AF_INET) + { + struct sockaddr_in *ipv4_addr = (struct sockaddr_in *)addr; + + if (inet_ntop(AF_INET, &ipv4_addr->sin_addr.s_addr, remote_ip, ip_len) == NULL) { + return -1; } + } + else if (addr->sa_family == AF_INET6) { + struct sockaddr_in6 *ipv6_addr = (struct sockaddr_in6 *)addr; - strcpy_s(ftl->ingest_ip, sizeof(ftl->ingest_ip), ingest_ip); - free(ingest_ip); - } while (0); + if (inet_ntop(AF_INET6, &ipv6_addr->sin6_addr.s6_addr, remote_ip, ip_len) == NULL) { + return -1; + } + } - return ret_status; + return 0; }
View file
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
@@ -58,6 +58,8 @@ #define SOCKET_RECV_TIMEOUT_MS 5000 #define SOCKET_SEND_TIMEOUT_MS 1000 #define KEEPALIVE_FREQUENCY_MS 5000 +#define KEEPALIVE_SEND_WARN_TOLERANCE_MS 1000 +#define STATUS_THREAD_SLEEP_TIME_MS 500 #define MAX_PACKET_BUFFER 1500 //Max length of buffer #define MAX_MTU 1392 #define FTL_UDP_MEDIA_PORT 8082 //legacy port @@ -71,16 +73,58 @@ #define VIDEO_RTP_TS_CLOCK_HZ 90000 #define AUDIO_SAMPLE_RATE 48000 #define AUDIO_PACKET_DURATION_MS 20 -#define IPV4_ADDR_ASCII_LEN INET_ADDRSTRLEN +#define IPVX_ADDR_ASCII_LEN INET6_ADDRSTRLEN #define INGEST_LIST_URI "https://mixer.com/api/v1/ingests/best" #define INGEST_LOAD_PORT 8079 #define INGEST_PING_PORT 8079 #define PEAK_BITRATE_KBPS 10000 /*if not supplied this is the peak from the perspective of the send buffer*/ #define PING_TX_INTERVAL_MS 25 -#define SENDER_REPORT_TX_INTERVAL_MS 5000 +#define SENDER_REPORT_TX_INTERVAL_MS 1000 #define PING_PTYPE 250 #define SENDER_REPORT_PTYPE 200 + // Adaptive bitrate constants + + // If the ratio of nacks received to packets sent is greater than the following value, we request a bitrate downgrade. +#define MIN_NACKS_RECEIVED_TO_PACKETS_SENT_RATIO_FOR_BITRATE_DOWNGRADE 0.1 + + // Duration at which we capture stream stats , i.e frames sent and nacks received +#define STREAM_STATS_CAPTURE_MS 1000 + + // Duration over which we evaluate whether we need to downgrade/upgrade bitrate. Note that we + // look at stats over the last c_ulBwCheckDurationMs milliseconds, every c_ulStreamStatsCaptureMs milliseconds. +#define BW_CHECK_DURATION_MS 5000 + + // Interval to wait for bw test after we update bitrate. +#define BITRATE_CHANGED_COOLDOWN_INTERVAL_MS 10000 + + // Percentage to reduce the bitrate to if bandwidth seems too constrained +#define BW_INSUFFICIENT_BITRATE_DOWNGRADE_PERCENTAGE 50 + + // Percentange to reduce the bitrate to if bw upgrade was too excessive +#define REVERT_TO_STABLE_BITRATE_DOWNGRADE_PERCENTAGE 80 + + // Percentage to increase bitrate by if conditions look ideal +#define BW_IDEAL_BITRATE_UPGRADE_BPS 256000; + + // If ratio of nacks received to packets sent is below the following value bitrate update can be requested +#define MAX_NACKS_RECEIVED_TO_PACKETS_SENT_RATIO_FORBITRATE_UPGRADE 0.01 + + // If bandwidth is constrained within MaxBitrateUpgradeExcessiveSeconds after bitrate update, revert to last stable bitrate. +#define MAX_MS_TO_DEEM_UPGRADE_EXCESSIVE 60000 + +#define MAX_AVG_RTT_TO_DEEM_BW_STABLE 100 + +#define MAX_QUEUE_FULLNESS_TO_DEEM_BW_STABLE 0.1 + +#define MIN_QUEUE_FULLNESS_TO_DEEM_BW_CONSTRAINED 0.3 + +#define MIN_AVG_RTT_TO_DEEM_BW_CONSTRAINED 300 + // If bitrate upgrade was excessive we freeze bitrate upgrade for the next c_bitrateUpgradeFreezeTimeMs milliseconds. +#define BITRATE_UPGRADE_FREEZE_TIME_MS 600000 // 10*60*1000 + +#define MAX_STAT_SIZE 5 + #ifndef _WIN32 #define strncpy_s(dst, dstsz, src, cnt) strncpy(dst, src, cnt) #define sprintf_s(buf, bufsz, fmt, ...) sprintf(buf, fmt, __VA_ARGS__) @@ -110,6 +154,7 @@ FTL_TX_THRD = 0x0080, FTL_DISABLE_TX_PING_PKTS = 0x0100, FTL_SPEED_TEST = 0x0200, + FTL_BITRATE_THRD = 0x0400, FTL_DISCONNECT_IN_PROGRESS = 0x1000, FTL_DISABLE_TX_SENDER_REPORT = 0x2000 }ftl_state_t; @@ -151,6 +196,7 @@ int first;/*first packet in frame*/ int last; /*last packet in frame*/ OS_MUTEX mutex; + BOOL isPartOfIframe; }nack_slot_t; typedef struct _ping_pkt_t { @@ -159,13 +205,13 @@ }ping_pkt_t; typedef struct _senderReport_pkt_t { - uint32_t header; - uint32_t ssrc; - uint32_t ntpTimestampHigh; - uint32_t ntpTimestampLow; - uint32_t rtpTimestamp; - uint32_t senderPacketCount; - uint32_t senderOctetCount; + uint32_t header; + uint32_t ssrc; + uint32_t ntpTimestampHigh; + uint32_t ntpTimestampLow; + uint32_t rtpTimestamp; + uint32_t senderPacketCount; + uint32_t senderOctetCount; }senderReport_pkt_t; typedef struct { @@ -244,7 +290,8 @@ } ftl_video_component_t; typedef struct { - struct sockaddr_in server_addr; + size_t ingest_addrlen; + struct sockaddr *ingest_addr; SOCKET media_socket; OS_MUTEX mutex; int assigned_port; @@ -260,19 +307,32 @@ } ftl_media_config_t; typedef struct _ftl_ingest_t { - char name[30]; - char ip[IPV4_ADDR_ASCII_LEN]; + char *name; + char *ip; + char *hostname; int rtt; struct _ftl_ingest_t *next; }ftl_ingest_t; +typedef struct +{ + ftl_handle_t* handle; + BOOL(*change_bitrate_callback)(void*, uint64_t); + void* context; + uint64_t initial_encoding_bitrate; + uint64_t max_encoding_bitrate; + uint64_t min_encoding_bitrate; +} ftl_adaptive_bitrate_thread_params_t; + typedef struct { SOCKET ingest_socket; ftl_state_t state; OS_MUTEX state_mutex; OS_MUTEX disconnect_mutex; + char *param_ingest_hostname; char *ingest_hostname; - char ingest_ip[IPV4_ADDR_ASCII_LEN];//ipv4 only + char *ingest_ip; + short socket_family; uint32_t channel_id; char *key; char hmacBuffer[512]; @@ -281,8 +341,10 @@ char vendor_version[20]; OS_THREAD_HANDLE connection_thread; OS_THREAD_HANDLE keepalive_thread; + OS_THREAD_HANDLE bitrate_monitor_thread; OS_SEMAPHORE connection_thread_shutdown; OS_SEMAPHORE keepalive_thread_shutdown; + OS_SEMAPHORE bitrate_thread_shutdown; ftl_media_config_t media; ftl_audio_component_t audio; ftl_video_component_t video; @@ -361,13 +423,13 @@ BOOL is_legacy_ingest(ftl_stream_configuration_private_t *ftl); ftl_status_t dequeue_status_msg(ftl_stream_configuration_private_t *ftl, ftl_status_msg_t *stats_msg, int ms_timeout); ftl_status_t enqueue_status_msg(ftl_stream_configuration_private_t *ftl, ftl_status_msg_t *stats_msg); -ftl_status_t _set_ingest_ip(ftl_stream_configuration_private_t *ftl); +ftl_status_t _set_ingest_hostname(ftl_stream_configuration_private_t *ftl); +int _get_remote_ip(struct sockaddr *addr, size_t addrlen, char *remote_ip, size_t ip_len); ftl_status_t _init_control_connection(ftl_stream_configuration_private_t *ftl); ftl_status_t _ingest_connect(ftl_stream_configuration_private_t *stream_config); ftl_status_t _ingest_disconnect(ftl_stream_configuration_private_t *stream_config); char * ingest_find_best(ftl_stream_configuration_private_t *ftl); -char * ingest_get_ip(ftl_stream_configuration_private_t *ftl, char *host); void ingest_release(ftl_stream_configuration_private_t *ftl); ftl_status_t media_init(ftl_stream_configuration_private_t *ftl);
View file
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
@@ -26,6 +26,7 @@ * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. */ +#include <stddef.h> #include "gettimeofday.h" #define NSEC_IN_SEC 1000000000 @@ -98,10 +99,10 @@ differenceUs = timeval_subtract_to_us(end, start); // Get the number of seconds - result->tv_sec = USEC_TO_SEC(differenceUs); + result->tv_sec = (long)USEC_TO_SEC(differenceUs); // Put the remainder NS into the second value. - result->tv_usec = differenceUs - SEC_TO_USEC(result->tv_sec); + result->tv_usec = (long)(differenceUs - SEC_TO_USEC(result->tv_sec)); /* Return 1 if result is negative. */ return differenceUs < 0; @@ -161,13 +162,20 @@ uint64_t timeval_to_ntp(struct timeval * tv) { uint64_t ntpts; - ntpts = (((uint64_t)tv->tv_sec + 2208988800u) << 32) + ((uint32_t)tv->tv_usec * 4294.967296); + ntpts = (uint64_t)((((uint64_t)tv->tv_sec + 2208988800u) << 32) + ((uint32_t)tv->tv_usec * 4294.967296)); return (ntpts); } void us_to_timeval(struct timeval *outputTimeVal, const int64_t inputTimeUs) { - outputTimeVal->tv_sec = USEC_TO_SEC(inputTimeUs); - outputTimeVal->tv_usec = inputTimeUs - SEC_TO_USEC(outputTimeVal->tv_sec); -} \ No newline at end of file + outputTimeVal->tv_sec = (long)USEC_TO_SEC(inputTimeUs); + outputTimeVal->tv_usec = (long)(inputTimeUs - SEC_TO_USEC(outputTimeVal->tv_sec)); +} + +int64_t get_ms_elapsed_since(struct timeval *tv) +{ + struct timeval now; + gettimeofday(&now, NULL); + return timeval_subtract_to_ms(&now, tv); +}
View file
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
@@ -20,5 +20,6 @@ uint64_t timeval_to_us(struct timeval *tv); uint64_t timeval_to_ntp(struct timeval *tv); void us_to_timeval(struct timeval *outputTimeVal, const int64_t inputTimeUs); +int64_t get_ms_elapsed_since(struct timeval *tv); #endif // __GETTIMEOFDAY_H
View file
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
@@ -35,8 +35,6 @@ ftl_status_t _log_response(ftl_stream_configuration_private_t *ftl, int response_code); ftl_status_t _init_control_connection(ftl_stream_configuration_private_t *ftl) { - ftl_response_code_t response_code = FTL_INGEST_RESP_UNKNOWN; - int err = 0; SOCKET sock = 0; struct addrinfo hints; @@ -47,6 +45,8 @@ hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = 0; + char ingest_ip[IPVX_ADDR_ASCII_LEN]; + struct addrinfo* resolved_names = 0; struct addrinfo* p = 0; @@ -59,13 +59,13 @@ snprintf(ingest_port_str, 10, "%d", ingest_port); - if ((retval = _set_ingest_ip(ftl)) != FTL_SUCCESS) { + if ((retval = _set_ingest_hostname(ftl)) != FTL_SUCCESS) { return retval; } - - err = getaddrinfo(ftl->ingest_ip, ingest_port_str, &hints, &resolved_names); + + err = getaddrinfo(ftl->ingest_hostname, ingest_port_str, &hints, &resolved_names); if (err != 0) { - FTL_LOG(ftl, FTL_LOG_ERROR, "getaddrinfo failed to look up ingest address %s.", ftl->ingest_ip); + FTL_LOG(ftl, FTL_LOG_ERROR, "getaddrinfo failed to look up ingest address %s.", ftl->ingest_hostname); FTL_LOG(ftl, FTL_LOG_ERROR, "gai error was: %s", gai_strerror(err)); return FTL_DNS_FAILURE; } @@ -79,6 +79,22 @@ continue; } + if (p->ai_family == AF_INET) { + struct sockaddr_in *ipv4_addr = (struct sockaddr_in *)p->ai_addr; + inet_ntop(p->ai_family, &ipv4_addr->sin_addr, ingest_ip, sizeof(ingest_ip)); + } + else if (p->ai_family == AF_INET6) { + struct sockaddr_in6 *ipv6_addr = (struct sockaddr_in6 *)p->ai_addr; + inet_ntop(p->ai_family, &ipv6_addr->sin6_addr, ingest_ip, sizeof(ingest_ip)); + } + else { + continue; + } + + FTL_LOG(ftl, FTL_LOG_DEBUG, "Got IP: %s\n", ingest_ip); + ftl->ingest_ip = _strdup(ingest_ip); + ftl->socket_family = p->ai_family; + /* Go for broke */ if (connect(sock, p->ai_addr, (int)p->ai_addrlen) == -1) { FTL_LOG(ftl, FTL_LOG_DEBUG, "failed to connect on candidate, error: %s", get_socket_error()); @@ -120,8 +136,6 @@ ftl_status_t _ingest_connect(ftl_stream_configuration_private_t *ftl) { ftl_response_code_t response_code = FTL_INGEST_RESP_UNKNOWN; - - int err = 0; char response[MAX_INGEST_COMMAND_LEN]; if (ftl_get_state(ftl, FTL_CONNECTED)) { @@ -213,12 +227,12 @@ ftl_set_state(ftl, FTL_CONNECTED); - if (os_semaphore_create(&ftl->connection_thread_shutdown, "/ConnectionThreadShutdown", O_CREAT, 0) < 0) { + if (os_semaphore_create(&ftl->connection_thread_shutdown, "/ConnectionThreadShutdown", O_CREAT, 0, FALSE) < 0) { response_code = FTL_MALLOC_FAILURE; break; } - if (os_semaphore_create(&ftl->keepalive_thread_shutdown, "/KeepAliveThreadShutdown", O_CREAT, 0) < 0) { + if (os_semaphore_create(&ftl->keepalive_thread_shutdown, "/KeepAliveThreadShutdown", O_CREAT, 0, FALSE) < 0) { response_code = FTL_MALLOC_FAILURE; break; } @@ -249,46 +263,54 @@ ftl_status_t _ingest_disconnect(ftl_stream_configuration_private_t *ftl) { - ftl_response_code_t response_code = FTL_INGEST_RESP_UNKNOWN; - char response[MAX_INGEST_COMMAND_LEN]; + ftl_response_code_t response_code = FTL_INGEST_RESP_UNKNOWN; + char response[MAX_INGEST_COMMAND_LEN]; - if (ftl_get_state(ftl, FTL_KEEPALIVE_THRD)) { - ftl_clear_state(ftl, FTL_KEEPALIVE_THRD); - os_semaphore_post(&ftl->keepalive_thread_shutdown); - os_wait_thread(ftl->keepalive_thread); - os_destroy_thread(ftl->keepalive_thread); - os_semaphore_delete(&ftl->keepalive_thread_shutdown); - } + if (ftl_get_state(ftl, FTL_KEEPALIVE_THRD)) { + ftl_clear_state(ftl, FTL_KEEPALIVE_THRD); + os_semaphore_post(&ftl->keepalive_thread_shutdown); + os_wait_thread(ftl->keepalive_thread); + os_destroy_thread(ftl->keepalive_thread); + os_semaphore_delete(&ftl->keepalive_thread_shutdown); + } - if (ftl_get_state(ftl, FTL_CXN_STATUS_THRD)) { - ftl_clear_state(ftl, FTL_CXN_STATUS_THRD); - os_semaphore_post(&ftl->connection_thread_shutdown); - os_wait_thread(ftl->connection_thread); - os_destroy_thread(ftl->connection_thread); - os_semaphore_delete(&ftl->connection_thread_shutdown); - } + if (ftl_get_state(ftl, FTL_CXN_STATUS_THRD)) { + ftl_clear_state(ftl, FTL_CXN_STATUS_THRD); + os_semaphore_post(&ftl->connection_thread_shutdown); + os_wait_thread(ftl->connection_thread); + os_destroy_thread(ftl->connection_thread); + os_semaphore_delete(&ftl->connection_thread_shutdown); + } - if (ftl_get_state(ftl, FTL_CONNECTED)) { + if (ftl_get_state(ftl, FTL_BITRATE_THRD)) + { + ftl_clear_state(ftl, FTL_BITRATE_THRD); + os_semaphore_post(&ftl->bitrate_thread_shutdown); + os_wait_thread(ftl->bitrate_monitor_thread); + os_destroy_thread(ftl->bitrate_monitor_thread); + os_semaphore_delete(&ftl->bitrate_thread_shutdown); + } - ftl_clear_state(ftl, FTL_CONNECTED); + if (ftl_get_state(ftl, FTL_CONNECTED)) { - FTL_LOG(ftl, FTL_LOG_INFO, "light-saber disconnect\n"); - if ((response_code = _ftl_send_command(ftl, FALSE, response, sizeof(response), "DISCONNECT", ftl->channel_id)) != FTL_INGEST_RESP_OK) { - FTL_LOG(ftl, FTL_LOG_ERROR, "Ingest Disconnect failed with %d (%s)\n", response_code, response); + ftl_clear_state(ftl, FTL_CONNECTED); + + FTL_LOG(ftl, FTL_LOG_INFO, "light-saber disconnect\n"); + if ((response_code = _ftl_send_command(ftl, FALSE, response, sizeof(response), "DISCONNECT", ftl->channel_id)) != FTL_INGEST_RESP_OK) { + FTL_LOG(ftl, FTL_LOG_ERROR, "Ingest Disconnect failed with %d (%s)\n", response_code, response); + } } - } - if (ftl->ingest_socket > 0) { - close_socket(ftl->ingest_socket); - ftl->ingest_socket = 0; - } - - return FTL_SUCCESS; + if (ftl->ingest_socket > 0) { + close_socket(ftl->ingest_socket); + ftl->ingest_socket = 0; + } + + return FTL_SUCCESS; } static ftl_response_code_t _ftl_get_response(ftl_stream_configuration_private_t *ftl, char *response_buf, int response_len){ int len; - int resp_code = FTL_INGEST_RESP_OK; memset(response_buf, 0, response_len); len = recv_all(ftl->ingest_socket, response_buf, response_len, '\n'); @@ -322,7 +344,6 @@ 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, ...) { int resp_code = FTL_INGEST_RESP_OK; va_list valist; - double sum = 0.0; char *buf = NULL; int len; int buflen = MAX_INGEST_COMMAND_LEN * sizeof(char); @@ -376,6 +397,10 @@ { ftl_stream_configuration_private_t *ftl = (ftl_stream_configuration_private_t *)data; ftl_response_code_t response_code; + struct timeval last_send_time, now; + int64_t ms_since_send = 0; + + gettimeofday(&last_send_time, NULL); while (ftl_get_state(ftl, FTL_KEEPALIVE_THRD)) { os_semaphore_pend(&ftl->keepalive_thread_shutdown, KEEPALIVE_FREQUENCY_MS); @@ -385,6 +410,16 @@ break; } + // Check how long it has been since we sent a ping last. + gettimeofday(&now, NULL); + ms_since_send = timeval_subtract_to_ms(&now, &last_send_time); + if (ms_since_send > KEEPALIVE_FREQUENCY_MS + KEEPALIVE_SEND_WARN_TOLERANCE_MS) + { + FTL_LOG(ftl, FTL_LOG_INFO, "Warning, ping time tolerance warning. Time since last ping %d ms", ms_since_send); + } + gettimeofday(&last_send_time, NULL); + + // Send the ping to ingest now.
View file
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
@@ -17,7 +17,7 @@ const char * key; if (keyLen > SHA512_BLOCK_SIZE) { Sha512Initialise(&ctx); - Sha512Update(&ctx, (void*)rawKey, keyLen); + Sha512Update(&ctx, (void*)rawKey, (uint32_t)keyLen); Sha512Finalise(&ctx, &computedHash); key = (const char *)computedHash.bytes; @@ -32,7 +32,7 @@ memset(oKeyPad, O_KEY_PAD, SHA512_BLOCK_SIZE); memset(iKeyPad, I_KEY_PAD, SHA512_BLOCK_SIZE); - int i; + size_t i = 0; for(i = 0; i < keyLen; i++) { oKeyPad[i] ^= key[i]; iKeyPad[i] ^= key[i]; @@ -60,4 +60,4 @@ memset(computedHash.bytes, 0, sizeof(computedHash.bytes)); return SHA512_HEX_STRING_HASH_SIZE; -} \ No newline at end of file +}
View file
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
@@ -14,47 +14,63 @@ ftl_stream_configuration_private_t *ftl; }_tmp_ingest_thread_data_t; -static int _ping_server(const char *ip, int port) { +static int _ping_server(const char *hostname, int port) { SOCKET sock; - struct sockaddr_in server_addr; - unsigned char buf[sizeof(struct in_addr)]; - uint8_t dummy[4]; + struct addrinfo hints; + char dummy[4]; struct timeval start, stop, delta; int retval = -1; + struct addrinfo* resolved_names = 0; + struct addrinfo* p = 0; + int err = 0; + int off = 0; + + memset(&hints, 0, sizeof(hints)); + hints.ai_family = PF_UNSPEC; + hints.ai_socktype = SOCK_DGRAM; + hints.ai_protocol = 0; - do { - if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET) - { - break; - } + int ingest_port = INGEST_PORT; + char port_str[10]; - if (inet_pton(AF_INET, ip, buf) == 0) { - break; - } + snprintf(port_str, 10, "%d", port); + + err = getaddrinfo(hostname, port_str, &hints, &resolved_names); + if (err != 0) { + return FTL_DNS_FAILURE; + } + + do { + for (p = resolved_names; p != NULL; p = p->ai_next) { + sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol); + if (sock == -1) { + continue; + } - //Prepare the sockaddr_in structure - server_addr.sin_family = AF_INET; - memcpy((char *)&server_addr.sin_addr.s_addr, (char *)buf, sizeof(buf)); - server_addr.sin_port = htons(port); + setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&off, sizeof(off)); + set_socket_recv_timeout(sock, 500); - set_socket_recv_timeout(sock, 500); + gettimeofday(&start, NULL); - gettimeofday(&start, NULL); + if (sendto(sock, dummy, sizeof(dummy), 0, p->ai_addr, (int)p->ai_addrlen) == SOCKET_ERROR) { + printf("Sendto error: %s\n", get_socket_error()); + break; + } - if (sendto(sock, dummy, sizeof(dummy), 0, (struct sockaddr*) &server_addr, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - break; - } + if (recv(sock, dummy, sizeof(dummy), 0) < 0) { + break; + } - if (recv(sock, dummy, sizeof(dummy), 0) < 0) { - break; + gettimeofday(&stop, NULL); + timeval_subtract(&delta, &stop, &start); + retval = (int)timeval_to_ms(&delta); } - - gettimeofday(&stop, NULL); - timeval_subtract(&delta, &stop, &start); - retval = (int)timeval_to_ms(&delta); } while (0); + /* Free the resolved name struct */ + freeaddrinfo(resolved_names); + shutdown_socket(sock, SD_BOTH); close_socket(sock); @@ -69,92 +85,13 @@ ingest->rtt = 1000; - if ((ping = _ping_server(ingest->ip, INGEST_PING_PORT)) >= 0) { + if ((ping = _ping_server(ingest->hostname, INGEST_PING_PORT)) >= 0) { ingest->rtt = ping; } return 0; } -ftl_status_t find_closest_available_ingest(const char* ingestIps[], int ingestsCount, char* bestIngestIpComputed) -{ - ftl_ingest_t* ingestElements; - int i; - - if ((ingestElements = malloc(sizeof(ftl_ingest_t) * ingestsCount)) == NULL) { - return FTL_MALLOC_FAILURE; - } - - for (i =0; i < ingestsCount; i++) { - strcpy_s(ingestElements[i].ip, sizeof(ingestElements[i].ip), ingestIps[i]); - ingestElements[i].rtt = 1000; - ingestElements[i].next = NULL; - } - - OS_THREAD_HANDLE *handles; - _tmp_ingest_thread_data_t *data; - - ftl_ingest_t *elmt, *best = NULL; - struct timeval start, stop, delta; - - if ((handles = (OS_THREAD_HANDLE *)malloc(sizeof(OS_THREAD_HANDLE) * ingestsCount)) == NULL) { - free(ingestElements); - return FTL_MALLOC_FAILURE; - } - - if ((data = (_tmp_ingest_thread_data_t *)malloc(sizeof(_tmp_ingest_thread_data_t) * ingestsCount)) == NULL) { - free(ingestElements); - free(handles); - return FTL_MALLOC_FAILURE; - } - - gettimeofday(&start, NULL); - - /*query all the ingests about cpu and rtt*/ - for (i = 0; i < ingestsCount; i++) { - handles[i] = 0; - data[i].ingest = &ingestElements[i]; - data[i].ftl = NULL; - os_create_thread(&handles[i], NULL, _ingest_get_rtt, &data[i]); - sleep_ms(5); //space out the pings - } - - /*wait for all the ingests to complete*/ - for (i = 0; i < ingestsCount; i++) { - - if (handles[i] != 0) { - os_wait_thread(handles[i]); - } - - if (best == NULL || ingestElements[i].rtt < best->rtt) { - best = &ingestElements[i]; - } - } - - gettimeofday(&stop, NULL); - timeval_subtract(&delta, &stop, &start); - int ms = (int)timeval_to_ms(&delta); - - for (i = 0; i < ingestsCount; i++) { - if (handles[i] != 0) { - os_destroy_thread(handles[i]); - } - } - - free(handles); - free(data); - - if (best) { - strcpy_s(bestIngestIpComputed, sizeof(best->ip), best->ip); - free(ingestElements); - return FTL_SUCCESS; - } - - free(ingestElements); - - return FTL_UNKNOWN_ERROR_CODE; -} - #ifndef DISABLE_AUTO_INGEST OS_THREAD_ROUTINE _ingest_get_hosts(ftl_stream_configuration_private_t *ftl); @@ -218,9 +155,11 @@ size_t size = json_array_size(ingests); for (i = 0; i < size; i++) { - const char *name, *ip; + char *name = NULL, *ip=NULL, *hostname=NULL; ingest_item = json_array_get(ingests, i); - json_unpack(ingest_item, "{s:s, s:s}", "name", &name, "ip", &ip); + if (json_unpack(ingest_item, "{s:s, s:s, s:s}", "name", &name, "ip", &ip, "hostname", &hostname) < 0) { + continue; + } ftl_ingest_t *ingest_elmt; @@ -228,8 +167,10 @@
View file
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
@@ -1,5 +1,7 @@ +#define __FTL_INTERNAL #include "ftl.h" #include "ftl_private.h" +#include <assert.h> #define MAX_RTT_FACTOR 1.3 #define USEC_IN_SEC 1000000 @@ -8,6 +10,7 @@ OS_THREAD_ROUTINE audio_send_thread(void *data); OS_THREAD_ROUTINE recv_thread(void *data); OS_THREAD_ROUTINE ping_thread(void *data); +OS_THREAD_ROUTINE adaptive_bitrate_thread(void* data); ftl_status_t _internal_media_destroy(ftl_stream_configuration_private_t *ftl); static int _nack_init(ftl_media_component_common_t *media); static int _nack_destroy(ftl_media_component_common_t *media); @@ -28,10 +31,70 @@ static int _send_video_stats(ftl_stream_configuration_private_t *ftl, ftl_media_component_common_t *mc, int interval_ms); static int _send_instant_pkt_stats(ftl_stream_configuration_private_t *ftl, ftl_media_component_common_t *mc, int interval_ms); +size_t ingest_addrlen; +struct sockaddr *ingest_addr; + +ftl_status_t _get_addr_info(short family, char *ip, short port, struct sockaddr **addr, size_t *addrlen) { + + ftl_status_t retval = FTL_SUCCESS; + + do { + if (family == AF_INET) { + struct sockaddr_in *ipv4_addr = NULL; + size_t len; + + len = sizeof(struct sockaddr_in); + + if ((ipv4_addr = malloc(len)) == NULL) { + retval = FTL_MALLOC_FAILURE; + break; + } + + memset(ipv4_addr, 0, len); + + ipv4_addr->sin_family = family; + ipv4_addr->sin_port = htons(port); + + if (inet_pton(family, ip, &ipv4_addr->sin_addr) != 1) { + retval = FTL_DNS_FAILURE; + break; + } + + *addrlen = len; + *addr = (struct sockaddr *)ipv4_addr; + } + else if (family == AF_INET6) { + struct sockaddr_in6 *ipv6_addr = NULL; + size_t len; + + len = sizeof(struct sockaddr_in6); + + if ((ipv6_addr = malloc(len)) == NULL) { + retval = FTL_MALLOC_FAILURE; + break; + } + + memset(ipv6_addr, 0, len); + + ipv6_addr->sin6_family = family; + ipv6_addr->sin6_port = htons(port); + + if (inet_pton(family, ip, &ipv6_addr->sin6_addr) != 1) { + retval = FTL_DNS_FAILURE; + break; + } + + *addrlen = len; + *addr = (struct sockaddr *)ipv6_addr; + } + } + while (0); + return retval; +} + ftl_status_t media_init(ftl_stream_configuration_private_t *ftl) { ftl_media_config_t *media = &ftl->media; - unsigned char buf[sizeof(struct in_addr)]; ftl_status_t status = FTL_SUCCESS; int idx; @@ -44,27 +107,16 @@ os_init_mutex(&ftl->video.mutex); os_init_mutex(&ftl->audio.mutex); - //Create a socket - if ((media->media_socket = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET) - { - FTL_LOG(ftl, FTL_LOG_ERROR, "Could not create socket : %s", get_socket_error()); - status = FTL_INTERNAL_ERROR; - break; + //use the same socket family as the control connection + media->media_socket = socket(ftl->socket_family, SOCK_DGRAM, IPPROTO_UDP); + if (media->media_socket == -1) { + return FTL_DNS_FAILURE; } - set_socket_send_buf(media->media_socket, 2048); - - FTL_LOG(ftl, FTL_LOG_INFO, "Socket created\n"); - - if (inet_pton(AF_INET, ftl->ingest_ip, buf) == 0) { - break; + if ((status = _get_addr_info(ftl->socket_family, ftl->ingest_ip, media->assigned_port, &media->ingest_addr, &media->ingest_addrlen)) != FTL_SUCCESS) { + return status; } - //Prepare the sockaddr_in structure - media->server_addr.sin_family = AF_INET; - memcpy((char *)&media->server_addr.sin_addr.s_addr, (char *)buf, sizeof(buf)); - media->server_addr.sin_port = htons(media->assigned_port); - media->max_mtu = MAX_MTU; gettimeofday(&media->stats_tv, NULL); media->sender_report_base_ntp.tv_usec = 0; @@ -110,12 +162,12 @@ break; } - if (os_semaphore_create(&ftl->video.media_component.pkt_ready, "/VideoPkt", O_CREAT, 0) < 0) { + if (os_semaphore_create(&ftl->video.media_component.pkt_ready, "/VideoPkt", O_CREAT, 0, FALSE) < 0) { status = FTL_MALLOC_FAILURE; break; } - if (os_semaphore_create(&ftl->audio.media_component.pkt_ready, "/AudioPkt", O_CREAT, 0) < 0) { + if (os_semaphore_create(&ftl->audio.media_component.pkt_ready, "/AudioPkt", O_CREAT, 0, FALSE) < 0) { status = FTL_MALLOC_FAILURE; break; } @@ -138,7 +190,7 @@ break; } - if (os_semaphore_create(&media->ping_thread_shutdown, "/PingThreadShutdown", O_CREAT, 0) < 0) { + if (os_semaphore_create(&media->ping_thread_shutdown, "/PingThreadShutdown", O_CREAT, 0, FALSE) < 0) { status = FTL_MALLOC_FAILURE; break; } @@ -217,6 +269,9 @@ shutdown_socket(media->media_socket, SD_BOTH); close_socket(media->media_socket); media->media_socket = INVALID_SOCKET; + if (media->ingest_addr) { + free(media->ingest_addr); + } } os_unlock_mutex(&media->mutex); } @@ -278,6 +333,7 @@ slot->len = 0; slot->sn = -1; + slot->isPartOfIframe = 0; } os_init_mutex(&media->nack_slots_lock); @@ -487,7 +543,7 @@ float adjusted_bytes_sent = (float)total_sent * (1.f - pkt_loss_percent); int64_t actual_send_time = total_ms + final_rtt - initial_rtt; - effective_kbps = (int)(adjusted_bytes_sent * 8.f * 1000.f / (float)actual_send_time) / 1000.f; + effective_kbps = (int)(((float)adjusted_bytes_sent * 8.f * 1000.f / (float)actual_send_time) / 1000.f); results->pkts_sent = (int)pkts_sent; results->nack_requests = (int)lost_pkts; @@ -655,7 +711,7 @@ } os_unlock_mutex(&ftl->video.mutex); return bytes_queued; - } + } os_lock_mutex(&slot->mutex); @@ -682,6 +738,7 @@ slot->len = pkt_len; slot->sn = sn; gettimeofday(&slot->insert_time, NULL); + slot->isPartOfIframe = nalu_type == H264_NALU_TYPE_IDR; os_unlock_mutex(&slot->mutex); os_semaphore_post(&mc->pkt_ready); @@ -781,13 +838,19 @@ static int _media_send_slot(ftl_stream_configuration_private_t *ftl, nack_slot_t *slot) { int tx_len; + uint8_t pkt[MAX_PACKET_BUFFER]; + int pkt_len; + os_lock_mutex(&ftl->media.mutex); - 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) + memcpy(pkt, slot->packet, slot->len);
View file
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
@@ -28,6 +28,7 @@ #include <string.h> #include <unistd.h> #include <sys/socket.h> +#include <sys/ioctl.h> #include <errno.h> #include <poll.h> @@ -85,6 +86,10 @@ return setsockopt(socket, SOL_SOCKET, SO_SNDBUF, (char*)&buffer_space, sizeof(buffer_space)); } +int get_socket_bytes_available(SOCKET socket, unsigned long *bytes_available) { + return ioctl(socket, FIONREAD, bytes_available); +} + int poll_socket_for_receive(SOCKET socket, int timeoutMs) { // timeoutMs behavior
View file
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
@@ -13,4 +13,5 @@ int get_socket_send_buf(SOCKET socket, int *buffer_space); int set_socket_send_buf(SOCKET socket, int buffer_space); int poll_socket_for_receive(SOCKET socket, int ms_timeout); +int get_socket_bytes_available(SOCKET socket, unsigned long *bytes_available); int shutdown_socket(SOCKET sock, int how);
View file
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
@@ -66,29 +66,62 @@ return 0; } -int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value) { +int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value, BOOL is_global) { - if ((sem->name = strdup(name)) == NULL) { - return -1; - } + int retval = 0; - if (name == NULL || name[0] != '/') { - return -2; - } + sem->name = NULL; + sem->sem = NULL; + + do { + if (name == NULL || name[0] != '/') { + retval = -1; + break; + } + + //if the semaphore is intended to only be used by the same process and not across processes, give it unique name + if(!is_global) { + int name_len = strlen(name); + + if ((sem->name = (char*)malloc( (name_len + 20) * sizeof(char))) == NULL) { + retval = -2; + break; + } + + sprintf(sem->name, "%s_%d", name, (unsigned int)rand()); + } + else { + if ((sem->name = strdup(name)) == NULL) { + return -2; + } + } #ifdef __ANDROID__ - if ((sem->sem = (sem_t*)malloc(sizeof(sem_t))) == NULL) { - return -4; - } + if ((sem->sem = (sem_t*)malloc(sizeof(sem_t))) == NULL) { + retval = -4; + break; + } - if (sem_init(sem->sem, 0 /* pshared */, 0 /* value */)) { + if (sem_init(sem->sem, 0 /* pshared */, 0 /* value */)) { #else - if ((sem->sem = sem_open(name, oflag, 0644, value)) == SEM_FAILED) { + if ((sem->sem = sem_open(sem->name, oflag, 0644, value)) == SEM_FAILED) { #endif - return -3; + retval = -3; + break; + } + + return retval; + }while(0); + + if(sem->name != NULL){ + free(sem->name); } - return 0; + if(sem->sem != NULL){ + free(sem->sem); + } + + return retval; } int os_semaphore_pend(OS_SEMAPHORE *sem, int ms_timeout) {
View file
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
@@ -23,6 +23,7 @@ **/ #include <stdbool.h> +#include <stdio.h> #include <pthread.h> #include <semaphore.h> #include <fcntl.h> @@ -58,7 +59,7 @@ int os_unlock_mutex(OS_MUTEX *mutex); int os_delete_mutex(OS_MUTEX *mutex); -int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value); +int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value, BOOL is_global); int os_semaphore_pend(OS_SEMAPHORE *sem, int ms_timeout); int os_semaphore_post(OS_SEMAPHORE *sem); int os_semaphore_delete(OS_SEMAPHORE *sem);
View file
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
@@ -77,6 +77,10 @@ return setsockopt(socket, SOL_SOCKET, SO_SNDBUF, (char*)&buffer_space, sizeof(buffer_space)); } +int get_socket_bytes_available(SOCKET socket, unsigned long *bytes_available) { + return ioctlsocket(socket, FIONREAD, bytes_available); +} + int poll_socket_for_receive(SOCKET socket, int timeoutMs) { // timeoutMs behavior
View file
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,4 +7,5 @@ int get_socket_send_buf(SOCKET socket, int *buffer_space); int set_socket_send_buf(SOCKET socket, int buffer_space); int poll_socket_for_receive(SOCKET socket, int ms_timeout); +int get_socket_bytes_available(SOCKET socket, unsigned long *bytes_available); int shutdown_socket(SOCKET sock, int how);
View file
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
@@ -22,6 +22,7 @@ * SOFTWARE. **/ +#include <stdlib.h> #include "threads.h" int os_init(){ @@ -86,22 +87,47 @@ return 0; } -char tmp[1024]; - -int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value) { - - if (name == NULL) { - return -1; - } - - if ( (*sem = CreateSemaphore(NULL, value, MAX_SEM_COUNT, name)) == NULL){ - - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), 0, (LPTSTR)&tmp, 1000, NULL); - - return -3; +int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value, BOOL is_global) { + + char *internal_name = NULL; + int retval = 0; + + do { + if (name == NULL) { + retval = -1; + break; + } + + //if the semaphore is intended to only be used by the same process and not across processes, give it unique name + if(!is_global) { + size_t name_len = strlen(name); + size_t max_name = name_len + 20; + + if ((internal_name = (char*)malloc(max_name * sizeof(char))) == NULL) { + retval = -2; + break; + } + + sprintf_s(internal_name, max_name, "%s_%d", name, (unsigned int)rand()); + } + else { + if ((internal_name = _strdup(name)) == NULL) { + retval = -2; + break; + } + } + + if ( (*sem = CreateSemaphoreA(NULL, value, MAX_SEM_COUNT, (LPCSTR)internal_name)) == NULL){ + retval = -3; + break; + } + }while(0); + + if(internal_name != NULL){ + free(internal_name); } - return 0; + return retval; } int os_semaphore_pend(OS_SEMAPHORE *sem, int ms_timeout) {
View file
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
@@ -23,6 +23,7 @@ **/ #include <Windows.h> +#include <stdio.h> typedef CRITICAL_SECTION OS_MUTEX; @@ -51,7 +52,7 @@ int os_unlock_mutex(OS_MUTEX *mutex); int os_delete_mutex(OS_MUTEX *mutex); -int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value); +int os_semaphore_create(OS_SEMAPHORE *sem, const char *name, int oflag, unsigned int value, BOOL is_global); int os_semaphore_pend(OS_SEMAPHORE *sem, int ms_timeout); int os_semaphore_post(OS_SEMAPHORE *sem); int os_semaphore_delete(OS_SEMAPHORE *sem);
View file
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
@@ -930,7 +930,7 @@ p->nack_reqs -stream->last_nack_count; stream->last_nack_count = p->nack_reqs; - int log_level = p->nack_reqs > 2 ? LOG_INFO : LOG_DEBUG; + int log_level = p->nack_reqs > 0 ? LOG_INFO : LOG_DEBUG; blog(log_level, "Avg packet send per second %3.1f, " "total nack requests %d", @@ -941,7 +941,7 @@ ftl_packet_stats_instant_msg_t *p = &status.msg.ipkt_stats; - int log_level = p->avg_rtt > 200 ? LOG_INFO : LOG_DEBUG; + int log_level = p->avg_rtt > 20 ? LOG_INFO : LOG_DEBUG; blog(log_level, "avg transmit delay %dms " "(min: %d, max: %d), " @@ -954,7 +954,7 @@ ftl_video_frame_stats_msg_t *v = &status.msg.video_stats; - int log_level = v->queue_fullness > 5 ? + int log_level = v->queue_fullness > 0 ? LOG_INFO : LOG_DEBUG; blog(log_level, "Queue an average of %3.2f fps "
View file
obs-studio-21.1.2.tar.xz/plugins/obs-qsv11/data/locale/fil-PH.ini
Added
@@ -0,0 +1,12 @@ +TargetUsage="Paggamit ng Target" +Bitrate="Bitreyt" +MaxBitrate="Malakas na Bitreyt" +RateControl="Pagkontrol ng rate" +KeyframeIntervalSec="Pagitan ng Keyframe (segundo, 0=awto)" +Profile="Anyo sa tagiliran" +AsyncDepth="Lalim ng Async" +Accuracy="Katumapakan" +Convergence="Tagpo" +ICQQuality="Kalidad ng ICQ" +LookAheadDepth="Tignan mo ang nasa unahan ng Malalim" +
View file
obs-studio-21.1.2.tar.xz/plugins/obs-qsv11/data/locale/tl-PH.ini
Added
@@ -0,0 +1,12 @@ +TargetUsage="Ang Target ng Usage" +Bitrate="Bitrate" +MaxBitrate="Pinakamataas na bitrate" +RateControl="Ang Rate Kontrol" +KeyframeIntervalSec="Ang Keyframe Interval (segundos, 0=awtomatik)" +Profile="Ang Profile" +AsyncDepth="Async Depth" +Accuracy="Kahusayan" +Convergence="Patagpo" +ICQQuality="Kalidad ng ICQ" +LookAheadDepth="Lalim ng Lookahead" +
View file
obs-studio-21.1.2.tar.xz/plugins/obs-text/data/locale/fil-PH.ini
Added
@@ -0,0 +1,34 @@ +TextGDIPlus="Teksto (GDI+)" +Font="Benditahan" +Text="Teksto" +ReadFromFile="Basahin galing sa file" +TextFile="Tekstong file (UTF-8)" +Filter.TextFiles="Teksto ng mga file" +Filter.AllFiles="Ang lahat ng mga file" +Color="Kulay" +Opacity="Kalabuan" +Gradient="Mapagmahal" +Gradient.Color="Mapagmahal na Kulay" +Gradient.Opacity="Mapagmahal na kalabuan" +Gradient.Direction="Mapagmahal na Direksyon" +BkColor="Panglikuran na Kulay" +BkOpacity="Panglikuran na Kalabuan" +Alignment="Pagkakahanay" +Alignment.Left="Kaliwa" +Alignment.Center="Gitna" +Alignment.Right="Kanan" +Vertical="Patayo" +VerticalAlignment="Patayong Pagkakahanay" +VerticalAlignment.Top="Nangunguna" +VerticalAlignment.Bottom="Pinakailalim" +Outline="Balangkas" +Outline.Size="Balangkas na Sukat" +Outline.Color="Balangkas na kulay" +Outline.Opacity="Balangkas ng kalabuan" +ChatlogMode="Chatlag Mowd" +ChatlogMode.Lines="Linya ng limitasyon sa Chatlog" +UseCustomExtents="Gamitin ang Pasadyang Nakakalawak na Teksto" +UseCustomExtents.Wrap="Ibalot" +Width="Lapad" +Height="Taas" +
View file
obs-studio-21.1.2.tar.xz/plugins/obs-text/data/locale/tl-PH.ini
Added
@@ -0,0 +1,34 @@ +TextGDIPlus="Teksto (GDI+)" +Font="AngFont" +Text="Teksto" +ReadFromFile="Magbasa mula sa file" +TextFile="Teksto File (UTF-8)" +Filter.TextFiles="Teksto ng mgaFiles" +Filter.AllFiles="Lahat ng mga Files" +Color="Kulay" +Opacity="Opacity" +Gradient="Gradient" +Gradient.Color="Gradient na Kulay" +Gradient.Opacity="Gradient na Opacity" +Gradient.Direction="Gradient na Direksyon" +BkColor="Kulay sa Background" +BkOpacity="Backround na Opacity" +Alignment="Amgpagka-align" +Alignment.Left="Kaliwa" +Alignment.Center="Gitna" +Alignment.Right="Kanan" +Vertical="Patayo" +VerticalAlignment="Patayo ang Pagka-align" +VerticalAlignment.Top="Taas" +VerticalAlignment.Bottom="Baba" +Outline="Ang Outline" +Outline.Size="Ang laki ng Outline" +Outline.Color="Ang Kulay ng Outline" +Outline.Opacity="Ang Outline Opacity" +ChatlogMode="Modo ng Chatlog" +ChatlogMode.Lines="Limitasyon ng linya sa Chatlog" +UseCustomExtents="Gumamit ng Custom na Teksto sa Extents" +UseCustomExtents.Wrap="Wrap" +Width="Ang lapad" +Height="Ang Taas" +
View file
obs-studio-21.1.2.tar.xz/plugins/obs-transitions/data/locale/fil-PH.ini
Added
@@ -0,0 +1,66 @@ +FadeTransition="Kumupas" +CutTransition="Gumupit" +SwipeTransition="Nakawin" +SlideTransition="Magpadulas" +StingerTransition="Tibo" +FadeToColorTransition="Paglabong sagad sa kulay" +Direction="Direksyon" +Direction.Left="Kaliwa" +Direction.Right="Kanan" +Direction.Up="Pataas" +Direction.Down="Pababa" +SwipeIn="Mag-swipe In" +Color="Kulay" +VideoFile="Bidyo File" +TransitionPoint="Paglipat ng tuldok (milsegundo)" +TransitionPointFrame="Paglipat ng Punto (preym)" +TransitionPointType="Paglipat ng Uri ng Punto" +TransitionPointTypeFrame="Preym" +TransitionPointTypeTime="Oras (milsegundo)" +AudioFadeStyle="Lumabo ang Estilo ng Awdiyo" +AudioFadeStyle.FadeOutFadeIn="Lumalabo sa paglipat ng punto pagkatapos maglabo" +AudioFadeStyle.CrossFade="Kruspeyd" +SwitchPoint="Tugatok ng Kulay ng Punto (porsyento)" +LumaWipeTransition="Pamunas na Luma" +LumaWipe.Image="Larawan" +LumaWipe.Invert="Baliktarin" +LumaWipe.Softness="Lambot" +LumaWipe.Type.BarndoorBottomLeft="Kamalig na pinto sa Kailaliman ng Kaliwa" +LumaWipe.Type.BarndoorHorizontal="Kamalig na pintong Pahalang" +LumaWipe.Type.BarndoorTopLeft="Kamalig na pinto sa Taas ng kaliwa" +LumaWipe.Type.BarndoorVertical="Kamalig na pintong Patayo" +LumaWipe.Type.BlindsHorizontal="Mga blind na Pahalang" +LumaWipe.Type.BoxBottomLeft="Kahon sa Kailaliman ng Kaliwa" +LumaWipe.Type.BoxBottomRight="Kahon sa Kailaliman ng Kanan" +LumaWipe.Type.BoxTopLeft="Kahon sa tuktok ng kaliwang bahagi" +LumaWipe.Type.BoxTopRight="Kahon sa Tuktok ng Kanang bahagi" +LumaWipe.Type.Burst="Pagputok" +LumaWipe.Type.CheckerboardSmall="Damahang maliit" +LumaWipe.Type.Circles="Mga lupon" +LumaWipe.Type.Clock="Orasan" +LumaWipe.Type.Cloud="Ulap" +LumaWipe.Type.Curtain="Kurtina" +LumaWipe.Type.Fan="Pamaypay" +LumaWipe.Type.Fractal="Fraktal" +LumaWipe.Type.Iris="Ayris" +LumaWipe.Type.LinearHorizontal="Sa guhit na Pahalang" +LumaWipe.Type.LinearTopLeft="Guhit sa Kaliwang tuktok" +LumaWipe.Type.LinearTopRight="Guhit sa kanang tuktok" +LumaWipe.Type.LinearVertical="Sa guhit na patayo" +LumaWipe.Type.ParallelZigzagHorizontal="Nakahirelang Palikong Pahalang" +LumaWipe.Type.ParallelZigzagVertical="Pahirelang Palikong Patayo" +LumaWipe.Type.Sinus9="Sinus na 9" +LumaWipe.Type.Spiral="Pilipit" +LumaWipe.Type.Square="Kuwadrado" +LumaWipe.Type.Squares="Mga kuwadrado" +LumaWipe.Type.Stripes="Mga guhit" +LumaWipe.Type.StripsHorizontal="Pahalang na Simutin" +LumaWipe.Type.StripsVertical="Patayong simutin" +LumaWipe.Type.Watercolor="Waterkolor" +LumaWipe.Type.ZigzagHorizontal="Palikong Pahalang" +LumaWipe.Type.ZigzagVertical="Palikong Patayo" +AudioMonitoring="Pagsubaybay sa Audio" +AudioMonitoring.None="I-off ang Pagsubaybay" +AudioMonitoring.MonitorOnly="Magsubaybay lang (i-mute ang output)" +AudioMonitoring.Both="Subaybayan at Output" +
View file
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
@@ -1,5 +1,5 @@ FadeTransition="Затухание" -CutTransition="Обрезать" +CutTransition="Обрезка" SwipeTransition="Перемещение" SlideTransition="Сдвиг" StingerTransition="Стингер"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-transitions/data/locale/tl-PH.ini
Added
@@ -0,0 +1,66 @@ +FadeTransition="Palabo" +CutTransition="Putulin" +SwipeTransition="I-swipe" +SlideTransition="I-slide" +StingerTransition="Stinger" +FadeToColorTransition="Palabo sa Kulay" +Direction="Direksyon" +Direction.Left="Kaliwa" +Direction.Right="Kanan" +Direction.Up="Pataas" +Direction.Down="Pababa" +SwipeIn="Mag-swipe papasok" +Color="Kulay" +VideoFile="File ng mga video" +TransitionPoint="Pinagmulan ng Pagbabago (millisegundos)" +TransitionPointFrame="Pinagmulan ng Pagbabago (Frame)" +TransitionPointType="Pinagmulan ng Pagbabago ng Tipo" +TransitionPointTypeFrame="Ang frame" +TransitionPointTypeTime="Oras (millisegundos)" +AudioFadeStyle="Palabo ang istilo ng Audio" +AudioFadeStyle.FadeOutFadeIn="Palabo ang palabas sa pinagmulan ng pagbabago tapos palabo papasok" +AudioFadeStyle.CrossFade="Crossfade" +SwitchPoint="Peak Color Point (porsyento)" +LumaWipeTransition="Luma Wipe" +LumaWipe.Image="Imahe" +LumaWipe.Invert="Ibaliktad" +LumaWipe.Softness="Kalambutan" +LumaWipe.Type.BarndoorBottomLeft="Barndoor Pailalim sa Kaliwa" +LumaWipe.Type.BarndoorHorizontal="Barndoor Pahiga" +LumaWipe.Type.BarndoorTopLeft="Barndoor Pataas sa Kaliwa" +LumaWipe.Type.BarndoorVertical="Barndoor Patayo" +LumaWipe.Type.BlindsHorizontal="Blinds Pahiga" +LumaWipe.Type.BoxBottomLeft="Box Pailalim sa Kaliwa" +LumaWipe.Type.BoxBottomRight="Box Pailalim sa Kanan" +LumaWipe.Type.BoxTopLeft="Box Paitaas sa Kaliwa" +LumaWipe.Type.BoxTopRight="Box Paitaas sa Kanan" +LumaWipe.Type.Burst="Pasabog" +LumaWipe.Type.CheckerboardSmall="Maliit na Checkerboard" +LumaWipe.Type.Circles="Mga Bilog" +LumaWipe.Type.Clock="Orasan" +LumaWipe.Type.Cloud="Ulap" +LumaWipe.Type.Curtain="Kurtina" +LumaWipe.Type.Fan="Fan" +LumaWipe.Type.Fractal="Fractal" +LumaWipe.Type.Iris="Iris" +LumaWipe.Type.LinearHorizontal="Linear Pahiga" +LumaWipe.Type.LinearTopLeft="Linear Pataas sa Kaliwa" +LumaWipe.Type.LinearTopRight="Linear Pataas sa Kanan" +LumaWipe.Type.LinearVertical="Linear Patayo" +LumaWipe.Type.ParallelZigzagHorizontal="Parallel Zigzag Pahiga" +LumaWipe.Type.ParallelZigzagVertical="Parallel Zigzag Patayo" +LumaWipe.Type.Sinus9="Sinus 9" +LumaWipe.Type.Spiral="Pilipit" +LumaWipe.Type.Square="Kuwadrado" +LumaWipe.Type.Squares="Mga kuwadrado" +LumaWipe.Type.Stripes="Mga guhit" +LumaWipe.Type.StripsHorizontal="Pahiga na strips" +LumaWipe.Type.StripsVertical="Patayo na mga strips" +LumaWipe.Type.Watercolor="Watercolor" +LumaWipe.Type.ZigzagHorizontal="Zigzag Pahiga" +LumaWipe.Type.ZigzagVertical="Vertical" +AudioMonitoring="Pag-monitor sa audio" +AudioMonitoring.None="Patayin ang Monitor" +AudioMonitoring.MonitorOnly="Monitor lamang (i-mute ang output)" +AudioMonitoring.Both="Monitor at Output" +
View file
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
@@ -2,7 +2,7 @@ CutTransition="Kes" SwipeTransition="Kaydır" SlideTransition="Kaydır" -StingerTransition="Isırıcı" +StingerTransition="Stinger" FadeToColorTransition="Fade to Color" Direction="Yönlendir" Direction.Left="Sol"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-x264/data/locale/fil-PH.ini
Added
@@ -0,0 +1,13 @@ +Bitrate="Bitreyt" +CustomBufsize="Gamitin ang Pasadyang Sukat ng Buffer" +BufferSize="Sukat Buffer" +RateControl="Kontrolin ang Singil" +CRF="CRF" +KeyframeIntervalSec="Pagitan ng Keyframe (segundo, 0=awto)" +CPUPreset="Paggamit sa Preset ng CPU (mataas=konti CPU)" +Profile="Propayl" +Tune="Tono" +None="(Wala)" +EncoderOptions="x264 Pagpipilian (magkahiwalay sa pamamagitan ng patlang)" +VFR="Pabago-bago ng Framerate (VFR)" +
View file
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
@@ -4,7 +4,7 @@ RateControl="Hastighetskontroll" CRF="CRF" KeyframeIntervalSec="Nøkkelbildeintervall (sekunder, 0 = automatisk)" -CPUPreset="Forhåndsinstilling for prosessorbruk (raskere betyr mindre belastning)" +CPUPreset="Forhåndsinnstilling for prosessorbruk (raskere = mindre CPU-bruk)" Profile="Profil" Tune="Still inn" None="(Ingen)"
View file
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
@@ -6,7 +6,7 @@ KeyframeIntervalSec="Интервал ключевых кадров (сек, 0=авто)" CPUPreset="Предустановка использования ЦП (выше = меньше)" Profile="Профиль" -Tune="Настроить" +Tune="Настройка" None="(Нет)" EncoderOptions="Настройки x264 (разделённые пробелом)" VFR="Переменная частота кадров (VFR)"
View file
obs-studio-21.1.2.tar.xz/plugins/obs-x264/data/locale/tl-PH.ini
Added
@@ -0,0 +1,13 @@ +Bitrate="Ang Bitrate" +CustomBufsize="Gamitin ang Custom Buffer Size" +BufferSize="Laki ng Buffer" +RateControl="Kontrol ng Rate" +CRF="CRF" +KeyframeIntervalSec="Interbalng Keyframe (segundos, 0=awtomatik)" +CPUPreset="Ang Usage Preset ng CPU (mataas = mababang CPU)" +Profile="Ang Profile" +Tune="Ang tono" +None="(Wala)" +EncoderOptions="x264 Mga opsyon (pinaghiwalay ng espasyo)" +VFR="Variable Framerate (VFR)" +
View file
obs-studio-21.1.2.tar.xz/plugins/rtmp-services/data/locale/fil-PH.ini
Added
@@ -0,0 +1,11 @@ +StreamingServices="Serbisyong Striming" +CustomStreamingServer="Pagsadya ng striming na serber" +Service="Serbisyo" +Server="Serber" +Server.Auto="Awto (Nirekomenda)" +StreamKey="Susi ng Strim" +UseAuth="Paggamit ng pagpapatunay" +Username="Ginagamit na pangalan" +Password="Password" +ShowAll="Ipakita ang lahat ng mga serbisyo" +
View file
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
@@ -3,7 +3,7 @@ Service="Tjeneste" Server="Tjener" Server.Auto="Auto (Anbefales)" -StreamKey="Strømingsnøkkel" +StreamKey="Strømmenøkkel" UseAuth="Bruk godkjenning" Username="Brukernavn" Password="Passord"
View file
obs-studio-21.1.2.tar.xz/plugins/rtmp-services/data/locale/tl-PH.ini
Added
@@ -0,0 +1,11 @@ +StreamingServices="Serbisyo ng Streaming" +CustomStreamingServer="Ang Server ng Custom Streaming" +Service="Serbisyo" +Server="Ang Server" +Server.Auto="Awtomatik (Nirokomenda)" +StreamKey="Ang Stream key" +UseAuth="Gumamit ng patunay" +Username="Username" +Password="Password" +ShowAll="Ipakita ang lahat ng mga serbisyo" +
View file
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
@@ -1,10 +1,10 @@ { "url": "https://obsproject.com/obs2_update/rtmp-services", - "version": 78, + "version": 80, "files": [ { "name": "services.json", - "version": 78 + "version": 80 } ] }
View file
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
@@ -714,6 +714,10 @@ "url": "rtmp://seoul.restream.io/live" }, { + "name": "Asia (Tokyo, Japan)", + "url": "rtmp://tokyo.restream.io/live" + }, + { "name": "Australia (Sydney)", "url": "rtmp://au.restream.io/live" } @@ -725,39 +729,74 @@ { "name": "Nood", "servers": [ - { - "name": "EU Central: Frankfurt, Germany", - "url": "rtmp://broadcast-frf.nood.tv/20D2AB/live" - }, - { - "name": "EU North: Amsterdam, Netherlands", - "url": "rtmp://broadcast-ams.nood.tv/20D2AB/live" - }, - { - "name": "EU West: Stockholm, Sweden", - "url": "rtmp://broadcast-arn.nood.tv/20D2AB/live" - }, - { - "name": "US East: Washington, DC", - "url": "rtmp://broadcast-dca.nood.tv/20D2AB/live" - }, - { - "name": "US West: Los Angeles, CA", - "url": "rtmp://broadcast-oxr.nood.tv/20D2AB/live" - }, - { - "name": "Australia: Sydney", - "url": "rtmp://broadcast-syd.nood.tv/20D2AB/live" - }, - { - "name": "Asia: Hong Kong, China", - "url": "rtmp://broadcast-hhp.nood.tv/20D2AB/live" - } + { + "name": "Global: Fastest (Recommended)", + "url": "rtmp://stream.nood.tv/live_source" + }, + { + "name": "NA East: Ashburn, VA, USA", + "url": "rtmp://us-east-1.stream.nood.tv/live_source" + }, + { + "name": "NA East: Columbus, OH, USA", + "url": "rtmp://us-east-2.stream.nood.tv/live_source" + }, + { + "name": "NA East: Montreal, QC, CAN", + "url": "rtmp://ca-central-1.stream.nood.tv/live_source" + }, + { + "name": "NA West: San Francisco, CA, USA", + "url": "rtmp://us-west-1.stream.nood.tv/live_source" + }, + { + "name": "NA West: Portland, OR, USA", + "url": "rtmp://us-west-2.stream.nood.tv/live_source" + }, + { + "name": "SA East: Sao Paulo, BRA", + "url": "rtmp://sa-east-1.stream.nood.tv/live_source" + }, + { + "name": "EU West: Dublin, IRL", + "url": "rtmp://eu-west-1.stream.nood.tv/live_source" + }, + { + "name": "EU West: London, GBR", + "url": "rtmp://eu-west-2.stream.nood.tv/live_source" + }, + { + "name": "EU West: Paris, FRA", + "url": "rtmp://eu-west-3.stream.nood.tv/live_source" + }, + { + "name": "EU West: Frankfurt, DEU", + "url": "rtmp://eu-central-1.stream.nood.tv/live_source" + }, + { + "name": "Asia North-East: Tokyo, JPN", + "url": "rtmp://ap-northeast-1.stream.nood.tv/live_source" + }, + { + "name": "Asia North-East: Seoul, KOR", + "url": "rtmp://ap-northeast-2.stream.nood.tv/live_source" + }, + { + "name": "Asia South-East: Singapore, SGP", + "url": "rtmp://ap-southeast-1.stream.nood.tv/live_source" + }, + { + "name": "Asia South-East: Sydney, AUS", + "url": "rtmp://ap-southeast-2.stream.nood.tv/live_source" + }, + { + "name": "Asia South: Mumbai, IND", + "url": "rtmp://ap-south-1.stream.nood.tv/live_source" + } ], "recommended": { "keyint": 2, - "profile": "main", - "max video bitrate": 3500, + "max video bitrate": 25000, "max audio bitrate": 192 } }, @@ -1175,6 +1214,24 @@ "max video bitrate": 1000, "max audio bitrate": 64 } + }, + { + "name": "Vimeo", + "servers": [ + { + "name": "Default", + "url": "rtmp://rtmp.cloud.vimeo.com/live" + } + ] + }, + { + "name": "Aparat", + "servers": [ + { + "name": "Default", + "url": "rtmp://rtmp.cdn.asset.aparat.com:443/event" + } + ] } ] }
View file
obs-studio-21.1.2.tar.xz/plugins/text-freetype2/data/locale/fil-PH.ini
Added
@@ -0,0 +1,14 @@ +TextFreetype2="Teksto (Libreng uri 2)" +Font="Benditahan" +Text="Teksto" +TextFile="Pagkikil sa Teksto (UTF-8 o UTF-16)" +TextFileFilter="Pakikil sa mga Teksto (*. txt);;" +ChatLogMode="Ang Satsatan ay nasa paraan na log (huling anim na mga linya)" +Color1="Kulay isa" +Color2="Kulay pangalawa" +Outline="Balangkas" +DropShadow="I-drop ang Anino" +ReadFromFile="Bahasin mula sa payl" +CustomWidth="Pasadyang pahalang na teksto" +WordWrap="Salitang Na-i-wrap" +
View file
obs-studio-21.1.2.tar.xz/plugins/text-freetype2/data/locale/tl-PH.ini
Added
@@ -0,0 +1,14 @@ +TextFreetype2="Teskto (FreeType 2)" +Font="Ang font" +Text="Teksto" +TextFile="Teksto ng file (UTF-8 or UTF-16)" +TextFileFilter="Teksto ng mga nilalaman (*.txt);;" +ChatLogMode="Ang log modeng chat (huling 6 na linya)" +Color1="Unang Kulay" +Color2="Pangalawang Kulay" +Outline="Ang Outline" +DropShadow="I-drop ang Shadow" +ReadFromFile="Magabasa mula sa aking file" +CustomWidth="Ang custom width ng teksto" +WordWrap="Wrap ng mga Salita" +
View file
obs-studio-21.1.2.tar.xz/plugins/vlc-video/data/locale/fil-PH.ini
Added
@@ -0,0 +1,15 @@ +VLCSource="VLC Pinagmulan ng Bidyo" +Playlist="Playlist" +LoopPlaylist="Talaan ng siluin" +Shuffle="I-shuffle na Playlist" +PlaybackBehavior="Pagiging kita ng PagPag-uugali" +PlaybackBehavior.StopRestart="Itigil kapag hindi nakikita, i-restart kapag nakikita na" +PlaybackBehavior.PauseUnpause="I-pause kapag hindi nakikita, i-unpause kapag nakikita na" +PlaybackBehavior.AlwaysPlay="Palaging paganahin kahit na hindi nakikita" +NetworkCaching="Network Kaching (ms)" +PlayPause="Patugtugin/I-pause" +Restart="I-restart" +Stop="Itigil" +PlaylistNext="Susunod" +PlaylistPrev="Nakaraan" +
View file
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
@@ -1,8 +1,15 @@ VLCSource="מקור וידאו VLC" Playlist="רשימת השמעה" LoopPlaylist="לולאת רשימת השמעה" +Shuffle="ערבב רשימת השמעה" PlaybackBehavior="התנהגות ניראות" PlaybackBehavior.StopRestart="עצור כאשר אינו נראה, התחל מחדש כאשר נראה" PlaybackBehavior.PauseUnpause="השהה כאשר אינו נראה, בטל השהייה כאשר נראה" PlaybackBehavior.AlwaysPlay="נגן תמיד גם כאשר לא נראה" +NetworkCaching="רשת אחסון מטמטון (מילי שניות)" +PlayPause="הפעל/הפסק" +Restart="הפעל מחדש" +Stop="עצור" +PlaylistNext="הבא" +PlaylistPrev="הקודם"
View file
obs-studio-21.1.2.tar.xz/plugins/vlc-video/data/locale/ro-RO.ini
Added
@@ -0,0 +1,2 @@ +VLCSource="Sursă Video VLC" +
View file
obs-studio-21.1.2.tar.xz/plugins/vlc-video/data/locale/tl-PH.ini
Added
@@ -0,0 +1,15 @@ +VLCSource="Pinagmulan ng VLC Video" +Playlist="Mga Playlist" +LoopPlaylist="Loop ng mga Playlist" +Shuffle="I-shuffle ang mga Playlist" +PlaybackBehavior="Ang nakikitang kilos" +PlaybackBehavior.StopRestart="Huminto kung wala ng makita, i-restart kung mero ng makita" +PlaybackBehavior.PauseUnpause="Ihinto kung walang makita, magpatuloy kungwala ng makita" +PlaybackBehavior.AlwaysPlay="Patuloy na mag-play kahit wala ng makita" +NetworkCaching="Network Caching (ms)" +PlayPause="I-play/Ihinto" +Restart="I-restart" +Stop="Ihinto" +PlaylistNext="Susunod" +PlaylistPrev="Nakaraan" +
View file
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
@@ -7,6 +7,7 @@ WindowCapture.Priority.Exe="Shoda názvu, jinak najít okno stejného procesu" CaptureCursor="Zaznamenávat kurzor" Compatibility="Více-adaptérová kompaktibilita" +SLIFix="Zaznamenávací mód SLI/Crossfire (pomalý)" AllowTransparency="Povolit průhlednost" Monitor="Obrazovka" PrimaryMonitor="Primární obrazovka"
View file
obs-studio-21.1.2.tar.xz/plugins/win-capture/data/locale/fil-PH.ini
Added
@@ -0,0 +1,26 @@ +MonitorCapture="Ipakita ang Kumuha" +WindowCapture="Kumuha ng window" +WindowCapture.Window="Bintana" +WindowCapture.Priority="Bintanang Tugma sa Prayoridad" +WindowCapture.Priority.Title="Pamagat ng Window na mas tugma" +WindowCapture.Priority.Class="Tugmang pamagat, kung hindi matatagpuan ang window sa parehong uri" +WindowCapture.Priority.Exe="Tugmang pamagat, kung hindi makikita ang window sa parehong maipapatupad" +CaptureCursor="Kumuha ng Cursor" +Compatibility="Ang Pagkatugma ng Multi-adapter" +SLIFix="SLI/Crossfire nasa Mode ng Pagkuha (Mabagal)" +AllowTransparency="Pahintulutan ang Pag-aninaw" +Monitor="Magpakita" +PrimaryMonitor="Pangunahing pagsubaybay" +GameCapture="Makuha ang Laro" +GameCapture.AnyFullscreen="Kumuha ng kahit na anong fullscreen ng aplikasyon" +GameCapture.CaptureWindow="Kumuha ng tiyak na window" +GameCapture.UseHotkey="Kumuha ng pangbungad na window kasama ang hotkey" +GameCapture.ForceScaling="Pwersahang Pagsusukat" +GameCapture.ScaleRes="Antas ng Paglutas" +GameCapture.LimitFramerate="Limitahan ang pagkuha ng framerate" +GameCapture.CaptureOverlays="Kumuha ng ikatlong-parte ng mga overlays (tulad ng koponan)" +GameCapture.AntiCheatHook="Gamitin ang iwas-daya para sa pagkatugma ng hook" +GameCapture.HotkeyStart="Kumuha ng pangbungad na window" +GameCapture.HotkeyStop="I-de-aktibo ang pagkuha" +Mode="Paraan" +
View file
obs-studio-21.1.2.tar.xz/plugins/win-capture/data/locale/he-IL.ini
Added
@@ -0,0 +1,26 @@ +MonitorCapture="לכידת תצוגה" +WindowCapture="לכידת חלון" +WindowCapture.Window="חלון" +WindowCapture.Priority="חלון התאמת עדיפות" +WindowCapture.Priority.Title="כותרת חלון חייבת להתאים" +WindowCapture.Priority.Class="התאם כותרת, אחרת מצא חלון מאותו סוג" +WindowCapture.Priority.Exe="התאם כותרת, אחרת תמצא חלון של אותו קובץ הפעלה" +CaptureCursor="לכד סמן" +Compatibility="מתאם מרובה תאימות" +SLIFix="SLI/Crossfire מצב לכידה (איטי)" +AllowTransparency="אפשר שקיפות" +Monitor="צג" +PrimaryMonitor="צג ראשי" +GameCapture="לכידת משחק" +GameCapture.AnyFullscreen="לכוד כל יישום מסך מלא" +GameCapture.CaptureWindow="לכידת חלון ספציפי" +GameCapture.UseHotkey="לכוד חלון חזית עם hotkey" +GameCapture.ForceScaling="הכרח שינוי גודל" +GameCapture.ScaleRes="גודל רזולוציה" +GameCapture.LimitFramerate="מגבלת לכידת קצב פריימים" +GameCapture.CaptureOverlays="לכידת כיסוי צד שלישי (כגון סטים)" +GameCapture.AntiCheatHook="השתמש באנטי-צ'יט לרמות הוק" +GameCapture.HotkeyStart="לכידת חלון חזית" +GameCapture.HotkeyStop="בטל לכידה" +Mode="מצב" +
View file
obs-studio-21.1.2.tar.xz/plugins/win-capture/data/locale/tl-PH.ini
Added
@@ -0,0 +1,26 @@ +MonitorCapture="Mag Capture ng Display" +WindowCapture="Mag Capture ng Window" +WindowCapture.Window="Ang Window" +WindowCapture.Priority="Ang Match Priority ng Window" +WindowCapture.Priority.Title="Ang paksa ay dapat tumugma sa Window" +WindowCapture.Priority.Class="Tumugma ang paksa, kung hindi hanapin ang kapareho" +WindowCapture.Priority.Exe="Tumugma ang paksa, kung hindi hanapin ang kaparehong pinatutupad" +CaptureCursor="Ang Capture Cursor" +Compatibility="Maraming-adapter Compatibility" +SLIFix="SLI/Crossfire Capture Mode (Mahina)" +AllowTransparency="Hayaan ang Transparency" +Monitor="Ang Display" +PrimaryMonitor="Ang Primirong Monitor" +GameCapture="Ang GameCapture" +GameCapture.AnyFullscreen="Mag-capture ng kahit alin sa fullscreen na aplikasyon" +GameCapture.CaptureWindow="Mag-capture ng partikular na window" +GameCapture.UseHotkey="Mag-capture ng foreground window kasama ang hotkey" +GameCapture.ForceScaling="Pwersa ng Scaling" +GameCapture.ScaleRes="Resolusyon ng Scale" +GameCapture.LimitFramerate="Limitahan ang capture framerate" +GameCapture.CaptureOverlays="Mag-capture ng mga third-party overlays (katulad ng steam)" +GameCapture.AntiCheatHook="Gumamit ng pangkontra-cheat compatibility hook" +GameCapture.HotkeyStart="Mag-capture ng foreground window" +GameCapture.HotkeyStop="I-deactivate ang capture" +Mode="Ang Moda" +
View file
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
@@ -7,6 +7,7 @@ WindowCapture.Priority.Exe="匹配标题, 否则查找同样可执行程序的窗口" CaptureCursor="捕捉光标" Compatibility="多适配器的兼容性" +SLIFix="SLI/Crossfire 捕获模式 (慢)" AllowTransparency="允许透明度" Monitor="显示器" PrimaryMonitor="主监视器"
View file
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
@@ -7,6 +7,7 @@ WindowCapture.Priority.Exe="與標題相符,如沒有則找尋相同執行檔的視窗" CaptureCursor="擷取游標" Compatibility="多顯示卡相容性" +SLIFix="SLI/Crossfire擷取模式(慢)" AllowTransparency="允許透明" Monitor="顯示器" PrimaryMonitor="主顯示器"
View file
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
@@ -456,7 +456,7 @@ if (pressed && gc->config.mode == CAPTURE_MODE_HOTKEY) { info("Activate hotkey pressed"); os_atomic_set_long(&gc->hotkey_window, - (long)GetForegroundWindow()); + (long)(uintptr_t)GetForegroundWindow()); os_atomic_set_bool(&gc->deactivate_hook, true); os_atomic_set_bool(&gc->activate_hook_now, true); } @@ -1582,7 +1582,8 @@ bool activate_now = os_atomic_set_bool(&gc->activate_hook_now, false); if (activate_now) { - HWND hwnd = (HWND)os_atomic_load_long(&gc->hotkey_window); + HWND hwnd = (HWND)(uintptr_t)os_atomic_load_long( + &gc->hotkey_window); if (is_uwp_window(hwnd)) hwnd = get_uwp_actual_window(hwnd);
View file
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
@@ -95,7 +95,13 @@ 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00 - } + }, + { + 0xF8, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 + }, }; static const uint8_t mask_cmp[][MAX_CMP_SIZE] = { @@ -124,6 +130,21 @@ 0x39, 0x80, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x40, 0xB8, 0x00, 0x00, 0x00, 0x00 + }, + /* + * Windows 10 April 2018 + * 49 8B 87 58 40 00 00 mov rax, [r15+4058h] + * 39 98 C0 53 00 00 cmp [rax+53C0h], ebx + * 75 12 jnz short loc_1800A7FEC + * 48 8D 15 7F B6 09 00 lea rdx, addrErrorMsg + * + * Note: different instructions, last byte skipped due to MAX_CMP_SIZE + */ + { + 0x48, 0x8B, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x39, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x75, 0x00, + 0x48, 0x8D, 0x00, 0x00, 0x00, 0x00 } }; @@ -131,6 +152,7 @@ static const uint32_t code_offsets[][2] = { {3, 10}, {3, 9}, + {3, 9}, }; #else @@ -148,7 +170,13 @@ 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00 - } + }, + { + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, + 0xFF, 0x00, + 0xFF, 0x00, 0x00, 0x00, 0x00 + }, }; static const uint8_t mask_cmp[][MAX_CMP_SIZE] = { @@ -177,6 +205,20 @@ 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00 + }, + + /* + * Windows 10 April 2018 Update + * 8B 86 68 2B 00 00 mov eax, [esi+2B68h] + * 83 B8 F4 4D 00 00 00 cmp dword ptr [eax+4DF4h], 0 + * 75 0F jnz short loc_100D9A9C + * BA 08 71 01 10 mov edx, offset errMsg + */ + { + 0x8B, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x75, 0x00, + 0xBA, 0x00, 0x00, 0x00, 0x00 } }; @@ -184,6 +226,7 @@ static const uint32_t code_offsets[][2] = { {2, 8}, {2, 8}, + {2, 8}, }; #endif
View file
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
@@ -690,7 +690,7 @@ uint32_t tex_size = cy * pitch; uint32_t aligned_header = ALIGN(sizeof(struct shmem_data), 32); uint32_t aligned_tex = ALIGN(tex_size, 32); - uint32_t total_size = aligned_header + aligned_tex * 2; + uint32_t total_size = aligned_header + aligned_tex * 2 + 32; uintptr_t align_pos; if (!init_shared_info(total_size)) { @@ -706,6 +706,9 @@ align_pos &= ~(32 - 1); align_pos -= (uintptr_t)shmem_info; + if (align_pos < sizeof(struct shmem_data)) + align_pos += 32; + (*data)->last_tex = -1; (*data)->tex1_offset = (uint32_t)align_pos; (*data)->tex2_offset = (*data)->tex1_offset + aligned_tex;
View file
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
@@ -140,7 +140,7 @@ OBS_SYSTEM_PROCESS_INFORMATION2 *spi = data; for (;;) { - if (spi->UniqueProcessId == (HANDLE)process_id) { + if (spi->UniqueProcessId == (HANDLE)(DWORD_PTR)process_id) { break; } @@ -156,7 +156,7 @@ sti = (OBS_SYSTEM_THREAD_INFORMATION*)((BYTE*)spi + sizeof(*spi)); for (ULONG i = 0; i < spi->ThreadCount; i++) { - if (sti[i].UniqueThreadId == (HANDLE)thread_id) { + if (sti[i].UniqueThreadId == (HANDLE)(DWORD_PTR)thread_id) { info = &sti[i]; break; }
View file
obs-studio-21.1.2.tar.xz/plugins/win-dshow/data/locale/fil-PH.ini
Added
@@ -0,0 +1,39 @@ +VideoCaptureDevice="Pagkuha ng Bidyo na device" +Device="Device" +ColorSpace="Kulay sa Pagitan ng YUV" +ColorSpace.Default="I-Default" +ColorRange="Saklaw ng Kulat ng YUV" +ColorRange.Partial="Partial" +ColorRange.Full="Puno" +ConfigureAudio="I-Configure ang Audio" +ConfigureVideo="Ang Configure Bidyo" +ConfigureCrossbar="I-Configure ang Crossbar" +ResFPSType="Ang Resolusyon/Tipo ng FPS" +ResFPSType.Custom="I-Custom" +ResFPSType.DevPreferred="I-Device Default" +FPS.Matching="I-Match Output FPS" +FPS.Highest="Pinakamataas na FPS" +Resolution="Ang Resolusyon" +VideoFormat="Ang Bidyo Format" +VideoFormat.Any="Kahit Ano" +VideoFormat.Unknown="Unknown (%1)" +AudioOutputMode="Ang Audio Output Mode" +AudioOutputMode.Capture="I-Capture lamang ang audio" +AudioOutputMode.DirectSound="Ang Awput desktop audio (DirectSound)" +AudioOutputMode.WaveOut="Ang Output desktop audio (WaveOut)" +UseCustomAudioDevice="Gamitin ang custom audio device" +AudioDevice="Ang Audio Device" +Buffering="Nag Buffering" +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." +Buffering.AutoDetect="I-Auto-Detect" +Buffering.Enable="I-Enable" +Buffering.Disable="I-Disable" +Activate="I-Activate" +Deactivate="I-Deactivate" +FlipVertically="I-paltik patayo" +DeactivateWhenNotShowing="I-Deactivate kapag di nagpapakita" + +Bitrate="Bitrate" +Encoder.C985="Ang AVerMedia H.264 Encoder (c985)" +Encoder.C353="Ang AVerMedia H.264 Encoder" +
View file
obs-studio-21.1.2.tar.xz/plugins/win-dshow/data/locale/he-IL.ini
Added
@@ -0,0 +1,38 @@ +VideoCaptureDevice="התקן לכידת וידאו" +Device="התקן" +ColorSpace="מרחב צבע YUV" +ColorSpace.Default="ברירת מחדל" +ColorRange="טווח צבע YUV" +ColorRange.Partial="חלקי" +ColorRange.Full="מלא" +ConfigureAudio="הגדר שמע" +ConfigureVideo="הגדר וידאו" +ConfigureCrossbar="קביעת תצורה של המוט" +ResFPSType="סוג רזולוציה/קצב פריימים לשנייה" +ResFPSType.Custom="מותאם אישית" +ResFPSType.DevPreferred="התקן ברירת מחדל" +FPS.Matching="התאמת פלט קצב פריימים לשנייה" +FPS.Highest="קצב הפריימים לשנייה הגבוה ביותר" +Resolution="רזולוציה" +VideoFormat="פורמט וידאו" +VideoFormat.Any="כל" +VideoFormat.Unknown="לא ידוע (1%)" +AudioOutputMode="מצב פלט קול" +AudioOutputMode.Capture="לכידת שמע בלבד" +AudioOutputMode.DirectSound="פלט שמע בשולחן העבודה (DirectSound)" +AudioOutputMode.WaveOut="פלט שמע בשולחן העבודה (צליל יוצא)" +UseCustomAudioDevice="השתמש בהתקן שמע מותאם אישית" +AudioDevice="התקן שמע" +Buffering="אגירה" +Buffering.ToolTip="כאשר מאופשר, מאגר נתונים וידאו / אודיו כדי להבטיח את ההשמעה חלקה ביותר \n accurate אפשרי, אבל במחיר של חביון מוגברת. בעת שימוש \n בכביסה עם כרטיס לכידת וידאו, מומלץ להגדיר את הכרטיס ואת \ nprogram לאותו פרמטרט לקבלת התוצאות הטובות ביותר. \n\n כאשר הוא מושבת, מבטיח השמעת חביון נמוכה ביותר, אך במחיר של מסגרת \n דיוק חזרה. זה אידיאלי למצלמות פנים, או כאשר ברצונך להשתמש בחלון התצוגה המקדימה של \n כדי להציג קונסולה. \n\n גילוי אוטומטי (ברירת מחדל) מגדיר אותו כך שאם המכשיר יש עיכוב, והוא מושבת \ nif ללא עיכוב." +Buffering.AutoDetect="זיהוי אוטומטי" +Buffering.Enable="אפשר" +Buffering.Disable="בטל" +Activate="הפעל" +Deactivate="השבת" +FlipVertically="הפוך אנכית" +DeactivateWhenNotShowing="השבת כאשר לא נראה" + +Bitrate="קצב נתונים" +Encoder.C985="מקודד AverMedia H.264 (c985)" +
View file
obs-studio-21.1.2.tar.xz/plugins/win-dshow/data/locale/tl-PH.ini
Added
@@ -0,0 +1,39 @@ +VideoCaptureDevice="Ang Video Capture Device" +Device="Ang Device" +ColorSpace="Ang Kulay Ispasyo ng YUV" +ColorSpace.Default="Mga Default" +ColorRange="Ang Kulay Hangganan ng YUV" +ColorRange.Partial="Pang-una" +ColorRange.Full="Lahat" +ConfigureAudio="I-configure ang Audio" +ConfigureVideo="I-configure ang Video" +ConfigureCrossbar="I-configure ang Crossbar" +ResFPSType="Resolusyon/FPS na Tipo" +ResFPSType.Custom="Ang Custom" +ResFPSType.DevPreferred="Ang Default ng Device" +FPS.Matching="I-match ang Output ng FPS" +FPS.Highest="Pinakamataas na FPS" +Resolution="Resolusyon" +VideoFormat="Ang format ng video" +VideoFormat.Any="Kahit ano" +VideoFormat.Unknown="Hindi matukoy (%1)" +AudioOutputMode="Ang Audio Output Mode" +AudioOutputMode.Capture="Mag-capture ng mga audio lamang" +AudioOutputMode.DirectSound="Ang kinalabasan ng desktop audio (DirektangTunog)" +AudioOutputMode.WaveOut="Ang kinalabasan ng desktop audio (WaveOut)" +UseCustomAudioDevice="Gumamit ng mga audio device" +AudioDevice="Mga Audio Device" +Buffering="Ang Buffering" +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." +Buffering.AutoDetect="Awtomatik-detect" +Buffering.Enable="Paganahin" +Buffering.Disable="Hindi paganahin" +Activate="Gawing aktibo" +Deactivate="Ihinto ang pagiging aktibo" +FlipVertically="Patayong i-flip" +DeactivateWhenNotShowing="Ihinto ang pagiging aktibo kung walangpinapakita" + +Bitrate="Ang Bitrate" +Encoder.C985="Ang AVerMedia H.264 Encoder (c985)" +Encoder.C353="Ang AVerMedia H.264 Encoder" +
View file
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
@@ -1,32 +1,58 @@ project(win-mf) -set(win-mf_SOURCES - mf-plugin.cpp - mf-aac.cpp - mf-aac-encoder.cpp - mf-common.cpp - mf-encoder-descriptor.cpp - mf-h264.cpp - mf-h264-encoder.cpp) - -set(win-mf_HEADERS - mf-common.hpp - mf-encoder-descriptor.hpp - mf-aac-encoder.hpp - mf-h264-encoder.hpp) +set(ENABLE_WINMF FALSE CACHE BOOL "Enables the now deprecated win-mf plugin") + +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/mf-config.hpp.in" + "${CMAKE_CURRENT_BINARY_DIR}/mf-config.hpp") + +set(win-mf_config_HEADERS + "${CMAKE_CURRENT_BINARY_DIR}/mf-config.hpp") + +if(ENABLE_WINMF) + set(win-mf_SOURCES + mf-plugin.cpp + mf-aac.cpp + mf-aac-encoder.cpp + mf-common.cpp + mf-encoder-descriptor.cpp + mf-h264.cpp + mf-h264-encoder.cpp) + + set(win-mf_HEADERS + mf-common.hpp + mf-encoder-descriptor.hpp + mf-aac-encoder.hpp + mf-h264-encoder.hpp) + + set(win-mf_DEPS + d3d9 + dxva2 + uuid + mfplat + mfuuid + mf + wmcodecdspuuid) +else() + set(win-mf_SOURCES + mf-plugin.cpp) +endif() add_library(win-mf MODULE + ${win-mf_config_HEADERS} ${win-mf_SOURCES} ${win-mf_HEADERS}) target_link_libraries(win-mf - d3d9 - dxva2 - uuid - mfplat - mfuuid - mf - wmcodecdspuuid + ${win-mf_DEPS} libobs) -install_obs_plugin_with_data(win-mf data) +target_include_directories(win-mf + PUBLIC + "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>") + +if(ENABLE_WINMF) + install_obs_plugin_with_data(win-mf data) +else() + install_obs_plugin(win-mf) +endif()
View file
obs-studio-21.1.2.tar.xz/plugins/win-mf/data/locale/fil-PH.ini
Added
@@ -0,0 +1,30 @@ +MFAACEnc="Saligan ng Media AAC Enkoder" +Bitrate="Bitreyt" + +MF.H264.EncoderName="Saligan ng Media H264 Encoder" +MF.H264.Encoder="Pangalan ng Encoder" +MF.H264.LowLatency="Mababang Pagwalang-kilos (Huwag paganahin sa muling pag-order ng frame)" +MF.H264.BFrames="Magkakasunod na pagbilang ng B-Frame" +MF.H264.CustomBufsize="Gamitin ang Pasadyang Sukat ng Buffer" +MF.H264.BufferSize="Sukat ng Buffer" +MF.H264.CustomMaxBitrate="Gamitin ang pasadyang Max Bitrate" +MF.H264.Bitrate="Bitreyt" +MF.H264.MaxBitrate="Max Bitreyt" +MF.H264.KeyframeIntervalSec="Pagitan ng Keyframe (segundo, 0=awto)" +MF.H264.RateControl="Pagkontral ng Rate" +MF.H264.CBR="CBR (Patuloy na Bitrate)" +MF.H264.VBR="VBR (Baryante Bitrate)" +MF.H264.CQP="CQP (Patuloy na Kalidad)" +MF.H264.MinQP="Pinakamababang QP" +MF.H264.MaxQP="Pinakamataas QP" +MF.H264.QPI="QP Ay-Freym" +MF.H264.QPP="QP Pi-Freym" +MF.H264.QPB="QP Bi-Freym" +MF.H264.Profile="Propayl" +MF.H264.Advanced="Masulong" + +MF.H264.EncoderSWMicrosoft="Microsoft Software H.264 Enkoder" +MF.H264.EncoderHWAMD="AMD Coding Video ng Makina H. 264 Encoder (Pundasyon ng Media)" +MF.H264.EncoderHWIntel="Mabilis na Intel Sync H.264 Encoder (Pundasyon ng Media)" +MF.H264.EncoderHWNVIDIA="NVIDIA NVENC H.264 Encoder (Pundasyon ng Media)" +
View file
obs-studio-21.1.2.tar.xz/plugins/win-mf/data/locale/he-IL.ini
Added
@@ -0,0 +1,30 @@ +MFAACEnc="מקודד מדיה על בסיס AAC" +Bitrate="קצב נתונים" + +MF.H264.EncoderName="מקודד מדיה על בסיס H264" +MF.H264.Encoder="שם מקודד" +MF.H264.LowLatency="השהיה נמוכה (ביטול מסגרת הזמנה-חדשה)" +MF.H264.BFrames="ספירה B-מסגרת רצופה" +MF.H264.CustomBufsize="השתמש בגודל מותאם אישית לאוגר" +MF.H264.BufferSize="גודל אוגר" +MF.H264.CustomMaxBitrate="שימוש מותאם אישית במקסימום קצב נתונים" +MF.H264.Bitrate="קצב נתונים" +MF.H264.MaxBitrate="מקסימום קצב נתונים" +MF.H264.KeyframeIntervalSec="מרווח ערך המפתח פריים בשניות (0=אוטומטי)" +MF.H264.RateControl="בקרת קצב" +MF.H264.CBR="CBR(קצב נתונים קבוע)" +MF.H264.VBR="VBR(קצב נתונים משתנה)" +MF.H264.CQP="CQP(איכות קבועה)" +MF.H264.MinQP="מינימום QP" +MF.H264.MaxQP="מקסימום QP" +MF.H264.QPI="מסגרת-QP" +MF.H264.QPP="P-מסגרת QP" +MF.H264.QPB="B-מסגרת QP" +MF.H264.Profile="פרופיל" +MF.H264.Advanced="מתקדם" + +MF.H264.EncoderSWMicrosoft="מקודד תוכנת מייקרוסופט H.264" +MF.H264.EncoderHWAMD="קידוד מנוע AMD H.264 מקודד (בסיס מדיה)" +MF.H264.EncoderHWIntel="סנכרון מהיר Intel H.264 מקודד (בסיס מדיה)" +MF.H264.EncoderHWNVIDIA="מקודד NVIDIA NVENC H.264 מקודד (בסיס מדיה)" +
View file
obs-studio-21.1.2.tar.xz/plugins/win-mf/data/locale/tl-PH.ini
Added
@@ -0,0 +1,30 @@ +MFAACEnc="Ang Media Foundation AAC Encoder" +Bitrate="Ang Bitrate" + +MF.H264.EncoderName="Ang Media Foundation H264 Encoder" +MF.H264.Encoder="Pangalan ng Encoder" +MF.H264.LowLatency="Mababang Latency (Hindi paganahin ang frame re-ordering)" +MF.H264.BFrames="Magkasunod na B-Frame na pagbilang" +MF.H264.CustomBufsize="Gumamit ng Custom Buffer Size" +MF.H264.BufferSize="Ang Buffer Size" +MF.H264.CustomMaxBitrate="Gumamit ng Custom Max Bitrate" +MF.H264.Bitrate="Ang Bitrate" +MF.H264.MaxBitrate="Ang pinakamataas na Bitrate" +MF.H264.KeyframeIntervalSec="Ang Keyframe Interval (segundos, 0=awtomatik)" +MF.H264.RateControl="Ang Rate ng Kontrol" +MF.H264.CBR="Ang CBR (Constant Bitrate)" +MF.H264.VBR="Ang VBR (Variable Bitrate)" +MF.H264.CQP="Ang VBR (Variable Bitrate)" +MF.H264.MinQP="Pinakamaliit QP" +MF.H264.MaxQP="Pinakamataas QP" +MF.H264.QPI="Ang QP I-Frame" +MF.H264.QPP="Ang QP P-Frame" +MF.H264.QPB="Ang QP B-Frame" +MF.H264.Profile="Ang Profile" +MF.H264.Advanced="Advanced" + +MF.H264.EncoderSWMicrosoft="Microsoft Software H.264 Encoder" +MF.H264.EncoderHWAMD="AMD Video Coding Engine H.264 Encoder (Media Foundation)" +MF.H264.EncoderHWIntel="Intel Quick Sync H.264 Encoder (Media Foundation)" +MF.H264.EncoderHWNVIDIA="NVIDIA NVENC H.264 Encoder (Media Foundation)" +
View file
obs-studio-21.1.2.tar.xz/plugins/win-mf/mf-config.hpp.in
Added
@@ -0,0 +1,17 @@ +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef ON +#define ON 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef OFF +#define OFF 0 +#endif + +#define ENABLE_WINMF @ENABLE_WINMF@
View file
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
@@ -1,26 +1,36 @@ #include <obs-module.h> -#include <util/profiler.h> +#include "mf-config.hpp" +#if ENABLE_WINMF +#include <util/profiler.h> #include "mf-common.hpp" extern "C" extern void RegisterMFAACEncoder(); extern void RegisterMFH264Encoders(); +#endif extern "C" bool obs_module_load(void) { +#if ENABLE_WINMF MFStartup(MF_VERSION, MFSTARTUP_FULL); RegisterMFAACEncoder(); RegisterMFH264Encoders(); +#endif return true; } extern "C" void obs_module_unload(void) { +#if ENABLE_WINMF MFShutdown(); +#endif } OBS_DECLARE_MODULE() + +#if ENABLE_WINMF OBS_MODULE_USE_DEFAULT_LOCALE("win-mf", "en-US") +#endif
View file
obs-studio-21.1.2.tar.xz/plugins/win-wasapi/data/locale/fil-PH.ini
Added
@@ -0,0 +1,6 @@ +AudioInput="Pagkuha ng Pangpasok sa Awdyio" +AudioOutput="Kumuha ng Palabas na Awdiyo" +Device="Aparato" +Default="Kawalan" +UseDeviceTiming="Gamitin ang Kawalan ng mga selyo ng oras" +
View file
obs-studio-21.1.2.tar.xz/plugins/win-wasapi/data/locale/he-IL.ini
Added
@@ -0,0 +1,6 @@ +AudioInput="לכידת קלט שמע" +AudioOutput="לכידת פלט קולי" +Device="התקן" +Default="ברירת מחדל" +UseDeviceTiming="השתמש בהתקן חותמת זמן" +
View file
obs-studio-21.1.2.tar.xz/plugins/win-wasapi/data/locale/tl-PH.ini
Added
@@ -0,0 +1,6 @@ +AudioInput="Pampasok Audio Capture" +AudioOutput="Pamlabas na Audio Capture" +Device="Ang Device" +Default="Ang Default" +UseDeviceTiming="Gumamit ng Device Timestamps" +
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.