From a56af3d0e05f66fad5191413f371d2f4fa3d7f23 Mon Sep 17 00:00:00 2001 From: christosts Date: Tue, 12 Oct 2021 12:00:13 +0100 Subject: [PATCH] SubtitleExtractor: mark the limit of the input buffer Before this change, the SubtitleExtractor did not mark the limit of the input buffer, thus the SubtitleDecoder attempted to decode more bytes. If the subtitle file had a new line at the end, this bug would make the SubtitleDecoder append an line break after the last subtitle. PiperOrigin-RevId: 402523039 --- .../com/google/android/exoplayer2/text/SubtitleExtractor.java | 1 + .../google/android/exoplayer2/text/SubtitleExtractorTest.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/text/SubtitleExtractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/text/SubtitleExtractor.java index 3642ff177e..0336f23de1 100644 --- a/library/extractor/src/main/java/com/google/android/exoplayer2/text/SubtitleExtractor.java +++ b/library/extractor/src/main/java/com/google/android/exoplayer2/text/SubtitleExtractor.java @@ -212,6 +212,7 @@ public class SubtitleExtractor implements Extractor { } inputBuffer.ensureSpaceForWrite(bytesRead); inputBuffer.data.put(subtitleData.getData(), /* offset= */ 0, bytesRead); + inputBuffer.data.limit(bytesRead); subtitleDecoder.queueInputBuffer(inputBuffer); @Nullable SubtitleOutputBuffer outputBuffer = subtitleDecoder.dequeueOutputBuffer(); while (outputBuffer == null) { diff --git a/library/extractor/src/test/java/com/google/android/exoplayer2/text/SubtitleExtractorTest.java b/library/extractor/src/test/java/com/google/android/exoplayer2/text/SubtitleExtractorTest.java index 8e09ef0662..2dfafd88d0 100644 --- a/library/extractor/src/test/java/com/google/android/exoplayer2/text/SubtitleExtractorTest.java +++ b/library/extractor/src/test/java/com/google/android/exoplayer2/text/SubtitleExtractorTest.java @@ -44,7 +44,7 @@ public class SubtitleExtractorTest { + "This is the second subtitle.\n" + "\n" + "00:02.600 --> 00:04.567\n" - + "This is the third subtitle."; + + "This is the third subtitle.\n"; @Test public void extractor_outputsCues() throws Exception {