com.google.android.exoplayer2.util.Util.binarySearchCeil()方法的使用及代码示例

x33g5p2x  于2022-02-01 转载在 其他  
字(6.1k)|赞(0)|评价(0)|浏览(271)

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

Util.binarySearchCeil介绍

[英]Returns the index of the smallest element in list that is greater than (or optionally equal to) a specified value.

The search is performed using a binary search algorithm, so the list must be sorted. If the list contains multiple elements equal to value and inclusive is true, the index of the last one will be returned.
[中]返回列表中大于(或可选等于)指定值的最小元素的索引。
搜索是使用二进制搜索算法执行的,因此必须对列表进行排序。如果列表包含多个等于value且inclusive为true的元素,则将返回最后一个元素的索引。

代码示例

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

  1. @Override
  2. public int getNextEventTimeIndex(long timeUs) {
  3. int index = Util.binarySearchCeil(sortedCueTimesUs, timeUs, false, false);
  4. return index < sortedCueTimesUs.length ? index : C.INDEX_UNSET;
  5. }

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

  1. @Override
  2. public int getNextEventTimeIndex(long timeUs) {
  3. int index = Util.binarySearchCeil(cueTimesUs, timeUs, false, false);
  4. return index < cueTimesUs.length ? index : C.INDEX_UNSET;
  5. }

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

  1. @Override
  2. public int getNextEventTimeIndex(long timeUs) {
  3. int index = Util.binarySearchCeil(cueTimesUs, timeUs, false, false);
  4. return index < cueTimesUs.length ? index : C.INDEX_UNSET;
  5. }

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

  1. @Override
  2. public int getNextEventTimeIndex(long timeUs) {
  3. int index = Util.binarySearchCeil(eventTimesUs, timeUs, false, false);
  4. return index < eventTimesUs.length ? index : C.INDEX_UNSET;
  5. }

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

  1. /**
  2. * Seeks to the specified position in microseconds.
  3. *
  4. * @param positionUs The seek position in microseconds.
  5. */
  6. public void seekToUs(long positionUs) {
  7. currentIndex =
  8. Util.binarySearchCeil(
  9. eventTimesUs, positionUs, /* inclusive= */ true, /* stayInBounds= */ false);
  10. boolean isPendingSeek = eventStreamAppendable && currentIndex == eventTimesUs.length;
  11. pendingSeekPositionUs = isPendingSeek ? positionUs : C.TIME_UNSET;
  12. }

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

  1. /**
  2. * Returns the sample index of the closest synchronization sample at or after the given timestamp,
  3. * if one is available.
  4. *
  5. * @param timeUs Timestamp adjacent to which to find a synchronization sample.
  6. * @return index Index of the synchronization sample, or {@link C#INDEX_UNSET} if none.
  7. */
  8. public int getIndexOfLaterOrEqualSynchronizationSample(long timeUs) {
  9. int startIndex = Util.binarySearchCeil(timestampsUs, timeUs, true, false);
  10. for (int i = startIndex; i < timestampsUs.length; i++) {
  11. if ((flags[i] & C.BUFFER_FLAG_KEY_FRAME) != 0) {
  12. return i;
  13. }
  14. }
  15. return C.INDEX_UNSET;
  16. }

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

  1. @Override
  2. public int skipData(long positionUs) {
  3. int newIndex =
  4. Math.max(currentIndex, Util.binarySearchCeil(eventTimesUs, positionUs, true, false));
  5. int skipped = newIndex - currentIndex;
  6. currentIndex = newIndex;
  7. return skipped;
  8. }

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

  1. public void updateEventStream(EventStream eventStream, boolean eventStreamAppendable) {
  2. long lastReadPositionUs = currentIndex == 0 ? C.TIME_UNSET : eventTimesUs[currentIndex - 1];
  3. this.eventStreamAppendable = eventStreamAppendable;
  4. this.eventStream = eventStream;
  5. this.eventTimesUs = eventStream.presentationTimesUs;
  6. if (pendingSeekPositionUs != C.TIME_UNSET) {
  7. seekToUs(pendingSeekPositionUs);
  8. } else if (lastReadPositionUs != C.TIME_UNSET) {
  9. currentIndex =
  10. Util.binarySearchCeil(
  11. eventTimesUs, lastReadPositionUs, /* inclusive= */ false, /* stayInBounds= */ false);
  12. }
  13. }

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

  1. @Test
  2. public void testArrayBinarySearchCeil() {
  3. long[] values = new long[0];
  4. assertThat(binarySearchCeil(values, 0, false, false)).isEqualTo(0);
  5. assertThat(binarySearchCeil(values, 0, false, true)).isEqualTo(-1);
  6. values = new long[] {1, 3, 5};
  7. assertThat(binarySearchCeil(values, 0, false, false)).isEqualTo(0);
  8. assertThat(binarySearchCeil(values, 0, true, false)).isEqualTo(0);
  9. assertThat(binarySearchCeil(values, 1, false, false)).isEqualTo(1);
  10. assertThat(binarySearchCeil(values, 1, true, false)).isEqualTo(0);
  11. assertThat(binarySearchCeil(values, 2, false, false)).isEqualTo(1);
  12. assertThat(binarySearchCeil(values, 2, true, false)).isEqualTo(1);
  13. assertThat(binarySearchCeil(values, 5, false, false)).isEqualTo(3);
  14. assertThat(binarySearchCeil(values, 5, true, false)).isEqualTo(2);
  15. assertThat(binarySearchCeil(values, 5, false, true)).isEqualTo(2);
  16. assertThat(binarySearchCeil(values, 5, true, true)).isEqualTo(2);
  17. assertThat(binarySearchCeil(values, 6, false, false)).isEqualTo(3);
  18. assertThat(binarySearchCeil(values, 6, true, false)).isEqualTo(3);
  19. assertThat(binarySearchCeil(values, 6, false, true)).isEqualTo(2);
  20. assertThat(binarySearchCeil(values, 6, true, true)).isEqualTo(2);
  21. }

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

  1. @Test
  2. public void testListBinarySearchCeil() {
  3. List<Integer> values = new ArrayList<>();
  4. assertThat(binarySearchCeil(values, 0, false, false)).isEqualTo(0);
  5. assertThat(binarySearchCeil(values, 0, false, true)).isEqualTo(-1);
  6. values.add(1);
  7. values.add(3);
  8. values.add(5);
  9. assertThat(binarySearchCeil(values, 0, false, false)).isEqualTo(0);
  10. assertThat(binarySearchCeil(values, 0, true, false)).isEqualTo(0);
  11. assertThat(binarySearchCeil(values, 1, false, false)).isEqualTo(1);
  12. assertThat(binarySearchCeil(values, 1, true, false)).isEqualTo(0);
  13. assertThat(binarySearchCeil(values, 2, false, false)).isEqualTo(1);
  14. assertThat(binarySearchCeil(values, 2, true, false)).isEqualTo(1);
  15. assertThat(binarySearchCeil(values, 5, false, false)).isEqualTo(3);
  16. assertThat(binarySearchCeil(values, 5, true, false)).isEqualTo(2);
  17. assertThat(binarySearchCeil(values, 5, false, true)).isEqualTo(2);
  18. assertThat(binarySearchCeil(values, 5, true, true)).isEqualTo(2);
  19. assertThat(binarySearchCeil(values, 6, false, false)).isEqualTo(3);
  20. assertThat(binarySearchCeil(values, 6, true, false)).isEqualTo(3);
  21. assertThat(binarySearchCeil(values, 6, false, true)).isEqualTo(2);
  22. assertThat(binarySearchCeil(values, 6, true, true)).isEqualTo(2);
  23. }

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

  1. Util.scaleLargeTimestamp(
  2. track.editListDurations[i], track.timescale, track.movieTimescale);
  3. startIndices[i] = Util.binarySearchCeil(timestamps, editMediaTime, true, true);
  4. endIndices[i] =
  5. Util.binarySearchCeil(
  6. timestamps, editMediaTime + editDuration, omitClippedSample, false);
  7. while (startIndices[i] < endIndices[i]

代码示例来源:origin: novoda/no-player

  1. @Override
  2. public int getNextEventTimeIndex(long timeUs) {
  3. int index = Util.binarySearchCeil(sortedCueTimesUs, timeUs, false, false);
  4. return index < sortedCueTimesUs.length ? index : C.INDEX_UNSET;
  5. }

相关文章