From 83ffcfb53b62489de9d2bd0b0277e879c3e57ab6 Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Thu, 18 Jun 2015 17:34:40 -0700 Subject: Fix clamp issue with AudioMixer with float input and int16 output Bug: 20706338 Change-Id: I7e3ab0da96901870cc57fbe2e79163bc81157465 --- services/audioflinger/AudioMixerOps.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/services/audioflinger/AudioMixerOps.h b/services/audioflinger/AudioMixerOps.h index 2678857..8d74024 100644 --- a/services/audioflinger/AudioMixerOps.h +++ b/services/audioflinger/AudioMixerOps.h @@ -164,13 +164,12 @@ inline int32_t MixMul(int16_t value, float volume) { template <> inline int16_t MixMul(int16_t value, float volume) { LOG_ALWAYS_FATAL("MixMul Runtime Should not be here"); - return value * volume; + return clamp16_from_float(MixMul(value, volume)); } template <> inline int16_t MixMul(float value, float volume) { - static const float q_15_from_float = (1 << 15); - return value * volume * q_15_from_float; + return clamp16_from_float(value * volume); } /* -- cgit v1.1