qtdemux: In gap mode, consider the mdat offset when calculating the remaining mdat size

The mdat generally does not start at offset 0, we have to include the
size of the moof and whatever else was in front of the mdat.
This commit is contained in:
Sebastian Dröge 2017-03-27 21:52:00 +03:00
parent ea4e9fc2d4
commit 2b50a338c3

View file

@ -3282,6 +3282,7 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun,
* size, else we will still be able to use this when dealing with gap'ed
* input */
qtdemux->mdatleft = *running_offset - initial_offset;
qtdemux->mdatoffset = initial_offset;
qtdemux->mdatsize = qtdemux->mdatleft;
stream->n_samples += samples_count;
@ -6276,7 +6277,8 @@ gst_qtdemux_chain (GstPad * sinkpad, GstObject * parent, GstBuffer * inbuf)
/* Finally update all push-based values to the expected values */
demux->neededbytes = demux->streams[i]->samples[res].size;
demux->offset = GST_BUFFER_OFFSET (inbuf);
demux->mdatleft = demux->mdatsize - demux->offset;
demux->mdatleft =
demux->mdatsize - demux->offset + demux->mdatoffset;
demux->todrop = 0;
}
}