summaryrefslogtreecommitdiff
path: root/gst/mpegtsdemux/mpegtsbase.c
diff options
context:
space:
mode:
authorYouness Alaoui <youness.alaoui@collabora.co.uk>2011-08-26 22:44:08 +0000
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2011-08-30 16:17:47 +0200
commit59c61209cf87f547386f90422f31f66605ca67b1 (patch)
tree20d6f7e1f5daaa46f8fe8320662cc123c7d9773a /gst/mpegtsdemux/mpegtsbase.c
parentcb30cd242ca5084df9eaee2154bb80a740c4a7ed (diff)
downloadgstreamer-plugins-bad-59c61209cf87f547386f90422f31f66605ca67b1.tar.gz
tsdemux: Need to flush all streams when we receive a flush-start
Diffstat (limited to 'gst/mpegtsdemux/mpegtsbase.c')
-rw-r--r--gst/mpegtsdemux/mpegtsbase.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index e76677855..5542abf02 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -1154,6 +1154,18 @@ gst_mpegts_base_handle_eos (MpegTSBase * base)
return TRUE;
}
+static inline void
+mpegts_base_flush (MpegTSBase * base)
+{
+ MpegTSBaseClass *klass = GST_MPEGTS_BASE_GET_CLASS (base);
+
+ /* Call implementation */
+ if (G_UNLIKELY (klass->flush == NULL))
+ GST_WARNING_OBJECT (base, "Class doesn't have a 'flush' implementation !");
+ else
+ klass->flush (base);
+}
+
static gboolean
mpegts_base_sink_event (GstPad * pad, GstEvent * event)
{
@@ -1191,6 +1203,7 @@ mpegts_base_sink_event (GstPad * pad, GstEvent * event)
break;
case GST_EVENT_FLUSH_START:
mpegts_packetizer_flush (base->packetizer);
+ mpegts_base_flush (base);
res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event);
gst_event_unref (event);
break;