summaryrefslogtreecommitdiff
path: root/libavformat/mov.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-01-21 18:31:54 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-01-21 19:48:05 +0100
commit8e5e84c2a2a21a979b48e80c5a8dd44754ab3f21 (patch)
treeb77bbb3a3018c40e7e9ad4b3c70ab7107735cbb0 /libavformat/mov.c
parent76421982d0427aeef403b7842a233c881ae1600a (diff)
avformat/mov: Ignore the last frame for duration and fps calculation if it looks suspect
The used heuristic will potentially need to be finetuned Fixes daemon404s fps.mov Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/mov.c')
-rw-r--r--libavformat/mov.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 413a508b64..a24df84b54 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -1940,6 +1940,12 @@ static int mov_read_stts(MOVContext *c, AVIOContext *pb, MOVAtom atom)
av_dlog(c->fc, "sample_count=%d, sample_duration=%d\n",
sample_count, sample_duration);
+ if ( i+1 == entries
+ && i
+ && sample_count == 1
+ && total_sample_count > 100
+ && sample_duration/10 > duration / total_sample_count)
+ sample_duration = duration / total_sample_count;
duration+=(int64_t)sample_duration*sample_count;
total_sample_count+=sample_count;
}