From 71fb3ad5a5b2e43b7d5ebe3cd8df2e1ac92b37c3 Mon Sep 17 00:00:00 2001 From: tianyifeng Date: Wed, 9 Apr 2025 04:48:25 -0700 Subject: [PATCH] Fix the parameter passed to AudioSink.InitializationException We used to pass `audioTrackConfig.encoding` as the `bufferSize` parameter to `AudioSink.InitializationException`, for which this CL is supposed to correct. But `encoding` is a useful information for logging anyway, thus an `encoding` parameter is also added to `AudioSink.InitializationException` constructor, so now we pass both `encoding` and `bufferSize` parameters. PiperOrigin-RevId: 745534997 --- .../androidx/media3/exoplayer/audio/AudioSink.java | 12 +++++++++++- .../media3/exoplayer/audio/DefaultAudioSink.java | 2 ++ .../e2etest/EndToEndOffloadFailureRecoveryTest.java | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java index 003de765a4..c827fc7ac0 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/AudioSink.java @@ -263,6 +263,7 @@ public interface AudioSink { * @param audioTrackState The underlying {@link AudioTrack}'s state. * @param sampleRate The requested sample rate in Hz. * @param channelConfig The requested channel configuration. + * @param encoding The requested encoding. * @param bufferSize The requested buffer size in bytes. * @param format The input format of the sink when the error occurs. * @param isRecoverable Whether the exception can be recovered by recreating the sink. @@ -272,6 +273,7 @@ public interface AudioSink { int audioTrackState, int sampleRate, int channelConfig, + int encoding, int bufferSize, Format format, boolean isRecoverable, @@ -280,7 +282,15 @@ public interface AudioSink { "AudioTrack init failed " + audioTrackState + " " - + ("Config(" + sampleRate + ", " + channelConfig + ", " + bufferSize + ")") + + ("Config(" + + sampleRate + + ", " + + channelConfig + + ", " + + encoding + + ", " + + bufferSize + + ")") + " " + format + (isRecoverable ? " (recoverable)" : ""), 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 92685c1726..2c75ecafc6 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 @@ -1118,6 +1118,7 @@ public final class DefaultAudioSink implements AudioSink { audioTrackConfig.sampleRate, audioTrackConfig.channelConfig, audioTrackConfig.encoding, + audioTrackConfig.bufferSize, inputFormat, /* isRecoverable= */ audioTrackConfig.offload, e); @@ -1136,6 +1137,7 @@ public final class DefaultAudioSink implements AudioSink { audioTrackConfig.sampleRate, audioTrackConfig.channelConfig, audioTrackConfig.encoding, + audioTrackConfig.bufferSize, inputFormat, /* isRecoverable= */ audioTrackConfig.offload, /* audioTrackException= */ null); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/EndToEndOffloadFailureRecoveryTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/EndToEndOffloadFailureRecoveryTest.java index 59b7802917..3b70e4778f 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/EndToEndOffloadFailureRecoveryTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/EndToEndOffloadFailureRecoveryTest.java @@ -334,6 +334,7 @@ public class EndToEndOffloadFailureRecoveryTest { AudioTrack.STATE_UNINITIALIZED, /* sampleRate= */ 48_000, /* channelConfig= */ 0, + /* encoding= */ Format.NO_VALUE, /* bufferSize= */ C.LENGTH_UNSET, inputFormat, /* isRecoverable= */ true,