Check the new index contains the old index based on stat time instead of segNum

This commit is contained in:
Cai Yuanqing 2019-10-04 13:55:25 +13:00
parent c2d9960a6e
commit 9ec94a4bdc

View file

@ -686,6 +686,8 @@ public class DefaultDashChunkSource implements DashChunkSource {
newPeriodDurationUs, newRepresentation, extractorWrapper, segmentNumShift, newIndex);
}
long oldIndexFirstSegmentNum = oldIndex.getFirstSegmentNum();
long oldIndexStartTimeUs = oldIndex.getTimeUs(oldIndexFirstSegmentNum);
long oldIndexLastSegmentNum = oldIndex.getFirstSegmentNum() + oldIndexSegmentCount - 1;
long oldIndexEndTimeUs =
oldIndex.getTimeUs(oldIndexLastSegmentNum)
@ -700,8 +702,10 @@ public class DefaultDashChunkSource implements DashChunkSource {
// There's a gap between the old index and the new one which means we've slipped behind the
// live window and can't proceed.
throw new BehindLiveWindowException();
} else if (oldIndex.getFirstSegmentNum() >= newIndexFirstSegmentNum) {
// The new index contains the old one, continue process the next segment
} else if (oldIndexStartTimeUs >= newIndexStartTimeUs) {
// The new index overlaps with (but does not have a start position contained within) the old
// index. This can only happen if extra segments have been added to the start of the index.
// Continue process the next segment as is.
} else {
// The new index overlaps with the old one.
newSegmentNumShift +=