summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/AudioMixer.cpp
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2015-05-08 16:14:36 -0700
committerEric Laurent <elaurent@google.com>2015-05-08 16:29:24 -0700
commit43412fc79ceda964cf9d16e3b4c563849db57d3a (patch)
tree98c5f3ccebfd54d45ed631256b47febfe03c3505 /services/audioflinger/AudioMixer.cpp
parent70c75d8c15707d5eade38fe3e622f8500c29556b (diff)
downloadframeworks_av-43412fc79ceda964cf9d16e3b4c563849db57d3a.zip
frameworks_av-43412fc79ceda964cf9d16e3b4c563849db57d3a.tar.gz
frameworks_av-43412fc79ceda964cf9d16e3b4c563849db57d3a.tar.bz2
AudioMixer: fix for volume ramp in float mode
Bug: 20912450. Bug: 19952126. Change-Id: I1ff3c3f4c0dd673bbbc17ce8da14d446fdb7e8a8
Diffstat (limited to 'services/audioflinger/AudioMixer.cpp')
-rw-r--r--services/audioflinger/AudioMixer.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/services/audioflinger/AudioMixer.cpp b/services/audioflinger/AudioMixer.cpp
index 7040af4..959c140 100644
--- a/services/audioflinger/AudioMixer.cpp
+++ b/services/audioflinger/AudioMixer.cpp
@@ -775,7 +775,8 @@ inline void AudioMixer::track_t::adjustVolumeRamp(bool aux, bool useFloat)
{
if (useFloat) {
for (uint32_t i = 0; i < MAX_NUM_VOLUMES; i++) {
- if (mVolumeInc[i] != 0 && fabs(mVolume[i] - mPrevVolume[i]) <= fabs(mVolumeInc[i])) {
+ if ((mVolumeInc[i] > 0 && mPrevVolume[i] + mVolumeInc[i] >= mVolume[i]) ||
+ (mVolumeInc[i] < 0 && mPrevVolume[i] + mVolumeInc[i] <= mVolume[i])) {
volumeInc[i] = 0;
prevVolume[i] = volume[i] << 16;
mVolumeInc[i] = 0.;