diff --git a/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java b/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java index 57925ed67a..f4c8177f21 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaPeriod.java @@ -328,7 +328,7 @@ import java.util.List; sampleStreamWrappers = new HlsSampleStreamWrapper[] { buildSampleStreamWrapper(C.TRACK_TYPE_DEFAULT, baseUri, variants, null, null)}; pendingPrepareCount = 1; - sampleStreamWrappers[0].prepare(); + sampleStreamWrappers[0].continuePreparing(); return; } @@ -369,16 +369,16 @@ import java.util.List; selectedVariants.toArray(variants); HlsSampleStreamWrapper sampleStreamWrapper = buildSampleStreamWrapper(C.TRACK_TYPE_DEFAULT, baseUri, variants, masterPlaylist.muxedAudioFormat, masterPlaylist.muxedCaptionFormat); - sampleStreamWrapper.prepare(); sampleStreamWrappers[currentWrapperIndex++] = sampleStreamWrapper; + sampleStreamWrapper.continuePreparing(); } // Build audio stream wrappers. for (int i = 0; i < audioVariants.size(); i++) { HlsSampleStreamWrapper sampleStreamWrapper = buildSampleStreamWrapper(C.TRACK_TYPE_AUDIO, baseUri, new HlsMasterPlaylist.HlsUrl[] {audioVariants.get(i)}, null, null); - sampleStreamWrapper.prepare(); sampleStreamWrappers[currentWrapperIndex++] = sampleStreamWrapper; + sampleStreamWrapper.continuePreparing(); } // Build subtitle stream wrappers. diff --git a/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java b/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java index 6c698d3c4d..fe756da0ef 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper.java @@ -144,8 +144,10 @@ import java.util.LinkedList; pendingResetPositionUs = positionUs; } - public void prepare() { - continueLoading(lastSeekPositionUs); + public void continuePreparing() { + if (!prepared) { + continueLoading(lastSeekPositionUs); + } } /** @@ -154,7 +156,8 @@ import java.util.LinkedList; */ public void prepareSingleTrack(Format format) { track(0).format(format); - endTracks(); + sampleQueuesBuilt = true; + maybeFinishPrepare(); } public void maybeThrowPrepareError() throws IOException {