summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hervey <edward@collabora.com>2013-07-29 08:20:10 +0200
committerEdward Hervey <edward@collabora.com>2013-07-29 09:42:11 +0200
commita76c658e8d5fa1b533b0d54a947db50a29d9b369 (patch)
tree6785f2127c9699379f26aa346553a919cb95b925
parentca77865bce4710ad558f607e17b350e6273b7d6c (diff)
downloadgstreamer-plugins-bad-a76c658e8d5fa1b533b0d54a947db50a29d9b369.tar.gz
tsdemux: Flush out pending data on EOS
Ensures downstream elements (like decoders) really get all the data
-rw-r--r--gst/mpegtsdemux/tsdemux.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
index 21b2d3f21..54118117b 100644
--- a/gst/mpegtsdemux/tsdemux.c
+++ b/gst/mpegtsdemux/tsdemux.c
@@ -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);
}