summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/Threads.cpp
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2015-05-27 17:58:00 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-27 17:58:00 +0000
commit3ab77c1e93f3da5da0d18ff998f1bd6db19534f3 (patch)
tree62dd0ec770bc7e883083a5cb2f2c8ba5163c124f /services/audioflinger/Threads.cpp
parent5eabb0191ab25a45ae19575a7a443ba12bd1800a (diff)
parent5cff403679fc44c8293de81aed31c459c6129243 (diff)
downloadframeworks_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/Threads.cpp')
-rw-r--r--services/audioflinger/Threads.cpp14
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;
}