tsdemux: Flush out pending data on EOS
authorEdward Hervey <edward@collabora.com>
Mon, 29 Jul 2013 06:20:10 +0000 (08:20 +0200)
committerEdward Hervey <edward@collabora.com>
Mon, 29 Jul 2013 07:42:11 +0000 (09:42 +0200)
Ensures downstream elements (like decoders) really get all the data

gst/mpegtsdemux/tsdemux.c

index 21b2d3f213c74cc5498ffde463ed659b21b89b27..54118117b6b2c009e81147bfc2f29501d166c148 100644 (file)
@@ -596,6 +596,11 @@ push_event (MpegTSBase * base, GstEvent * event)
   for (tmp = demux->program->stream_list; tmp; tmp = tmp->next) {
     TSDemuxStream *stream = (TSDemuxStream *) tmp->data;
     if (stream->pad) {
+      /* If we are pushing out EOS, flush out pending data first */
+      if (GST_EVENT_TYPE (event) == GST_EVENT_EOS && stream->active &&
+          gst_pad_is_active (stream->pad))
+        gst_ts_demux_push_pending_data (demux, stream);
+
       gst_event_ref (event);
       gst_pad_push_event (stream->pad, event);
     }