From fb21fc3af1a3736c29bf021176084a50c92dd76b Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Mon, 23 May 2016 15:11:53 +0200 Subject: [PATCH] videodecoder: Make sure the DISCONT flag is set on the outgoing buffer The base class was setting the DISCONT flag before checking whether the buffer would be in segment or not. Fix issues with DISCONT flags not being properly propagated downstream when decoders buffers were out of segment. https://bugzilla.gnome.org/show_bug.cgi?id=766800 --- gst-libs/gst/video/gstvideodecoder.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gst-libs/gst/video/gstvideodecoder.c b/gst-libs/gst/video/gstvideodecoder.c index 6e0d86f..957dea1d 100644 --- a/gst-libs/gst/video/gstvideodecoder.c +++ b/gst-libs/gst/video/gstvideodecoder.c @@ -3071,7 +3071,6 @@ gst_video_decoder_finish_frame (GstVideoDecoder * decoder, if (priv->discont) { GST_BUFFER_FLAG_SET (output_buffer, GST_BUFFER_FLAG_DISCONT); - priv->discont = FALSE; } if (decoder_class->transform_meta) { @@ -3189,6 +3188,13 @@ gst_video_decoder_clip_and_push_buf (GstVideoDecoder * decoder, GstBuffer * buf) goto done; } + /* Set DISCONT flag here ! */ + if (priv->discont) { + GST_DEBUG_OBJECT (decoder, "Setting discont on output buffer"); + GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT); + priv->discont = FALSE; + } + /* update rate estimate */ priv->bytes_out += gst_buffer_get_size (buf); if (GST_CLOCK_TIME_IS_VALID (duration)) { -- 2.7.4