ConstantBitrateSeekMap


@UnstableApi
public class ConstantBitrateSeekMap implements SeekMap


A SeekMap implementation that assumes the stream has a constant bitrate and consists of multiple independent frames of the same size. Seek points are calculated to be at frame boundaries.

Summary

Public fields

final long

Public constructors

ConstantBitrateSeekMap(
    long inputLength,
    long firstFrameBytePosition,
    int bitrate,
    int frameSize
)

Creates an instance with allowSeeksIfLengthUnknown set to false.

ConstantBitrateSeekMap(
    long inputLength,
    long firstFrameBytePosition,
    int bitrate,
    int frameSize,
    boolean allowSeeksIfLengthUnknown
)

Creates an instance.

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.

long
getTimeUsAtPosition(long position)

Returns the stream time in microseconds for a given position.

boolean

Returns whether seeking is supported.

Public fields

durationUs

public final long durationUs

Public constructors

ConstantBitrateSeekMap

public ConstantBitrateSeekMap(
    long inputLength,
    long firstFrameBytePosition,
    int bitrate,
    int frameSize
)

Creates an instance with allowSeeksIfLengthUnknown set to false.

Parameters
long inputLength

The length of the stream in bytes, or LENGTH_UNSET if unknown.

long firstFrameBytePosition

The byte-position of the first frame in the stream.

int bitrate

The bitrate (which is assumed to be constant in the stream).

int frameSize

The size of each frame in the stream in bytes. May be LENGTH_UNSET if unknown.

ConstantBitrateSeekMap

public ConstantBitrateSeekMap(
    long inputLength,
    long firstFrameBytePosition,
    int bitrate,
    int frameSize,
    boolean allowSeeksIfLengthUnknown
)

Creates an instance.

Parameters
long inputLength

The length of the stream in bytes, or LENGTH_UNSET if unknown.

long firstFrameBytePosition

The byte-position of the first frame in the stream.

int bitrate

The bitrate (which is assumed to be constant in the stream).

int frameSize

The size of each frame in the stream in bytes. May be LENGTH_UNSET if unknown.

boolean allowSeeksIfLengthUnknown

Whether to allow seeking even if the length of the content is unknown.

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.

getTimeUsAtPosition

public long getTimeUsAtPosition(long position)

Returns the stream time in microseconds for a given position.

Parameters
long position

The stream byte-position.

Returns
long

The stream time in microseconds for the given position.

isSeekable

public boolean isSeekable()

Returns whether seeking is supported.

Returns
boolean

Whether seeking is supported.