From 0c4f5ebc910667a38892c51e316a90d68fe00e77 Mon Sep 17 00:00:00 2001 From: samrobinson Date: Wed, 3 Nov 2021 11:57:41 +0000 Subject: [PATCH] Fix END_OF_STREAM transformer timestamp matching previous. This cause the muxer to fail to stop on older devices/API levels. #minor-release PiperOrigin-RevId: 407309028 --- RELEASENOTES.md | 3 +++ .../exoplayer2/transformer/TransformerAudioRenderer.java | 1 + 2 files changed, 4 insertions(+) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 586144ca28..cbf79d1a9d 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -90,6 +90,9 @@ * Rename `MediaSessionConnector.QueueNavigator#onCurrentWindowIndexChanged` to `onCurrentMediaItemIndexChanged`. +* Transformer: + * Avoid sending a duplicate timestamp to the encoder with the end of + stream buffer. * Remove deprecated symbols: * Remove `Renderer.VIDEO_SCALING_MODE_*` constants. Use identically named constants in `C` instead. diff --git a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java index f20915c120..7efa0eb780 100644 --- a/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java +++ b/library/transformer/src/main/java/com/google/android/exoplayer2/transformer/TransformerAudioRenderer.java @@ -316,6 +316,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; private void queueEndOfStreamToEncoder(MediaCodecAdapterWrapper encoder) { checkState(checkNotNull(encoderInputBuffer.data).position() == 0); + encoderInputBuffer.timeUs = nextEncoderInputBufferTimeUs; encoderInputBuffer.addFlag(C.BUFFER_FLAG_END_OF_STREAM); encoderInputBuffer.flip(); // Queuing EOS should only occur with an empty buffer.