[Ffmpeg-devel] Bug in pts computation in compute_pkt_fields() ?

Wolfram Gloger wmglo
Sun Mar 25 15:57:03 CEST 2007


Hi,

> >     //if(pkt->dts < 0)
> >     //    pkt->dts=3D 0;  //this happens for low_delay=3D0 and b frames, =
> FIXME, needs further invstigation about what we should do here
> >=20
> >     if (pkt->pts !=3D AV_NOPTS_VALUE)
> >         pkt->pts &=3D pts_mask;
> >     if (pkt->dts !=3D AV_NOPTS_VALUE)
> >         pkt->dts &=3D pts_mask;
> > }
> >=20
> > So, if negative dts is allowed, at least the two lines above need to
> > be uncommented, no?  Or some better solution must be found.
> 
> no, i see no problem here

Well, if pkt->dts<0, it will be changed to a huge positive value by
the above process, e.g. for the common 33 bit timestamp accuracy.

> > Background: I'm now seeing errors even in "make test" for the mpeg-ts
> > muxer; some packets' dts becomes negative due to the new code in
> 
> make test passed last time i tried (which was today)=20

So you don't have all of my wonderful patches applied :)
Seriously, it is easy to reproduce this problem.  Either apply

--- trunk/tests/regression.sh   2007-03-24 11:22:44.000000000 +0100
+++ ffmpeg-wg/tests/regression.sh       2007-03-25 15:31:44.000000000 +0200
@@ -114,7 +114,7 @@
 # create the data directory if it does not exist
 mkdir -p $datadir
 
-FFMPEG_OPTS="-y -flags +bitexact -dct fastint -idct simple"
+FFMPEG_OPTS="-y -flags +bitexact -dct fastint -idct simple -itsoffset 0.001"
 
 do_ffmpeg()
 {

or just run

../ffmpeg_g -y -flags +bitexact -dct fastint -idct simple -itsoffset 0.001 -i .data/b-libav.ts -f crc ./data/ffmpeg.crc

manually in "tests" after a normal "make test".  This will consume
_huge_ amounts of memory and will never complete.  I recommend running
this with "ulimit -v 200000".

Regards,
Wolfram.




More information about the ffmpeg-devel mailing list