Commit Graph

15293 Commits

Author SHA1 Message Date
Exeldro dc7c8cfb48 frontend: Move transition preview button to button box 2026-01-06 07:02:52 -05:00
Warchamp7 407944a27c frontend: Rearrange default dock positions 2025-12-19 14:43:44 -05:00
Warchamp7 6a64053256 libobs: Remove "using namespace std" from headers 2025-12-18 18:16:31 -05:00
Sebastian Beckmann f6a56227eb frontend: Remove implicit capture of "this" using "="
Implicitly capturing "this" with the capture default "=" is deprecated
with C++20. We fix this by either explicitly passing this, or by copying
the required members manually.
While this exposes some rather expensive copies like the QList
selectedItems in OBSBasic_Preview, it doesn't introduce them ("=" copies
implicitly).
2025-12-18 17:30:42 -05:00
Sebastian Beckmann 25f4fc9e70 frontend: Replace "=" capture with "this"
Implicit capture of 'this' with a capture default of '=' is deprecated
in C++20.

# Conflicts:
#	frontend/settings/OBSBasicSettings.cpp
#	frontend/settings/OBSHotkeyEdit.cpp
#	frontend/settings/OBSHotkeyWidget.cpp
2025-12-18 17:30:42 -05:00
Sebastian Beckmann 4ad3df3af8 coreaudio-encoder: Use canonical format enum instead of bitwise or
The enum members being getting the bitwise or here are from different
enums, and bitwise operations on members from different enums are
deprecated in C++20. kAudioFormatFlagsNativeFloatPacked is the
equivalent value (see its defintion), but removes the manual bitwise or.
2025-12-18 17:30:42 -05:00
Sebastian Beckmann f4bb61f472 cmake: Disable char8_t on macOS with C++20
This is already disabled for other platforms, but the clang options
aren't applied on macOS.

Amends 8d33da1fab.
2025-12-18 17:30:42 -05:00
Sebastian Beckmann 2c7afd36ef mac-avcapture/legacy: Move comparison operator up
std::find is used in enumerate_frame_rates already, so the equality
operator is needed there. Until C++17 this is defined implicitly, but
since C++20 it's needed explicitly.
2025-12-18 17:30:42 -05:00
Warchamp7 e7e32689a8 frontend: Use palette for Light theme audio mixer 2025-12-18 15:26:37 -05:00
Warchamp7 c8e74c9dec frontend: Round display size for projectors 2025-12-17 21:43:44 -05:00
tytan652 ef9ec6fcc3 build-aux,CI: Replace Flatpak KDE SDK with Freedesktop SDK
The Qt components are from the same repo as other dependencies.

The KDE Platform was never a good fit for OBS Studio for multiple
reasons:
- Life cycle too short and misaligned with OBS Studio causing users to
  get EOL notification too often.
- Third-party Qt plugins were allowed which could change Qt's behavior.
- KDE exclusives sandboxed holes were inherited.
2025-12-17 21:15:17 -05:00
tytan652 081b684959 build-aux: Replace Flatpak modules with pre-compiled dependencies
To reduce compile time and prepare for aarch64 support, dependencies
compilation except CEF is moved to a BuildStream project junctionned
with Freedesktop SDK.

The BuildStream project is configured to build dependencies in a
Flatpak-like environment.
2025-12-17 21:15:17 -05:00
Tarulia 1290898c74 plugins: Set missed default bitrates to 6000 kbps
efca325 already increased the default bitrate for various encoders.
However, some were missed and this commit fills the gap:

* Mac-VT
* OpenH264
* Texture AMF
* VAAPI
2025-12-17 21:12:59 -05:00
Warchamp7 cea2d6938a frontend: Remove Source from source names 2025-12-17 20:34:05 -05:00
Sebastian Beckmann f80d35fa4a frontend: Remove "using namespace std" from headers
This is very dangerous as it propagates down everywhere the headers are
included in.
2025-12-17 18:51:35 -05:00
Dennis Sädtler caf1de1595 shared/bpm: Fix NAL type for HEVC user data SEIs 2025-12-17 18:02:19 -05:00
Dennis Sädtler 659163e0e8 libobs: Fix NAL type for HEVC caption SEIs 2025-12-17 18:02:19 -05:00
Sebastian Beckmann a9634db561 frontend/cmake: Enable Qt strict mode
Qt strict mode disables APIs deemed "'suboptimal' or 'dangerous'" [1]
and "clearly undesirable" [2] by Qt that will be removed in the long
term.
Usages of the APIs in OBS have been removed in the previous commits, and
by setting this flag we keep ourselves from using them again.
The versioning works in a way where e.g. a new addition to this in 6.9
would only be disabled if at least 0x060900 is set. By setting 0xFF0000,
we're effectively disabling any APIs that are deemed to be bad in any
future Qt version (up to 255).
While this could lead to OBS not being buildable against bleeding edge
Qt, it also means that it will be noticed early. Should the disabled API
turn out to be too complex to remove, the value can be downgraded to the
last working one then.

[1] qt/qtbase@3a6c8e02b6
[2] qt/qtbase@f9163ae7a8
2025-12-17 16:35:45 -05:00
gxalpha 5129612b6c frontend,shared: Replace and disable contextless connect calls
# Conflicts:
#	frontend/OBSApp.cpp
2025-12-17 16:35:45 -05:00
gxalpha 876806bbf5 frontend: Replace and disable QString to QUrl casts 2025-12-17 16:35:45 -05:00
gxalpha 9b1d1493ab frontend,shared: Replace and disable QByteArray to char * casts 2025-12-17 16:35:45 -05:00
Sebastian Beckmann 63d7f7fb55 frontend: Replace #defines in YoutubeApiWrappers 2025-12-17 16:35:45 -05:00
Sebastian Beckmann f9aec57091 frontend: Avoid unnecessary QString<->const char * conversions
SetComboByName, SetComboByValue and SetInvalidValue all pass their
parameters to Qt functions which only take QStrings. As a consequence,
we have cases we'd convert a QString to a const char* to call these
functions, only for the functions to implicitly convert them back into
QStrings. We can avoid this by passing QStrings directly. In cases where
we did actually pass const chars, the (implicit) conversion now just
takes place earlier.
2025-12-17 16:35:45 -05:00
Warchamp7 a4642cc532 frontend: Increase media playback slider fidelity 2025-12-17 15:56:27 -05:00
tytan652 c142571d5c frontend: Cleanup Qt GuiPrivate linkage
Remove unneeded linkages and guard needed ones for Qt versions earlier
than 6.9.0.
2025-12-17 15:04:49 -05:00
Sean DuBois cd4d624ec3 obs-webrtc: Add Simulcast Support 2025-12-17 13:41:59 -05:00
Ryan Foster dcdbd2e904 libobs: Update version to 32.0.4 32.0.4 2025-12-12 16:33:05 -05:00
Warchamp7 bf0ec56df3 docs: Add API disclaimer to canvases 2025-12-12 16:03:04 -05:00
pkv ad4315b15a libobs: Fix default macOS monitoring device
The default device retrieved was the one used for system sounds.
This fixes it by retrieving the one used to output audio.

It seems the bug has been there since the initial writing of this bit of
code (so 2017).
2025-12-12 15:21:42 -05:00
pkv f86861cc8d linux-pulseaudio: Add monitoring deduplication calls
For 'pulse_output_capture', calls are added when devices are either
changed, started or removed.

The calls trigger a check against the monitoring device.

Signed-off-by: pkv <pkv@obsproject.com>
2025-12-12 15:21:42 -05:00
pkv d4ef5ef2d7 mac-capture: Add monitoring deduplication calls
For 'coreaudio_output_capture', calls are added when devices are either
changed, started or removed.

The calls trigger a check against the monitoring device.

Signed-off-by: pkv <pkv@obsproject.com>
2025-12-12 15:21:42 -05:00
pkv d9b5addf72 win-wasapi: Add monitoring deduplication calls
For 'wasapi output capture', calls are added when devices are either
changed, started or removed.

The calls trigger checks against the monitoring device.

Signed-off-by: pkv <pkv@obsproject.com>
2025-12-12 15:21:42 -05:00
pkv 91917f8120 libobs: Improve monitoring deduplication
The monitoring deduplication was previously checking at each audio tick
the whole audio tree for Audio Output Capture (AOC) devices used for
monitoring. The profiling did not show any big impact on the audio
callback. But due to reports of a significant slowdown for scenes with
numerous audio sources, we have moved the check on AOC from the audio
thread to the UI thread.

So we implemented obs_source_audio_output_capture_device_changed which
is triggered whenever:
- a monitoring device is changed in Settings > Audio,
- an Audio Output Capture source changes its device or on startup.

This function compares the AOC device with the monitoring device in UI
thread. If they are identical, a signal is sent to the audio thread to
add an audio task updating the AOC duplicating source pointer at the end
of an audio tick.

This triggers monitoring deduplication if the ptr is not NULL.
The calls in the AOC are implemented in next commits.
The rest of the logic in obs-audio.c is the same except on one count,
which is that we check against the muted state of the AOC rather than
its user_muted; with the new logic, muted works better.

Signed-off-by: pkv <pkv@obsproject.com>
2025-12-12 15:21:42 -05:00
Warchamp7 ff9b4eb099 frontend: Fix transition duration not loading correctly 2025-12-12 13:44:47 -05:00
Warchamp7 e3df8722bd frontend: Switch off deleted scenes immediately 2025-12-12 13:08:40 -05:00
Exeldro ea9e4ca06e libobs: Do not wait for audio of removed sources 2025-12-10 13:24:22 -05:00
Ryan Foster 9a8470355f libobs: Update version to 32.0.3 32.0.3 2025-12-05 16:38:14 -05:00
Warchamp7 34a0a6a530 frontend: Remove crash handler earlier in shutdown 2025-12-04 15:05:23 -05:00
Dennis Sädtler 606e1932b8 frontend: Fix recursion during canvas removal causing crashes 2025-12-03 15:10:44 -05:00
Warchamp7 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
Warchamp7 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
pkv 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
tytan652 b6524fef5a CI: Prepare more space for Flatpak jobs 2025-11-26 13:50:31 -05:00
shiina424 d97e5ad820 frontend: Rename scrollbar in Acri theme 2025-11-12 12:33:49 -05:00
shiina424 d6642384db frontend: Rename scrollbar in Classic theme 2025-11-12 12:33:49 -05:00
pkv 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
pkv 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
Exeldro d84ff0eb6f libobs: Don't use removed sources 2025-11-07 17:07:14 -05:00
katahtonic e448c0a963 rtmp-services: Add additional SharePlay.tv servers 2025-11-04 15:37:44 -05:00
Dan Coffey 335357a562 rtmp-services: Rename Dolby Millicast to Dolby OptiView Real-time
Additionally, update info links.
2025-11-04 15:27:03 -05:00