BinarySearchSeeker.BinarySearchSeekMap


public class BinarySearchSeeker.BinarySearchSeekMap implements SeekMap


A SeekMap implementation that returns the estimated byte location from calculateNextSearchBytePosition for each getSeekPoints query.

Summary

Public fields

final long

Public constructors

BinarySearchSeekMap(
    BinarySearchSeeker.SeekTimestampConverter seekTimestampConverter,
    long durationUs,
    long floorTimePosition,
    long ceilingTimePosition,
    long floorBytePosition,
    long ceilingBytePosition,
    long approxBytesPerFrame
)

Constructs a new instance of this seek map.

Public methods

long

Returns the duration of the stream in microseconds.

SeekMap.SeekPoints
getSeekPoints(long timeUs)

Obtains seek points for the specified seek time in microseconds.

boolean

Returns whether seeking is supported.

long
timeUsToTargetTime(long timeUs)

Public fields

durationUs

public final long durationUs

Public constructors

BinarySearchSeekMap

public BinarySearchSeekMap(
    BinarySearchSeeker.SeekTimestampConverter seekTimestampConverter,
    long durationUs,
    long floorTimePosition,
    long ceilingTimePosition,
    long floorBytePosition,
    long ceilingBytePosition,
    long approxBytesPerFrame
)

Constructs a new instance of this seek map.

Public methods

getDurationUs

public long getDurationUs()

Returns the duration of the stream in microseconds.

Returns
long

The duration of the stream in microseconds, or TIME_UNSET if the duration is unknown.

getSeekPoints

public SeekMap.SeekPoints getSeekPoints(long timeUs)

Obtains seek points for the specified seek time in microseconds. The returned will contain one or two distinct seek points.

Two seek points [A, B] are returned in the case that seeking can only be performed to discrete points in time, there does not exist a seek point at exactly the requested time, and there exist seek points on both sides of it. In this case A and B are the closest seek points before and after the requested time. A single seek point is returned in all other cases.

Parameters
long timeUs

A seek time in microseconds.

Returns
SeekMap.SeekPoints

The corresponding seek points.

isSeekable

public boolean isSeekable()

Returns whether seeking is supported.

Returns
boolean

Whether seeking is supported.

timeUsToTargetTime

public long timeUsToTargetTime(long timeUs)