From 759486911bc94db2e06e8d345fa356610c1921bf Mon Sep 17 00:00:00 2001 From: trav90 Date: Mon, 1 May 2017 04:32:53 -0500 Subject: [PATCH] Get rid of RefableThen and make Then return an nsRefPtr --- dom/media/MediaDecoder.cpp | 2 +- dom/media/MediaDecoderStateMachine.cpp | 78 ++++++++++----------- dom/media/MediaDecoderStateMachine.h | 2 +- dom/media/MediaFormatReader.cpp | 38 +++++----- dom/media/MediaPromise.h | 32 ++------- dom/media/mediasource/MediaSourceReader.cpp | 54 +++++++------- dom/media/mediasource/SourceBuffer.cpp | 6 +- dom/media/mediasource/TrackBuffer.cpp | 8 +-- dom/media/omx/MediaOmxCommonDecoder.cpp | 4 +- 9 files changed, 103 insertions(+), 121 deletions(-) diff --git a/dom/media/MediaDecoder.cpp b/dom/media/MediaDecoder.cpp index 6551500683..cf43fa56e8 100644 --- a/dom/media/MediaDecoder.cpp +++ b/dom/media/MediaDecoder.cpp @@ -1319,7 +1319,7 @@ void MediaDecoder::ApplyStateToStateMachine(PlayState aState) mSeekRequest.Begin(ProxyMediaCall(mDecoderStateMachine->TaskQueue(), mDecoderStateMachine.get(), __func__, &MediaDecoderStateMachine::Seek, mRequestedSeekTarget) - ->RefableThen(AbstractThread::MainThread(), __func__, this, + ->Then(AbstractThread::MainThread(), __func__, this, &MediaDecoder::OnSeekResolved, &MediaDecoder::OnSeekRejected)); mRequestedSeekTarget.Reset(); break; diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp index 9d6aa124eb..7801a63b6b 100644 --- a/dom/media/MediaDecoderStateMachine.cpp +++ b/dom/media/MediaDecoderStateMachine.cpp @@ -936,16 +936,16 @@ MediaDecoderStateMachine::OnNotDecoded(MediaData::Type aType, nsRefPtr self = this; WaitRequestRef(aType).Begin(ProxyMediaCall(DecodeTaskQueue(), mReader.get(), __func__, &MediaDecoderReader::WaitForData, aType) - ->RefableThen(TaskQueue(), __func__, - [self] (MediaData::Type aType) -> void { - ReentrantMonitorAutoEnter mon(self->mDecoder->GetReentrantMonitor()); - self->WaitRequestRef(aType).Complete(); - self->DispatchDecodeTasksIfNeeded(); - }, - [self] (WaitForDataRejectValue aRejection) -> void { - ReentrantMonitorAutoEnter mon(self->mDecoder->GetReentrantMonitor()); - self->WaitRequestRef(aRejection.mType).Complete(); - })); + ->Then(TaskQueue(), __func__, + [self] (MediaData::Type aType) -> void { + ReentrantMonitorAutoEnter mon(self->mDecoder->GetReentrantMonitor()); + self->WaitRequestRef(aType).Complete(); + self->DispatchDecodeTasksIfNeeded(); + }, + [self] (WaitForDataRejectValue aRejection) -> void { + ReentrantMonitorAutoEnter mon(self->mDecoder->GetReentrantMonitor()); + self->WaitRequestRef(aRejection.mType).Complete(); + })); return; } @@ -1910,20 +1910,20 @@ MediaDecoderStateMachine::InitiateSeek() mSeekRequest.Begin(ProxyMediaCall(DecodeTaskQueue(), mReader.get(), __func__, &MediaDecoderReader::Seek, mCurrentSeek.mTarget.mTime, GetEndTime()) - ->RefableThen(TaskQueue(), __func__, - [self] (int64_t) -> void { - ReentrantMonitorAutoEnter mon(self->mDecoder->GetReentrantMonitor()); - self->mSeekRequest.Complete(); - // We must decode the first samples of active streams, so we can determine - // the new stream time. So dispatch tasks to do that. - self->mDecodeToSeekTarget = true; - self->DispatchDecodeTasksIfNeeded(); - }, [self] (nsresult aResult) -> void { - ReentrantMonitorAutoEnter mon(self->mDecoder->GetReentrantMonitor()); - self->mSeekRequest.Complete(); - MOZ_ASSERT(NS_FAILED(aResult), "Cancels should also disconnect mSeekRequest"); - self->DecodeError(); - })); + ->Then(TaskQueue(), __func__, + [self] (int64_t) -> void { + ReentrantMonitorAutoEnter mon(self->mDecoder->GetReentrantMonitor()); + self->mSeekRequest.Complete(); + // We must decode the first samples of active streams, so we can determine + // the new stream time. So dispatch tasks to do that. + self->mDecodeToSeekTarget = true; + self->DispatchDecodeTasksIfNeeded(); + }, [self] (nsresult aResult) -> void { + ReentrantMonitorAutoEnter mon(self->mDecoder->GetReentrantMonitor()); + self->mSeekRequest.Complete(); + MOZ_ASSERT(NS_FAILED(aResult), "Cancels should also disconnect mSeekRequest"); + self->DecodeError(); + })); } nsresult @@ -1969,9 +1969,9 @@ MediaDecoderStateMachine::EnsureAudioDecodeTaskQueued() mAudioDataRequest.Begin(ProxyMediaCall(DecodeTaskQueue(), mReader.get(), __func__, &MediaDecoderReader::RequestAudioData) - ->RefableThen(TaskQueue(), __func__, this, - &MediaDecoderStateMachine::OnAudioDecoded, - &MediaDecoderStateMachine::OnAudioNotDecoded)); + ->Then(TaskQueue(), __func__, this, + &MediaDecoderStateMachine::OnAudioDecoded, + &MediaDecoderStateMachine::OnAudioNotDecoded)); return NS_OK; } @@ -2029,9 +2029,9 @@ MediaDecoderStateMachine::EnsureVideoDecodeTaskQueued() mVideoDataRequest.Begin(ProxyMediaCall(DecodeTaskQueue(), mReader.get(), __func__, &MediaDecoderReader::RequestVideoData, skipToNextKeyFrame, currentTime) - ->RefableThen(TaskQueue(), __func__, this, - &MediaDecoderStateMachine::OnVideoDecoded, - &MediaDecoderStateMachine::OnVideoNotDecoded)); + ->Then(TaskQueue(), __func__, this, + &MediaDecoderStateMachine::OnVideoDecoded, + &MediaDecoderStateMachine::OnVideoNotDecoded)); return NS_OK; } @@ -2317,18 +2317,18 @@ MediaDecoderStateMachine::DecodeFirstFrame() if (HasAudio()) { mAudioDataRequest.Begin(ProxyMediaCall(DecodeTaskQueue(), mReader.get(), __func__, &MediaDecoderReader::RequestAudioData) - ->RefableThen(TaskQueue(), __func__, this, - &MediaDecoderStateMachine::OnAudioDecoded, - &MediaDecoderStateMachine::OnAudioNotDecoded)); + ->Then(TaskQueue(), __func__, this, + &MediaDecoderStateMachine::OnAudioDecoded, + &MediaDecoderStateMachine::OnAudioNotDecoded)); } if (HasVideo()) { mVideoDecodeStartTime = TimeStamp::Now(); mVideoDataRequest.Begin(ProxyMediaCall(DecodeTaskQueue(), mReader.get(), __func__, &MediaDecoderReader::RequestVideoData, false, int64_t(0)) - ->RefableThen(TaskQueue(), __func__, this, - &MediaDecoderStateMachine::OnVideoDecoded, - &MediaDecoderStateMachine::OnVideoNotDecoded)); + ->Then(TaskQueue(), __func__, this, + &MediaDecoderStateMachine::OnVideoDecoded, + &MediaDecoderStateMachine::OnVideoNotDecoded)); } } @@ -2637,9 +2637,9 @@ nsresult MediaDecoderStateMachine::RunStateMachine() DECODER_LOG("Dispatching AsyncReadMetadata"); mMetadataRequest.Begin(ProxyMediaCall(DecodeTaskQueue(), mReader.get(), __func__, &MediaDecoderReader::AsyncReadMetadata) - ->RefableThen(TaskQueue(), __func__, this, - &MediaDecoderStateMachine::OnMetadataRead, - &MediaDecoderStateMachine::OnMetadataNotRead)); + ->Then(TaskQueue(), __func__, this, + &MediaDecoderStateMachine::OnMetadataRead, + &MediaDecoderStateMachine::OnMetadataNotRead)); } return NS_OK; } diff --git a/dom/media/MediaDecoderStateMachine.h b/dom/media/MediaDecoderStateMachine.h index 4375812c8c..c7bc2c1aca 100644 --- a/dom/media/MediaDecoderStateMachine.h +++ b/dom/media/MediaDecoderStateMachine.h @@ -827,7 +827,7 @@ public: } Reset(); mTarget = aTarget; - mRequest.Begin(mMediaTimer->WaitUntil(mTarget, __func__)->RefableThen( + mRequest.Begin(mMediaTimer->WaitUntil(mTarget, __func__)->Then( mSelf->TaskQueue(), __func__, mSelf, &MediaDecoderStateMachine::OnDelayedSchedule, &MediaDecoderStateMachine::NotReached)); diff --git a/dom/media/MediaFormatReader.cpp b/dom/media/MediaFormatReader.cpp index 1093e06ccb..e3ca68cc84 100644 --- a/dom/media/MediaFormatReader.cpp +++ b/dom/media/MediaFormatReader.cpp @@ -237,10 +237,10 @@ MediaFormatReader::AsyncReadMetadata() nsRefPtr p = mMetadataPromise.Ensure(__func__); mDemuxerInitRequest.Begin(mDemuxer->Init() - ->RefableThen(GetTaskQueue(), __func__, - this, - &MediaFormatReader::OnDemuxerInitDone, - &MediaFormatReader::OnDemuxerInitFailed)); + ->Then(GetTaskQueue(), __func__, + this, + &MediaFormatReader::OnDemuxerInitDone, + &MediaFormatReader::OnDemuxerInitFailed)); return p; } @@ -536,9 +536,9 @@ MediaFormatReader::DoDemuxVideo() { // TODO Use DecodeAhead value rather than 1. mVideo.mDemuxRequest.Begin(mVideo.mTrackDemuxer->GetSamples(1) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaFormatReader::OnVideoDemuxCompleted, - &MediaFormatReader::OnVideoDemuxFailed)); + ->Then(GetTaskQueue(), __func__, this, + &MediaFormatReader::OnVideoDemuxCompleted, + &MediaFormatReader::OnVideoDemuxFailed)); } void @@ -591,9 +591,9 @@ MediaFormatReader::DoDemuxAudio() { // TODO Use DecodeAhead value rather than 1. mAudio.mDemuxRequest.Begin(mAudio.mTrackDemuxer->GetSamples(1) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaFormatReader::OnAudioDemuxCompleted, - &MediaFormatReader::OnAudioDemuxFailed)); + ->Then(GetTaskQueue(), __func__, this, + &MediaFormatReader::OnAudioDemuxCompleted, + &MediaFormatReader::OnAudioDemuxFailed)); } void @@ -1043,9 +1043,9 @@ MediaFormatReader::SkipVideoDemuxToNextKeyFrame(media::TimeUnit aTimeThreshold) } mSkipRequest.Begin(mVideo.mTrackDemuxer->SkipToNextRandomAccessPoint(aTimeThreshold) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaFormatReader::OnVideoSkipCompleted, - &MediaFormatReader::OnVideoSkipFailed)); + ->Then(GetTaskQueue(), __func__, this, + &MediaFormatReader::OnVideoSkipCompleted, + &MediaFormatReader::OnVideoSkipFailed)); return; } @@ -1143,9 +1143,9 @@ MediaFormatReader::DoVideoSeek() MOZ_ASSERT(mPendingSeekTime.isSome()); media::TimeUnit seekTime = mPendingSeekTime.ref(); mVideoSeekRequest.Begin(mVideo.mTrackDemuxer->Seek(seekTime) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaFormatReader::OnVideoSeekCompleted, - &MediaFormatReader::OnVideoSeekFailed)); + ->Then(GetTaskQueue(), __func__, this, + &MediaFormatReader::OnVideoSeekCompleted, + &MediaFormatReader::OnVideoSeekFailed)); } void @@ -1169,9 +1169,9 @@ MediaFormatReader::DoAudioSeek() MOZ_ASSERT(mPendingSeekTime.isSome()); media::TimeUnit seekTime = mPendingSeekTime.ref(); mAudioSeekRequest.Begin(mAudio.mTrackDemuxer->Seek(seekTime) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaFormatReader::OnAudioSeekCompleted, - &MediaFormatReader::OnAudioSeekFailed)); + ->Then(GetTaskQueue(), __func__, this, + &MediaFormatReader::OnAudioSeekCompleted, + &MediaFormatReader::OnAudioSeekFailed)); } void diff --git a/dom/media/MediaPromise.h b/dom/media/MediaPromise.h index feba1e296b..e6c3c68264 100644 --- a/dom/media/MediaPromise.h +++ b/dom/media/MediaPromise.h @@ -375,41 +375,23 @@ public: public: template - already_AddRefed RefableThen(AbstractThread* aResponseThread, const char* aCallSite, ThisType* aThisVal, - ResolveMethodType aResolveMethod, RejectMethodType aRejectMethod) + nsRefPtr Then(AbstractThread* aResponseThread, const char* aCallSite, ThisType* aThisVal, + ResolveMethodType aResolveMethod, RejectMethodType aRejectMethod) { nsRefPtr thenValue = new MethodThenValue( aResponseThread, aThisVal, aResolveMethod, aRejectMethod, aCallSite); ThenInternal(aResponseThread, thenValue, aCallSite); - return thenValue.forget(); + return thenValue.forget(); // Implicit conversion from already_AddRefed to nsRefPtr. } template - already_AddRefed RefableThen(AbstractThread* aResponseThread, const char* aCallSite, - ResolveFunction&& aResolveFunction, RejectFunction&& aRejectFunction) + nsRefPtr Then(AbstractThread* aResponseThread, const char* aCallSite, + ResolveFunction&& aResolveFunction, RejectFunction&& aRejectFunction) { nsRefPtr thenValue = new FunctionThenValue(aResponseThread, Move(aResolveFunction), Move(aRejectFunction), aCallSite); ThenInternal(aResponseThread, thenValue, aCallSite); - return thenValue.forget(); - } - - template - void Then(AbstractThread* aResponseThread, const char* aCallSite, ThisType* aThisVal, - ResolveMethodType aResolveMethod, RejectMethodType aRejectMethod) - { - nsRefPtr c = - RefableThen(aResponseThread, aCallSite, aThisVal, aResolveMethod, aRejectMethod); - return; - } - - template - void Then(AbstractThread* aResponseThread, const char* aCallSite, - ResolveFunction&& aResolveFunction, RejectFunction&& aRejectFunction) - { - nsRefPtr c = - RefableThen(aResponseThread, aCallSite, Move(aResolveFunction), Move(aRejectFunction)); - return; + return thenValue.forget(); // Implicit conversion from already_AddRefed to nsRefPtr. } void ChainTo(already_AddRefed aChainedPromise, const char* aCallSite) @@ -605,7 +587,7 @@ public: MediaPromiseConsumerHolder() {} ~MediaPromiseConsumerHolder() { MOZ_ASSERT(!mConsumer); } - void Begin(already_AddRefed aConsumer) + void Begin(typename PromiseType::Consumer* aConsumer) { MOZ_DIAGNOSTIC_ASSERT(!Exists()); mConsumer = aConsumer; diff --git a/dom/media/mediasource/MediaSourceReader.cpp b/dom/media/mediasource/MediaSourceReader.cpp index b1ac2f488d..bc35354016 100644 --- a/dom/media/mediasource/MediaSourceReader.cpp +++ b/dom/media/mediasource/MediaSourceReader.cpp @@ -142,9 +142,9 @@ MediaSourceReader::RequestAudioData() case SOURCE_NEW: GetAudioReader()->ResetDecode(); mAudioSeekRequest.Begin(GetAudioReader()->Seek(GetReaderAudioTime(mLastAudioTime), 0) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaSourceReader::CompleteAudioSeekAndDoRequest, - &MediaSourceReader::CompleteAudioSeekAndRejectPromise)); + ->Then(GetTaskQueue(), __func__, this, + &MediaSourceReader::CompleteAudioSeekAndDoRequest, + &MediaSourceReader::CompleteAudioSeekAndRejectPromise)); break; case SOURCE_NONE: if (!mLastAudioTime) { @@ -167,9 +167,9 @@ MediaSourceReader::RequestAudioData() void MediaSourceReader::DoAudioRequest() { mAudioRequest.Begin(GetAudioReader()->RequestAudioData() - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaSourceReader::OnAudioDecoded, - &MediaSourceReader::OnAudioNotDecoded)); + ->Then(GetTaskQueue(), __func__, this, + &MediaSourceReader::OnAudioDecoded, + &MediaSourceReader::OnAudioNotDecoded)); } void @@ -190,9 +190,9 @@ MediaSourceReader::OnAudioDecoded(AudioData* aSample) MSE_DEBUG("mTime=%lld < mTimeThreshold=%lld", ourTime, mTimeThreshold); mAudioRequest.Begin(GetAudioReader()->RequestAudioData() - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaSourceReader::OnAudioDecoded, - &MediaSourceReader::OnAudioNotDecoded)); + ->Then(GetTaskQueue(), __func__, this, + &MediaSourceReader::OnAudioDecoded, + &MediaSourceReader::OnAudioNotDecoded)); return; } mDropAudioBeforeThreshold = false; @@ -260,9 +260,9 @@ MediaSourceReader::OnAudioNotDecoded(NotDecodedReason aReason) if (result == SOURCE_NEW) { GetAudioReader()->ResetDecode(); mAudioSeekRequest.Begin(GetAudioReader()->Seek(GetReaderAudioTime(mLastAudioTime), 0) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaSourceReader::CompleteAudioSeekAndDoRequest, - &MediaSourceReader::CompleteAudioSeekAndRejectPromise)); + ->Then(GetTaskQueue(), __func__, this, + &MediaSourceReader::CompleteAudioSeekAndDoRequest, + &MediaSourceReader::CompleteAudioSeekAndRejectPromise)); return; } @@ -315,9 +315,9 @@ MediaSourceReader::RequestVideoData(bool aSkipToNextKeyframe, int64_t aTimeThres case SOURCE_NEW: GetVideoReader()->ResetDecode(); mVideoSeekRequest.Begin(GetVideoReader()->Seek(GetReaderVideoTime(mLastVideoTime), 0) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaSourceReader::CompleteVideoSeekAndDoRequest, - &MediaSourceReader::CompleteVideoSeekAndRejectPromise)); + ->Then(GetTaskQueue(), __func__, this, + &MediaSourceReader::CompleteVideoSeekAndDoRequest, + &MediaSourceReader::CompleteVideoSeekAndRejectPromise)); break; case SOURCE_NONE: if (!mLastVideoTime) { @@ -342,9 +342,9 @@ void MediaSourceReader::DoVideoRequest() { mVideoRequest.Begin(GetVideoReader()->RequestVideoData(mDropVideoBeforeThreshold, GetReaderVideoTime(mTimeThreshold)) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaSourceReader::OnVideoDecoded, - &MediaSourceReader::OnVideoNotDecoded)); + ->Then(GetTaskQueue(), __func__, this, + &MediaSourceReader::OnVideoDecoded, + &MediaSourceReader::OnVideoNotDecoded)); } void @@ -412,9 +412,9 @@ MediaSourceReader::OnVideoNotDecoded(NotDecodedReason aReason) if (result == SOURCE_NEW) { GetVideoReader()->ResetDecode(); mVideoSeekRequest.Begin(GetVideoReader()->Seek(GetReaderVideoTime(mLastVideoTime), 0) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaSourceReader::CompleteVideoSeekAndDoRequest, - &MediaSourceReader::CompleteVideoSeekAndRejectPromise)); + ->Then(GetTaskQueue(), __func__, this, + &MediaSourceReader::CompleteVideoSeekAndDoRequest, + &MediaSourceReader::CompleteVideoSeekAndRejectPromise)); return; } @@ -901,9 +901,9 @@ MediaSourceReader::DoAudioSeek() } GetAudioReader()->ResetDecode(); mAudioSeekRequest.Begin(GetAudioReader()->Seek(GetReaderAudioTime(seekTime), 0) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaSourceReader::OnAudioSeekCompleted, - &MediaSourceReader::OnAudioSeekFailed)); + ->Then(GetTaskQueue(), __func__, this, + &MediaSourceReader::OnAudioSeekCompleted, + &MediaSourceReader::OnAudioSeekFailed)); MSE_DEBUG("reader=%p", GetAudioReader()); } @@ -973,9 +973,9 @@ MediaSourceReader::DoVideoSeek() } GetVideoReader()->ResetDecode(); mVideoSeekRequest.Begin(GetVideoReader()->Seek(GetReaderVideoTime(seekTime), 0) - ->RefableThen(GetTaskQueue(), __func__, this, - &MediaSourceReader::OnVideoSeekCompleted, - &MediaSourceReader::OnVideoSeekFailed)); + ->Then(GetTaskQueue(), __func__, this, + &MediaSourceReader::OnVideoSeekCompleted, + &MediaSourceReader::OnVideoSeekFailed)); MSE_DEBUG("reader=%p", GetVideoReader()); } diff --git a/dom/media/mediasource/SourceBuffer.cpp b/dom/media/mediasource/SourceBuffer.cpp index 6d086797f7..92235cf16b 100644 --- a/dom/media/mediasource/SourceBuffer.cpp +++ b/dom/media/mediasource/SourceBuffer.cpp @@ -451,9 +451,9 @@ SourceBuffer::AppendData(MediaLargeByteBuffer* aData, TimeUnit aTimestampOffset, } mPendingAppend.Begin(mContentManager->AppendData(aData, aTimestampOffset) - ->RefableThen(AbstractThread::MainThread(), __func__, this, - &SourceBuffer::AppendDataCompletedWithSuccess, - &SourceBuffer::AppendDataErrored)); + ->Then(AbstractThread::MainThread(), __func__, this, + &SourceBuffer::AppendDataCompletedWithSuccess, + &SourceBuffer::AppendDataErrored)); } void diff --git a/dom/media/mediasource/TrackBuffer.cpp b/dom/media/mediasource/TrackBuffer.cpp index b608af805e..373eac6b99 100644 --- a/dom/media/mediasource/TrackBuffer.cpp +++ b/dom/media/mediasource/TrackBuffer.cpp @@ -675,10 +675,10 @@ TrackBuffer::InitializeDecoder(SourceBufferDecoder* aDecoder) } mMetadataRequest.Begin(promise - ->RefableThen(reader->GetTaskQueue(), __func__, - recipient.get(), - &MetadataRecipient::OnMetadataRead, - &MetadataRecipient::OnMetadataNotRead)); + ->Then(reader->GetTaskQueue(), __func__, + recipient.get(), + &MetadataRecipient::OnMetadataRead, + &MetadataRecipient::OnMetadataNotRead)); } void diff --git a/dom/media/omx/MediaOmxCommonDecoder.cpp b/dom/media/omx/MediaOmxCommonDecoder.cpp index 2e19937810..bb03a98d7b 100644 --- a/dom/media/omx/MediaOmxCommonDecoder.cpp +++ b/dom/media/omx/MediaOmxCommonDecoder.cpp @@ -221,8 +221,8 @@ MediaOmxCommonDecoder::ChangeState(PlayState aState) switch (mPlayState) { case PLAY_STATE_SEEKING: mSeekRequest.Begin(mAudioOffloadPlayer->Seek(mRequestedSeekTarget) - ->RefableThen(AbstractThread::MainThread(), __func__, static_cast(this), - &MediaDecoder::OnSeekResolved, &MediaDecoder::OnSeekRejected)); + ->Then(AbstractThread::MainThread(), __func__, static_cast(this), + &MediaDecoder::OnSeekResolved, &MediaDecoder::OnSeekRejected)); mRequestedSeekTarget.Reset(); break; default: {