summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavformat/mov.c6
-rw-r--r--tests/ref/fate/adtstoasc_ticket37152
2 files changed, 4 insertions, 4 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 8fea6700c3..1975011741 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -2932,7 +2932,7 @@ static int mov_read_stts(MOVContext *c, AVIOContext *pb, MOVAtom atom)
st->nb_frames= total_sample_count;
if (duration)
- st->duration= duration;
+ st->duration= FFMIN(st->duration, duration);
sc->track_end = duration;
return 0;
}
@@ -3671,8 +3671,8 @@ static void mov_fix_index(MOVContext *mov, AVStream *st)
}
}
- // Update av stream length
- st->duration = edit_list_dts_entry_end - start_dts;
+ // Update av stream length, if it ends up shorter than the track's media duration
+ st->duration = FFMIN(st->duration, edit_list_dts_entry_end - start_dts);
msc->start_pad = st->skip_samples;
// Free the old index and the old CTTS structures
diff --git a/tests/ref/fate/adtstoasc_ticket3715 b/tests/ref/fate/adtstoasc_ticket3715
index 96795a2ca3..c5f03e4561 100644
--- a/tests/ref/fate/adtstoasc_ticket3715
+++ b/tests/ref/fate/adtstoasc_ticket3715
@@ -92,4 +92,4 @@
0, 83968, 83968, 1024, 465, 0xeb3ce0af
0, 84992, 84992, 1024, 326, 0x7be4a667
0, 86016, 86016, 1024, 339, 0x2cf4a71f
-0, 87040, 87040, 1028, 258, 0xd4007ad4
+0, 87040, 87040, 1024, 258, 0xd4007ad4