ffmpeg: switch duration calculation code from avg to r frame_rate.

This heuristic is less likely to overshoot and cause encoder failure.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2012-03-29 19:08:17 +02:00
parent 282ec7289d
commit 4204364678
1 changed files with 3 additions and 1 deletions

View File

@ -1570,7 +1570,9 @@ static void do_video_out(AVFormatContext *s, OutputStream *ost,
if (ist->st->start_time != AV_NOPTS_VALUE && ist->st->first_dts != AV_NOPTS_VALUE) {
duration = FFMAX(av_q2d(ist->st->time_base), av_q2d(ist->st->codec->time_base));
if(ist->st->avg_frame_rate.num)
if(ist->st->r_frame_rate.num)
duration= FFMAX(duration, 1/av_q2d(ist->st->r_frame_rate));
if(ist->st->avg_frame_rate.num && 0)
duration= FFMAX(duration, 1/av_q2d(ist->st->avg_frame_rate));
duration /= av_q2d(enc->time_base);