[FFmpeg-devel] [PATCH] avoid infinite loop when seeking flv and non seekable input

Baptiste Coudurier baptiste.coudurier
Sun Jul 27 06:56:17 CEST 2008


Michael Niedermayer wrote:
> On Wed, Jul 23, 2008 at 08:35:49PM -0700, Baptiste Coudurier wrote:
>> Hi Michael,
>>
>> Michael Niedermayer wrote:
>>> On Tue, Jul 22, 2008 at 07:41:51PM -0700, Baptiste Coudurier wrote:
>>>> Hi,
>>>>
>>>> $subject,
>>>>
>>>> Reproduceable when trying to seek and input is non seekable (like http
>>>> through ffserver).
>>>>
>>>> [flv @ 0x8e27eb0]skipping flv packet: type 32, size 2705408, flags 0
>>>> [flv @ 0x8e27eb0]skipping flv packet: type 32, size 2763520, flags 0
>>>> [flv @ 0x8e27eb0]skipping flv packet: type 32, size 2818048, flags 0
>>>> [flv @ 0x8e27eb0]skipping flv packet: type 32, size 2856192, flags 0
>>>> [flv @ 0x8e27eb0]skipping flv packet: type 32, size 2889728, flags 0
>>>> [flv @ 0x8e27eb0]skipping flv packet: type 0, size 11469089, flags 0
>>>> [flv @ 0x8e27eb0]skipping flv packet: type 32, size 2949120, flags 0
>>>> [flv @ 0x8e27eb0]skipping flv packet: type 32, size 2987264, flags 0
>>>>
>>>> With patch resync happens faster:
>>> I dont understand the problem, "trying to seek and input is non seekable"
>>> makes no sense to me. If the input is unseekable, seeking wont succeed
>>> anyway.
>> It will it when seeking forward, aviobuf.c:
>> } else if(s->is_streamed && !s->write_flag &&
>>        offset1 >= 0 && offset1 < (s->buf_end - s->buffer) + (1<<16)){
> 
> indeed
> this could be fixed by removing  "offset1 < (s->buf_end - s->buffer) + (1<<16)"
> or increasing (1<<16)
> feel free to change that.
> 

I checked more deeply and here comes patches.

av_read_frame_flush needs to be done after seek in case of failure, this
hunk will be applied before and separately.

url_fseek is checked for error, and when is_streamed is set but seeking
forward is not possible, return error.

-- 
Baptiste COUDURIER                              GnuPG Key Id: 0x5C1ABAAA
Smartjog USA Inc.                                http://www.smartjog.com
Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
-------------- next part --------------
A non-text attachment was scrubbed...
Name: seek_test_ret.patch
Type: text/x-diff
Size: 1318 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080726/9f916405/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: url_fseek_streamed.patch
Type: text/x-diff
Size: 869 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080726/9f916405/attachment-0001.patch>



More information about the ffmpeg-devel mailing list