diff --git a/dom/media/AccurateSeekTask.cpp b/dom/media/AccurateSeekTask.cpp index 739fa3a76082..c3206b63bf5c 100644 --- a/dom/media/AccurateSeekTask.cpp +++ b/dom/media/AccurateSeekTask.cpp @@ -62,13 +62,6 @@ AccurateSeekTask::Discard() mIsDiscarded = true; } -bool -AccurateSeekTask::NeedToResetMDSM() const -{ - AssertOwnerThread(); - return true; -} - int64_t AccurateSeekTask::CalculateNewCurrentTime() const { diff --git a/dom/media/AccurateSeekTask.h b/dom/media/AccurateSeekTask.h index 96e10b42f7ba..f2daf84c7d51 100644 --- a/dom/media/AccurateSeekTask.h +++ b/dom/media/AccurateSeekTask.h @@ -27,8 +27,6 @@ public: RefPtr Seek(const media::TimeUnit& aDuration) override; - bool NeedToResetMDSM() const override; - int64_t CalculateNewCurrentTime() const override; void HandleAudioDecoded(MediaData* aAudio) override; diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp index c21979339b59..b659751e0285 100644 --- a/dom/media/MediaDecoderStateMachine.cpp +++ b/dom/media/MediaDecoderStateMachine.cpp @@ -789,14 +789,7 @@ public: mMaster->UpdateNextFrameStatus(MediaDecoderOwner::NEXT_FRAME_UNAVAILABLE_SEEKING); } - // Reset our state machine and decoding pipeline before seeking. - if (mSeekTask->NeedToResetMDSM()) { - if (mSeekJob.mTarget.IsVideoOnly()) { - mMaster->Reset(TrackInfo::kVideoTrack); - } else { - mMaster->Reset(); - } - } + ResetMDSM(); // Do the seek. mSeekTaskRequest.Begin(mSeekTask->Seek(mMaster->Duration()) @@ -915,6 +908,8 @@ private: virtual void CreateSeekTask() = 0; + virtual void ResetMDSM() = 0; + MozPromiseRequestHolder mSeekTaskRequest; }; @@ -940,6 +935,15 @@ private: mMaster->mDecoderID, OwnerThread(), Reader(), mSeekJob.mTarget, Info(), mMaster->Duration(), mMaster->GetMediaTime()); } + + void ResetMDSM() override + { + if (mSeekJob.mTarget.IsVideoOnly()) { + mMaster->Reset(TrackInfo::kVideoTrack); + } else { + mMaster->Reset(); + } + } }; class MediaDecoderStateMachine::NextFrameSeekingState @@ -965,6 +969,11 @@ private: Info(), mMaster->Duration(),mMaster->GetMediaTime(), AudioQueue(), VideoQueue()); } + + void ResetMDSM() override + { + // Do nothing. + } }; diff --git a/dom/media/NextFrameSeekTask.cpp b/dom/media/NextFrameSeekTask.cpp index ad2a52c4bbca..5ecc1b058016 100644 --- a/dom/media/NextFrameSeekTask.cpp +++ b/dom/media/NextFrameSeekTask.cpp @@ -55,13 +55,6 @@ NextFrameSeekTask::Discard() mIsDiscarded = true; } -bool -NextFrameSeekTask::NeedToResetMDSM() const -{ - AssertOwnerThread(); - return false; -} - int64_t NextFrameSeekTask::CalculateNewCurrentTime() const { diff --git a/dom/media/NextFrameSeekTask.h b/dom/media/NextFrameSeekTask.h index f2ce70e3b427..534d70cbce56 100644 --- a/dom/media/NextFrameSeekTask.h +++ b/dom/media/NextFrameSeekTask.h @@ -38,8 +38,6 @@ public: RefPtr Seek(const media::TimeUnit& aDuration) override; - bool NeedToResetMDSM() const override; - int64_t CalculateNewCurrentTime() const override; void HandleAudioDecoded(MediaData* aAudio) override; diff --git a/dom/media/SeekTask.h b/dom/media/SeekTask.h index 04a84d06e479..bc11f8942dfd 100644 --- a/dom/media/SeekTask.h +++ b/dom/media/SeekTask.h @@ -58,8 +58,6 @@ public: virtual RefPtr Seek(const media::TimeUnit& aDuration) = 0; - virtual bool NeedToResetMDSM() const = 0; - virtual int64_t CalculateNewCurrentTime() const = 0; virtual void HandleAudioDecoded(MediaData* aAudio) = 0;