From: Michael Niedermayer Date: Tue, 26 Sep 2006 17:09:03 +0000 (+0000) Subject: support forward seeking in non seekable streams X-Git-Tag: v0.5~11764 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=398f5d3f1db27393d1b03ad7dd26cb1d82b9448b;p=coroid%2Fffmpeg_saccubus.git support forward seeking in non seekable streams Originally committed as revision 6340 to svn://svn.ffmpeg.org/ffmpeg/trunk --- diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index ef72c195c..dced0d2df 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -22,6 +22,8 @@ #define IO_BUFFER_SIZE 32768 +static void fill_buffer(ByteIOContext *s); + int init_put_byte(ByteIOContext *s, unsigned char *buffer, int buffer_size, @@ -122,6 +124,11 @@ offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence) offset1 >= 0 && offset1 < (s->buf_end - s->buffer)) { /* can do the seek inside the buffer */ s->buf_ptr = s->buffer + offset1; + } else if(s->is_streamed && !s->write_flag && + offset1 >= 0 && offset1 < (s->buf_end - s->buffer) + (1<<16)){ + while(s->pos < offset && !s->eof_reached) + fill_buffer(s); + s->buf_ptr = s->buf_end + offset - s->pos; } else { #ifdef CONFIG_MUXERS if (s->write_flag) {