From d87fdaa3708c5435ca945f1f4246fb694f8ad48e Mon Sep 17 00:00:00 2001 From: aquilescanta Date: Tue, 22 Jun 2021 14:16:56 +0100 Subject: [PATCH] Fix the single-sample SampleStream regarding FLAG_REQUIRE_FORMAT The current FLAG_REQUIRE_FORMAT documentation states: If an end of stream buffer would be read were the flag not set, then behavior is unchanged. PiperOrigin-RevId: 380792251 --- .../exoplayer2/source/SingleSampleMediaPeriod.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java index 26438dbb77..314946f90a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java @@ -351,6 +351,10 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; public int readData( FormatHolder formatHolder, DecoderInputBuffer buffer, @ReadFlags int readFlags) { maybeNotifyDownstreamFormat(); + if (loadingFinished && sampleData == null) { + streamState = STREAM_STATE_END_OF_STREAM; + } + if (streamState == STREAM_STATE_END_OF_STREAM) { buffer.addFlag(C.BUFFER_FLAG_END_OF_STREAM); return C.RESULT_BUFFER_READ; @@ -365,12 +369,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; if (!loadingFinished) { return C.RESULT_NOTHING_READ; } - - if (sampleData == null) { - buffer.addFlag(C.BUFFER_FLAG_END_OF_STREAM); - streamState = STREAM_STATE_END_OF_STREAM; - return C.RESULT_BUFFER_READ; - } + Assertions.checkNotNull(sampleData); buffer.addFlag(C.BUFFER_FLAG_KEY_FRAME); buffer.timeUs = 0;