mov: Remove ancient heuristic hack
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>
Thu, 25 Aug 2016 15:58:14 +0000 (16:58 +0100)
committerPaul B Mahol <onemda@gmail.com>
Thu, 25 Aug 2016 19:12:19 +0000 (21:12 +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>
libavformat/isom.h
libavformat/mov.c

index df6c15a..2246fed 100644 (file)
@@ -155,7 +155,6 @@ typedef struct MOVStreamContext {
     MOVDref *drefs;
     int dref_id;
     int timecode_track;
-    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 1bc3800..54c63ad 100644 (file)
@@ -2802,12 +2802,8 @@ static void mov_build_index(MOVContext *mov, AVStream *st)
             sc->time_offset = start_time - empty_duration;
             current_dts = -sc->time_offset;
             if (sc->ctts_count>0 && sc->stts_count>0 &&
-                sc->ctts_data[0].duration / FFMAX(sc->stts_data[0].duration, 1) > 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 / FFMAX(sc->stts_data[0].duration, 1) > 16)
                 st->codecpar->video_delay = 1;
-            }
         }
 
         if (!unsupported && st->codecpar->codec_id == AV_CODEC_ID_AAC && start_time > 0)
@@ -5352,8 +5348,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;