diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 122b7bb2846..145e6ffb768 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -19,6 +19,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;