void MediaOmxCommonDecoder::ChangeState(PlayState aState) { MOZ_ASSERT(NS_IsMainThread()); // Keep MediaDecoder state in sync with MediaElement irrespective of offload // playback so it will continue to work in normal mode when offloading fails // in between MediaDecoder::ChangeState(aState); if (!mAudioOffloadPlayer) { return; } status_t err = mAudioOffloadPlayer->ChangeState(aState); if (err != OK) { ResumeStateMachine(); return; } switch (mPlayState) { case PLAY_STATE_SEEKING: mSeekRequest.Begin(mAudioOffloadPlayer->Seek(mRequestedSeekTarget) ->RefableThen(AbstractThread::MainThread(), __func__, static_cast<MediaDecoder*>(this), &MediaDecoder::OnSeekResolved, &MediaDecoder::OnSeekRejected)); mRequestedSeekTarget.Reset(); break; default: { break; } } }
void MediaOmxCommonDecoder::SetPlaybackRate(double aPlaybackRate) { MOZ_ASSERT(NS_IsMainThread()); if (mAudioOffloadPlayer && ((aPlaybackRate != 0.0) || (aPlaybackRate != 1.0))) { ResumeStateMachine(); } MediaDecoder::SetPlaybackRate(aPlaybackRate); }
void MediaOmxCommonDecoder::AudioOffloadTearDown() { MOZ_ASSERT(NS_IsMainThread()); DECODER_LOG(LogLevel::Debug, ("%s", __PRETTY_FUNCTION__)); // mAudioOffloadPlayer can be null here if ResumeStateMachine was called // just before because of some other error. if (mAudioOffloadPlayer) { ResumeStateMachine(); } }
void MediaOmxCommonDecoder::AddOutputStream(ProcessedMediaStream* aStream, bool aFinishWhenEnded) { MOZ_ASSERT(NS_IsMainThread()); if (mAudioOffloadPlayer) { ResumeStateMachine(); } MediaDecoder::AddOutputStream(aStream, aFinishWhenEnded); }
void MediaOmxDecoder::SetPlaybackRate(double aPlaybackRate) { MOZ_ASSERT(NS_IsMainThread()); if (mAudioOffloadPlayer && ((aPlaybackRate != 0.0) || (aPlaybackRate != 1.0))) { // Offload player cannot handle playback rate other than 1/0. Fallback PlaybackPositionChanged(); ResumeStateMachine(); } MediaDecoder::SetPlaybackRate(aPlaybackRate); }
void MediaOmxDecoder::AddOutputStream(ProcessedMediaStream* aStream, bool aFinishWhenEnded) { MOZ_ASSERT(NS_IsMainThread()); if (mAudioOffloadPlayer) { // Offload player cannot handle MediaStream. Fallback PlaybackPositionChanged(); ResumeStateMachine(); } MediaDecoder::AddOutputStream(aStream, aFinishWhenEnded); }
void MediaOmxDecoder::AudioOffloadTearDown() { MOZ_ASSERT(NS_IsMainThread()); DECODER_LOG(PR_LOG_DEBUG, ("%s", __PRETTY_FUNCTION__)); // mAudioOffloadPlayer can be null here if ResumeStateMachine was called // just before because of some other error. if (mAudioOffloadPlayer) { // Audio offload player sent tear down event. Fallback to state machine PlaybackPositionChanged(); ResumeStateMachine(); } }
void MediaOmxDecoder::ChangeState(PlayState aState) { MOZ_ASSERT(NS_IsMainThread()); // Keep MediaDecoder state in sync with MediaElement irrespective of offload // playback so it will continue to work in normal mode when offloading fails // in between MediaDecoder::ChangeState(aState); if (mAudioOffloadPlayer) { status_t err = mAudioOffloadPlayer->ChangeState(aState); if (err != OK) { ResumeStateMachine(); } } }