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
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>
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>
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>
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>
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>
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.
Qt has some Release DLLs that end with the letter d:
* qdirect2d.dll
* qcertonlybackend.dll
* qopensslbackend.dll
* qschannelbackend.dll
As a result, they get caught by our simple check for if a DLL is a Debug
DLL which just checks if the DLL ends with the letter d.
Extend that check to exclude these specific DLLs from being marked as
Debug DLLs.
Use a rebuilt CEF of the same version (6533) that disables
use_partition_alloc_as_malloc and enable_backup_ref_ptr_support to avoid
memory-related crashes on macOS.
Notable Changes:
* deps.ffmpeg: Update AMF to 1.4.36
* deps.windows: Update VPL to v2.14.0
* deps.ffmpeg: Update libpng to 1.6.47
* deps.ffmpeg: Update SVT-AV1 to 2.3.0
* deps.ffmpeg: Update AOM to 3.12.0
* deps.ffmpeg: Update nv-codec-headers to n13.0.19.0
* deps.ffmpeg: Update FFmpeg to 7.1
* deps.macos: Update LuaJIT to v2.1 a4f56a459
* deps.macos: Update libpng to 1.6.47
* deps.macos: Update Asio to 1.32.0
* deps.macos: Update Syphon to 5.0 b834acdb9
* deps.macos: Update VLC headers to 3.0.21
* deps.qt: Update Qt to 6.8.2 for macOS
* deps.qt: Update Qt to 6.8.2 for Windows
* deps.windows: Update curl to 8.12.1
* deps.windows: Update LuaJIT to v2.1 a4f56a459
* deps.windows: Update Asio to 1.32.0
* deps.windows: Update Zstandard to 1.5.7
* deps.windows: Update VLC headers to 3.0.21
* deps.ffmpeg: Fix libdatachannel shared library build on Windows
* deps.ffmpeg: Fix shared library CMake flag on macOS
Also, add Windows arm64 deps, though they are not used yet.
If a frame has a width or height of zero, this value will make it into
libobs/media-io/video-frame.c:video_frame_init and cause linesizes or
heights to be zero, which will result in a bmalloc(0) call and OBS will
crash.
Instead of letting the call stack get that far, check the frame width
and height here at the source, log an error, and return early if the
frame width or height are zero.
Fix the macro to prevent unnecessary headers from being included by
<windows.h>. This reduces compilation time and may prevent future bugs
due to unexpected includes.
082a0a2 - Don't emit a normal call to a function for closing panels
663dc38 - Disable modern game controller API on Windows
4023fad - Log fatal CEF crashes to file
52c1527 - Print browser source renderer crashes to OBS log
af0651b - Log error if CefInitialize fails
8223215 - Revert "Enable Qt message loop on Linux"
16ff0fa - Update version to 2.24.5
Additionally, update buildspec.json and build-aux/modules/99-cef.json to
use the new CEF builds. This is being done because the changes in
obs-browser specifically are meant to work with a CEF build compiled
with use_gtk=false.
`update_metrics()` in `bpm.c` is checking for null pointer arguments,
and there was a very minor chance of dereferencing a null-pointer in
the logged message. Correct the logic to prevent this from happening.
This prevents the Windows headers from defining min/max macros.
Use std::min and std::max.
Modifies deps, frontend, libobs-d3d11, libobs-winrt, decklink, obs-vst,
and win-dshow.
It is possible for OBS to receive incomplete frames from the compositor
if the graphics drivers in use do not support implicit synchronization.
The compositors usually try to workaround this issue by waiting all
render operations to complete before sharing frames with OBS. However,
this has performance implications for the compositors. Similarly, OBS
should also make sure that all the rendering operations sourcing the
received buffer are complete before returning the respective pw_buffer
back to the compositor, or it would risk the image it is working on
getting overwritten without some type of synchronization.
This change leverages PipeWire's ability to share DRM syncobj fds to
implement an explicit synchronization solution to solve the problem
described above. The usage of these DRM syncobjs is negotiated with the
compositor that OBS is running on. So OBS can still work even if the
compositor does not support explicit synchronization.
Signed-off-by: Doğukan Korkmaztürk <dkorkmazturk@nvidia.com>
This change adds a new type named gs_sync_t and related functions to X11
and Wayland EGL backends to abstract DRM syncobjs and their various
uses.
Signed-off-by: Doğukan Korkmaztürk <dkorkmazturk@nvidia.com>