From cb67b16caca434f7a3cedde0d5bfe8daedc6930d Mon Sep 17 00:00:00 2001 From: Copybara-Service Date: Thu, 19 Oct 2023 05:18:21 -0700 Subject: [PATCH] Merge pull request #728 from lawadr:audio-capabilities-fix PiperOrigin-RevId: 574829263 (cherry picked from commit 5f80a4708165ffe977ce37400f7c8eae01142e2d) --- RELEASENOTES.md | 3 +++ .../androidx/media3/exoplayer/audio/AudioCapabilities.java | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 747207af2b..914de6a377 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -15,6 +15,9 @@ * Audio: * Fix DTS Express audio buffer underflow issue ([#650](https://github.com/androidx/media/pull/650)). + * Fix bug where the capabilities check for E-AC3-JOC throws an + `IllegalArgumentException` + ([#677](https://github.com/androidx/media/issues/677)). * Video: * Text: * Remove `ExoplayerCuesDecoder`. Text tracks with `sampleMimeType = 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;