summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2012-08-07 10:38:59 -0700
committerGlenn Kasten <gkasten@google.com>2012-08-08 14:28:42 -0700
commit0d27c65ddb5c968baa6db0c26e80f5c451bc52bc (patch)
tree62cdadd7e272d5f5f5f187767984ecb0c12b5080
parente983aa4ff4d80af7702888e230b9aaa93a7b7e57 (diff)
downloadframeworks_av-0d27c65ddb5c968baa6db0c26e80f5c451bc52bc.zip
frameworks_av-0d27c65ddb5c968baa6db0c26e80f5c451bc52bc.tar.gz
frameworks_av-0d27c65ddb5c968baa6db0c26e80f5c451bc52bc.tar.bz2
Tune the overrun correction
The new overrun correction is: if the previous write() cycle time is < 50% of expected, then sleep enough extra to make the total cycle time = 95% of expected. This should help compensate for HAL implementations that have uneven cycle times due to sample rate conversion. Bug: 6881638 Change-Id: I5ab58afdfceee7ac523177f021fbf62d743d571a
-rw-r--r--services/audioflinger/FastMixer.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/services/audioflinger/FastMixer.cpp b/services/audioflinger/FastMixer.cpp
index b89bf81..fbcc11a 100644
--- a/services/audioflinger/FastMixer.cpp
+++ b/services/audioflinger/FastMixer.cpp
@@ -222,8 +222,8 @@ bool FastMixer::threadLoop()
mixBuffer = new short[frameCount * 2];
periodNs = (frameCount * 1000000000LL) / sampleRate; // 1.00
underrunNs = (frameCount * 1750000000LL) / sampleRate; // 1.75
- overrunNs = (frameCount * 250000000LL) / sampleRate; // 0.25
- forceNs = (frameCount * 750000000LL) / sampleRate; // 0.75
+ overrunNs = (frameCount * 500000000LL) / sampleRate; // 0.50
+ forceNs = (frameCount * 950000000LL) / sampleRate; // 0.95
warmupNs = (frameCount * 500000000LL) / sampleRate; // 0.50
} else {
periodNs = 0;