Commit b0380bb4 authored by Edward Hervey's avatar Edward Hervey Committed by Edward Hervey

avvidec: Report the latency once we're fully configured

Several decoders will only be able to report a real latency (has_b_frames)
once they're actually initialized (i.e. when they return their first frame).

Doing it earlier (in set_format) doesn't guarantee that the AVCodecContext
has_b_frames has been properly initialized.

https://bugzilla.gnome.org/show_bug.cgi?id=766362
parent 7004c40f
......@@ -1011,6 +1011,7 @@ gst_ffmpegviddec_negotiate (GstFFMpegVidDec * ffmpegdec,
GstVideoInfo *in_info, *out_info;
GstVideoCodecState *output_state;
gint fps_n, fps_d;
GstClockTime latency;
if (!update_video_context (ffmpegdec, context, picture))
return TRUE;
......@@ -1093,6 +1094,13 @@ gst_ffmpegviddec_negotiate (GstFFMpegVidDec * ffmpegdec,
if (!gst_video_decoder_negotiate (GST_VIDEO_DECODER (ffmpegdec)))
goto negotiate_failed;
/* The decoder is configured, we now know the true latency */
latency =
gst_util_uint64_scale_ceil (ffmpegdec->context->has_b_frames * GST_SECOND,
fps_d, fps_n);
gst_video_decoder_set_latency (GST_VIDEO_DECODER (ffmpegdec), latency,
latency);
return TRUE;
/* ERRORS */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment