diff options
author | Eric Laurent <elaurent@google.com> | 2015-05-27 17:58:00 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-05-27 17:58:00 +0000 |
commit | 3ab77c1e93f3da5da0d18ff998f1bd6db19534f3 (patch) | |
tree | 62dd0ec770bc7e883083a5cb2f2c8ba5163c124f /services/audioflinger | |
parent | 5eabb0191ab25a45ae19575a7a443ba12bd1800a (diff) | |
parent | 5cff403679fc44c8293de81aed31c459c6129243 (diff) | |
download | frameworks_av-3ab77c1e93f3da5da0d18ff998f1bd6db19534f3.zip frameworks_av-3ab77c1e93f3da5da0d18ff998f1bd6db19534f3.tar.gz frameworks_av-3ab77c1e93f3da5da0d18ff998f1bd6db19534f3.tar.bz2 |
Merge "audio flinger: pause direct output when underrunning" into mnc-dev
Diffstat (limited to 'services/audioflinger')
-rw-r--r-- | services/audioflinger/Threads.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index 9f08851..721f6af 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -4475,7 +4475,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep track->mRetryCount = kMaxTrackRetriesDirect; mActiveTrack = t; mixerStatus = MIXER_TRACKS_READY; - if (usesHwAvSync() && mHwPaused) { + if (mHwPaused) { doHwResume = true; mHwPaused = false; } @@ -4527,7 +4527,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::DirectOutputThread::prep android_atomic_or(CBLK_DISABLED, &cblk->mFlags); } else if (last) { mixerStatus = MIXER_TRACKS_ENABLED; - if (usesHwAvSync() && !mHwPaused && !mStandby) { + if (mHwSupportsPause && !mHwPaused && !mStandby) { doHwPause = true; mHwPaused = true; } @@ -4641,7 +4641,7 @@ bool AudioFlinger::DirectOutputThread::shouldStandby_l() mTracks[mTracks.size() - 1]->mState == TrackBase::IDLE; } - return !mStandby && !(trackPaused || (usesHwAvSync() && mHwPaused && !trackStopped)); + return !mStandby && !(trackPaused || (mHwPaused && !trackStopped)); } // getTrackName_l() must be called with ThreadBase::mLock held @@ -4747,10 +4747,10 @@ void AudioFlinger::DirectOutputThread::cacheParameters_l() // no delay on outputs with HW A/V sync if (usesHwAvSync()) { standbyDelay = 0; - } else if (audio_is_linear_pcm(mFormat)) { - standbyDelay = microseconds(activeSleepTime*2); - } else { + } else if ((mType == OFFLOAD) && !audio_is_linear_pcm(mFormat)) { standbyDelay = kOffloadStandbyDelayNs; + } else { + standbyDelay = microseconds(activeSleepTime*2); } } @@ -4930,7 +4930,7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr if (track->isPausing()) { track->setPaused(); if (last) { - if (!mHwPaused) { + if (mHwSupportsPause && !mHwPaused) { doHwPause = true; mHwPaused = true; } |