From 868149ca5a3a481703b47121a68082d13f1ac8ea Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Thu, 25 Jun 2020 16:33:04 +1000 Subject: [PATCH] qtdemux: fix subsequent moof parsing after moov with valid samples reset the moof_offset back to its original value like is done in the error case just before. Fixes subsequent parsing of a moof following a moov that contains valid samples in a non-streaming fragmented mp4. Part-of: --- gst/isomp4/qtdemux.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c index f719617c0c..d4e127bf21 100644 --- a/gst/isomp4/qtdemux.c +++ b/gst/isomp4/qtdemux.c @@ -12774,7 +12774,7 @@ qtdemux_parse_trak (GstQTDemux * qtdemux, GNode * trak) qtdemux->moof_offset = offset; goto samples_failed; } - qtdemux->moof_offset = 0; + qtdemux->moof_offset = offset; /* movie duration more reliable in this case (e.g. mehd) */ if (qtdemux->segment.duration && GST_CLOCK_TIME_IS_VALID (qtdemux->segment.duration)) @@ -12971,7 +12971,7 @@ qtdemux_prepare_streams (GstQTDemux * qtdemux) GST_DEBUG_OBJECT (qtdemux, "track-id %u, fourcc %" GST_FOURCC_FORMAT, stream->track_id, GST_FOURCC_ARGS (CUR_STREAM (stream)->fourcc)); - if (qtdemux->fragmented) { + if (qtdemux->fragmented && qtdemux->pullbased) { /* need all moov samples first */ GST_OBJECT_LOCK (qtdemux); while (stream->n_samples == 0)