h264parse: fix timestamping of interlaced fields in output

Instead of relying on GstBaseParse default behaviour of computing the duration of a parsed buffer based on the framerate passed to gst_base_parse_set_framerate(), we instead compute the duration ourselves, as we have more information available.

In particular, this means we now output buffers with a duration that matches that of raw interlaced buffers when each field is output in a separate buffer.

This fixes DTS interpolation performed by GstBaseParse, as the previous behaviour of outputting each field with the duration of a full frame was messing up the base class calculations.

When not enough information is available, h264parse simply falls back to calculating the duration based on the framerate and hope for the best as was the case previously.

Edited by Tim-Philipp Müller

Merge request reports