Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2016-01-28 18:38:05 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2016-01-28 18:38:05 +0300
commit53ef03d20f5ce1dc0c6cb49c759f0be3f467340f (patch)
tree44f1a47f0d8311e465f7aed29f61f1333dfba0e6 /source/blender/imbuf/intern/anim_movie.c
parent5f310899578cc67cbe0a97763add94dc838fe3dd (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/intern/anim_movie.c')
-rw-r--r--source/blender/imbuf/intern/anim_movie.c11
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;