15257 Commits
Author SHA1 Message Date
Ryan Foster 9a8470355f libobs: Update version to 32.0.3 32.0.3 2025-12-05 16:38:14 -05:00
Warchamp7andRyan Foster 34a0a6a530 frontend: Remove crash handler earlier in shutdown 2025-12-04 15:05:23 -05:00
Dennis SädtlerandRyan Foster 606e1932b8 frontend: Fix recursion during canvas removal causing crashes 2025-12-03 15:10:44 -05:00
Warchamp7andRyan Foster bd2024eb81 cmake: Fix order of frontend targets
Updates targets to be consistent in their order putting uppercase before lowercase
2025-12-01 16:40:34 -05:00
Warchamp7andRyan Foster 14572498dc frontend: Adjust application shutdown logic
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.
2025-12-01 16:40:34 -05:00
pkvandRyan Foster 4ea2074eed libobs: Add devices_match to null monitor
This adds the devices_match function to null monitor to fix linking
issues on linux when pulse audio is disabled.
Fixes #12810

Signed-off-by: pkv <pkv@obsproject.com>
2025-11-26 14:16:53 -05:00
tytan652andRyan Foster b6524fef5a CI: Prepare more space for Flatpak jobs 2025-11-26 13:50:31 -05:00
shiina424andWarchamp7 d97e5ad820 frontend: Rename scrollbar in Acri theme 2025-11-12 12:33:49 -05:00
shiina424andWarchamp7 d6642384db frontend: Rename scrollbar in Classic theme 2025-11-12 12:33:49 -05:00
pkvandRyan Foster eb4161e72e libobs: Monitoring deduplication for default devices
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>
2025-11-11 13:55:34 -05:00
pkvandRyan Foster 2f2c66a597 libobs: Enable retrieval of macOS default audio output capture device
This allows retrieval of the default audio output capture device.

Signed-off-by: pkv <pkv@obsproject.com>
2025-11-11 13:55:34 -05:00
ExeldroandRyan Foster d84ff0eb6f libobs: Don't use removed sources 2025-11-07 17:07:14 -05:00
katahtonicandRyan Foster e448c0a963 rtmp-services: Add additional SharePlay.tv servers 2025-11-04 15:37:44 -05:00
Dan CoffeyandRyan Foster 335357a562 rtmp-services: Rename Dolby Millicast to Dolby OptiView Real-time
Additionally, update info links.
2025-11-04 15:27:03 -05:00
태스키_박태연andRyan Foster c835bc57f1 rtmp-services: Change the server URL of AfreecaTV to SOOP Korea
Request a code modification due to the change of AfreecaTV name.

Effective October 15 2024, AfreecaTV has been rebranded to SOOP Korea.
2025-11-04 15:18:37 -05:00
Fortune-SOOPandRyan Foster 32ba0c3897 rtmp-services: Add SOOP Global 2025-10-31 13:47:41 -04:00
pkvandRyan Foster 189ed7c386 libobs: Trigger monitoring deduplication when fader is at minimum
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>
2025-10-30 13:27:54 -04:00
pkvandRyan Foster af17e71dd1 libobs: Additional monitoring deduplication check with pulse
Pulse audio may append .monitor to device id; this commit adds this case
to the deduplication trigger.

Signed-off-by: pkv <pkv@obsproject.com>
2025-10-30 13:27:54 -04:00
pkvandRyan Foster 967e19b3fa libobs: Check tracks for monitoring deduplication
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>
2025-10-30 13:27:54 -04:00
Service CheckerandRyan Foster ea7078b493 rtmp-services: Remove defunct servers/services 2025-10-29 13:35:26 -04:00
Ryan Foster c025f210d3 libobs: Update version to 32.0.2 32.0.2 2025-10-23 08:42:31 -04:00
Sebastian BeckmannandRyan Foster 5984faefe4 mac-syphon: Use opaque effect on non-OpenGL renderer
"DrawOpaque" only exists in the default_rect effect, in the normal cases
it's just "Draw" in the opaque default shader.
2025-10-23 08:35:52 -04:00
Sebastian BeckmannandRyan Foster 2d5ba21204 libobs-opengl: Treat pixel format 0 in IOSurface as 32BGRA
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]: 53ad05db9f
2025-10-23 08:35:52 -04:00
PatTheMav 5ec3af3f6d obs-browser: Update version to 2.26.3 2025-10-17 14:31:38 +02:00
PatTheMav 13ba51a9ad frontend: Use Qt parent-child ownership in OAuth dialog
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.
2025-10-17 14:31:38 +02:00
Ryan Foster 0b12296320 libobs: Update version to 32.0.1 32.0.1 2025-09-26 16:36:36 -04:00
hongqingwanandRyan Foster 85fa987f67 frontend: Fix runtime check failure issue
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
2025-09-26 14:31:08 -04:00
pkvandRyan Foster 9696f54937 libobs: Log monitoring audio deduplication
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>
2025-09-26 12:12:08 -04:00
pkvandRyan Foster 40dd9f6c5e libobs: Fix for monitoring deduplication edge case
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>
2025-09-26 12:12:08 -04:00
PatTheMavandRyan Foster e35b16cba9 frontend: Enable multitrack RTMP option for custom RTMP services
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.
2025-09-26 01:48:39 -04:00
Ryan Foster a75fdd297b obs-browser: Update version to 2.26.2
obsproject/obs-browser@2bf7e77 - Restore source visibility code
obsproject/obs-browser@4056a31 - Update version to 2.26.2
2025-09-25 18:16:53 -04:00
Dennis SädtlerandRyan Foster 9c79ff71de CI: Pin patch generation workflows to windows-2022 2025-09-23 15:04:21 -04:00
nixflorpandRyan Foster 671fb57daf docs: Fix Rendering Graphics documentation 32.0.0 2025-09-22 15:30:08 -04:00
tytan652andRyan Foster a9002811ad CI: Update Flatpak action
https://github.com/flatpak/flatpak-github-actions/pull/231
32.0.0-rc1
2025-09-19 14:51:41 -04:00
PatTheMavandRyan Foster 02f596b4e8 ci: Limit use of Ccache option to enforce second preprocessor call
Feature was removed in Ccache 4.12, which is provided by Homebrew by
default since 2025-10-19.
2025-09-19 14:26:29 -04:00
PatTheMavandRyan Foster cf5ef3e414 cmake: Remove Ccache option to enforce second preprocessor call
Feature was removed in Ccache 4.12, which is provided by Homebrew by
default since 2025-10-19.
2025-09-19 14:26:29 -04:00
Richard StanwayandRyan Foster efca325c2c frontend, plugins: Set default bitrate to 6000 kbps
The default of 2500 kbps was chosen 10 years ago and times have changed.
Logs and forums posts show that many users of OBS for recording don't
change their bitrate and end up with a 2.5 mbps recording which looks
terrible.

Now that service bitrate enforcement exists, this will be automatically
capped to the maximum bitrate for streaming services, so the only time
this should result in a problem is if the user's upload speed is the
limiting factor, hopefully rarer these days with increasing internet
speeds.
2025-09-17 19:56:04 -04:00
Ryan Foster 1e281538a4 libobs: Raise out of memory exception manually when out of memory
The previous attempt to clarify an out of memory exception/crash
resulted in the compiler optimizing os_breakpoint() and os_oom() into
the same result, which meant that crash stacks in the wild were still
not specific enough to be helpful. Forcefully differentiating the
functions in Release configuration by having os_breakpoint() only call
__debugbreak() and having os_oom() call RaiseException() should give us
clearer crash stacks.

Amends 94a736f179.
2025-09-17 16:29:06 -04:00
Ryan Foster fd17570221 obs-websocket: Update version to 5.6.3
Changes:
- Updated translations

Bug Fixes:
- Fixed obs_frontend_get_global_config() deprecation warning
2025-09-17 15:56:59 -04:00
Ryan Foster 134289ca9e obs-browser: Update version to 2.26.1
Updated translations.
2025-09-17 15:56:59 -04:00
Joel BethkeandRyan Foster c4cccf7b7e frontend: Remove help text for shutdown check 2025-09-16 18:02:25 -04:00
Service CheckerandRyan Foster bbd97ebbcf rtmp-services: Remove defunct servers/services 2025-09-15 20:25:59 -04:00
Norihiro KamaeandRyan Foster 4d42b88960 frontend/api: Remove obs_frontend_get_global_config from internal code 2025-09-15 17:17:55 -04:00
PenwywernandRyan Foster e216a0eab0 frontend: Don't attempt multitrack without config url 2025-09-15 16:47:44 -04:00
Warchamp7andRyan Foster a9226f81d9 frontend: Fix UI deadlock
There is a Qt bug introduced around Qt 6.8.3 that causes the application
to hang when double clicking the sources list and the Windows setting
'Snap mouse to default button in dialog boxes' is enabled. Work around
this by using a timer if the setting is enabled.
2025-09-15 16:06:38 -04:00
Sebastian BeckmannandRyan Foster 35c02e7bc2 docs: Clarify some aspects of OBS_PROPERTY_BUTTON
The important point here is that "data" from the callback isn't defined
by libobs, but rather by the API consumer.
Additionally, it's not entirely clear from the documentation whether the
callback would still be called for button of type OBS_BUTTON_URL. There
should be no negatives to always calling it and the OBS Studio frontend
already behaves that way, so let's document that in libobs.
2025-09-12 16:41:48 -04:00
derrodandRyan Foster 2c65cb82ea frontend: Remove "BETA" from Hybrid MP4/MOV and make them the default 2025-09-12 15:45:57 -04:00
Sebastian BeckmannandRyan Foster b6555a4baa libobs: Treat os_dlopen failure as module load failure
Communicate that a module has failed to load via obs_module_failure_info
2025-09-12 15:16:06 -04:00
Sebastian BeckmannandRyan Foster a4b62d26be libobs: Differentiate between plugin load failures
It's important to differentiate whether a plugin fails to open (dl_open
returning NULL, being compiled for a newer libobs, etc) or whether it
opened correctly, but failed to initialize (returned NULL during
obs_module_load()).
With that, we can also create disabled modules for modules that fail to
open, which in the future should enable better user communication in the
UI (besides the module_load_failure_info).
2025-09-12 15:16:06 -04:00
Sebastian BeckmannandRyan Foster fd214a9c6e libobs: Rename MODULE_FILE_NOT_FOUND code to MODULE_FAILED_TO_OPEN
This code is returned if os_dlopen returns NULL. This can happen for
multiple reasons, not just because the file can't be found. Since [1]
other causes are getting more common, but this could also happen before.

[1]: 62429135ba
2025-09-12 15:16:06 -04:00