diff options
author | Baptiste Coudurier <baptiste.coudurier@gmail.com> | 2010-01-18 23:56:04 +0000 |
---|---|---|
committer | Baptiste Coudurier <baptiste.coudurier@gmail.com> | 2010-01-18 23:56:04 +0000 |
commit | c3aeaa540d6ff7b9829c3af1ffec3c708ddc70f7 (patch) | |
tree | b70d9df334d90f7003e6186fff6b4aa5e7e863c7 /libavformat | |
parent | 7231ccf4d53cea4854d4168640d6b3809d3a7771 (diff) | |
download | ffmpeg-c3aeaa540d6ff7b9829c3af1ffec3c708ddc70f7.tar.gz |
set average frame rate in mov demuxer
Originally committed as revision 21310 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/mov.c | 8 | ||||
-rw-r--r-- | libavformat/utils.c | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c index 45e0520e47..aa66a01ec9 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1652,14 +1652,18 @@ static int mov_read_trak(MOVContext *c, ByteIOContext *pb, MOVAtom atom) } else sc->pb = c->fc->pb; - if (st->codec->codec_type == CODEC_TYPE_VIDEO && - (st->codec->width != sc->width || st->codec->height != sc->height)) { + if (st->codec->codec_type == CODEC_TYPE_VIDEO) { + if (st->codec->width != sc->width || st->codec->height != sc->height) { AVRational r = av_d2q(((double)st->codec->height * sc->width) / ((double)st->codec->width * sc->height), INT_MAX); if (st->sample_aspect_ratio.num) st->sample_aspect_ratio = av_mul_q(st->sample_aspect_ratio, r); else st->sample_aspect_ratio = r; + } + + av_reduce(&st->avg_frame_rate.num, &st->avg_frame_rate.den, + sc->time_scale*st->nb_frames, st->duration, INT_MAX); } switch (st->codec->codec_id) { diff --git a/libavformat/utils.c b/libavformat/utils.c index 000ab9050e..64c5ec492b 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2218,7 +2218,7 @@ int av_find_stream_info(AVFormatContext *ic) } for(i=0;i<ic->nb_streams;i++) { st = ic->streams[i]; - if(codec_info_nb_frames[i]>2) + if(codec_info_nb_frames[i]>2 && !st->avg_frame_rate.num) av_reduce(&st->avg_frame_rate.num, &st->avg_frame_rate.den, (codec_info_nb_frames[i]-2)*(int64_t)st->time_base.den, codec_info_duration[i] *(int64_t)st->time_base.num, 60000); |