From e2768335e65721d567a85214d89556137ae76960 Mon Sep 17 00:00:00 2001 From: "prabhav.sharma" Date: Tue, 23 Sep 2025 09:15:13 -0700 Subject: [PATCH] Allow gains to be larger than 1.0 in gainProcessor --- .../java/androidx/media3/common/audio/GainProcessor.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/common/src/main/java/androidx/media3/common/audio/GainProcessor.java b/libraries/common/src/main/java/androidx/media3/common/audio/GainProcessor.java index 6310864a45c..83b6e90e191 100644 --- a/libraries/common/src/main/java/androidx/media3/common/audio/GainProcessor.java +++ b/libraries/common/src/main/java/androidx/media3/common/audio/GainProcessor.java @@ -127,10 +127,12 @@ public void queueInput(ByteBuffer inputBuffer) { for (int i = 0; i < inputAudioFormat.channelCount; i++) { switch (inputAudioFormat.encoding) { case C.ENCODING_PCM_16BIT: - buffer.putShort((short) (inputBuffer.getShort() * gain)); + int clampedShort = Math.max(Short.MIN_VALUE, Math.min(Short.MAX_VALUE, (short) (inputBuffer.getShort() * gain))); + buffer.putShort((short) clampedShort); break; case C.ENCODING_PCM_FLOAT: - buffer.putFloat(inputBuffer.getFloat() * gain); + float clampedFloat = Math.max(-1, Math.min(1f, inputBuffer.getFloat() * gain)); + buffer.putFloat(clampedFloat); break; default: throw new IllegalStateException(