Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e49253e authored by Eric Laurent's avatar Eric Laurent Committed by Automerger Merge Worker
Browse files

Merge "NuPlayerRenderer: extend offload pause wakelock duration" into tm-dev am: b116510c

parents 70358ec1 b116510c
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -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());
+1 −0
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@ struct NuPlayer::Renderer : public AHandler {
        kWhatMediaRenderingStart      = 'mdrd',
        kWhatAudioTearDown            = 'adTD',
        kWhatAudioOffloadPauseTimeout = 'aOPT',
        kWhatReleaseWakeLock          = 'adRL',
    };

    enum AudioTearDownReason {