Commit 1d43f6d8 authored by Philipp Zabel's avatar Philipp Zabel Committed by Nicolas Dufresne

v4l2videodec: only set latency if the frame duration is valid

If the duration of the v4l2object is GST_CLOCK_TIME_NONE, because the
sink did not specify a framerate in the caps and the driver accepts the
framerate, the decoder element uses GST_CLOCK_TIME_NONE to calculate and
set the element latency.

While this is a bug of the capture driver, the decoder element should
not use the invalid duration to calculate a latency, but print a warning
instead.

https://bugzilla.gnome.org/show_bug.cgi?id=779466
parent b30dee98
......@@ -752,8 +752,14 @@ gst_v4l2_video_dec_decide_allocation (GstVideoDecoder * decoder,
ret = GST_VIDEO_DECODER_CLASS (parent_class)->decide_allocation (decoder,
query);
latency = self->v4l2capture->min_buffers * self->v4l2capture->duration;
gst_video_decoder_set_latency (decoder, latency, latency);
if (GST_CLOCK_TIME_IS_VALID (self->v4l2capture->duration)) {
GST_DEBUG_OBJECT (self, "Setting latency: %u * %llu",
self->v4l2capture->min_buffers, self->v4l2capture->duration);
latency = self->v4l2capture->min_buffers * self->v4l2capture->duration;
gst_video_decoder_set_latency (decoder, latency, latency);
} else {
GST_WARNING_OBJECT (self, "Duration invalid, not setting latency");
}
return ret;
}
......
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