diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsChunkSource.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsChunkSource.java index 3a5d82b9dc4..530d56fa9c8 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsChunkSource.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsChunkSource.java @@ -41,7 +41,9 @@ import com.google.android.exoplayer2.util.TimestampAdjuster; import com.google.android.exoplayer2.util.UriUtil; import com.google.android.exoplayer2.util.Util; +import com.google.common.primitives.Ints; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; @@ -151,11 +153,15 @@ public HlsChunkSource( } encryptionDataSource = dataSourceFactory.createDataSource(C.DATA_TYPE_DRM); trackGroup = new TrackGroup(playlistFormats); - int[] initialTrackSelection = new int[playlistUrls.length]; + // Use only non-trickplay variants for preparation. See [Internal ref: b/161529098]. + ArrayList initialTrackSelection = new ArrayList<>(); for (int i = 0; i < playlistUrls.length; i++) { - initialTrackSelection[i] = i; + if ((playlistFormats[i].roleFlags & C.ROLE_FLAG_TRICK_PLAY) == 0) { + initialTrackSelection.add(i); + } } - trackSelection = new InitializationTrackSelection(trackGroup, initialTrackSelection); + trackSelection = + new InitializationTrackSelection(trackGroup, Ints.toArray(initialTrackSelection)); } /**