diff options
author | John Stebbins <jstebbins@jetheaddev.com> | 2020-03-29 13:32:45 -0700 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2020-04-11 18:15:58 +0200 |
commit | 21a65d63109628276a8fa88f8e6a106696506dc9 (patch) | |
tree | 6dbcbea8c3da535fed0775544f96ce9427c95e60 /libavformat | |
parent | 20ade59d9633def4ebf84ec170f56367bfb6aa6c (diff) | |
download | ffmpeg-21a65d63109628276a8fa88f8e6a106696506dc9.tar.gz |
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>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/mov.c | 3 |
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) |