From 696bb34ac6f1dc0a3f66687c8d4db56ab5357ec3 Mon Sep 17 00:00:00 2001 From: tonihei Date: Mon, 21 Dec 2020 12:11:39 +0000 Subject: [PATCH] Fix second sync point calculation for unbounded live streams. We currently use INDEX_UNBOUNDED for the calculation and don't offset the index by the firstSegmentNum if not unbounded. PiperOrigin-RevId: 348445797 --- .../exoplayer2/source/dash/DefaultDashChunkSource.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java index ad679ebe7f..ce7563431c 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java @@ -195,8 +195,12 @@ public class DefaultDashChunkSource implements DashChunkSource { if (representationHolder.segmentIndex != null) { long segmentNum = representationHolder.getSegmentNum(positionUs); long firstSyncUs = representationHolder.getSegmentStartTimeUs(segmentNum); + int segmentCount = representationHolder.getSegmentCount(); long secondSyncUs = - firstSyncUs < positionUs && segmentNum < representationHolder.getSegmentCount() - 1 + firstSyncUs < positionUs + && (segmentCount == DashSegmentIndex.INDEX_UNBOUNDED + || segmentNum + < representationHolder.getFirstSegmentNum() + segmentCount - 1) ? representationHolder.getSegmentStartTimeUs(segmentNum + 1) : firstSyncUs; return seekParameters.resolveSeekPositionUs(positionUs, firstSyncUs, secondSyncUs);