5100 Commits
Author SHA1 Message Date
pkv 0e742b3ad7 nv-filters: Remove CUDA from audio loader
CUDA is no longer used in Audio FX, so we remove everything related to
it in the nvafx loader.

Signed-off-by: pkv <pkv@obsproject.com>
2026-09-10 14:12:37 -04:00
pkv 06e3fbcf73 nv-filters: Enable Video FX SDK 1.3.0 for ARM
This updates the video FX SDK to 1.3.0, which enables arm64 support.
Backwards compatibility with SDK 0.7.6 has been kept.

Signed-off-by: pkv <pkv@obsproject.com>
2026-09-10 14:12:37 -04:00
pkv 9a91114907 nv-filters: Do not display VAD for dereverb
Voice Activated Detection (VAD) does not work with the room echo removal
(dereverb) FX.
So we remove it from Properties.

Signed-off-by: pkv <pkv@obsproject.com>
2026-09-10 14:12:37 -04:00
pkv 250dd2ab47 nv-filters: Enable audio FX SDK 3.0.0 for ARM
SDK 3.0.0 brings compatibility with arm64. The DLL loading sequence has
been adjusted since the FX are now loaded in their own child DLL.
The DLL loader has been also cleaned up by removing unused symbols. This
allowed us to dodge a few ABI breaks from NVIDIA...

Signed-off-by: pkv <pkv@obsproject.com>
2026-09-10 14:12:37 -04:00
Service Checker ed9b3cc19f rtmp-services: Remove defunct servers/services 2026-09-09 18:11:27 -04:00
tytan652 6b3e550729 cmake: Remove MbedTLS custom finder
The CMake package provided by upstream was preferred but macOS build
were without it until recently.
2026-09-04 16:59:23 -04:00
Gol-D-Ace 42ea39628c win-capture: Add Roblox window class auto switch to WGC mode 2026-09-02 12:54:43 -04:00
kangunnie_soop a2400fe980 rtmp-services: Update SOOP ingests
- Update streaming URL
- Consolidate SOOP Korea and SOOP Global service entries
2026-09-01 22:48:27 -04:00
Penwywern eee6a81ddc frontend: Register the replay buffer save hotkey in the frontend
Existing registering of the save hotkey in obs-ffmpeg makes it
impossible for it to trigger a frontend event, and is inconsistent with
other existing output hotkeys.

This registers the save hotkey in the frontend and removes the
registration in obs-ffmpeg, and adds a "due to hotkey" log message,
like other output hotkeys.
2026-09-01 15:44:00 -04:00
Penwywern d1244016fc obs-ffmpeg: Add replay buffer saving output signal 2026-09-01 15:44:00 -04:00
Ryan Foster 291298ed08 obs-nvenc: Enable NVENC on Arm64 2026-09-01 12:59:03 -04:00
Pablo bcd53e2914 win-capture: Add Construct 3 window class to WGC match
Construct 3 games register a top-level window class named
"WindowsWebview2Wrapper" which does not contain "Chrome" or "Mozilla",
causing OBS automatic mode to use BitBlt instead of WGC, which results
in a black screen for Construct 3 games.

Add "WindowsWebview2Wrapper" to wgc_whole_match_classes and add
compatibility entries for window capture BitBlt and game capture
warnings.

Closes #13359
2026-08-24 16:16:27 -04:00
Warchamp7 646836a311 libobs, frontend: Deprecate source monitoring_type 2026-08-24 14:55:40 -04:00
Alex Luccisano 0969e43a83 obs-ffmpeg: Fix B-frame offset calculation in AMF
AVC and AV1 encoders in AMF that support B-frames were incrementing
`dts_offset` even when B-frames were set to 0. For AVC, adjust the
`dts_offset` only when B-frames are supported and are greater than 0,
and clamp to maximum supported.

For AV1, remove the dts_offset code completely because it is being
ignored anyway. AV1 handles B-frames and offsets differently; refer
to [1] for details.

[1]: https://github.com/obsproject/obs-studio/pull/10996
2026-08-24 14:22:25 -04:00
Kira-NT 7e22ed2d48 win-capture: Improve fullscreen window detection
It's not that uncommon for apps on Windows to use a hacky method of
extending their windows 1-2px past the supported monitor resolution
to preserve "true" windowed fullscreen and circumvent some exclusive
fullscreen-related issues presented by their graphics library,
Windows itself, or both.

Therefore, the fullscreen detection technique has been relaxed
to properly identify windows slightly larger than the monitor's
viewport as fullscreen.

Windows also does something similar, evident by the fact that
the taskbar disappears, as it always does for fullscreen windows,
even when a window stretches slightly beyond the defined viewport.
2026-08-22 16:02:45 -04:00
Lain c3046ec172 libobs/graphics: Break image file API to prevent ABI issues 2026-08-21 15:43:20 -04:00
tytan652 71ef44f06e cmake: Require MbedTLS 3 and exclude 4 or later
Until the codebase is updated to support it, CMake will explicitly search
for version 3 that is supported by the codebase.
2026-08-21 15:00:09 -04:00
derrod f89ad4bee5 obs-outputs: Fix file splitting overshooting when b-frames are used
I discovered while testing that the first split would always be one GOP
too long (e.g. 1m2s instead of 1m) due to the fact that b-frames and
negative start DTSes were not accounted for.

This is now fixed by setting the start_time to the nonzero negative DTS
produced for the first packet. Additionally, a small tolerance of 1 ms
was also added to account for rounding issues present in the first GOP.
2026-08-21 14:33:06 -04:00
derrod 575c77f19d obs-outputs: Do not drop last packet when flushing Hybrid file
Originally, before file splitting was introduced, I made the choice to
simply ignore the last frame in the packet queue of the muxer, because
frame N+1 is required to properly determine the duration and I figured
nobody would notice if their recording is one frame short.

However, when using frame splitting this would result in the last frame
before the split being dropped. To fix this, we can simply reuse the
previous sample's duration for the final sample in a file. Since OBS
only does CFR, they should all be identical anyway.
2026-08-21 14:33:06 -04:00
jcm 6c6adac9c9 mac-capture: Use 64RGBAHalf pixel format for screen capture when available 2026-08-21 13:58:36 -04:00
tytan652 c568ee4969 linux-pipewire: Forbid screencast source duplication
Each instance holds a unique session with a unique restore token.
Which both can not be duplicated.
2026-08-20 23:13:55 -04:00
Penwywern 19a1eff8d3 win-capture: Reorder capture method dropdown 2026-08-20 21:41:32 -04:00
Penwywern e6f6487d7b win-capture: Change capture methods name 2026-08-20 21:41:32 -04:00
Warchamp7 f5b6d8da12 frontend: Update forms to fully qualified enums 2026-08-10 17:48:54 -04:00
Warchamp7 4abbcf0b6d frontend: Update invokeMethod to use functions 2026-08-10 16:27:32 -04:00
Richard Stanway 88de106cff frontend, plugins: Remove PreferSystem32Images mitigation
This process mitigation flag is inherited by child processes and applies
to load-time DLL resolution, pushing the application's own directory
below the system directories. If there are system-installed copies of
dependent DLLs such as FFmpeg, those get loaded when OBS is updated as
the updater and subsequent relaunch of OBS inherit the mitigation.

As we use SetDefaultDllDirectories, this mitigation is less important,
the proper fix would be to use /DEPENDENTLOADFLAG to protect load-time
import resolution.
2026-08-04 17:19:45 -04:00
jcm b6f854c73b mac-virtualcam: Suppress deprecation warnings in DAL module
This line, along with the entire DAL plugin itself, should be removed
when the macOS deployment target is raised to 14 or above.
2026-08-04 15:59:21 -04:00
Richard Stanway e2e0bfc8fc win-capture: Log hook DLL install / update errors
We suspect users hit errors updating the system-wide hook files even if
the file is not in use, but without logging we have no way to know for
sure. This commit adds additional logs. Not logging source paths
anywhere is intentional to avoid wide char to utf-8 issues making this
more complicated than it needs to be - the source will always be the OBS
install dir regardless.
2026-07-24 17:31:49 -04:00
Richard Stanway d7a6a8e1b7 win-capture: Resolve inject helper and hook path to absolute paths 2026-07-24 11:40:08 -04:00
Hernán R ca937366c1 rtmp-services: Update Piczel.tv ingest servers 2026-07-11 14:49:10 -04:00
jcm 8a5dab518b mac-capture: Don't capture cursor for macOS Audio Capture sources 2026-07-10 15:10:44 -04:00
Matt Gajownik f2db0972ee Update translations from Crowdin 2026-07-09 14:48:07 -04:00
pkv a00854666f nv-filters: Remove direct calls to CUDA in Audio FX
The CUDA calls in AUDIO FX were added initially to big a bug on the SDK
side where the SDK functions where not checking the CUDA context.
This led to interference with the VIDEO FX, potentially breaking it.
These bugs have been fixed by the SDK so we don't need anymore these
CUDA calls.

Signed-off-by: pkv <pkv@obsproject.com>
2026-07-01 17:37:45 -04:00
Benedict Etzel 27ac23ef75 win-capture: Add Hearthstone Deck Tracker to compatibility list 2026-06-29 14:53:19 -04:00
Matt Gajownik b631635a38 win-capture: Build with file descriptor 2026-06-26 15:19:41 -04:00
Matt Gajownik 039d6ebb46 obs-vst: Build with file descriptor 2026-06-26 15:19:41 -04:00
Matt Gajownik aa33016e28 obs-webrtc: Build with file descriptor 2026-06-26 15:19:41 -04:00
Lordmau5 2b88e617a2 obs-nvenc: Only update Target Quality in CQVBR mode
Previously it was setting the `averageBitRate` value to what is being set in Variable Bitrate rate control mode. However, CQVBR is initialized with a value of `0` and instead Target Quality is being used. This adds a check for the CQVBR mode and if it's set will update the `targetQuality` value, otherwise it will update `averageBitRate`.

Additionally reset `averageBitRate` to 0 if CQVBR is active, and reset `targetQuality` to 0 if it's not in any VBR mode
2026-06-19 14:06:39 -04:00
Ryan Foster 74c106512d obs-websocket: Update to 5.7.4
Changes:
 - forms: Replace implicit lamda captures for C++20
 - websocketserver: Replace implicit lamda captures for C++20
 - Update translations from Crowdin
2026-06-18 16:49:11 -04:00
Ryan Foster db84905fb1 obs-browser: Update to 2.26.9
obsproject/obs-browser@19b1c96 Replace implicit lamda captures for C++20
obsproject/obs-browser@f76de5f Do not try to create the browser before init
obsproject/obs-browser@68af8e8 Build with Windows file descriptors
obsproject/obs-browser@951cf81 Update translations from Crowdin
obsproject/obs-browser@bdac160 Limit browser dock workaround to impacted Qt versions
obsproject/obs-browser@3f0a2cd Update version to 2.26.9
2026-06-18 16:49:11 -04:00
PatTheMav cb9b4f119a plugins: Apply clang-format 22 formatting 2026-06-17 15:17:09 -04:00
PatTheMav b1d9dffbc5 plugins: Force C language for clang-format
Only applies to actual ObjC-based plugins.
2026-06-17 15:17:09 -04:00
PatTheMav d838e11983 plugins: Force C language for clang-format
Only applies to actual C-based plugins.
2026-06-17 15:17:09 -04:00
Warchamp7 30b63c6849 Update C++ files with braces 2026-06-09 13:41:19 -04:00
Nerixyz b8f7a1e3b8 cmake: Enable Swift language on macOS 2026-06-08 17:52:56 -04:00
PatTheMav 1829492e6b cmake: Move frontend plugins into main plugins dir
Frontend plugins should not require being placed in the frontend
directory to be built successfully. Indeed they should only depend
on libobs and the obs-frontend-api and thus their source tree should
be able to exist anywhere (even standalone) and the plugin should still
compile successfully (just like any 3rd party plugin).

Thus moving those plugins into the main plugin directory ensures that
they don't require on any "special sauce" within the source tree to
compile.
2026-06-05 16:00:18 -04:00
Richard Stanway 9541600b3d nv-filters: Improve handling of SDK DLL loading 2026-06-05 15:27:30 -04:00
Richard Stanway e29a640ddd obs-ffmpeg, win-capture: Use better default DLL directory settings 2026-06-05 15:27:30 -04:00
Richard Stanway 76ea10e281 coreaudio-encoder: Avoid using SetDllDirectory, specify full path 2026-06-05 15:27:30 -04:00
Alex Luccisano 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