Commit c3aeaa54 authored by Baptiste Coudurier's avatar Baptiste Coudurier

set average frame rate in mov demuxer

Originally committed as revision 21310 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 7231ccf4
...@@ -1652,8 +1652,8 @@ static int mov_read_trak(MOVContext *c, ByteIOContext *pb, MOVAtom atom) ...@@ -1652,8 +1652,8 @@ static int mov_read_trak(MOVContext *c, ByteIOContext *pb, MOVAtom atom)
} else } else
sc->pb = c->fc->pb; sc->pb = c->fc->pb;
if (st->codec->codec_type == CODEC_TYPE_VIDEO && if (st->codec->codec_type == CODEC_TYPE_VIDEO) {
(st->codec->width != sc->width || st->codec->height != sc->height)) { if (st->codec->width != sc->width || st->codec->height != sc->height) {
AVRational r = av_d2q(((double)st->codec->height * sc->width) / AVRational r = av_d2q(((double)st->codec->height * sc->width) /
((double)st->codec->width * sc->height), INT_MAX); ((double)st->codec->width * sc->height), INT_MAX);
if (st->sample_aspect_ratio.num) if (st->sample_aspect_ratio.num)
...@@ -1662,6 +1662,10 @@ static int mov_read_trak(MOVContext *c, ByteIOContext *pb, MOVAtom atom) ...@@ -1662,6 +1662,10 @@ static int mov_read_trak(MOVContext *c, ByteIOContext *pb, MOVAtom atom)
st->sample_aspect_ratio = r; 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) { switch (st->codec->codec_id) {
#if CONFIG_H261_DECODER #if CONFIG_H261_DECODER
case CODEC_ID_H261: case CODEC_ID_H261:
......
...@@ -2218,7 +2218,7 @@ int av_find_stream_info(AVFormatContext *ic) ...@@ -2218,7 +2218,7 @@ int av_find_stream_info(AVFormatContext *ic)
} }
for(i=0;i<ic->nb_streams;i++) { for(i=0;i<ic->nb_streams;i++) {
st = ic->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, 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_nb_frames[i]-2)*(int64_t)st->time_base.den,
codec_info_duration[i] *(int64_t)st->time_base.num, 60000); codec_info_duration[i] *(int64_t)st->time_base.num, 60000);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment