As the comment mentions this only occurs during an encoder stall on the
first frame. On D3D both gs_texture_t's are actually a single D3D
texture object and both planes are copied during gs_copy_texture, for
everyone else we need to copy the textures separately as they are
independent OpenGL textures.
This adds gs_enum_adapters and gs_get_adapter_count to the opengl
backend and promotes these to multiplatform graphics functions.
However we need to make an internal device change, device_enum_adapters
must pass in the current device on opengl to ensure that adapter #0 is
the display adapter. We do this to avoid changes to plugins already
checking against obs_video_info.adapter which is always 0 and expected
to be the device OBS was initialized on.
The actual implementation reports the dri render node (or /Software).
This allows plugins to query non-video features of the adapters like
VA-API/NVENC/etc or other cross device functionality. `/Software` is
chosen to avoid opening random files in the current directory if its
passed along as a file path like the regular dri render nodes.
This commit also modifies build-aux to update libdatachannel.
This commit also modifies obs-webrtc to avoid a compiler error.
Notable changes:
* deps.ffmpeg: Update libdatachannel to 0.20.1
* deps.macos: Remove Carla
* deps.macos: Add uthash to macOS deps
* deps.windows: Remove Carla
* deps.windows: Add uthash to Windows deps
For now just tag all imported images with GS_RENDER, this may not work
for some images that were produced by some hardware other than the GPU
render engines. But since we don't import VA-API decoded frames we
probably won't run into this. And we need this to render into VA-API
frames destined for encoding.
Enable all of the previously Windows only paths for OpenGL backends that
support encode_texture2
Co-authored-by: Torge Matthies <openglfreak@googlemail.com>
This new runtime version relies on Freedesktop SDK 23.08.
Disable PipeWire module since Freedesktop SDK 23.08 provides a more
recent version of PipeWire.
Intel Media SDK is patch to support being compiled with more recent
version of GCC
To avoid a compiler error, this commit also bumps the configured NVENC
version to match the updated version in the deps package.
Notable changes:
* deps.ffmpeg: Update zlib to 1.3
* deps.ffmpeg: Update SVT-AV1 to 1.8.0
* deps.ffmpeg: Update aom to 3.8.0
* deps.ffmpeg: Update libsrt to 1.5.3
* deps.ffmpeg: Update nv-codec-headers to 12.1.14.0
* deps.ffmpeg: Update AMF to 1.4.32
* deps.ffmpeg: Update FFmpeg to 6.1
* deps.macos: Update LuaJIT to 2.1 c525bcb902
* deps.macos: Update FreeType to 2.13.2
* deps.macos: Update Asio to 1.29.0
* deps.macos: Update nlohmann JSON to 3.11.3
* deps.macos: Update Sparkle to 2.5.2
* deps.macos: Update Syphon Framework to 5.0 39e31383ff
* deps.windows: Update FreeType to 2.13.2
* deps.windows: Update curl to 8.5.0
* deps.windows: Update LuaJIT to 2.1 c525bcb902
* deps.windows: Update Asio to 1.29.0
* deps.windows: Update nlohmann JSON to 3.11.3
* deps.windows: Update VPL to v2.10.1
* deps.qt: Update Qt6 to 6.6.1 for Windows
* deps.qt: Update Qt6 to 6.6.1 for macOS
If a user sets both AdaptiveMiniGOP=true and EnablePreAnalysis=true
in the AMF/FFmpeg options field, AMF will adaptively insert
B-pictures, and no longer uses the fixed B pattern.
For a fixed B-frames pattern, it is expected that increasing B-frames
can cause a quality drop for certain content such as with high motion.
AdaptiveMiniGOP is recommended when using B-frames to improve the
quality in such cases. AdaptiveMiniGOP is dependent on PreAnalysis
which means that trying to enable it without having PreAnalysis turned
ON will have no negative effect (AdaptiveMiniGOP won't be enabled).
QuickSync requires oneVPL, which is unable to find its libraries in the
Flatpak, resulting in MFX_ERR_NOT_FOUND and the encoders not working.
The libraries are present in the install prefix (/app/lib), which is
currently not automatically added to the search paths, see the issue
https://github.com/intel/libvpl/issues/119 for details. For now,
work around the issue by setting ONEVPL_SEARCH_PATH explicitly.