summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author chenhg <chenhg@synaptics.com> 2019-11-05 12:16:51 -0800
committer android-build-merger <android-build-merger@google.com> 2019-11-05 12:16:51 -0800
commit1f398e0a261daea1fb4e75395f146edabfce4815 (patch)
tree459ce0f1c6d8cb14a8e9fcdd2592fd6b122946fe
parenta7aeb79bf352e1d2c9d2743124b7d60b383f6f8a (diff)
parenta5797a0b6603d0d13c7ca44269d516908e918ec3 (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.java24
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,