Bug 1352319. P11 - change the type of NextFrameSeekingState::mCurrentTime to TimeUnit.
MozReview-Commit-ID: Q4u92HgGdF
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1479,17 +1479,17 @@ public:
explicit NextFrameSeekingState(Master* aPtr) : SeekingState(aPtr)
{
}
RefPtr<MediaDecoder::SeekPromise> Enter(SeekJob&& aSeekJob,
EventVisibility aVisibility)
{
MOZ_ASSERT(aSeekJob.mTarget->IsNextFrame());
- mCurrentTime = mMaster->GetMediaTime().ToMicroseconds();
+ mCurrentTime = mMaster->GetMediaTime();
mDuration = mMaster->Duration();
return SeekingState::Enter(Move(aSeekJob), aVisibility);
}
void Exit() override
{
// Disconnect my async seek operation.
mAsyncSeekTask->Cancel();
@@ -1498,17 +1498,17 @@ public:
mSeekJob.RejectIfExists(__func__);
}
private:
void DoSeekInternal()
{
auto currentTime = mCurrentTime;
DiscardFrames(VideoQueue(), [currentTime] (int64_t aSampleTime) {
- return aSampleTime <= currentTime;
+ return aSampleTime <= currentTime.ToMicroseconds();
});
if (!NeedMoreVideo()) {
FinishSeek();
} else if (!mMaster->IsRequestingVideoData()
&& !mMaster->IsWaitingVideoData()) {
RequestVideoData();
}
@@ -1559,17 +1559,17 @@ private:
}
void HandleVideoDecoded(VideoData* aVideo, TimeStamp aDecodeStart) override
{
MOZ_ASSERT(aVideo);
MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished");
MOZ_ASSERT(NeedMoreVideo());
- if (aVideo->mTime > mCurrentTime) {
+ if (aVideo->mTime > mCurrentTime.ToMicroseconds()) {
mMaster->PushVideo(aVideo);
FinishSeek();
} else {
RequestVideoData();
}
}
void HandleWaitingForAudio() override
@@ -1672,18 +1672,18 @@ private:
return aSampleTime < time;
});
SeekCompleted();
}
/*
* Internal state.
*/
- int64_t mCurrentTime;
- media::TimeUnit mDuration;
+ TimeUnit mCurrentTime;
+ TimeUnit mDuration;
RefPtr<AysncNextFrameSeekTask> mAsyncSeekTask;
};
/**
* Purpose: stop playback until enough data is decoded to continue playback.
*
* Transition to:
* SEEKING if any seek request.