]> git.sesse.net Git - ffmpeg/commitdiff
mov: Remove ancient heuristic hack
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>
Fri, 26 Aug 2016 13:30:06 +0000 (14:30 +0100)
committerLuca Barbato <lu_zero@gentoo.org>
Mon, 29 Aug 2016 13:31:03 +0000 (15:31 +0200)
This breaks files with legitimate single-entry edit lists,
and the hack, introduced in f03a081df09f9c4798a17d7e24446ed47924b11b,
has no link to any known sample in its commit message.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
libavformat/isom.h
libavformat/mov.c

index 75aa70bccc4431b932ed7da6b7203e28585b2656..58f0a2006213a2ee483dfb2f3d8c10edde42b0d2 100644 (file)
@@ -128,7 +128,6 @@ typedef struct MOVStreamContext {
     unsigned drefs_count;
     MOVDref *drefs;
     int dref_id;
-    int wrong_dts;        ///< dts are wrong due to huge ctts offset (iMovie files)
     int width;            ///< tkhd width
     int height;           ///< tkhd height
     int dts_shift;        ///< dts shift when ctts is negative
index 03427d7e06ea51972ba630b6c4635334e4720ae1..89c2c23fe47208b04c9a0148500157373aa453fe 100644 (file)
@@ -2307,12 +2307,8 @@ static void mov_build_index(MOVContext *mov, AVStream *st)
             sc->time_offset = av_rescale(sc->time_offset, sc->time_scale, mov->time_scale);
         current_dts = -sc->time_offset;
         if (sc->ctts_data && sc->stts_data && sc->stts_data[0].duration &&
-            sc->ctts_data[0].duration / sc->stts_data[0].duration > 16) {
-            /* more than 16 frames delay, dts are likely wrong
-               this happens with files created by iMovie */
-            sc->wrong_dts = 1;
+            sc->ctts_data[0].duration / sc->stts_data[0].duration > 16)
             st->internal->avctx->has_b_frames = 1;
-        }
     }
 
     /* only use old uncompressed audio chunk demuxing when stts specifies it */
@@ -3670,8 +3666,6 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt)
             sc->ctts_index++;
             sc->ctts_sample = 0;
         }
-        if (sc->wrong_dts)
-            pkt->dts = AV_NOPTS_VALUE;
     } else {
         int64_t next_dts = (sc->current_sample < st->nb_index_entries) ?
             st->index_entries[sc->current_sample].timestamp : st->duration;