From dacdc7404320e5ceb75f2bd0e18792a84e772593 Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Tue, 10 Mar 2020 21:07:12 +1100 Subject: [PATCH] imagefreeze: handle reconfigure events on the srcpad --- gst/imagefreeze/gstimagefreeze.c | 10 +++++----- gst/imagefreeze/gstimagefreeze.h | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/gst/imagefreeze/gstimagefreeze.c b/gst/imagefreeze/gstimagefreeze.c index 20ca303..ace0a11 100644 --- a/gst/imagefreeze/gstimagefreeze.c +++ b/gst/imagefreeze/gstimagefreeze.c @@ -186,7 +186,6 @@ gst_image_freeze_reset (GstImageFreeze * self) gst_buffer_replace (&self->buffer, NULL); gst_caps_replace (&self->buffer_caps, NULL); gst_caps_replace (&self->current_caps, NULL); - self->buffer_caps_updated = FALSE; self->num_buffers_left = self->num_buffers; gst_segment_init (&self->segment, GST_FORMAT_TIME); @@ -790,8 +789,9 @@ gst_image_freeze_sink_chain (GstPad * pad, GstObject * parent, } gst_buffer_replace (&self->buffer, buffer); - self->buffer_caps_updated = !self->buffer_caps - || !gst_caps_is_equal (self->buffer_caps, self->current_caps); + if (!self->buffer_caps + || !gst_caps_is_equal (self->buffer_caps, self->current_caps)) + gst_pad_mark_reconfigure (self->srcpad); gst_caps_replace (&self->buffer_caps, self->current_caps); gst_buffer_unref (buffer); @@ -822,12 +822,12 @@ gst_image_freeze_src_loop (GstPad * pad) goto pause_task; } - if (self->buffer_caps_updated) { + if (gst_pad_check_reconfigure (self->srcpad)) { GstCaps *buffer_caps = gst_caps_ref (self->buffer_caps); - self->buffer_caps_updated = FALSE; g_mutex_unlock (&self->lock); if (!gst_image_freeze_sink_setcaps (self, buffer_caps)) { gst_caps_unref (buffer_caps); + gst_pad_mark_reconfigure (self->srcpad); flow_ret = GST_FLOW_NOT_NEGOTIATED; goto pause_task; } diff --git a/gst/imagefreeze/gstimagefreeze.h b/gst/imagefreeze/gstimagefreeze.h index 779c676..67bf699 100644 --- a/gst/imagefreeze/gstimagefreeze.h +++ b/gst/imagefreeze/gstimagefreeze.h @@ -50,7 +50,6 @@ struct _GstImageFreeze GMutex lock; GstBuffer *buffer; GstCaps *buffer_caps, *current_caps; - gboolean buffer_caps_updated; gboolean negotiated_framerate; gint fps_n, fps_d; -- 2.7.4