зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1363668: P3. Assert that no error can occur while an internal seek is pending. r=jwwang
An internal seek occurs when we've reached a data gap, EOS or a previous error got skipped. During this time, the decoder has been either flushed or shut down. MozReview-Commit-ID: 69OBaZz4ZNq --HG-- extra : rebase_source : aecac0d3872069567cf722ebfd338eef36a52d39
This commit is contained in:
Родитель
0c97eee924
Коммит
5b33cd4ec6
|
@ -2346,6 +2346,8 @@ MediaFormatReader::Update(TrackType aTrack)
|
|||
}
|
||||
|
||||
if (decoder.mError && !decoder.HasFatalError()) {
|
||||
MOZ_RELEASE_ASSERT(!decoder.HasInternalSeekPending(),
|
||||
"No error can occur while an internal seek is pending");
|
||||
bool needsNewDecoder =
|
||||
decoder.mError.ref() == NS_ERROR_DOM_MEDIA_NEED_NEW_DECODER;
|
||||
if (!needsNewDecoder
|
||||
|
@ -2370,9 +2372,9 @@ MediaFormatReader::Update(TrackType aTrack)
|
|||
}
|
||||
|
||||
TimeUnit nextKeyframe;
|
||||
if (aTrack == TrackType::kVideoTrack && !decoder.HasInternalSeekPending()
|
||||
&& NS_SUCCEEDED(
|
||||
decoder.mTrackDemuxer->GetNextRandomAccessPoint(&nextKeyframe))) {
|
||||
if (aTrack == TrackType::kVideoTrack &&
|
||||
NS_SUCCEEDED(
|
||||
decoder.mTrackDemuxer->GetNextRandomAccessPoint(&nextKeyframe))) {
|
||||
SkipVideoDemuxToNextKeyFrame(
|
||||
decoder.mLastDecodedSampleTime.refOr(TimeInterval()).Length());
|
||||
} else if (aTrack == TrackType::kAudioTrack) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче