FFmpeg: Experiment with use of nb_frames from a stream when known

The idea is to use known number of frames in the stream when possible
instead of trying to deduct it from a stream duration and time base,
which could potentially give some rounding errors.

This, i.e., solves quicktime encoded files from animators to open
just fine in sequencer.

Another report done by the main Nieve guy (aka venomgfx)
This commit is contained in:
Sergey Sharybin
2016-01-28 16:38:05 +01:00
parent 5f31089957
commit 53ef03d20f

View File

@@ -525,9 +525,14 @@ static int startffmpeg(struct anim *anim)
}
frame_rate = av_get_r_frame_rate_compat(pFormatCtx->streams[videoStream]);
anim->duration = ceil(pFormatCtx->duration *
av_q2d(frame_rate) /
AV_TIME_BASE);
if (pFormatCtx->streams[videoStream]->nb_frames != 0) {
anim->duration = pFormatCtx->streams[videoStream]->nb_frames;
}
else {
anim->duration = ceil(pFormatCtx->duration *
av_q2d(frame_rate) /
AV_TIME_BASE);
}
frs_num = frame_rate.num;
frs_den = frame_rate.den;