diff options
author | Youness Alaoui <youness.alaoui@collabora.co.uk> | 2011-08-26 22:44:08 +0000 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2011-08-30 16:17:47 +0200 |
commit | 59c61209cf87f547386f90422f31f66605ca67b1 (patch) | |
tree | 20d6f7e1f5daaa46f8fe8320662cc123c7d9773a /gst/mpegtsdemux/mpegtsbase.c | |
parent | cb30cd242ca5084df9eaee2154bb80a740c4a7ed (diff) | |
download | gstreamer-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.c | 13 |
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; |