Bug 1330254. Part 4 - let Handle{Audio,Video}Canceled and Handle{Audio,Video}Waited call Request{Audio,Video}Data instead.
draft
Bug 1330254. Part 4 - let Handle{Audio,Video}Canceled and Handle{Audio,Video}Waited call Request{Audio,Video}Data instead.
The same reason as
bug 1329897 P3.
MozReview-Commit-ID: AhyFnUmXoOr
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -669,22 +669,24 @@ public:
mMaster->PushVideo(aVideo);
DispatchDecodeTasksIfNeeded();
MaybeStopPrerolling();
CheckSlowDecoding(aDecodeStart);
}
void HandleAudioCanceled() override
{
- EnsureAudioDecodeTaskQueued();
+ mMaster->RequestAudioData();
}
void HandleVideoCanceled() override
{
- EnsureVideoDecodeTaskQueued();
+ mMaster->RequestVideoData(
+ NeedToSkipToNextKeyframe(),
+ media::TimeUnit::FromMicroseconds(mMaster->GetMediaTime()));
}
void HandleEndOfAudio() override;
void HandleEndOfVideo() override;
void HandleWaitingForAudio() override
{
mMaster->WaitForData(MediaData::AUDIO_DATA);
@@ -694,22 +696,24 @@ public:
void HandleWaitingForVideo() override
{
mMaster->WaitForData(MediaData::VIDEO_DATA);
MaybeStopPrerolling();
}
void HandleAudioWaited(MediaData::Type aType) override
{
- EnsureAudioDecodeTaskQueued();
+ mMaster->RequestAudioData();
}
void HandleVideoWaited(MediaData::Type aType) override
{
- EnsureVideoDecodeTaskQueued();
+ mMaster->RequestVideoData(
+ NeedToSkipToNextKeyframe(),
+ media::TimeUnit::FromMicroseconds(mMaster->GetMediaTime()));
}
void HandleAudioCaptured() override
{
MaybeStopPrerolling();
// MediaSink is changed. Schedule Step() to check if we can start playback.
mMaster->ScheduleStateMachine();
}