From: Miguel F. <mig...@us...> - 2003-04-17 19:02:00
|
Update of /cvsroot/xine/xine-lib/src/xine-engine In directory sc8-pr-cvs1:/tmp/cvs-serv9249/src/xine-engine Modified Files: demux.c load_plugins.c xine.c xine_internal.h Log Message: cleanup patch by Marco Z|hlke <M.Z...@fr...> Index: demux.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/demux.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- demux.c 13 Apr 2003 16:28:48 -0000 1.26 +++ demux.c 17 Apr 2003 19:01:23 -0000 1.27 @@ -149,7 +149,7 @@ void xine_demux_control_start( xine_stream_t *stream ) { buf_element_t *buf; - + buf = stream->video_fifo->buffer_pool_alloc (stream->video_fifo); buf->type = BUF_CONTROL_START; stream->video_fifo->put (stream->video_fifo, buf); @@ -329,6 +329,50 @@ } pthread_mutex_unlock (&stream->first_frame_lock); + return 0; +} + +int xine_demux_read_header( input_plugin_t *input, unsigned char *buffer, off_t size){ + int read_size; + unsigned char *buf; + + if (!input || !size || size > MAX_PREVIEW_SIZE) + return 0; + + if (input->get_capabilities(input) & INPUT_CAP_SEEKABLE) { + input->seek(input, 0, SEEK_SET); + read_size = input->read(input, buffer, size); + if (read_size != size) + return 0; + input->seek(input, 0, SEEK_SET); + } else if (input->get_capabilities(input) & INPUT_CAP_PREVIEW) { + buf = xine_xmalloc(MAX_PREVIEW_SIZE); + read_size = input->get_optional_data(input, buf, INPUT_OPTIONAL_DATA_PREVIEW); + memcpy(buffer, buf, size); + free(buf); + } else { + return 0; + } + return read_size; +} + +int xine_demux_check_extension (char *mrl, char *extensions){ + char *last_dot, *e, *ext_copy, *ext_work; + + ext_copy = strdup(extensions); + ext_work = ext_copy; + + last_dot = strrchr (mrl, '.'); + if (last_dot) { + last_dot++; + while ( ( e = xine_strsep(&ext_work, " ")) != NULL ) { + if (strcasecmp (last_dot, e) == 0) { + free(ext_copy); + return 1; + } + } + } + free(ext_copy); return 0; } Index: load_plugins.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/load_plugins.c,v retrieving revision 1.146 retrieving revision 1.147 diff -u -r1.146 -r1.147 --- load_plugins.c 13 Apr 2003 16:08:26 -0000 1.146 +++ load_plugins.c 17 Apr 2003 19:01:23 -0000 1.147 @@ -1157,6 +1157,9 @@ i++; } + if( !last_demux ) + return NULL; + stream->content_detection_method = METHOD_BY_CONTENT; if ((plugin = ((demux_class_t *)last_demux->plugin_class)->open_plugin(last_demux->plugin_class, stream, input))) { Index: xine.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/xine.c,v retrieving revision 1.242 retrieving revision 1.243 diff -u -r1.242 -r1.243 --- xine.c 16 Apr 2003 22:38:44 -0000 1.242 +++ xine.c 17 Apr 2003 19:01:24 -0000 1.243 @@ -531,7 +531,7 @@ if (!stream->input_plugin) { xine_log (stream->xine, XINE_LOG_MSG, - _("xine: cannot find input plugin for this MRL\n")); + _("xine: cannot find input plugin for MRL [%s]\n"),mrl); stream->err = XINE_ERROR_NO_INPUT_PLUGIN; return 0; } else { @@ -545,6 +545,8 @@ } if (!stream->input_plugin->open(stream->input_plugin)) { + xine_log (stream->xine, XINE_LOG_MSG, + _("xine: input plugin cannot open MRL [%s]\n"),mrl); stream->input_plugin->dispose(stream->input_plugin); stream->input_plugin = NULL; stream->err = XINE_ERROR_INPUT_FAILED; Index: xine_internal.h =================================================================== RCS file: /cvsroot/xine/xine-lib/src/xine-engine/xine_internal.h,v retrieving revision 1.134 retrieving revision 1.135 diff -u -r1.134 -r1.135 --- xine_internal.h 13 Apr 2003 16:28:48 -0000 1.134 +++ xine_internal.h 17 Apr 2003 19:01:25 -0000 1.135 @@ -306,6 +306,8 @@ void xine_demux_control_end (xine_stream_t *stream, uint32_t flags); int xine_demux_start_thread (xine_stream_t *stream); int xine_demux_stop_thread (xine_stream_t *stream); +int xine_demux_read_header (input_plugin_t *input, unsigned char *buffer, off_t size); +int xine_demux_check_extension (char *mrl, char *extensions); off_t xine_read_abort (xine_stream_t *stream, int fd, char *buf, off_t todo); |