From 8a4f72b959eba1323f4dfc3a7558a598fcd4f1ff Mon Sep 17 00:00:00 2001 From: kimvde Date: Thu, 17 Nov 2022 12:05:07 +0000 Subject: [PATCH] Make sure the AudioProcessors do not receive AP.EMPTY_BUFFER PiperOrigin-RevId: 489174645 --- .../media3/common/audio/AudioProcessingPipeline.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessingPipeline.java b/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessingPipeline.java index 38ceb8d7fe..c51cc12dda 100644 --- a/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessingPipeline.java +++ b/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessingPipeline.java @@ -323,6 +323,13 @@ public final class AudioProcessingPipeline { index > 0 ? outputBuffers[index - 1] : inputBuffer.hasRemaining() ? inputBuffer : EMPTY_BUFFER; + if (input == AudioProcessor.EMPTY_BUFFER) { + // TODO(internal b/198772621): compare to how it was done in DefaultAudioSink to make sure + // this is not unnecessarily complicated. + // Queueing AudioProcessor.EMPTY_BUFFER to an AudioProcessor might lead to unexpected + // behaviour (see [Internal: b/259393434]). + input = EMPTY_BUFFER; + } long inputBytes = input.remaining(); audioProcessor.queueInput(input); outputBuffers[index] = audioProcessor.getOutput();