From 7bc5fa855f774ce198e23a455fec751b7743486f Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 2 Jun 2020 13:32:33 +0100 Subject: [PATCH] Don't keep pending preferred queue size during cancelation. Before loading a new chunk, the player will call reevaluateBuffer anyway, so we don't have to do this directly after cancelation. This simplifies some logic because we can remove the pending queue size variable. PiperOrigin-RevId: 314313268 --- .../exoplayer2/source/hls/HlsSampleStreamWrapper.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 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 79f4d975fc..28aba78558 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 @@ -146,7 +146,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; private @MonotonicNonNull Format upstreamTrackFormat; @Nullable private Format downstreamTrackFormat; private boolean released; - private int pendingDiscardUpstreamQueueSize; // Tracks are complicated in HLS. See documentation of buildTracksFromSampleStreams for details. // Indexed by track (as exposed by this source). @@ -230,7 +229,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; handler = Util.createHandler(); lastSeekPositionUs = positionUs; pendingResetPositionUs = positionUs; - pendingDiscardUpstreamQueueSize = C.LENGTH_UNSET; } public void continuePreparing() { @@ -708,7 +706,6 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; return; } if (loader.isLoading()) { - pendingDiscardUpstreamQueueSize = preferredQueueSize; loader.cancelLoading(); } else { discardUpstream(preferredQueueSize); @@ -769,10 +766,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; loadable.startTimeUs, loadable.endTimeUs); if (!released) { - if (pendingDiscardUpstreamQueueSize != C.LENGTH_UNSET) { - discardUpstream(pendingDiscardUpstreamQueueSize); - pendingDiscardUpstreamQueueSize = C.LENGTH_UNSET; - } else { + if (isPendingReset() || enabledTrackGroupCount == 0) { resetSampleQueues(); } if (enabledTrackGroupCount > 0) { @@ -891,7 +885,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; if (newQueueSize == C.LENGTH_UNSET) { return; } - + long endTimeUs = getLastMediaChunk().endTimeUs; HlsMediaChunk firstRemovedChunk = discardUpstreamMediaChunksFromIndex(newQueueSize); if (mediaChunks.isEmpty()) {