diff utils.c @ 1616:dfe8b8bd6833 libavformat

nth try of getting the frame rate detecton working
author michael
date Tue, 02 Jan 2007 20:32:01 +0000
parents cab8434bfeab
children ad71e733bc20
line wrap: on
line diff
--- a/utils.c	Mon Jan 01 22:52:22 2007 +0000
+++ b/utils.c	Tue Jan 02 20:32:01 2007 +0000
@@ -1895,14 +1895,14 @@
 
 //                if(st->codec->codec_type == CODEC_TYPE_VIDEO)
 //                    av_log(NULL, AV_LOG_ERROR, "%f\n", dur);
-                if(duration_count[index] > 0){
+                if(duration_count[index] < 2)
+                    memset(duration_error, 0, sizeof(duration_error));
                     for(i=1; i<MAX_STD_TIMEBASES; i++){
                         int framerate= get_std_framerate(i);
                         int ticks= lrintf(dur*framerate/(1001*12));
                         double error= dur - ticks*1001*12/(double)framerate;
                         duration_error[index][i] += error*error;
                     }
-                }
                 duration_count[index]++;
 
                 if(st->codec_info_nb_frames == 0 && 0)
@@ -1960,7 +1960,7 @@
             if(st->codec->codec_id == CODEC_ID_RAWVIDEO && !st->codec->codec_tag && !st->codec->bits_per_sample)
                 st->codec->codec_tag= avcodec_pix_fmt_to_codec_tag(st->codec->pix_fmt);
 
-            if(1
+            if(duration_count[i]
                && (st->codec->time_base.num*101LL <= st->codec->time_base.den || st->codec->codec_id == CODEC_ID_MPEG2VIDEO) /*&&
                //FIXME we should not special case mpeg2, but this needs testing with non mpeg2 ...
                st->time_base.num*duration_sum[i]/duration_count[i]*101LL > st->time_base.den*/){