On 20/02/12 10:01, Martin Storsjö wrote:
> On Fri, 27 Jan 2012, Martin Storsjö wrote:
> 
>> On Sat, 21 Jan 2012, Anton Khirnov wrote:
>>
>>> On Sat, 21 Jan 2012 17:14:49 +0200 (EET), Martin Storsjö
>>> <[email protected]> wrote:
>>>> On Sat, 21 Jan 2012, Anton Khirnov wrote:
>>>>
>>>>>
>>>>> On Sat, 21 Jan 2012 14:09:07 +0200, Martin Storsjö
>>>>> <[email protected]> wrote:
>>>>>> This avoids reading any old data in the AVIOContext buffer after
>>>>>> the seek, and indicates to the mpegts demuxer that we've seeked,
>>>>>> avoiding continuity check errors.
>>>>>> ---
>>>>>>  libavformat/applehttp.c |    4 ++++
>>>>>>  1 files changed, 4 insertions(+), 0 deletions(-)
>>>>>>
>>>>>> diff --git a/libavformat/applehttp.c b/libavformat/applehttp.c
>>>>>> index 38023f6..3ee233f 100644
>>>>>> --- a/libavformat/applehttp.c
>>>>>> +++ b/libavformat/applehttp.c
>>>>>> @@ -700,6 +700,10 @@ static int
>>>>>> applehttp_read_seek(AVFormatContext *s, int stream_index,
>>>>>>          av_free_packet(&var->pkt);
>>>>>>          reset_packet(&var->pkt);
>>>>>>          var->pb.eof_reached = 0;
>>>>>> +        /* Clear any buffered data */
>>>>>> +        var->pb.buf_end = var->pb.buf_ptr = var->pb.buffer;
>>>>>> +        /* Reset the pos, to let the mpegts demuxer know we've
>>>>>> seeked. */
>>>>>> +        var->pb.pos = 0;
>>>>>>
>>>>>>          /* Locate the segment that contains the target timestamp */
>>>>>>          for (j = 0; j < var->n_segments; j++) {
>>>>>> -- 
>>>>>> 1.7.3.1
>>>>>>
>>>>>
>>>>> Manipulating AVIOContext internals like this from a demuxer makes me
>>>>> uneasy.  Maybe this should be a separate avio function.
>>>>
>>>> Perhaps it should. Note though, this is not the demuxer's normal input
>>>> AVIOContext - this is the custom AVIOContext that the applehttp demuxer
>>>> provides as input to the mpegts demuxer, so it's a bit more ok to
>>>> meddle
>>>> in its internals than for a normal demuxer. But perhaps it still
>>>> should be
>>>> a separate function?
>>>>
>>>
>>> Yes, I think it should if it's not too much trouble.
>>
>> So, should it be one function for setting buf_end = buf_ptr = buffer,
>> e.g. ffio_clear_buffer(), and another one for setting pos to 0? Or
>> should it do both of them, e.g. ffio_clear_restart_buffer()? Also,
>> perhaps they should be public? They're useful for anyone who uses
>> custom avio to push data into a demuxer.
> 
> 10:55 <wbs> elenril: http://patches.libav.org/patch/15548/ - missing your
>             suggestion on how to factorize stuff to move forward
> 10:55 <wbs> elenril: or perhaps I should just apply it and let you
>             factorize it afterwards? ;-)
> 10:57 <elenril> ok, go ahead
> 
> 
> So, pushing this for now since it fixes a real bug, letting Anton
> factorize it afterwards in the way he prefers.
> 

Fine =)


-- 

Luca Barbato
Gentoo/linux
http://dev.gentoo.org/~lu_zero

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to