From 7b12afa4cbc89a24a7b1b253a89a02fc2b2bbd9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 24 Oct 2012 09:57:23 +0200 Subject: [PATCH] streamsynchronizer: Create a GAP event with a sensible timestamp --- gst/playback/gststreamsynchronizer.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gst/playback/gststreamsynchronizer.c b/gst/playback/gststreamsynchronizer.c index 7ece3d6e89..3692f6d78c 100644 --- a/gst/playback/gststreamsynchronizer.c +++ b/gst/playback/gststreamsynchronizer.c @@ -402,6 +402,7 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent, gboolean seen_data; GSList *pads = NULL; GstPad *srcpad; + GstClockTime timestamp; GST_STREAM_SYNCHRONIZER_LOCK (self); stream = gst_pad_get_element_private (pad); @@ -417,6 +418,11 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent, seen_data = stream->seen_data; srcpad = gst_object_ref (stream->srcpad); + if (stream->segment.rate < 0.0 || stream->segment.stop == -1) + timestamp = stream->segment.start; + else + timestamp = stream->segment.stop; + for (l = self->streams; l; l = l->next) { GstStream *ostream = l->data; @@ -456,10 +462,11 @@ gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent, if (!seen_data) { GstEvent *gap_event; - gap_event = gst_event_new_gap (0, 0); + gap_event = gst_event_new_gap (timestamp, GST_CLOCK_TIME_NONE); ret = gst_pad_push_event (srcpad, gap_event); + } else { + ret = TRUE; } - ret = TRUE; } gst_object_unref (srcpad); gst_event_unref (event);