v4l2: videodec: Don't wait for src_ch if active

If the capture pool is already active, like when handling gaps at the
start of a stream, do not setup the decoder to wait for src_ch event.
Otherwise the decoder will endup waiting for that at the wrong moment
and exit the decoding thread unexpectedly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4590>
This commit is contained in:
Nicolas Dufresne 2023-06-26 17:10:33 -04:00
parent c293ebc039
commit bc294bd89d

View file

@ -974,7 +974,8 @@ gst_v4l2_video_dec_handle_frame (GstVideoDecoder * decoder,
gst_buffer_unref (codec_data); gst_buffer_unref (codec_data);
/* Only wait for source change if the formats supports it */ /* Only wait for source change if the formats supports it */
if (self->v4l2output->fmtdesc->flags & V4L2_FMT_FLAG_DYN_RESOLUTION) { if (!GST_V4L2_IS_ACTIVE (self->v4l2capture) &&
self->v4l2output->fmtdesc->flags & V4L2_FMT_FLAG_DYN_RESOLUTION) {
gst_v4l2_object_unlock_stop (self->v4l2capture); gst_v4l2_object_unlock_stop (self->v4l2capture);
self->wait_for_source_change = TRUE; self->wait_for_source_change = TRUE;
} }