diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-07-21 20:36:07 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-07-21 20:36:07 +0000 |
commit | 31b4882445265fc9465ab68ed409b5a38e5261b1 (patch) | |
tree | afff599872bf73b56b7c1b09f06ac22afefbda60 | |
parent | 062989162b108cdcaebe62e5c718f51305abd670 (diff) | |
parent | 42bafe9901e73ef5d68794d913a4a428415d38bc (diff) | |
download | av-android13-mainline-go-adbd-release.tar.gz |
Snap for 8857176 from 42bafe9901e73ef5d68794d913a4a428415d38bc to mainline-go-adbd-releaseaml_go_adb_330913000android13-mainline-go-adbd-release
Change-Id: I8ccf16e664cbc16e800549261ca47c80e072aecb
4 files changed, 25 insertions, 4 deletions
diff --git a/media/codec2/components/base/SimpleC2Component.cpp b/media/codec2/components/base/SimpleC2Component.cpp index 9d4f049e52..199875dfa3 100644 --- a/media/codec2/components/base/SimpleC2Component.cpp +++ b/media/codec2/components/base/SimpleC2Component.cpp @@ -190,7 +190,7 @@ static C2ColorAspectsStruct FillMissingColorAspects( // matrix conversion coefficients // (see media/libstagefright/colorconverter/ColorConverter.cpp for more details) struct Coeffs { - int32_t _y, _b_u, _g_u, _g_v, _r_v, _c16; + int32_t _y, _r_v, _g_u, _g_v, _b_u, _c16; }; static const struct Coeffs GetCoeffsForAspects(const C2ColorAspectsStruct &aspects) { diff --git a/media/libmediaplayerservice/nuplayer/AWakeLock.cpp b/media/libmediaplayerservice/nuplayer/AWakeLock.cpp index 25a8ae4fd5..c3bd207728 100644 --- a/media/libmediaplayerservice/nuplayer/AWakeLock.cpp +++ b/media/libmediaplayerservice/nuplayer/AWakeLock.cpp @@ -59,10 +59,11 @@ bool AWakeLock::acquire() { if (mPowerManager != NULL) { sp<IBinder> binder = new BBinder(); int64_t token = IPCThreadState::self()->clearCallingIdentity(); - binder::Status status = mPowerManager->acquireWakeLockAsync( + binder::Status status = mPowerManager->acquireWakeLock( binder, POWERMANAGER_PARTIAL_WAKE_LOCK, String16("AWakeLock"), String16("media"), - {} /* workSource */, {} /* historyTag */); + {} /* workSource */, {} /* historyTag */, -1 /* displayId */, + nullptr /* callback */); IPCThreadState::self()->restoreCallingIdentity(token); if (status.isOk()) { mWakeLockToken = binder; diff --git a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp index 2828d44af3..cb050f9b50 100644 --- a/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp +++ b/media/libmediaplayerservice/nuplayer/NuPlayerRenderer.cpp @@ -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; @@ -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; } @@ -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. @@ -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()); diff --git a/media/libmediaplayerservice/nuplayer/include/nuplayer/NuPlayerRenderer.h b/media/libmediaplayerservice/nuplayer/include/nuplayer/NuPlayerRenderer.h index 3d2b0334b5..364067836c 100644 --- a/media/libmediaplayerservice/nuplayer/include/nuplayer/NuPlayerRenderer.h +++ b/media/libmediaplayerservice/nuplayer/include/nuplayer/NuPlayerRenderer.h @@ -100,6 +100,7 @@ struct NuPlayer::Renderer : public AHandler { kWhatMediaRenderingStart = 'mdrd', kWhatAudioTearDown = 'adTD', kWhatAudioOffloadPauseTimeout = 'aOPT', + kWhatReleaseWakeLock = 'adRL', }; enum AudioTearDownReason { |