Message ID | 20200329203245.225679-1-jstebbins@jetheaddev.com |
---|---|
State | Accepted |
Commit | 21a65d63109628276a8fa88f8e6a106696506dc9 |
Headers | show |
Series | [FFmpeg-devel] mov: fix seek to next root atom in fragmented mp4 | expand |
Context | Check | Description |
---|---|---|
andriy/ffmpeg-patchwork | success | Make fate finished |
John Stebbins: > 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. Sample can be found here: https://samples.ffmpeg.org/ffmpeg-bugs/trac/ticket8070/ (You may probably thank Carl-Eugen for this.) - Andreas
On Sun, 2020-03-29 at 22:38 +0200, Andreas Rheinhardt wrote: > John Stebbins: > > 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. > > Sample can be found here: > https://samples.ffmpeg.org/ffmpeg-bugs/trac/ticket8070/ > (You may probably thank Carl-Eugen for this.) > Thanks. So this patch *does not* fix 8070. I'll investigate...
Am So., 29. März 2020 um 22:33 Uhr schrieb John Stebbins <jstebbins@jetheaddev.com>: > > 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. Thank you for looking into this! Carl Eugen
On Sun, Mar 29, 2020 at 08:48:50PM +0000, John Stebbins wrote: > On Sun, 2020-03-29 at 22:38 +0200, Andreas Rheinhardt wrote: > > John Stebbins: > > > 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. > > > > Sample can be found here: > > https://samples.ffmpeg.org/ffmpeg-bugs/trac/ticket8070/ > > (You may probably thank Carl-Eugen for this.) > > > > Thanks. So this patch *does not* fix 8070. I'll investigate... patch LGTM, ill apply it tomorrow without the reference to 8070 Thanks [...]
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)