[gst-cvs] gst-plugins-good: avidemux: streaming mode; handle data chunks grouped in rec lists.

Mark Nauwelaerts mnauw at kemper.freedesktop.org
Wed Jun 17 03:33:54 PDT 2009


Module: gst-plugins-good
Branch: master
Commit: 08c901956616f66d1e776322c4762300d6612c18
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=08c901956616f66d1e776322c4762300d6612c18

Author: Mark Nauwelaerts <mark.nauwelaerts at collabora.co.uk>
Date:   Wed Jun 17 11:54:53 2009 +0200

avidemux: streaming mode; handle data chunks grouped in rec lists.

Fixes #567983.

---

 gst/avi/gstavidemux.c |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 670da5f..6ab073f 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -4029,6 +4029,25 @@ gst_avi_demux_stream_data (GstAviDemux * avi)
       GST_DEBUG ("Found index tag, stream done");
       avi->have_eos = TRUE;
       return GST_FLOW_UNEXPECTED;
+    } else if (tag == GST_RIFF_TAG_LIST) {
+      /* movi chunks might be grouped in rec list */
+      if (gst_adapter_available (avi->adapter) >= 12) {
+        GST_DEBUG ("Found LIST tag, skipping LIST header");
+        gst_adapter_flush (avi->adapter, 12);
+        continue;
+      }
+      return GST_FLOW_OK;
+    } else if (tag == GST_RIFF_TAG_JUNK) {
+      /* rec list might contain JUNK chunks */
+      GST_DEBUG ("Found JUNK tag");
+      if (gst_avi_demux_peek_chunk (avi, &tag, &size)) {
+        if ((size > 0) && (size != -1)) {
+          GST_DEBUG ("  skipping %d bytes for now", size);
+          gst_adapter_flush (avi->adapter, 8 + size);
+          continue;
+        }
+      }
+      return GST_FLOW_OK;
     } else {
       GST_DEBUG ("No more stream chunks, send EOS");
       avi->have_eos = TRUE;





More information about the Gstreamer-commits mailing list