Commit Graph
15731 Commits
Author SHA1 Message Date
Matt Gajownik a0aec482eb CI, build-aux: Update CEF from 127/6533 to 150/7871 2026-09-18 15:53:29 -04:00
Warchamp7 737625160c idian: Debounce widget repolishing
Uses Qt's QGlobalStatic macro to create a shared Utils singleton for
repolishing widgets. This means that multiple calls to the Utils'
styling class helpers only trigger a single repolish per widget during
a one tick of the Qt event loop.
2026-09-18 15:24:10 -04:00
Warchamp7 ab197847da idian: Remove Utils inheritance
Updates the idian widgets to no longer inherit from the Utils class.

The multi-inheritance approach was from an earlier iteration of the
utils prior to the static methods and served as a convenience factor.
With the addition of the static methods, many of them no longer need
an actual instance of the class.
2026-09-18 15:24:10 -04:00
Warchamp7 d129eeb303 frontend: Refactor Idian widgets
The idian widgets were built when we had a much lower
understanding of how Qt expects you to build custom
complex widgets and without a direct use-case.

They were also built far too rigid for what every attempted
use of them thus far has necessitated. These changes break
them into simpler 'pieces' and provide getters for internals
that are intended to be accessed.
2026-09-18 15:24:10 -04:00
Matt Gajownik cba17c1d81 obs-browser: Update to 2.27.0
obsproject/obs-browser@5d2aadb Update to C++20
obsproject/obs-browser@d7065f9 cmake: Update Info.plist generation for macOS
obsproject/obs-browser@bb9b32e Enable support for CEF 6613+ and Chrome Runtime
obsproject/obs-browser@77bad77 Use constexpr for disabled command line features
obsproject/obs-browser@1d24808 Disable global shortcuts portal integration
obsproject/obs-browser@f555da0 Update version to 2.27.0
obsproject/obs-browser@a162443 Allow WebSocket requests over the network
2026-09-17 13:05:56 -04:00
alvin1995 539064599d libobs-metal: Wrap blitSwapChains in autoreleasepool to fix mach port leak
The CVDisplayLink callback thread driving blitSwapChains() has no
implicit autorelease pool. CAMetalDrawable objects returned by
nextDrawable() are autoreleased and each holds an IOSurface backed
by an IOSurfaceSharedEventReference mach port.

Without an autoreleasepool, these drawables are never drained on the
display link thread, causing a new IOSurface (and port) to leak every
frame when a render target is set (e.g. cross-process preview via
CAContext/CALayerHost).

Fix by wrapping the full frame cycle (nextDrawable → blit → present
→ commit) in an autoreleasepool, so autoreleased drawables are
reclaimed each frame and returned to the maximumDrawableCount pool.
2026-09-17 12:43:38 -04:00
tytan652 caaa022340 build-aux: Add versions to Flatpak plugin extension point
- Enables access to stable branch (Flathub) plugin to Flathub Beta releases
- Strip away access to beta branch plugins (Flathub Beta), mostly unused
  by submitters
- Enables test Flatpak plugin from Flathub submissions to be tested
2026-09-11 14:38:57 -04:00
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
Warchamp7 8126df7cd0 libobs: Create unique groups when duplicating scene 2026-09-10 13:45:26 -04:00
Service Checker ed9b3cc19f rtmp-services: Remove defunct servers/services 2026-09-09 18:11:27 -04:00
Warchamp7 012c6c23c7 frontend: Fix group icon styling
This helper does not support multiple classes in a single line. Each
class must be added separately.
2026-09-08 17:14:40 -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
Warchamp7 57bfcf10ac frontend: Minor Spinbox cleanup
Fixes some minor codestyle problems.
2026-09-03 14:11:24 -04:00
PatTheMav ecebe28a1e SQUASME: Address review comment 2026-09-02 14:32:55 -04:00
PatTheMav d90a26ecb5 Update codestyle document
Clarifies language around thread-safety of function-local static
variables. Since C++11 these variables are initialized in a thread-safe
way (no concurrent initialization), but this guarantee does not extend
to consecutive accesses to that object (which would still need to use
a thread-safe internal implementation if necessary).
2026-09-02 14:32:55 -04:00
PatTheMav 766a0faad2 Update contribution guidelines for PR reviews
Adds guidelines for pull request reviews particularly around requesting
reviews and how to handle review threads:

* Only project members are allowed to request reviews from specific
  users.
* Only reviewers are allowed to resolve review comment threads, only
  project members can unilaterally resolve them if reviewers are
  unresponsive.
* Reviewers should thus take care to check for updates and resolve
  their comments if they have been addressed.
* Pull requests authors should try to avoid force-pushes and rebasing
  their branches to a minimum to make it easier for reviewers to track
  changes during review.
2026-09-02 14:32:55 -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 7525aa1c5c docs: Add precision on editable string lists 2026-09-01 17:55:58 -04:00
Warchamp7 e8c4e7181c frontend: Use styling for source items appearance
The icon and text label for items in the source list was previously
enabled/disabled based on scene item visibility state. As of Qt 6.11
Qt no longer triggers context menus when right clicking a disabled
QLabel. This means right-clicking a hidden scene item would not
show a context menu.

Updates SourceTreeItem to use styling classes via idian helpers
instead of changing the enabled state of these labels.
2026-09-01 16:15:04 -04:00
Warchamp7 49aff0cc87 frontend: Add icon coloring for labels
Updates idian utils to also support QLabel widgets for icon coloring.
2026-09-01 16:15:04 -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 420f9e5490 frontend: Add replay buffer saving frontend event 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
tt2468 0fd12618e0 libobs: Only emit core signal handlers for public canvases
Amends behavior to match other notable object types like sources
2026-09-01 15:08:37 -04:00
tt2468 dbdcf562fb libobs: Change canvas signal param name to signal_canvas
Just a nitpick, as `signal_source` is a copy/paste from obs-source
2026-09-01 15:08:37 -04:00
prgmitchell 6785d7d3a9 libobs: Fix monitoring hotkey UI updates
Send the monitor signal first because initializing compat_data
overwrites the same buffer, causing the monitor value to always be
false.
2026-09-01 14:29:15 -04:00
tytan652 ff31948d80 libobs: Free monitor hotkeys translations 2026-09-01 13:54:49 -04:00
Exeldro 4315559a09 libobs: Fix deadlock on executing tasks 2026-09-01 13:27:28 -04:00
Ryan Foster 291298ed08 obs-nvenc: Enable NVENC on Arm64 2026-09-01 12:59:03 -04:00
tfo 36d134ee9a frontend: Fix dangling pointer in Audio Mixer logging
constData() returns a pointer into a temporary QByteArray that is
destroyed at the end of the statement, leaving a dangling pointer.
2026-09-01 12:30:11 -04:00
Ryan Foster 4118c16004 CI: Update deps to 2026-08-26 release
Notable Changes:
 * deps.macos: Fix deletion of MbedTLS CMake files
 * deps.ffmpeg: Fix deletion of MbedTLS static libs
 * deps.ffmpeg: Enable Windows on Arm for nv-codec-headers
2026-08-26 14:05:17 -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 dc1e75b9cb frontend: Improve spin box UX 2026-08-24 15:46:37 -04:00
Warchamp7 22e2b73716 libobs, frontend: Add monitoring hotkeys 2026-08-24 14:55:40 -04:00
Warchamp7 c976dfc0a9 docs: Mark monitoring_type as deprecated 2026-08-24 14:55:40 -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
Richard Stanway 6d0083dd61 libobs, docs: Document intended use of obs_module_unload
obs_module_unload was never properly documented, so some plugins use it
to free resources, some use it to save data, etc. While libobs tries to
ensure all objects are shut down and destroyed before calling unload, if
another plugin is holding a strong reference, or if a reference leak has
occurred, libobs may need to call back into a plugin-provided object's
destroy function even after obs_module_unload has returned. If the
plugin has freed memory or other resources needed for the callback then
this likely results in a crash.

Going forward, we should document that obs_module_unload is now intended
only for saving data and releasing references, and that calling libobs
after it returns is not allowed. For cases where resource cleanup is
actually needed (for example, an external out of process helper needs to
be shut down or a release call to a hardware driver), a new
obs_module_destroy callback is intended to be added in a future version.
2026-08-22 16:03:18 -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
f86e9c1d59 Merge pull request #11178 from RytoEX/really-update-libnsgif
libobs/graphics: Update libnsgif to 1.0.0
libobs/graphics: Hide GIF decoding data from exported header file
libobs/graphics: Break image file API to prevent ABI issues

Co-authored-by: Norihiro Kamae <norihiro@nagater.net>
Co-authored-by: Lain <lain@obsproject.com>
2026-08-21 16:09:31 -04:00
Lain c3046ec172 libobs/graphics: Break image file API to prevent ABI issues 2026-08-21 15:43:20 -04:00
Norihiro Kamae f5f55777bb libobs/graphics: Hide GIF decoding data from exported header file 2026-08-21 15:43:20 -04:00
Ryan Foster e0027ee4a3 libobs/graphics: Update libnsgif to 1.0.0 2026-08-21 15:43:19 -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