summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2010-01-20 11:27:23 +0100
committerWim Taymans <wim.taymans@collabora.co.uk>2010-01-20 11:47:04 +0100
commit570319822a949b1798e306e9ec4ba6930631b658 (patch)
treeff887e2cf6cdf6aa25f6fd1deaf43ce3d58b58ec
parent40e3b0189a3195e655d0a481f911df5c3787d75c (diff)
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.
-rw-r--r--gst/avi/gstavidemux.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 07ff27811..1dc5b11ca 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);