v4l2videoenc: Set default latency if the frame duration is invalid

If the duration of the v4l2object is invalid, use default 25fps instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/996>
This commit is contained in:
Hou Qi 2021-05-25 16:19:20 +08:00 committed by GStreamer Marge Bot
parent 80567ca939
commit f4049fc292

View file

@ -886,8 +886,12 @@ gst_v4l2_video_enc_decide_allocation (GstVideoEncoder *
* more work to explicitly expressed the decoder / encoder latency. This
* value will then become max latency, and the reported driver latency would
* become the min latency. */
if (!GST_CLOCK_TIME_IS_VALID (self->v4l2capture->duration))
self->v4l2capture->duration = gst_util_uint64_scale_int (GST_SECOND, 1, 25);
latency = self->v4l2capture->min_buffers * self->v4l2capture->duration;
gst_video_encoder_set_latency (encoder, latency, latency);
GST_DEBUG_OBJECT (self, "Setting latency: %" GST_TIME_FORMAT,
GST_TIME_ARGS (latency));
done:
gst_video_codec_state_unref (state);