[Ffmpeg-cvslog] r7289 - trunk/libavformat/utils.c
michael
subversion
Tue Dec 12 15:07:46 CET 2006
Author: michael
Date: Tue Dec 12 15:07:46 2006
New Revision: 7289
Modified:
trunk/libavformat/utils.c
Log:
the next r_frame_rate try ...
discard first duration
accumulate remaining durations
add 15000/1001 and 12000/1001
Modified: trunk/libavformat/utils.c
==============================================================================
--- trunk/libavformat/utils.c (original)
+++ trunk/libavformat/utils.c Tue Dec 12 15:07:46 2006
@@ -1760,10 +1760,10 @@
/* maximum duration until we stop analysing the stream */
#define MAX_STREAM_DURATION ((int)(AV_TIME_BASE * 3.0))
-#define MAX_STD_TIMEBASES (60*12+3)
+#define MAX_STD_TIMEBASES (60*12+5)
static int get_std_framerate(int i){
if(i<60*12) return i*1001;
- else return ((int[]){24,30,60})[i-60*12]*1000*12;
+ else return ((int[]){24,30,60,12,15})[i-60*12]*1000*12;
}
/**
@@ -1894,18 +1894,21 @@
// if(st->codec->codec_type == CODEC_TYPE_VIDEO)
// av_log(NULL, AV_LOG_ERROR, "%f\n", dur);
+ if(duration_count[index] > 0){
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)
st->codec_info_duration += duration;
}
- last_dts[pkt->stream_index]= pkt->dts;
+ if(last == AV_NOPTS_VALUE || duration_count[index]<=1)
+ last_dts[pkt->stream_index]= pkt->dts;
}
if(st->parser && st->parser->parser->split && !st->codec->extradata){
int i= st->parser->parser->split(st->codec, pkt->data, pkt->size);
More information about the ffmpeg-cvslog
mailing list