From 8c9b92efc1f0c7cfd12b0753fe543d65bcee7c01 Mon Sep 17 00:00:00 2001 From: samrobinson Date: Wed, 25 Nov 2020 13:00:29 +0000 Subject: [PATCH] Add Format field to AudioSink.InitializationException #exofixit PiperOrigin-RevId: 344232362 --- .../com/google/android/exoplayer2/audio/AudioSink.java | 10 +++++++++- .../android/exoplayer2/audio/DecoderAudioRenderer.java | 2 +- .../android/exoplayer2/audio/DefaultAudioSink.java | 2 ++ .../exoplayer2/audio/MediaCodecAudioRenderer.java | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java index 2b805399f2..c747fd06f7 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/AudioSink.java @@ -167,11 +167,18 @@ public interface AudioSink { public final int audioTrackState; /** If the exception can be recovered by recreating the sink. */ public final boolean isRecoverable; + /** The input {@link Format} of the sink when the error occurs. */ + public final Format format; /** + * Creates a new instance. + * + * @param audioTrackState The underlying {@link AudioTrack}'s state. * @param sampleRate The requested sample rate in Hz. * @param channelConfig The requested channel configuration. * @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. * @param audioTrackException Exception thrown during the creation of the {@link AudioTrack}. */ public InitializationException( @@ -179,6 +186,7 @@ public interface AudioSink { int sampleRate, int channelConfig, int bufferSize, + Format format, boolean isRecoverable, @Nullable Exception audioTrackException) { super( @@ -190,8 +198,8 @@ public interface AudioSink { audioTrackException); this.audioTrackState = audioTrackState; this.isRecoverable = isRecoverable; + this.format = format; } - } /** Thrown when a failure occurs writing to the sink. */ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/DecoderAudioRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/DecoderAudioRenderer.java index d04c7d88a9..ea523714d9 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/DecoderAudioRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/DecoderAudioRenderer.java @@ -305,7 +305,7 @@ public abstract class DecoderAudioRenderer< } catch (AudioSink.ConfigurationException e) { throw createRendererException(e, e.format); } catch (AudioSink.InitializationException e) { - throw createRendererException(e, inputFormat, e.isRecoverable); + throw createRendererException(e, e.format, e.isRecoverable); } catch (AudioSink.WriteException e) { throw createRendererException(e, inputFormat, e.isRecoverable); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java index 9eaf18324f..05a3ce31c2 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java @@ -1960,6 +1960,7 @@ public final class DefaultAudioSink implements AudioSink { outputSampleRate, outputChannelConfig, bufferSize, + inputFormat, /* isRecoverable= */ outputModeIsOffload(), e); } @@ -1977,6 +1978,7 @@ public final class DefaultAudioSink implements AudioSink { outputSampleRate, outputChannelConfig, bufferSize, + inputFormat, /* isRecoverable= */ outputModeIsOffload(), /* audioTrackException= */ null); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java index 752191300d..f9701f6b8e 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/MediaCodecAudioRenderer.java @@ -608,7 +608,7 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media try { fullyConsumed = audioSink.handleBuffer(buffer, bufferPresentationTimeUs, sampleCount); } catch (InitializationException e) { - throw createRendererException(e, format, e.isRecoverable); + throw createRendererException(e, e.format, e.isRecoverable); } catch (WriteException e) { throw createRendererException(e, format, e.isRecoverable); }