[FFmpeg-cvslog] r18959 - in trunk: libavcodec/mpeg12.c tests/seek.regression.ref

Baptiste Coudurier baptiste.coudurier
Wed Jun 3 20:12:18 CEST 2009


On 6/3/2009 3:06 AM, Reimar D?ffinger wrote:
> On Wed, May 27, 2009 at 11:08:11AM -0700, Baptiste Coudurier wrote:
>> On 5/27/2009 5:40 AM, Michael Niedermayer wrote:
>>> On Tue, May 26, 2009 at 11:38:19PM -0700, Baptiste Coudurier wrote:
>>>> On 5/26/2009 9:40 PM, Mike Melanson wrote:
>>>>> bcoudurier wrote:
>>>>>> Author: bcoudurier
>>>>>> Date: Wed May 27 02:14:32 2009
>>>>>> New Revision: 18959
>>>>>>
>>>>>> Log:
>>>>>> Fix off by one offset with fetch_timestamps, pts_parser_problem.mpg.
>>>>>> Patch by Wolfram Gloger, wmglo at dentm dot med dot uni-muenchen dot de.
>>>>>>
>>>>>> Modified:
>>>>>>    trunk/libavcodec/mpeg12.c
>>>>>>    trunk/tests/seek.regression.ref
>>>>> Do you have any idea why this might have broken the pva-demux test?
>>>>>
>>>>> http://fate.multimedia.cx/index.php?test_spec=298
>>>>>
>>>>> The file errors out with the following message:
>>>>>
>>>>> [NULL @ 0x120ab5730]error, non monotone timestamps 50151 >= 42951
>>>>> av_interleaved_write_frame(): Error while opening file
>>>> Yes, that's because now frames have pts correctly set :)
>>>> This PVA samples does not start with a SEQ EXT therefore first frames
>>>> dts are not computed accurately.
>>>>
>>>> Btw, any reason for not setting has_b_frames when a B frame is
>>>> encountered or I frame with temp_ref != 0 ?
>>> i guess setting has_b_frames when a b frame is hit is ok, though maybe
>>> this could be done at a more central place
>> In compute_pkt_fields ? Patch attached.
>>
>> -- 
>> Baptiste COUDURIER                              GnuPG Key Id: 0x5C1ABAAA
>> Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
>> FFmpeg maintainer                                  http://www.ffmpeg.org
> 
>> Index: libavformat/utils.c
>> ===================================================================
>> --- libavformat/utils.c	(revision 18964)
>> +++ libavformat/utils.c	(working copy)
>> @@ -739,6 +746,9 @@
>>      int num, den, presentation_delayed, delay, i;
>>      int64_t offset;
>>  
>> +    if (pc && pc->pict_type == FF_B_TYPE)
>> +        st->codec->has_b_frames = 1;
>> +
>>      /* do we have a video B-frame ? */
>>      delay= st->codec->has_b_frames;
>>      presentation_delayed = 0;
> 
> Hm, this mostly fixes pva demuxing, instead of many timestamp issues
> there is then only a single one:
> [NULL @ 0x2c3e010]error, non monotone timestamps 35751 >= 35751
> But I think there's no way the time stamps can be correct, the file IMO
> plays at half speed (I admit I have not seen how fast it played
> previously).

Yes, indeed. I'll apply this patch soon I hope, if someone does not beat me.

I believe the timestamps generation code would work really better if at
least 3 of more frames were buffered before setting has_b_frame and delay.

-- 
Baptiste COUDURIER                              GnuPG Key Id: 0x5C1ABAAA
Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer                                  http://www.ffmpeg.org



More information about the ffmpeg-cvslog mailing list