Bug 1261900: [MSE] P4. Only evict no longer used data from resource. r=gerald

This commit is contained in:
Jean-Yves Avenard 2016-04-22 16:33:56 +10:00
Родитель d52e089910
Коммит f0d5590b9d
1 изменённых файлов: 15 добавлений и 3 удалений

Просмотреть файл

@ -1269,9 +1269,21 @@ TrackBuffersManager::CompleteCodedFrameProcessing()
// 6. Remove the media segment bytes from the beginning of the input buffer.
// Clear our demuxer from any already processed data.
// As we have handled a complete media segment, it is safe to evict all data
// from the resource.
mCurrentInputBuffer->EvictAll();
int64_t safeToEvict = std::min(
HasVideo()
? mVideoTracks.mDemuxer->GetEvictionOffset(mVideoTracks.mLastParsedEndTime)
: INT64_MAX,
HasAudio()
? mAudioTracks.mDemuxer->GetEvictionOffset(mAudioTracks.mLastParsedEndTime)
: INT64_MAX);
ErrorResult rv;
mCurrentInputBuffer->EvictBefore(safeToEvict, rv);
if (rv.Failed()) {
rv.SuppressException();
RejectProcessing(NS_ERROR_OUT_OF_MEMORY, __func__);
return;
}
mInputDemuxer->NotifyDataRemoved();
RecreateParser(true);