[FFmpeg-devel] [PATCH] mov: fix seek to next root atom in fragmented mp4

John Stebbins jstebbins at jetheaddev.com
Sun Mar 29 23:32:45 EEST 2020


If some but not all moof's are referenced in an sidx, whole fragments
were being skipped.

Fixes tickets 7377, 7389, and 8502
May also fix 8070 but the sample links expired, so I can't test.
---
 libavformat/mov.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index f280f360b6..8ed8b7f6e9 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -7724,7 +7724,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)
-- 
2.25.1



More information about the ffmpeg-devel mailing list