summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--src/demuxers/demux_mpgaudio.c6
-rw-r--r--src/input/input_plugin.h12
-rw-r--r--src/xine-engine/input_rip.c10
4 files changed, 23 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 481549832..5d2f10367 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,7 @@ xine-lib (1-rc2)
(uses less cpu but it's not 100% accurate)
* encoding of URL with multibyte characters in MMS
* fix ssa subtitle handling
+ * don't find out id3 info in mp3 files saved from non-seekable inputs
xine-lib (1-rc1)
* fix incorrect colours when blending frame with a big-endian RGB pixel format
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
@@ -228,6 +228,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:
* input plugin knows something about audio/spu languages,
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;
}