H.264 interlaced encoding with B references generates invalid slice headers

For example, if I encode using the following ffmpeg command line:

ffmpeg -s 1920x1080 -pix_fmt yuv420p -framerate 25 -i input.yuv -c:v h264_nvenc -preset medium -rc cbr -profile:v high -coder cabac -bf 3 -b_ref_mode middle -flags +ildct -top 1 -b:v 5000k -y output.h264

attempting to decode the file using ffmpeg results in repeated errors of the form

[h264 @ 0x210f800] reference picture missing during reorder
[h264 @ 0x210f800] Missing reference picture, default is 65540
[h264 @ 0x224d740] abs_diff_pic_num overflow
[h264 @ 0x224d740] decode_slice_header error

and corrupt output.

Analysing the file (using Intel’s Video Pro Analyzer) shows the fault occurs in every P picture bottom field slice header, in the ref_pic_list_reordering reorder_value[0] syntax element.

Is this a known fault, and is there any workaround (other than disabling B references, which significantly degrades quality)?

I’m using the following software versions:

Centos 7.4
kernel-3.10.0-693.21.1.el7.x86_64
nvidia-kmod-396.44-2.el7.x86_64
ffmpeg 4.0.2
ffnvcodec-8.1.24.2

and a Quadro P4000 card.

Hi martin.whitaker,

Could you share the following information?

  1. Video Codec SDK version
  2. Driver version
  3. Clip of the issue (send to video-sdk-feedback@nvidia.com)

Thanks,
Ryan Park

Clip sent to video-sdk-feedback@nvidia.com.

Video Codec SDK version is 8.1.24. Driver version is 396.44.

Thanks,
Martin

Any update on this? The bug is still present in Video Codec SDK version 9.0.18 and driver 430.40.