From baf1aa1cdbe626097c7fa310047edac7033f2ffe Mon Sep 17 00:00:00 2001 From: christosts Date: Tue, 11 Apr 2023 19:25:33 +0100 Subject: [PATCH] Change format logged when AudioSink throws InitializationException Change what format is logged from MediaCodecAudioRenderer when AudioSink throws InitializationException. We printed the AudioSink's format, which most of the times is audio/raw (PCM) and not the renderer's format. With this change both formats are logged. #minor-release Issue: google/ExoPlayer#11066 PiperOrigin-RevId: 523456840 --- .../java/androidx/media3/exoplayer/audio/AudioSink.java | 2 ++ .../media3/exoplayer/audio/MediaCodecAudioRenderer.java | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) 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 3e781b1c07..a056432dca 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 @@ -192,6 +192,8 @@ public interface AudioSink { + audioTrackState + " " + ("Config(" + sampleRate + ", " + channelConfig + ", " + bufferSize + ")") + + " " + + format + (isRecoverable ? " (recoverable)" : ""), audioTrackException); this.audioTrackState = audioTrackState; diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/MediaCodecAudioRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/MediaCodecAudioRenderer.java index 82e5276683..461365629f 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/MediaCodecAudioRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/MediaCodecAudioRenderer.java @@ -105,6 +105,7 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media private int codecMaxInputSize; private boolean codecNeedsDiscardChannelsWorkaround; + @Nullable private Format inputFormat; /** Codec used for DRM decryption only in passthrough and offload. */ @Nullable private Format decryptOnlyCodecFormat; @@ -500,8 +501,9 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media @Nullable protected DecoderReuseEvaluation onInputFormatChanged(FormatHolder formatHolder) throws ExoPlaybackException { + inputFormat = checkNotNull(formatHolder.format); @Nullable DecoderReuseEvaluation evaluation = super.onInputFormatChanged(formatHolder); - eventDispatcher.inputFormatChanged(formatHolder.format, evaluation); + eventDispatcher.inputFormatChanged(inputFormat, evaluation); return evaluation; } @@ -604,6 +606,7 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media @Override protected void onDisabled() { audioSinkNeedsReset = true; + inputFormat = null; try { audioSink.flush(); } finally { @@ -716,7 +719,7 @@ public class MediaCodecAudioRenderer extends MediaCodecRenderer implements Media fullyConsumed = audioSink.handleBuffer(buffer, bufferPresentationTimeUs, sampleCount); } catch (InitializationException e) { throw createRendererException( - e, e.format, e.isRecoverable, PlaybackException.ERROR_CODE_AUDIO_TRACK_INIT_FAILED); + e, inputFormat, e.isRecoverable, PlaybackException.ERROR_CODE_AUDIO_TRACK_INIT_FAILED); } catch (WriteException e) { throw createRendererException( e, format, e.isRecoverable, PlaybackException.ERROR_CODE_AUDIO_TRACK_WRITE_FAILED);