From 6d6ebbbb3693152b9d84a42ef82754fb43e337fe Mon Sep 17 00:00:00 2001 From: Nicolas Dufresne Date: Thu, 19 May 2022 16:33:47 -0400 Subject: [PATCH] v4l2videodec: Fix missing handling of resolution-change The pool process function may poll and get the resolution-change event whenever it is not possible to share our buffers. This typically happen when downstream does not support GstVideoMeta. Not handling this would cause the decoder thread to exit silently and the pipeline to stall. Part-of: --- subprojects/gst-plugins-good/sys/v4l2/gstv4l2videodec.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/subprojects/gst-plugins-good/sys/v4l2/gstv4l2videodec.c b/subprojects/gst-plugins-good/sys/v4l2/gstv4l2videodec.c index 52e641e..b586174 100644 --- a/subprojects/gst-plugins-good/sys/v4l2/gstv4l2videodec.c +++ b/subprojects/gst-plugins-good/sys/v4l2/gstv4l2videodec.c @@ -699,6 +699,12 @@ gst_v4l2_video_dec_loop (GstVideoDecoder * decoder) GST_LOG_OBJECT (decoder, "Process output buffer"); ret = gst_v4l2_buffer_pool_process (v4l2_pool, &buffer, NULL); + + if (ret == GST_V4L2_FLOW_RESOLUTION_CHANGE) { + GST_INFO_OBJECT (decoder, "Received resolution change"); + g_atomic_int_set (&self->capture_configuration_change, TRUE); + return; + } } while (ret == GST_V4L2_FLOW_CORRUPTED_BUFFER); if (ret != GST_FLOW_OK) -- 2.7.4