avformat/mov: Ignore the last frame for duration and fps calculation if it looks...
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 21 Jan 2014 17:31:54 +0000 (18:31 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 21 Jan 2014 18:48:05 +0000 (19:48 +0100)
The used heuristic will potentially need to be finetuned
Fixes daemon404s fps.mov

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/mov.c

index 413a508..a24df84 100644 (file)
@@ -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;
     }