com.google.android.exoplayer2.Timeline.getWindow()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(7.8k)|赞(0)|评价(0)|浏览(121)

本文整理了Java中com.google.android.exoplayer2.Timeline.getWindow()方法的一些代码示例,展示了Timeline.getWindow()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Timeline.getWindow()方法的具体详情如下:
包路径:com.google.android.exoplayer2.Timeline
类名称:Timeline
方法名:getWindow

Timeline.getWindow介绍

[英]Populates a Window with data for the window at the specified index. Does not populate Window#tag.
[中]

代码示例

代码示例来源:origin: google/ExoPlayer

/**
 * Populates a {@link Window} with data for the window at the specified index. Does not populate
 * {@link Window#tag}.
 *
 * @param windowIndex The index of the window.
 * @param window The {@link Window} to populate. Must not be null.
 * @return The populated {@link Window}, for convenience.
 */
public final Window getWindow(int windowIndex, Window window) {
 return getWindow(windowIndex, window, false);
}

代码示例来源:origin: google/ExoPlayer

@Override
@Nullable
public final Object getCurrentTag() {
 int windowIndex = getCurrentWindowIndex();
 Timeline timeline = getCurrentTimeline();
 return windowIndex >= timeline.getWindowCount()
   ? null
   : timeline.getWindow(windowIndex, window, /* setTag= */ true).tag;
}

代码示例来源:origin: google/ExoPlayer

@Override
public Window getWindow(
  int windowIndex, Window window, boolean setTag, long defaultPositionProjectionUs) {
 return timeline.getWindow(windowIndex, window, setTag, defaultPositionProjectionUs);
}

代码示例来源:origin: google/ExoPlayer

/** Asserts that window properties {@link Window}.isDynamic are set correctly. */
public static void assertWindowIsDynamic(Timeline timeline, boolean... windowIsDynamic) {
 Window window = new Window();
 for (int i = 0; i < timeline.getWindowCount(); i++) {
  timeline.getWindow(i, window, true);
  assertThat(window.isDynamic).isEqualTo(windowIsDynamic[i]);
 }
}

代码示例来源:origin: google/ExoPlayer

/**
 * Populates a {@link Window} with data for the window at the specified index.
 *
 * @param windowIndex The index of the window.
 * @param window The {@link Window} to populate. Must not be null.
 * @param setTag Whether {@link Window#tag} should be populated. If false, the field will be set
 *     to null. The caller should pass false for efficiency reasons unless the field is required.
 * @return The populated {@link Window}, for convenience.
 */
public final Window getWindow(int windowIndex, Window window, boolean setTag) {
 return getWindow(windowIndex, window, setTag, 0);
}

代码示例来源:origin: google/ExoPlayer

/** Asserts that window properties {@link Window}.isDynamic are set correctly. */
public static void assertWindowIsDynamic(Timeline timeline, boolean... windowIsDynamic) {
 Window window = new Window();
 for (int i = 0; i < timeline.getWindowCount(); i++) {
  timeline.getWindow(i, window, true);
  assertThat(window.isDynamic).isEqualTo(windowIsDynamic[i]);
 }
}

代码示例来源:origin: google/ExoPlayer

@Override
@Nullable
public Object getTag() {
 boolean hasTimeline = timeline != null && !timeline.isEmpty();
 return hasTimeline ? timeline.getWindow(0, new Timeline.Window()).tag : null;
}

代码示例来源:origin: google/ExoPlayer

@Test
public void testNoClipping() throws IOException {
 Timeline timeline = new SinglePeriodTimeline(TEST_PERIOD_DURATION_US, true, false);
 Timeline clippedTimeline = getClippedTimeline(timeline, 0, TEST_PERIOD_DURATION_US);
 assertThat(clippedTimeline.getWindowCount()).isEqualTo(1);
 assertThat(clippedTimeline.getPeriodCount()).isEqualTo(1);
 assertThat(clippedTimeline.getWindow(0, window).getDurationUs())
   .isEqualTo(TEST_PERIOD_DURATION_US);
 assertThat(clippedTimeline.getPeriod(0, period).getDurationUs())
   .isEqualTo(TEST_PERIOD_DURATION_US);
}

代码示例来源:origin: google/ExoPlayer

@Override
public final boolean isCurrentWindowSeekable() {
 Timeline timeline = getCurrentTimeline();
 return !timeline.isEmpty() && timeline.getWindow(getCurrentWindowIndex(), window).isSeekable;
}

代码示例来源:origin: google/ExoPlayer

@Override
public final boolean isCurrentWindowDynamic() {
 Timeline timeline = getCurrentTimeline();
 return !timeline.isEmpty() && timeline.getWindow(getCurrentWindowIndex(), window).isDynamic;
}

代码示例来源:origin: google/ExoPlayer

private boolean isLastInTimeline(MediaPeriodId id, boolean isLastMediaPeriodInPeriod) {
  int periodIndex = timeline.getIndexOfPeriod(id.periodUid);
  int windowIndex = timeline.getPeriod(periodIndex, period).windowIndex;
  return !timeline.getWindow(windowIndex, window).isDynamic
    && timeline.isLastPeriod(periodIndex, period, window, repeatMode, shuffleModeEnabled)
    && isLastMediaPeriodInPeriod;
 }
}

代码示例来源:origin: google/ExoPlayer

@Override
public final long getContentDuration() {
 Timeline timeline = getCurrentTimeline();
 return timeline.isEmpty()
   ? C.TIME_UNSET
   : timeline.getWindow(getCurrentWindowIndex(), window).getDurationMs();
}

代码示例来源:origin: google/ExoPlayer

@Override
public final Window getWindow(
  int windowIndex, Window window, boolean setTag, long defaultPositionProjectionUs) {
 int childIndex = getChildIndexByWindowIndex(windowIndex);
 int firstWindowIndexInChild = getFirstWindowIndexByChildIndex(childIndex);
 int firstPeriodIndexInChild = getFirstPeriodIndexByChildIndex(childIndex);
 getTimelineByChildIndex(childIndex)
   .getWindow(
     windowIndex - firstWindowIndexInChild, window, setTag, defaultPositionProjectionUs);
 window.firstPeriodIndex += firstPeriodIndexInChild;
 window.lastPeriodIndex += firstPeriodIndexInChild;
 return window;
}

代码示例来源:origin: google/ExoPlayer

@Override
@Nullable
public Object getTag() {
 boolean hasTimeline = timeline != null && !timeline.isEmpty();
 return hasTimeline ? timeline.getWindow(0, new Timeline.Window()).tag : null;
}

代码示例来源:origin: google/ExoPlayer

private void next() {
 Timeline timeline = player.getCurrentTimeline();
 if (timeline.isEmpty() || player.isPlayingAd()) {
  return;
 }
 int windowIndex = player.getCurrentWindowIndex();
 int nextWindowIndex = player.getNextWindowIndex();
 if (nextWindowIndex != C.INDEX_UNSET) {
  seekTo(nextWindowIndex, C.TIME_UNSET);
 } else if (timeline.getWindow(windowIndex, window).isDynamic) {
  seekTo(windowIndex, C.TIME_UNSET);
 }
}

代码示例来源:origin: google/ExoPlayer

@Test
public void testClippingToEndOfSourceWithUnsetDurationDoesNotSetDuration() throws IOException {
 // Create a child timeline that has an unknown duration.
 Timeline timeline =
   new SinglePeriodTimeline(
     /* durationUs= */ C.TIME_UNSET, /* isSeekable= */ true, /* isDynamic= */ false);
 // When clipping to the end, the clipped timeline should also have an unset duration.
 Timeline clippedTimeline =
   getClippedTimeline(timeline, TEST_CLIP_AMOUNT_US, C.TIME_END_OF_SOURCE);
 assertThat(clippedTimeline.getWindow(/* windowIndex= */ 0, window).getDurationUs())
   .isEqualTo(C.TIME_UNSET);
}

代码示例来源:origin: google/ExoPlayer

@Test
public void testClippingStartAndEnd() throws IOException {
 Timeline timeline = new SinglePeriodTimeline(TEST_PERIOD_DURATION_US, true, false);
 Timeline clippedTimeline =
   getClippedTimeline(
     timeline, TEST_CLIP_AMOUNT_US, TEST_PERIOD_DURATION_US - TEST_CLIP_AMOUNT_US * 2);
 assertThat(clippedTimeline.getWindow(0, window).getDurationUs())
   .isEqualTo(TEST_PERIOD_DURATION_US - TEST_CLIP_AMOUNT_US * 3);
 assertThat(clippedTimeline.getPeriod(0, period).getDurationUs())
   .isEqualTo(TEST_PERIOD_DURATION_US - TEST_CLIP_AMOUNT_US * 2);
}

代码示例来源:origin: google/ExoPlayer

@Test
public void testClippingStart() throws IOException {
 Timeline timeline = new SinglePeriodTimeline(TEST_PERIOD_DURATION_US, true, false);
 Timeline clippedTimeline =
   getClippedTimeline(timeline, TEST_CLIP_AMOUNT_US, TEST_PERIOD_DURATION_US);
 assertThat(clippedTimeline.getWindow(0, window).getDurationUs())
   .isEqualTo(TEST_PERIOD_DURATION_US - TEST_CLIP_AMOUNT_US);
 assertThat(clippedTimeline.getPeriod(0, period).getDurationUs())
   .isEqualTo(TEST_PERIOD_DURATION_US);
}

代码示例来源:origin: google/ExoPlayer

@Test
public void testClippingEnd() throws IOException {
 Timeline timeline = new SinglePeriodTimeline(TEST_PERIOD_DURATION_US, true, false);
 Timeline clippedTimeline =
   getClippedTimeline(timeline, 0, TEST_PERIOD_DURATION_US - TEST_CLIP_AMOUNT_US);
 assertThat(clippedTimeline.getWindow(0, window).getDurationUs())
   .isEqualTo(TEST_PERIOD_DURATION_US - TEST_CLIP_AMOUNT_US);
 assertThat(clippedTimeline.getPeriod(0, period).getDurationUs())
   .isEqualTo(TEST_PERIOD_DURATION_US - TEST_CLIP_AMOUNT_US);
}

代码示例来源:origin: google/ExoPlayer

@Override
public long getDuration() {
 if (timeline.isEmpty()) {
  return C.INDEX_UNSET;
 }
 if (isPlayingAd()) {
  long adDurationUs =
    timeline.getPeriod(0, period).getAdDurationUs(adGroupIndex, adIndexInAdGroup);
  return C.usToMs(adDurationUs);
 } else {
  return timeline.getWindow(getCurrentWindowIndex(), window).getDurationMs();
 }
}

相关文章