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>
pull/336/head
John Stebbins 5 years ago committed by Michael Niedermayer
parent 20ade59d96
commit 21a65d6310
  1. 3
      libavformat/mov.c

@ -7734,7 +7734,8 @@ static int mov_switch_root(AVFormatContext *s, int64_t target, int index)
mov->next_root_atom = 0; mov->next_root_atom = 0;
if (index < 0 || index >= mov->frag_index.nb_items) if (index < 0 || index >= mov->frag_index.nb_items)
index = search_frag_moof_offset(&mov->frag_index, target); 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) if (index + 1 < mov->frag_index.nb_items)
mov->next_root_atom = mov->frag_index.item[index + 1].moof_offset; mov->next_root_atom = mov->frag_index.item[index + 1].moof_offset;
if (mov->frag_index.item[index].headers_read) if (mov->frag_index.item[index].headers_read)

Loading…
Cancel
Save