gst/mxf/mxfdemux.c: In push mode skip the run in again if we get buffers with an...
authorSebastian Dröge <slomo@circular-chaos.org>
Wed, 17 Dec 2008 12:06:43 +0000 (12:06 +0000)
committerSebastian Dröge <slomo@circular-chaos.org>
Wed, 17 Dec 2008 12:06:43 +0000 (12:06 +0000)
Original commit message from CVS:
* gst/mxf/mxfdemux.c: (gst_mxf_demux_chain):
In push mode skip the run in again if we get buffers with
an offset before the run in. This can happen on seeks for example.

ChangeLog
gst/mxf/mxfdemux.c

index fe71088..b5d0a3d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-12-17  Sebastian Dröge  <sebastian.droege@collabora.co.uk>
+
+       * gst/mxf/mxfdemux.c: (gst_mxf_demux_chain):
+       In push mode skip the run in again if we get buffers with
+       an offset before the run in. This can happen on seeks for example.
+
 2008-12-16  Stefan Kost  <ensonic@users.sf.net>
 
        * ext/celt/gstceltenc.c:
index 4b1a3ba..17ec3a1 100644 (file)
@@ -554,11 +554,11 @@ gst_mxf_demux_choose_package (GstMXFDemux * demux)
 
   for (i = 0; i < demux->preface->content_storage->n_packages; i++) {
     if (demux->preface->content_storage->packages[i] &&
-        MXF_IS_METADATA_MATERIAL_PACKAGE (demux->preface->
-            content_storage->packages[i])) {
+        MXF_IS_METADATA_MATERIAL_PACKAGE (demux->preface->content_storage->
+            packages[i])) {
       ret =
-          MXF_METADATA_GENERIC_PACKAGE (demux->preface->
-          content_storage->packages[i]);
+          MXF_METADATA_GENERIC_PACKAGE (demux->preface->content_storage->
+          packages[i]);
       break;
     }
   }
@@ -1666,6 +1666,11 @@ gst_mxf_demux_chain (GstPad * pad, GstBuffer * inbuf)
         }
         gst_adapter_flush (demux->adapter, 1);
       }
+    } else if (demux->offset < demux->run_in) {
+      gst_adapter_flush (demux->adapter,
+          MIN (gst_adapter_available (demux->adapter),
+              demux->run_in - demux->offset));
+      continue;
     }
 
     if (G_UNLIKELY (ret != GST_FLOW_OK))