OBS merge 32.1.1#734
Merged
Merged
Conversation
When an 'Audio Capture Source' device is also used for monitoring, the deduplication logic is applied: all monitored sources are silenced. But this should not silence the 'Audio Capture Source' if for some reason, it is being monitored (the user will get echoes, but hey, it's their choice). So we exclude the 'Audio Capture Source' from the silenced sources. Signed-off-by: pkv <pkv@obsproject.com>
The commit adds a log line to inform the user that deduplication is being applied. The info is displayed whenever deduplication first occurs. Signed-off-by: pkv <pkv@obsproject.com>
Fix an issue where the stack around the variable snapEnabled was corrupted. SPI_GETSNAPTODEFBUTTON should use BOOL, not bool. Reference: * https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfow
By explicitly setting the OAuth dialog as the parent of the CEF widget, it will automatically by cleaned up as soon as the dialog is closed itself. This also detaches the destruction of the widget from the browser cleanup code.
Per the Apple documentation, when 0 is returned from IOSurfaceGetPixelFormat, the IOSurface is invalid. Prior to [1] however, any invalid surfaces were (likely accidentally) treated as 32BGRA. And as it turns out, any IOSurface received from Syphon does not have the pixel format set, thus returning 0. Because the pixel format happens to always be 32BGRA, this was never caught. [1] then slightly refactored the code, fixing the bug not realizing it ever existed. This lead to Syphon no longer working. Treating 0 as 32BGRA appears to be the only way to fix this situation for now and restore prior behavior. Ideally in the future Syphon provides valid IOSurfaces. An upstream fix to Syphon-Framework is already submitted, however even if merged, servers would need to update to that fixed version before things work again. Therefore, this workaround is needed on the OBS side. However, the plan for now is for the Metal renderer to not get this relaxation. It never had it (so Syphon never worked there, making this not a regression) and it's marked as experimental. Hopefully, by the time it's stable and/or default, Syphon will be fixed and servers have been updated. [1]: 53ad05d
"DrawOpaque" only exists in the default_rect effect, in the normal cases it's just "Draw" in the opaque default shader.
Monitoring deduplication must be applied only to tracks for which the monitored source and the 'Audio Output Capture' source are both enabled. This adds such checks. Signed-off-by: pkv <pkv@obsproject.com>
Pulse audio may append .monitor to device id; this commit adds this case to the deduplication trigger. Signed-off-by: pkv <pkv@obsproject.com>
When the 'Audio Output Capture' source (usually Desktop Audio) has its fader at minimum, we should disable the deduplication logic. This is done by checking against the obs_source volume member. Signed-off-by: pkv <pkv@obsproject.com>
Request a code modification due to the change of AfreecaTV name. Effective October 15 2024, AfreecaTV has been rebranded to SOOP Korea.
Additionally, update info links.
This allows retrieval of the default audio output capture device. Signed-off-by: pkv <pkv@obsproject.com>
This adds comparison to default devices to the monitoring deduplication. When a user picks a default device, the device_id setting is 'default', which prevents any comparison. The comparison is done by leveraging the libobs/audio-monitoring devices_match function. For macOS, some special care is taken because the devices list differ for 'Desktop Audio' and 'monitoring' since coreaudio sdk has no pure audio capture; so 'default' in the two lists do not match in general. One then retrieves the device_id for the default desktop audio for macOS through get_desktop_default_id function. Signed-off-by: pkv <pkv@obsproject.com>
This adds the devices_match function to null monitor to fix linking issues on linux when pulse audio is disabled. Fixes obsproject#12810 Signed-off-by: pkv <pkv@obsproject.com>
Improves app shutdown in a few ways, including separating out different pieces of the OBSBasic close handler into their own functions. Removes the crash handler sentinel earlier when the main window is closed, preventing unclean shutdown warnings when a plugin causes issues. While not ideal, the dialog is not useful when we cannot specify which plugin caused the problem. Increases shutdown priority of the main application so that when OBS interrupts the session ending, CEF is not closed at the same time. This fixes a crash. Additional safeguards and event handling to try to ensure a smoother shutdown.
Updates targets to be consistent in their order putting uppercase before lowercase
When an Audio Output Capture source (AOC) like 'Desktop Audio' has monitoring_type == OBS_MONITORING_TYPE_MONITOR_ONLY, deduplication should not be triggered. this is an edge case which may not cover a reasonable use case, but for the sake of completeness, we deal with it. Signed-off-by: pkv <pkv@obsproject.com>
Fix a build issue with Clang 21.
# Conflicts: # libobs-d3d11/d3d11-shader.cpp
# Conflicts: # libobs/obs.c
aleksandr-voitenko
force-pushed
the
obs_merge_32.1.1
branch
from
June 3, 2026 17:48
5093c4b to
9b2e608
Compare
summeroff
approved these changes
Jun 11, 2026
6 tasks
* MacOS: fix render issue in obs32 branch * Fix issue in Obs-32 branch where create_iosurface uses kIOSurfaceIsGlobal: YES but then immediately called CFRelease causing IOSurfaceLookup in both write_iosurface and node-window-rendering to return NULL. * Fix pre-existing issue while we are in here where we'd have glClear errors being sent to the logs (we still rendered, but it polluted the logs and wasn't good practice). Add checks for 0x0 sized buffer etc. * Add optional DEBUG_WRITE_IOSURFACE code path which will dump the IOSurface contents which can be helpful determining if backend is properly rendering (because if we have pixels, then problem is upstream in NWR/Desktop). * Check for invalid width/height
* Guard DirectShow filter activation (#740) * libobs: append message/get_messages to obs_source_info (#735) * libobs: bound volmeter plane index against MAX_AV_PLANES (#737) * libobs: mix scene-item audio when item canvas is unset (#738) * libobs: Fix use-after-free of canvas view in audio thread (#736) * Add structured module load failures (#741) * Fix macOS Xcode 26.4 build (#748) * Fix macOS Xcode 26.4 build * Windows build fix for spout2 * Fix NDI 6 runtime loading on macOS (#746) * obs-browser: re-check validity under graphics lock in OnAcceleratedPaint Bump plugins/obs-browser to 5b30996 to pull in the OnAcceleratedPaint teardown-race guard (streamlabs/obs-browser#54), which fixes the libcef crash on BrowserManagerThread seen in dual-output sessions with browser sources. Branched from 31.1.2sl19. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * obs-browser: bump for GPU-process crash-limit flag Bump plugins/obs-browser 5b30996 -> 9d18953 to add --disable-gpu-process-crash-limit (streamlabs/obs-browser#54), so a transient GPU reset (TDR) no longer escalates to Chromium's fatal 'GPU process isn't usable' abort. Combines with the OnAcceleratedPaint teardown guard already in this bump. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * obs-browser: re-point submodule to merged #54 squash commit Bump plugins/obs-browser 9d18953 -> 4002dac, the squash-merge of streamlabs/obs-browser#54 on streamlabs (GPU-process crash-limit flag + OnAcceleratedPaint teardown guard). Replaces the pre-merge PR-branch pointer. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Fix NDI 6 runtime loading on macOS --------- Co-authored-by: Vladimir Sumarov <summeroff@gmail.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * update mediaconnector to streamlabs branch (#750) * reset texrender->rendered flag when canvas switches (#751) * reset texrender->rendered flag when canvas switches * call gs_texrender_reset() when rendering_mode changes * [MacOS] fix mediasoup-connector compile error on Clang 21 * free module after initialization fails * fix merge mistake - call module->load() once * set NULL to avoid heap alloc * update mediasoup-connector (Clang 21 fix) * update obs-browser * set obs-ndi submodule --------- Co-authored-by: Aleksandr Voitenko <aleksandr.voitenko1986@gmail.com> Co-authored-by: Vladimir <summeroff@gmail.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Recent Homebrew versions require 3rd party taps to be explicitly trusted before they can be used to install formulas. The "obsproject/tools" tap is used to provide pinned formulas of some code formatters used by CI and thus needs to be trusted to enable installation of these formulas. (cherry picked from commit b9a5293)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merged the upstream OBS 32.1.1 and applies a bunch of post-merge fixes.