diff options
author | jiabin <jiabin@google.com> | 2021-07-15 14:53:31 -0700 |
---|---|---|
committer | jiabin <jiabin@google.com> | 2021-07-16 11:40:30 -0700 |
commit | 3e575e58cc2a6fa30cda89fcf0a7dba9f67e832b (patch) | |
tree | ec76a327b05c9c151f58e1b43ad9e880dfa36792 /media/java | |
parent | f36c575bee6e45d274ebdb3cb931028695d613d9 (diff) |
Add PCM float profile if extended precision PCM shows but not pcm float.
This is required for backwards compatibility. This ensures pre-S apps
that look for pcm float continue to see that encoding if the device
supports extended precision integers.
Test: atest AudioManagerTest
Bug: 193747274
Change-Id: Ia244bdcd51520dd082a292baab54f1795ccccaea
Diffstat (limited to 'media/java')
-rw-r--r-- | media/java/android/media/AudioDeviceInfo.java | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/media/java/android/media/AudioDeviceInfo.java b/media/java/android/media/AudioDeviceInfo.java index 09b382ee46d0..a186566aec0b 100644 --- a/media/java/android/media/AudioDeviceInfo.java +++ b/media/java/android/media/AudioDeviceInfo.java @@ -25,7 +25,6 @@ import android.util.SparseIntArray; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.TreeSet; @@ -515,29 +514,7 @@ public final class AudioDeviceInfo { * For forward compatibility, applications should ignore entries it does not recognize. */ public @NonNull int[] getEncodings() { - final int[] encodings = AudioFormat.filterPublicFormats(mPort.formats()); - boolean hasFloat = false; - boolean hasExtendedIntegerPrecision = false; - - for (int encoding : encodings) { - if (AudioFormat.isEncodingLinearPcm(encoding)) { - if (encoding == AudioFormat.ENCODING_PCM_FLOAT) { - hasFloat = true; - } else if (AudioFormat.getBytesPerSample(encoding) > 2) { - hasExtendedIntegerPrecision = true; - } - } - } - if (hasExtendedIntegerPrecision && !hasFloat) { - // R and earlier compatibility - add ENCODING_PCM_FLOAT to the end - // (replacing the zero pad). This ensures pre-S apps that look - // for ENCODING_PCM_FLOAT continue to see that encoding if the device supports - // extended precision integers. - int[] encodingsPlusFloat = Arrays.copyOf(encodings, encodings.length + 1); - encodingsPlusFloat[encodings.length] = AudioFormat.ENCODING_PCM_FLOAT; - return encodingsPlusFloat; - } - return encodings; + return AudioFormat.filterPublicFormats(mPort.formats()); } /** |