Overview
Request 5089 (accepted)
- Update to version 25.0.8:
* Revert "Merge pull request #1786 from brittneysclark/qsv_texture_based_encoding"
* libobs: Update version to 25.0.8
* CI: Update macOS deps to fix lua
* obs-ffmpeg: Add error message for non-zero GPU
* obs-ffmpeg: Add localization for NVENC error messages
* libobs: Clear last error on encoder shutdown
* obs-ffmpeg: Preserve error message from new NVENC
* obs-ffmpeg: Log why new NVENC might not be used
* UI: Remove requirement for replay buffer hotkey
* obs-filters: Add a user label to the LUT filter
* CI: Fix Azure Pipelines macOS runs
* obs-browser, obs-vst: Fix formatting
* UI: Update OSX to macOS in English translation
* rtmp-services: Add VirtWish service
* rtmp-services: Change Stripchat streaming service
* UI: Add white icons for dock titles
* Revert "UI: Remove unnecessary global variables"
* libobs-opengl: Fix viewport flip
* CI: Add main Github Actions workflow for branch pushes and PRs
* UI: Remove unnecessary global variables
* UI: Adjust a few margins
* obs-vst: Fix formatting
* obs-browser: Fix formatting
* UI: Remove all scenes in ClearSceneData
* libobs: Don't save removed sources
* rtmp-services: Update ChathostessModels service (#2745)
* obs-qsv11: Enable QSV texture-based encoding
* libobs: Fix plugin folder search path case on macOS
* UI: Add status icons for recording and streaming
- Created by boombatower almost 5 years ago
- In state accepted
-
Package maintainers:
boombatower,
darix, and
frispete
obs-studio.changes
Changed
-------------------------------------------------------------------
+Mon Apr 27 18:55:30 UTC 2020 - jimmy@boombatower.com
+
+- Update to version 25.0.8:
+ * Revert "Merge pull request #1786 from brittneysclark/qsv_texture_based_encoding"
+ * libobs: Update version to 25.0.8
+ * CI: Update macOS deps to fix lua
+ * obs-ffmpeg: Add error message for non-zero GPU
+ * obs-ffmpeg: Add localization for NVENC error messages
+ * libobs: Clear last error on encoder shutdown
+ * obs-ffmpeg: Preserve error message from new NVENC
+ * obs-ffmpeg: Log why new NVENC might not be used
+ * UI: Remove requirement for replay buffer hotkey
+ * obs-filters: Add a user label to the LUT filter
+ * CI: Fix Azure Pipelines macOS runs
+ * obs-browser, obs-vst: Fix formatting
+ * UI: Update OSX to macOS in English translation
+ * rtmp-services: Add VirtWish service
+ * rtmp-services: Change Stripchat streaming service
+ * UI: Add white icons for dock titles
+ * Revert "UI: Remove unnecessary global variables"
+ * libobs-opengl: Fix viewport flip
+ * CI: Add main Github Actions workflow for branch pushes and PRs
+ * UI: Remove unnecessary global variables
+ * UI: Adjust a few margins
+ * obs-vst: Fix formatting
+ * obs-browser: Fix formatting
+ * UI: Remove all scenes in ClearSceneData
+ * libobs: Don't save removed sources
+ * rtmp-services: Update ChathostessModels service (#2745)
+ * obs-qsv11: Enable QSV texture-based encoding
+ * libobs: Fix plugin folder search path case on macOS
+ * UI: Add status icons for recording and streaming
+ * CI: Add freetype dep on osx
+ * rtmp-services: Add WASDTV (#2697)
+ * docs/sphinx: Add Property Grouping
+ * libobs: Update version to 25.0.6 (mac release)
+ * obs-vst: Don't allow widget close on macOS
+ * CI: Add qt5-xml package for FreeBSD build task
+ * linux-jack: Fix conversion from channels to speaker layout
+ * obs-ffmpeg: Fix media source not closing file when inactive
+ * UI: Refuse drop operations from our own widgets
+ * UI: Fix projector on other than primary display
+ * linux-v4l2: Fix build with Clang 10.0
+ * obs-ffmpeg: Add error text for NVENC AVERROR_EXTERNAL
+ * obs-ffmpeg: Use new encoder error handling functions
+ * libobs: Add support functions for encoder error handling
+ * mac-syphon: Move the syphon plugin over to ARC
+ * CI: Rewrite new deps paths in obs-ouputs.so
+ * CI: Move clang format check into a seperate github workflow
+ * UI: Fix warning when compiling with Clang 10
+ * UI: Properly apply hide cursor on fullscreen projectors
+ * rtmp-services: Add niconico
+ * rtmp-services: Update castr.io rtmp ingest list
+ * UI: Fix missing includes
+ * libobs: Update version to 25.0.5 (mac release)
+ * libobs-opengl: Fix atan2 HLSL->GLSL transpile
+ * libobs-opengl: Add sincos to HLSL->GLSL transpile
+ * obs-browser: Fix formatting
+ * libobs/util: FreeBSD/Dragonfly exec path support
+ * UI: Log global audio devices and their filters
+ * CI: Update dependencies on macOS
+ * mac-capture: update owner_pid in `update_window`
+ * mac-capture: Use int in place of NSNumber for owner_pid
+ * deps: lzma: also use .note.GNU-stack on FreeBSD
+ * mac-capture: Only find window by window id when owner name and pid match
+ * mac-capture: Use window id to identify windows on MacOS
+ * plugins: Build ALSA plugin for FreeBSD
+ * UI: Fix previewLabel styling
+ * obs-outputs: Fix warnings WITH_RTMPS=OFF
+ * UI: Require selected source for Transform shortcut
+ * CI: Update macOS dependencies
+ * rtmp-services: Fix memory leak when update rtmp-custom-service.
+ * CI: Make processor count consistent
+ * rtmp-services: Update Bongacams servers and settings
+ * UI: Don't open Studio Mode's Program label in a window
+ * CMake: Build Windows modules with file descriptors
+
+-------------------------------------------------------------------
Sun Apr 05 21:29:12 UTC 2020 - jimmy@boombatower.com
- Update to version 25.0.4:
obs-studio.spec
Changed
Name: obs-studio
-Version: 25.0.4
+Version: 25.0.8
Release: 0
Summary: A recording/broadcasting program
Group: Productivity/Multimedia/Video/Editors and Convertors
_service
Changed
<services>
<service name="tar_scm" mode="disabled">
<param name="versionformat">@PARENT_TAG@</param>
- <param name="revision">refs/tags/25.0.4</param>
+ <param name="revision">refs/tags/25.0.8</param>
<param name="url">git://github.com/jp9000/obs-studio.git</param>
<param name="scm">git</param>
<param name="changesgenerate">enable</param>
_servicedata
Changed
<servicedata>
<service name="tar_scm">
<param name="url">git://github.com/jp9000/obs-studio.git</param>
- <param name="changesrevision">47058d9b6999f14bb5e2c76f7ae449efa2ca1c13</param>
+ <param name="changesrevision">4c0d4a1d8e1433897dcbbff6084b0f38a421f231</param>
</service>
</servicedata>
obs-studio-25.0.4.tar.xz/.cirrus.yml -> obs-studio-25.0.8.tar.xz/.cirrus.yml
Changed
freetype2 jackit jansson luajit mbedtls pulseaudio speexdsp
libsysinfo libudev-devd libv4l libx264 cmake ninja
mesa-libs lua52 pkgconf
- qt5-svg qt5-qmake qt5-buildtools qt5-x11extras
+ qt5-svg qt5-qmake qt5-buildtools qt5-x11extras qt5-xml
script:
- mkdir build
- cd build
obs-studio-25.0.8.tar.xz/.github/workflows
Added
+(directory)
obs-studio-25.0.8.tar.xz/.github/workflows/clang-format.yml
Added
+name: Clang Format Check
+
+on: [push, pull_request]
+jobs:
+ ubuntu64:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ submodules: 'recursive'
+
+ - name: Install clang format
+ run: |
+ # gets us newer clang
+ sudo bash -c "cat >> /etc/apt/sources.list" << LLVMAPT
+ # 3.8
+ deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
+ deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
+ LLVMAPT
+
+ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
+
+ sudo apt-get -qq update
+
+ sudo apt-get install -y clang-format-8
+
+ - name: Check the Formatting
+ run: |
+ ./formatcode.sh
+ ./CI/check-format.sh
+
+ macos64:
+ runs-on: macos-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ submodules: 'recursive'
+
+ - name: Install clang-format
+ run: |
+ brew install clang-format
+
+ - name: Check the Formatting
+ run: |
+ ./formatcode.sh
+ ./CI/check-format.sh
obs-studio-25.0.8.tar.xz/.github/workflows/main.yml
Added
+name: 'CI Multiplatform Build'
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ paths-ignore:
+ - '**.md'
+ branches:
+ - master
+
+env:
+ CEF_BUILD_VERSION: '3770'
+ CEF_VERSION: '75.1.16+g16a67c4+chromium-75.0.3770.100'
+
+jobs:
+ macos64:
+ name: 'macOS 64-bit'
+ runs-on: [macos-latest]
+ env:
+ MACOS_DEPS_VERSION: '2020-04-24'
+ VLC_VERSION: '3.0.8'
+ SPARKLE_VERSION: '1.23.0'
+ QT_VERSION: '5.14.1'
+ steps:
+ - name: 'Checkout'
+ uses: actions/checkout@v2
+ with:
+ submodules: 'recursive'
+ - name: 'Fetch Git Tags'
+ run: |
+ git fetch --prune --unshallow
+ echo ::set-env name=OBS_GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
+ echo ::set-env name=OBS_GIT_HASH::$(git rev-parse --short HEAD)
+ echo ::set-env name=OBS_GIT_TAG::$(git describe --tags --abbrev=0)
+ - name: 'Install prerequisites (Homebrew)'
+ shell: bash
+ run: |
+ brew bundle --file ./CI/scripts/macos/Brewfile
+ - name: 'Install prerequisite: Pre-built dependencies'
+ shell: bash
+ run: |
+ curl -L -O https://github.com/obsproject/obs-deps/releases/download/${{ env.MACOS_DEPS_VERSION }}/osx-deps-${{ env.MACOS_DEPS_VERSION }}.tar.gz
+ tar -xf ./osx-deps-${{ env.MACOS_DEPS_VERSION }}.tar.gz -C "/tmp"
+ - name: 'Install prerequisite: VLC'
+ shell: bash
+ run: |
+ curl -L -O https://downloads.videolan.org/vlc/${{ env.VLC_VERSION }}/vlc-${{ env.VLC_VERSION }}.tar.xz
+ if [ ! -d "${{ github.workspace }}/cmbuild" ]; then mkdir "${{ github.workspace }}/cmbuild"; fi
+ tar -xf ./vlc-${{ env.VLC_VERSION }}.tar.xz -C "${{ github.workspace }}/cmbuild"
+ - name: 'Install prerequisite: Sparkle'
+ shell: bash
+ run: |
+ curl -L -o sparkle.tar.bz2 https://github.com/sparkle-project/Sparkle/releases/download/${{ env.SPARKLE_VERSION }}/Sparkle-${{ env.SPARKLE_VERSION }}.tar.bz2
+ mkdir ${{ github.workspace }}/cmbuild/sparkle
+ tar -xf ./sparkle.tar.bz2 -C ${{ github.workspace }}/cmbuild/sparkle
+ sudo cp -R ${{ github.workspace }}/cmbuild/sparkle/Sparkle.framework /Library/Frameworks/Sparkle.framework
+ - name: 'Restore Chromium Embedded Framework from cache'
+ id: cef-cache
+ uses: actions/cache@v1
+ env:
+ CACHE_NAME: 'cef-cache'
+ with:
+ path: ${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64
+ key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.CEF_BUILD_VERSION }}
+ restore-keys: |
+ ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-
+ - name: 'Install prerequisite: Chromium Embedded Framework'
+ if: steps.cef-cache.outputs.cache-hit != 'true'
+ shell: bash
+ run: |
+ curl -L -O https://obs-nightly.s3-us-west-2.amazonaws.com/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64.tar.bz2
+ tar -xf ./cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64.tar.bz2 -C ${{ github.workspace }}/cmbuild/
+ cd ${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64
+ sed -i '.orig' '/add_subdirectory(tests\/ceftests)/d' ./CMakeLists.txt
+ # target 10.11
+ sed -i '.orig' s/\"10.9\"/\"10.11\"/ ./cmake/cef_variables.cmake
+ mkdir build && cd build
+ cmake -DCMAKE_CXX_FLAGS="-std=c++11 -stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-std=c++11 -stdlib=libc++" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 ..
+ make -j4
+ mkdir libcef_dll
+ cd ../../
+ - name: 'Configure'
+ shell: bash
+ run: |
+ mkdir ./build
+ cd ./build
+ cmake -DENABLE_SPARKLE_UPDATER=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 -DQTDIR="/usr/local/Cellar/qt/${{ env.QT_VERSION }}" -DDepsPath="/tmp/obsdeps" -DVLCPath="${{ github.workspace }}/cmbuild/vlc-${{ env.VLC_VERSION }}" -DBUILD_BROWSER=ON -DBROWSER_DEPLOY=ON -DBUILD_CAPTIONS=ON -DWITH_RTMPS=ON -DCEF_ROOT_DIR="${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_macosx64" ..
+ - name: 'Build'
+ shell: bash
+ working-directory: ${{ github.workspace }}/build
+ run: make -j4
+ - name: 'Install prerequisite: Packages app'
+ if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
+ shell: bash
+ run: |
+ curl -L -O https://s3-us-west-2.amazonaws.com/obs-nightly/Packages.pkg
+ sudo installer -pkg ./Packages.pkg -target /
+ - name: 'Install prerequisite: DMGbuild'
+ if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
+ shell: bash
+ run: |
+ pip3 install dmgbuild
+ - name: 'Package'
+ if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
+ shell: bash
+ run: |
+ FILE_DATE=$(date +%Y-%m-%d)
+ FILE_NAME=$FILE_DATE-${{ env.OBS_GIT_HASH }}-${{ env.OBS_GIT_TAG }}-osx.dmg
+ echo "::set-env name=FILE_NAME::${FILE_NAME}"
+ ./CI/scripts/macos/prepareApp.sh
+ dmgbuild -s ./CI/scripts/macos/package/settings.json "OBS" OBS.dmg
+ mkdir ./nightly
+ sudo mv ./OBS.dmg ./nightly/${FILE_NAME}
+ - name: 'Publish'
+ if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
+ uses: actions/upload-artifact@v2-preview
+ with:
+ name: '${{ env.FILE_NAME }}'
+ path: ./nightly/*.dmg
+ ubuntu64:
+ name: 'Linux/Ubuntu 64-bit'
+ runs-on: [ubuntu-latest]
+ steps:
+ - name: 'Checkout'
+ uses: actions/checkout@v2
+ with:
+ submodules: 'recursive'
+ - name: 'Fetch Git Tags'
+ run: |
+ git fetch --prune --unshallow
+ echo ::set-env name=OBS_GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
+ echo ::set-env name=OBS_GIT_HASH::$(git rev-parse --short HEAD)
+ echo ::set-env name=OBS_GIT_TAG::$(git describe --tags --abbrev=0)
+ - name: Install prerequisites (Apt)
+ shell: bash
+ run: |
+ sudo dpkg --add-architecture amd64
+ sudo apt-get -qq update
+ sudo apt-get install -y \
+ build-essential \
+ checkinstall \
+ cmake \
+ libasound2-dev \
+ libavcodec-dev \
+ libavdevice-dev \
+ libavfilter-dev \
+ libavformat-dev \
+ libavutil-dev \
+ libcurl4-openssl-dev \
+ libfdk-aac-dev \
+ libfontconfig-dev \
+ libfreetype6-dev \
+ libgl1-mesa-dev \
+ libjack-jackd2-dev \
+ libjansson-dev \
+ libluajit-5.1-dev \
+ libpulse-dev \
+ libqt5x11extras5-dev \
+ libspeexdsp-dev \
+ libswresample-dev \
+ libswscale-dev \
+ libudev-dev \
+ libv4l-dev \
+ libva-dev \
+ libvlc-dev \
+ libx11-dev \
+ libx264-dev \
+ libxcb-randr0-dev \
+ libxcb-shm0-dev \
+ libxcb-xinerama0-dev \
+ libxcomposite-dev \
+ libxinerama-dev \
+ libmbedtls-dev \
+ pkg-config \
+ python3-dev \
+ qtbase5-dev \
+ libqt5svg5-dev \
+ swig
+ - name: 'Install prerequisite: Chromium Embedded Framework'
+ shell: bash
+ run: |
+ curl -kL https://cdn-fastly.obsproject.com/downloads/cef_binary_${{ env.CEF_BUILD_VERSION }}_linux64.tar.bz2 -f --retry 5 -o cef.tar.bz2
+ if [ ! -d "${{ github.workspace }}/cmbuild" ]; then mkdir "${{ github.workspace }}/cmbuild"; fi
+ tar -C"${{ github.workspace }}/cmbuild" -xjf cef.tar.bz2
+ - name: 'Configure'
+ shell: bash
+ run: |
+ mkdir ./build
+ cd ./build
+ cmake -DUNIX_STRUCTURE=0 -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/obs-studio-portable" -DBUILD_CAPTIONS=ON -DWITH_RTMPS=ON -DBUILD_BROWSER=ON -DCEF_ROOT_DIR="${{ github.workspace }}/cmbuild/cef_binary_${{ env.CEF_BUILD_VERSION }}_linux64" ..
+ - name: 'Build'
+ shell: bash
+ working-directory: ${{ github.workspace }}/build
+ run: make -j4
+ - name: 'Package'
+ if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
+ shell: bash
+ run: |
+ FILE_DATE=$(date +%Y-%m-%d)
+ FILE_NAME=$FILE_DATE-${{ env.OBS_GIT_HASH }}-${{ env.OBS_GIT_TAG }}-linux64.tar.gz
+ echo "::set-env name=FILE_NAME::${FILE_NAME}"
+ cd ./build
+ sudo checkinstall --default --install=no --pkgname=obs-studio --fstrans=yes --backup=no --pkgversion="$(date +%Y%m%d)-git" --deldoc=yes
+ mkdir ../nightly
+ tar -cvzf "${FILE_NAME}" *.deb
+ mv "${FILE_NAME}" ../nightly/
+ cd -
+ - name: 'Publish'
+ if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
+ uses: actions/upload-artifact@v2-preview
+ with:
+ name: '${{ env.FILE_NAME }}'
+ path: './nightly/*.tar.gz'
+ win64:
+ name: 'Windows 64-bit'
+ runs-on: [windows-latest]
+ env:
+ QT_VERSION: '5.10.1'
+ CMAKE_GENERATOR: "Visual Studio 16 2019"
+ CMAKE_SYSTEM_VERSION: "10.0.18363.657"
+ WINDOWS_DEPS_VERSION: '2017'
+ TWITCH-CLIENTID: ${{ secrets.TWITCH_CLIENTID }}
+ TWITCH-HASH: ${{ secrets.TWITCH_HASH }}
+ MIXER-CLIENTID: ${{ secrets.MIXER_CLIENTID }}
+ MIXER-HASH: ${{ secrets.MIXER_HASH }}
+ RESTREAM-CLIENTID: ${{ secrets.RESTREAM-CLIENTID }}
+ RESTREAM-HASH: ${{ secrets.RESTREAM-HASH }}
+ steps:
+ - name: 'Add msbuild to PATH'
+ uses: microsoft/setup-msbuild@v1.0.0
+ - name: 'Checkout'
+ uses: actions/checkout@v2
+ with:
+ submodules: 'recursive'
+ - name: 'Fetch Git Tags'
+ shell: bash
+ run: |
+ git fetch --prune --unshallow
+ echo ::set-env name=OBS_GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
+ echo ::set-env name=OBS_GIT_HASH::$(git rev-parse --short HEAD)
+ echo ::set-env name=OBS_GIT_TAG::$(git describe --tags --abbrev=0)
+ - name: 'Install prerequisite: QT'
+ run: |
+ curl -kLO https://cdn-fastly.obsproject.com/downloads/Qt_${{ env.QT_VERSION }}.7z -f --retry 5 -C -
+ 7z x Qt_${{ env.QT_VERSION }}.7z -o"${{ github.workspace }}/cmbuild/QT"
+ - name: 'Install prerequisite: Pre-built dependencies'
+ run: |
+ curl -kLO https://cdn-fastly.obsproject.com/downloads/dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -f --retry 5 -C -
+ 7z x dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -o"${{ github.workspace }}/cmbuild/deps"
+ - name: 'Install prerequisite: VLC'
+ run: |
+ curl -kL https://cdn-fastly.obsproject.com/downloads/vlc.zip -f --retry 5 -o vlc.zip
+ 7z x vlc.zip -o"${{ github.workspace }}/cmbuild/vlc"
+ - name: 'Install prerequisite: Chromium Embedded Framework'
+ run: |
+ curl -kL https://cdn-fastly.obsproject.com/downloads/cef_binary_${{ env.CEF_VERSION }}_windows64_minimal.zip -f --retry 5 -o cef.zip
+ 7z x cef.zip -o"${{ github.workspace }}/cmbuild"
+ - name: 'Configure'
+ run: |
+ mkdir ./build
+ mkdir ./build64
+ cd ./build64
+ cmake -G"${{ env.CMAKE_GENERATOR }}" -A"x64" -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DBUILD_BROWSER=true -DBUILD_CAPTIONS=true -DCOMPILE_D3D12_HOOK=true -DDepsPath="${{ github.workspace }}/cmbuild/deps/win64" -DQTDIR="${{ github.workspace }}/cmbuild/QT/${{ env.QT_VERSION }}/msvc2017_64" -DCEF_ROOT_DIR="${{ github.workspace }}/cmdbuild/cef_binary_${{ env.CEF_VERSION }}_windows64_minimal" -DCOPIED_DEPENDENCIES=FALSE -DCOPY_DEPENDENCIES=TRUE ..
+ - name: 'Build'
+ run: msbuild /m /p:Configuration=RelWithDebInfo .\build64\obs-studio.sln
+ - name: 'Package'
+ if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
+ run: |
+ $env:FILE_DATE=(Get-Date -UFormat "%F")
+ $env:FILE_NAME="${env:FILE_DATE}-${{ env.OBS_GIT_HASH }}-${{ env.OBS_GIT_TAG }}-win64.zip"
+ echo "::set-env name=FILE_NAME::${env:FILE_NAME}"
+ robocopy .\build64\rundir\RelWithDebInfo .\build\ /E /XF .gitignore
+ 7z a ${env:FILE_NAME} .\build\*
+ - name: 'Publish'
+ if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
+ uses: actions/upload-artifact@v2-preview
+ with:
+ name: '${{ env.FILE_NAME }}'
+ path: '*-win64.zip'
+
+ win32:
+ name: 'Windows 32-bit'
+ runs-on: [windows-latest]
+ env:
+ QT_VERSION: '5.10.1'
+ CMAKE_GENERATOR: "Visual Studio 16 2019"
+ CMAKE_SYSTEM_VERSION: "10.0.18363.657"
+ WINDOWS_DEPS_VERSION: '2017'
+ TWITCH-CLIENTID: ${{ secrets.TWITCH_CLIENTID }}
+ TWITCH-HASH: ${{ secrets.TWITCH_HASH }}
+ MIXER-CLIENTID: ${{ secrets.MIXER_CLIENTID }}
+ MIXER-HASH: ${{ secrets.MIXER_HASH }}
+ RESTREAM-CLIENTID: ${{ secrets.RESTREAM-CLIENTID }}
+ RESTREAM-HASH: ${{ secrets.RESTREAM-HASH }}
+ steps:
+ - name: 'Add msbuild to PATH'
+ uses: microsoft/setup-msbuild@v1.0.0
+ - name: 'Checkout'
+ uses: actions/checkout@v2
+ with:
+ submodules: 'recursive'
+ - name: 'Fetch Git Tags'
+ shell: bash
+ run: |
+ git fetch --prune --unshallow
+ echo ::set-env name=OBS_GIT_BRANCH::$(git rev-parse --abbrev-ref HEAD)
+ echo ::set-env name=OBS_GIT_HASH::$(git rev-parse --short HEAD)
+ echo ::set-env name=OBS_GIT_TAG::$(git describe --tags --abbrev=0)
+ - name: 'Install prerequisite: QT'
+ run: |
+ curl -kLO https://cdn-fastly.obsproject.com/downloads/Qt_${{ env.QT_VERSION }}.7z -f --retry 5 -C -
+ 7z x Qt_${{ env.QT_VERSION }}.7z -o"${{ github.workspace }}/cmbuild/QT"
+ - name: 'Install prerequisite: Pre-built dependencies'
+ run: |
+ curl -kLO https://cdn-fastly.obsproject.com/downloads/dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -f --retry 5 -C -
+ 7z x dependencies${{ env.WINDOWS_DEPS_VERSION }}.zip -o"${{ github.workspace }}/cmbuild/deps"
+ - name: 'Install prerequisite: VLC'
+ run: |
+ curl -kL https://cdn-fastly.obsproject.com/downloads/vlc.zip -f --retry 5 -o vlc.zip
+ 7z x vlc.zip -o"${{ github.workspace }}/cmbuild/vlc"
+ - name: 'Install prerequisite: Chromium Embedded Framework'
+ run: |
+ curl -kL https://cdn-fastly.obsproject.com/downloads/cef_binary_${{ env.CEF_VERSION }}_windows32_minimal.zip -f --retry 5 -o cef.zip
+ 7z x cef.zip -o"${{ github.workspace }}/cmbuild"
+ - name: 'Configure'
+ run: |
+ mkdir ./build
+ mkdir ./build32
+ cd ./build32
+ cmake -G"${{ env.CMAKE_GENERATOR }}" -A"Win32" -DCMAKE_SYSTEM_VERSION="${{ env.CMAKE_SYSTEM_VERSION }}" -DBUILD_BROWSER=true -DBUILD_CAPTIONS=true -DCOMPILE_D3D12_HOOK=true -DDepsPath="${{ github.workspace }}/cmbuild/deps/win32" -DQTDIR="${{ github.workspace }}/cmbuild/QT/${{ env.QT_VERSION }}/msvc2017" -DCEF_ROOT_DIR="${{ github.workspace }}/cmdbuild/cef_binary_${{ env.CEF_VERSION }}_windows32_minimal" -DCOPIED_DEPENDENCIES=FALSE -DCOPY_DEPENDENCIES=TRUE ..
+ - name: 'Build'
+ run: msbuild /m /p:Configuration=RelWithDebInfo .\build32\obs-studio.sln
+ - name: 'Package'
+ if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
+ run: |
+ $env:FILE_DATE=(Get-Date -UFormat "%F")
+ $env:FILE_NAME="${env:FILE_DATE}-${{ env.OBS_GIT_HASH }}-${{ env.OBS_GIT_TAG }}-win32.zip"
+ echo "::set-env name=FILE_NAME::${env:FILE_NAME}"
+ robocopy .\build32\rundir\RelWithDebInfo .\build\ /E /XF .gitignore
+ 7z a ${env:FILE_NAME} .\build\*
+ - name: 'Publish'
+ if: success() && (github.event_name != 'pull_request' || contains( github.event.pull_request.labels.*.name, 'Seeking Testers'))
+ uses: actions/upload-artifact@v2-preview
+ with:
+ name: '${{ env.FILE_NAME }}'
+ path: '*-win32.zip'
obs-studio-25.0.4.tar.xz/CI/before-deploy-osx.sh -> obs-studio-25.0.8.tar.xz/CI/before-deploy-osx.sh
Changed
../CI/install/osx/packageApp.sh
-# fix obs outputs
+# fix obs outputs plugin it doesn't play nicely with dylibBundler at the moment
cp /usr/local/opt/mbedtls/lib/libmbedtls.12.dylib ./OBS.app/Contents/Frameworks/
cp /usr/local/opt/mbedtls/lib/libmbedcrypto.3.dylib ./OBS.app/Contents/Frameworks/
cp /usr/local/opt/mbedtls/lib/libmbedx509.0.dylib ./OBS.app/Contents/Frameworks/
install_name_tool -id @executable_path/../Frameworks/libmbedtls.12.dylib ./OBS.app/Contents/Frameworks/libmbedtls.12.dylib
install_name_tool -id @executable_path/../Frameworks/libmbedcrypto.3.dylib ./OBS.app/Contents/Frameworks/libmbedcrypto.3.dylib
install_name_tool -id @executable_path/../Frameworks/libmbedx509.0.dylib ./OBS.app/Contents/Frameworks/libmbedx509.0.dylib
-install_name_tool -change /usr/local/opt/mbedtls/lib/libmbedtls.12.dylib @executable_path/../Frameworks/libmbedtls.12.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
-install_name_tool -change /usr/local/opt/mbedtls/lib/libmbedcrypto.3.dylib @executable_path/../Frameworks/libmbedcrypto.3.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
-install_name_tool -change /usr/local/opt/mbedtls/lib/libmbedx509.0.dylib @executable_path/../Frameworks/libmbedx509.0.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
+install_name_tool -change libmbedtls.12.dylib @executable_path/../Frameworks/libmbedtls.12.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
+install_name_tool -change libmbedcrypto.3.dylib @executable_path/../Frameworks/libmbedcrypto.3.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
+install_name_tool -change libmbedx509.0.dylib @executable_path/../Frameworks/libmbedx509.0.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
install_name_tool -change /usr/local/opt/curl/lib/libcurl.4.dylib @executable_path/../Frameworks/libcurl.4.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
install_name_tool -change @rpath/libobs.0.dylib @executable_path/../Frameworks/libobs.0.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
+install_name_tool -change /tmp/obsdeps/bin/libjansson.4.dylib @executable_path/../Frameworks/libjansson.4.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
# copy sparkle into the app
hr "Copying Sparkle.framework"
obs-studio-25.0.4.tar.xz/CI/before-script-linux.sh -> obs-studio-25.0.8.tar.xz/CI/before-script-linux.sh
Changed
#!/bin/bash
-./formatcode.sh
-if ! ./CI/check-format.sh; then
- exit 1
-fi
-
set -ex
ccache -s || echo "CCache is not available."
mkdir build && cd build
obs-studio-25.0.4.tar.xz/CI/before-script-osx.sh -> obs-studio-25.0.8.tar.xz/CI/before-script-osx.sh
Changed
git fetch --tags
-./formatcode.sh
-if ! ./CI/check-format.sh; then
- exit 1
-fi
-
mkdir build
cd build
cmake -DENABLE_SPARKLE_UPDATER=ON \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 \
-DQTDIR=/usr/local/Cellar/qt/5.14.1 \
-DDepsPath=/tmp/obsdeps \
--DVLCPath=$PWD/../../vlc-3.0.4 \
+-DVLCPath=$PWD/../../vlc-3.0.8 \
-DBUILD_BROWSER=ON \
-DBROWSER_DEPLOY=ON \
-DBUILD_CAPTIONS=ON \
+-DWITH_RTMPS=ON \
-DCEF_ROOT_DIR=$PWD/../../cef_binary_${CEF_BUILD_VERSION}_macosx64 ..
obs-studio-25.0.4.tar.xz/CI/install-dependencies-linux.sh -> obs-studio-25.0.8.tar.xz/CI/install-dependencies-linux.sh
Changed
curl -L https://packagecloud.io/github/git-lfs/gpgkey | sudo apt-key add -
-# gets us newer clang
-sudo bash -c "cat >> /etc/apt/sources.list" << LLVMAPT
-# 3.8
-deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
-deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
-LLVMAPT
-
-wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
-
sudo apt-get -qq update
sudo apt-get install -y \
build-essential \
python3-dev \
qtbase5-dev \
libqt5svg5-dev \
- swig \
- clang-format-8
+ swig
# build cef
wget --quiet --retry-connrefused --waitretry=1 https://cdn-fastly.obsproject.com/downloads/cef_binary_${CEF_BUILD_VERSION}_linux64.tar.bz2
obs-studio-25.0.4.tar.xz/CI/install-dependencies-osx.sh -> obs-studio-25.0.8.tar.xz/CI/install-dependencies-osx.sh
Changed
brew update
#Base OBS Deps and ccache
-brew install jack speexdsp ccache mbedtls clang-format freetype fdk-aac
+brew install jack speexdsp ccache mbedtls freetype fdk-aac
brew install https://gist.githubusercontent.com/DDRBoxman/9c7a2b08933166f4b61ed9a44b242609/raw/ef4de6c587c6bd7f50210eccd5bd51ff08e6de13/qt.rb
-brew unlink swig
+if [ -d "$(brew --cellar)/swig" ]; then
+ brew unlink swig
+fi
brew install https://gist.githubusercontent.com/DDRBoxman/4cada55c51803a2f963fa40ce55c9d3e/raw/572c67e908bfbc1bcb8c476ea77ea3935133f5b5/swig.rb
pip install dmgbuild
# Fetch and untar prebuilt OBS deps that are compatible with older versions of OSX
hr "Downloading OBS deps"
-wget --quiet --retry-connrefused --waitretry=1 https://obs-nightly.s3.amazonaws.com/osx-deps-2018-08-09.tar.gz
-tar -xf ./osx-deps-2018-08-09.tar.gz -C /tmp
+wget --quiet --retry-connrefused --waitretry=1 https://github.com/obsproject/obs-deps/releases/download/2020-04-24/osx-deps-2020-04-24.tar.gz
+tar -xf ./osx-deps-2020-04-24.tar.gz -C /tmp
# Fetch vlc codebase
hr "Downloading VLC repo"
-wget --quiet --retry-connrefused --waitretry=1 https://downloads.videolan.org/vlc/3.0.4/vlc-3.0.4.tar.xz
-tar -xf vlc-3.0.4.tar.xz
+wget --quiet --retry-connrefused --waitretry=1 https://downloads.videolan.org/vlc/3.0.8/vlc-3.0.8.tar.xz
+tar -xf vlc-3.0.8.tar.xz
# Get sparkle
hr "Downloading Sparkle framework"
-wget --quiet --retry-connrefused --waitretry=1 -O sparkle.tar.bz2 https://github.com/sparkle-project/Sparkle/releases/download/1.20.0/Sparkle-1.20.0.tar.bz2
+wget --quiet --retry-connrefused --waitretry=1 -O sparkle.tar.bz2 https://github.com/sparkle-project/Sparkle/releases/download/1.23.0/Sparkle-1.23.0.tar.bz2
mkdir ./sparkle
tar -xf ./sparkle.tar.bz2 -C ./sparkle
sudo cp -R ./sparkle/Sparkle.framework /Library/Frameworks/Sparkle.framework
obs-studio-25.0.8.tar.xz/CI/scripts
Added
+(directory)
obs-studio-25.0.8.tar.xz/CI/scripts/macos
Added
+(directory)
obs-studio-25.0.8.tar.xz/CI/scripts/macos/Brewfile
Added
+brew "jack"
+brew "speexdsp"
+brew "cmake"
+brew "freetype"
+brew "fdk-aac"
+brew "https://gist.githubusercontent.com/DDRBoxman/9c7a2b08933166f4b61ed9a44b242609/raw/ef4de6c587c6bd7f50210eccd5bd51ff08e6de13/qt.rb"
+brew "swig", link: false
+brew "https://gist.githubusercontent.com/DDRBoxman/4cada55c51803a2f963fa40ce55c9d3e/raw/572c67e908bfbc1bcb8c476ea77ea3935133f5b5/swig.rb"
obs-studio-25.0.8.tar.xz/CI/scripts/macos/app
Added
+(directory)
obs-studio-25.0.8.tar.xz/CI/scripts/macos/app/Info.plist
Added
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleIconFile</key>
+ <string>obs.icns</string>
+ <key>CFBundleName</key>
+ <string>OBS</string>
+ <key>CFBundleGetInfoString</key>
+ <string>OBS - Free and Open Source Streaming/Recording Software</string>
+ <key>CFBundleExecutable</key>
+ <string>obs</string>
+ <key>CFBundleIdentifier</key>
+ <string>com.obsproject.obs-studio</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>10.8.5</string>
+ <key>NSHighResolutionCapable</key>
+ <true/>
+ <key>LSAppNapIsDisabled</key>
+ <true/>
+ <key>NSCameraUsageDescription</key>
+ <string>OBS needs to access the camera to enable camera sources to work.</string>
+ <key>NSMicrophoneUsageDescription</key>
+ <string>OBS needs to access the microphone to enable audio input.</string>
+</dict>
+</plist>
obs-studio-25.0.8.tar.xz/CI/scripts/macos/app/OBSPublicDSAKey.pem
Added
+-----BEGIN PUBLIC KEY-----
+MIIGPDCCBC4GByqGSM44BAEwggQhAoICAQCZZZ2y7H2GJmMfP4KQihJTJOoiGNUw
+mue6sqMbH+utRykRnSKBZux6R665eRFMpNgrgFO1TLLGbdD2U31KiGtCvFJOmOl3
++QP055BuXjEG36NU7AWEFLAlbDlr/2D3oumq3Ib3iMnnr9RrVztJ2VFOvVio1eWr
+ZxboVwKPK8D6BqsWiv15vbYlJnTC4Fls6ySmdjVBxwoPlTaMu1ysi5DfbIZ93s5u
+aQt1FvXuWtPBWjyVUORcNbcWf49E5R2pV0OSBK95Hw2/wXz4vmj+w92dTePGnVaW
+Me4CoF5PIeZILwp6DCLStX4eW2WG1NChJTC8zeQ/3bMMoGyKM/MadyvrDqMywsKY
+caxkIwHrDKOEdXXGo80dIwZMMLipPA8DKhx5ojphfkeXjIhKSx+49knXT3ED5okE
+Wai7tGUXj/8D8sGh+7b+AVsdujvr4v8WQaZiKUOZ2IIHOg3VLz9T9v0zet1Yt987
+KNymFcp2CHeJ6KnDP/ZGQ6Nl0HsPxUgscsXV+R2FEc8Q1j0Ukkuxnopa0E4/huUu
+gjyRzpXD734qFMDf7LcXca6qNjBor6gVj5sRyRKCpZ+KQfMUlr8jp506ztYSyeJu
+dxJV30tQgztwkbrs02CqOt4Z3Peo6sdht7hWKSPVwmja3tq8/TfUSSoo6wKYN9/w
+Mf3dVeRF8hCzJQIVAJnzuzmzQhCKPiQnl3jh5qGII2XfAoICAQCCVATAff89ceHj
+ROHEbHTQFpVxJ/kRZPfxnU46DSw79Tih7tthV68oakPSOTP3cx/Tga0GwogarZ9N
+F2VVan5w9OQSSewXsr5UDT5bnmJF+h+JB7TMy+sXZBYobUqjlUd5VtKc8RsN86P4
+s7xbK0mA+hfe+27r18JT81/eH3xUfh7UOUGSdMN2Ch9f7RFSMZIgUAZUzu2K3ODp
+hPgtc2QJ8QVAp7GLvQgw8ZUME/ChZslyBIyJvYgUIxfxlgRWYro5pQT7/ngkgdXo
+wlghHKkldwMuY3zaFdhPnFNuEUEtc18ILsbz0+AnagCUd6n+3safskCRqLIHMOY6
+iLBSZPX9hJQhVCqSqz1VNDDww8FNa/fojJ1Lr/TI0I+0Ib2pCiY2LChXUqGY5SLZ
+2KNs5qFsyZP+I0L8YsGwqvUYyFwk7Ok224n0NtaOwqpLCrtXd/i6DaDNiaoJuwJC
+1ELCfaZivorgkC5rhBt2H7qWUAR+EtrFE/gb0k/G5EIhjYql7onGbX+G2re38vQA
+fg1pzguhig2dafP/BxMLZrn1Gg61xzmEYPuS9gclktaf675srv8GVb46VkOxXL+D
+YvTmpJPP7UUOVlmAMCo4j4y09MW3jq9TDp42VTLeZVubyjslGnavlnq1O+ZyXUye
+1FMeby65sIbSHHHwoFnRv3hLSEXI5gOCAgYAAoICAQCUkYnZkPfHfOJZI403xUYP
+CE/bLpkza074Xo6EXElsWRnpQgNTx+JFOvItgj3v0OkIqDin9UredKOwfkiftslV
+jxUVKA6I5kwnGvCpvTpQMLyLjq+VQr+J2D6eId6tV/iajhdu5r4JThU8KllT7Ywb
+NAur34ftLNCVAMRUaDNeEoHfePgderW384e+lbvpmtifmBluammGSxxRtUsdjvJZ
+BFkhaJu86CKxcU7D1lbPVOtV/jaxz6d16VdGcfBdi2LzXZzZtYpT9XGPX3NF+xii
+spAURWsoe11LTRXF+eJhgCm5iIDN3kh1HEQKYKAVpmrcM0aFzk/NpS+tFyU72vaq
+IRSSJw/aa1oELOAakG5oPldc4RcYWl32sbnVwXHO7TZvgTrBSC10o65MAC5CHP/s
+b07heDYAIt7re7szvOYq+c/9zAMAlu3pcO8MqaXYMmybdHBXHQ2b+DdJWHmIUWcX
+CbUzr09vzGkJAvqsXqbmJPr8aixrO75DhT0iDTILLWe/GWK51nf+Tg0pNxVgGyAl
+BqvRqqo7SSDu9FMkwQesFFHhuoHLyEHwVPJ+sMQTNwQcm9c6YuW8EYDRSkeKLWYk
+3fkjG+Pe9uVE8a1taDg3FjSY0UqjUT6XMw+i0Lajyus2L6wFBwrrGM6E4xa6x1CC
+MGjmuSOlPA1umQsToIcO4g==
+-----END PUBLIC KEY-----
obs-studio-25.0.8.tar.xz/CI/scripts/macos/package
Added
+(directory)
obs-studio-25.0.8.tar.xz/CI/scripts/macos/package/settings.json
Added
+{
+ "title": "OBS",
+ "background": "./CI/scripts/macos/package/background.tiff",
+ "icon": "./CI/scripts/macos/app/obs.icns",
+ "format": "UDZO",
+ "compression-level": 9,
+ "window": { "position": { "x": 100, "y": 100 },
+ "size": { "width": 540, "height": 380 } },
+ "contents": [
+ { "x": 120, "y": 180, "type": "file",
+ "path": "./OBS.app" },
+ { "x": 420, "y": 180, "type": "link", "path": "/Applications" }
+ ]
+}
obs-studio-25.0.8.tar.xz/CI/scripts/macos/package/src
Added
+(directory)
obs-studio-25.0.8.tar.xz/CI/scripts/macos/package/src/makeRetinaBG
Added
+tiffutil -cathidpicheck background.png background@2x.png -out background.tiff
obs-studio-25.0.8.tar.xz/CI/scripts/macos/packageApp.sh
Added
+#!/usr/bin/env bash
+
+# Exit if something fails
+set -e
+
+rm -rf ./OBS.app
+
+mkdir OBS.app
+mkdir OBS.app/Contents
+mkdir OBS.app/Contents/MacOS
+mkdir OBS.app/Contents/PlugIns
+mkdir OBS.app/Contents/Resources
+
+cp -R rundir/RelWithDebInfo/bin/ ./OBS.app/Contents/MacOS
+cp -R rundir/RelWithDebInfo/data ./OBS.app/Contents/Resources
+cp ../CI/scripts/macos/app/obs.icns ./OBS.app/Contents/Resources
+cp -R rundir/RelWithDebInfo/obs-plugins/ ./OBS.app/Contents/PlugIns
+cp ../CI/scripts/macos/app/Info.plist ./OBS.app/Contents
+
+../CI/scripts/macos/package/dylibBundler -b -cd -d ./OBS.app/Contents/Frameworks -p @executable_path/../Frameworks/ \
+-s ./OBS.app/Contents/MacOS \
+-x ./OBS.app/Contents/PlugIns/coreaudio-encoder.so \
+-x ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so \
+-x ./OBS.app/Contents/PlugIns/frontend-tools.so \
+-x ./OBS.app/Contents/PlugIns/image-source.so \
+-x ./OBS.app/Contents/PlugIns/linux-jack.so \
+-x ./OBS.app/Contents/PlugIns/mac-avcapture.so \
+-x ./OBS.app/Contents/PlugIns/mac-capture.so \
+-x ./OBS.app/Contents/PlugIns/mac-decklink.so \
+-x ./OBS.app/Contents/PlugIns/mac-syphon.so \
+-x ./OBS.app/Contents/PlugIns/mac-vth264.so \
+-x ./OBS.app/Contents/PlugIns/obs-browser.so \
+-x ./OBS.app/Contents/PlugIns/obs-browser-page \
+-x ./OBS.app/Contents/PlugIns/obs-ffmpeg.so \
+-x ./OBS.app/Contents/PlugIns/obs-filters.so \
+-x ./OBS.app/Contents/PlugIns/obs-transitions.so \
+-x ./OBS.app/Contents/PlugIns/obs-vst.so \
+-x ./OBS.app/Contents/PlugIns/rtmp-services.so \
+-x ./OBS.app/Contents/MacOS/obs \
+-x ./OBS.app/Contents/MacOS/obs-ffmpeg-mux \
+-x ./OBS.app/Contents/MacOS/obslua.so \
+-x ./OBS.app/Contents/MacOS/_obspython.so \
+-x ./OBS.app/Contents/PlugIns/obs-x264.so \
+-x ./OBS.app/Contents/PlugIns/text-freetype2.so \
+-x ./OBS.app/Contents/PlugIns/obs-libfdk.so
+# -x ./OBS.app/Contents/PlugIns/obs-outputs.so \
+
+/usr/local/Cellar/qt/${QT_VERSION}/bin/macdeployqt ./OBS.app
+
+mv ./OBS.app/Contents/MacOS/libobs-opengl.so ./OBS.app/Contents/Frameworks
+
+rm -f -r ./OBS.app/Contents/Frameworks/QtNetwork.framework
+
+# put qt network in here becasuse streamdeck uses it
+cp -R /usr/local/opt/qt/lib/QtNetwork.framework ./OBS.app/Contents/Frameworks
+chmod -R +w ./OBS.app/Contents/Frameworks/QtNetwork.framework
+rm -r ./OBS.app/Contents/Frameworks/QtNetwork.framework/Headers
+rm -r ./OBS.app/Contents/Frameworks/QtNetwork.framework/Versions/5/Headers/
+chmod 644 ./OBS.app/Contents/Frameworks/QtNetwork.framework/Versions/5/Resources/Info.plist
+install_name_tool -id @executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork ./OBS.app/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork
+install_name_tool -change /usr/local/Cellar/qt/${QT_VERSION}/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork
+
+
+# decklink ui qt
+install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so
+install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so
+install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so
+
+# frontend tools qt
+install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ./OBS.app/Contents/PlugIns/frontend-tools.so
+install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/PlugIns/frontend-tools.so
+install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ./OBS.app/Contents/PlugIns/frontend-tools.so
+
+# vst qt
+install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ./OBS.app/Contents/PlugIns/obs-vst.so
+install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/PlugIns/obs-vst.so
+install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ./OBS.app/Contents/PlugIns/obs-vst.so
+install_name_tool -change /usr/local/opt/qt/lib/QtMacExtras.framework/Versions/5/QtMacExtras @executable_path/../Frameworks/QtMacExtras.framework/Versions/5/QtMacExtras ./OBS.app/Contents/PlugIns/obs-vst.so
obs-studio-25.0.8.tar.xz/CI/scripts/macos/prepareApp.sh
Added
+#!/usr/bin/env bash
+
+# Exit if something fails
+set -e
+
+cd ./build
+
+mv ./rundir/RelWithDebInfo/data/obs-scripting/obslua.so ./rundir/RelWithDebInfo/bin/
+mv ./rundir/RelWithDebInfo/data/obs-scripting/_obspython.so ./rundir/RelWithDebInfo/bin/
+mv ./rundir/RelWithDebInfo/data/obs-scripting/obspython.py ./rundir/RelWithDebInfo/bin/
+
+../CI/scripts/macos/packageApp.sh
+
+# fix obs outputs plugin it doesn't play nicely with dylibBundler at the moment
+chmod +w ./OBS.app/Contents/Frameworks/*.dylib
+install_name_tool -change libmbedtls.12.dylib @executable_path/../Frameworks/libmbedtls.12.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
+install_name_tool -change libmbedcrypto.3.dylib @executable_path/../Frameworks/libmbedcrypto.3.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
+install_name_tool -change libmbedx509.0.dylib @executable_path/../Frameworks/libmbedx509.0.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
+install_name_tool -change /usr/local/opt/curl/lib/libcurl.4.dylib @executable_path/../Frameworks/libcurl.4.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
+install_name_tool -change @rpath/libobs.0.dylib @executable_path/../Frameworks/libobs.0.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
+install_name_tool -change /tmp/obsdeps/bin/libjansson.4.dylib @executable_path/../Frameworks/libjansson.4.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
+
+cp -R ${GITHUB_WORKSPACE}/cmbuild/sparkle/Sparkle.framework ./OBS.app/Contents/Frameworks/
+install_name_tool -change @rpath/Sparkle.framework/Versions/A/Sparkle @executable_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle ./OBS.app/Contents/MacOS/obs
+
+sudo mkdir -p ./OBS.app/Contents/Frameworks
+sudo cp -R ${GITHUB_WORKSPACE}/cmbuild/cef_binary_${CEF_BUILD_VERSION}_macosx64/Release/Chromium\ Embedded\ Framework.framework ./OBS.app/Contents/Frameworks/
+install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ./OBS.app/Contents/Plugins/obs-browser.so
+install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/Plugins/obs-browser.so
+install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ./OBS.app/Contents/Plugins/obs-browser.so
+
+cp ../CI/scripts/macos/app/OBSPublicDSAKey.pem ./OBS.app/Contents/Resources
+
+plutil -insert CFBundleVersion -string $(basename ${GITHUB_REF}) ./OBS.app/Contents/Info.plist
+plutil -insert CFBundleShortVersionString -string $(basename ${GITHUB_REF}) ./OBS.app/Contents/Info.plist
+plutil -insert OBSFeedsURL -string https://obsproject.com/osx_update/feeds.xml ./OBS.app/Contents/Info.plist
+plutil -insert SUFeedURL -string https://obsproject.com/osx_update/stable/updates.xml ./OBS.app/Contents/Info.plist
+plutil -insert SUPublicDSAKeyFile -string OBSPublicDSAKey.pem ./OBS.app/Contents/Info.plist
+
+mv ./OBS.app ../OBS.app
+cd -
obs-studio-25.0.4.tar.xz/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/CMakeLists.txt
Changed
list(GET UI_VERSION_SEMANTIC 0 UI_VERSION_MAJOR)
list(GET UI_VERSION_SEMANTIC 1 UI_VERSION_MINOR)
list(GET UI_VERSION_SEMANTIC 2 UI_VERSION_PATCH)
+ set(OBS_COMPANY_NAME "OBS")
+ set(OBS_PRODUCT_NAME "OBS Studio")
+ set(OBS_COMMENTS "Free and open source software for video recording and live streaming")
+ set(OBS_LEGAL_COPYRIGHT "(C) Hugh Bailey")
+ set(MODULE_DESCRIPTION "OBS Studio")
configure_file(UI/obs.rc.in ${PROJECT_BINARY_DIR}/obs.rc)
endif()
obs-studio-25.0.4.tar.xz/UI/data/locale/en-US.ini -> obs-studio-25.0.8.tar.xz/UI/data/locale/en-US.ini
Changed
New="New"
Duplicate="Duplicate"
Enable="Enable"
-DisableOSXVSync="Disable OSX V-Sync"
-ResetOSXVSyncOnExit="Reset OSX V-Sync on Exit"
+DisableOSXVSync="Disable macOS V-Sync"
+ResetOSXVSyncOnExit="Reset macOS V-Sync on Exit"
HighResourceUsage="Encoding overloaded! Consider turning down video settings or using a faster encoding preset."
Transition="Transition"
QuickTransitions="Quick Transitions"
Output.RecordError.Title="Recording error"
Output.RecordError.Msg="An unspecified error occurred while recording."
Output.RecordError.EncodeErrorMsg="An encoder error occurred while recording."
-Output.ReplayBuffer.NoHotkey.Title="No hotkey set!"
-Output.ReplayBuffer.NoHotkey.Msg="No save hotkey set for replay buffer. Please set the \"Save\" hotkey to use for saving replay recordings."
# output recording messages
Output.BadPath.Title="Bad File Path"
Basic.Settings.Output.ReplayBuffer.MegabytesMax="Maximum Memory (Megabytes)"
Basic.Settings.Output.ReplayBuffer.Estimate="Estimated memory usage: %1 MB"
Basic.Settings.Output.ReplayBuffer.EstimateUnknown="Cannot estimate memory usage. Please set maximum memory limit."
-Basic.Settings.Output.ReplayBuffer.HotkeyMessage="(Note: Make sure to set a hotkey for the replay buffer in the hotkeys section)"
Basic.Settings.Output.ReplayBuffer.Prefix="Replay Buffer Filename Prefix"
Basic.Settings.Output.ReplayBuffer.Suffix="Suffix"
Basic.Settings.Output.Simple.SavePath="Recording Path"
obs-studio-25.0.4.tar.xz/UI/data/themes/Acri.qss -> obs-studio-25.0.8.tar.xz/UI/data/themes/Acri.qss
Changed
/* Dock stuff */
QDockWidget {
+ titlebar-close-icon: url('./Dark/Close.svg');
+ titlebar-normal-icon: url('./Dark/Popout.svg');
+}
+
+QDockWidget {
background: #181819;
border: none;
font-size: 14px;
subcontrol-position: top right;
subcontrol-origin: padding;
right: 0px;
+ margin: 0px;
}
QDockWidget::float-button {
obs-studio-25.0.4.tar.xz/UI/data/themes/Dark.qss -> obs-studio-25.0.8.tar.xz/UI/data/themes/Dark.qss
Changed
/* Dock Widget */
+QDockWidget {
+ titlebar-close-icon: url('./Dark/Close.svg');
+ titlebar-normal-icon: url('./Dark/Popout.svg');
+}
+
QDockWidget::title {
text-align: center;
background-color: rgb(70,69,70);
obs-studio-25.0.8.tar.xz/UI/data/themes/Dark/close.svg
Added
+<svg class="feather feather-plus" fill="none" stroke="#FFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg"><line x1="2" x2="28" y1="2" y2="28" /><line x1="2" x2="28" y1="28" y2="2" /></svg>
obs-studio-25.0.8.tar.xz/UI/data/themes/Dark/popout.svg
Added
+<svg class="feather feather-plus" fill="none" stroke="#FFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" version="1.1" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><rect x="2" y="2" width="24" height="20" /><rect x="2" y="2" width="24" height="4" style="fill:#fff" /><rect x="14" y="18" width="24" height="20" /><rect x="14" y="18" width="24" height="4" style="fill:#fff" /></svg>
obs-studio-25.0.4.tar.xz/UI/data/themes/Rachni.qss -> obs-studio-25.0.8.tar.xz/UI/data/themes/Rachni.qss
Changed
/***********************/
QDockWidget {
+ titlebar-close-icon: url('./Dark/Close.svg');
+ titlebar-normal-icon: url('./Dark/Popout.svg');
+}
+
+QDockWidget {
background: rgb(49, 54, 59); /* Blue-gray */
border: 1px solid rgb(58, 64, 69); /* Light Blue-gray */
}
obs-studio-25.0.4.tar.xz/UI/forms/OBSBasic.ui -> obs-studio-25.0.8.tar.xz/UI/forms/OBSBasic.ui
Changed
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QWidget" name="transitionsContainer" native="true">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
- <number>4</number>
+ <number>2</number>
</property>
<property name="leftMargin">
- <number>1</number>
+ <number>0</number>
</property>
<property name="topMargin">
- <number>1</number>
+ <number>0</number>
</property>
<property name="rightMargin">
- <number>1</number>
+ <number>0</number>
</property>
<property name="bottomMargin">
- <number>2</number>
+ <number>0</number>
</property>
<item>
<widget class="QComboBox" name="transitions">
obs-studio-25.0.4.tar.xz/UI/forms/OBSBasicSettings.ui -> obs-studio-25.0.8.tar.xz/UI/forms/OBSBasicSettings.ui
Changed
</widget>
</item>
<item row="2" column="1">
- <widget class="QLabel" name="label_45">
- <property name="text">
- <string>Basic.Settings.Output.ReplayBuffer.HotkeyMessage</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1">
<widget class="QLabel" name="simpleRBEstimate">
<property name="text">
<string notr="true"/>
</widget>
</item>
<item row="2" column="1">
- <widget class="QLabel" name="advRBHotkeyLabel">
- <property name="text">
- <string>Basic.Settings.Output.ReplayBuffer.HotkeyMessage</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1">
<widget class="QLabel" name="advRBEstimate">
<property name="text">
<string notr="true"/>
obs-studio-25.0.8.tar.xz/UI/forms/images/recording-active.svg
Added
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 2.1166666 2.1166667"
+ height="8"
+ width="8">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-294.88332)"
+ id="layer1">
+ <circle
+ r="0.52916664"
+ cy="295.94165"
+ cx="1.0583333"
+ id="path4544"
+ style="fill:#d40000;fill-opacity:1;stroke:none;stroke-width:0.06614584;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ </g>
+</svg>
obs-studio-25.0.8.tar.xz/UI/forms/images/recording-inactive.svg
Added
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 2.1166666 2.1166667"
+ height="8"
+ width="8">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-294.88332)"
+ id="layer1">
+ <circle
+ r="0.52916664"
+ cy="295.94165"
+ cx="1.0583333"
+ id="path4544"
+ style="fill:#999999;fill-opacity:1;stroke:none;stroke-width:0.06614584;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ </g>
+</svg>
obs-studio-25.0.8.tar.xz/UI/forms/images/recording-pause-inactive.svg
Added
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 5.2916665 5.2916668"
+ height="20"
+ width="20">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-291.70832)"
+ id="layer1">
+ <rect
+ y="293.03125"
+ x="1.3229166"
+ height="2.6458333"
+ width="1.0583333"
+ id="rect822"
+ style="fill:#999999;fill-opacity:1;stroke:none;stroke-width:0.5020116;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ <rect
+ y="293.03125"
+ x="2.9104166"
+ height="2.6458333"
+ width="1.0583333"
+ id="rect822-1"
+ style="fill:#999999;fill-opacity:1;stroke:none;stroke-width:0.5020116;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ </g>
+</svg>
obs-studio-25.0.8.tar.xz/UI/forms/images/recording-pause.svg
Added
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 5.2916665 5.2916668"
+ height="20"
+ width="20">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-291.70832)"
+ id="layer1">
+ <rect
+ y="293.03125"
+ x="1.3229166"
+ height="2.6458333"
+ width="1.0583333"
+ id="rect822"
+ style="fill:#d4ae00;fill-opacity:1;stroke:none;stroke-width:0.5020116;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ <rect
+ y="293.03125"
+ x="2.9104166"
+ height="2.6458333"
+ width="1.0583333"
+ id="rect822-1"
+ style="fill:#d4ae00;fill-opacity:1;stroke:none;stroke-width:0.5020116;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ </g>
+</svg>
obs-studio-25.0.8.tar.xz/UI/forms/images/streaming-active.svg
Added
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 2.1166666 2.1166667"
+ height="8"
+ width="8">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-294.88332)"
+ id="layer1">
+ <circle
+ r="0.39687499"
+ cy="295.94165"
+ cx="1.0582843"
+ id="path4544-3"
+ style="fill:#5079cc;fill-opacity:1;stroke:none;stroke-width:0.13229169;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ <path
+ d="M 0.41577997,296.5497 A 0.79374999,0.79374999 0 0 1 0.13224262,295.94165 0.79374999,0.79374999 0 0 1 0.41577996,295.3336"
+ id="path4546-7"
+ style="fill:none;fill-opacity:1;stroke:#5079cc;stroke-width:0.15875001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ <path
+ transform="scale(-1,1)"
+ d="m -1.7008867,296.5497 a 0.79374999,0.79374999 0 0 1 -0.2835374,-0.60805 0.79374999,0.79374999 0 0 1 0.2835374,-0.60805"
+ id="path4546-1-3"
+ style="fill:none;fill-opacity:1;stroke:#5079cc;stroke-width:0.15875001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ <path
+ d="M 0.63239977,296.41847 A 0.62244385,0.62244385 0 0 1 0.4100551,295.94165 0.62244385,0.62244385 0 0 1 0.63239977,295.46483"
+ id="path4546-5-7"
+ style="fill:none;fill-opacity:1;stroke:#5079cc;stroke-width:0.15875001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ <path
+ transform="scale(-1,1)"
+ d="m -1.484193,296.41847 a 0.62244391,0.62244391 0 0 1 -0.2223447,-0.47682 0.62244391,0.62244391 0 0 1 0.2223447,-0.47682"
+ id="path4546-5-4-2"
+ style="fill:none;fill-opacity:1;stroke:#5079cc;stroke-width:0.15875001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ </g>
+</svg>
obs-studio-25.0.8.tar.xz/UI/forms/images/streaming-inactive.svg
Added
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 2.1166666 2.1166667"
+ height="8"
+ width="8">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-294.88332)"
+ id="layer1">
+ <circle
+ r="0.39687499"
+ cy="295.94165"
+ cx="1.0583333"
+ id="path4544"
+ style="fill:#7f7d7f;fill-opacity:1;stroke:none;stroke-width:0.13229167;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ <path
+ d="M 0.41582902,296.5497 A 0.79374999,0.79374999 0 0 1 0.13229167,295.94165 0.79374999,0.79374999 0 0 1 0.41582902,295.3336"
+ id="path4546"
+ style="fill:none;fill-opacity:1;stroke:#7f7d7f;stroke-width:0.15875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ <path
+ transform="scale(-1,1)"
+ d="m -1.7009357,296.5497 a 0.79374999,0.79374999 0 0 1 -0.2835373,-0.60805 0.79374999,0.79374999 0 0 1 0.2835373,-0.60805"
+ id="path4546-1"
+ style="fill:none;fill-opacity:1;stroke:#7f7d7f;stroke-width:0.15875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ <path
+ d="M 0.6324488,296.41847 A 0.6224438,0.6224438 0 0 1 0.41010416,295.94165 0.6224438,0.6224438 0 0 1 0.6324488,295.46483"
+ id="path4546-5"
+ style="fill:none;fill-opacity:1;stroke:#7f7d7f;stroke-width:0.15875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ <path
+ transform="scale(-1,1)"
+ d="m -1.484242,296.41847 a 0.62244385,0.62244385 0 0 1 -0.2223447,-0.47682 0.62244385,0.62244385 0 0 1 0.2223447,-0.47682"
+ id="path4546-5-4"
+ style="fill:none;fill-opacity:1;stroke:#7f7d7f;stroke-width:0.15875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ </g>
+</svg>
obs-studio-25.0.4.tar.xz/UI/forms/obs.qrc -> obs-studio-25.0.8.tar.xz/UI/forms/obs.qrc
Changed
<file>images/sources/text.svg</file>
<file>images/sources/window.svg</file>
<file>images/sources/default.svg</file>
+ <file>images/recording-active.svg</file>
+ <file>images/recording-inactive.svg</file>
+ <file>images/recording-pause.svg</file>
+ <file>images/recording-pause-inactive.svg</file>
+ <file>images/streaming-active.svg</file>
+ <file>images/streaming-inactive.svg</file>
</qresource>
<qresource prefix="/settings">
<file>images/settings/output.svg</file>
obs-studio-25.0.4.tar.xz/UI/frontend-plugins/decklink-output-ui/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/UI/frontend-plugins/decklink-output-ui/CMakeLists.txt
Changed
forms/output.ui
)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS DeckLink Output UI")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in decklink-ouput-ui.rc)
+ list(APPEND decklink-ouput-ui_SOURCES
+ decklink-ouput-ui.rc)
+endif()
+
if(APPLE)
set(decklink-ouput-ui_PLATFORM_LIBS
${COCOA})
obs-studio-25.0.4.tar.xz/UI/frontend-plugins/frontend-tools/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/UI/frontend-plugins/frontend-tools/CMakeLists.txt
Changed
endif()
if(WIN32)
+ set(MODULE_DESCRIPTION "OBS Frontend Tools")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in frontend-tools.rc)
set(frontend-tools_PLATFORM_SOURCES
- auto-scene-switcher-win.cpp)
+ auto-scene-switcher-win.cpp
+ frontend-tools.rc)
if(BUILD_CAPTIONS)
set(frontend-tools_PLATFORM_SOURCES
obs-studio-25.0.4.tar.xz/UI/obs-frontend-api/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/UI/obs-frontend-api/CMakeLists.txt
Changed
set(obs-frontend-api_SOURCES
obs-frontend-api.cpp)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS Frontend API")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in ./obs-frontend-api.rc)
+ list(APPEND obs-frontend-api_SOURCES
+ obs-frontend-api.rc)
+endif()
set(obs-frontend-api_HEADERS
obs-frontend-internal.hpp
obs-frontend-api.h)
obs-studio-25.0.4.tar.xz/UI/properties-view.moc.hpp -> obs-studio-25.0.8.tar.xz/UI/properties-view.moc.hpp
Changed
#include <QStackedWidget>
#include <QWidget>
+#include <obs.h>
#include <media-io/frame-rate.h>
#include <vector>
obs-studio-25.0.4.tar.xz/UI/source-tree.hpp -> obs-studio-25.0.8.tar.xz/UI/source-tree.hpp
Changed
#include <QStaticText>
#include <QSvgRenderer>
#include <QAbstractListModel>
+#include <obs.hpp>
+#include <obs-frontend-api.h>
class QLabel;
class QCheckBox;
obs-studio-25.0.4.tar.xz/UI/window-basic-main-dropfiles.cpp -> obs-studio-25.0.8.tar.xz/UI/window-basic-main-dropfiles.cpp
Changed
void OBSBasic::dragEnterEvent(QDragEnterEvent *event)
{
+ // refuse drops of our own widgets
+ if (event->source() != nullptr) {
+ event->setDropAction(Qt::IgnoreAction);
+ return;
+ }
+
event->acceptProposedAction();
}
obs-studio-25.0.4.tar.xz/UI/window-basic-main-transitions.cpp -> obs-studio-25.0.8.tar.xz/UI/window-basic-main-transitions.cpp
Changed
RefreshQuickTransitions();
- programLabel = new QLabel(QTStr("StudioMode.Program"));
+ programLabel = new QLabel(QTStr("StudioMode.Program"), this);
programLabel->setSizePolicy(QSizePolicy::Preferred,
QSizePolicy::Preferred);
programLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
obs-studio-25.0.4.tar.xz/UI/window-basic-main.cpp -> obs-studio-25.0.8.tar.xz/UI/window-basic-main.cpp
Changed
statsDock->move(newPos);
ui->previewLabel->setProperty("themeID", "previewProgramLabels");
+ ui->previewLabel->style()->polish(ui->previewLabel);
bool labels = config_get_bool(GetGlobalConfig(), "BasicWindow",
"StudioModeLabels");
}
}
+static void LogFilter(obs_source_t *, obs_source_t *filter, void *v_val);
+
static void LoadAudioDevice(const char *name, int channel, obs_data_t *parent)
{
obs_data_t *data = obs_data_get_obj(parent, name);
obs_source_t *source = obs_load_source(data);
if (source) {
obs_set_output_source(channel, source);
+
+ const char *name = obs_source_get_name(source);
+ blog(LOG_INFO, "[Loaded global audio device]: '%s'", name);
+ obs_source_enum_filters(source, LogFilter, (void *)(intptr_t)1);
obs_source_release(source);
}
return true;
};
+ obs_enum_scenes(cb, nullptr);
obs_enum_sources(cb, nullptr);
if (api)
UpdatePause(false);
}
-#define RP_NO_HOTKEY_TITLE QTStr("Output.ReplayBuffer.NoHotkey.Title")
-#define RP_NO_HOTKEY_TEXT QTStr("Output.ReplayBuffer.NoHotkey.Msg")
-
void OBSBasic::ShowReplayBufferPauseWarning()
{
auto msgBox = []() {
return;
}
- obs_output_t *output = outputHandler->replayBuffer;
- obs_data_t *hotkeys = obs_hotkeys_save_output(output);
- obs_data_array_t *bindings =
- obs_data_get_array(hotkeys, "ReplayBuffer.Save");
- size_t count = obs_data_array_count(bindings);
- obs_data_array_release(bindings);
- obs_data_release(hotkeys);
-
- if (!count) {
- OBSMessageBox::information(this, RP_NO_HOTKEY_TITLE,
- RP_NO_HOTKEY_TEXT);
- replayBufferButton->setChecked(false);
- return;
- }
-
if (api)
api->on_event(OBS_FRONTEND_EVENT_REPLAY_BUFFER_STARTING);
if (transformWindow)
transformWindow->close();
+ if (!GetCurrentSceneItem())
+ return;
+
transformWindow = new OBSBasicTransform(this);
transformWindow->show();
transformWindow->setAttribute(Qt::WA_DeleteOnClose, true);
copyVisible = obs_sceneitem_visible(item);
uint32_t output_flags = obs_source_get_output_flags(source);
- if (!(output_flags & OBS_SOURCE_DO_NOT_DUPLICATE) == 0)
+ if (output_flags & OBS_SOURCE_DO_NOT_DUPLICATE)
allowPastingDuplicate = false;
}
pause->setChecked(true);
pause->blockSignals(false);
+ ui->statusbar->RecordingPaused();
+
if (trayIcon)
trayIcon->setIcon(QIcon(":/res/images/obs_paused.png"));
pause->setChecked(false);
pause->blockSignals(false);
+ ui->statusbar->RecordingUnpaused();
+
if (trayIcon)
trayIcon->setIcon(
QIcon(":/res/images/tray_active.png"));
obs-studio-25.0.4.tar.xz/UI/window-basic-stats.hpp -> obs-studio-25.0.8.tar.xz/UI/window-basic-stats.hpp
Changed
#include <obs.hpp>
#include <util/platform.h>
+#include <obs-frontend-api.h>
#include <QPointer>
#include <QWidget>
#include <QTimer>
obs-studio-25.0.4.tar.xz/UI/window-basic-status-bar.cpp -> obs-studio-25.0.8.tar.xz/UI/window-basic-status-bar.cpp
Changed
: QStatusBar(parent),
delayInfo(new QLabel),
droppedFrames(new QLabel),
+ streamIcon(new QLabel),
streamTime(new QLabel),
+ recordIcon(new QLabel),
recordTime(new QLabel),
cpuUsage(new QLabel),
transparentPixmap(20, 20),
greenPixmap(20, 20),
grayPixmap(20, 20),
- redPixmap(20, 20)
+ redPixmap(20, 20),
+ recordingActivePixmap(QIcon(":/res/images/recording-active.svg")
+ .pixmap(QSize(20, 20))),
+ recordingPausePixmap(QIcon(":/res/images/recording-pause.svg")
+ .pixmap(QSize(20, 20))),
+ recordingPauseInactivePixmap(
+ QIcon(":/res/images/recording-pause-inactive.svg")
+ .pixmap(QSize(20, 20))),
+ recordingInactivePixmap(QIcon(":/res/images/recording-inactive.svg")
+ .pixmap(QSize(20, 20))),
+ streamingActivePixmap(QIcon(":/res/images/streaming-active.svg")
+ .pixmap(QSize(20, 20))),
+ streamingInactivePixmap(QIcon(":/res/images/streaming-inactive.svg")
+ .pixmap(QSize(20, 20)))
{
streamTime->setText(QString("LIVE: 00:00:00"));
recordTime->setText(QString("REC: 00:00:00"));
cpuUsage->setText(QString("CPU: 0.0%, 0.00 fps"));
+ streamIcon->setPixmap(streamingInactivePixmap);
+ recordIcon->setPixmap(recordingInactivePixmap);
+
QWidget *brWidget = new QWidget(this);
QHBoxLayout *brLayout = new QHBoxLayout(brWidget);
brLayout->setContentsMargins(0, 0, 0, 0);
delayInfo->setAlignment(Qt::AlignVCenter);
droppedFrames->setAlignment(Qt::AlignRight);
droppedFrames->setAlignment(Qt::AlignVCenter);
+ streamIcon->setAlignment(Qt::AlignRight);
+ streamIcon->setAlignment(Qt::AlignVCenter);
streamTime->setAlignment(Qt::AlignRight);
streamTime->setAlignment(Qt::AlignVCenter);
+ recordIcon->setAlignment(Qt::AlignRight);
+ recordIcon->setAlignment(Qt::AlignVCenter);
recordTime->setAlignment(Qt::AlignRight);
recordTime->setAlignment(Qt::AlignVCenter);
cpuUsage->setAlignment(Qt::AlignRight);
delayInfo->setIndent(20);
droppedFrames->setIndent(20);
- streamTime->setIndent(20);
- recordTime->setIndent(20);
+ streamIcon->setIndent(20);
+ recordIcon->setIndent(20);
cpuUsage->setIndent(20);
kbps->setIndent(10);
addPermanentWidget(droppedFrames);
+ addPermanentWidget(streamIcon);
addPermanentWidget(streamTime);
+ addPermanentWidget(recordIcon);
addPermanentWidget(recordTime);
addPermanentWidget(cpuUsage);
addPermanentWidget(delayInfo);
statusSquare->setPixmap(grayPixmap);
}
}
+
+ if (streamOutput) {
+ streamIcon->setPixmap(streamingActivePixmap);
+ }
+
+ if (recordOutput) {
+ recordIcon->setPixmap(recordingActivePixmap);
+ }
}
void OBSBasicStatusBar::Deactivate()
if (!streamOutput) {
streamTime->setText(QString("LIVE: 00:00:00"));
+ streamIcon->setPixmap(streamingInactivePixmap);
totalStreamSeconds = 0;
}
if (!recordOutput) {
recordTime->setText(QString("REC: 00:00:00"));
+ recordIcon->setPixmap(recordingInactivePixmap);
totalRecordSeconds = 0;
}
{
bool paused = os_atomic_load_bool(&recording_paused);
- if (!paused)
+ if (!paused) {
totalRecordSeconds++;
- QString text;
-
- if (paused) {
- text = QStringLiteral("REC: PAUSED");
- } else {
int seconds = totalRecordSeconds % 60;
int totalMinutes = totalRecordSeconds / 60;
int minutes = totalMinutes % 60;
int hours = totalMinutes / 60;
- text = QString::asprintf("REC: %02d:%02d:%02d", hours, minutes,
- seconds);
- }
+ QString text = QString::asprintf("REC: %02d:%02d:%02d", hours,
+ minutes, seconds);
- recordTime->setText(text);
- recordTime->setMinimumWidth(recordTime->width());
+ recordTime->setText(text);
+ recordTime->setMinimumWidth(recordTime->width());
+ } else {
+ recordIcon->setPixmap(streamPauseIconToggle
+ ? recordingPauseInactivePixmap
+ : recordingPausePixmap);
+
+ streamPauseIconToggle = !streamPauseIconToggle;
+ }
}
void OBSBasicStatusBar::UpdateDroppedFrames()
recordOutput = nullptr;
Deactivate();
}
+
+void OBSBasicStatusBar::RecordingPaused()
+{
+ QString text = QStringLiteral("REC: PAUSED");
+ recordTime->setText(text);
+ recordTime->setMinimumWidth(recordTime->width());
+
+ if (recordOutput) {
+ recordIcon->setPixmap(recordingPausePixmap);
+ streamPauseIconToggle = true;
+ }
+}
+
+void OBSBasicStatusBar::RecordingUnpaused()
+{
+ if (recordOutput) {
+ recordIcon->setPixmap(recordingActivePixmap);
+ }
+}
obs-studio-25.0.4.tar.xz/UI/window-basic-status-bar.hpp -> obs-studio-25.0.8.tar.xz/UI/window-basic-status-bar.hpp
Changed
private:
QLabel *delayInfo;
QLabel *droppedFrames;
+ QLabel *streamIcon;
QLabel *streamTime;
QLabel *recordTime;
+ QLabel *recordIcon;
QLabel *cpuUsage;
QLabel *kbps;
QLabel *statusSquare;
obs_output_t *recordOutput = nullptr;
bool active = false;
bool overloadedNotify = true;
+ bool streamPauseIconToggle = false;
int retries = 0;
int totalStreamSeconds = 0;
QPixmap grayPixmap;
QPixmap redPixmap;
+ QPixmap recordingActivePixmap;
+ QPixmap recordingPausePixmap;
+ QPixmap recordingPauseInactivePixmap;
+ QPixmap recordingInactivePixmap;
+ QPixmap streamingActivePixmap;
+ QPixmap streamingInactivePixmap;
+
float lastCongestion = 0.0f;
QPointer<QTimer> refreshTimer;
void StreamStopped();
void RecordingStarted(obs_output_t *output);
void RecordingStopped();
+ void RecordingPaused();
+ void RecordingUnpaused();
void ReconnectClear();
};
obs-studio-25.0.4.tar.xz/UI/window-projector.cpp -> obs-studio-25.0.8.tar.xz/UI/window-projector.cpp
Changed
connect(this, &OBSQTDisplay::DisplayCreated, addDrawCallback);
- if (isFullScreen())
- SetHideCursor();
-
if (type == ProjectorType::Multiview) {
obs_enter_graphics();
{
savedMonitor = monitor;
QScreen *screen = QGuiApplication::screens()[monitor];
- showFullScreen();
setGeometry(screen->geometry());
+ showFullScreen();
+ SetHideCursor();
}
void OBSProjector::SetHideCursor()
int monitor = sender()->property("monitor").toInt();
SetMonitor(monitor);
- SetHideCursor();
UpdateProjectorTitle(QT_UTF8(obs_source_get_name(source)));
}
obs-studio-25.0.4.tar.xz/azure-pipelines.yml -> obs-studio-25.0.8.tar.xz/azure-pipelines.yml
Changed
condition: or(ne(variables['Build.Reason'], 'PullRequest'), eq(variables['prHasCILabel'], true))
inputs:
pathtoPublish: './nightly'
- artifactName: build
+ artifactName: macbuild
- job: 'Build_Windows32'
dependsOn: Prebuild
obs-studio-25.0.8.tar.xz/cmake/winrc/obs-module.rc.in
Added
+1 VERSIONINFO
+FILEVERSION ${UI_VERSION_MAJOR},${UI_VERSION_MINOR},${UI_VERSION_PATCH},0
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904B0"
+ BEGIN
+ VALUE "CompanyName", "${OBS_COMPANY_NAME}"
+ VALUE "FileDescription", "${MODULE_DESCRIPTION}"
+ VALUE "FileVersion", "${UI_VERSION}"
+ VALUE "ProductName", "${OBS_PRODUCT_NAME}"
+ VALUE "ProductVersion", "${UI_VERSION}"
+ VALUE "Comments", "${OBS_COMMENTS}"
+ VALUE "LegalCopyright", "${OBS_LEGAL_COPYRIGHT}"
+ VALUE "InternalName", "${PROJECT_NAME}"
+ VALUE "OriginalFilename", "${PROJECT_NAME}"
+ END
+ END
+
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0409, 0x04B0
+ END
+END
\ No newline at end of file
obs-studio-25.0.4.tar.xz/deps/glad/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/deps/glad/CMakeLists.txt
Changed
include/glad/glad.h)
if(WIN32)
+ set(MODULE_DESCRIPTION "Glad OpenGL Loading Library")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obsglad.rc)
set(glad_PLATFORM_SOURCES
src/glad_wgl.c
- include/glad/glad_wgl.h)
+ include/glad/glad_wgl.h
+ obsglad.rc)
elseif(NOT APPLE)
set(glad_PLATFORM_SOURCES
src/glad_glx.c
obs-studio-25.0.4.tar.xz/deps/lzma/liblzma/check/crc32_x86.S -> obs-studio-25.0.8.tar.xz/deps/lzma/liblzma/check/crc32_x86.S
Changed
* use __linux__ here, but I don't know a way to detect when
* we are using GNU assembler.
*/
-#if defined(__ELF__) && defined(__linux__)
+#if defined(__ELF__) && (defined(__FreeBSD__) || defined(__linux__))
.section .note.GNU-stack,"",@progbits
#endif
obs-studio-25.0.4.tar.xz/deps/lzma/liblzma/check/crc64_x86.S -> obs-studio-25.0.8.tar.xz/deps/lzma/liblzma/check/crc64_x86.S
Changed
* use __linux__ here, but I don't know a way to detect when
* we are using GNU assembler.
*/
-#if defined(__ELF__) && defined(__linux__)
+#if defined(__ELF__) && (defined(__FreeBSD__) || defined(__linux__))
.section .note.GNU-stack,"",@progbits
#endif
obs-studio-25.0.4.tar.xz/deps/obs-scripting/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/deps/obs-scripting/CMakeLists.txt
Changed
cstrcache.h
)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS Studio scripting module")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obs-scripting.rc)
+ list(APPEND obs-scripting_SOURCES
+ obs-scripting.rc)
+endif()
+
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/swig)
if(PYTHONLIBS_FOUND)
obs-studio-25.0.4.tar.xz/deps/w32-pthreads/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/deps/w32-pthreads/CMakeLists.txt
Changed
return()
endif()
+set(MODULE_DESCRIPTION "POSIX Threads for Windows")
+configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in w32-pthreads.rc)
set(w32-pthreads_SOURCES
- pthread.c)
+ pthread.c
+ w32-pthreads.rc)
set(w32-pthreads_HEADERS
implement.h
obs-studio-25.0.4.tar.xz/docs/sphinx/reference-properties.rst -> obs-studio-25.0.8.tar.xz/docs/sphinx/reference-properties.rst
Changed
---------------------
+.. function:: obs_properties_t *obs_properties_get_parent(obs_properties_t *props)
+
+---------------------
+
Property Object Functions
-------------------------
---------------------
+.. function:: obs_property_t *obs_properties_add_group(obs_properties_t *props, const char *name, const char *description, enum obs_group_type type, obs_properties_t *group)
+
+ Adds a property group.
+
+ :param name: Setting identifier string
+ :param description: Localized name shown to user
+ :param type: Can be one of the following values:
+
+ - **OBS_GROUP_NORMAL** - A normal group with just a name and content.
+ - **OBS_GROUP_CHECKABLE** - A checkable group with a checkbox, name and content.
+
+ :param group: Group to add
+
+ :return: The property
+
+ Important Related Functions:
+
+ - :c:func:`obs_property_group_type`
+ - :c:func:`obs_property_group_content`
+ - :c:func:`obs_properties_get_parent`
+
+---------------------
+
Property Enumeration Functions
------------------------------
- OBS_PROPERTY_FONT
- OBS_PROPERTY_EDITABLE_LIST
- OBS_PROPERTY_FRAME_RATE
+ - OBS_PROPERTY_GROUP
---------------------
---------------------
+.. function:: enum obs_group_type obs_property_group_type(obs_property_t *p)
+
+ :return: One of the following values:
+
+ - OBS_COMBO_INVALID
+ - OBS_GROUP_NORMAL
+ - OBS_GROUP_CHECKABLE
+
+---------------------
+
+.. function:: obs_properties_t *obs_property_group_content(obs_property_t *p)
+
+---------------------
+
Property Modification Functions
-------------------------------
obs-studio-25.0.4.tar.xz/formatcode.sh -> obs-studio-25.0.8.tar.xz/formatcode.sh
Changed
# Get CPU count
OS=$(uname)
NPROC=1
-if [[ $OS = "Linux" ]] ; then
- NPROC=$(nproc)
-elif [[ ${OS} = "Darwin" ]] ; then
- NPROC=$(sysctl -n hw.physicalcpu)
+if [[ $OS = "Linux" || $OS = "Darwin" ]] ; then
+ NPROC=$(getconf _NPROCESSORS_ONLN)
fi
# Discover clang-format
obs-studio-25.0.4.tar.xz/libobs-d3d11/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/libobs-d3d11/CMakeLists.txt
Changed
add_definitions(-DLIBOBS_EXPORTS)
+set(MODULE_DESCRIPTION "OBS Library D3D11 wrapper")
+configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in libobs-d3d11.rc)
+
if(NOT DEFINED GPU_PRIORITY_VAL OR "${GPU_PRIORITY_VAL}" STREQUAL "" OR
"${GPU_PRIORITY_VAL}" STREQUAL "0")
set(USE_GPU_PRIORITY FALSE)
d3d11-vertexbuffer.cpp
d3d11-duplicator.cpp
d3d11-rebuild.cpp
- d3d11-zstencilbuffer.cpp)
+ d3d11-zstencilbuffer.cpp
+ libobs-d3d11.rc)
set(libobs-d3d11_HEADERS
${CMAKE_CURRENT_BINARY_DIR}/d3d11-config.h
obs-studio-25.0.4.tar.xz/libobs-opengl/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/libobs-opengl/CMakeLists.txt
Changed
add_definitions(-DLIBOBS_EXPORTS)
if(WIN32)
+ set(MODULE_DESCRIPTION "OBS Library OpenGL wrapper")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in libobs-opengl.rc)
set(libobs-opengl_PLATFORM_SOURCES
- gl-windows.c)
+ gl-windows.c
+ libobs-opengl.rc)
elseif(APPLE)
set(libobs-opengl_PLATFORM_SOURCES
gl-cocoa.m)
obs-studio-25.0.4.tar.xz/libobs-opengl/gl-shaderparser.c -> obs-studio-25.0.8.tar.xz/libobs-opengl/gl-shaderparser.c
Changed
* mul -> (change to operator)
* rsqrt -> inversesqrt
* saturate -> (use clamp)
+ * sincos -> (map to manual sin/cos calls)
* tex* -> texture
* tex*grad -> textureGrad
* tex*lod -> textureLod
return true;
}
+static bool gl_write_sincos(struct gl_shader_parser *glsp,
+ struct cf_token **p_token)
+{
+ struct cf_parser *cfp = &glsp->parser.cfp;
+ struct dstr var = {0};
+ bool success = false;
+
+ cfp->cur_token = *p_token;
+
+ if (!cf_next_token(cfp))
+ return false;
+ if (!cf_token_is(cfp, "("))
+ return false;
+
+ dstr_printf(&var, "sincos_var_internal_%d", glsp->sincos_counter++);
+
+ dstr_cat(&glsp->gl_string, "float ");
+ dstr_cat_dstr(&glsp->gl_string, &var);
+ dstr_cat(&glsp->gl_string, " = ");
+ gl_write_function_contents(glsp, &cfp->cur_token, ",");
+ dstr_cat(&glsp->gl_string, "); ");
+
+ if (!cf_next_token(cfp))
+ goto fail;
+ gl_write_function_contents(glsp, &cfp->cur_token, ",");
+ dstr_cat(&glsp->gl_string, " = sin(");
+ dstr_cat_dstr(&glsp->gl_string, &var);
+ dstr_cat(&glsp->gl_string, "); ");
+
+ if (!cf_next_token(cfp))
+ goto fail;
+ gl_write_function_contents(glsp, &cfp->cur_token, ")");
+ dstr_cat(&glsp->gl_string, " = cos(");
+ dstr_cat_dstr(&glsp->gl_string, &var);
+ dstr_cat(&glsp->gl_string, ")");
+
+ success = true;
+
+fail:
+ dstr_free(&var);
+
+ *p_token = cfp->cur_token;
+ return success;
+}
+
static bool gl_write_saturate(struct gl_shader_parser *glsp,
struct cf_token **p_token)
{
bool written = true;
if (strref_cmp(&token->str, "atan2") == 0) {
- dstr_cat(&glsp->gl_string, "atan2");
+ dstr_cat(&glsp->gl_string, "atan");
} else if (strref_cmp(&token->str, "ddx") == 0) {
dstr_cat(&glsp->gl_string, "dFdx");
} else if (strref_cmp(&token->str, "ddy") == 0) {
written = gl_write_saturate(glsp, &token);
} else if (strref_cmp(&token->str, "mul") == 0) {
written = gl_write_mul(glsp, &token);
+ } else if (strref_cmp(&token->str, "sincos") == 0) {
+ written = gl_write_sincos(glsp, &token);
} else {
struct shader_var *var = sp_getparam(glsp, token);
if (var && astrcmp_n(var->type, "texture", 7) == 0)
obs-studio-25.0.4.tar.xz/libobs-opengl/gl-shaderparser.h -> obs-studio-25.0.8.tar.xz/libobs-opengl/gl-shaderparser.h
Changed
const char *output_prefix;
struct shader_parser parser;
struct dstr gl_string;
+ int sincos_counter;
DARRAY(uint32_t) texture_samplers;
DARRAY(struct gl_parser_attrib) attribs;
dstr_init(&glsp->gl_string);
da_init(glsp->texture_samplers);
da_init(glsp->attribs);
+ glsp->sincos_counter = 1;
}
static inline void gl_shader_parser_free(struct gl_shader_parser *glsp)
obs-studio-25.0.4.tar.xz/libobs-opengl/gl-subsystem.c -> obs-studio-25.0.8.tar.xz/libobs-opengl/gl-subsystem.c
Changed
int height)
{
uint32_t base_height = 0;
- int gl_y = 0;
/* GL uses bottom-up coordinates for viewports. We want top-down */
if (device->cur_render_target) {
gl_getclientsize(device->cur_swap, &dw, &base_height);
}
- if (base_height)
+ GLint gl_y = y;
+ if (base_height && !device->cur_fbo)
gl_y = base_height - y - height;
glViewport(x, gl_y, width, height);
obs-studio-25.0.4.tar.xz/libobs/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/libobs/CMakeLists.txt
Changed
include_directories(${OBS_JANSSON_INCLUDE_DIRS})
if(WIN32)
+ set(MODULE_DESCRIPTION "OBS Library")
+ file(STRINGS obs-config.h _version_parse REGEX "^.*(MAJOR|MINOR|PATCH)_VER[ \t]+[0-9]+[ \t]*$")
+
+ string(REGEX REPLACE ".*MAJOR_VER[ \t]+([0-9]+).*" "\\1" UI_VERSION_MAJOR "${_version_parse}")
+ string(REGEX REPLACE ".*MINOR_VER[ \t]+([0-9]+).*" "\\1" UI_VERSION_MINOR "${_version_parse}")
+ string(REGEX REPLACE ".*PATCH_VER[ \t]+([0-9]+).*" "\\1" UI_VERSION_PATCH "${_version_parse}")
+ set(UI_VERSION "${UI_VERSION_MAJOR}.${UI_VERSION_MINOR}.${UI_VERSION_PATCH}")
+
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in libobs.rc)
set(libobs_PLATFORM_SOURCES
obs-win-crash-handler.c
obs-windows.c
util/threading-windows.c
util/pipe-windows.c
- util/platform-windows.c)
+ util/platform-windows.c
+ libobs.rc)
set(libobs_PLATFORM_HEADERS
util/threading-windows.h
util/windows/win-registry.h
obs-studio-25.0.4.tar.xz/libobs/obs-cocoa.m -> obs-studio-25.0.8.tar.xz/libobs/obs-cocoa.m
Changed
[NSRunningApplication currentApplication];
NSURL *bundleURL = [app bundleURL];
NSURL *pluginsURL = [bundleURL
- URLByAppendingPathComponent:@"Contents/Plugins"];
+ URLByAppendingPathComponent:@"Contents/PlugIns"];
NSURL *dataURL = [bundleURL
URLByAppendingPathComponent:
@"Contents/Resources/data/obs-plugins/%module%"];
obs-studio-25.0.4.tar.xz/libobs/obs-config.h -> obs-studio-25.0.8.tar.xz/libobs/obs-config.h
Changed
*
* Reset to zero each major or minor version
*/
-#define LIBOBS_API_PATCH_VER 4
+#define LIBOBS_API_PATCH_VER 8
#define MAKE_SEMANTIC_VERSION(major, minor, patch) \
((major << 24) | (minor << 16) | patch)
obs-studio-25.0.4.tar.xz/libobs/obs-encoder.c -> obs-studio-25.0.8.tar.xz/libobs/obs-encoder.c
Changed
obs_context_data_free(&encoder->context);
if (encoder->owns_info_id)
bfree((void *)encoder->info.id);
+ if (encoder->last_error_message)
+ bfree(encoder->last_error_message);
bfree(encoder);
}
}
encoder->offset_usec = 0;
encoder->start_ts = 0;
}
+ obs_encoder_set_last_error(encoder, NULL);
pthread_mutex_unlock(&encoder->init_mutex);
}
? os_atomic_load_bool(&encoder->paused)
: false;
}
+
+const char *obs_encoder_get_last_error(obs_encoder_t *encoder)
+{
+ if (!obs_encoder_valid(encoder, "obs_encoder_get_last_error"))
+ return NULL;
+
+ return encoder->last_error_message;
+}
+
+void obs_encoder_set_last_error(obs_encoder_t *encoder, const char *message)
+{
+ if (!obs_encoder_valid(encoder, "obs_encoder_set_last_error"))
+ return;
+
+ if (encoder->last_error_message)
+ bfree(encoder->last_error_message);
+
+ if (message)
+ encoder->last_error_message = bstrdup(message);
+ else
+ encoder->last_error_message = NULL;
+}
obs-studio-25.0.4.tar.xz/libobs/obs-internal.h -> obs-studio-25.0.8.tar.xz/libobs/obs-internal.h
Changed
struct pause_data pause;
const char *profile_encoder_encode_name;
+ char *last_error_message;
};
extern struct obs_encoder_info *find_encoder(const char *id);
obs-studio-25.0.4.tar.xz/libobs/obs-output.c -> obs-studio-25.0.8.tar.xz/libobs/obs-output.c
Changed
{
for (size_t i = 0; i < num_mixes; i++) {
if (!obs_encoder_initialize(output->audio_encoders[i])) {
+ obs_output_set_last_error(
+ output, obs_encoder_get_last_error(
+ output->audio_encoders[i]));
return false;
}
}
if (!encoded)
return false;
- if (has_video && !obs_encoder_initialize(output->video_encoder))
+ if (has_video && !obs_encoder_initialize(output->video_encoder)) {
+ obs_output_set_last_error(
+ output,
+ obs_encoder_get_last_error(output->video_encoder));
return false;
+ }
if (has_audio && !initialize_audio_encoders(output, num_mixes))
return false;
obs-studio-25.0.4.tar.xz/libobs/obs.c -> obs-studio-25.0.8.tar.xz/libobs/obs.c
Changed
while (source) {
if ((source->info.type != OBS_SOURCE_TYPE_FILTER) != 0 &&
- !source->context.private && cb(data_, source)) {
+ !source->context.private && !source->removed &&
+ cb(data_, source)) {
obs_data_t *source_data = obs_save_source(source);
obs_data_array_push_back(array, source_data);
obs-studio-25.0.4.tar.xz/libobs/obs.h -> obs-studio-25.0.8.tar.xz/libobs/obs.h
Changed
/** Returns whether encoder is paused */
EXPORT bool obs_encoder_paused(const obs_encoder_t *output);
+EXPORT const char *obs_encoder_get_last_error(obs_encoder_t *encoder);
+EXPORT void obs_encoder_set_last_error(obs_encoder_t *encoder,
+ const char *message);
+
/* ------------------------------------------------------------------------- */
/* Stream Services */
obs-studio-25.0.4.tar.xz/libobs/util/platform-nix.c -> obs-studio-25.0.8.tar.xz/libobs/util/platform-nix.c
Changed
char *os_get_executable_path_ptr(const char *name)
{
char exe[PATH_MAX];
+#if defined(__FreeBSD__) || defined(__DragonFly__)
+ int sysctlname[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1};
+ size_t pathlen = PATH_MAX;
+ ssize_t count;
+ if (sysctl(sysctlname, nitems(sysctlname), exe, &pathlen, NULL, 0) ==
+ -1) {
+ blog(LOG_ERROR, "sysctl(KERN_PROC_PATHNAME) failed, errno %d",
+ errno);
+ return NULL;
+ }
+ count = pathlen;
+#else
ssize_t count = readlink("/proc/self/exe", exe, PATH_MAX);
+#endif
const char *path_out = NULL;
struct dstr path;
obs-studio-25.0.4.tar.xz/plugins/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/CMakeLists.txt
Changed
add_subdirectory(linux-pulseaudio)
add_subdirectory(linux-v4l2)
add_subdirectory(linux-jack)
+ add_subdirectory(linux-alsa)
endif()
option(BUILD_BROWSER "Build browser plugin" OFF)
obs-studio-25.0.4.tar.xz/plugins/coreaudio-encoder/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/coreaudio-encoder/CMakeLists.txt
Changed
encoder.cpp)
if (WIN32)
+ set(MODULE_DESCRIPTION "OBS Core Audio encoder")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in coreaudio-encoder.rc)
+ list(APPEND coreaudio-encoder_SOURCES
+ coreaudio-encoder.rc)
set(coreaudio-encoder_HEADERS windows-imports.h)
set(coreaudio-encoder_LIBS )
obs-studio-25.0.4.tar.xz/plugins/decklink/win/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/decklink/win/CMakeLists.txt
Changed
../util.hpp
)
+set(MODULE_DESCRIPTION "OBS DeckLink Windows module")
+configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in win-decklink.rc)
set(win-decklink_SOURCES
../plugin-main.cpp
../decklink-devices.cpp
../audio-repack.c
platform.cpp
../util.cpp
- )
+ win-decklink.rc)
add_idl_files(win-decklink-sdk_GENERATED_FILES
${win-decklink-sdk_IDLS}
obs-studio-25.0.4.tar.xz/plugins/image-source/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/image-source/CMakeLists.txt
Changed
color-source.c
obs-slideshow.c)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS image module")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in image-source.rc)
+ list(APPEND image-source_SOURCES
+ image-source.rc)
+endif()
+
add_library(image-source MODULE
${image-source_SOURCES})
target_link_libraries(image-source
obs-studio-25.0.4.tar.xz/plugins/linux-jack/jack-wrapper.c -> obs-studio-25.0.8.tar.xz/plugins/linux-jack/jack-wrapper.c
Changed
return SPEAKERS_STEREO;
case 3:
return SPEAKERS_2POINT1;
+ case 4:
+ return SPEAKERS_4POINT0;
case 5:
return SPEAKERS_4POINT1;
case 6:
obs-studio-25.0.4.tar.xz/plugins/linux-v4l2/v4l2-controls.c -> obs-studio-25.0.8.tar.xz/plugins/linux-v4l2/v4l2-controls.c
Changed
return (qctrl->flags & INVALID_CONTROL_FLAGS) == 0;
}
-static inline bool add_control_property(obs_properties_t *props,
+static inline void add_control_property(obs_properties_t *props,
obs_data_t *settings, int_fast32_t dev,
struct v4l2_queryctrl *qctrl)
{
obs-studio-25.0.4.tar.xz/plugins/mac-capture/window-utils.h -> obs-studio-25.0.8.tar.xz/plugins/mac-capture/window-utils.h
Changed
struct cocoa_window {
CGWindowID window_id;
+ int owner_pid;
pthread_mutex_t name_lock;
NSString *owner_name;
obs-studio-25.0.4.tar.xz/plugins/mac-capture/window-utils.m -> obs-studio-25.0.8.tar.xz/plugins/mac-capture/window-utils.m
Changed
NSNumber *window_id = (NSNumber *)dict[WINDOW_NUMBER];
cw->window_id = window_id.intValue;
+ NSNumber *owner_pid = (NSNumber *)dict[OWNER_PID];
+ cw->owner_pid = owner_pid.intValue;
obs_data_set_int(settings, "window", cw->window_id);
+ obs_data_set_int(settings, "owner_pid", cw->owner_pid);
return true;
}
cw->window_name = @(obs_data_get_string(settings, "window_name"));
[cw->owner_name retain];
[cw->window_name retain];
- find_window(cw, settings, true);
+
+ // Find initial window.
+ pthread_mutex_lock(&cw->name_lock);
+
+ if (!cw->window_name.length && !cw->owner_name.length)
+ goto invalid_name;
+
+ NSNumber *owner_pid = @(obs_data_get_int(settings, "owner_pid"));
+ NSNumber *window_id = @(obs_data_get_int(settings, "window"));
+ for (NSDictionary *dict in enumerate_windows()) {
+ bool owner_names_match =
+ [cw->owner_name isEqualToString:dict[OWNER_NAME]];
+ bool ids_match =
+ [owner_pid isEqualToNumber:dict[OWNER_PID]] &&
+ [window_id isEqualToNumber:dict[WINDOW_NUMBER]];
+ bool window_names_match =
+ [cw->window_name isEqualToString:dict[WINDOW_NAME]];
+
+ if (owner_names_match && (ids_match || window_names_match)) {
+ pthread_mutex_unlock(&cw->name_lock);
+
+ NSNumber *window_id = (NSNumber *)dict[WINDOW_NUMBER];
+ cw->window_id = window_id.intValue;
+ NSNumber *owner_pid = (NSNumber *)dict[OWNER_PID];
+ cw->owner_pid = owner_pid.intValue;
+
+ obs_data_set_int(settings, "window", cw->window_id);
+ obs_data_set_int(settings, "owner_pid", cw->owner_pid);
+ return;
+ }
+ }
+
+invalid_name:
+ pthread_mutex_unlock(&cw->name_lock);
+ return;
}
void destroy_window(cocoa_window_t cw)
[cw->window_name retain];
pthread_mutex_unlock(&cw->name_lock);
+ cw->owner_pid = obs_data_get_int(settings, "owner_pid");
cw->window_id = obs_data_get_int(settings, "window");
}
obs-studio-25.0.4.tar.xz/plugins/mac-syphon/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/mac-syphon/CMakeLists.txt
Changed
syphon-framework/SyphonServerDirectory.m
)
+add_library(syphon-framework ${syphon_HEADERS}
+ ${syphon_SOURCES})
+
set(mac-syphon_HEADERS
)
add_library(mac-syphon MODULE
${mac-syphon_SOURCES}
- ${mac-syphon_HEADERS}
- ${syphon_HEADERS}
- ${syphon_SOURCES})
+ ${mac-syphon_HEADERS})
target_link_libraries(mac-syphon
libobs
+ syphon-framework
${COCOA}
${IOSURF}
${SCRIPTINGBRIDGE}
${OPENGL_gl_LIBRARY})
+set_property (TARGET mac-syphon APPEND_STRING PROPERTY
+ COMPILE_FLAGS "-fobjc-arc")
+
install_obs_plugin_with_data(mac-syphon data)
obs-studio-25.0.4.tar.xz/plugins/mac-syphon/syphon.m -> obs-studio-25.0.8.tar.xz/plugins/mac-syphon/syphon.m
Changed
};
typedef struct syphon *syphon_t;
-static inline void objc_release(NSObject **obj)
-{
- [*obj release];
- *obj = nil;
-}
-
static inline void update_properties(syphon_t s)
{
obs_source_update_properties(s->source);
obs_enter_graphics();
if (s->client) {
- @autoreleasepool {
- [s->client stop];
- objc_release(&s->client);
- }
+ [s->client stop];
}
if (s->tex) {
surfaces_string.UTF8String);
}
-static inline bool update_string(NSString **str, NSString *new)
-{
- if (!new)
- return false;
-
- [*str release];
- *str = [new retain];
- return true;
-}
-
static inline void handle_new_frame(syphon_t s,
SYPHON_CLIENT_UNIQUE_CLASS_NAME *client)
{
NSDictionary *desc = find_by_uuid(servers, s->uuid);
if (!desc) {
desc = servers[0];
- if (update_string(&s->uuid,
- desc[SyphonServerDescriptionUUIDKey]))
+ if (![s->uuid isEqualToString:
+ desc[SyphonServerDescriptionUUIDKey]]) {
s->uuid_changed = true;
+ }
}
check_version(s, desc);
check_description(s, desc);
- @autoreleasepool {
- s->client = [[SYPHON_CLIENT_UNIQUE_CLASS_NAME alloc]
- initWithServerDescription:desc
- options:nil
- newFrameHandler:^(
- SYPHON_CLIENT_UNIQUE_CLASS_NAME
- *client) {
- handle_new_frame(s, client);
- }];
- }
+ s->client = [[SYPHON_CLIENT_UNIQUE_CLASS_NAME alloc]
+ initWithServerDescription:desc
+ options:nil
+ newFrameHandler:^(
+ SYPHON_CLIENT_UNIQUE_CLASS_NAME *client) {
+ handle_new_frame(s, client);
+ }];
s->active = true;
}
-static inline void release_settings(syphon_t s)
-{
- [s->app_name release];
- [s->name release];
- [s->uuid release];
-}
-
static inline bool load_syphon_settings(syphon_t s, obs_data_t *settings)
{
NSString *app_name = @(obs_data_get_string(settings, "app_name"));
if ([uuid isEqual:s->uuid] && equal_names)
return false;
- release_settings(s);
- s->app_name = [app_name retain];
- s->name = [name retain];
- s->uuid = [uuid retain];
+ s->app_name = app_name;
+ s->name = name;
+ s->uuid = uuid;
s->uuid_changed = false;
return true;
}
!([app_name isEqual:s->app_name] && [name isEqual:s->name]))
return;
- update_string(&s->app_name, app_name);
- update_string(&s->name, name);
- if (update_string(&s->uuid, uuid))
+ s->app_name = app_name;
+ s->name = name;
+ if (![s->uuid isEqualToString:uuid]) {
+ s->uuid = uuid;
s->uuid_changed = true;
+ }
create_client(s);
}
if (!(s->inject_server_found = announce)) {
s->inject_wait_time = 0.f;
-
- objc_release(&s->inject_uuid);
LOG(LOG_INFO,
"Injected server retired: "
"[%s] InjectedSyphon (%s)",
if (s->inject_uuid) //TODO: track multiple injected instances?
return;
- s->inject_uuid = [uuid retain];
+ s->inject_uuid = uuid;
LOG(LOG_INFO, "Injected server found: [%s] %s (%s)",
app_name.UTF8String, name.UTF8String, uuid.UTF8String);
}
s->source = source;
- if (!init_obs_graphics_objects(s))
- goto fail;
+ if (!init_obs_graphics_objects(s)) {
+ syphon_destroy_internal(s);
+ return NULL;
+ }
- if (!load_syphon_settings(s, settings))
- goto fail;
+ if (!load_syphon_settings(s, settings)) {
+ syphon_destroy_internal(s);
+ return NULL;
+ }
const char *inject_info = obs_data_get_string(settings, "application");
s->inject_info = obs_data_create_from_json(inject_info);
s->inject_active = obs_data_get_bool(settings, "inject");
s->inject_app = @(obs_data_get_string(s->inject_info, "name"));
- if (s->inject_app)
- [s->inject_app retain];
-
- if (!create_syphon_listeners(s))
- goto fail;
+ if (!create_syphon_listeners(s)) {
+ syphon_destroy_internal(s);
+ return NULL;
+ }
NSWorkspace *ws = [NSWorkspace sharedWorkspace];
- if (!create_applications_observer(s, ws))
- goto fail;
+ if (!create_applications_observer(s, ws)) {
+ syphon_destroy_internal(s);
+ return NULL;
+ }
if (s->inject_active)
find_and_inject_target(s, ws.runningApplications, false);
obs_data_get_bool(settings, "allow_transparency");
return s;
-
-fail:
- syphon_destroy_internal(s);
- return NULL;
}
static void *syphon_create(obs_data_t *settings, obs_source_t *source)
[ws removeObserver:s->launch_listener
forKeyPath:NSStringFromSelector(@selector
(runningApplications))];
- objc_release(&s->launch_listener);
-
- objc_release(&s->inject_app);
- objc_release(&s->inject_uuid);
obs_data_release(s->inject_info);
- release_settings(s);
-
obs_enter_graphics();
stop_client(s);
obs_data_t *prev = s->inject_info;
s->inject_info = obs_data_create_from_json(inject_str);
- NSString *prev_app = s->inject_app;
- s->inject_app = [@(obs_data_get_string(s->inject_info, "name")) retain];
- [prev_app release];
-
- objc_release(&s->inject_uuid);
+ s->inject_app = @(obs_data_get_string(s->inject_info, "name"));
SyphonServerDirectory *ssd = [SyphonServerDirectory sharedDirectory];
NSArray *servers = [ssd serversMatchingName:@"InjectedSyphon"
obs-studio-25.0.8.tar.xz/plugins/obs-browser/.clang-format
Added
+
+# please use clang-format version 8 or later
+
+Standard: Cpp11
+AccessModifierOffset: -8
+AlignAfterOpenBracket: Align
+AlignConsecutiveAssignments: false
+AlignConsecutiveDeclarations: false
+AlignEscapedNewlines: Left
+AlignOperands: true
+AlignTrailingComments: true
+#AllowAllArgumentsOnNextLine: false # requires clang-format 9
+#AllowAllConstructorInitializersOnNextLine: false # requires clang-format 9
+AllowAllParametersOfDeclarationOnNextLine: false
+AllowShortBlocksOnASingleLine: false
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: Inline
+AllowShortIfStatementsOnASingleLine: false
+#AllowShortLambdasOnASingleLine: Inline # requires clang-format 9
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: false
+AlwaysBreakTemplateDeclarations: false
+BinPackArguments: true
+BinPackParameters: true
+BraceWrapping:
+ AfterClass: false
+ AfterControlStatement: false
+ AfterEnum: false
+ AfterFunction: true
+ AfterNamespace: false
+ AfterObjCDeclaration: false
+ AfterStruct: false
+ AfterUnion: false
+ AfterExternBlock: false
+ BeforeCatch: false
+ BeforeElse: false
+ IndentBraces: false
+ SplitEmptyFunction: true
+ SplitEmptyRecord: true
+ SplitEmptyNamespace: true
+BreakBeforeBinaryOperators: None
+BreakBeforeBraces: Custom
+BreakBeforeTernaryOperators: true
+BreakConstructorInitializers: BeforeColon
+BreakStringLiterals: false # apparently unpredictable
+ColumnLimit: 80
+CompactNamespaces: false
+ConstructorInitializerAllOnOneLineOrOnePerLine: true
+ConstructorInitializerIndentWidth: 8
+ContinuationIndentWidth: 8
+Cpp11BracedListStyle: true
+DerivePointerAlignment: false
+DisableFormat: false
+FixNamespaceComments: false
+ForEachMacros:
+ - 'json_object_foreach'
+ - 'json_object_foreach_safe'
+ - 'json_array_foreach'
+IncludeBlocks: Preserve
+IndentCaseLabels: false
+IndentPPDirectives: None
+IndentWidth: 8
+IndentWrappedFunctionNames: false
+KeepEmptyLinesAtTheStartOfBlocks: true
+MaxEmptyLinesToKeep: 1
+NamespaceIndentation: None
+#ObjCBinPackProtocolList: Auto # requires clang-format 7
+ObjCBlockIndentWidth: 8
+ObjCSpaceAfterProperty: true
+ObjCSpaceBeforeProtocolList: true
+
+PenaltyBreakAssignment: 10
+PenaltyBreakBeforeFirstCallParameter: 30
+PenaltyBreakComment: 10
+PenaltyBreakFirstLessLess: 0
+PenaltyBreakString: 10
+PenaltyExcessCharacter: 100
+PenaltyReturnTypeOnItsOwnLine: 60
+
+PointerAlignment: Right
+ReflowComments: false
+SortIncludes: false
+SortUsingDeclarations: false
+SpaceAfterCStyleCast: false
+#SpaceAfterLogicalNot: false # requires clang-format 9
+SpaceAfterTemplateKeyword: false
+SpaceBeforeAssignmentOperators: true
+#SpaceBeforeCtorInitializerColon: true # requires clang-format 7
+#SpaceBeforeInheritanceColon: true # requires clang-format 7
+SpaceBeforeParens: ControlStatements
+#SpaceBeforeRangeBasedForLoopColon: true # requires clang-format 7
+SpaceInEmptyParentheses: false
+SpacesBeforeTrailingComments: 1
+SpacesInAngles: false
+SpacesInCStyleCastParentheses: false
+SpacesInContainerLiterals: false
+SpacesInParentheses: false
+SpacesInSquareBrackets: false
+#StatementMacros: # requires clang-format 8
+# - 'Q_OBJECT'
+TabWidth: 8
+#TypenameMacros: # requires clang-format 9
+# - 'DARRAY'
+UseTab: ForContinuationAndIndentation
+---
+Language: ObjC
\ No newline at end of file
obs-studio-25.0.8.tar.xz/plugins/obs-browser/.github
Added
+(directory)
obs-studio-25.0.8.tar.xz/plugins/obs-browser/.github/workflows
Added
+(directory)
obs-studio-25.0.8.tar.xz/plugins/obs-browser/.github/workflows/clang-format.yml
Added
+name: Clang Format Check
+
+on: [push, pull_request]
+jobs:
+ ubuntu64:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ submodules: 'recursive'
+
+ - name: Install clang format
+ run: |
+ # gets us newer clang
+ sudo bash -c "cat >> /etc/apt/sources.list" << LLVMAPT
+ # 3.8
+ deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
+ deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
+ LLVMAPT
+ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
+ sudo apt-get -qq update
+ sudo apt-get install -y clang-format-8
+ - name: Check the Formatting
+ run: |
+ ./formatcode.sh
+ ./CI/check-format.sh
+ macos64:
+ runs-on: macos-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ submodules: 'recursive'
+
+ - name: Install clang-format
+ run: |
+ brew install clang-format
+ - name: Check the Formatting
+ run: |
+ ./formatcode.sh
+ ./CI/check-format.sh
\ No newline at end of file
obs-studio-25.0.8.tar.xz/plugins/obs-browser/CI
Added
+(directory)
obs-studio-25.0.8.tar.xz/plugins/obs-browser/CI/check-format.sh
Added
+#!/bin/bash
+dirty=$(git ls-files --modified)
+
+set +x
+if [[ $dirty ]]; then
+ echo "================================="
+ echo "Files were not formatted properly"
+ echo "$dirty"
+ echo "================================="
+ exit 1
+fi
\ No newline at end of file
obs-studio-25.0.8.tar.xz/plugins/obs-browser/formatcode.sh
Added
+#!/usr/bin/env bash
+# Original source https://github.com/Project-OSRM/osrm-backend/blob/master/scripts/format.sh
+
+set +x
+set -o errexit
+set -o pipefail
+set -o nounset
+
+# Runs the Clang Formatter in parallel on the code base.
+# Return codes:
+# - 1 there are files to be formatted
+# - 0 everything looks fine
+
+# Get CPU count
+OS=$(uname)
+NPROC=1
+if [[ $OS = "Linux" || $OS = "Darwin" ]] ; then
+ NPROC=$(getconf _NPROCESSORS_ONLN)
+fi
+
+# Discover clang-format
+if type clang-format-8 2> /dev/null ; then
+ CLANG_FORMAT=clang-format-8
+else
+ CLANG_FORMAT=clang-format
+fi
+
+find . -type d -type f -o -name '*.h' -or -name '*.hpp' -or -name '*.m' -or -name '*.mm' -or -name '*.c' -or -name '*.cpp' \
+| xargs -I{} -P ${NPROC} ${CLANG_FORMAT} -i -style=file -fallback-style=none {}
\ No newline at end of file
obs-studio-25.0.4.tar.xz/plugins/obs-browser/linux-keyboard-helpers.hpp -> obs-studio-25.0.8.tar.xz/plugins/obs-browser/linux-keyboard-helpers.hpp
Changed
case XK_ugrave:
case XK_Ugrave:
case XK_brokenbar:
- return VKEY_OEM_102; // international backslash key in 102
- // keyboard.
+ // international backslash key in 102 keyboard
+ return VKEY_OEM_102;
// When evdev is in use, /usr/share/X11/xkb/symbols/inet maps F13-18
// keys to the special XF86XK symbols to support Microsoft Ergonomic
obs-studio-25.0.4.tar.xz/plugins/obs-ffmpeg/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/obs-ffmpeg/CMakeLists.txt
Changed
endif()
if(WIN32)
+ set(MODULE_DESCRIPTION "OBS FFmpeg module")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obs-ffmpeg.rc)
list(APPEND obs-ffmpeg_SOURCES
jim-nvenc.c
- jim-nvenc-helpers.c)
+ jim-nvenc-helpers.c
+ obs-ffmpeg.rc)
list(APPEND obs-ffmpeg_HEADERS
jim-nvenc.h)
endif()
obs-studio-25.0.4.tar.xz/plugins/obs-ffmpeg/data/locale/en-US.ini -> obs-studio-25.0.8.tar.xz/plugins/obs-ffmpeg/data/locale/en-US.ini
Changed
HelperProcessFailed="Unable to start the recording helper process. Check that OBS files have not been blocked or removed by any 3rd party antivirus / security software."
UnableToWritePath="Unable to write to %1. Make sure you're using a recording path which your user account is allowed to write to and that there is sufficient disk space."
WarnWindowsDefender="If Windows 10 Ransomware Protection is enabled it can also cause this error. Try turning off controlled folder access in Windows Security / Virus & threat protection settings."
+
+NVENC.Error="Failed to open NVENC codec: %1"
+NVENC.GenericError="Check your video drivers are up to date. Try closing other recording software which might be using NVENC such as NVIDIA Shadowplay or Windows 10 Game DVR."
+NVENC.BadGPUIndex="You have selected GPU %1 in your output encoder settings. Set this back to 0 and try again."
+NVENC.OutdatedDriver="Your current video card driver does not support this NVENC version, please update your drivers."
+NVENC.UnsupportedDevice="NVENC Error: Unsupported device. Check your video card supports NVENC and that the drivers are up to date."
+NVENC.TooManySessions="NVENC Error: Too many concurrent sessions. Try closing other recording software which might be using NVENC such as NVIDIA Shadowplay or Windows 10 Game DVR."
+NVENC.CheckDrivers="Please check your video drivers are up to date."
obs-studio-25.0.4.tar.xz/plugins/obs-ffmpeg/jim-nvenc-helpers.c -> obs-studio-25.0.8.tar.xz/plugins/obs-ffmpeg/jim-nvenc-helpers.c
Changed
#include "jim-nvenc.h"
#include <util/platform.h>
#include <util/threading.h>
+#include <util/dstr.h>
static void *nvenc_lib = NULL;
static pthread_mutex_t init_mutex = PTHREAD_MUTEX_INITIALIZER;
#define error(format, ...) blog(LOG_ERROR, "[jim-nvenc] " format, ##__VA_ARGS__)
-static inline bool nv_failed(NVENCSTATUS err, const char *func,
- const char *call)
+bool nv_failed(obs_encoder_t *encoder, NVENCSTATUS err, const char *func,
+ const char *call)
{
- if (err == NV_ENC_SUCCESS)
+ struct dstr error_message = {0};
+
+ switch (err) {
+ case NV_ENC_SUCCESS:
return false;
+ case NV_ENC_ERR_OUT_OF_MEMORY:
+ obs_encoder_set_last_error(
+ encoder, obs_module_text("NVENC.TooManySessions"));
+ break;
+
+ case NV_ENC_ERR_UNSUPPORTED_DEVICE:
+ obs_encoder_set_last_error(
+ encoder, obs_module_text("NVENC.UnsupportedDevice"));
+ break;
+
+ default:
+ dstr_printf(&error_message,
+ "NVENC Error: %s: %s failed: %d (%s)", func, call,
+ (int)err, nv_error_name(err));
+ obs_encoder_set_last_error(encoder, error_message.array);
+ dstr_free(&error_message);
+ break;
+ }
+
error("%s: %s failed: %d (%s)", func, call, (int)err,
nv_error_name(err));
return true;
}
-#define NV_FAILED(x) nv_failed(x, __FUNCTION__, #x)
+#define NV_FAILED(e, x) nv_failed(e, x, __FUNCTION__, #x)
bool load_nvenc_lib(void)
{
return "Unknown Error";
}
-static inline bool init_nvenc_internal(void)
+static inline bool init_nvenc_internal(obs_encoder_t *encoder)
{
static bool initialized = false;
static bool success = false;
NV_MAX_VER_FUNC nv_max_ver = (NV_MAX_VER_FUNC)load_nv_func(
"NvEncodeAPIGetMaxSupportedVersion");
if (!nv_max_ver) {
+ obs_encoder_set_last_error(
+ encoder,
+ "Missing NvEncodeAPIGetMaxSupportedVersion, check "
+ "your video card drivers are up to date.");
return false;
}
uint32_t ver = 0;
- if (NV_FAILED(nv_max_ver(&ver))) {
+ if (NV_FAILED(encoder, nv_max_ver(&ver))) {
return false;
}
uint32_t cur_ver = (NVENCAPI_MAJOR_VERSION << 4) |
NVENCAPI_MINOR_VERSION;
if (cur_ver > ver) {
+ obs_encoder_set_last_error(
+ encoder, obs_module_text("NVENC.OutdatedDriver"));
+
error("Current driver version does not support this NVENC "
"version, please upgrade your driver");
return false;
nv_create_instance = (NV_CREATE_INSTANCE_FUNC)load_nv_func(
"NvEncodeAPICreateInstance");
if (!nv_create_instance) {
+ obs_encoder_set_last_error(
+ encoder, "Missing NvEncodeAPICreateInstance, check "
+ "your video card drivers are up to date.");
return false;
}
- if (NV_FAILED(nv_create_instance(&nv))) {
+ if (NV_FAILED(encoder, nv_create_instance(&nv))) {
return false;
}
return true;
}
-bool init_nvenc(void)
+bool init_nvenc(obs_encoder_t *encoder)
{
bool success;
pthread_mutex_lock(&init_mutex);
- success = init_nvenc_internal();
+ success = init_nvenc_internal(encoder);
pthread_mutex_unlock(&init_mutex);
return success;
obs-studio-25.0.4.tar.xz/plugins/obs-ffmpeg/jim-nvenc.c -> obs-studio-25.0.8.tar.xz/plugins/obs-ffmpeg/jim-nvenc.c
Changed
HANDLE event;
};
-static inline bool nv_failed(struct nvenc_data *enc, NVENCSTATUS err,
- const char *func, const char *call)
-{
- if (err == NV_ENC_SUCCESS)
- return false;
-
- error("%s: %s failed: %d (%s)", func, call, (int)err,
- nv_error_name(err));
- return true;
-}
-
-#define NV_FAILED(x) nv_failed(enc, x, __FUNCTION__, #x)
+#define NV_FAILED(x) nv_failed(enc->encoder, x, __FUNCTION__, #x)
static bool nv_bitstream_init(struct nvenc_data *enc, struct nv_bitstream *bs)
{
err = nv.nvEncGetEncodePresetConfig(enc->session,
NV_ENC_CODEC_H264_GUID, nv_preset,
&preset_config);
- if (nv_failed(enc, err, __FUNCTION__, "nvEncGetEncodePresetConfig")) {
+ if (nv_failed(enc->encoder, err, __FUNCTION__,
+ "nvEncGetEncodePresetConfig")) {
return false;
}
* gpu other than the one OBS is currently running on. */
int gpu = (int)obs_data_get_int(settings, "gpu");
if (gpu != 0) {
+ info("different GPU selected by user, falling back to ffmpeg");
goto fail;
}
if (obs_encoder_scaling_enabled(encoder)) {
+ info("scaling enabled, falling back to ffmpeg");
goto fail;
}
if (!obs_nv12_tex_active()) {
+ info("nv12 not active, falling back to ffmpeg");
goto fail;
}
- if (!init_nvenc()) {
+ if (!init_nvenc(encoder)) {
goto fail;
}
if (NV_FAILED(nv_create_instance(&init))) {
if (nvtex->mapped_res) {
NVENCSTATUS err;
err = nv.nvEncUnmapInputResource(s, nvtex->mapped_res);
- if (nv_failed(enc, err, __FUNCTION__, "unmap")) {
+ if (nv_failed(enc->encoder, err, __FUNCTION__,
+ "unmap")) {
return false;
}
nvtex->mapped_res = NULL;
err = nv.nvEncEncodePicture(enc->session, ¶ms);
if (err != NV_ENC_SUCCESS && err != NV_ENC_ERR_NEED_MORE_INPUT) {
- nv_failed(enc, err, __FUNCTION__, "nvEncEncodePicture");
+ nv_failed(enc->encoder, err, __FUNCTION__,
+ "nvEncEncodePicture");
return false;
}
obs-studio-25.0.4.tar.xz/plugins/obs-ffmpeg/jim-nvenc.h -> obs-studio-25.0.8.tar.xz/plugins/obs-ffmpeg/jim-nvenc.h
Changed
extern const char *nv_error_name(NVENCSTATUS err);
extern NV_ENCODE_API_FUNCTION_LIST nv;
extern NV_CREATE_INSTANCE_FUNC nv_create_instance;
-extern bool init_nvenc(void);
+extern bool init_nvenc(obs_encoder_t *encoder);
+bool nv_failed(obs_encoder_t *encoder, NVENCSTATUS err, const char *func,
+ const char *call);
obs-studio-25.0.4.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c -> obs-studio-25.0.8.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c
Changed
#include <util/base.h>
#include <util/circlebuf.h>
#include <util/darray.h>
+#include <util/dstr.h>
#include <obs-module.h>
#include <libavutil/opt.h>
ret = avcodec_open2(enc->context, enc->codec, NULL);
if (ret < 0) {
+ struct dstr error_message = {0};
+ dstr_printf(&error_message, "Failed to open AAC codec: %s",
+ av_err2str(ret));
+ obs_encoder_set_last_error(enc->encoder, error_message.array);
+ dstr_free(&error_message);
warn("Failed to open AAC codec: %s", av_err2str(ret));
return false;
}
obs-studio-25.0.4.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-nvenc.c -> obs-studio-25.0.8.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-nvenc.c
Changed
{
int ret;
+ // avcodec_open2 will overwrite priv_data, we call this to get a
+ // local copy of the "gpu" setting for improved error messages.
+ int64_t gpu;
+ if (av_opt_get_int(enc->context->priv_data, "gpu", 0, &gpu) < 0) {
+ gpu = -1;
+ }
+
ret = avcodec_open2(enc->context, enc->nvenc, NULL);
if (ret < 0) {
+ // if we were a fallback from jim-nvenc, there may already be a
+ // more useful error returned from that, so don't overwrite.
+ // this can be removed if / when ffmpeg fallback is removed.
+ if (!obs_encoder_get_last_error(enc->encoder)) {
+ struct dstr error_message = {0};
+
+ dstr_copy(&error_message,
+ obs_module_text("NVENC.Error"));
+ dstr_replace(&error_message, "%1", av_err2str(ret));
+ dstr_cat(&error_message, "\r\n\r\n");
+
+ if (gpu > 0) {
+ // if a non-zero GPU failed, almost always
+ // user error. tell then to fix it.
+ char gpu_str[16];
+ snprintf(gpu_str, sizeof(gpu_str) - 1, "%d",
+ (int)gpu);
+ gpu_str[sizeof(gpu_str) - 1] = 0;
+
+ dstr_cat(&error_message,
+ obs_module_text("NVENC.BadGPUIndex"));
+ dstr_replace(&error_message, "%1", gpu_str);
+ } else if (ret == AVERROR_EXTERNAL) {
+ // special case for common NVENC error
+ dstr_cat(&error_message,
+ obs_module_text("NVENC.GenericError"));
+ } else {
+ dstr_cat(&error_message,
+ obs_module_text("NVENC.CheckDrivers"));
+ }
+
+ obs_encoder_set_last_error(enc->encoder,
+ error_message.array);
+ dstr_free(&error_message);
+ }
warn("Failed to open NVENC codec: %s", av_err2str(ret));
return false;
}
blog(LOG_INFO, "---------------------------------");
if (!enc->nvenc) {
+ obs_encoder_set_last_error(encoder,
+ "Couldn't find NVENC encoder");
warn("Couldn't find encoder");
goto fail;
}
obs-studio-25.0.4.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-source.c -> obs-studio-25.0.8.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-source.c
Changed
struct ffmpeg_source *s = opaque;
if (s->is_clear_on_media_end) {
obs_source_output_video(s->source, NULL);
- if (s->close_when_inactive && s->media_valid)
- s->destroy_media = true;
}
+ if (s->close_when_inactive && s->media_valid)
+ s->destroy_media = true;
+
set_media_state(s, OBS_MEDIA_STATE_ENDED);
obs_source_media_ended(s->source);
}
obs-studio-25.0.4.tar.xz/plugins/obs-filters/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/obs-filters/CMakeLists.txt
Changed
expander-filter.c
luma-key-filter.c)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS A/V Filters")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obs-filters.rc)
+ list(APPEND obs-filters_SOURCES
+ obs-filters.rc)
+endif()
+
add_library(obs-filters MODULE
${obs-filters_SOURCES}
${obs-filters_config_HEADERS}
obs-studio-25.0.4.tar.xz/plugins/obs-filters/color-grade-filter.c -> obs-studio-25.0.8.tar.xz/plugins/obs-filters/color-grade-filter.c
Changed
obs_properties_t *props = obs_properties_create();
struct dstr filter_str = {0};
- dstr_cat(&filter_str, "(*.cube *.png)");
+ dstr_cat(&filter_str, "PNG/Cube (*.cube *.png)");
if (s && s->file && *s->file) {
dstr_copy(&path, s->file);
obs-studio-25.0.4.tar.xz/plugins/obs-outputs/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/obs-outputs/CMakeLists.txt
Changed
flv-mux.c
net-if.c)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS output module")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obs-outputs.rc)
+ list(APPEND obs-outputs_SOURCES
+ obs-outputs.rc)
+endif()
+
add_library(obs-outputs MODULE
${ftl_SOURCES}
${ftl_HEADERS}
obs-studio-25.0.4.tar.xz/plugins/obs-outputs/librtmp/rtmp.c -> obs-studio-25.0.8.tar.xz/plugins/obs-outputs/librtmp/rtmp.c
Changed
mbedtls_x509_crt_free(chain);
free(chain);
r->RTMP_TLS_ctx->cacert = NULL;
+#else /* USE_MBEDTLS */
+ UNUSED_PARAMETER(r);
#endif /* USE_MBEDTLS */
}
SSL_CTX_set_default_verify_paths(RTMP_TLS_ctx);
#endif
#else
+ UNUSED_PARAMETER(r);
#endif
}
// NO mbedtls_net_free() BECAUSE WE SET IT UP BY HAND!
free(r->RTMP_TLS_ctx);
r->RTMP_TLS_ctx = NULL;
+#else
+ UNUSED_PARAMETER(r);
#endif
}
obs-studio-25.0.4.tar.xz/plugins/obs-qsv11/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/obs-qsv11/CMakeLists.txt
Changed
obs-qsv11.c
obs-qsv11-plugin-main.c)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS QSV encoder")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obs-qsv11.rc)
+ list(APPEND obs-qsv11_SOURCES
+ obs-qsv11.rc)
+endif()
+
set(obs-qsv11_HEADERS
bits/linux_defs.h
bits/windows_defs.h
obs-studio-25.0.4.tar.xz/plugins/obs-text/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/obs-text/CMakeLists.txt
Changed
project(obs-text)
if(WIN32)
+ set(MODULE_DESCRIPTION "OBS GDI+ text module")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obs-text.rc)
set(obs-text_PLATFORM_SOURCES
- gdiplus/obs-text.cpp)
+ gdiplus/obs-text.cpp
+ obs-text.rc)
set(obs-text_PLATFORM_DEPS
gdiplus)
endif()
obs-studio-25.0.4.tar.xz/plugins/obs-transitions/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/obs-transitions/CMakeLists.txt
Changed
transition-stinger.c
)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS Transitions module")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obs-transitions.rc)
+ list(APPEND obs-transitions_SOURCES
+ obs-transitions.rc)
+endif()
+
add_library(obs-transitions MODULE
${obs-transitions_SOURCES})
target_link_libraries(obs-transitions
obs-studio-25.0.4.tar.xz/plugins/obs-vst/.clang-format -> obs-studio-25.0.8.tar.xz/plugins/obs-vst/.clang-format
Changed
SpacesInSquareBrackets: false
TabWidth: 8
UseTab: ForIndentation
+---
+Language: ObjC
\ No newline at end of file
obs-studio-25.0.8.tar.xz/plugins/obs-vst/.github
Added
+(directory)
obs-studio-25.0.8.tar.xz/plugins/obs-vst/.github/workflows
Added
+(directory)
obs-studio-25.0.8.tar.xz/plugins/obs-vst/.github/workflows/clang-format.yml
Added
+name: Clang Format Check
+
+on: [push, pull_request]
+jobs:
+ ubuntu64:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ submodules: 'recursive'
+
+ - name: Install clang format
+ run: |
+ # gets us newer clang
+ sudo bash -c "cat >> /etc/apt/sources.list" << LLVMAPT
+ # 3.8
+ deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
+ deb-src http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main
+ LLVMAPT
+ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
+ sudo apt-get -qq update
+ sudo apt-get install -y clang-format-8
+ - name: Check the Formatting
+ run: |
+ ./formatcode.sh
+ ./CI/check-format.sh
+ macos64:
+ runs-on: macos-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ with:
+ submodules: 'recursive'
+
+ - name: Install clang-format
+ run: |
+ brew install clang-format
+ - name: Check the Formatting
+ run: |
+ ./formatcode.sh
+ ./CI/check-format.sh
\ No newline at end of file
obs-studio-25.0.8.tar.xz/plugins/obs-vst/CI
Added
+(directory)
obs-studio-25.0.8.tar.xz/plugins/obs-vst/CI/check-format.sh
Added
+#!/bin/bash
+dirty=$(git ls-files --modified)
+
+set +x
+if [[ $dirty ]]; then
+ echo "================================="
+ echo "Files were not formatted properly"
+ echo "$dirty"
+ echo "================================="
+ exit 1
+fi
\ No newline at end of file
obs-studio-25.0.4.tar.xz/plugins/obs-vst/EditorWidget.cpp -> obs-studio-25.0.8.tar.xz/plugins/obs-vst/EditorWidget.cpp
Changed
*****************************************************************************/
#include "headers/EditorWidget.h"
+#include <QCloseEvent>
EditorWidget::EditorWidget(QWidget *parent, VSTPlugin *plugin) : QWidget(parent), plugin(plugin)
{
void EditorWidget::closeEvent(QCloseEvent *event)
{
+#ifdef __APPLE__
+ event->ignore();
+#else
plugin->closeEditor();
UNUSED_PARAMETER(event);
-}
\ No newline at end of file
+#endif
+}
obs-studio-25.0.8.tar.xz/plugins/obs-vst/formatcode.sh
Added
+#!/usr/bin/env bash
+# Original source https://github.com/Project-OSRM/osrm-backend/blob/master/scripts/format.sh
+
+set +x
+set -o errexit
+set -o pipefail
+set -o nounset
+
+# Runs the Clang Formatter in parallel on the code base.
+# Return codes:
+# - 1 there are files to be formatted
+# - 0 everything looks fine
+
+# Get CPU count
+OS=$(uname)
+NPROC=1
+if [[ $OS = "Linux" || $OS = "Darwin" ]] ; then
+ NPROC=$(getconf _NPROCESSORS_ONLN)
+fi
+
+# Discover clang-format
+if type clang-format-8 2> /dev/null ; then
+ CLANG_FORMAT=clang-format-8
+else
+ CLANG_FORMAT=clang-format
+fi
+
+find . -type d -type f -o -name '*.h' -or -name '*.hpp' -or -name '*.m' -or -name '*.mm' -or -name '*.c' -or -name '*.cpp' \
+| xargs -I{} -P ${NPROC} ${CLANG_FORMAT} -i -style=file -fallback-style=none {}
\ No newline at end of file
obs-studio-25.0.4.tar.xz/plugins/obs-vst/mac/EditorWidget-osx.mm -> obs-studio-25.0.8.tar.xz/plugins/obs-vst/mac/EditorWidget-osx.mm
Changed
#import "../headers/VSTPlugin.h"
void EditorWidget::buildEffectContainer(AEffect *effect) {
- cocoaViewContainer = new QMacCocoaViewContainer(nullptr, this);
- cocoaViewContainer->move(0, 0);
- cocoaViewContainer->resize(300, 300);
- NSView *view = [[NSView alloc] initWithFrame: NSMakeRect(0, 0,
- 300, 300)];
+ cocoaViewContainer = new QMacCocoaViewContainer(nullptr, this);
+ cocoaViewContainer->move(0, 0);
+ cocoaViewContainer->resize(300, 300);
+ NSView *view = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 300, 300)];
- cocoaViewContainer->setCocoaView(view);
+ cocoaViewContainer->setCocoaView(view);
- cocoaViewContainer->show();
+ cocoaViewContainer->show();
- auto *hblParams =new QHBoxLayout();
- hblParams->setContentsMargins(0, 0, 0, 0);
- hblParams->addWidget(cocoaViewContainer);
+ auto *hblParams = new QHBoxLayout();
+ hblParams->setContentsMargins(0, 0, 0, 0);
+ hblParams->addWidget(cocoaViewContainer);
- VstRect* vstRect = nullptr;
- effect->dispatcher (effect, effEditGetRect, 0, 0, &vstRect, 0);
- if (vstRect)
- {
- NSRect frame = NSMakeRect(vstRect->left, vstRect->top,
- vstRect->right, vstRect->bottom);
+ VstRect *vstRect = nullptr;
+ effect->dispatcher(effect, effEditGetRect, 0, 0, &vstRect, 0);
+ if (vstRect) {
+ NSRect frame = NSMakeRect(vstRect->left, vstRect->top, vstRect->right,
+ vstRect->bottom);
- [view setFrame:frame];
+ [view setFrame:frame];
- cocoaViewContainer->resize(vstRect->right - vstRect->left,
- vstRect->bottom- vstRect->top);
+ cocoaViewContainer->resize(vstRect->right - vstRect->left,
+ vstRect->bottom - vstRect->top);
- this->setGeometry(QRect(0,0,vstRect->right - vstRect->left,
- vstRect->bottom- vstRect->top));
- }
+ this->setGeometry(QRect(0, 0, vstRect->right - vstRect->left,
+ vstRect->bottom - vstRect->top));
+ }
- effect->dispatcher (effect, effEditOpen, 0, 0, view, 0);
+ effect->dispatcher(effect, effEditOpen, 0, 0, view, 0);
-
- this->setLayout(hblParams);
+ this->setLayout(hblParams);
}
void EditorWidget::handleResizeRequest(int width, int height) {
- resize(width, height);
- cocoaViewContainer->resize(width, height);
- NSView *view = cocoaViewContainer->cocoaView();
- NSRect frame = NSMakeRect(0, 0, width, height);
+ resize(width, height);
+ cocoaViewContainer->resize(width, height);
+ NSView *view = cocoaViewContainer->cocoaView();
+ NSRect frame = NSMakeRect(0, 0, width, height);
- [view setFrame:frame];
+ [view setFrame:frame];
- this->setGeometry(QRect(0,0,width, height));
+ this->setGeometry(QRect(0, 0, width, height));
}
\ No newline at end of file
obs-studio-25.0.4.tar.xz/plugins/obs-vst/mac/VSTPlugin-osx.mm -> obs-studio-25.0.8.tar.xz/plugins/obs-vst/mac/VSTPlugin-osx.mm
Changed
#include "../headers/VSTPlugin.h"
-AEffect* VSTPlugin::loadEffect() {
- AEffect* newEffect = NULL;
-
- // Create a path to the bundle
- CFStringRef pluginPathStringRef = CFStringCreateWithCString(NULL,
- pluginPath.c_str(), kCFStringEncodingUTF8);
- CFURLRef bundleUrl = CFURLCreateWithFileSystemPath
- (kCFAllocatorDefault, pluginPathStringRef,
- kCFURLPOSIXPathStyle, true);
-
- if (bundleUrl == NULL)
- {
- blog(LOG_WARNING, "Couldn't make URL reference for VST plug-in");
- return NULL;
- }
-
- // Open the bundle
- bundle = CFBundleCreate(kCFAllocatorDefault, bundleUrl);
- if (bundle == NULL)
- {
- blog(LOG_WARNING, "Couldn't create VST bundle reference.");
- CFRelease(pluginPathStringRef);
- CFRelease(bundleUrl);
- return NULL;
- }
-
- vstPluginMain mainEntryPoint = NULL;
- mainEntryPoint = (vstPluginMain) CFBundleGetFunctionPointerForName
- (bundle, CFSTR("VSTPluginMain"));
-
- // VST plugins previous to the 2.4 SDK used main_macho for the
- // entry point name.
- if (mainEntryPoint == NULL)
- {
- mainEntryPoint = (vstPluginMain)
- CFBundleGetFunctionPointerForName(bundle,
- CFSTR("main_macho"));
- }
-
- if (mainEntryPoint == NULL)
- {
- blog(LOG_WARNING, "Couldn't get a pointer to plug-in's main()");
- CFBundleUnloadExecutable(bundle);
- CFRelease(bundle);
- return NULL;
- }
-
- newEffect = mainEntryPoint(hostCallback_static);
- if (newEffect == NULL)
- {
- blog(LOG_WARNING, "VST Plug-in's main() returns null.");
- CFBundleUnloadExecutable(bundle);
- CFRelease(bundle);
- return NULL;
- }
-
- newEffect->user = this;
-
- // Clean up
- CFRelease(pluginPathStringRef);
- CFRelease(bundleUrl);
-
- return newEffect;
+AEffect *VSTPlugin::loadEffect() {
+ AEffect *newEffect = NULL;
+
+ // Create a path to the bundle
+ CFStringRef pluginPathStringRef = CFStringCreateWithCString(
+ NULL, pluginPath.c_str(), kCFStringEncodingUTF8);
+ CFURLRef bundleUrl = CFURLCreateWithFileSystemPath(
+ kCFAllocatorDefault, pluginPathStringRef, kCFURLPOSIXPathStyle, true);
+
+ if (bundleUrl == NULL) {
+ blog(LOG_WARNING, "Couldn't make URL reference for VST plug-in");
+ return NULL;
+ }
+
+ // Open the bundle
+ bundle = CFBundleCreate(kCFAllocatorDefault, bundleUrl);
+ if (bundle == NULL) {
+ blog(LOG_WARNING, "Couldn't create VST bundle reference.");
+ CFRelease(pluginPathStringRef);
+ CFRelease(bundleUrl);
+ return NULL;
+ }
+
+ vstPluginMain mainEntryPoint = NULL;
+ mainEntryPoint = (vstPluginMain)CFBundleGetFunctionPointerForName(
+ bundle, CFSTR("VSTPluginMain"));
+
+ // VST plugins previous to the 2.4 SDK used main_macho for the
+ // entry point name.
+ if (mainEntryPoint == NULL) {
+ mainEntryPoint = (vstPluginMain)CFBundleGetFunctionPointerForName(
+ bundle, CFSTR("main_macho"));
+ }
+
+ if (mainEntryPoint == NULL) {
+ blog(LOG_WARNING, "Couldn't get a pointer to plug-in's main()");
+ CFBundleUnloadExecutable(bundle);
+ CFRelease(bundle);
+ return NULL;
+ }
+
+ newEffect = mainEntryPoint(hostCallback_static);
+ if (newEffect == NULL) {
+ blog(LOG_WARNING, "VST Plug-in's main() returns null.");
+ CFBundleUnloadExecutable(bundle);
+ CFRelease(bundle);
+ return NULL;
+ }
+
+ newEffect->user = this;
+
+ // Clean up
+ CFRelease(pluginPathStringRef);
+ CFRelease(bundleUrl);
+
+ return newEffect;
}
void VSTPlugin::unloadLibrary() {
- if (bundle)
- {
- CFBundleUnloadExecutable(bundle);
- CFRelease(bundle);
- }
+ if (bundle) {
+ CFBundleUnloadExecutable(bundle);
+ CFRelease(bundle);
+ }
}
\ No newline at end of file
obs-studio-25.0.4.tar.xz/plugins/obs-x264/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/obs-x264/CMakeLists.txt
Changed
obs-x264.c
obs-x264-plugin-main.c)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS x264 encoder")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obs-x264.rc)
+ list(APPEND obs-x264_SOURCES
+ obs-x264.rc)
+endif()
+
add_library(obs-x264 MODULE
${obs-x264_SOURCES})
target_link_libraries(obs-x264
obs-studio-25.0.4.tar.xz/plugins/rtmp-services/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/rtmp-services/CMakeLists.txt
Changed
rtmp-custom.c
rtmp-services-main.c)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS RTMP Services")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in rtmp-services.rc)
+ list(APPEND rtmp-services_SOURCES
+ rtmp-services.rc)
+endif()
+
set(rtmp-services_HEADERS
twitch.h
younow.h
obs-studio-25.0.4.tar.xz/plugins/rtmp-services/data/package.json -> obs-studio-25.0.8.tar.xz/plugins/rtmp-services/data/package.json
Changed
{
"url": "https://obsproject.com/obs2_update/rtmp-services",
- "version": 125,
+ "version": 131,
"files": [
{
"name": "services.json",
- "version": 125
+ "version": 131
}
]
}
obs-studio-25.0.4.tar.xz/plugins/rtmp-services/data/services.json -> obs-studio-25.0.8.tar.xz/plugins/rtmp-services/data/services.json
Changed
"name": "Castr.io",
"servers": [
{
- "name": "Chicago US",
+ "name": "US-East (Chicago, IL)",
"url": "rtmp://cg.castr.io/static"
},
{
- "name": "Los Angeles US",
- "url": "rtmp://la.castr.io/static"
- },
- {
- "name": "New York US",
+ "name": "US-East (New York, NY)",
"url": "rtmp://ny.castr.io/static"
},
{
- "name": "Miami US",
+ "name": "US-East (Miami, FL)",
"url": "rtmp://mi.castr.io/static"
},
{
- "name": "Montreal CA",
+ "name": "US-West (Seattle, WA)",
+ "url": "rtmp://se.castr.io/static"
+ },
+ {
+ "name": "US-West (Los Angeles, CA)",
+ "url": "rtmp://la.castr.io/static"
+ },
+ {
+ "name": "US-Central (Dallas, TX)",
+ "url": "rtmp://da.castr.io/static"
+ },
+ {
+ "name": "NA-East (Toronto, CA)",
"url": "rtmp://qc.castr.io/static"
},
{
- "name": "London UK",
- "url": "rtmp://uk.castr.io/static"
+ "name": "SA (Sao Paulo, BR)",
+ "url": "rtmp://br.castr.io/static"
},
{
- "name": "Frankfurt DE",
- "url": "rtmp://de.castr.io/static"
+ "name": "EU-West (London, UK)",
+ "url": "rtmp://uk.castr.io/static"
},
{
- "name": "Frankfurt DE 2",
+ "name": "EU-Central (Frankfurt, DE)",
"url": "rtmp://fr.castr.io/static"
},
{
- "name": "Moscow RU",
+ "name": "Russia (Moscow)",
"url": "rtmp://ru.castr.io/static"
},
{
- "name": "Singapore",
+ "name": "Asia (Singapore)",
"url": "rtmp://sg.castr.io/static"
},
{
- "name": "Sydney AU",
- "url": "rtmp://au.castr.io/static"
- },
- {
- "name": "Brazil",
- "url": "rtmp://br.castr.io/static"
+ "name": "Asia (India)",
+ "url": "rtmp://in.castr.io/static"
},
{
- "name": "India",
- "url": "rtmp://in.castr.io/static"
+ "name": "Australia (Sydney)",
+ "url": "rtmp://au.castr.io/static"
},
{
"name": "US Central",
{
"name": "Singapore",
"url": "rtmp://sg-central.castr.io/static"
- },
- {
- "name": "India",
- "url": "rtmp://in.castr.io/static"
}
],
"recommended": {
"servers": [
{
"name": "Auto",
- "url": "rtmp://s-sd.stripcdn.com/ext"
+ "url": "rtmp://s-sd.stripst.com/ext"
}
],
"recommended": {
"name": "Bongacams",
"servers": [
{
- "name": "Default",
- "url": "rtmp://origin.bcrncdn.com:1934/live"
+ "name": "Automatic / Default",
+ "url": "rtmp://auto.origin.gnsbc.com:1934/live"
+ },
+ {
+ "name": "Automatic / Backup",
+ "url": "rtmp://origin.bcvidorigin.com:1934/live"
+ },
+ {
+ "name": "Europe",
+ "url": "rtmp://z-eu.origin.gnsbc.com:1934/live"
+ },
+ {
+ "name": "North America",
+ "url": "rtmp://z-us.origin.gnsbc.com:1934/live"
}
],
"recommend": {
"keyint": 2,
"max video bitrate": 6000,
- "max audio bitrate": 192
+ "max audio bitrate": 192,
+ "bframes": 0,
+ "x264opts": "tune=zerolatency"
}
},
{
}
},
{
- "name": "ChathostessModels",
+ "name": "Chathostess",
"servers": [
{
- "name": "ChathostessModels - Default",
+ "name": "Chathostess - Default",
"url": "rtmp://wowza01.foobarweb.com/cmschatsys_video"
+ },
+ {
+ "name": "Chathostess - Backup",
+ "url": "rtmp://wowza05.foobarweb.com/cmschatsys_video"
}
],
"recommended": {
"keyint": 2,
- "max video bitrate": 3000,
+ "max video bitrate": 3600,
"max audio bitrate": 128
}
},
"recommended": {
"keyint": 2
}
+ },
+ {
+ "name": "niconico, premium member (ニコニコ生放送 プレミアム会員)",
+ "servers": [
+ {
+ "name": "Default",
+ "url": "rtmp://aliveorigin.dmc.nico/named_input"
+ }
+ ],
+ "recommended": {
+ "keyint": 2,
+ "profile": "high",
+ "max audio bitrate": 192,
+ "max video bitrate": 5808,
+ "x264opts": "tune=zerolatency"
+ }
+ },
+ {
+ "name": "niconico, free member (ニコニコ生放送 一般会員)",
+ "servers": [
+ {
+ "name": "Default",
+ "url": "rtmp://aliveorigin.dmc.nico/named_input"
+ }
+ ],
+ "recommended": {
+ "keyint": 2,
+ "profile": "high",
+ "max audio bitrate": 96,
+ "max video bitrate": 904,
+ "x264opts": "tune=zerolatency"
+ }
+ },
+ {
+ "name": "WASD.TV",
+ "servers": [
+ {
+ "name": "Automatic",
+ "url": "rtmp://push.rtmp.wasd.tv/live"
+ },
+ {
+ "name": "Russia, Moscow",
+ "url": "rtmp://ru-moscow.rtmp.wasd.tv/live"
+ },
+ {
+ "name": "Germany, Frankfurt",
+ "url": "rtmp://de-frankfurt.rtmp.wasd.tv/live"
+ },
+ {
+ "name": "Finland, Helsinki",
+ "url": "rtmp://fi-helsinki.rtmp.wasd.tv/live"
+ }
+ ],
+ "recommended": {
+ "keyint": 2,
+ "max video bitrate": 10000,
+ "max audio bitrate": 192
+ }
+ },
+ {
+ "name": "VirtWish",
+ "servers": [
+ {
+ "name": "Default",
+ "url": "rtmp://rtmp.virtwish.com/live"
+ }
+ ]
}
]
}
obs-studio-25.0.4.tar.xz/plugins/rtmp-services/rtmp-custom.c -> obs-studio-25.0.8.tar.xz/plugins/rtmp-services/rtmp-custom.c
Changed
bfree(service->server);
bfree(service->key);
+ bfree(service->username);
+ bfree(service->password);
service->server = bstrdup(obs_data_get_string(settings, "server"));
service->key = bstrdup(obs_data_get_string(settings, "key"));
obs-studio-25.0.4.tar.xz/plugins/text-freetype2/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/text-freetype2/CMakeLists.txt
Changed
endif()
if(WIN32)
+ set(MODULE_DESCRIPTION "OBS Freetype text module")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in text-freetype2.rc)
set(text-freetype2_PLATFORM_SOURCES
find-font.c
- find-font-windows.c)
+ find-font-windows.c
+ text-freetype2.rc)
elseif(APPLE)
find_package(Iconv QUIET)
if(NOT ICONV_FOUND AND ENABLE_FREETYPE)
obs-studio-25.0.4.tar.xz/plugins/vlc-video/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/vlc-video/CMakeLists.txt
Changed
vlc-video-source.c
)
+if(WIN32)
+ set(MODULE_DESCRIPTION "OBS VLC module")
+ configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in vlc-video.rc)
+ list(APPEND vlc-video_SOURCES
+ vlc-video.rc)
+endif()
+
add_library(vlc-video MODULE
${vlc-video_SOURCES}
${vlc-video_HEADERS})
obs-studio-25.0.4.tar.xz/plugins/win-dshow/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/win-dshow/CMakeLists.txt
Changed
encode-dstr.hpp
ffmpeg-decode.h)
+set(MODULE_DESCRIPTION "OBS DirectShow module")
+configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in win-dshow.rc)
set(win-dshow_SOURCES
win-dshow.cpp
win-dshow-encoder.cpp
dshow-plugin.cpp
- ffmpeg-decode.c)
+ ffmpeg-decode.c
+ win-dshow.rc)
set(libdshowcapture_SOURCES
libdshowcapture/source/capture-filter.cpp
obs-studio-25.0.4.tar.xz/plugins/win-ivcam/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/win-ivcam/CMakeLists.txt
Changed
${win-ivcam_seg_library_GENERATED_FILES}
)
+set(MODULE_DESCRIPTION "OBS Intel(R) RealSense(TM) module")
+configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in win-ivcam.rc)
set(win-ivcam_SOURCES
realsense.cpp
- )
+ win-ivcam.rc)
source_group("seg_library\\Source Files" FILES ${win-ivcam_seg_library_SOURCES})
source_group("seg_library\\Header Files" FILES ${win-ivcam_seg_library_HEADERS})
obs-studio-25.0.4.tar.xz/plugins/win-mf/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/win-mf/CMakeLists.txt
Changed
set(win-mf_config_HEADERS
"${CMAKE_CURRENT_BINARY_DIR}/mf-config.hpp")
+set(MODULE_DESCRIPTION "OBS Windows Media Foundations H.264/AAC encoder")
+configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in win-mf.rc)
if(ENABLE_WINMF)
set(win-mf_SOURCES
mf-plugin.cpp
mf-common.cpp
mf-encoder-descriptor.cpp
mf-h264.cpp
- mf-h264-encoder.cpp)
+ mf-h264-encoder.cpp
+ win-mf.rc)
set(win-mf_HEADERS
mf-common.hpp
wmcodecdspuuid)
else()
set(win-mf_SOURCES
- mf-plugin.cpp)
+ mf-plugin.cpp
+ win-mf.rc)
endif()
add_library(win-mf MODULE
obs-studio-25.0.4.tar.xz/plugins/win-wasapi/CMakeLists.txt -> obs-studio-25.0.8.tar.xz/plugins/win-wasapi/CMakeLists.txt
Changed
set(win-wasapi_HEADERS
enum-wasapi.hpp)
+set(MODULE_DESCRIPTION "OBS WASAPI module")
+configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in win-wasapi.rc)
set(win-wasapi_SOURCES
win-wasapi.cpp
enum-wasapi.cpp
- plugin-main.cpp)
+ plugin-main.cpp
+ win-wasapi.rc)
add_library(win-wasapi MODULE
${win-wasapi_SOURCES}
No build results available
No rpmlint results available
Request History
boombatower created request almost 5 years ago
- Update to version 25.0.8:
* Revert "Merge pull request #1786 from brittneysclark/qsv_texture_based_encoding"
* libobs: Update version to 25.0.8
* CI: Update macOS deps to fix lua
* obs-ffmpeg: Add error message for non-zero GPU
* obs-ffmpeg: Add localization for NVENC error messages
* libobs: Clear last error on encoder shutdown
* obs-ffmpeg: Preserve error message from new NVENC
* obs-ffmpeg: Log why new NVENC might not be used
* UI: Remove requirement for replay buffer hotkey
* obs-filters: Add a user label to the LUT filter
* CI: Fix Azure Pipelines macOS runs
* obs-browser, obs-vst: Fix formatting
* UI: Update OSX to macOS in English translation
* rtmp-services: Add VirtWish service
* rtmp-services: Change Stripchat streaming service
* UI: Add white icons for dock titles
* Revert "UI: Remove unnecessary global variables"
* libobs-opengl: Fix viewport flip
* CI: Add main Github Actions workflow for branch pushes and PRs
* UI: Remove unnecessary global variables
* UI: Adjust a few margins
* obs-vst: Fix formatting
* obs-browser: Fix formatting
* UI: Remove all scenes in ClearSceneData
* libobs: Don't save removed sources
* rtmp-services: Update ChathostessModels service (#2745)
* obs-qsv11: Enable QSV texture-based encoding
* libobs: Fix plugin folder search path case on macOS
* UI: Add status icons for recording and streaming
boombatower accepted request almost 5 years ago
ok