AbstractConcatenatedTimeline


@UnstableApi
public abstract class AbstractConcatenatedTimeline extends Timeline


Abstract base class for the concatenation of one or more Timelines.

Summary

Public constructors

AbstractConcatenatedTimeline(
    boolean isAtomic,
    ShuffleOrder shuffleOrder
)

Sets up a concatenated timeline with a shuffle order of child timelines.

Public methods

static Object

Returns UID of the period in the child timeline from a concatenated period UID.

static Object

Returns UID of child timeline from a concatenated period UID.

static Object
getConcatenatedUid(
    Object childTimelineUid,
    Object childPeriodOrWindowUid
)

Returns a concatenated UID for a period or window in a child timeline.

int
getFirstWindowIndex(boolean shuffleModeEnabled)

Returns the index of the first window in the playback order depending on whether shuffling is enabled.

final int

Returns the index of the period identified by its unique uid, or INDEX_UNSET if the period is not in the timeline.

int
getLastWindowIndex(boolean shuffleModeEnabled)

Returns the index of the last window in the playback order depending on whether shuffling is enabled.

int
getNextWindowIndex(
    int windowIndex,
    @Player.RepeatMode int repeatMode,
    boolean shuffleModeEnabled
)

Returns the index of the window after the window at index windowIndex depending on the repeatMode and whether shuffling is enabled.

final Timeline.Period
getPeriod(int periodIndex, Timeline.Period period, boolean setIds)

Populates a Period with data for the period at the specified index.

final Timeline.Period
getPeriodByUid(Object periodUid, Timeline.Period period)

Populates a Period with data for the period with the specified unique identifier.

int
getPreviousWindowIndex(
    int windowIndex,
    @Player.RepeatMode int repeatMode,
    boolean shuffleModeEnabled
)

Returns the index of the window before the window at index windowIndex depending on the repeatMode and whether shuffling is enabled.

final Object
getUidOfPeriod(int periodIndex)

Returns the unique id of the period identified by its index in the timeline.

final Timeline.Window
getWindow(
    int windowIndex,
    Timeline.Window window,
    long defaultPositionProjectionUs
)

Populates a Window with data for the window at the specified index.

Protected methods

abstract int

Returns the index of the child timeline with the given UID or INDEX_UNSET if not found.

abstract int
getChildIndexByPeriodIndex(int periodIndex)

Returns the index of the child timeline containing the given period index.

abstract int
getChildIndexByWindowIndex(int windowIndex)

Returns the index of the child timeline containing the given window index.

abstract Object
getChildUidByChildIndex(int childIndex)

Returns the UID of the child timeline with the given index.

abstract int

Returns the first period index belonging to the child timeline with the given index.

abstract int

Returns the first window index belonging to the child timeline with the given index.

abstract Timeline
getTimelineByChildIndex(int childIndex)

Returns the child timeline for the child with the given index.

Inherited Constants

From androidx.media3.common.Timeline
static final Timeline

An empty timeline.

Inherited methods

From androidx.media3.common.Timeline
final Timeline

Returns a copy of this timeline containing just the single specified Window.

boolean
static Timeline

Restores a Timeline from a Bundle.

final int
getNextPeriodIndex(
    int periodIndex,
    Timeline.Period period,
    Timeline.Window window,
    @Player.RepeatMode int repeatMode,
    boolean shuffleModeEnabled
)

Returns the index of the period after the period at index periodIndex depending on the repeatMode and whether shuffling is enabled.

final Timeline.Period
getPeriod(int periodIndex, Timeline.Period period)

Populates a Period with data for the period at the specified index.

abstract int

Returns the number of periods in the timeline.

final Pair<ObjectLong>
@UnstableApi
@InlineMe(replacement = "this.getPeriodPositionUs(window, period, windowIndex, windowPositionUs)")
getPeriodPosition(
    Timeline.Window window,
    Timeline.Period period,
    int windowIndex,
    long windowPositionUs
)

This method is deprecated.

Use getPeriodPositionUs instead.

final @Nullable Pair<ObjectLong>
@UnstableApi
@InlineMe(replacement = "this.getPeriodPositionUs(" + "window, period, windowIndex, windowPositionUs, defaultPositionProjectionUs)")
getPeriodPosition(
    Timeline.Window window,
    Timeline.Period period,
    int windowIndex,
    long windowPositionUs,
    long defaultPositionProjectionUs
)

This method is deprecated.

Use getPeriodPositionUs instead.

final Pair<ObjectLong>
getPeriodPositionUs(
    Timeline.Window window,
    Timeline.Period period,
    int windowIndex,
    long windowPositionUs
)

Calls getPeriodPositionUs with a zero default position projection.

final @Nullable Pair<ObjectLong>
getPeriodPositionUs(
    Timeline.Window window,
    Timeline.Period period,
    int windowIndex,
    long windowPositionUs,
    long defaultPositionProjectionUs
)

Converts (windowIndex, windowPositionUs) to the corresponding (periodUid, periodPositionUs).

final Timeline.Window
getWindow(int windowIndex, Timeline.Window window)

Populates a Window with data for the window at the specified index.

abstract int

Returns the number of windows in the timeline.

int
final boolean

Returns whether the timeline is empty.

final boolean
isLastPeriod(
    int periodIndex,
    Timeline.Period period,
    Timeline.Window window,
    @Player.RepeatMode int repeatMode,
    boolean shuffleModeEnabled
)

Returns whether the given period is the last period of the timeline depending on the repeatMode and whether shuffling is enabled.

final Bundle

Returns a Bundle representing the information stored in this object.

Public constructors

AbstractConcatenatedTimeline

public AbstractConcatenatedTimeline(
    boolean isAtomic,
    ShuffleOrder shuffleOrder
)

Sets up a concatenated timeline with a shuffle order of child timelines.

Parameters
boolean isAtomic

Whether the child timelines shall be treated as atomic, i.e., treated as a single item for repeating and shuffling.

ShuffleOrder shuffleOrder

A shuffle order of child timelines. The number of child timelines must match the number of elements in the shuffle order.

Public methods

getChildPeriodUidFromConcatenatedUid

public static Object getChildPeriodUidFromConcatenatedUid(Object concatenatedUid)

Returns UID of the period in the child timeline from a concatenated period UID.

Parameters
Object concatenatedUid

UID of a period in a concatenated timeline.

Returns
Object

UID of the period in the child timeline.

getChildTimelineUidFromConcatenatedUid

public static Object getChildTimelineUidFromConcatenatedUid(Object concatenatedUid)

Returns UID of child timeline from a concatenated period UID.

Parameters
Object concatenatedUid

UID of a period in a concatenated timeline.

Returns
Object

UID of the child timeline this period belongs to.

getConcatenatedUid

public static Object getConcatenatedUid(
    Object childTimelineUid,
    Object childPeriodOrWindowUid
)

Returns a concatenated UID for a period or window in a child timeline.

Parameters
Object childTimelineUid

UID of the child timeline this period or window belongs to.

Object childPeriodOrWindowUid

UID of the period or window in the child timeline.

Returns
Object

UID of the period or window in the concatenated timeline.

getFirstWindowIndex

public int getFirstWindowIndex(boolean shuffleModeEnabled)

Returns the index of the first window in the playback order depending on whether shuffling is enabled.

Parameters
boolean shuffleModeEnabled

Whether shuffling is enabled.

Returns
int

The index of the first window in the playback order, or INDEX_UNSET if the timeline is empty.

getIndexOfPeriod

public final int getIndexOfPeriod(Object uid)

Returns the index of the period identified by its unique uid, or INDEX_UNSET if the period is not in the timeline.

Parameters
Object uid

A unique identifier for a period.

Returns
int

The index of the period, or INDEX_UNSET if the period was not found.

getLastWindowIndex

public int getLastWindowIndex(boolean shuffleModeEnabled)

Returns the index of the last window in the playback order depending on whether shuffling is enabled.

Parameters
boolean shuffleModeEnabled

Whether shuffling is enabled.

Returns
int

The index of the last window in the playback order, or INDEX_UNSET if the timeline is empty.

getNextWindowIndex

public int getNextWindowIndex(
    int windowIndex,
    @Player.RepeatMode int repeatMode,
    boolean shuffleModeEnabled
)

Returns the index of the window after the window at index windowIndex depending on the repeatMode and whether shuffling is enabled.

Parameters
int windowIndex

Index of a window in the timeline.

@Player.RepeatMode int repeatMode

A repeat mode.

boolean shuffleModeEnabled

Whether shuffling is enabled.

Returns
int

The index of the next window, or INDEX_UNSET if this is the last window.

getPeriod

public final Timeline.Period getPeriod(int periodIndex, Timeline.Period period, boolean setIds)

Populates a Period with data for the period at the specified index.

Parameters
int periodIndex

The index of the period.

Timeline.Period period

The Period to populate. Must not be null.

boolean setIds

Whether id and uid should be populated. If false, the fields will be set to null. The caller should pass false for efficiency reasons unless the fields are required.

Returns
Timeline.Period

The populated Period, for convenience.

getPeriodByUid

public final Timeline.Period getPeriodByUid(Object periodUid, Timeline.Period period)

Populates a Period with data for the period with the specified unique identifier.

Parameters
Object periodUid

The unique identifier of the period.

Timeline.Period period

The Period to populate. Must not be null.

Returns
Timeline.Period

The populated Period, for convenience.

getPreviousWindowIndex

public int getPreviousWindowIndex(
    int windowIndex,
    @Player.RepeatMode int repeatMode,
    boolean shuffleModeEnabled
)

Returns the index of the window before the window at index windowIndex depending on the repeatMode and whether shuffling is enabled.

Parameters
int windowIndex

Index of a window in the timeline.

@Player.RepeatMode int repeatMode

A repeat mode.

boolean shuffleModeEnabled

Whether shuffling is enabled.

Returns
int

The index of the previous window, or INDEX_UNSET if this is the first window.

getUidOfPeriod

public final Object getUidOfPeriod(int periodIndex)

Returns the unique id of the period identified by its index in the timeline.

Parameters
int periodIndex

The index of the period.

Returns
Object

The unique id of the period.

getWindow

public final Timeline.Window getWindow(
    int windowIndex,
    Timeline.Window window,
    long defaultPositionProjectionUs
)

Populates a Window with data for the window at the specified index.

Parameters
int windowIndex

The index of the window.

Timeline.Window window

The Window to populate. Must not be null.

long defaultPositionProjectionUs

A duration into the future that the populated window's default start position should be projected.

Returns
Timeline.Window

The populated Window, for convenience.

Protected methods

getChildIndexByChildUid

protected abstract int getChildIndexByChildUid(Object childUid)

Returns the index of the child timeline with the given UID or INDEX_UNSET if not found.

Parameters
Object childUid

A child UID.

Returns
int

Index of child timeline or INDEX_UNSET if UID was not found.

getChildIndexByPeriodIndex

protected abstract int getChildIndexByPeriodIndex(int periodIndex)

Returns the index of the child timeline containing the given period index.

Parameters
int periodIndex

A valid period index within the bounds of the timeline.

getChildIndexByWindowIndex

protected abstract int getChildIndexByWindowIndex(int windowIndex)

Returns the index of the child timeline containing the given window index.

Parameters
int windowIndex

A valid window index within the bounds of the timeline.

getChildUidByChildIndex

protected abstract Object getChildUidByChildIndex(int childIndex)

Returns the UID of the child timeline with the given index.

Parameters
int childIndex

A valid child index within the bounds of the timeline.

getFirstPeriodIndexByChildIndex

protected abstract int getFirstPeriodIndexByChildIndex(int childIndex)

Returns the first period index belonging to the child timeline with the given index.

Parameters
int childIndex

A valid child index within the bounds of the timeline.

getFirstWindowIndexByChildIndex

protected abstract int getFirstWindowIndexByChildIndex(int childIndex)

Returns the first window index belonging to the child timeline with the given index.

Parameters
int childIndex

A valid child index within the bounds of the timeline.

getTimelineByChildIndex

protected abstract Timeline getTimelineByChildIndex(int childIndex)

Returns the child timeline for the child with the given index.

Parameters
int childIndex

A valid child index within the bounds of the timeline.