Skip to content

OBS merge 32.1.1#734

Open
aleksandr-voitenko wants to merge 436 commits into
streamlabsfrom
obs_merge_32.1.1
Open

OBS merge 32.1.1#734
aleksandr-voitenko wants to merge 436 commits into
streamlabsfrom
obs_merge_32.1.1

Conversation

@aleksandr-voitenko

@aleksandr-voitenko aleksandr-voitenko commented Jun 2, 2026

Copy link
Copy Markdown
Collaborator

Merged the upstream OBS 32.1.1 and applies a bunch of post-merge fixes.

tytan652 and others added 30 commits September 19, 2025 14:51
This removes the need to provide an undocumented launch argument to
enable custom RTMP service configurations to use multitrack encoding
and also provide a custom configuration.
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.
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.
Warchamp7 and others added 27 commits April 1, 2026 10:45
This was partially addressed in obsproject#13118 but this check was missed
Pinned sources were appearing before Global, which was not intended
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.