H264 Pic_Timing SEI message


When using NvEncode to generate H264 files, I am having an issue with the generated Pic_Timing SEI messsages. Specifically the dpb_output_delay field.

The Pic_Timing SEI message for all non-I-Frames and the very first I-Frame has a dpb_output_delay value of 2.

The Pic_Timing SEI message for all I-Frames (besides the very first one) have a dpb_output_delay value of 16.

I believe these values are incorrect and should be 2 instead.

This is causing incorrect timestamps to be generated for these I-Frames when being muxed into a transport stream.

This behavior can be easily reproduced with the Video Codec SDK sample application AppEncD3D11.
I used the following command line options:
Command Line: -i “LocalPathToBRGAFile” -o “LocalPathToOutputH264File” -s 1280x720 -gpu 0 -rc cbr_hq -fps 50 -gop 25 -bf 0 -bitrate 1000000 -maxbitrate 1000000 -vbvbufsize 500000 -vbvinit 450000 -preset default -profile main

I also had to make 2 small code changes in the file AppEncD3D11.cpp.

  1. I enabled the writing of the picture timing SEI message by setting the NV_ENC_CONFIG_H264.outputPictureTimingSEI parameter to 1.
  2. I increased the number of frames being encoded so that multiple I-frames would be written. The default behavior is to encode a single frame. I updated the code to loop and encode 100 frames.

I am using Windows 10 Pro with a Quadro K1200.
The NVIDIA driver release is R418 U2 (419.17) WHQL.
The driver version reported by device manager is
And I am using Video SDK 9.0.20.

Is there a way to configure the dpb_output_delay field within the PIC_TIMING SEI message?

Or is this a bug?