From 4b8954d48bbe7f12452537cf5902dc791cfbf63a Mon Sep 17 00:00:00 2001 From: Richard Folke Tullberg Date: Wed, 13 Oct 2021 10:25:09 -0700 Subject: [PATCH] AudioTrack: Do not throw exception from isMultichannelConfigSupported Test: atest AudioTrackTest#testInvalidMinBufferSize Bug: 200571916 Change-Id: I85f2cb2d6f3ba84ed93a505fc3eb35387bc8a5ce --- media/java/android/media/AudioTrack.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index aa72d965f7937..476a9a58ef4b5 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -1805,9 +1805,15 @@ public class AudioTrack extends PlayerBase return false; } final int channelCount = AudioFormat.channelCountFromOutChannelMask(channelConfig); - final int channelCountLimit = AudioFormat.isEncodingLinearFrames(encoding) - ? AudioSystem.OUT_CHANNEL_COUNT_MAX // PCM limited to OUT_CHANNEL_COUNT_MAX - : AudioSystem.FCC_24; // Compressed limited to 24 channels + final int channelCountLimit; + try { + channelCountLimit = AudioFormat.isEncodingLinearFrames(encoding) + ? AudioSystem.OUT_CHANNEL_COUNT_MAX // PCM limited to OUT_CHANNEL_COUNT_MAX + : AudioSystem.FCC_24; // Compressed limited to 24 channels + } catch (IllegalArgumentException iae) { + loge("Unsupported encoding " + iae); + return false; + } if (channelCount > channelCountLimit) { loge("Channel configuration contains too many channels for encoding " + encoding + "(" + channelCount + " > " + channelCountLimit + ")");