Bug 1189138: [MSE] P3. Properly shift our demuxing index when data is added. r=gerald

Should frames be added before our current demuxing position, we must shift the index ; otherwise the next retrieved frames will be the wrong one.
This commit is contained in:
Jean-Yves Avenard 2015-07-30 14:03:44 +10:00
parent 1885ed42a2
commit fa6675ed02

View File

@ -1516,6 +1516,14 @@ TrackBuffersManager::InsertFrames(TrackBuffer& aSamples,
CheckNextInsertionIndex(aTrackData,
TimeUnit::FromMicroseconds(aSamples[0]->mTime));
// Adjust our demuxing index if necessary.
if (trackBuffer.mNextGetSampleIndex.isSome() &&
(trackBuffer.mNextInsertionIndex.ref() < trackBuffer.mNextGetSampleIndex.ref() ||
(trackBuffer.mNextInsertionIndex.ref() == trackBuffer.mNextGetSampleIndex.ref() &&
aIntervals.GetEnd() < trackBuffer.mNextSampleTime))) {
trackBuffer.mNextGetSampleIndex.ref() += aSamples.Length();
}
TrackBuffer& data = trackBuffer.mBuffers.LastElement();
data.InsertElementsAt(trackBuffer.mNextInsertionIndex.ref(), aSamples);
trackBuffer.mNextInsertionIndex.ref() += aSamples.Length();