From 5c4e818c39ac2d2739675fe907904a874f7623c5 Mon Sep 17 00:00:00 2001 From: Eric Laurent Date: Tue, 18 Oct 2011 15:42:27 -0700 Subject: Limit AudioFlinger log. AudioFlinger logs a warning when a write to the audio HAL takes too long to return. The threshold for this warning is a rule of thumb based on the assumption that the audio HAL will consume buffers at a regular pace. The introduction of low power audio mode with larger buffers and writes occuring in bursts makes that this threshold is often exceeded resulting in excessive and misleading warnings. The threshold is raised to remove unwanted warnings but we should reconsider the usefulness of this warning altogether. Change-Id: I5ef6898ea28d879cede3e47da542a64092a3cca4 --- services/audioflinger/AudioFlinger.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'services') diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp index ab49f93..3e0304f 100644 --- a/services/audioflinger/AudioFlinger.cpp +++ b/services/audioflinger/AudioFlinger.cpp @@ -1832,7 +1832,9 @@ bool AudioFlinger::MixerThread::threadLoop() size_t mixBufferSize = mFrameCount * mFrameSize; // FIXME: Relaxed timing because of a certain device that can't meet latency // Should be reduced to 2x after the vendor fixes the driver issue - nsecs_t maxPeriod = seconds(mFrameCount) / mSampleRate * 3; + // increase threshold again due to low power audio mode. The way this warning threshold is + // calculated and its usefulness should be reconsidered anyway. + nsecs_t maxPeriod = seconds(mFrameCount) / mSampleRate * 15; nsecs_t lastWarning = 0; bool longStandbyExit = false; uint32_t activeSleepTime = activeSleepTimeUs(); @@ -1886,7 +1888,9 @@ bool AudioFlinger::MixerThread::threadLoop() mixBufferSize = mFrameCount * mFrameSize; // FIXME: Relaxed timing because of a certain device that can't meet latency // Should be reduced to 2x after the vendor fixes the driver issue - maxPeriod = seconds(mFrameCount) / mSampleRate * 3; + // increase threshold again due to low power audio mode. The way this warning + // threshold is calculated and its usefulness should be reconsidered anyway. + maxPeriod = seconds(mFrameCount) / mSampleRate * 15; activeSleepTime = activeSleepTimeUs(); idleSleepTime = idleSleepTimeUs(); } @@ -1983,7 +1987,7 @@ bool AudioFlinger::MixerThread::threadLoop() mInWrite = false; nsecs_t now = systemTime(); nsecs_t delta = now - mLastWriteTime; - if (delta > maxPeriod) { + if (!mStandby && delta > maxPeriod) { mNumDelayedWrites++; if ((now - lastWarning) > kWarningThrottle) { LOGW("write blocked for %llu msecs, %d delayed writes, thread %p", -- cgit v1.1