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>
The previous commit switched global hotkeys from requiring Accessibility
to just Input Monitoring permissions. This adds the matching changes to
the permissions dialog, also accounting for the fact that Accessibility
includes Input Monitoring.
Using CGEventTapCreate instead of addGlobalMonitorForEventsMatchingMask
to listen to global hotkeys has the advantage of tighter control over
what permissions we need. Since we only listen to and do not modify the
event, it is enough to have "Input Monitoring" instead of the full
"Accessibility" (which would allow modifying the event after catching
it).
The regexp was not tolerating a + sign is the version string,
causing configuration to fail on Ubuntu 24.04 when the installed
version is 6.1.1-3ubuntu5+esm2.
We don't use CUDA RT functions anymore.
So this commit removes their loading from the CUDA RT DLL.
This also fixes a crash when loading different versions of CUDA RT when
the SDK is updated [1].
[1] https://github.com/obsproject/obs-studio/issues/11813
Signed-off-by: pkv <pkv@obsproject.com>
This updates checks against current SDK redist versions:
- 0.7.6 (Video Effects)
- 1.6.1.2 (Audio Effects)
Users will receive a warning if their redist versions are lower than
these.
Signed-off-by: pkv <pkv@obsproject.com>
These servers are unresponsive and are causing our nightly service
checks to fail. We do not know if these servers are intentionally
unreachable, but I do not want our nightly CI runs to keep failing, so I
am removing them unless we are informed they are working.
Use the recently added `obs_encoder_video_tex_active()` API
for AMD AMF-based encoders, similar to the recent commit for
obs-nvenc. This allows the OBS canvas to use non-NV12 pixel
formats (such as I444) while the multitrack video encoders will
use NV12 or P010 textures converted using the GPU.
The `obs_audio_info2` struct is used in libobs
for resetting audio, however there is a need for
obtaining the additional fields present in the struct
beyond `obs_audio_info`.