diff options
| author | 2019-11-05 12:16:51 -0800 | |
|---|---|---|
| committer | 2019-11-05 12:16:51 -0800 | |
| commit | 1f398e0a261daea1fb4e75395f146edabfce4815 (patch) | |
| tree | 459ce0f1c6d8cb14a8e9fcdd2592fd6b122946fe | |
| parent | a7aeb79bf352e1d2c9d2743124b7d60b383f6f8a (diff) | |
| parent | a5797a0b6603d0d13c7ca44269d516908e918ec3 (diff) | |
Merge "AudioService: fix step rescaling." am: 7516db2ec2 am: 87daf33b20
am: a5797a0b66
Change-Id: I4d27ebef1d24c0efefebfbd04597088bed740456
| -rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index e285bfdcdf4c..6355af6e0b2d 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1583,12 +1583,13 @@ public class AudioService extends IAudioService.Stub setMicrophoneMuteNoCallerCheck(currentUser); } - private int rescaleIndex(int index, int srcStream, int dstStream) { - int srcRange = - mStreamStates[srcStream].getMaxIndex() - mStreamStates[srcStream].getMinIndex(); - int dstRange = - mStreamStates[dstStream].getMaxIndex() - mStreamStates[dstStream].getMinIndex(); + private int getIndexRange(int streamType) { + return (mStreamStates[streamType].getMaxIndex() - mStreamStates[streamType].getMinIndex()); + } + private int rescaleIndex(int index, int srcStream, int dstStream) { + int srcRange = getIndexRange(srcStream); + int dstRange = getIndexRange(dstStream); if (srcRange == 0) { Log.e(TAG, "rescaleIndex : index range should not be zero"); return mStreamStates[dstStream].getMinIndex(); @@ -1599,6 +1600,17 @@ public class AudioService extends IAudioService.Stub / srcRange; } + private int rescaleStep(int step, int srcStream, int dstStream) { + int srcRange = getIndexRange(srcStream); + int dstRange = getIndexRange(dstStream); + if (srcRange == 0) { + Log.e(TAG, "rescaleStep : index range should not be zero"); + return 0; + } + + return ((step * dstRange + srcRange / 2) / srcRange); + } + /////////////////////////////////////////////////////////////////////////// // IPC methods /////////////////////////////////////////////////////////////////////////// @@ -1775,7 +1787,7 @@ public class AudioService extends IAudioService.Stub } } else { // convert one UI step (+/-1) into a number of internal units on the stream alias - step = rescaleIndex(10, streamType, streamTypeAlias); + step = rescaleStep(10, streamType, streamTypeAlias); } // If either the client forces allowing ringer modes for this adjustment, |