@Override public Window getWindow( int windowIndex, Window window, boolean setTag, long defaultPositionProjectionUs) { Assertions.checkIndex(windowIndex, 0, 1); Object tag = setTag ? this.tag : null; long windowDefaultStartPositionUs = this.windowDefaultStartPositionUs; if (isDynamic && defaultPositionProjectionUs != 0) { if (windowDurationUs == C.TIME_UNSET) { // Don't allow projection into a window that has an unknown duration. windowDefaultStartPositionUs = C.TIME_UNSET; } else { windowDefaultStartPositionUs += defaultPositionProjectionUs; if (windowDefaultStartPositionUs > windowDurationUs) { // The projection takes us beyond the end of the window. windowDefaultStartPositionUs = C.TIME_UNSET; } } } return window.set( tag, presentationStartTimeMs, windowStartTimeMs, isSeekable, isDynamic, windowDefaultStartPositionUs, windowDurationUs, 0, 0, windowPositionInPeriodUs); }
@Override public Window getWindow( int windowIndex, Window window, boolean setTag, long defaultPositionProjectionUs) { Assertions.checkIndex(windowIndex, 0, 1); long windowDefaultStartPositionUs = getAdjustedWindowDefaultStartPositionUs( defaultPositionProjectionUs); Object tag = setTag ? windowTag : null; boolean isDynamic = manifest.dynamic && manifest.minUpdatePeriodMs != C.TIME_UNSET && manifest.durationMs == C.TIME_UNSET; return window.set( tag, presentationStartTimeMs, windowStartTimeMs, /* isSeekable= */ true, isDynamic, windowDefaultStartPositionUs, windowDurationUs, /* firstPeriodIndex= */ 0, /* lastPeriodIndex= */ getPeriodCount() - 1, offsetInFirstPeriodUs); }
@Override public Window getWindow( int windowIndex, Window window, boolean setTag, long defaultPositionProjectionUs) { long durationUs = durationsUs[windowIndex]; boolean isDynamic = durationUs == C.TIME_UNSET; Object tag = setTag ? ids[windowIndex] : null; return window.set( tag, /* presentationStartTimeMs= */ C.TIME_UNSET, /* windowStartTimeMs= */ C.TIME_UNSET, /* isSeekable= */ !isDynamic, isDynamic, defaultPositionsUs[windowIndex], durationUs, /* firstPeriodIndex= */ windowIndex, /* lastPeriodIndex= */ windowIndex, /* positionInFirstPeriodUs= */ 0); }
@Override public Window getWindow( int windowIndex, Window window, boolean setTag, long defaultPositionProjectionUs) { TimelineWindowDefinition windowDefinition = windowDefinitions[windowIndex]; Object tag = setTag ? windowDefinition.id : null; return window.set( tag, /* presentationStartTimeMs= */ C.TIME_UNSET, /* windowStartTimeMs= */ C.TIME_UNSET, windowDefinition.isSeekable, windowDefinition.isDynamic, /* defaultPositionUs= */ 0, windowDefinition.durationUs, periodOffsets[windowIndex], periodOffsets[windowIndex + 1] - 1, /* positionInFirstPeriodUs= */ 0); }
@Override public Window getWindow( int windowIndex, Window window, boolean setTag, long defaultPositionProjectionUs) { TimelineWindowDefinition windowDefinition = windowDefinitions[windowIndex]; Object tag = setTag ? windowDefinition.id : null; return window.set( tag, /* presentationStartTimeMs= */ C.TIME_UNSET, /* windowStartTimeMs= */ C.TIME_UNSET, windowDefinition.isSeekable, windowDefinition.isDynamic, /* defaultPositionUs= */ 0, windowDefinition.durationUs, periodOffsets[windowIndex], periodOffsets[windowIndex + 1] - 1, /* positionInFirstPeriodUs= */ 0); }
@Override public Window getWindow( int windowIndex, Window window, boolean setTag, long defaultPositionProjectionUs) { return window.set( tag, /* presentationStartTimeMs= */ C.TIME_UNSET, /* windowStartTimeMs= */ C.TIME_UNSET, /* isSeekable= */ false, // Dynamic window to indicate pending timeline updates. /* isDynamic= */ true, /* defaultPositionUs= */ 0, /* durationUs= */ C.TIME_UNSET, /* firstPeriodIndex= */ 0, /* lastPeriodIndex= */ 0, /* positionInFirstPeriodUs= */ 0); }