From 2506c3567cc6e91a3775f49f235a97e44cfa7f14 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Thu, 17 Sep 2009 16:54:14 -0700 Subject: [PATCH] mpegtsdemux: Set DISCONT on buffers --- gst/mpegdemux/gstmpegtsdemux.c | 10 +++++++++- gst/mpegdemux/gstmpegtsdemux.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gst/mpegdemux/gstmpegtsdemux.c b/gst/mpegdemux/gstmpegtsdemux.c index 864ffa9e53..884b328486 100644 --- a/gst/mpegdemux/gstmpegtsdemux.c +++ b/gst/mpegdemux/gstmpegtsdemux.c @@ -1146,6 +1146,8 @@ gst_mpegts_demux_data_cb (GstPESFilter * filter, gboolean first, gst_element_add_pad (GST_ELEMENT_CAST (demux), srcpad); demux->need_no_more_pads = TRUE; + stream->discont = TRUE; + /* send new_segment */ gst_mpegts_demux_send_new_segment (demux, stream, pts); @@ -1155,6 +1157,10 @@ gst_mpegts_demux_data_cb (GstPESFilter * filter, gboolean first, GST_DEBUG_OBJECT (srcpad, "pushing buffer"); gst_buffer_set_caps (buffer, GST_PAD_CAPS (srcpad)); + if (stream->discont) { + GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT); + stream->discont = FALSE; + } ret = gst_pad_push (srcpad, buffer); ret = gst_mpegts_demux_combine_flows (demux, stream, ret); @@ -2578,8 +2584,10 @@ gst_mpegts_demux_flush (GstMpegTSDemux * demux, gboolean discard) for (i = 0; i < MPEGTS_MAX_PID + 1; i++) { GstMpegTSStream *stream = demux->streams[i]; - if (stream) + if (stream) { stream->last_time = 0; + stream->discont = TRUE; + } } diff --git a/gst/mpegdemux/gstmpegtsdemux.h b/gst/mpegdemux/gstmpegtsdemux.h index 693ece1e19..c3732ba1f0 100644 --- a/gst/mpegdemux/gstmpegtsdemux.h +++ b/gst/mpegdemux/gstmpegtsdemux.h @@ -170,6 +170,7 @@ struct _GstMpegTSStream { GstClockTime last_time; /* pid of PMT that this stream belongs to */ guint16 PMT_pid; + gboolean discont; }; struct _GstMpegTSDemux {