@UnstableApi
class IndexSeekMap : SeekMap


A SeekMap implementation based on a mapping between times and positions in the input stream.

Summary

Public constructors

IndexSeekMap(positions: LongArray!, timesUs: LongArray!, durationUs: Long)

Creates an instance.

Public functions

Unit
addSeekPoint(timeUs: Long, position: Long)

Adds a seek point to the index.

SeekMap.SeekPoints!

Obtains seek points for the specified seek time in microseconds.

Long
getTimeUs(position: Long)

Maps a position (byte offset) to a corresponding sample timestamp.

Boolean

Returns whether seeking is supported.

Boolean
isTimeUsInIndex(timeUs: Long, minTimeBetweenPointsUs: Long)

Returns whether timeUs (in microseconds) should be considered as part of the index based on its proximity to the last recorded seek point in the index.

Public properties

Long

Public constructors

IndexSeekMap

IndexSeekMap(positions: LongArray!, timesUs: LongArray!, durationUs: Long)

Creates an instance.

Parameters
positions: LongArray!

The positions in the stream corresponding to timesUs, in bytes.

timesUs: LongArray!

The times corresponding to positions, in microseconds.

durationUs: Long

The duration of the input stream, or TIME_UNSET if it is unknown.

Public functions

addSeekPoint

fun addSeekPoint(timeUs: Long, position: Long): Unit

Adds a seek point to the index.

Seek points must be added in order.

Parameters
timeUs: Long

The time of the seek point in microseconds.

position: Long

The position in the stream corresponding to the seek point, in bytes.

getSeekPoints

fun getSeekPoints(timeUs: Long): SeekMap.SeekPoints!

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
timeUs: Long

A seek time in microseconds.

Returns
SeekMap.SeekPoints!

The corresponding seek points.

getTimeUs

fun getTimeUs(position: Long): Long

Maps a position (byte offset) to a corresponding sample timestamp.

Parameters
position: Long

A seek position (byte offset) relative to the start of the stream.

Returns
Long

The corresponding timestamp of the seek point at or before the given position, in microseconds, or TIME_UNSET if no seek points exist.

isSeekable

fun isSeekable(): Boolean

Returns whether seeking is supported.

Returns
Boolean

Whether seeking is supported.

isTimeUsInIndex

fun isTimeUsInIndex(timeUs: Long, minTimeBetweenPointsUs: Long): Boolean

Returns whether timeUs (in microseconds) should be considered as part of the index based on its proximity to the last recorded seek point in the index.

This method assumes that timeUs is provided in increasing order, consistent with how points are added to the index in addSeekPoint.

Parameters
timeUs: Long

The time in microseconds to check if it is included in the index.

minTimeBetweenPointsUs: Long

The minimum time in microseconds that should exist between points for the current time to be considered as part of the index.

Public properties

durationUs

var durationUsLong