From 570319822a949b1798e306e9ec4ba6930631b658 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 20 Jan 2010 11:27:23 +0100 Subject: [PATCH] avidemux: more DISCONT handling Add some debug in the DISCONT handling code. When we receive a DISCONT in push mode, mark all streams as DISCONT. --- gst/avi/gstavidemux.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c index 07ff278..1dc5b11 100644 --- a/gst/avi/gstavidemux.c +++ b/gst/avi/gstavidemux.c @@ -3815,6 +3815,7 @@ gst_avi_demux_handle_seek (GstAviDemux * avi, GstPad * pad, GstEvent * event) /* reset the last flow and mark discont, FLUSH is always DISCONT */ for (i = 0; i < avi->num_streams; i++) { + GST_DEBUG_OBJECT (avi, "marking DISCONT"); avi->stream[i].last_flow = GST_FLOW_OK; avi->stream[i].discont = TRUE; } @@ -4308,6 +4309,7 @@ gst_avi_demux_loop_data (GstAviDemux * avi) /* mark discont when pending */ if (stream->discont) { + GST_DEBUG_OBJECT (avi, "setting DISCONT flag"); GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT); stream->discont = FALSE; } @@ -4722,6 +4724,15 @@ gst_avi_demux_chain (GstPad * pad, GstBuffer * buf) { GstFlowReturn res; GstAviDemux *avi = GST_AVI_DEMUX (GST_PAD_PARENT (pad)); + gint i; + + if (GST_BUFFER_IS_DISCONT (buf)) { + GST_DEBUG_OBJECT (avi, "got DISCONT"); + gst_adapter_clear (avi->adapter); + /* mark all streams DISCONT */ + for (i = 0; i < avi->num_streams; i++) + avi->stream[i].discont = TRUE; + } GST_DEBUG ("Store %d bytes in adapter", GST_BUFFER_SIZE (buf)); gst_adapter_push (avi->adapter, buf); -- 2.7.4