gst/multifile/gstmultifilesrc.*: When subsequent files are read, if the file doesn't exist, send an EOS instead of ca...

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.
This commit is contained in:
David Schleef 2007-12-17 21:12:28 +00:00
parent badcd298cc
commit 9ad6e9c989
3 changed files with 11 additions and 2 deletions

2
common

@ -1 +1 @@
Subproject commit a00d4c1966aab517c2694c61d580489ebcbce448 Subproject commit 208ef72f86e944e6ba6941c68e57ffcea8d2a8f4

View file

@ -155,6 +155,7 @@ gst_multi_file_src_init (GstMultiFileSrc * multifilesrc,
multifilesrc->index = DEFAULT_INDEX; multifilesrc->index = DEFAULT_INDEX;
multifilesrc->filename = g_strdup (DEFAULT_LOCATION); multifilesrc->filename = g_strdup (DEFAULT_LOCATION);
multifilesrc->successful_read = FALSE;
} }
static void static void
@ -279,7 +280,13 @@ gst_multi_file_src_create (GstPushSrc * src, GstBuffer ** buffer)
file = fopen (filename, "rb"); file = fopen (filename, "rb");
if (!file) { 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); fseek (file, 0, SEEK_END);
@ -293,6 +300,7 @@ gst_multi_file_src_create (GstPushSrc * src, GstBuffer ** buffer)
goto handle_error; goto handle_error;
} }
multifilesrc->successful_read = TRUE;
multifilesrc->index++; multifilesrc->index++;
GST_BUFFER_SIZE (buf) = size; GST_BUFFER_SIZE (buf) = size;

View file

@ -51,6 +51,7 @@ struct _GstMultiFileSrc
int offset; int offset;
GstCaps *caps; GstCaps *caps;
gboolean successful_read;
}; };
struct _GstMultiFileSrcClass struct _GstMultiFileSrcClass