From: Sebastian Dröge Date: Tue, 8 Dec 2009 14:24:43 +0000 (+0100) Subject: basesink: Allow update NEWSEGMENT events after EOS X-Git-Tag: RELEASE-0.10.26~110 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=25fc43487bf9cc6de809c74101a3b0466532484d;p=platform%2Fupstream%2Fgstreamer.git basesink: Allow update NEWSEGMENT events after EOS This allows demuxers to update the segment stop of an already finished stream. This might be needed if some stream goes to EOS before the duration of the longest stream is known to properly set the segment stop of all streams to the same value in the end. --- diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c index 6ba622d..f9fcb56 100644 --- a/libs/gst/base/gstbasesink.c +++ b/libs/gst/base/gstbasesink.c @@ -3140,6 +3140,7 @@ gst_base_sink_event (GstPad * pad, GstEvent * event) case GST_EVENT_NEWSEGMENT: { GstFlowReturn ret; + gboolean update; GST_DEBUG_OBJECT (basesink, "newsegment %p", event); @@ -3147,7 +3148,10 @@ gst_base_sink_event (GstPad * pad, GstEvent * event) if (G_UNLIKELY (basesink->flushing)) goto flushing; - if (G_UNLIKELY (basesink->priv->received_eos)) { + gst_event_parse_new_segment_full (event, &update, NULL, NULL, NULL, NULL, + NULL, NULL); + + if (G_UNLIKELY (basesink->priv->received_eos && !update)) { /* we can't accept anything when we are EOS */ result = FALSE; gst_event_unref (event);