mxfdemux: Only go into EOS and send segment-done after all tracks are finished
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 9 Feb 2009 15:09:22 +0000 (16:09 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Mon, 9 Feb 2009 15:40:44 +0000 (16:40 +0100)
gst/mxf/mxfdemux.c

index 5fff31d..732759e 100644 (file)
@@ -2675,8 +2675,22 @@ gst_mxf_demux_loop (GstPad * pad)
   if ((demux->segment.flags & GST_SEEK_FLAG_SEGMENT) &&
       (demux->segment.stop != -1) &&
       (demux->segment.last_stop >= demux->segment.stop)) {
-    ret = GST_FLOW_UNEXPECTED;
-    goto pause;
+    guint i;
+    gboolean eos = TRUE;
+
+    for (i = 0; i < demux->src->len; i++) {
+      GstMXFDemuxPad *p = g_ptr_array_index (demux->src, i);
+
+      if (!p->eos && p->last_stop < demux->segment.stop) {
+        eos = FALSE;
+        break;
+      }
+    }
+
+    if (eos) {
+      ret = GST_FLOW_UNEXPECTED;
+      goto pause;
+    }
   }
 
   gst_object_unref (demux);