From 9c7d7498bb2991d149fb8d936fc7e6ce1e881fd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 5 Jul 2012 13:18:47 +0200 Subject: [PATCH] gst: Implement segment-done event --- ext/musepack/gstmusepackdec.c | 2 ++ gst/aiff/aiffparse.c | 2 ++ gst/mpegdemux/gstmpegdemux.c | 5 +++++ gst/mxf/mxfdemux.c | 4 ++++ gst/rawparse/gstrawparse.c | 2 ++ 5 files changed, 15 insertions(+) diff --git a/ext/musepack/gstmusepackdec.c b/ext/musepack/gstmusepackdec.c index 10a0f0d8e4..4aeaf17c23 100644 --- a/ext/musepack/gstmusepackdec.c +++ b/ext/musepack/gstmusepackdec.c @@ -601,6 +601,8 @@ gst_musepackdec_loop (GstPad * sinkpad) gst_element_post_message (GST_ELEMENT (musepackdec), gst_message_new_segment_done (GST_OBJECT (musepackdec), GST_FORMAT_TIME, stop_time)); + gst_pad_push_event (musepackdec->srcpad, + gst_event_new_segment_done (GST_FORMAT_TIME, stop_time)); goto pause_task; } diff --git a/gst/aiff/aiffparse.c b/gst/aiff/aiffparse.c index d6edef2fb7..3ccf9d785d 100644 --- a/gst/aiff/aiffparse.c +++ b/gst/aiff/aiffparse.c @@ -1314,6 +1314,8 @@ pause: gst_element_post_message (GST_ELEMENT_CAST (aiff), gst_message_new_segment_done (GST_OBJECT_CAST (aiff), aiff->segment.format, stop)); + gst_pad_push_event (aiff->srcpad, + gst_evnet_new_segment_done (aiff->segment.format, stop)); } else { gst_pad_push_event (aiff->srcpad, gst_event_new_eos ()); } diff --git a/gst/mpegdemux/gstmpegdemux.c b/gst/mpegdemux/gstmpegdemux.c index cfea9a328b..de85bfc8f0 100644 --- a/gst/mpegdemux/gstmpegdemux.c +++ b/gst/mpegdemux/gstmpegdemux.c @@ -2838,12 +2838,17 @@ pause: gst_element_post_message (GST_ELEMENT_CAST (demux), gst_message_new_segment_done (GST_OBJECT_CAST (demux), GST_FORMAT_TIME, stop)); + gst_flups_demux_send_event (demux, + gst_event_new_segment_done (GST_FORMAT_TIME, stop)); } else { /* Reverse playback */ GST_LOG_OBJECT (demux, "Sending segment done, at beginning of " "segment"); gst_element_post_message (GST_ELEMENT_CAST (demux), gst_message_new_segment_done (GST_OBJECT_CAST (demux), GST_FORMAT_TIME, demux->src_segment.start)); + gst_flups_demux_send_event (demux, + gst_event_new_segment_done (GST_FORMAT_TIME, + demux->src_segment.start)); } } else { /* normal playback, send EOS to all linked pads */ diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c index f782bb393f..51910e82bb 100644 --- a/gst/mxf/mxfdemux.c +++ b/gst/mxf/mxfdemux.c @@ -2773,6 +2773,7 @@ pause: if (demux->segment.flags & GST_SEEK_FLAG_SEGMENT) { gint64 stop; GstMessage *m; + GstEvent *e; /* for segment playback we need to post when (in stream time) * we stopped, this is either stop (when set) or the duration. */ @@ -2784,6 +2785,9 @@ pause: GST_FORMAT_TIME, stop); gst_message_set_seqnum (m, demux->seqnum); gst_element_post_message (GST_ELEMENT_CAST (demux), m); + e = gst_event_new_segment_done (GST_FORMAT_TIME, stop); + gst_event_set_seqnum (e, demux->seqnum); + gst_mxf_demux_push_src_event (demux, e); } else { GstEvent *e; diff --git a/gst/rawparse/gstrawparse.c b/gst/rawparse/gstrawparse.c index dcff378f3a..2e3765cbb2 100644 --- a/gst/rawparse/gstrawparse.c +++ b/gst/rawparse/gstrawparse.c @@ -436,6 +436,8 @@ pause: gst_element_post_message (GST_ELEMENT_CAST (rp), gst_message_new_segment_done (GST_OBJECT_CAST (rp), rp->segment.format, stop)); + gst_pad_push_event (rp->srcpad, + gst_event_new_segment_done (rp->segment.format, stop)); } else { GST_LOG_OBJECT (rp, "Sending EOS, at end of stream"); gst_pad_push_event (rp->srcpad, gst_event_new_eos ());