本文整理了Java中com.google.android.exoplayer2.util.Util.binarySearchCeil()
方法的一些代码示例,展示了Util.binarySearchCeil()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Util.binarySearchCeil()
方法的具体详情如下:
包路径:com.google.android.exoplayer2.util.Util
类名称: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
@Override
public int getNextEventTimeIndex(long timeUs) {
int index = Util.binarySearchCeil(sortedCueTimesUs, timeUs, false, false);
return index < sortedCueTimesUs.length ? index : C.INDEX_UNSET;
}
代码示例来源:origin: google/ExoPlayer
@Override
public int getNextEventTimeIndex(long timeUs) {
int index = Util.binarySearchCeil(cueTimesUs, timeUs, false, false);
return index < cueTimesUs.length ? index : C.INDEX_UNSET;
}
代码示例来源:origin: google/ExoPlayer
@Override
public int getNextEventTimeIndex(long timeUs) {
int index = Util.binarySearchCeil(cueTimesUs, timeUs, false, false);
return index < cueTimesUs.length ? index : C.INDEX_UNSET;
}
代码示例来源:origin: google/ExoPlayer
@Override
public int getNextEventTimeIndex(long timeUs) {
int index = Util.binarySearchCeil(eventTimesUs, timeUs, false, false);
return index < eventTimesUs.length ? index : C.INDEX_UNSET;
}
代码示例来源:origin: google/ExoPlayer
/**
* Seeks to the specified position in microseconds.
*
* @param positionUs The seek position in microseconds.
*/
public void seekToUs(long positionUs) {
currentIndex =
Util.binarySearchCeil(
eventTimesUs, positionUs, /* inclusive= */ true, /* stayInBounds= */ false);
boolean isPendingSeek = eventStreamAppendable && currentIndex == eventTimesUs.length;
pendingSeekPositionUs = isPendingSeek ? positionUs : C.TIME_UNSET;
}
代码示例来源:origin: google/ExoPlayer
/**
* Returns the sample index of the closest synchronization sample at or after the given timestamp,
* if one is available.
*
* @param timeUs Timestamp adjacent to which to find a synchronization sample.
* @return index Index of the synchronization sample, or {@link C#INDEX_UNSET} if none.
*/
public int getIndexOfLaterOrEqualSynchronizationSample(long timeUs) {
int startIndex = Util.binarySearchCeil(timestampsUs, timeUs, true, false);
for (int i = startIndex; i < timestampsUs.length; i++) {
if ((flags[i] & C.BUFFER_FLAG_KEY_FRAME) != 0) {
return i;
}
}
return C.INDEX_UNSET;
}
代码示例来源:origin: google/ExoPlayer
@Override
public int skipData(long positionUs) {
int newIndex =
Math.max(currentIndex, Util.binarySearchCeil(eventTimesUs, positionUs, true, false));
int skipped = newIndex - currentIndex;
currentIndex = newIndex;
return skipped;
}
代码示例来源:origin: google/ExoPlayer
public void updateEventStream(EventStream eventStream, boolean eventStreamAppendable) {
long lastReadPositionUs = currentIndex == 0 ? C.TIME_UNSET : eventTimesUs[currentIndex - 1];
this.eventStreamAppendable = eventStreamAppendable;
this.eventStream = eventStream;
this.eventTimesUs = eventStream.presentationTimesUs;
if (pendingSeekPositionUs != C.TIME_UNSET) {
seekToUs(pendingSeekPositionUs);
} else if (lastReadPositionUs != C.TIME_UNSET) {
currentIndex =
Util.binarySearchCeil(
eventTimesUs, lastReadPositionUs, /* inclusive= */ false, /* stayInBounds= */ false);
}
}
代码示例来源:origin: google/ExoPlayer
@Test
public void testArrayBinarySearchCeil() {
long[] values = new long[0];
assertThat(binarySearchCeil(values, 0, false, false)).isEqualTo(0);
assertThat(binarySearchCeil(values, 0, false, true)).isEqualTo(-1);
values = new long[] {1, 3, 5};
assertThat(binarySearchCeil(values, 0, false, false)).isEqualTo(0);
assertThat(binarySearchCeil(values, 0, true, false)).isEqualTo(0);
assertThat(binarySearchCeil(values, 1, false, false)).isEqualTo(1);
assertThat(binarySearchCeil(values, 1, true, false)).isEqualTo(0);
assertThat(binarySearchCeil(values, 2, false, false)).isEqualTo(1);
assertThat(binarySearchCeil(values, 2, true, false)).isEqualTo(1);
assertThat(binarySearchCeil(values, 5, false, false)).isEqualTo(3);
assertThat(binarySearchCeil(values, 5, true, false)).isEqualTo(2);
assertThat(binarySearchCeil(values, 5, false, true)).isEqualTo(2);
assertThat(binarySearchCeil(values, 5, true, true)).isEqualTo(2);
assertThat(binarySearchCeil(values, 6, false, false)).isEqualTo(3);
assertThat(binarySearchCeil(values, 6, true, false)).isEqualTo(3);
assertThat(binarySearchCeil(values, 6, false, true)).isEqualTo(2);
assertThat(binarySearchCeil(values, 6, true, true)).isEqualTo(2);
}
代码示例来源:origin: google/ExoPlayer
@Test
public void testListBinarySearchCeil() {
List<Integer> values = new ArrayList<>();
assertThat(binarySearchCeil(values, 0, false, false)).isEqualTo(0);
assertThat(binarySearchCeil(values, 0, false, true)).isEqualTo(-1);
values.add(1);
values.add(3);
values.add(5);
assertThat(binarySearchCeil(values, 0, false, false)).isEqualTo(0);
assertThat(binarySearchCeil(values, 0, true, false)).isEqualTo(0);
assertThat(binarySearchCeil(values, 1, false, false)).isEqualTo(1);
assertThat(binarySearchCeil(values, 1, true, false)).isEqualTo(0);
assertThat(binarySearchCeil(values, 2, false, false)).isEqualTo(1);
assertThat(binarySearchCeil(values, 2, true, false)).isEqualTo(1);
assertThat(binarySearchCeil(values, 5, false, false)).isEqualTo(3);
assertThat(binarySearchCeil(values, 5, true, false)).isEqualTo(2);
assertThat(binarySearchCeil(values, 5, false, true)).isEqualTo(2);
assertThat(binarySearchCeil(values, 5, true, true)).isEqualTo(2);
assertThat(binarySearchCeil(values, 6, false, false)).isEqualTo(3);
assertThat(binarySearchCeil(values, 6, true, false)).isEqualTo(3);
assertThat(binarySearchCeil(values, 6, false, true)).isEqualTo(2);
assertThat(binarySearchCeil(values, 6, true, true)).isEqualTo(2);
}
代码示例来源:origin: google/ExoPlayer
Util.scaleLargeTimestamp(
track.editListDurations[i], track.timescale, track.movieTimescale);
startIndices[i] = Util.binarySearchCeil(timestamps, editMediaTime, true, true);
endIndices[i] =
Util.binarySearchCeil(
timestamps, editMediaTime + editDuration, omitClippedSample, false);
while (startIndices[i] < endIndices[i]
代码示例来源:origin: novoda/no-player
@Override
public int getNextEventTimeIndex(long timeUs) {
int index = Util.binarySearchCeil(sortedCueTimesUs, timeUs, false, false);
return index < sortedCueTimesUs.length ? index : C.INDEX_UNSET;
}
内容来源于网络,如有侵权,请联系作者删除!