Commit Graph
15164 Commits
Author SHA1 Message Date
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 BeckmannandRyan Foster 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 DasandRyan Foster 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
PatTheMavandRyan Foster 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
PatTheMavandRyan Foster 7a715733fc CI: Remove explicit QT_HOST_PATH definition from Windows build script 2025-08-28 15:38:55 -04:00
PatTheMavandRyan Foster 2413ad16d2 cmake: Add detection of cross compiled Qt dependencies for Windows 2025-08-28 15:38:55 -04:00
Norihiro KamaeandRyan Foster e647729592 frontend/api: Fix deprecation warning message for global config 2025-08-28 15:11:59 -04:00
FiniteSingularityandRyan Foster 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
FiniteSingularityandRyan Foster 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
derrodandRyan Foster 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 BeckmannandRyan Foster 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 BeckmannandRyan Foster 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 BeckmannandRyan Foster 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 BeckmannandRyan Foster a92464d421 mac-avcapture/legacy: Remove autoselect feedback 2025-08-25 19:13:25 -04:00
Sebastian BeckmannandRyan Foster 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
PatTheMavandRyan Foster 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 BeckmannandRyan Foster 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
cg2121andRyan Foster 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 CheckerandRyan Foster 31574b416f rtmp-services: Remove defunct servers/services 2025-08-22 23:33:47 -04:00
Sean DuBoisandRyan Foster 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 BeckmannandRyan Foster 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
tytan652andRyan Foster 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
pkvandRyan Foster 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
pkvandRyan Foster 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
pkvandRyan Foster 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
pkvandRyan Foster 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
pkvandRyan Foster 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
pkvandRyan Foster 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
pkvandRyan Foster 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
pkvandRyan Foster 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
derrodandRyan Foster 2eabfdad55 obs-outputs: Allow enabling BPM for Hybrid MP4 output 2025-08-22 17:35:16 -04:00
Norihiro KamaeandRyan Foster 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
tytan652andRyan Foster ffcc3acd9d frontend: Replace transition duration spinbox direct access 2025-08-22 16:48:23 -04:00
tytan652andRyan Foster d22ddfd395 frontend: Reduce reliance on transition indexes 2025-08-22 16:48:23 -04:00
tytan652andRyan Foster 2962770813 frontend: Replace transitions combobox direct access 2025-08-22 16:48:23 -04:00
tytan652andRyan Foster 11562b6696 frontend: Remove some shadowing 2025-08-22 16:48:23 -04:00
Sebastian BeckmannandRyan Foster d097ff24ad shared/idian: Rename OBSIdianUtils 2025-08-22 16:21:52 -04:00
Sebastian BeckmannandRyan Foster 872ea5fb91 shared/idian: Rename component classes 2025-08-22 16:21:52 -04:00
Sebastian BeckmannandRyan Foster edb2c9ca48 shared/idian: Rename widget classes 2025-08-22 16:21:52 -04:00
Sebastian BeckmannandRyan Foster 5cda3d4e8e shared/idian: Rename all-in-one include to Idian.hpp 2025-08-22 16:21:52 -04:00
Sebastian BeckmannandRyan Foster 9e0c3219ff frontend: Move idian widgets to shared/qt 2025-08-22 16:21:52 -04:00
Sebastian BeckmannandRyan Foster de9fcd6b42 frontend: Unify naming of Idian Playground
It's called Idian Playground in some places and Widget Playground in
others. Idian Playground is more precise so let's use that.
2025-08-22 16:21:52 -04:00
Sebastian BeckmannandRyan Foster c527f9e34c cmake: Don't add Idian playground when feature is disabled 2025-08-22 16:21:52 -04:00
e8f6143769 frontend: Add new Idian widgets
Co-Authored-By: derrod <rodney@rodney.io>
2025-08-22 16:21:52 -04:00
pkvandRyan Foster 50cdabbb5f libobs: Fix audio duplication
This fixes the following bug:
- a source might be copied into the same scene or through a nested scene.
The audio level will then increase by +6 dBFS.
An earlier fix [1] dealt with this bug at the scene audio rendering
level, which leaves some edge cases since the fix is not located
directly in the core audio callback.
The current fix consists in:
- tagging individual sources which appear several times in the audio
tree at each tick;
- promote them to root_nodes sources;
- bypass their mixing in scenes and transitions.
Due to being mixed as root_nodes, the audio of duplicated sources
appears only once in the final audio mix.

[1] https://github.com/obsproject/obs-studio/pull/10537

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-22 16:01:13 -04:00
pkvandRyan Foster f027f62f90 Revert libobs: Mix audio of each source in a scene only once
This reverts commit: 8a38e33 [1].
This also reverts commit: 72924ac [2].
(in favour of a fix in core audio pipeline, which allows to address
edge cases).

[1] libobs: Mix audio of each source in a scene only once
https://github.com/obsproject/obs-studio/commit/8a38e3375b63692b01e5088d37f531f36a5d39f9
[2] libobs: Deduplicate audio for nested scenes/groups if not
transitioning
https://github.com/obsproject/obs-studio/commit/72924ac1f3c4c55de038fe1f03a0e197a155d5e7

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-22 16:01:13 -04:00