[FFmpeg-devel] [RFC] seek when streamed

Michael Niedermayer michaelni
Fri Oct 12 21:53:03 CEST 2007


On Sun, Oct 07, 2007 at 10:59:33PM +0200, Baptiste Coudurier wrote:
> Hi
> 
> I noticed a weird behaviour (bug ?) when seeking is requested when file
> is streamed:
> 
> in url_fseek:
>     } 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;
> 
> if eof_is_reached then s->pos might be < offset, therefore buf_ptr might
> be > buf_end. Next get_buffer will memcpy negative size:
> 
> int get_buffer(ByteIOContext *s, unsigned char *buf, int size)
> {
>     int len, size1;
> 
>     size1 = size;
>     while (size > 0) {
>         len = s->buf_end - s->buf_ptr;
>         if (len > size)
>             len = size;
>         if (len == 0) {
> 	   [...]
> 	} else {
> 	    memcpy(buf, s->buf_ptr, len);
>             buf += len;
> 	[...]
> 
> Note that url_fseek clear eof_reached.
> 
> That will only happen when reading a streamed file.
> Im submitting the attached patch, but Im not sure what the correct
> behaviour should be. Any suggestion welcome.

i think returning some error for attempts to seek after the end of the
file seems appropriate

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I am the wisest man alive, for I know one thing, and that is that I know
nothing. -- Socrates
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20071012/75c3f746/attachment.pgp>



More information about the ffmpeg-devel mailing list