Commit Graph

15093 Commits

Author SHA1 Message Date
pkv f3ebb86396 nv-filters: Fix for size changes with video fx
The && should be a || when sizes are changed.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv 3baf0456ba nv-filters: For Blur FX, do not set mask image
It is not necessary to set the mask parameter for Blur FX.
Setting it to NULL, will apply the blur to the whole image.
This is not documented in the SDK but is returned when info about the
FX is requested by the plugin to the SDK library.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv ea96f87ca1 nv-filters: Fix load of video FX during reset
The video FX must be reloaded whenever any of its settings have changed,
including its the temporal state.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv ab55bb46ea nv-filters: Set NvVFX_Run to SYNC mode
The NvVFX_Run function can be run in SYNC or ASYNC mode; the SDK sample
uses SYNC. This defines the magic numbers in an enum and sets the
NvVFX_Run function to SYNC.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv 94752762c7 nv-filters: Process Background Blur FX on same CudaStream as Background Removal FX
The SDK samples uses the same CudaStream for both FX. Do likewise which
simplifies the code. (The Background Blur calls the Background Removal.)

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv 2ad236740f nv-filters: Change Background Blur to perf mode
In order to alleviate the demands on GPU, the Background Blur is now set
to Perf mode.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv ffd3a2a34e obs-filters: Remove unused NVIDIA effect
The greenscreen effect was moved to nv-filters project.
But this file failed to be removed.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv cf6eb3fd89 nv-filters: Add chair removal option to background removal
This adds the following new options for background removal effect,
namely the ability to remove the chair or leave it with the talking
head.
Requires sdk >= 0.7.6.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv b9f13cc360 nv-filters: Add voice optimization for audio filters
This adds a new property for the audio filters: VAD (Voice Audio Data).
When it is toggled, the effect will be optimized for voice processing.
Noise suppression will "remove low-volume noise and all non-speech data"
in the words of the SDK.
Requires SDK >= 1.6.0.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv 5c57cb1d8b nv-filters: Enable new logger function for audio effects
This enables a new logger function introduced in SDK >= 1.6.0, which
gives much more details about what is going on during the effect
processing.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv a8b8abe691 nv-filters: Enable new logger function for Video Effects
This enables a new logger function introduced in SDK >= 0.7.5, which
gives much more details about what is going on during the effect
processing.

Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
pkv 5e60e19de3 nv-filters: Disable audio filter instead of destroying in case of issues
The audio filters are now disabled if an issue is detected;
the filter is no longer destroyed.
This avoids a call to destroy function within the filter.
Signed-off-by: pkv <pkv@obsproject.com>
2025-08-21 16:52:14 -04:00
derrod 1d01fe8584 libobs: Include all audio priming packets if closest is start 2025-08-21 16:27:24 -04:00
tytan652 2bd23cd50d libobs,cmake: Replace vendored SIMD Everywhere by prefix/system install
SIMD Everywhere finder needs to be installed alongside libobs CMake
package since its headers depends on it.

C++ cmath header is included on Windows on ARM to ensure that all math
functions are correctly defined when included in C++ code.
https://github.com/simd-everywhere/simde/issues/1304

macOS intrinsics is included to make sure that no redefinition error
happens.
2025-08-21 15:22:08 -04:00
tytan652 570f2641f4 cmake: Add a finder for SIMD Everywhere 2025-08-21 15:22:08 -04:00
Dennis Sädtler c1a65901f5 obs-ffmpeg: Correct P-frame packet priority in AMF encoder 2025-08-21 14:12:20 -04:00
Dennis Sädtler 8279094885 obs-nvenc: Set packet priority 2025-08-21 14:12:20 -04:00
Dennis Sädtler b0b84ad4c9 libobs: Improve HEVC packet priority determination 2025-08-21 14:12:20 -04:00
Ryan Foster 01e7b78929 libobs: Use os_oom() for out of memory crash
This change will make the crash stack clearer when OBS is crashing due
to "out of memory" rather than an explicit bmalloc/brealloc(0) call.
2025-08-20 19:06:11 -04:00
Ryan Foster 94a736f179 libobs: Duplicate os_breakpoint to os_oom
Create a specific "out of memory" variant of os_breakpoint to facilitate
troubleshooting and to differentiate an "out of memory" crash from a
more generic crash.
2025-08-20 19:06:11 -04:00
Dennis Sädtler e4c39eb648 libobs: Allow interleaver to recover from temporary stalls
The interleaver requires packets with sufficiently high timestamps from
all encoders to be available to send out before it outputs a packet.
This means that if one encoder stalls and does not submit packets for
a while the interleaver can end up with a permanent increase to its
delay due to multiple packets being received from the other encoders
without being able to send any.

This change introduces a recovery mechanism that relies on an upper
bound for the amount of packets that may become "streamable" at a time
being calculated, and flushing additional packets if that bound is
violated.

The upper bound is based on the largest expected interval between
packets and how many packets for each encoder could arrive within
double that interval (to give us a bit of wiggle room since not
all encoders will deliver frames 100% consistently).

This ensures that we still send data at a steady rate but allow the
buffer to drain if it becomes larger than it needs to be.
2025-08-20 18:42:11 -04:00
Sebastian Beckmann 5730f86050 frontend/api: Remove obs_frontend_add_dock
Deprecated since cde5545f8f (30.0).
2025-08-20 18:05:15 -04:00
Sebastian Beckmann b7c399f6d8 libobs: Remove v1 scene item transform API
Deprecated since 4b138f674f (30.1).
2025-08-20 18:05:15 -04:00
Sebastian Beckmann d283181c83 libobs: Remove obs_scene_sceneitem_from_source
Use obs_scene_enum_items to find sources instead.

Deprecated since 4dd3cf6758 (31.0).
2025-08-20 18:05:15 -04:00
Sebastian Beckmann 163493d1e1 libobs: Remove obs_view_get_video_info
Deprecated since fc891295b6 (30.1).
2025-08-20 18:05:15 -04:00
Sebastian Beckmann be66c8a701 libobs: Remove circlebuf
Deprecated since a4b8e1a6a9 (30.1).
2025-08-20 18:05:15 -04:00
PatTheMav 53ad05db9f libobs-opengl: Clean up macOS code with better error handling
Adds more error handling to macOS code and also updates the code to
use more ObjC-appropriate code styling.

Variable names have been changed to be more expressive and platform-
specific constants are used instead of custom FourCharCodes.
2025-08-20 17:42:32 -04:00
PatTheMav 7e2fd72ddf libobs-opengl: Improve macOS error handling for swapchain code
OpenGL swapchain code has been the subject of obscure crashes on macOS
for quite some time, mainly because updates to the swapchain need to
take place on the main thread (because the operations involve the
NSView instances of the application), which introduces possible race
conditions.

This commit adds more error checking to the related functions and makes
OpenGL-related code use copies of data from the graphics thread
(instead of accessing that data as nested data within a global heap
object) and limit "deep" access to a swap-and-delete update of the
texture pointer for the associated frame buffer object.
2025-08-20 17:42:32 -04:00
PatTheMav 813c95f4ca libobs: Update sharpness effect to enable compilation for Metal
A boolean comparison that involves at least one vector type will
result in a boolean vector (not a boolean scalar) for Direct3D and
Metal, whereas OpenGL returns a scalar boolean.

To avoid unnecessary code complexity, use the "distance" function
instead, which treats the color values as vectors and returns a
non-zero value if they are any different, achieving the same result.
2025-08-20 17:01:09 -04:00
PatTheMav 87698b1e01 libobs: Fix clear color mismatch in Metal and OpenGL on Apple Silicon
The OpenGL frontend is implemented in Metal for Apple Silicon Macs.

Metal does not provide a direct "clear" command (neither do D3D12 or
Vulkan) and instead a clear is a load command for a render target of a
render pass.

All writes (and color calculations) in Metal happen in linear space,
with appropriate gamma encoding and decoding happening automatically
depending on the pixel format of the the textures attached to the
pipeline.

Thus setting a clear color with linear gamma is the correct approach to
avoid the SRGB gamma curve being applied twice for both scenarios.
2025-08-20 17:01:09 -04:00
PatTheMav 95ea65136f plugins: Update plugins to use default draw effect for Metal 2025-08-20 17:01:09 -04:00
derrod 966f086c96 obs-outputs: Use packet time callback for frame-accurate chapter markers 2025-08-20 16:07:51 -04:00
Huts, Roman 345700b199 obs-ffmpeg: Add Pre-Analysis checkbox for AMD encoder 2025-08-20 15:15:08 -04:00
Huts, Roman 4fb20ee9ad obs-ffmpeg: Update default AMD encoding settings 2025-08-20 15:15:08 -04:00
derrod a7d5721c2c frontend: Remove channel change signal handler from transform dialog 2025-08-20 13:57:36 -04:00
Exeldro 033c740d13 obs-transitions: Fix stinger showing count for update during transition 2025-08-20 13:34:57 -04:00
cg2121 33e8a23386 frontend: Auto release OBSDataArray objects
Makes sure that all obs data array objects in cpp files are using
auto release RAII wrappers.
2025-08-20 12:59:53 -04:00
derrod 91e90817d2 obs-outputs: Fix tkhd/mvhd box version with 64-bit timestamps 2025-08-19 23:37:02 -04:00
jcm 4e7152bd70 mac-capture: Set minimum frame interval in capture initialization 2025-08-19 22:52:20 -04:00
Dennis Sädtler ef057dd3af frontend: Fix and simplify initialization of supported_codecs 2025-08-19 18:44:49 -04:00
Sebastian Beckmann 28b0ca5187 mac-avcapture: Remove unneeded macOS SDK ifdef
We require the macOS 15 SDK since 8f1bcc1, so this check is unneeded.
2025-08-19 18:17:56 -04:00
PatTheMav 4c912358a9 cmake: Remove enforced architectures for macOS builds
Ideally CMAKE_OSX_ARCHITECTURES should not be set automatically within
the project but should exclusively be a cache or environment variable
provided by the developer.

This would also match the requirement mentioned by the CMake
documentation that the value should be set before the first project()
call.

If this variable is not set, the Xcode generator would default to the
native platform of the host, but the buildspec system as well as the
"add_obs_plugin" function need a local "architecture" to work, so
use "CMAKE_HOST_SYSTEM_PROCESSOR" instead if CMAKE_OSX_ARCHITECTURES
was not provided.
2025-08-19 17:59:22 -04:00
tytan652 363874b40f build-aux: Remove unused Flatpak static permission 2025-08-19 17:02:40 -04:00
Sebastian Beckmann a7d68842fb frontend: Don't mark OBSHotkeyEdit as read-only on macOS
Recent styling changes mean read-only QLineEdits no longer visually take
focus. There are better ways to remove the input cursor, and if we do
that that should probably be all operating systems anyways.
2025-08-19 16:41:27 -04:00
gxalpha 9dcef85e69 shared/icon-label: Split into header and source file
Splits the IconLabel widget header into a header and source file. The
source uses the moc_icon-label include to prevent the moc from being
included in the global mocs_compilation (as described in 5eb04cd).
2025-08-19 16:08:06 -04:00
gxalpha a64956d8ee shared: Rename icon-label.hpp to IconLabel.hpp
Renames the icon-label.hpp header to IconLabel to follow the new
convention of files being named the same as the class they contain.
2025-08-19 16:08:06 -04:00
Sebastian Beckmann fbf08cc944 build-aux: Add test directory to clang-format file list 2025-08-19 15:16:40 -04:00
Sebastian Beckmann 268e30a52b frontend: Remove unused macOS window icons
Commit [1] originally made a differentiation between the operating
systems for the window icon. However, on macOS the window icon is only
respected for the main window (and used for the entire app, as windows
themselves don't have icons), and that got removed in [2]. This means
that this code doesn't actually do anything anymore, and thus should be
removed.

[1] 9ac92f61be
[2] 4afafaac6d
2025-08-19 14:48:06 -04:00
Sebastian Beckmann 28ca612d9e frontend: Remove unused OBSContextBarProxyStyle
All usages of OBSContextBarProxyStyle were removed in [1], so the class
is completely unused now. It should be deleted.

[1] 8dcfae9a39
2025-08-19 14:25:37 -04:00
Rob Howell 2b613f40b4 media-playback: Fix null pointer dereference 2025-08-04 15:39:26 -04:00