Merge pull request #6502 from caiiiyua:bug_default_dash_chunk_source_wrong_segmentnumshift

PiperOrigin-RevId: 273549830
This commit is contained in:
Oliver Woodman 2019-10-08 20:55:25 +01:00
commit 4026c8a01e

View File

@ -686,7 +686,9 @@ public class DefaultDashChunkSource implements DashChunkSource {
newPeriodDurationUs, newRepresentation, extractorWrapper, segmentNumShift, newIndex); newPeriodDurationUs, newRepresentation, extractorWrapper, segmentNumShift, newIndex);
} }
long oldIndexLastSegmentNum = oldIndex.getFirstSegmentNum() + oldIndexSegmentCount - 1; long oldIndexFirstSegmentNum = oldIndex.getFirstSegmentNum();
long oldIndexStartTimeUs = oldIndex.getTimeUs(oldIndexFirstSegmentNum);
long oldIndexLastSegmentNum = oldIndexFirstSegmentNum + oldIndexSegmentCount - 1;
long oldIndexEndTimeUs = long oldIndexEndTimeUs =
oldIndex.getTimeUs(oldIndexLastSegmentNum) oldIndex.getTimeUs(oldIndexLastSegmentNum)
+ oldIndex.getDurationUs(oldIndexLastSegmentNum, newPeriodDurationUs); + oldIndex.getDurationUs(oldIndexLastSegmentNum, newPeriodDurationUs);
@ -700,8 +702,14 @@ public class DefaultDashChunkSource implements DashChunkSource {
// There's a gap between the old index and the new one which means we've slipped behind the // 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. // live window and can't proceed.
throw new BehindLiveWindowException(); throw new BehindLiveWindowException();
} else if (newIndexStartTimeUs < oldIndexStartTimeUs) {
// 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.
newSegmentNumShift -=
newIndex.getSegmentNum(oldIndexStartTimeUs, newPeriodDurationUs)
- oldIndexFirstSegmentNum;
} else { } else {
// The new index overlaps with the old one. // The new index overlaps with (and has a start position contained within) the old index.
newSegmentNumShift += newSegmentNumShift +=
oldIndex.getSegmentNum(newIndexStartTimeUs, newPeriodDurationUs) oldIndex.getSegmentNum(newIndexStartTimeUs, newPeriodDurationUs)
- newIndexFirstSegmentNum; - newIndexFirstSegmentNum;