lossless H264 hardware decoding fails on Intel UHD 630
Posted: 30 May 2024 12:22
Given:
Testsample was created like this:
Samples are here:
https://files.catbox.moe/y04qo0.mkv - out_crf_0.mkv - lossless
https://files.catbox.moe/x5dumz.mkv - out_crf_1.mkv - not lossless
CRF 1 plays properly:
CRF 0 does not:
Playing this media in MPV e.g. gives us the following warning from libav about hardware decoding when playing crf_0:
For comparison, playing crf_1 works:
VLC unfortunately wouldn't be more verbose than...
The expected behaviour would be for VLC to fall back to a software decoder as MPV did.
Code: Select all
VGA compatible controller: Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630]
Kernel 6.9.2
$ vainfo
Trying display: wayland
vainfo: VA-API version: 1.21 (libva 2.21.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 24.2.3 ()
[...]
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointFEI
VAProfileH264High : VAEntrypointEncSliceLP
$ vlc --version
VLC media player 3.0.20 Vetinari (revision 3.0.20-0-g6f0d0ab126b)
VLC-Version 3.0.20 Vetinari (3.0.20-0-g6f0d0ab126b)
Code: Select all
#video source is https://commons.wikimedia.org/wiki/File:Hubble_Maps_Jupiter_in_4k_Ultra_HD.webm
#
#ffmpeg version n6.1.1 Copyright (c) 2000-2023 the FFmpeg developers
#built with gcc 13.2.1 (GCC) 20230801
#configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan
#libavutil 58. 29.100 / 58. 29.100
#libavcodec 60. 31.102 / 60. 31.102
#libavformat 60. 16.100 / 60. 16.100
#libavdevice 60. 3.100 / 60. 3.100
#libavfilter 9. 12.100 / 9. 12.100
#libswscale 7. 5.100 / 7. 5.100
#libswresample 4. 12.100 / 4. 12.100
#libpostproc 57. 3.100 / 57. 3.100
wget "https://upload.wikimedia.org/wikipedia/commons/5/5a/Hubble_Maps_Jupiter_in_4k_Ultra_HD.webm"
ffmpeg -y -i Hubble_Maps_Jupiter_in_4k_Ultra_HD.webm -to 00:10 -map 0:v:0 -filter:v "scale=400:224" -c:v libx264 -crf 0 out_crf_0.mkv
ffmpeg -y -i Hubble_Maps_Jupiter_in_4k_Ultra_HD.webm -to 00:10 -map 0:v:0 -filter:v "scale=400:224" -c:v libx264 -crf 1 out_crf_1.mkv
https://files.catbox.moe/y04qo0.mkv - out_crf_0.mkv - lossless
https://files.catbox.moe/x5dumz.mkv - out_crf_1.mkv - not lossless
CRF 1 plays properly:
CRF 0 does not:
Playing this media in MPV e.g. gives us the following warning from libav about hardware decoding when playing crf_0:
Code: Select all
[vd] Trying hardware decoding via h264-vaapi.
[vd] Pixel formats supported by decoder: vdpau vulkan cuda vaapi yuv420p
[vd] Codec profile: High 4:4:4 Predictive (0xf4)
[vd] Hardware decoding of this stream is unsupported?
[vd] Requesting pixfmt 'yuv420p' from decoder.
[vd] Selected codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
[vf] User filter list:
[vf] (empty)
[cplayer] Starting playback...
[vd] Attempting next decoding method after failure of h264-vaapi.
[vd] Using software decoding.
Code: Select all
[vd] Trying hardware decoding via h264-vaapi.
[vd] Pixel formats supported by decoder: vdpau vulkan cuda vaapi yuv420p
[vd] Codec profile: High (0x64)
[vd] Requesting pixfmt 'vaapi' from decoder.
[vd] Selected codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
[vf] User filter list:
[vf] (empty)
[cplayer] Starting playback...
Code: Select all
main debug: using hw decoder module "vaapi"
avcodec: Using Intel iHD driver for Intel(R) Gen Graphics - 24.2.3 () for hardware decoding
main debug: Received first picture