Commit Graph

15176 Commits

Author SHA1 Message Date
Service Checker
1eb6bdee59 rtmp-services: Remove defunct servers/services 2025-09-03 20:47:36 -04:00
pkv
e33eab7f2a nv-filters: Guard function introduced in sdk >= 1.6.0
I forgot to guard NvAFX_UninitializeLogger() called in Destroy function.

Signed-off-by: pkv <pkv@obsproject.com>
2025-09-03 16:43:18 -04:00
Sebastian Beckmann
62429135ba libobs: Use RTLD_NOW to load modules
RTLD_LAZY means that symbols will only be resolved when first used,
while RTLD_NOW tries to resolve them immediately. This means that if
there are missing symbols (e.g, because a function got removed from
libobs), dlopen with RTLD_LAZY will happily open that module but we get
a runtime crash when the module tries to use that symbol, while with
RTLD_NOW we instead get a (nicer) error on dlopen.
2025-09-03 16:01:57 -04:00
Sebastian Beckmann
ac913b3854 libobs: Fix comment typo
verison -> version
As a drive-by, also changes null to NULL.
2025-09-03 15:34:26 -04:00
Sebastian Beckmann
affe09d250 frontend: Fix plugin manager module type loading 2025-09-03 15:34:26 -04:00
Sebastian Beckmann
4cd1444c9a libobs: Set module for outputs 2025-09-03 15:34:26 -04:00
Sebastian Beckmann
5841db6efc libobs: Remove unused obs_*_info module pointer
These were likely originally used for the obs_*_get_module functions,
but no longer are. Additionally, they weren't even implemented for
anything but obs_source_info. Let's remove this before it hits stable.
2025-09-03 15:34:26 -04:00
Exeldro
fc21c0f2f6 libobs: Fix scene and group load state 2025-09-03 14:14:49 -04:00
PatTheMav
8e79dcfc8c plugins: Ensure that graphics device type checks use graphics context 2025-09-03 13:34:51 -04:00
PatTheMav
e8d4224992 frontend: Change crash sentinel location to separate subdirectory
Putting the crash sentinel in the main "obs-studio" directory carries
the risk of unwanted deletion of files in the same directory, which
usually contains user configuration files like "user.ini" and
"global.ini".

Even though the code will ignore any file that does not start with the
crash sentinel prefix string, the code itself would allow changing the
prefix to "global.ini" and thus inadvertently delete the global
configuration file as well.

To further reduce the risk, this change will put the sentinels in a
separate sub-directory that should only ever contain sentinel files,
all of which can possibly deleted without any data loss for the user.
2025-09-03 13:01:44 -04:00
Sebastian Beckmann
ef93ef6950 obs-ffmpeg: Null-check url query parameters
Fixes a crash if someone streams to a URL that does not have any query
parameters.

Amends 55c4ca9e63.
2025-09-02 17:13:46 -04:00
FiniteSingularity
a5fa416628 frontend: Fix plugin manager config loading crash
Current code isn't catching a parse error exception if an invalid config
file is loaded by the plugin manager. This change wraps the plugin
manager config json parse call with a try/catch, and handles invalid
config files by creating a new config file, and logs an error that the
existing config file is invalid.
2025-09-02 15:54:47 -04:00
tytan652
747f67e150 frontend: Do not enable crash log upload without log file
Co-authored-by: PatTheMav <PatTheMav@users.noreply.github.com>
2025-09-02 15:28:33 -04:00
Sebastian Beckmann
527e2f291f frontend: Remove unneeded argument from log upload privacy notice 2025-09-02 14:57:41 -04:00
Ryan Foster
1239ef5f83 libobs: Update version to 32.0.0 32.0.0-beta1 2025-08-28 16:58:24 -04:00
Brahmajit Das
69162b12ec obs-ffmpeg: Fix build with FFMPEG 8 and above
With commit https://github.com/FFmpeg/FFmpeg/commit/822432769868 FFMPEG
has removed almost all of the FF_API_FF_PROFILE_LEVEL related defines.
They were deprecated since 2023-09-06. This results in build failures.

This is first found on Gentoo with FFMPEG pre-release version.

Downstream-bug: https://bugs.gentoo.org/961699
Signed-off-by: Brahmajit Das <listout@listout.xyz>
2025-08-28 16:31:37 -04:00
Ryan Foster
672328f120 CI: Update deps to 2025-08-23 release
Notable Changes:
 * deps.qt: Backport upstream patch removing AGL linkage from macOS

There are no dependency version updates in this deps release. The Qt
change is to ensure that OBS Studio will build with Xcode 26.
2025-08-28 16:05:42 -04:00
PatTheMav
b146ca3dcd cmake: Use precise 4-component SDK version for Windows SDK
CMake internally manages the Windows SDK version as a 4-component
version string. If only provided with 3 components, CMake will
implicitly add a "0" as the fourth component and the internal
CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION variable will represent that
4-component string.

As this variable is used to set up sub-projects for other platforms,
re-creating them will fail if the original version is only provided
in its 3-component form.
2025-08-28 15:38:55 -04:00
PatTheMav
7a715733fc CI: Remove explicit QT_HOST_PATH definition from Windows build script 2025-08-28 15:38:55 -04:00
PatTheMav
2413ad16d2 cmake: Add detection of cross compiled Qt dependencies for Windows 2025-08-28 15:38:55 -04:00
Norihiro Kamae
e647729592 frontend/api: Fix deprecation warning message for global config 2025-08-28 15:11:59 -04:00
FiniteSingularity
23b67268e7 frontend: Provide UI for phase 1 of plugin manager
For phase 1 of the plugin manager, the ability to toggle off/on plugins
to be loaded at launch is provided.

This commit adds a new Plugin Manager dialog which can be accessed from
the Tools menu, which shows a list of all installed 3rd party plugins
with a checkbox to toggle them off or on.  If a change is made, the user
is prompted to restart OBS. To allow this, the plugin manager uses a
json based config file stored in the OBS config directory. Additionally
for sources in the source tree, a sample UI has been provided that
indicates any sources whose parent module is disabled, by turning its
title red.
2025-08-28 14:29:10 -04:00
FiniteSingularity
14004cec96 libobs: Add core logic for phase 1 plugin manager
Phase 1 of the plugin manager provides the the ability to toggle off/on
plugins loading when OBS starts. Additionally, it implements loading of
a manifest file for plugins that allows plugin authors to provide more
detailed information about the plugin including authors, support site,
name, description.

In order to accomplish this, this change updates libobs to provide
more detailed tracking of modules- specifically tracking both enabled
and disabled modules, alone with a module load state which indicates
why a module is not loaded. Additionally, changes were made to establish
a links between a module and any features (inputs, outputs, encoders,
and services) it provides (and thus the ability to determine why a
feature might not be enabled). Along with these changes to modules,
this commit also provides an indicator and lookup for core modules which
can not be disabled by the plugin manager.

Finally, this change provides functions to properly load and retrieve
a standardized plugin metadata file.
2025-08-28 14:29:10 -04:00
derrod
3f393faa3c obs-outputs: Reset start time and remove unnecessary timestamp adjustments 2025-08-25 20:04:08 -04:00
Ryan Foster
2cb17dbc04 obs-browser: Update version to 2.26.0
obsproject/obs-browser@e5f0dbf - Add check for Metal in render function
obsproject/obs-browser@0e38358 - Fix stack smash crashes on Linux
obsproject/obs-browser@a9848f6 - Remove support for CEF 3770 and older
obsproject/obs-browser@0cc2b21 - Remove support for CEF versions older than 4103
obsproject/obs-browser@e1f1cb7 - Remove support for CEF versions older than 4183
obsproject/obs-browser@d1368fb - Remove support for CEF versions older than 4430
obsproject/obs-browser@93e3d1e - Remove ENABLE_WASHIDDEN
obsproject/obs-browser@963e2eb - Remove support for CEF versions older than 4472
obsproject/obs-browser@78008fc - Remove support for CEF versions older than 4638
obsproject/obs-browser@8fe72cc - Remove support for CEF versions as old as 4638
obsproject/obs-browser@0dde9f9 - Use v2 of obs_properties_add_button
obsproject/obs-browser@53d9a09 - Update clang-format to 19.1.1
obsproject/obs-browser@5306c61 - build-aux: Update run-format script to current obs-studio state
obsproject/obs-browser@c3b1e81 - Update version to 2.26.0
2025-08-25 19:38:30 -04:00
Sebastian Beckmann
e2712f097e libobs: Deprecate obs_data_autoselect_*
The autoselect functionality was meant to enable user feedback for when
data was selected, but something else actually used, for example in case
the value "Auto" was chosen, or an incompatible one.

However, it has a few problems:
1. It was not really used, the only places in OBS were the legacy Video
Capture Device on macOS and the Video Capture Device on Windows.
2. It was never even fully implemented in the UI. In fact, the
properties view *only* supports it for obs_property_list, despite the
API theoretically allowing any data/property type.
3. The core obs_data seems like the wrong place for this kind of
interaction between plugins and UI. obs_data should carry data from one
place to another, some built-in feedback mechanism for the other
direction doesn't make too much sense. If the functionality is desired,
I think this should be rearchitectured as some place of explicit data
transfer.

Let's mark it as deprecated for future removal.
2025-08-25 19:13:25 -04:00
Sebastian Beckmann
c00be01bd0 shared/properties-view: Tolerate deprecated autoselect functions
The usages of this function are correct and intentional here. They are
meant to stay to keep consumers of the autoselect APIs working until
those APIs are removed. As such, PRAGMA_DISABLE_DEPRECATION disables the
deprecations. There is no reason to remove these calls before the APIs
themselves are removed.
2025-08-25 19:13:25 -04:00
Sebastian Beckmann
b9c25ad94c win-dshow: Temporarily tolerate deprecated autoselect functions
These usages should be removed! On Clang or GCC this would throw a
warning now, but unfortunately on MSVC (the only compiler this plugin is
built with) PRAGMA_WARN_DEPRECATION disables the warning completely.

The only reason the usages here are tolerated is that removing them is
not completely trivial and I cannot test it.
2025-08-25 19:13:25 -04:00
Sebastian Beckmann
a92464d421 mac-avcapture/legacy: Remove autoselect feedback 2025-08-25 19:13:25 -04:00
Sebastian Beckmann
609cf6168e libobs/util: Add PRAGMA_DISABLE_DEPRECATION macro
On MSVC, PRAGMA_WARN_DEPRECATION already does that, but on other
compilers it still throws a warning. PRAGMA_DISABLE_DEPRECATION is for
(rare) situations where it's intentional and correct that the deprecated
API is still used, such as to make sure some other API still works
internally.
2025-08-25 19:13:25 -04:00
Ryan Foster
e187f9acee Revert "UI: Work around Qt dock restore crash"
This reverts commit 3dcf68f8ed.

The bug that this was meant to work around was most likely QTBUG-102718,
which was fixed in Qt 6.2.5, 6.3.1, and 6.4.0. The minimum version of Qt
we currently support is Qt 6.4.2 because it is what is available on
Ubuntu 24.04. Thus, we should not need this workaround now.

https://bugreports.qt.io/browse/QTBUG-102718
2025-08-25 18:50:16 -04:00
PatTheMav
c8ec906844 frontend: Change overflow texture rendering to be sRGB-aware
Current code assumes that the overflow texture and the render target
always share the same color format including transfer function.

This assumption is incorrect however as OBS might use a 16-bit floating
point texture with a linear gamma transfer function when a high-bitrate
format is selected. On top of that OBS Studio wants rendering code to
ensure that linear color blending is used throughout the application.

The DrawOverflow function had not been updated to reflect this. This
change brings it in line with other functions involved in preview
rendering, which enable automatic sRGB conversion for the framebuffer
and the texture used in the fragment shader.
2025-08-24 15:29:33 -04:00
Sebastian Beckmann
7685a0c78b frontend: Set cursor width for OBSHotkeyEdit to 0
This hides the cursor from the OBSHotkeyEdit spin boxes even when they
are in focus.
Uses a shared style owned by OBSApp.
2025-08-23 13:01:02 -04:00
cg2121
4b403d2a3e frontend: Use signal to update log viewer
Instead of calling the log viewer directly, use a signal instead.
2025-08-23 12:13:39 -04:00
Service Checker
31574b416f rtmp-services: Remove defunct servers/services 2025-08-22 23:33:47 -04:00
Sean DuBois
e4322bac68 obs-webrtc: Add version IFDEFs for 0.23.0
SenderReports are automatically sent. Disabling them via IFDEF so they
don't fail the build.
2025-08-22 21:55:56 -04:00
Sebastian Beckmann
cdf4f672dd libobs: Remove unused code
I forgot to remove this when removing the only functions that used it.

Amends 163493d1e1.
Amends d283181c83.
2025-08-22 21:11:53 -04:00
tytan652
ec447243c5 libobs: Add Flatpak commit logging
This can allow to determine the origin of a Flatpak build.
2025-08-22 20:21:36 -04:00
pkv
9bb940acd8 libobs: Fix audio duplication for monitored source
This fixes the following issue:
- when an Audio Capture source (like 'Desktop Audio',
'wasapi_output_capture' or 'pulse_output_capture') and monitoring use
the same device, one gets duplicated audio for any monitored source,
since their audio is added through both the current scene and the output
capture.
This creates a shift in audio level (about 3 dBFS for white noise, and
oftentimes for music; up to 6 dBFS for very low frequency sine waves).
We solve the bug by:
- detecting when an Audio Capture source and monitoring share the same
device;
- silencing monitored sources whenever the Audio Capture source is
unmuted.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-22 19:48:59 -04:00
pkv
55c4ca9e63 obs-ffmpeg: Fix crash when using a pkt_size != 1316
This fixes a crash when using a pkt_size which is not the UDP default of
1316 Bytes ( 7 * 188 ).

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-22 19:07:21 -04:00
pkv
67b0b44fec obs-ffmpeg: Log SRT listener waiting for a connection
Signed-off-by: pkv <pkv@obsproject.com>
2025-08-22 19:07:21 -04:00
pkv
1407398e7f obs-ffmpeg: Change OBS-OUTPUT-XXX returns for RIST protocol
This updates a few OBS-OUTPUT-XXX to better reflect the output failures
for the RIST protocol.
Signed-off-by: pkv <pkv@obsproject.com>
2025-08-22 19:07:21 -04:00
pkv
467967eab6 obs-ffmpeg: Fix a crash with invalid URL
This fixes a crash when an invalid URL is used.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-22 19:07:21 -04:00
pkv
651544a487 obs-ffmpeg: Reimplement reconnection logic in mpegts muxer
This reimplements the reconnect logic in mpegts muxer.
Taking cues from the WHIP output, a start and stop thread is used,
controlled by a mutex, ensuring the start and stop pipelines can never
be run concurrently.
Fixes bugs #11885, #11721, #11620, #11062, #12133.
For better readibility, this commits also breaks the big set_config
function into smaller units.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-22 19:07:21 -04:00
pkv
8d9bd44179 obs-ffmpeg: Fix reconnection for SRT protocol
This is the first part of a fix for reconnection issues with SRT
protocol.
This part implements the logic on the side of the protocol.
The fixes are as follows:
- a cleanup of return values of the various functions used. The main
libsrt_open function returns OBS_OUTPUT_XXX enum members. But the other
functions return now only AVERROR(xxx).
- an explicit check of the socket state before returning
OBS_OUTPUT_SUCCESS. This fixes an issue due to relying on socket
non-blocking mode; in caller mode, the srt_connect function will return
a success even before a connection has succeeded since it relies on
notifications by srt_epoll_wait. This would prompt obs UI to display a
successful reconnection in spite of a failure.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-22 19:07:21 -04:00
pkv
3ae9d6a106 obs-ffmpeg: Cleanup for mpegts muxer
The do_log function defined for the muxer expects that the struct is
named stream rather than output. So rename output to stream.
This also avoids confusion with stream->output which is an obs_output_t
pointer.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-22 19:07:21 -04:00
derrod
2eabfdad55 obs-outputs: Allow enabling BPM for Hybrid MP4 output 2025-08-22 17:35:16 -04:00
Norihiro Kamae
505b76e8a7 libobs: Reject plugins compiled with newer libobs
Check obs_module_ver and reject if the plugin is built with a newer
libobs major/minor version.
2025-08-22 17:10:09 -04:00
tytan652
ffcc3acd9d frontend: Replace transition duration spinbox direct access 2025-08-22 16:48:23 -04:00
tytan652
d22ddfd395 frontend: Reduce reliance on transition indexes 2025-08-22 16:48:23 -04:00