Commit Graph

15302 Commits

Author SHA1 Message Date
Dennis Sädtler
4d7776fc3b libobs: Restore original video_t for encoders when GPU scaling is used 2026-01-08 22:37:24 -05:00
cg2121
ee1539614a frontend: Add more source undo/redo actions
This adds undo/redo actions for scale filtering, blending mode,
blending method, deinterlacing mode and deinterlacing field order.
2026-01-08 21:37:02 -05:00
Warchamp7
6fa1a35ad4 frontend: Update transform dialog 2026-01-08 21:12:30 -05:00
Warchamp7
c01a9bea49 frontend: Create AlignmentSelector widget 2026-01-08 21:12:30 -05:00
cg2121
8c946e792a frontend: Make sure all scene item properties are copied
Scale filtering, show/hide transitions and private settings were
not copied when copying scene items.
2026-01-08 20:18:13 -05:00
Warchamp7
92a83e4c4c frontend: Sync Preview/Program size and positioning 2026-01-08 19:58:07 -05:00
Dennis Sädtler
de82ca9293 frontend: Refactor OBSBasic::Save to only save frontend canvas scenes/groups 2026-01-08 15:03:19 -05:00
Service Checker
f4aaa5f041 rtmp-services: Remove defunct servers/services 2026-01-06 11:36:55 -05:00
Warchamp7
13a132b486 frontend: Disable dock animations 2026-01-06 07:36:49 -05:00
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