Commit eb96505b authored by Derek Buitenhuis's avatar Derek Buitenhuis Committed by Luca Barbato

mov: Remove ancient heuristic hack

This breaks files with legitimate single-entry edit lists,
and the hack, introduced in f03a081d,
has no link to any known sample in its commit message.
Signed-off-by: 's avatarDerek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: 's avatarLuca Barbato <lu_zero@gentoo.org>
parent 4ab49626
...@@ -128,7 +128,6 @@ typedef struct MOVStreamContext { ...@@ -128,7 +128,6 @@ typedef struct MOVStreamContext {
unsigned drefs_count; unsigned drefs_count;
MOVDref *drefs; MOVDref *drefs;
int dref_id; int dref_id;
int wrong_dts; ///< dts are wrong due to huge ctts offset (iMovie files)
int width; ///< tkhd width int width; ///< tkhd width
int height; ///< tkhd height int height; ///< tkhd height
int dts_shift; ///< dts shift when ctts is negative int dts_shift; ///< dts shift when ctts is negative
......
...@@ -2307,12 +2307,8 @@ static void mov_build_index(MOVContext *mov, AVStream *st) ...@@ -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); sc->time_offset = av_rescale(sc->time_offset, sc->time_scale, mov->time_scale);
current_dts = -sc->time_offset; current_dts = -sc->time_offset;
if (sc->ctts_data && sc->stts_data && sc->stts_data[0].duration && if (sc->ctts_data && sc->stts_data && sc->stts_data[0].duration &&
sc->ctts_data[0].duration / sc->stts_data[0].duration > 16) { 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;
st->internal->avctx->has_b_frames = 1; st->internal->avctx->has_b_frames = 1;
}
} }
/* only use old uncompressed audio chunk demuxing when stts specifies it */ /* only use old uncompressed audio chunk demuxing when stts specifies it */
...@@ -3670,8 +3666,6 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt) ...@@ -3670,8 +3666,6 @@ static int mov_read_packet(AVFormatContext *s, AVPacket *pkt)
sc->ctts_index++; sc->ctts_index++;
sc->ctts_sample = 0; sc->ctts_sample = 0;
} }
if (sc->wrong_dts)
pkt->dts = AV_NOPTS_VALUE;
} else { } else {
int64_t next_dts = (sc->current_sample < st->nb_index_entries) ? int64_t next_dts = (sc->current_sample < st->nb_index_entries) ?
st->index_entries[sc->current_sample].timestamp : st->duration; st->index_entries[sc->current_sample].timestamp : st->duration;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment