diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 620cac92388..d7144a557a7 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -54,6 +54,8 @@ `ROLE_FLAG_ALTERNATE` to prevent them being automatically selected for playback because of their higher resolution. * Audio: + * Fix handling of EOS for `SilenceSkippingAudioProcessor` when called + multiple times ([#712](https://github.com/androidx/media/issues/712)). * Video: * Add workaround for a device issue on Galaxy Tab S7 FE, Chromecast with Google TV, and Lenovo M10 FHD Plus that causes 60fps AVC streams to be diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/SilenceSkippingAudioProcessor.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/SilenceSkippingAudioProcessor.java index 53898a97477..93a828ebe73 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/SilenceSkippingAudioProcessor.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/SilenceSkippingAudioProcessor.java @@ -189,8 +189,11 @@ public void queueInput(ByteBuffer inputBuffer) { @Override protected void onQueueEndOfStream() { if (maybeSilenceBufferSize > 0) { - // We haven't received enough silence to transition to the silent state, so output the buffer. + // We haven't received enough silence to transition to the silent state, so output the buffer + // and switch back to the noisy state. output(maybeSilenceBuffer, maybeSilenceBufferSize); + maybeSilenceBufferSize = 0; + state = STATE_NOISY; } if (!hasOutputNoise) { skippedFrames += paddingSize / bytesPerFrame;