Previously, we always assumed we could push more frames before an encoded
packet would be available. Actually, we can get EAGAIN when the
frame queue is full and before any encoded packets have been completed.
Instead, attempt to read packets more often as the worst that can
happen is we get EAGAIN again.
After adding proper adapter enumeration the linux code ends up entering
the texture encoding paths, but these paths are not correctly
implemented on linux yet.
fixes#10221
Frame rate should be defined before AMF encoder initialization,
because this information is used for setting vui_time_scale in SPS.
If frame rate isn't defined before initialization,
then AMF encoder set default frame rate into VUI header (30 fps).
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
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).
This will allow consumers of obs_pipewire to handle the device
registry themselves. This is not useful for the screencast code
since there's always only one node in the registry, but it will
be used by the camera and audio code to list hardware devices.