From 580ff6759c6a0b2bd1b66f3cdd8f4eb1c08f4831 Mon Sep 17 00:00:00 2001 From: lawadr <3211473+lawadr@users.noreply.github.com> Date: Sun, 15 Oct 2023 01:45:26 +0100 Subject: [PATCH 1/2] Fix AudioCapabilities regression Since DEFAULT_MAX_CHANNEL_COUNT was increased from 8 to 10, getMaxSupportedChannelCountForPassthrough always throws if its loop enters its second iteration (channelCount of 9). This is due to Util.getAudioTrackChannelConfig returning CHANNEL_INVALID when passed a channelCount of 9, and setting CHANNEL_INVALID as the AudioFormat's channel mask throws an exception. This change skips each iteration where CHANNEL_INVALID is returned. --- .../androidx/media3/exoplayer/audio/AudioCapabilities.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioCapabilities.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioCapabilities.java index d01c8eebd7..4264670486 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioCapabilities.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioCapabilities.java @@ -406,11 +406,15 @@ public final class AudioCapabilities { // TODO(internal b/234351617): Query supported channel masks directly once it's supported, // see also b/25994457. for (int channelCount = DEFAULT_MAX_CHANNEL_COUNT; channelCount > 0; channelCount--) { + int channelConfig = Util.getAudioTrackChannelConfig(channelCount); + if (channelConfig == AudioFormat.CHANNEL_INVALID) { + continue; + } AudioFormat audioFormat = new AudioFormat.Builder() .setEncoding(encoding) .setSampleRate(sampleRate) - .setChannelMask(Util.getAudioTrackChannelConfig(channelCount)) + .setChannelMask(channelConfig) .build(); if (AudioTrack.isDirectPlaybackSupported(audioFormat, DEFAULT_AUDIO_ATTRIBUTES)) { return channelCount; From 8f44916e9789fbbfba6013e4449cc0633d9f9158 Mon Sep 17 00:00:00 2001 From: tonihei Date: Thu, 19 Oct 2023 09:45:28 +0100 Subject: [PATCH 2/2] Add release notes --- RELEASENOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index a081a97f2e..8ce41cb70f 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -22,6 +22,7 @@ * Audio: * Fix DTS Express audio buffer underflow issue ([#650](https://github.com/androidx/media/pull/650)). + * Fix bug where the capabilties check for E-AC3-JOC throws an `IllegalArgumentException` ([#677](https://github.com/androidx/media/issues/677)). * Video: * Text: * Remove `ExoplayerCuesDecoder`. Text tracks with `sampleMimeType =