From 0cc7195ba1b662c17f4ba706847f3b00e717d875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Mon, 13 Oct 2003 14:52:53 +0000 Subject: Don't find out id3 info in mp3 files saved by RIP from non-seekable inputs. CVS patchset: 5507 CVS date: 2003/10/13 14:52:53 --- src/demuxers/demux_mpgaudio.c | 6 +++--- src/input/input_plugin.h | 12 +++++++++++- src/xine-engine/input_rip.c | 10 ++++++++-- 3 files changed, 22 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/demuxers/demux_mpgaudio.c b/src/demuxers/demux_mpgaudio.c index 3107fec66..a628a9e6c 100644 --- a/src/demuxers/demux_mpgaudio.c +++ b/src/demuxers/demux_mpgaudio.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: demux_mpgaudio.c,v 1.116 2003/10/11 15:20:22 tmattern Exp $ + * $Id: demux_mpgaudio.c,v 1.117 2003/10/13 14:52:53 valtri Exp $ * * demultiplexer for mpeg audio (i.e. mp3) streams * @@ -840,8 +840,8 @@ static void demux_mpgaudio_send_headers (demux_plugin_t *this_gen) { this->stream->stream_info[XINE_STREAM_INFO_HAS_VIDEO] = 0; this->stream->stream_info[XINE_STREAM_INFO_HAS_AUDIO] = 1; - - if ((this->input->get_capabilities(this->input) & INPUT_CAP_SEEKABLE) != 0) { + /* read id3 info only from inputs with seeking and without "live" flag */ + if ((this->input->get_capabilities(this->input) & INPUT_CAP_SEEKABLE & INPUT_CAP_SLOW_SEEK) == INPUT_CAP_SEEKABLE) { off_t pos; /* check ID3 v1 at the end of the stream */ diff --git a/src/input/input_plugin.h b/src/input/input_plugin.h index 4377ae51a..6a8cf099d 100644 --- a/src/input/input_plugin.h +++ b/src/input/input_plugin.h @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: input_plugin.h,v 1.51 2003/08/21 00:37:29 miguelfreitas Exp $ + * $Id: input_plugin.h,v 1.52 2003/10/13 14:52:53 valtri Exp $ */ #ifndef HAVE_INPUT_PLUGIN_H @@ -227,6 +227,16 @@ struct input_plugin_s { #define INPUT_CAP_BLOCK 0x00000002 +/* + * INPUT_CAP_SLOW_SEEK: + * it's set when seeking to end is impossible or problematic + * because of low bandwidth, + * used for non-seekable streams with seeking emulated + * by the RIP input plugin + */ + +#define INPUT_CAP_SLOW_SEEK 0x00000004 + /* * INPUT_CAP_AUDIOLANG: * INPUT_CAP_SPULANG: diff --git a/src/xine-engine/input_rip.c b/src/xine-engine/input_rip.c index 3483268d5..e8535bea7 100644 --- a/src/xine-engine/input_rip.c +++ b/src/xine-engine/input_rip.c @@ -29,7 +29,7 @@ * - it's possible speeder saving streams in the xine without playing: * xine stream_mrl#save:file.raw\;noaudio\;novideo * - * $Id: input_rip.c,v 1.6 2003/10/05 10:39:25 valtri Exp $ + * $Id: input_rip.c,v 1.7 2003/10/13 14:52:54 valtri Exp $ */ #ifdef HAVE_CONFIG_H @@ -173,7 +173,13 @@ static uint32_t rip_plugin_get_capabilities(input_plugin_t *this_gen) { uint32_t caps; caps = this->main_input_plugin->get_capabilities(this->main_input_plugin); - if (this->regular) caps |= INPUT_CAP_SEEKABLE; + + if (this->regular && (caps & INPUT_CAP_SEEKABLE) == 0) { + /* if we have non-seekable input (and we emulate it), + * don't seek to end of stream when it isn't necessary */ + caps |= INPUT_CAP_SLOW_SEEK; + caps |= INPUT_CAP_SEEKABLE; + } if (this->preview) caps |= INPUT_CAP_PREVIEW; return caps; } -- cgit v1.2.3