From a968e5535bd8b3d756f4a1de89354bf33a86d523 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 6 Feb 2015 11:32:46 +0000 Subject: [PATCH] Continue playback of tracks with longer duration than the timesource. If the timesource track renderer ends, but other track renderers haven't finished, the player would get stuck in a pending state. This change enables automatic switching to the media clock in the case that the timesource renderer has ended, which allows other renderers to continue to play. --- .../android/exoplayer/ExoPlayerImplInternal.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/ExoPlayerImplInternal.java b/library/src/main/java/com/google/android/exoplayer/ExoPlayerImplInternal.java index e72734e80a..96019112e7 100644 --- a/library/src/main/java/com/google/android/exoplayer/ExoPlayerImplInternal.java +++ b/library/src/main/java/com/google/android/exoplayer/ExoPlayerImplInternal.java @@ -375,10 +375,13 @@ import java.util.List; } private void updatePositionUs() { - positionUs = timeSourceTrackRenderer != null && - enabledRenderers.contains(timeSourceTrackRenderer) ? - timeSourceTrackRenderer.getCurrentPositionUs() : - mediaClock.getPositionUs(); + if (timeSourceTrackRenderer != null && enabledRenderers.contains(timeSourceTrackRenderer) + && !timeSourceTrackRenderer.isEnded()) { + positionUs = timeSourceTrackRenderer.getCurrentPositionUs(); + mediaClock.setPositionUs(positionUs); + } else { + positionUs = mediaClock.getPositionUs(); + } elapsedRealtimeUs = SystemClock.elapsedRealtime() * 1000; }