[FFmpeg-cvslog] avformat/utils: av_guess_frame_rate() favor avg_frame_rate if r_frame_rate has a comparably unlikely value

Michael Niedermayer git at videolan.org
Wed Feb 19 18:53:55 CET 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Feb 19 18:20:13 2014 +0100| [2969fb43939e74c632559dc865a9ae542ca9eef8] | committer: Michael Niedermayer

avformat/utils: av_guess_frame_rate() favor avg_frame_rate if r_frame_rate has a comparably unlikely value

Fixes Ticket3399
Fixes Ticket2958

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2969fb43939e74c632559dc865a9ae542ca9eef8
---

 libavformat/utils.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/libavformat/utils.c b/libavformat/utils.c
index e859ad2..c4d09e9 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -4325,10 +4325,16 @@ AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *strea
 AVRational av_guess_frame_rate(AVFormatContext *format, AVStream *st, AVFrame *frame)
 {
     AVRational fr = st->r_frame_rate;
+    AVRational codec_fr = av_inv_q(st->codec->time_base);
+    AVRational   avg_fr = st->avg_frame_rate;
+
+    if (avg_fr.num > 0 && avg_fr.den > 0 && fr.num > 0 && fr.den > 0 &&
+        av_q2d(avg_fr) < 70 && av_q2d(fr) > 210) {
+        fr = avg_fr;
+    }
+
 
     if (st->codec->ticks_per_frame > 1) {
-        AVRational codec_fr = av_inv_q(st->codec->time_base);
-        AVRational   avg_fr = st->avg_frame_rate;
         codec_fr.den *= st->codec->ticks_per_frame;
         if (   codec_fr.num > 0 && codec_fr.den > 0 && av_q2d(codec_fr) < av_q2d(fr)*0.7
             && fabs(1.0 - av_q2d(av_div_q(avg_fr, fr))) > 0.1)



More information about the ffmpeg-cvslog mailing list