Bug 1323931. Part 3 - remove mIsAudioQueueFinished/mIsVideoQueueFinished and finish queues in place. r?kaku
MozReview-Commit-ID: CiCudi2F9WV
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -971,20 +971,20 @@ public:
} else {
RequestVideoData();
}
return;
}
if (aError == NS_ERROR_DOM_MEDIA_END_OF_STREAM) {
if (aType == MediaData::AUDIO_DATA) {
- mIsAudioQueueFinished = true;
+ AudioQueue().Finish();
mDoneAudioSeeking = true;
} else {
- mIsVideoQueueFinished = true;
+ VideoQueue().Finish();
mDoneVideoSeeking = true;
if (mFirstVideoFrameAfterSeek) {
// Hit the end of stream. Move mFirstVideoFrameAfterSeek into
// mSeekedVideoData so we have something to display after seeking.
mSeekedVideoData = mFirstVideoFrameAfterSeek.forget();
}
}
MaybeFinishSeek();
@@ -1258,37 +1258,21 @@ private:
}
if (mSeekedVideoData) {
mMaster->Push(mSeekedVideoData);
mMaster->mDecodedVideoEndTime = std::max(
mSeekedVideoData->GetEndTime(), mMaster->mDecodedVideoEndTime);
}
- if (mIsAudioQueueFinished) {
- AudioQueue().Finish();
- }
-
- if (mIsVideoQueueFinished) {
- VideoQueue().Finish();
- }
-
SeekCompleted();
}
void OnSeekTaskRejected(const MediaResult& aError)
{
- if (mIsAudioQueueFinished) {
- AudioQueue().Finish();
- }
-
- if (mIsVideoQueueFinished) {
- VideoQueue().Finish();
- }
-
mMaster->DecodeError(aError);
}
/*
* Track the current seek promise made by the reader.
*/
MozPromiseRequestHolder<MediaDecoderReader::SeekPromise> mSeekRequest;
@@ -1305,18 +1289,16 @@ private:
// last frame in the media.
RefPtr<MediaData> mFirstVideoFrameAfterSeek;
/*
* Information which are going to be returned to MDSM.
*/
RefPtr<MediaData> mSeekedAudioData;
RefPtr<MediaData> mSeekedVideoData;
- bool mIsAudioQueueFinished = false;
- bool mIsVideoQueueFinished = false;
};
class MediaDecoderStateMachine::NextFrameSeekingState
: public MediaDecoderStateMachine::SeekingState
{
public:
explicit NextFrameSeekingState(Master* aPtr) : SeekingState(aPtr)
{