From 490519a49a855e42df6579512ff2ab574f2ef7f4 Mon Sep 17 00:00:00 2001 From: tonihei Date: Thu, 17 Dec 2020 12:16:15 +0000 Subject: [PATCH] Update HLS window duration with trailing parts. If we have trailing parts the available window should reach to the end of all trailing parts and not only to the last finished segment. Issue: #5011 PiperOrigin-RevId: 347996626 --- .../android/exoplayer2/source/hls/HlsMediaSource.java | 1 - .../source/hls/playlist/HlsMediaPlaylist.java | 10 +++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java index bb5ce6c509..0033fd6aee 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/HlsMediaSource.java @@ -536,7 +536,6 @@ public final class HlsMediaSource extends BaseMediaSource } else if (windowDefaultStartPositionUs == C.TIME_UNSET) { windowDefaultStartPositionUs = 0; } - timeline = new SinglePeriodTimeline( presentationStartTimeMs, diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java index 14c369c3e7..9b9082af9d 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/HlsMediaPlaylist.java @@ -25,6 +25,7 @@ import com.google.android.exoplayer2.drm.DrmInitData; import com.google.android.exoplayer2.offline.StreamKey; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Iterables; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -475,9 +476,12 @@ public final class HlsMediaPlaylist extends HlsPlaylist { this.skippedSegmentCount = skippedSegmentCount; this.trailingParts = ImmutableList.copyOf(trailingParts); this.renditionReports = ImmutableMap.copyOf(renditionReports); - if (!segments.isEmpty()) { - Segment last = segments.get(segments.size() - 1); - durationUs = last.relativeStartTimeUs + last.durationUs; + if (!trailingParts.isEmpty()) { + Part lastPart = Iterables.getLast(trailingParts); + durationUs = lastPart.relativeStartTimeUs + lastPart.durationUs; + } else if (!segments.isEmpty()) { + Segment lastSegment = Iterables.getLast(segments); + durationUs = lastSegment.relativeStartTimeUs + lastSegment.durationUs; } else { durationUs = 0; }