diff --git a/libraries/decoder/src/main/java/androidx/media3/decoder/Buffer.java b/libraries/decoder/src/main/java/androidx/media3/decoder/Buffer.java index 8d1c636da5..5c4b0e0dbd 100644 --- a/libraries/decoder/src/main/java/androidx/media3/decoder/Buffer.java +++ b/libraries/decoder/src/main/java/androidx/media3/decoder/Buffer.java @@ -39,7 +39,11 @@ public abstract class Buffer { return getFlag(C.BUFFER_FLAG_FIRST_SAMPLE); } - /** Returns whether the {@link C#BUFFER_FLAG_END_OF_STREAM} flag is set. */ + /** + * Returns whether the {@link C#BUFFER_FLAG_END_OF_STREAM} flag is set. + * + *

If this is set, all other attributes of the buffer should be ignored. + */ public final boolean isEndOfStream() { return getFlag(C.BUFFER_FLAG_END_OF_STREAM); } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/SampleQueue.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/SampleQueue.java index 533927f749..c8a1266820 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/SampleQueue.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/SampleQueue.java @@ -694,6 +694,7 @@ public class SampleQueue implements TrackOutput { if (!hasNextSample()) { if (loadingFinished || isLastSampleQueued) { buffer.setFlags(C.BUFFER_FLAG_END_OF_STREAM); + buffer.timeUs = C.TIME_END_OF_SOURCE; return C.RESULT_BUFFER_READ; } else if (upstreamFormat != null && (formatRequired || upstreamFormat != downstreamFormat)) { onFormatResult(Assertions.checkNotNull(upstreamFormat), formatHolder);