Loading media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +20 −1 Original line number Diff line number Diff line Loading @@ -73,6 +73,10 @@ static inline int32_t getAudioSinkPcmMsSetting() { // is closed to allow the audio DSP to power down. static const int64_t kOffloadPauseMaxUs = 10000000LL; // Additional delay after teardown before releasing the wake lock to allow time for the audio path // to be completely released static const int64_t kWakelockReleaseDelayUs = 2000000LL; // Maximum allowed delay from AudioSink, 1.5 seconds. static const int64_t kMaxAllowedAudioSinkDelayUs = 1500000LL; Loading Loading @@ -793,6 +797,20 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { } ALOGV("Audio Offload tear down due to pause timeout."); onAudioTearDown(kDueToTimeout); sp<AMessage> newMsg = new AMessage(kWhatReleaseWakeLock, this); newMsg->setInt32("drainGeneration", generation); newMsg->post(kWakelockReleaseDelayUs); break; } case kWhatReleaseWakeLock: { int32_t generation; CHECK(msg->findInt32("drainGeneration", &generation)); if (generation != mAudioOffloadPauseTimeoutGeneration) { break; } ALOGV("releasing audio offload pause wakelock."); mWakeLock->release(); break; } Loading Loading @@ -1785,6 +1803,8 @@ void NuPlayer::Renderer::onPause() { return; } startAudioOffloadPauseTimeout(); { Mutex::Autolock autoLock(mLock); // we do not increment audio drain generation so that we fill audio buffer during pause. Loading @@ -1799,7 +1819,6 @@ void NuPlayer::Renderer::onPause() { // Note: audio data may not have been decoded, and the AudioSink may not be opened. mAudioSink->pause(); startAudioOffloadPauseTimeout(); ALOGV("now paused audio queue has %zu entries, video has %zu entries", mAudioQueue.size(), mVideoQueue.size()); Loading media/libmediaplayerservice/nuplayer/include/nuplayer/NuPlayerRenderer.h +1 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ struct NuPlayer::Renderer : public AHandler { kWhatMediaRenderingStart = 'mdrd', kWhatAudioTearDown = 'adTD', kWhatAudioOffloadPauseTimeout = 'aOPT', kWhatReleaseWakeLock = 'adRL', }; enum AudioTearDownReason { Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +20 −1 Original line number Diff line number Diff line Loading @@ -73,6 +73,10 @@ static inline int32_t getAudioSinkPcmMsSetting() { // is closed to allow the audio DSP to power down. static const int64_t kOffloadPauseMaxUs = 10000000LL; // Additional delay after teardown before releasing the wake lock to allow time for the audio path // to be completely released static const int64_t kWakelockReleaseDelayUs = 2000000LL; // Maximum allowed delay from AudioSink, 1.5 seconds. static const int64_t kMaxAllowedAudioSinkDelayUs = 1500000LL; Loading Loading @@ -793,6 +797,20 @@ void NuPlayer::Renderer::onMessageReceived(const sp<AMessage> &msg) { } ALOGV("Audio Offload tear down due to pause timeout."); onAudioTearDown(kDueToTimeout); sp<AMessage> newMsg = new AMessage(kWhatReleaseWakeLock, this); newMsg->setInt32("drainGeneration", generation); newMsg->post(kWakelockReleaseDelayUs); break; } case kWhatReleaseWakeLock: { int32_t generation; CHECK(msg->findInt32("drainGeneration", &generation)); if (generation != mAudioOffloadPauseTimeoutGeneration) { break; } ALOGV("releasing audio offload pause wakelock."); mWakeLock->release(); break; } Loading Loading @@ -1785,6 +1803,8 @@ void NuPlayer::Renderer::onPause() { return; } startAudioOffloadPauseTimeout(); { Mutex::Autolock autoLock(mLock); // we do not increment audio drain generation so that we fill audio buffer during pause. Loading @@ -1799,7 +1819,6 @@ void NuPlayer::Renderer::onPause() { // Note: audio data may not have been decoded, and the AudioSink may not be opened. mAudioSink->pause(); startAudioOffloadPauseTimeout(); ALOGV("now paused audio queue has %zu entries, video has %zu entries", mAudioQueue.size(), mVideoQueue.size()); Loading
media/libmediaplayerservice/nuplayer/include/nuplayer/NuPlayerRenderer.h +1 −0 Original line number Diff line number Diff line Loading @@ -100,6 +100,7 @@ struct NuPlayer::Renderer : public AHandler { kWhatMediaRenderingStart = 'mdrd', kWhatAudioTearDown = 'adTD', kWhatAudioOffloadPauseTimeout = 'aOPT', kWhatReleaseWakeLock = 'adRL', }; enum AudioTearDownReason { Loading