Commit Graph

15083 Commits

Author SHA1 Message Date
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
shiina424 1af512f323 frontend: Fix invisible scrollbar in Light theme 2025-08-04 14:04:08 -04:00
shiina424 d9317a38a2 frontend: Fix invisible scrollbar in Rachni theme 2025-08-04 14:04:08 -04:00
PatTheMav 78243d790d CI: Handle possible error condition in gersemi branch of format script 2025-08-01 19:02:04 +02:00
PatTheMav ab01c406c2 cmake: Update formatting introduced by gersemi 0.21.0 2025-08-01 19:02:04 +02:00
PatTheMav 4f2d752fa7 cmake: Remove outdated and incorrect code comment in osconfig module 2025-08-01 19:02:04 +02:00
PatTheMav 94744e6672 cmake: Remove settings from gersemirc only supported via command-line 2025-08-01 19:02:04 +02:00
Ryan Foster 7778070cbd libobs: Update version to 31.1.2 31.1.2 2025-07-25 16:55:48 -04:00
Ryan Foster e757039106 CI: Update obs-crowdin-sync action 2025-07-25 16:14:00 -04:00
Marco 46ce91e582 libobs: Start video output even if there is no mix
This fixes a change in PR 11605 that breaks Decklink video outputs.
get_mix_for_video() returns NULL for those outputs, causing
start_raw_video() to return before connecting the output.
2025-07-25 15:49:19 -04:00
tytan652 24597a7b8e Revert "linux-pipewire: Fix 10- and 16-bit captures"
This reverts commit 4dfd0b31e4.

Also adds a FIXME comment.
2025-07-25 15:30:52 -04:00