summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Stebbins <jstebbins@jetheaddev.com>2020-03-29 13:32:45 -0700
committerMichael Niedermayer <michael@niedermayer.cc>2020-04-11 18:15:58 +0200
commit21a65d63109628276a8fa88f8e6a106696506dc9 (patch)
tree6dbcbea8c3da535fed0775544f96ce9427c95e60
parent20ade59d9633def4ebf84ec170f56367bfb6aa6c (diff)
mov: fix seek to next root atom in fragmented mp4
If some but not all moof's are referenced in an sidx, whole fragments were being skipped. Fixes tickets 7377, 7389, and 8502 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r--libavformat/mov.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 32f51e6a4c..eb9a8714a0 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -7734,7 +7734,8 @@ static int mov_switch_root(AVFormatContext *s, int64_t target, int index)
mov->next_root_atom = 0;
if (index < 0 || index >= mov->frag_index.nb_items)
index = search_frag_moof_offset(&mov->frag_index, target);
- if (index < mov->frag_index.nb_items) {
+ if (index < mov->frag_index.nb_items &&
+ mov->frag_index.item[index].moof_offset == target) {
if (index + 1 < mov->frag_index.nb_items)
mov->next_root_atom = mov->frag_index.item[index + 1].moof_offset;
if (mov->frag_index.item[index].headers_read)