diff --git a/ChangeLog b/ChangeLog index 1c160ca5d2..8b40917a0d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-12-17 David Schleef + + * 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. + 2007-12-17 Andy Wingo * gst/switch/gstswitch.c (gst_selector_pad_chain): Return OK when diff --git a/common b/common index a00d4c1966..208ef72f86 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit a00d4c1966aab517c2694c61d580489ebcbce448 +Subproject commit 208ef72f86e944e6ba6941c68e57ffcea8d2a8f4 diff --git a/gst/multifile/gstmultifilesrc.c b/gst/multifile/gstmultifilesrc.c index f347257c31..35ded484b0 100644 --- a/gst/multifile/gstmultifilesrc.c +++ b/gst/multifile/gstmultifilesrc.c @@ -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; diff --git a/gst/multifile/gstmultifilesrc.h b/gst/multifile/gstmultifilesrc.h index 7a08046c56..686ae4f093 100644 --- a/gst/multifile/gstmultifilesrc.h +++ b/gst/multifile/gstmultifilesrc.h @@ -51,6 +51,7 @@ struct _GstMultiFileSrc int offset; GstCaps *caps; + gboolean successful_read; }; struct _GstMultiFileSrcClass