diff --git a/sys/v4l2/gstv4l2sink.c b/sys/v4l2/gstv4l2sink.c index 1d457b5456..329594777c 100644 --- a/sys/v4l2/gstv4l2sink.c +++ b/sys/v4l2/gstv4l2sink.c @@ -603,8 +603,16 @@ gst_v4l2sink_show_frame (GstVideoSink * vsink, GstBuffer * buf) goto activate_failed; } + gst_buffer_ref (buf); +again: ret = gst_v4l2_buffer_pool_process (GST_V4L2_BUFFER_POOL_CAST (obj->pool), &buf); + if (ret == GST_FLOW_FLUSHING) { + ret = gst_base_sink_wait_preroll (GST_BASE_SINK (vsink)); + if (ret == GST_FLOW_OK) + goto again; + } + gst_buffer_unref (buf); return ret;