From cb29e8fb3d3d333a01b537ad564741c63ca7a5c7 Mon Sep 17 00:00:00 2001 From: Cedric T Date: Mon, 15 May 2023 10:36:37 +0800 Subject: [PATCH] Construct AudioCapabilities with HDMI reported MaxChannelCount. --- .../media3/exoplayer/audio/AudioCapabilities.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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 5bdca16166..b0215f4070 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 @@ -119,7 +119,9 @@ public final class AudioCapabilities { supportedEncodings.addAll(Ints.asList( intent.getIntArrayExtra(AudioManager.EXTRA_ENCODINGS))); return new AudioCapabilities( - Ints.toArray(supportedEncodings.build()), /* defaultValue= */ DEFAULT_MAX_CHANNEL_COUNT); + Ints.toArray(supportedEncodings.build()), + intent.getIntExtra(AudioManager.EXTRA_MAX_CHANNEL_COUNT, /* defaultValue= */ + DEFAULT_MAX_CHANNEL_COUNT)); } if (supportedEncodings.build().isEmpty()) { @@ -227,7 +229,13 @@ public final class AudioCapabilities { channelCount = getMaxSupportedChannelCountForPassthrough(encoding, sampleRate); } else { channelCount = format.channelCount; - if (channelCount > maxChannelCount) { + // To file a Bug: Some DTS:X TVs reports ACTION_HDMI_AUDIO_PLUG.EXTRA_MAX_CHANNEL_COUNT as 8 + // instead of 10. + if (format.sampleMimeType == MimeTypes.AUDIO_DTS_X) { + if (channelCount > 10) { + return null; + } + } else if (channelCount > maxChannelCount) { return null; } }