[FFmpeg-devel] [PATCH] Fix failure in av_read_frame on timestamp rollover

Michael Niedermayer michaelni
Mon Jun 21 10:50:04 CEST 2010


On Mon, Jun 21, 2010 at 06:01:59PM +1000, Stephen Dredge i wrote:
> On 06/18/2010 08:13 PM, Michael Niedermayer wrote:
>> On Fri, Jun 18, 2010 at 06:29:03PM +1000, Stephen Dredge i wrote:
>>    
>>> On 06/16/2010 04:31 PM, Michael Niedermayer wrote:
>>>      
>>>> On Tue, Jun 15, 2010 at 04:43:14PM +1000, Stephen Dredge i wrote:
>>>>
>>>>        
>>>>> On 06/12/2010 12:03 AM, Michael Niedermayer wrote:
>>>>>
>>>>>          
>>>>>> On Fri, Jun 11, 2010 at 06:59:01PM +1000, Stephen Dredge i wrote:
>>>>>>
>>>>>>            
>>>> [...]
>>>>
>>>>        
>>>>> diff --git a/libavutil/mathematics.c b/libavutil/mathematics.c
>>>>> index 00b81f1..2a85943 100644
>>>>> --- a/libavutil/mathematics.c
>>>>> +++ b/libavutil/mathematics.c
>>>>> @@ -144,8 +144,13 @@ int av_compare_ts(int64_t ts_a, AVRational tb_a,
>>>>> int64_t ts_b, AVRational tb_b){
>>>>>        return 0;
>>>>>    }
>>>>>
>>>>> -int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod){
>>>>> -    int64_t c= (a-b)&   (mod-1);
>>>>> +int64_t av_compare_mod(uint64_t a, uint64_t b, int mod_bits){
>>>>> +    int64_t c;
>>>>> +    int64_t mod;
>>>>> +    if(!mod_bits || mod_bits>= 63)
>>>>> +        return a-b;
>>>>> +    mod= 1LL<<mod_bits;
>>>>> +    c= (a-b)&   (mod-1);
>>>>>        if(c>   (mod>>1))
>>>>>            c-= mod;
>>>>>        return c;
>>>>>
>>>>>          
>>>> looks unneeded
>>>>        
>>> The !mod_bits test?, two demuxers use av_read_frame so I wasn't sure, 
>>> Also
>>> I was thinking of future uses.
>>>      
>> iam talking about the whole hunk
>>
>> [...]
>>    
> just this then?
>
>>    
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at mplayerhq.hu
>> https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
>
>
> -- 
>   Stephen Dredge                        sdredge at tpg.com.au
> _______________________________________________________________
>  System Administrator
>  +61 2 9850 0979
>
>   TPG Internet
>  www.tpg.com.au
>
>
>

>  utils.c |    6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 5202c2b6e2f57c519c2f7563426eb36ea6bd521c  rollover_fix5.patch
> diff --git a/libavformat/utils.c b/libavformat/utils.c
> index 59ca6bb..3e5ffab 100644
> --- a/libavformat/utils.c
> +++ b/libavformat/utils.c
> @@ -1187,13 +1187,13 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt)
>          pktl = s->packet_buffer;
>          if (pktl) {
>              AVPacket *next_pkt= &pktl->pkt;
> +            int wrap_bits = s->streams[next_pkt->stream_index]->pts_wrap_bits;
>  
>              if(genpts && next_pkt->dts != AV_NOPTS_VALUE){
>                  while(pktl && next_pkt->pts == AV_NOPTS_VALUE){

the wrap_bits can be moved into the if() no need to calculate them when
genpts is not set

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

I know you won't believe me, but the highest form of Human Excellence is
to question oneself and others. -- 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/20100621/53b30185/attachment.pgp>



More information about the ffmpeg-devel mailing list