[SCM] libav/experimental: set average frame rate in mov demuxer

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:58:03 UTC 2013


The following commit has been merged in the experimental branch:
commit c3aeaa540d6ff7b9829c3af1ffec3c708ddc70f7
Author: Baptiste Coudurier <baptiste.coudurier at gmail.com>
Date:   Mon Jan 18 23:56:04 2010 +0000

    set average frame rate in mov demuxer
    
    Originally committed as revision 21310 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/mov.c b/libavformat/mov.c
index 45e0520..aa66a01 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 000ab90..64c5ec4 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);

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list