Bug 1322801 part 3 - defer the logic of resetting MDSM to SeekingObject's subclasses; r=jwwang

MozReview-Commit-ID: KPgO74TlQSJ

--HG--
extra : rebase_source : 32b45e76c9292e4b7484bc80df186f29205b7ecd
This commit is contained in:
Kaku Kuo 2016-11-29 18:06:34 +08:00
Родитель 3524304082
Коммит db4795578c
6 изменённых файлов: 17 добавлений и 28 удалений

Просмотреть файл

@ -62,13 +62,6 @@ AccurateSeekTask::Discard()
mIsDiscarded = true;
}
bool
AccurateSeekTask::NeedToResetMDSM() const
{
AssertOwnerThread();
return true;
}
int64_t
AccurateSeekTask::CalculateNewCurrentTime() const
{

Просмотреть файл

@ -27,8 +27,6 @@ public:
RefPtr<SeekTaskPromise> Seek(const media::TimeUnit& aDuration) override;
bool NeedToResetMDSM() const override;
int64_t CalculateNewCurrentTime() const override;
void HandleAudioDecoded(MediaData* aAudio) override;

Просмотреть файл

@ -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<SeekTask::SeekTaskPromise> 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.
}
};

Просмотреть файл

@ -55,13 +55,6 @@ NextFrameSeekTask::Discard()
mIsDiscarded = true;
}
bool
NextFrameSeekTask::NeedToResetMDSM() const
{
AssertOwnerThread();
return false;
}
int64_t
NextFrameSeekTask::CalculateNewCurrentTime() const
{

Просмотреть файл

@ -38,8 +38,6 @@ public:
RefPtr<SeekTaskPromise> Seek(const media::TimeUnit& aDuration) override;
bool NeedToResetMDSM() const override;
int64_t CalculateNewCurrentTime() const override;
void HandleAudioDecoded(MediaData* aAudio) override;

Просмотреть файл

@ -58,8 +58,6 @@ public:
virtual RefPtr<SeekTaskPromise> Seek(const media::TimeUnit& aDuration) = 0;
virtual bool NeedToResetMDSM() const = 0;
virtual int64_t CalculateNewCurrentTime() const = 0;
virtual void HandleAudioDecoded(MediaData* aAudio) = 0;