Commit Graph

15287 Commits

Author SHA1 Message Date
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
Some checks are pending
Push / Format 🔍 (push) Waiting to run
Push / Build 🧱 (push) Waiting to run
Push / Validate Compatibility 🕵️ (push) Waiting to run
Push / Validate Services 🕵️ (push) Waiting to run
Push / Update Documentation 📖 (push) Waiting to run
Push / Deploy Documentation to Cloudflare ☁️ (push) Blocked by required conditions
Push / Create Sparkle Appcast 🎙️ (arm64) (push) Blocked by required conditions
Push / Create Sparkle Appcast 🎙️ (x86_64) (push) Blocked by required conditions
Push / merge-appcasts (push) Blocked by required conditions
Push / Windows Signing ✍️ (push) Blocked by required conditions
Push / Create Release 🛫 (push) Blocked by required conditions
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
Some checks are pending
Push / Format 🔍 (push) Waiting to run
Push / Build 🧱 (push) Waiting to run
Push / Validate Compatibility 🕵️ (push) Waiting to run
Push / Validate Services 🕵️ (push) Waiting to run
Push / Update Documentation 📖 (push) Waiting to run
Push / Deploy Documentation to Cloudflare ☁️ (push) Blocked by required conditions
Push / Create Sparkle Appcast 🎙️ (arm64) (push) Blocked by required conditions
Push / Create Sparkle Appcast 🎙️ (x86_64) (push) Blocked by required conditions
Push / merge-appcasts (push) Blocked by required conditions
Push / Windows Signing ✍️ (push) Blocked by required conditions
Push / Create Release 🛫 (push) Blocked by required conditions
2025-12-17 13:41:59 -05:00
Ryan Foster
dcdbd2e904 libobs: Update version to 32.0.4
Some checks failed
Push / Format 🔍 (push) Has been cancelled
Push / Build 🧱 (push) Has been cancelled
Push / Validate Compatibility 🕵️ (push) Has been cancelled
Push / Validate Services 🕵️ (push) Has been cancelled
Push / Update Documentation 📖 (push) Has been cancelled
Push / Deploy Documentation to Cloudflare ☁️ (push) Has been cancelled
Push / Create Sparkle Appcast 🎙️ (arm64) (push) Has been cancelled
Push / Create Sparkle Appcast 🎙️ (x86_64) (push) Has been cancelled
Push / merge-appcasts (push) Has been cancelled
Push / Windows Signing ✍️ (push) Has been cancelled
Push / Create Release 🛫 (push) Has been cancelled
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 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
태스키_박태연
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-SOOP
32ba0c3897 rtmp-services: Add SOOP Global 2025-10-31 13:47:41 -04:00
pkv
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
pkv
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
pkv
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 Checker
ea7078b493 rtmp-services: Remove defunct servers/services 2025-10-29 13:35:26 -04:00