diff --git a/library/src/main/java/com/google/android/exoplayer/DefaultLoadControl.java b/library/src/main/java/com/google/android/exoplayer/DefaultLoadControl.java index b494e990fe..c85453c05f 100644 --- a/library/src/main/java/com/google/android/exoplayer/DefaultLoadControl.java +++ b/library/src/main/java/com/google/android/exoplayer/DefaultLoadControl.java @@ -162,18 +162,16 @@ public class DefaultLoadControl implements LoadControl { @Override public boolean update(Object loader, long playbackPositionUs, long nextLoadPositionUs, - boolean loading, boolean failed) { + boolean loading) { // Update the loader state. int loaderBufferState = getLoaderBufferState(playbackPositionUs, nextLoadPositionUs); LoaderState loaderState = loaderStates.get(loader); boolean loaderStateChanged = loaderState.bufferState != loaderBufferState - || loaderState.nextLoadPositionUs != nextLoadPositionUs || loaderState.loading != loading - || loaderState.failed != failed; + || loaderState.nextLoadPositionUs != nextLoadPositionUs || loaderState.loading != loading; if (loaderStateChanged) { loaderState.bufferState = loaderBufferState; loaderState.nextLoadPositionUs = nextLoadPositionUs; loaderState.loading = loading; - loaderState.failed = failed; } // Update the buffer state. @@ -213,18 +211,16 @@ public class DefaultLoadControl implements LoadControl { private void updateControlState() { boolean loading = false; - boolean failed = false; boolean haveNextLoadPosition = false; int highestState = bufferState; for (int i = 0; i < loaders.size(); i++) { LoaderState loaderState = loaderStates.get(loaders.get(i)); loading |= loaderState.loading; - failed |= loaderState.failed; haveNextLoadPosition |= loaderState.nextLoadPositionUs != -1; highestState = Math.max(highestState, loaderState.bufferState); } - fillingBuffers = !loaders.isEmpty() && !failed && (loading || haveNextLoadPosition) + fillingBuffers = !loaders.isEmpty() && (loading || haveNextLoadPosition) && (highestState == BELOW_LOW_WATERMARK || (highestState == BETWEEN_WATERMARKS && fillingBuffers)); if (fillingBuffers && !streamingPrioritySet) { @@ -268,14 +264,12 @@ public class DefaultLoadControl implements LoadControl { public int bufferState; public boolean loading; - public boolean failed; public long nextLoadPositionUs; public LoaderState(int bufferSizeContribution) { this.bufferSizeContribution = bufferSizeContribution; bufferState = ABOVE_HIGH_WATERMARK; loading = false; - failed = false; nextLoadPositionUs = -1; } diff --git a/library/src/main/java/com/google/android/exoplayer/LoadControl.java b/library/src/main/java/com/google/android/exoplayer/LoadControl.java index df6130017f..d7b2091ccd 100644 --- a/library/src/main/java/com/google/android/exoplayer/LoadControl.java +++ b/library/src/main/java/com/google/android/exoplayer/LoadControl.java @@ -68,10 +68,8 @@ public interface LoadControl { * @param nextLoadPositionUs The loader's next load position. -1 if finished, failed, or if the * next load position is not yet known. * @param loading Whether the loader is currently loading data. - * @param failed Whether the loader has failed. * @return True if the loader is allowed to start its next load. False otherwise. */ - boolean update(Object loader, long playbackPositionUs, long nextLoadPositionUs, - boolean loading, boolean failed); + boolean update(Object loader, long playbackPositionUs, long nextLoadPositionUs, boolean loading); } diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java b/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java index b9302bc84d..eb8b3aab0c 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/ChunkSampleSource.java @@ -426,7 +426,7 @@ public class ChunkSampleSource implements SampleSource, SampleSourceReader, Load // Update the control with our current state, and determine whether we're the next loader. boolean nextLoader = loadControl.update(this, downstreamPositionUs, nextLoadPositionUs, - loadingOrBackedOff, false); + loadingOrBackedOff); if (isBackedOff) { long elapsedMillis = now - currentLoadableExceptionTimestamp; diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java index c745dba20b..cf33fa7236 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java @@ -494,7 +494,7 @@ public class HlsSampleSource implements SampleSource, SampleSourceReader, Loader // Update the control with our current state, and determine whether we're the next loader. boolean nextLoader = loadControl.update(this, downstreamPositionUs, nextLoadPositionUs, - loadingOrBackedOff, false); + loadingOrBackedOff); if (isBackedOff) { long elapsedMillis = now - currentLoadableExceptionTimestamp;