зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1199904: Only start decoding ahead after explicitly requesting data. r=gerald
Decode ahead will be stopped when seeking or when switching resolution.
This commit is contained in:
Родитель
50c382495e
Коммит
fa4c46c19b
|
@ -665,7 +665,6 @@ MediaFormatReader::RequestVideoData(bool aSkipToNextKeyframe,
|
|||
|
||||
media::TimeUnit timeThreshold{media::TimeUnit::FromMicroseconds(aTimeThreshold)};
|
||||
if (ShouldSkip(aSkipToNextKeyframe, timeThreshold)) {
|
||||
mVideo.mDecodingRequested = false;
|
||||
Flush(TrackInfo::kVideoTrack);
|
||||
nsRefPtr<VideoDataPromise> p = mVideo.mPromise.Ensure(__func__);
|
||||
SkipVideoDemuxToNextKeyFrame(timeThreshold);
|
||||
|
@ -1026,7 +1025,7 @@ MediaFormatReader::DecodeDemuxedSamples(TrackType aTrack,
|
|||
decoder.mDecoder = nullptr;
|
||||
if (sample->mKeyframe) {
|
||||
decoder.mQueuedSamples.AppendElements(Move(samples));
|
||||
ScheduleUpdate(aTrack);
|
||||
NotifyDecodingRequested(aTrack);
|
||||
} else {
|
||||
MOZ_ASSERT(decoder.mTimeThreshold.isNothing());
|
||||
LOG("Stream change occurred on a non-keyframe. Seeking to:%lld",
|
||||
|
@ -1038,7 +1037,7 @@ MediaFormatReader::DecodeDemuxedSamples(TrackType aTrack,
|
|||
[self, aTrack] (media::TimeUnit aTime) {
|
||||
auto& decoder = self->GetDecoderData(aTrack);
|
||||
decoder.mSeekRequest.Complete();
|
||||
self->ScheduleUpdate(aTrack);
|
||||
self->NotifyDecodingRequested(aTrack);
|
||||
},
|
||||
[self, aTrack] (DemuxerFailureReason aResult) {
|
||||
auto& decoder = self->GetDecoderData(aTrack);
|
||||
|
|
|
@ -289,6 +289,7 @@ private:
|
|||
mReceivedNewData = false;
|
||||
mDiscontinuity = true;
|
||||
mQueuedSamples.Clear();
|
||||
mDecodingRequested = false;
|
||||
mOutputRequested = false;
|
||||
mInputExhausted = false;
|
||||
mNeedDraining = false;
|
||||
|
|
Загрузка…
Ссылка в новой задаче