From affdff65e3b4677b5ee5503ce1e91def430158c4 Mon Sep 17 00:00:00 2001 From: bachinger Date: Wed, 2 Dec 2020 19:30:14 +0000 Subject: [PATCH] Remove HLS chunks based on parts not in playlist anymore Issue: #5011 PiperOrigin-RevId: 345275266 --- .../exoplayer2/source/hls/HlsSampleStreamWrapper.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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);