VLC media player for Linux and friends Troubleshooting • lossless H264 hardware decoding fails on Intel UHD 630



Given:

Code:

VGA compatible controller: Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630]Kernel 6.9.2$ vainfoTrying display: waylandvainfo: 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 --versionVLC media player 3.0.20 Vetinari (revision 3.0.20-0-g6f0d0ab126b)VLC-Version 3.0.20 Vetinari (3.0.20-0-g6f0d0ab126b)

Testsample was created like this:

Code:

#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.100wget "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.mkvffmpeg -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

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:

Image

CRF 0 does not:

Image

Playing this media in MPV e.g. gives us the following warning from libav about hardware decoding when playing crf_0:

Code:

[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.

For comparison, playing crf_1 works:

Code:

[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...

VLC unfortunately wouldn’t be more verbose than…

Code:

main debug: using hw decoder module "vaapi"avcodec: Using Intel iHD driver for Intel(R) Gen Graphics - 24.2.3 () for hardware decodingmain debug: Received first picture

The expected behaviour would be for VLC to fall back to a software decoder as MPV did.

Statistics: Posted by rugdeporter — 30 May 2024 12:22