From bd7c8fed1b0c662aa951f4a47d08a65759f8ea27 Mon Sep 17 00:00:00 2001 From: eguven Date: Tue, 2 Aug 2016 04:26:33 -0700 Subject: [PATCH] While buffering check for errors even if renderes are ready. On an edge case, player may get stuck when the renderers are ready but the buffer doesn't get full enough because of a fatal error in data source. An example state can be created by starting a live DASH stream and switching between normal and slow network connections. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=129084824 --- .../google/android/exoplayer2/ExoPlayerImplInternal.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java b/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java index 26c9900dfe..6deb522f8a 100644 --- a/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java +++ b/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java @@ -470,6 +470,12 @@ import java.util.ArrayList; } } + if (state == ExoPlayer.STATE_BUFFERING) { + for (Renderer renderer : enabledRenderers) { + renderer.maybeThrowStreamError(); + } + } + handler.removeMessages(MSG_DO_SOME_WORK); if ((playWhenReady && state == ExoPlayer.STATE_READY) || state == ExoPlayer.STATE_BUFFERING) { scheduleNextOperation(MSG_DO_SOME_WORK, operationStartTimeMs, RENDERING_INTERVAL_MS);