зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
3524304082
Коммит
db4795578c
|
@ -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;
|
||||
|
|
Загрузка…
Ссылка в новой задаче