From 57a2749a9d78c2c88a0b4da5e62dca8ff1c504d4 Mon Sep 17 00:00:00 2001 From: olly Date: Thu, 22 Sep 2016 05:57:00 -0700 Subject: [PATCH] Fix playback of short duration content Issue #1837 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=133944552 --- .../exoplayer2/ExoPlayerImplInternal.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) 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 00520b2400..fe555a87ec 100644 --- a/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java +++ b/library/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java @@ -458,12 +458,11 @@ import java.io.IOException; startRenderers(); } } - } else if (state == ExoPlayer.STATE_READY) { - if (enabledRenderers.length > 0 ? !allRenderersReadyOrEnded : !isTimelineReady) { - rebuffering = playWhenReady; - setState(ExoPlayer.STATE_BUFFERING); - stopRenderers(); - } + } else if (state == ExoPlayer.STATE_READY + && (enabledRenderers.length > 0 ? !allRenderersReadyOrEnded : !isTimelineReady)) { + rebuffering = playWhenReady; + setState(ExoPlayer.STATE_BUFFERING); + stopRenderers(); } if (state == ExoPlayer.STATE_BUFFERING) { @@ -995,10 +994,18 @@ import java.io.IOException; eventHandler.obtainMessage(MSG_POSITION_DISCONTINUITY, playbackInfo).sendToTarget(); } updateTimelineState(); + + if (readingPeriodHolder != null && readingPeriodHolder.isLast) { + readingPeriodHolder = null; + for (Renderer renderer : enabledRenderers) { + renderer.setCurrentStreamIsFinal(); + } + } if (readingPeriodHolder == null) { // The renderers have their final SampleStreams. return; } + for (Renderer renderer : enabledRenderers) { if (!renderer.hasReadStreamToEnd()) { return; @@ -1029,11 +1036,6 @@ import java.io.IOException; } } } - } else if (readingPeriodHolder.isLast) { - readingPeriodHolder = null; - for (Renderer renderer : enabledRenderers) { - renderer.setCurrentStreamIsFinal(); - } } }