Representation.MultiSegmentRepresentation


public class Representation.MultiSegmentRepresentation extends Representation implements DashSegmentIndex


A DASH representation consisting of multiple segments.

Summary

Public constructors

MultiSegmentRepresentation(
    long revisionId,
    Format format,
    List<BaseUrl> baseUrls,
    SegmentBase.MultiSegmentBase segmentBase,
    @Nullable List<Descriptor> inbandEventStreams,
    List<Descriptor> essentialProperties,
    List<Descriptor> supplementalProperties
)

Creates the multi-segment Representation.

Public methods

long
getAvailableSegmentCount(long periodDurationUs, long nowUnixTimeUs)

Returns the number of available segments in the index.

@Nullable String

Returns a cache key for the representation if set, or null.

long
getDurationUs(long segmentNum, long periodDurationUs)

Returns the duration of a segment.

long
getFirstAvailableSegmentNum(long periodDurationUs, long nowUnixTimeUs)

Returns the segment number of the first available segment in the index.

long

Returns the segment number of the first defined segment in the index.

DashSegmentIndex

Returns an index if the representation provides one directly, or null otherwise.

@Nullable RangedUri

Returns a RangedUri defining the location of the representation's segment index, or null if the representation provides an index directly.

long
getNextSegmentAvailableTimeUs(
    long periodDurationUs,
    long nowUnixTimeUs
)

Returns the time, in microseconds, at which a new segment becomes available, or TIME_UNSET if not applicable.

long
getSegmentCount(long periodDurationUs)

Returns the number of segments defined in the index, or INDEX_UNBOUNDED.

long
getSegmentNum(long timeUs, long periodDurationUs)

Returns getFirstSegmentNum() if the index has no segments or if the given media time is earlier than the start of the first segment.

RangedUri
getSegmentUrl(long segmentNum)

Returns a RangedUri defining the location of a segment.

long
getTimeUs(long segmentNum)

Returns the start time of a segment.

boolean

Returns true if segments are defined explicitly by the index.

Inherited Constants

From androidx.media3.exoplayer.dash.DashSegmentIndex
static final int
From androidx.media3.exoplayer.dash.manifest.Representation
static final long

A default value for revisionId.

Inherited fields

From androidx.media3.exoplayer.dash.manifest.Representation
final ImmutableList<BaseUrl>

The base URLs of the representation.

final List<Descriptor>

Essential properties in the representation.

final Format

The format of the representation.

final List<Descriptor>

The in-band event streams in the representation.

final @Nullable RangedUri
final long

The offset of the presentation timestamps in the media stream relative to media time.

final long

Identifies the revision of the media contained within the representation.

final List<Descriptor>

Supplemental properties in the adaptation set.

Inherited methods

From androidx.media3.exoplayer.dash.manifest.Representation
@Nullable RangedUri

Returns a RangedUri defining the location of the representation's initialization data, or null if no initialization data exists.

static Representation
newInstance(
    long revisionId,
    Format format,
    List<BaseUrl> baseUrls,
    SegmentBase segmentBase
)

Constructs a new instance.

static Representation
newInstance(
    long revisionId,
    Format format,
    List<BaseUrl> baseUrls,
    SegmentBase segmentBase,
    @Nullable List<Descriptor> inbandEventStreams,
    List<Descriptor> essentialProperties,
    List<Descriptor> supplementalProperties,
    @Nullable String cacheKey
)

Constructs a new instance.

Public constructors

MultiSegmentRepresentation

public MultiSegmentRepresentation(
    long revisionId,
    Format format,
    List<BaseUrl> baseUrls,
    SegmentBase.MultiSegmentBase segmentBase,
    @Nullable List<Descriptor> inbandEventStreams,
    List<Descriptor> essentialProperties,
    List<Descriptor> supplementalProperties
)

Creates the multi-segment Representation.

Parameters
long revisionId

Identifies the revision of the content.

Format format

The format of the representation.

List<BaseUrl> baseUrls

The base URLs of the representation.

SegmentBase.MultiSegmentBase segmentBase

The segment base underlying the representation.

@Nullable List<Descriptor> inbandEventStreams

The in-band event streams in the representation. May be null.

List<Descriptor> essentialProperties

Essential properties in the representation. May be empty.

List<Descriptor> supplementalProperties

Supplemental properties in the representation. May be empty.

Public methods

getAvailableSegmentCount

public long getAvailableSegmentCount(long periodDurationUs, long nowUnixTimeUs)

Returns the number of available segments in the index.

Parameters
long periodDurationUs

The duration of the enclosing period in microseconds, or TIME_UNSET if the period's duration is not yet known.

long nowUnixTimeUs

The current time in milliseconds since the Unix epoch.

Returns
long

The number of available segments in the index.

getCacheKey

public @Nullable String getCacheKey()

Returns a cache key for the representation if set, or null.

getDurationUs

public long getDurationUs(long segmentNum, long periodDurationUs)

Returns the duration of a segment.

Parameters
long segmentNum

The segment number.

long periodDurationUs

The duration of the enclosing period in microseconds, or TIME_UNSET if the period's duration is not yet known.

Returns
long

The duration of the segment, in microseconds.

getFirstAvailableSegmentNum

public long getFirstAvailableSegmentNum(long periodDurationUs, long nowUnixTimeUs)

Returns the segment number of the first available segment in the index.

Parameters
long periodDurationUs

The duration of the enclosing period in microseconds, or TIME_UNSET if the period's duration is not yet known.

long nowUnixTimeUs

The current time in milliseconds since the Unix epoch.

Returns
long

The number of the first available segment.

getFirstSegmentNum

public long getFirstSegmentNum()

Returns the segment number of the first defined segment in the index.

getIndex

public DashSegmentIndex getIndex()

Returns an index if the representation provides one directly, or null otherwise.

getIndexUri

public @Nullable RangedUri getIndexUri()

Returns a RangedUri defining the location of the representation's segment index, or null if the representation provides an index directly.

getNextSegmentAvailableTimeUs

public long getNextSegmentAvailableTimeUs(
    long periodDurationUs,
    long nowUnixTimeUs
)

Returns the time, in microseconds, at which a new segment becomes available, or TIME_UNSET if not applicable.

Parameters
long periodDurationUs

The duration of the enclosing period in microseconds, or TIME_UNSET if the period's duration is not yet known.

long nowUnixTimeUs

The current time in milliseconds since the Unix epoch.

Returns
long

The time, in microseconds, at which a new segment becomes available, or TIME_UNSET if not applicable.

getSegmentCount

public long getSegmentCount(long periodDurationUs)

Returns the number of segments defined in the index, or INDEX_UNBOUNDED.

An unbounded index occurs if a dynamic manifest uses SegmentTemplate elements without a SegmentTimeline element, and if the period duration is not yet known. In this case the caller can query the available segment using getFirstAvailableSegmentNum and getAvailableSegmentCount.

Parameters
long periodDurationUs

The duration of the enclosing period in microseconds, or TIME_UNSET if the period's duration is not yet known.

Returns
long

The number of segments in the index, or INDEX_UNBOUNDED.

getSegmentNum

public long getSegmentNum(long timeUs, long periodDurationUs)

Returns getFirstSegmentNum() if the index has no segments or if the given media time is earlier than the start of the first segment. Returns getFirstSegmentNum() + getSegmentCount() - 1 if the given media time is later than the end of the last segment. Otherwise, returns the segment number of the segment containing the given media time.

Parameters
long timeUs

The time in microseconds.

long periodDurationUs

The duration of the enclosing period in microseconds, or TIME_UNSET if the period's duration is not yet known.

Returns
long

The segment number of the corresponding segment.

getSegmentUrl

public RangedUri getSegmentUrl(long segmentNum)

Returns a RangedUri defining the location of a segment.

Parameters
long segmentNum

The segment number.

Returns
RangedUri

The RangedUri defining the location of the data.

getTimeUs

public long getTimeUs(long segmentNum)

Returns the start time of a segment.

Parameters
long segmentNum

The segment number.

Returns
long

The corresponding start time in microseconds.

isExplicit

public boolean isExplicit()

Returns true if segments are defined explicitly by the index.

If true is returned, each segment is defined explicitly by the index data, and all of the listed segments are guaranteed to be available at the time when the index was obtained.

If false is returned then segment information was derived from properties such as a fixed segment duration. If the presentation is dynamic, it's possible that only a subset of the segments are available.

Returns
boolean

Whether segments are defined explicitly by the index.