Commit Graph
14837 Commits
Author SHA1 Message Date
Warchamp7 c942731aaf frontend: Adjust styling for SourceTree 2025-04-03 14:18:46 -04:00
Warchamp7 a0248a319f frontend: Auto-select manually added file imports 2025-04-03 13:49:58 -04:00
Warchamp7 cd6bb523ae frontend: Adjust scene collection importer 2025-04-03 13:49:58 -04:00
Warchamp7 3906fece61 frontend: Unify appearance of menus 2025-04-02 15:29:06 -04:00
jcm bf7e82de80 mac-avcapture: Use list-based format selector 2025-04-02 15:03:52 -04:00
RedBlackAka 11a8814ed4 CI: Update bouf to v0.6.5 2025-04-02 14:36:13 -04:00
Tarulia 6931d80e16 deps/json11: Fix compile error on GCC 15+ 2025-04-02 14:04:02 -04:00
Ryan Foster 1431b4c810 CI: Clean up Flatpak cache detection
I discovered while investigating a separate caching issue that the read
command was not assigning ref correctly. This is inconsequential since
we do not use that value, but it led me to look up the documentation for
the GitHub CLI extension used here, gh-actions-cache.

The GitHub CLI extension gh-actions-cache is deprecated as of October
2024. The recommendation is to use the offical gh cache command. That
command produces slightly different output, so adjust the read command
accordingly.
2025-04-02 13:32:32 -04:00
Dennis Sädtler 3fc119190e docs: Add canvases documentation 2025-04-02 12:39:46 -04:00
Dennis Sädtler dac0be2cbe libobs: Use UUIDs in scene undo/redo data
Since scenes now can have non-unique names by being part of different
canvases, use UUIDs instead.
2025-04-02 12:39:46 -04:00
Dennis Sädtler ec9f4b0d20 libobs: Add Canvas object RAII wrappers 2025-04-02 12:39:46 -04:00
Dennis Sädtler 3d57b1fd63 libobs: Introduce Canvases
This adds a new obs_canvas object that acts as a shareable
(reference-counted) owner of views, mixes, and (optionally) scenes.

This is a step towards faciliatating multi-canvas and multi-output
features in OBS Studio.

It solves a number of complications that exist with the manual approach
of using views, such as audio mixing, source active-state tracking, and
scenes not havinga  reliable way of identifying the actual available
canvas size.
2025-04-02 12:39:46 -04:00
Dennis Sädtler 66da1e42c7 libobs: Add video_reset signal
Signals when a video reset has completed. This is mainly useful when
canvases or views are used, whose mixes will have been freed or
recreated during the reset.
2025-04-02 12:39:46 -04:00
Dennis Sädtler 4459041e7e libobs: Add view type to view object
Allos creating additional views that act like a MAIN_VIEW instead of AUX_VIEW.
2025-04-02 12:39:46 -04:00
Alex Luccisano 0910858ef8 frontend: Enable multitrack video controls on Linux 2025-04-01 23:18:15 -04:00
Alex Luccisano e1d2cf705d frontend: Support enhanced broadcasting on Linux
Enhanced broadcasting requires system information to be gathered
on the client and submitted to the GetClientConfiguration request
in order to obtain a valid response from the server. This commit
adds support for gathering the required information on Linux-based
systems.
2025-04-01 23:18:15 -04:00
Alex Luccisano b41522b4fd frontend: Convert "profile" to an integer for VAAPI encoders
VAAPI encoders deviate from other encoders (e.g. AMF, NVENC) with
the "profile" setting being an integer instead of a string. With
enhanced broadcasting, "profile" is signalled as a string. Convert
the string-based profile to the appropriate integer-based profile
for VAAPI encoders as a workaround, until VAAPI supports string-based
"profile" (if ever).
2025-04-01 23:18:15 -04:00
Alex Luccisano 7decef8ab0 obs-ffmpeg: Make VAAPI rc_mode comparison case insensitive
`get_rc_mode()` compares the incoming rate control mode string
to the .name member of rc_mode_t, and the table entries are
all upper-case. This caused a crash when the incoming string
is set to "cbr" instead of "CBR". Make the string comparison
case insensitive.
2025-04-01 23:18:15 -04:00
Alex Luccisano 935613816f libobs/util: Update os_get_free_size()
`os_get_free_size()` was simply returning 0. For Linux,
implement the free size calculation based on the `sysinfo()`
system call.
2025-04-01 23:18:15 -04:00
Alex Luccisano abb8cdf0da libobs, libobs-opengl: Add memory and identification APIs
Add graphics APIs to obtain the GPU driver version and renderer
strings, as well as GDDR memory sizes. The GDDR memory sizes
include the dmem (dedicated memory on the GPU) and smem
(shared CPU memory used by the GPU but resides in the CPU DDR).

The version and renderer strings are needed for identification
purposes, for example enhanced broadcasting used by Twitch, to
associate the GPU used by OBS with the PCIe-based identification
values such as device_id and vendor_id.
2025-04-01 23:18:15 -04:00
cg2121 86f7475f14 frontend: Add preview zoom controls 2025-04-01 17:31:09 -04:00
gxalpha 62ef7e0fee libobs: Deprecate obs_get_transition_by_[name|uuid]
obs_get_transition_by_name is very problematic because transitions are
always private and their names aren't unique. This means that the method
iterates over all private sources and then takes the first that both is
a transition and matches the name we're looking for. However, this could
be from anywhere - it could be a frontend transition, but also a source
transition, quick transition, or even one from third-party plugins. This
is always never what is intended.

As such, this method (which should never have been added in the first
place) needs to go. In its place, obs_frontend_get_transitions returns a
list of all frontend transitions (which is usually what people are
looking for), and alternatively obs_get_source_by_uuid also provides
access to private sources.

While we're at it, obs_get_transition_by_uuid is basically a wrapper for
obs_get_source_by_uuid and not really necessary. UUID's are unique and
a source doesn't suddenly change its type, so if you have a transition's
UUID you can be pretty sure that when you do obs_get_source_by_uuid, it
will still be a transition.
2025-04-01 17:07:24 -04:00
cg2121 5fa4ea44d0 frontend: Make list spacing consistent
This makes all list widget spacing set to 1.
2025-04-01 16:39:53 -04:00
PancakeTAS 4dfd0b31e4 linux-pipewire: Fix 10- and 16-bit captures 2025-04-01 16:01:29 -04:00
jcm 8f1bcc1798 cmake: Adjust macOS SDK detection 2025-03-31 14:10:38 -04:00
Ryan Foster 3e84469cc1 libobs: Update version to 31.0.3 2025-03-26 16:05:26 -04:00
Exeldro 5ca6e1effa libobs: Fix duplicating scene with custom size 2025-03-26 15:17:13 -04:00
Warchamp7 ca762b9460 frontend: Remove Exit button (#11887) 2025-03-24 17:57:44 -04:00
Ryan Foster b96607345a obs-websocket: Update version to 5.5.6
Fix a possible crash when opening OBS in Studio Mode.
2025-03-24 13:48:24 -04:00
Lukáš Jech 01d5198f7b rtmp-services: Add "VRCDN - Live" service 2025-03-20 19:21:30 -04:00
PatTheMav 577e3504d5 frontend: Only emit frontend events for existing scene collection
To emit frontend events early during OBS' initialization, the
disableSaving state variable needs to be "falsy" (as events will not be
emitted otherwise).

The code path taken for generating a new fallback scene collection
has disableSaving decremented to "enable" saving (and thus frontend
events) already, so it's just the code paths for existing collections
that need this workaround.

Emitting the scene changed and preview scene changed events when a
fallback scene collection has been created has side-effects when
OBS Studio is set to studio mode and can lead to potential crashes,
as the studio mode is still in an invalid state at this point.
2025-03-20 15:05:42 -04:00
PatTheMav b163d5ffcd CI: Add workflow_dispatch trigger to scheduled repository workflow
By adding the workflow_dispatch trigger, the scheduled workflow can
also be manually triggered if the scheduled run failed to run due to
scheduling issues or because of an error that might have been fixed
since then.
2025-03-19 16:42:37 -04:00
duyquach-castr 291adefb4d rtmp-services: Update Castr.io ingests 2025-03-19 16:01:01 -04:00
Service Checker 1673cce921 rtmp-services: Remove defunct servers/services 2025-03-19 13:58:21 -04:00
jcm 68c4617927 mac-avcapture: Clear memory when creating frame struct 2025-03-18 17:35:53 -04:00
Ryan Foster 95cea5487b obs-browser: Update version to 2.24.6
46adc4b - Check source validity before attempting to log renderer crash
ac34d8e - Don't loop Cef exit while shutting down if task post fails
b56fd78 - Update version to 2.24.6
2025-03-17 18:56:47 -04:00
pkv f6f5c7bb25 nv-filters: Silence initial load error for Blur
On initial run of the Blur filter, some parameters are not all set when
there is the first call to load the effect. This is actually not an
issue, so the log is now silenced at this time.

Signed-off-by: pkv <pkv@obsproject.com>
2025-03-17 16:25:58 -04:00
pkv cc452e5acd nv-filters: Remove reset signal for Video effects
The reset signal was triggered whenever there was an update in the
parent source. This destroys the effect and recreates it, which can be
resource heavy.
We now let the SDK handle the source update on its own rather than
manually resetting the effect on obs side.

Signed-off-by: pkv <pkv@obsproject.com>
2025-03-17 16:25:58 -04:00
pkv 3402f6c7d0 nv-filters: Fix CudaStream used in Video effects
During the mapping and unmapping of resources, the CudaStream was not
always consistent.
This fixes the issue.
Thanks to Stephan from NVIDIA Dev support for noticing the mismatch.

Signed-off-by: pkv <pkv@obsproject.com>
2025-03-17 16:25:58 -04:00
pkv b5d0054cfa nv-filters: Reallocate state when resetting AIGS filters
This properly allocates the temporal state variable used in AI
greenscreen effect, when the latter is reset.

Signed-off-by: pkv <pkv@obsproject.com>
2025-03-17 16:25:58 -04:00
pkv 2682ccc33c nv-filters: Fix destruction of Background Blur effect
For the background blur effect, it was found that destroying it and
then adding any other NVIDIA effect led to a blank picture.
This commit swaps the order of destroying the effect and the associated
cudaStream.
For other effects the order does not matter; I have no idea why the
order matters for blur effect and the SDK gives no indication about any
proper order at destruction time.

Fixes bug #11383.
Signed-off-by: pkv <pkv@obsproject.com>
2025-03-17 16:25:58 -04:00
pkv ff51280ecb nv-filters: Set max effective threshold to 0.95 for Background removal
The threshold THR in Background removal filter has the following effect:
- if alpha if between [THR - 0.1; THR], alpha is interpolated;
- if alpha >= THR, alpha is set to 1.0;
- if alpha <= THR - 0.1, alpha is set to 0.
It was introduced in order to smooth the alpha at the edges of the
foreground.
This works fine unless THR == 1, where there can be bulk pixels with
alpha which will be interpolated as if they were at the edge;
in order to ensure that a bulk area with alpha set to 1.0 is well
defined, the max threshold is now set to 0.95 (so if the user picks a
unity threshold, a value of 0.95 will actually be used).
This fixes a bug in third party plugins which rely on a bulk foreground
safely set at alpha == 1.0. [1]

[1] https://github.com/FiniteSingularity/obs-stroke-glow-shadow/issues/61

Signed-off-by: pkv <pkv@obsproject.com>
2025-03-17 16:25:58 -04:00
Bo ecb99e3b34 obs-nvenc: Fix incorrect CUDA array size allocation
Fix cuda array use 2 bytes per element instead of 4 bytes with P010 format.
2025-03-17 14:49:09 -04:00
Dennis Sädtler 12baa1c817 libobs: Reset reconnecting state when can_reconnect is false 2025-03-17 14:22:56 -04:00
Dennis Sädtler 7a11db8949 frontend: Add reconnect callback for multitrack video 2025-03-17 13:30:58 -04:00
Dennis Sädtler 187eef7b38 libobs: Add optional reconnect callback to outputs 2025-03-17 13:30:58 -04:00
Dennis Sädtler 2950daa29d Revert "libobs: Do not allow reconnect if stop code is OBS_OUTPUT_INVALID_STREAM"
This reverts commit a0edc5e8bc.
2025-03-17 13:30:58 -04:00
Ryan Foster 8db61f2fab CI: Update flatpak-builder and flat-manager actions
actions/cache versions other than v4, v3, v4.2.0, and v3.4.0 were
deprecated and gradually sunset through February.

@actions/cache versions other than v4.0.0+ were deprecated and gradually
sunset through February.

See:
 * https://github.com/actions/cache/discussions/1510
 * https://github.com/actions/toolkit/discussions/1890

flathub-infra/flatpak-github-actions/flatpak-builder set its
@actions/cache dependency version to "^3.2.3" and was last updated on
July 29, 2024. As a result, its yarn.lock file specifies version
"3.2.4", which is no longer supported and does not work.

Update flathub-infra/flatpak-github-actions actions now that they have
updated their @actions/cache dependency.
2025-03-15 17:00:58 -04:00
tytan652 5e3b28d667 build-aux: Update Flatpak modules
- Update MbedTLS to v3.6.2
- Update nv-codec-headers to n13.0.19.0
- Update srt to v1.5.4
- Update SVT-AV1 to 2.3.0
- Update FFmpeg to 7.1
- Update LuaJIT to v2.1 a4f56a459
- Update VPL to v2.14.0
- Update vpl-gpu-rt to 24.4.4
- Update Asio to 1.32.0
2025-03-14 12:52:27 -04:00
tytan652 56f7fcc8cf build-aux,CI: Update KDE Flatpak runtime to 6.8
The underlying Freedesktop runtime is now 24.08 with AOM 3.10.x and
libvpx 1.14.x
2025-03-14 12:52:27 -04:00