Loading media/libmediaplayerservice/nuplayer/NuPlayer.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -966,6 +966,8 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { ALOGV("Tear down audio offload, fall back to s/w path"); int64_t positionUs; CHECK(msg->findInt64("positionUs", &positionUs)); int32_t reason; CHECK(msg->findInt32("reason", &reason)); closeAudioSink(); mAudioDecoder.clear(); ++mAudioDecoderGeneration; Loading @@ -977,8 +979,10 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { mOffloadAudio = false; performSeek(positionUs, false /* needNotify */); if (reason == Renderer::kDueToError) { instantiateDecoder(true /* audio */, &mAudioDecoder); } } break; } Loading Loading @@ -1044,6 +1048,11 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { } else { ALOGW("resume called when source is gone or not set"); } // |mAudioDecoder| may have been released due to the pause timeout, so try to re-create // it if needed. if (mFlushingAudio != SHUT_DOWN) { instantiateDecoder(true /* audio */, &mAudioDecoder); } if (mRenderer != NULL) { mRenderer->resume(); } else { Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -274,7 +274,7 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { case kWhatAudioOffloadTearDown: { onAudioOffloadTearDown(); onAudioOffloadTearDown(kDueToError); break; } Loading @@ -285,7 +285,8 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { if (generation != mAudioOffloadPauseTimeoutGeneration) { break; } onAudioOffloadTearDown(); ALOGV("Audio Offload tear down due to pause timeout."); onAudioOffloadTearDown(kDueToTimeout); break; } Loading Loading @@ -1089,7 +1090,7 @@ int64_t NuPlayer::Renderer::getPlayedOutAudioDurationUs(int64_t nowUs) { return durationUs; } void NuPlayer::Renderer::onAudioOffloadTearDown() { void NuPlayer::Renderer::onAudioOffloadTearDown(AudioOffloadTearDownReason reason) { if (mAudioOffloadTornDown) { return; } Loading @@ -1110,6 +1111,7 @@ void NuPlayer::Renderer::onAudioOffloadTearDown() { sp<AMessage> notify = mNotify->dup(); notify->setInt32("what", kWhatAudioOffloadTearDown); notify->setInt64("positionUs", currentPositionUs); notify->setInt32("reason", reason); notify->post(); } Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +6 −1 Original line number Diff line number Diff line Loading @@ -69,6 +69,11 @@ struct NuPlayer::Renderer : public AHandler { kWhatAudioOffloadPauseTimeout = 'aOPT', }; enum AudioOffloadTearDownReason { kDueToError = 0, kDueToTimeout, }; protected: virtual ~Renderer(); Loading Loading @@ -157,7 +162,7 @@ private: void onPause(); void onResume(); void onSetVideoFrameRate(float fps); void onAudioOffloadTearDown(); void onAudioOffloadTearDown(AudioOffloadTearDownReason reason); void notifyEOS(bool audio, status_t finalResult, int64_t delayUs = 0); void notifyFlushComplete(bool audio); Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayer.cpp +10 −1 Original line number Diff line number Diff line Loading @@ -966,6 +966,8 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { ALOGV("Tear down audio offload, fall back to s/w path"); int64_t positionUs; CHECK(msg->findInt64("positionUs", &positionUs)); int32_t reason; CHECK(msg->findInt32("reason", &reason)); closeAudioSink(); mAudioDecoder.clear(); ++mAudioDecoderGeneration; Loading @@ -977,8 +979,10 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { mOffloadAudio = false; performSeek(positionUs, false /* needNotify */); if (reason == Renderer::kDueToError) { instantiateDecoder(true /* audio */, &mAudioDecoder); } } break; } Loading Loading @@ -1044,6 +1048,11 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { } else { ALOGW("resume called when source is gone or not set"); } // |mAudioDecoder| may have been released due to the pause timeout, so try to re-create // it if needed. if (mFlushingAudio != SHUT_DOWN) { instantiateDecoder(true /* audio */, &mAudioDecoder); } if (mRenderer != NULL) { mRenderer->resume(); } else { Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -274,7 +274,7 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { case kWhatAudioOffloadTearDown: { onAudioOffloadTearDown(); onAudioOffloadTearDown(kDueToError); break; } Loading @@ -285,7 +285,8 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { if (generation != mAudioOffloadPauseTimeoutGeneration) { break; } onAudioOffloadTearDown(); ALOGV("Audio Offload tear down due to pause timeout."); onAudioOffloadTearDown(kDueToTimeout); break; } Loading Loading @@ -1089,7 +1090,7 @@ int64_t NuPlayer::Renderer::getPlayedOutAudioDurationUs(int64_t nowUs) { return durationUs; } void NuPlayer::Renderer::onAudioOffloadTearDown() { void NuPlayer::Renderer::onAudioOffloadTearDown(AudioOffloadTearDownReason reason) { if (mAudioOffloadTornDown) { return; } Loading @@ -1110,6 +1111,7 @@ void NuPlayer::Renderer::onAudioOffloadTearDown() { sp<AMessage> notify = mNotify->dup(); notify->setInt32("what", kWhatAudioOffloadTearDown); notify->setInt64("positionUs", currentPositionUs); notify->setInt32("reason", reason); notify->post(); } Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.h +6 −1 Original line number Diff line number Diff line Loading @@ -69,6 +69,11 @@ struct NuPlayer::Renderer : public AHandler { kWhatAudioOffloadPauseTimeout = 'aOPT', }; enum AudioOffloadTearDownReason { kDueToError = 0, kDueToTimeout, }; protected: virtual ~Renderer(); Loading Loading @@ -157,7 +162,7 @@ private: void onPause(); void onResume(); void onSetVideoFrameRate(float fps); void onAudioOffloadTearDown(); void onAudioOffloadTearDown(AudioOffloadTearDownReason reason); void notifyEOS(bool audio, status_t finalResult, int64_t delayUs = 0); void notifyFlushComplete(bool audio); Loading