diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-01-28 18:38:05 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-01-28 18:38:05 +0300 |
commit | 53ef03d20f5ce1dc0c6cb49c759f0be3f467340f (patch) | |
tree | 44f1a47f0d8311e465f7aed29f61f1333dfba0e6 /source/blender/imbuf | |
parent | 5f310899578cc67cbe0a97763add94dc838fe3dd (diff) |
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)
Diffstat (limited to 'source/blender/imbuf')
-rw-r--r-- | source/blender/imbuf/intern/anim_movie.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c index d5ff427f204..4ace72d9fa4 100644 --- a/source/blender/imbuf/intern/anim_movie.c +++ b/source/blender/imbuf/intern/anim_movie.c @@ -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; |