@Override public Period getPeriod(int periodIndex, Period period, boolean setIds) { int windowIndex = Util.binarySearchFloor(periodOffsets, periodIndex, true, false); int windowPeriodIndex = periodIndex - periodOffsets[windowIndex]; TimelineWindowDefinition windowDefinition = windowDefinitions[windowIndex]; Object id = setIds ? windowPeriodIndex : null; Object uid = setIds ? Pair.create(windowDefinition.id, windowPeriodIndex) : null; long periodDurationUs = windowDefinition.durationUs / windowDefinition.periodCount; long positionInWindowUs = periodDurationUs * windowPeriodIndex; return period.set( id, uid, windowIndex, periodDurationUs, positionInWindowUs, windowDefinition.adPlaybackState); }
@Override public Period getPeriod(int periodIndex, Period period, boolean setIds) { int windowIndex = Util.binarySearchFloor(periodOffsets, periodIndex, true, false); int windowPeriodIndex = periodIndex - periodOffsets[windowIndex]; TimelineWindowDefinition windowDefinition = windowDefinitions[windowIndex]; Object id = setIds ? windowPeriodIndex : null; Object uid = setIds ? Pair.create(windowDefinition.id, windowPeriodIndex) : null; long periodDurationUs = windowDefinition.durationUs / windowDefinition.periodCount; long positionInWindowUs = periodDurationUs * windowPeriodIndex; return period.set( id, uid, windowIndex, periodDurationUs, positionInWindowUs, windowDefinition.adPlaybackState); }
/** * Sets the data held by this period. * * @param id An identifier for the period. Not necessarily unique. * @param uid A unique identifier for the period. * @param windowIndex The index of the window to which this period belongs. * @param durationUs The duration of this period in microseconds, or {@link C#TIME_UNSET} if * unknown. * @param positionInWindowUs The position of the start of this period relative to the start of * the window to which it belongs, in milliseconds. May be negative if the start of the * period is not within the window. * @return This period, for convenience. */ public Period set(Object id, Object uid, int windowIndex, long durationUs, long positionInWindowUs) { return set(id, uid, windowIndex, durationUs, positionInWindowUs, AdPlaybackState.NONE); }
@Override public Period getPeriod(int periodIndex, Period period, boolean setIdentifiers) { Assertions.checkIndex(periodIndex, 0, getPeriodCount()); Object id = setIdentifiers ? manifest.getPeriod(periodIndex).id : null; Object uid = setIdentifiers ? (firstPeriodId + periodIndex) : null; return period.set(id, uid, 0, manifest.getPeriodDurationUs(periodIndex), C.msToUs(manifest.getPeriod(periodIndex).startMs - manifest.getPeriod(0).startMs) - offsetInFirstPeriodUs); }
@Override public Period getPeriod(int periodIndex, Period period, boolean setIds) { int id = ids[periodIndex]; return period.set(id, id, periodIndex, durationsUs[periodIndex], 0); }
@Override public Period getPeriod(int periodIndex, Period period, boolean setIds) { timeline.getPeriod(periodIndex, period, setIds); period.set( period.id, period.uid, period.windowIndex, period.durationUs, period.getPositionInWindowUs(), adPlaybackState); return period; }
@Override public Period getPeriod(int periodIndex, Period period, boolean setIds) { Assertions.checkIndex(periodIndex, 0, 1); Object uid = setIds ? UID : null; return period.set(/* id= */ null, uid, 0, periodDurationUs, -windowPositionInPeriodUs); }
@Override public Period getPeriod(int periodIndex, Period period, boolean setIds) { return period.set( /* id= */ 0, /* uid= */ DeferredTimeline.DUMMY_ID, /* windowIndex= */ 0, /* durationUs = */ C.TIME_UNSET, /* positionInWindowUs= */ 0); }
@Override public Period getPeriod(int periodIndex, Period period, boolean setIds) { timeline.getPeriod(/* periodIndex= */ 0, period, setIds); long positionInClippedWindowUs = period.getPositionInWindowUs() - startUs; long periodDurationUs = durationUs == C.TIME_UNSET ? C.TIME_UNSET : durationUs - positionInClippedWindowUs; return period.set( period.id, period.uid, /* windowIndex= */ 0, periodDurationUs, positionInClippedWindowUs); } }