Commit Graph
15557 Commits
Author SHA1 Message Date
Richard StanwayandRyan Foster 8801dbef06 libobs: Avoid calling SetDllDirectory when looking for dependent DLLs
Using the full path and appropriate LoadLibraryEx flags is safer as it
gives us more control over the search paths.
2026-06-05 15:27:30 -04:00
Richard StanwayandRyan Foster 77eabcc06a frontend: Set better default DLL directory settings on Windows
This helps mitigate "DLL planting" attacks by removing the current
directory from most DLL loading calls.
2026-06-05 15:27:30 -04:00
Richard StanwayandRyan Foster 76ea10e281 coreaudio-encoder: Avoid using SetDllDirectory, specify full path 2026-06-05 15:27:30 -04:00
Ryan Foster 3b4872c5c0 frontend: Replace implicit "=" with "this" 2026-06-05 14:48:32 -04:00
Alex LuccisanoandRyan Foster af77628900 frontend: Fix null settings and DBR for custom configs
When using custom RTMP output with a JSON config that omits
encoder settings, settings.dump() produces "null" which
obs_data_create_from_json cannot parse. Fall back to
obs_data_create() for null/non-object settings so encoders
use their defaults.

Additionally, when bitrate_interpolation_points is absent,
the code unconditionally set interpolation_table_data as
empty arrays. This caused build_dbr_interpolation_table to
wipe the default linear table, leaving DBR enabled but
unable to adjust bitrates during congestion. Only set the
interpolation data when all encoders provide it, otherwise
fall back to the default linear 0-to-max interpolation.
2026-06-05 14:11:55 -04:00
Alex LuccisanoandRyan Foster 83ed914ecf obs-outputs: Use multitrack DBR capability flag
Use the new `OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE` flag when
streaming with multiple tracks, instead of relying on the single-
track `OBS_ENCODER_CAP_DYN_BITRATE` flag. In multitrack cases where
multiple codecs are being used (e.g. mixed AVC and HEVC), all encoders
must support the multitrack capability flag otherwise the dynamic
bitrate (DBR) feature is disabled for the streaming session.
2026-06-05 14:11:55 -04:00
Alex LuccisanoandRyan Foster 0943ea2cf6 plugins: Apply multitrack dynamic bitrate flag
Enable the `OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE` capability on
the encoders that support it.
2026-06-05 14:11:55 -04:00
Alex LuccisanoandRyan Foster edbe74b2b5 libobs: Add multitrack dynamic bitrate capability
The `OBS_ENCODER_CAP_DYN_BITRATE` flag indicates if an encoder is
capable of supporting dynamic bitrate changes without disturbing
the stream. In the case of multitrack video, dynamic bitrate changes
are also possible, however the encoder must be able to change bitrates
for multiple renditions and multiple codecs and maintain IDR alignment.
Add the `OBS_ENCODER_CAP_MULTITRACK_DYN_BITRATE` to specify this
capability for the encoder.
2026-06-05 14:11:55 -04:00
Alex LuccisanoandRyan Foster 14f25811d1 frontend: Remove multitrack locale strings
Remove the locale strings that are no longer needed now that
`HandleIncompatibleSettings()` is removed, and replace some
`<br>` tags with \n to fix rendering issues on MacOS.
2026-06-05 14:11:55 -04:00
Alex LuccisanoandRyan Foster b1be50013f obs-ffmpeg: Rework AMF dynamic bitrate change behavior
The `amf_xxx_update()` functions for AVC, HEVC, and AV1 are
unconditionally invoking Flush() and ReInit() even though this is not
required in all situations. Changing the bitrate at least in CBR mode
does not require the flush operation and can result in unaligned IDR
frames across members of an encoder group. Do not flush the pipeline
for CBR bitrate changes; instead, force an IDR to occur with the
bitrate change.
2026-06-05 14:11:55 -04:00
Ruwen HahnandRyan Foster cd95b3bf49 frontend: Add dynamic bitrate support to multitrack video
The bitrate interpolation points are sent in JSON configuration and
need to be forwarded to `create_video_encoders()`. Also remove the
`HandleIncompatibleSettings()` handler because there are no longer any
incompatible settings.
2026-06-05 14:11:55 -04:00
Ruwen HahnandRyan Foster 4c97c62ccf obs-outputs: Implement multitrack dynamic bitrate 2026-06-05 14:11:55 -04:00
Ruwen HahnandRyan Foster dd1e93f1ab libobs: Refactor encoder_group access
Also reconfigure all grouped encoders on the same frame.
2026-06-05 14:11:55 -04:00
PatTheMavandRyan Foster b8360d7261 cmake: Update Xcode version requirement on macOS
In preparation for macOS 27 and to fix existing build errors when
Swift 6 (rather than Swift 6.1 is used) to build the project, force use
of Xcode 26.5 for macOS builds.
2026-06-04 15:57:25 -04:00
PatTheMavandRyan Foster 2e2612dc95 CI: Update macos runners and used Xcode version
In preparation for macOS 27 and to fix existing build errors when
Swift 6 (rather than Swift 6.1 is used) to build the project, force use
of macOS 26 runners as well as Xcode 26.5 for CI.
2026-06-04 15:57:25 -04:00
Ryan Foster 2598e33a1e CI: Update deps to 2026-06-02 release
Notable Changes:
 * deps.macos: Update Sparkle to 2.9.2
 * deps.qt: Update Qt to 6.11.1 for Windows
 * deps.qt: Update Qt to 6.11.1 for macOS
2026-06-04 14:40:27 -04:00
Ryan Foster fc95b0a83b CI: Update deps to 2026-05-21 release
Notable Changes:
 * deps.ffmpeg: Update AOM to 3.13.1
 * deps.windows: Add VST3 SDK
 * deps.macos: Add VST3 SDK
 * utils.zsh: Enable debug symbols for ObjC
 * deps.ffmpeg: Update nv-codec to n13.0.19.0
 * deps.ffmpeg: Update AMF to 1.5.0
 * deps.ffmpeg: Update FFmpeg to 8.1
 * deps.macos: Update qrcodegen-cmake to v1.8.0-cmake4
 * deps.macos: Update Sparkle to 2.9.1
 * deps.qt: Update Qt to 6.10.3 for Windows
 * deps.qt: Update Qt to 6.10.3 for macOS
 * deps.ffmpeg: Enable PDBs for FFmpeg builds on Windows
 * deps.ffmpeg: Update libdatachannel to v0.24.2
2026-06-03 16:37:51 -04:00
Wu HaoyuandRyan Foster 151097d3bd frontend: Fix a dereference of nullptr
`outputResolution` may not be editable and outputResolution->lineEdit()
can return `nullptr` which causes crash.
2026-06-02 15:15:34 -04:00
Warchamp7andRyan Foster 686ee75a05 frontend: Set up theme watcher during init 2026-05-28 16:09:19 -04:00
John BowersandRyan Foster 4d6d9a5166 frontend: Slight change to multi-track text
Change text to indicate that enhanced broadcasting/MT does not have
to configure multiple encodes, although it often/usually does.
2026-05-27 12:45:53 -04:00
Ryan Foster 4726edd113 frontend: Fix updates failing when configured without What's New
The updates config folder is used to download files tied to update
branch selection and application updates. If this folder does not exist,
the downloads fail. Tying this folder creation to What's New, which also
uses this folder, seems incorrect, since it is also uses for application
updates. Remove the ifdef guard for folder creation.
2026-05-26 17:07:05 -04:00
Zhang BoyangandRyan Foster 97ee7fa7cb cmake: Fix dependency download logic
Previously, if download failure occurred or interrupted by Ctrl-C, the
broken file is not removed. This is true for the first case because
"message(FATAL_ERROR ..." stops cmake and "file(REMOVE ..." is never
reached. After that, if cmake is run second time, SHA256 verification is
skipped and the broken file will be used.

This patch fixes this by using a temporary intermediate file. The file
data is downloaded into a temporary file first, then the temporary file
is atomically renamed to destination.

Error checking of download status is also improved. The if clause now
checks error code against zero more strictly, according to cmake's
documentation.
2026-05-26 15:41:10 -04:00
jpark37andRyan Foster 290904c47d obs-filters: Add filter to compose SDR into HDR
Provide ability to use power of 2.4 to simulate BT.1886 for Rec. 709.
2026-05-26 15:16:00 -04:00
Ryan FosterandGitHub 14a664a4e9 Merge pull request #13449 from RytoEX/update-actions
CI: Update GitHub actions
2026-05-26 14:44:38 -04:00
Ryan Foster aafd466423 CI: Update sign-windows commit 2026-05-26 14:19:50 -04:00
Ryan Foster 037100a281 CI: Update yuzutech/annotations-action to v0.6.0 2026-05-26 14:18:40 -04:00
Ryan Foster 5b1a4fc8c2 CI: Update peter-evans/create-pull-request to v8.1.1 2026-05-26 14:18:40 -04:00
Ryan Foster 51462e7f22 CI: Update obsproject/obs-crowdin-sync
Update both the download and upload actions.
2026-05-26 14:18:40 -04:00
Ryan Foster 6dfd961099 CI: Update korelstar/xmllint-problem-matcher 2026-05-26 14:18:40 -04:00
Ryan Foster d8dc0df278 CI: Update google-github-actions/auth to v3.0.0 2026-05-26 14:18:40 -04:00
Ryan Foster 8167a74c60 CI: Update github/codeql-action/upload-sarif to v4.35.5 2026-05-26 14:18:40 -04:00
Ryan Foster 5ecc2dd514 CI: Update flatpak/flatpak-github-actions to v6.7
Update both flatpak-builder and flat-manager.
2026-05-26 14:18:40 -04:00
Ryan Foster 0e9c744a4a CI: Update cloudflare/wrangler-action to v4.0.0 2026-05-26 14:18:40 -04:00
Ryan Foster 065c1e2b77 CI: Update Homebrew/actions/setup-homebrew 2026-05-26 14:18:40 -04:00
Ryan Foster 9774be6c1c CI: Update CyberAndrii/steam-totp
Update to remove node20 deprecation warnings.

Also update the source of the action since the name has changed.
2026-05-26 14:18:40 -04:00
Ryan Foster bc17e3dc5f CI: Update CyberAndrii/setup-steamcmd
Update to remove node20 deprecation warnings.

Also update the source of the action since the name has changed.
2026-05-26 14:18:40 -04:00
Ryan Foster bf0c56d9e7 CI: Update actions/upload-artifact/merge to v7.0.1 2026-05-26 14:18:40 -04:00
Ryan Foster 34e3cfe99e CI: Update actions/upload-artifact to v7.0.1 2026-05-26 14:18:40 -04:00
Ryan Foster 11330693e9 CI: Update actions/download-artifact to v8.0.1 2026-05-26 14:18:40 -04:00
Ryan Foster 9ba3b7357c CI: Update actions/checkout to v6.0.2 2026-05-26 14:18:40 -04:00
Ryan Foster 3f505216ee CI: Update actions/cache/save to v5.0.5 2026-05-26 14:18:40 -04:00
Ryan Foster e3a0540a3a CI: Update actions/cache/restore to v5.0.5 2026-05-26 14:18:40 -04:00
Ryan Foster 49adc4d463 CI: Update actions/cache to v5.0.5 2026-05-26 14:18:40 -04:00
Ryan Foster 716784f02b CI: Update actions/attest-build-provenance to v4.1.0
Also, change from actions/attest-build-provenance to actions/attest. The
former is just a wrapper around the latter now.
2026-05-26 14:18:40 -04:00
d412d64ef9 plugins: Fix build issues in Xcode 26.4
Replaced implicit type conversion within macOS plugins (mac-capture,
mac-syphon, mac-videotoolbox, mac-virtualcam) with explicit type
conversions to clear compile errors with Apple Clang 21.0 and Xcode
26.4.

Co-authored-by: PatTheMav <patthemav+github@gmail.com>
Co-authored-by: jcm <6864788+jcm93@users.noreply.github.com>
2026-05-26 13:39:02 -04:00
ExeldroandRyan Foster 854948b8df frontend: Add copy paste functions 2026-05-22 17:25:23 -04:00
tfoandRyan Foster 17fc299b74 win-dshow: Fix CreateFileW return value check in virtualcam filter
CreateFileW returns INVALID_HANDLE_VALUE on failure, not NULL.
The previous check would always evaluate to true on failure,
causing ReadFile and CloseHandle to be called on an invalid
handle.
2026-05-22 16:36:52 -04:00
Tarun EandRyan Foster fdca38a63e image-source: Include .webp files in directory source
Previously, the Image Slide Show source skipped *.webp files when
adding images via 'Add Directory'. This update ensures that .webp
files are now correctly included.
2026-05-22 16:07:02 -04:00
Asahi LinaandRyan Foster 57291eb9b0 libobs-opengl: Reject external-only modifiers
These modifiers cannot be used with the standard texture sampling
codepaths, so we need to reject them to avoid invalid GL operations.

Closes obsproject/obs-studio#12498
2026-05-22 15:33:32 -04:00
ThrowandRyan Foster a13632c0d9 libobs: Correctly handle duplicator failure 2026-05-21 15:20:57 -04:00