[FFmpeg-trac] #11110(avcodec:closed): Corrupted output on h264 veryslow preset with common hardware decoders

FFmpeg trac at avcodec.org
Sun Jul 28 00:29:18 EEST 2024


#11110: Corrupted output on h264 veryslow preset with common hardware decoders
------------------------------------+-----------------------------------
             Reporter:  Zeblote     |                    Owner:  (none)
                 Type:  defect      |                   Status:  closed
             Priority:  normal      |                Component:  avcodec
              Version:  git-master  |               Resolution:  invalid
             Keywords:  h264        |               Blocked By:
             Blocking:              |  Reproduced by developer:  0
Analyzed by developer:  0           |
------------------------------------+-----------------------------------
Comment (by Zeblote):

 Thanks for the hint! Searching for the Decoding Pictures Buffer led me to
 discover that there are different feature levels of H.264, which among
 other things, change how many frames this can hold.

 On the NVIDIA documentation, we find: https://docs.nvidia.com/video-
 technologies/video-codec-sdk/12.2/nvdec-video-decoder-api-prog-
 guide/index.html#video-decoder-capabilities

 > Maximum Resolution: 4096x4096 Profile: Baseline, Main, High profile up
 to Level 5.1

 But in the log above, it is trying to use:

 > [libx264 @ 00000224a6ee6bc0] profile High, level 6.0, 4:2:0, 8-bit

 So the underlying issue is that ffmpeg defaults to using a feature level
 that the hardware decoder can't support.
 Adding {{{ -level 5.1 }}} to the command line fixes the problem.

 Why there is no mechanism for the hardware decoder to report that a given
 file is "too new", and perhaps refuse to play it rather than corrupt
 everything, is anyone's guess...
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11110#comment:4>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list