[FFmpeg-devel] ffmpeg misdetects frame rate on divx files
Thu Dec 27 00:03:17 CET 2007
I have uploaded a divx 4 stream at ftp://samples.mplayerhq.hu/MPlayer/incoming/mpeg4_framerate
of which the frame rate is detected anormally by ffmpeg:
[NULL @ 0xb7db1450]looks like this file was encoded with (divx4/(old)xvid/opendivx) -> forcing low_delay flag
Input #0, avi, from 'fightclub.avi':
Duration: 00:01:40.0, start: 0.000000, bitrate: 757 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 640x288 [PAR 0:1 DAR 0:1], 1.00 tb(r)
Stream #0.1: Audio: mp3, 48000 Hz, stereo, 32 kb/s
playing it with ffplay renders video very slowly.
this wrong 1.00 fps comes from libavcodec/h263.c's decode_vol_header()
function, where AVCodecContext's time_base field is overwritten with
seemingly bogus values when fixed_vop_header == 0.
in this case, the stream contains time_increment_resolution == 1.
I have another stream where time_increment_resolution == 2, leading to 2.00 fps.
I don't know which of the stream or decoder is broken, but attached is a
patch that appears to circumvent the problem.
as I don't feel familiar enough with the mpeg4p2 standard, I don't know
exactly if it is appropriate to do this in such a situation...
I'm not even sure if it wouldn't break in other cases (most particularly,
maybe it could lead to division by zero if s->avctx->time_base isn't properly
maybe it is a divx4 encoder bug, as the only such samples I have are divx4...
any comment/information/correction would be appreciated if it is not the
proper way to fix this.
Gabriel Fort? <gforte at wyplay.com>
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 1385 bytes
Desc: not available
More information about the ffmpeg-devel