gst/multifile/gstmultifilesrc.*: When subsequent files are read, if the file doesn...
authorDavid Schleef <ds@schleef.org>
Mon, 17 Dec 2007 21:12:28 +0000 (21:12 +0000)
committerDavid Schleef <ds@schleef.org>
Mon, 17 Dec 2007 21:12:28 +0000 (21:12 +0000)
Original commit message from CVS:
* gst/multifile/gstmultifilesrc.c:
* gst/multifile/gstmultifilesrc.h:
When subsequent files are read, if the file doesn't exist, send
an EOS instead of causing an error.

common
gst/multifile/gstmultifilesrc.c
gst/multifile/gstmultifilesrc.h

diff --git a/common b/common
index a00d4c1..208ef72 160000 (submodule)
--- a/common
+++ b/common
@@ -1 +1 @@
-Subproject commit a00d4c1966aab517c2694c61d580489ebcbce448
+Subproject commit 208ef72f86e944e6ba6941c68e57ffcea8d2a8f4
index f347257..35ded48 100644 (file)
@@ -155,6 +155,7 @@ gst_multi_file_src_init (GstMultiFileSrc * multifilesrc,
 
   multifilesrc->index = DEFAULT_INDEX;
   multifilesrc->filename = g_strdup (DEFAULT_LOCATION);
+  multifilesrc->successful_read = FALSE;
 }
 
 static void
@@ -279,7 +280,13 @@ gst_multi_file_src_create (GstPushSrc * src, GstBuffer ** buffer)
 
   file = fopen (filename, "rb");
   if (!file) {
-    goto handle_error;
+    if (multifilesrc->successful_read) {
+      /* If we've read at least one buffer successfully, not finding the
+       * next file is EOS. */
+      return GST_FLOW_UNEXPECTED;
+    } else {
+      goto handle_error;
+    }
   }
 
   fseek (file, 0, SEEK_END);
@@ -293,6 +300,7 @@ gst_multi_file_src_create (GstPushSrc * src, GstBuffer ** buffer)
     goto handle_error;
   }
 
+  multifilesrc->successful_read = TRUE;
   multifilesrc->index++;
 
   GST_BUFFER_SIZE (buf) = size;
index 7a08046..686ae4f 100644 (file)
@@ -51,6 +51,7 @@ struct _GstMultiFileSrc
   int offset;
 
   GstCaps *caps;
+  gboolean successful_read;
 };
 
 struct _GstMultiFileSrcClass