diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java index 66de6698b6..7d553fd57f 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java @@ -767,10 +767,14 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; return; } - if (!readOnlyMediaChunks.isEmpty() - && chunkSource.getChunkPublicationState(Iterables.getLast(readOnlyMediaChunks)) + int newQueueSize = readOnlyMediaChunks.size(); + while (newQueueSize > 0 + && chunkSource.getChunkPublicationState(readOnlyMediaChunks.get(newQueueSize - 1)) == CHUNK_PUBLICATION_STATE_REMOVED) { - discardUpstream(mediaChunks.size() - 1); + newQueueSize--; + } + if (newQueueSize < readOnlyMediaChunks.size()) { + discardUpstream(newQueueSize); } int preferredQueueSize = chunkSource.getPreferredQueueSize(positionUs, readOnlyMediaChunks);