From feae2dadebe2baeb8c1e5e2563847a17800123ed Mon Sep 17 00:00:00 2001 From: Googler Date: Thu, 3 Apr 2025 08:40:04 -0700 Subject: [PATCH] Adds getChannelOutputConfig() to AudioTrackProvider. PiperOrigin-RevId: 743577038 --- .../media3/exoplayer/audio/DefaultAudioSink.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java index 557fa1d417..92685c1726 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java @@ -102,6 +102,11 @@ public final class DefaultAudioSink implements AudioSink { /** Returns a new {@link AudioTrack} for the given parameters. */ AudioTrack getAudioTrack( AudioTrackConfig audioTrackConfig, AudioAttributes audioAttributes, int audioSessionId); + + /** Returns the channel mask config for the given channel count. */ + default int getAudioTrackChannelConfig(int channelCount) { + return Util.getAudioTrackChannelConfig(channelCount); + } } /** @@ -731,7 +736,10 @@ public final class DefaultAudioSink implements AudioSink { outputMode = OUTPUT_MODE_PCM; outputEncoding = outputFormat.encoding; outputSampleRate = outputFormat.sampleRate; - outputChannelConfig = Util.getAudioTrackChannelConfig(outputFormat.channelCount); + + outputChannelConfig = + audioTrackProvider.getAudioTrackChannelConfig(outputFormat.channelCount); + outputPcmFrameSize = Util.getPcmFrameSize(outputEncoding, outputFormat.channelCount); enableAudioTrackPlaybackParams = preferAudioTrackPlaybackParams; } else { @@ -748,7 +756,10 @@ public final class DefaultAudioSink implements AudioSink { outputMode = OUTPUT_MODE_OFFLOAD; outputEncoding = MimeTypes.getEncoding(checkNotNull(inputFormat.sampleMimeType), inputFormat.codecs); - outputChannelConfig = Util.getAudioTrackChannelConfig(inputFormat.channelCount); + + outputChannelConfig = + audioTrackProvider.getAudioTrackChannelConfig(inputFormat.channelCount); + // Offload requires AudioTrack playback parameters to apply speed changes quickly. enableAudioTrackPlaybackParams = true; enableOffloadGapless = audioOffloadSupport.isGaplessSupported;