[FFmpeg-devel] [PATCH] use reordered_opaque in ffmpeg.c

Alexander Strange astrange
Sun Jun 20 12:37:30 CEST 2010


On Jun 20, 2010, at 1:58 AM, Alexander Strange wrote:

> This changes ffmpeg.c to push PTS through the decoder using reordered_opaque instead of the old and not quite accurate thing it does now.
> It fixes a problem where initial decoder delay was treated as dropped frames.
> 
> Contrived example:
> 
> http://astrange.ithinksw.net/ffmpeg/camp_mot_mbaff0_full.mp4
> ffmpeg -strict 2 -i camp_mot_mbaff0_full.mp4 -y -an -f framecrc crc.txt
> 
> Unpatched: frame=   30 fps=  0 q=0.0 Lsize=       1kB time=1.00 bitrate=   6.9kbits/s dup=14 drop=14 
> Patched: frame=   30 fps=  0 q=0.0 Lsize=       1kB time=1.00 bitrate=   6.9kbits/s    
> 
> The first frame is emitted 14 times without the patch, and the last 14 frames are lost.
> 
> This is rare on mainline, but required for it to support ffmpeg-mt which has increased decoder delay.
> 
> A few things I tested still have timestamp problems - files with inaccurate dts or packed B-frames have non-monotonic pts coming out of reordered_opaque, and the issue with start_time isn't fixed - but I haven't found any files with worse sync.
> 
> Tested make test, but not make fate since it fails immediately on 4xm even without any patching.

Turns out I needed to dl it with rsync -L. It works, anyway (but I don't think it tests this situation?).

> 
> <0001-ffmpeg-Replace-EOF-test-with-equivalent-condition.patch><0002-ffmpeg-Send-decoded-frame-timestamps-through-reorder.patch>




More information about the ffmpeg-devel mailing list