mpegtsdemux: Set DISCONT on buffers
authorDavid Schleef <ds@schleef.org>
Thu, 17 Sep 2009 23:54:14 +0000 (16:54 -0700)
committerDavid Schleef <ds@schleef.org>
Fri, 18 Sep 2009 00:03:40 +0000 (17:03 -0700)
gst/mpegdemux/gstmpegtsdemux.c
gst/mpegdemux/gstmpegtsdemux.h

index 864ffa9e53317b50ca9ed551cd812f83e6e560fe..884b328486f345bb71a350259e2cfb3ddc2df7d3 100644 (file)
@@ -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;
+    }
   }
 
 
index 693ece1e19fbddf4a9f878aeeafdb718fe18dfd7..c3732ba1f0d49b33794de49deda9fe0c7f092520 100644 (file)
@@ -170,6 +170,7 @@ struct _GstMpegTSStream {
   GstClockTime      last_time;
   /* pid of PMT that this stream belongs to */
   guint16           PMT_pid;
+  gboolean          discont;
 };
 
 struct _GstMpegTSDemux {