From: Robin K. <kom...@us...> - 2002-11-03 21:03:12
|
Update of /cvsroot/xine/xine-lib/src/demuxers In directory usw-pr-cvs1:/tmp/cvs-serv22017/xine-lib/src/demuxers Modified Files: demux_eawve.c Log Message: Reject non-seekable sources in the content detection stage rather than in general. Index: demux_eawve.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/demuxers/demux_eawve.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- demux_eawve.c 3 Nov 2002 20:39:28 -0000 1.3 +++ demux_eawve.c 3 Nov 2002 21:03:09 -0000 1.4 @@ -137,13 +137,13 @@ int inHeader; uint32_t blockid, size; - if ((this->input->get_capabilities(this->input) & INPUT_CAP_SEEKABLE) == 0) { - /* FIXME: use preview data in that case */ - return 0; + if (this->input->get_current_pos(this->input) != 0) { + if ((this->input->get_capabilities(this->input) & INPUT_CAP_SEEKABLE) == 0) { + return 0; + } + this->input->seek(this->input, 0, SEEK_SET); } - this->input->seek(this->input, 0, SEEK_SET); - if (this->input->read(this->input, (void*)&blockid, 4) != 4) { return 0; } @@ -308,8 +308,8 @@ return this->status; } -static void demux_eawve_send_headers(demux_plugin_t *this_gen) { - +static void demux_eawve_send_headers(demux_plugin_t *this_gen) +{ demux_eawve_t *this = (demux_eawve_t *) this_gen; this->video_fifo = this->stream->video_fifo; @@ -374,8 +374,8 @@ return this->num_samples / 22050; } -static demux_plugin_t *open_plugin (demux_class_t *class_gen, xine_stream_t *stream, - input_plugin_t *input_gen) { +static demux_plugin_t* open_plugin (demux_class_t *class_gen, xine_stream_t *stream, input_plugin_t *input_gen) +{ input_plugin_t *input = (input_plugin_t *) input_gen; demux_eawve_t *this; @@ -398,12 +398,14 @@ case METHOD_BY_CONTENT: case METHOD_EXPLICIT: + if ((this->input->get_capabilities(this->input) & INPUT_CAP_SEEKABLE) == 0) { + return NULL; + } if (!process_header(this)) { free (this); return NULL; } - break; case METHOD_BY_EXTENSION: { @@ -426,9 +428,7 @@ free (this); return NULL; } - } - break; default: @@ -441,28 +441,33 @@ return &this->demux_plugin; } -static char *get_description (demux_class_t *this_gen) { +static char *get_description (demux_class_t *this_gen) +{ return "Electronics Arts WVE format demux plugin"; } -static char *get_identifier (demux_class_t *this_gen) { +static char *get_identifier (demux_class_t *this_gen) +{ return "EA WVE"; } -static char *get_extensions (demux_class_t *this_gen) { +static char *get_extensions (demux_class_t *this_gen) +{ return "wve"; } -static char *get_mimetypes (demux_class_t *this_gen) { +static char *get_mimetypes (demux_class_t *this_gen) +{ return NULL; } -static void class_dispose (demux_class_t *this) { +static void class_dispose (demux_class_t *this) +{ free (this); } -static void *init_plugin (xine_t *xine, void *data) { - +static void *init_plugin (xine_t *xine, void *data) +{ demux_eawve_class_t *this; this = xine_xmalloc (sizeof (demux_eawve_class_t)); |