Package com.google.android.exoplayer2
Class AbstractConcatenatedTimeline
- java.lang.Object
-
- com.google.android.exoplayer2.Timeline
-
- com.google.android.exoplayer2.AbstractConcatenatedTimeline
-
- All Implemented Interfaces:
Bundleable
public abstract class AbstractConcatenatedTimeline extends Timeline
Abstract base class for the concatenation of one or moreTimeline
s.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.google.android.exoplayer2.Timeline
Timeline.Period, Timeline.RemotableTimeline, Timeline.Window
-
Nested classes/interfaces inherited from interface com.google.android.exoplayer2.Bundleable
Bundleable.Creator<T extends Bundleable>
-
-
Constructor Summary
Constructors Constructor Description AbstractConcatenatedTimeline(boolean isAtomic, ShuffleOrder shuffleOrder)
Sets up a concatenated timeline with a shuffle order of child timelines.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract int
getChildIndexByChildUid(Object childUid)
Returns the index of the child timeline with the given UID orC.INDEX_UNSET
if not found.protected abstract int
getChildIndexByPeriodIndex(int periodIndex)
Returns the index of the child timeline containing the given period index.protected abstract int
getChildIndexByWindowIndex(int windowIndex)
Returns the index of the child timeline containing the given window index.static Object
getChildPeriodUidFromConcatenatedUid(Object concatenatedUid)
Returns UID of the period in the child timeline from a concatenated period UID.static Object
getChildTimelineUidFromConcatenatedUid(Object concatenatedUid)
Returns UID of child timeline from a concatenated period UID.protected abstract Object
getChildUidByChildIndex(int childIndex)
Returns the UID of the child timeline with the given index.static Object
getConcatenatedUid(Object childTimelineUid, Object childPeriodOrWindowUid)
Returns a concatenated UID for a period or window in a child timeline.protected abstract int
getFirstPeriodIndexByChildIndex(int childIndex)
Returns the first period index belonging to the child timeline with the given index.int
getFirstWindowIndex(boolean shuffleModeEnabled)
Returns the index of the first window in the playback order depending on whether shuffling is enabled.protected abstract int
getFirstWindowIndexByChildIndex(int childIndex)
Returns the first window index belonging to the child timeline with the given index.int
getIndexOfPeriod(Object uid)
Returns the index of the period identified by its uniqueTimeline.Period.uid
, orC.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, @com.google.android.exoplayer2.Player.RepeatMode int repeatMode, boolean shuffleModeEnabled)
Returns the index of the window after the window at indexwindowIndex
depending on therepeatMode
and whether shuffling is enabled.Timeline.Period
getPeriod(int periodIndex, Timeline.Period period, boolean setIds)
Populates aTimeline.Period
with data for the period at the specified index.Timeline.Period
getPeriodByUid(Object periodUid, Timeline.Period period)
Populates aTimeline.Period
with data for the period with the specified unique identifier.int
getPreviousWindowIndex(int windowIndex, @com.google.android.exoplayer2.Player.RepeatMode int repeatMode, boolean shuffleModeEnabled)
Returns the index of the window before the window at indexwindowIndex
depending on therepeatMode
and whether shuffling is enabled.protected abstract Timeline
getTimelineByChildIndex(int childIndex)
Returns the child timeline for the child with the given index.Object
getUidOfPeriod(int periodIndex)
Returns the unique id of the period identified by its index in the timeline.Timeline.Window
getWindow(int windowIndex, Timeline.Window window, long defaultPositionProjectionUs)
Populates aTimeline.Window
with data for the window at the specified index.-
Methods inherited from class com.google.android.exoplayer2.Timeline
equals, getNextPeriodIndex, getPeriod, getPeriodCount, getPeriodPosition, getPeriodPosition, getPeriodPositionUs, getPeriodPositionUs, getWindow, getWindowCount, hashCode, isEmpty, isLastPeriod, toBundle, toBundle
-
-
-
-
Constructor Detail
-
AbstractConcatenatedTimeline
public AbstractConcatenatedTimeline(boolean isAtomic, ShuffleOrder shuffleOrder)
Sets up a concatenated timeline with a shuffle order of child timelines.- Parameters:
isAtomic
- Whether the child timelines shall be treated as atomic, i.e., treated as a single item for repeating and shuffling.shuffleOrder
- A shuffle order of child timelines. The number of child timelines must match the number of elements in the shuffle order.
-
-
Method Detail
-
getChildTimelineUidFromConcatenatedUid
public static Object getChildTimelineUidFromConcatenatedUid(Object concatenatedUid)
Returns UID of child timeline from a concatenated period UID.- Parameters:
concatenatedUid
- UID of a period in a concatenated timeline.- Returns:
- UID of the child timeline this period belongs to.
-
getChildPeriodUidFromConcatenatedUid
public static Object getChildPeriodUidFromConcatenatedUid(Object concatenatedUid)
Returns UID of the period in the child timeline from a concatenated period UID.- Parameters:
concatenatedUid
- UID of a period in a concatenated timeline.- Returns:
- UID of the period in the child timeline.
-
getConcatenatedUid
public static Object getConcatenatedUid(Object childTimelineUid, Object childPeriodOrWindowUid)
Returns a concatenated UID for a period or window in a child timeline.- Parameters:
childTimelineUid
- UID of the child timeline this period or window belongs to.childPeriodOrWindowUid
- UID of the period or window in the child timeline.- Returns:
- UID of the period or window in the concatenated timeline.
-
getNextWindowIndex
public int getNextWindowIndex(int windowIndex, @RepeatMode @com.google.android.exoplayer2.Player.RepeatMode int repeatMode, boolean shuffleModeEnabled)
Description copied from class:Timeline
Returns the index of the window after the window at indexwindowIndex
depending on therepeatMode
and whether shuffling is enabled.- Overrides:
getNextWindowIndex
in classTimeline
- Parameters:
windowIndex
- Index of a window in the timeline.repeatMode
- A repeat mode.shuffleModeEnabled
- Whether shuffling is enabled.- Returns:
- The index of the next window, or
C.INDEX_UNSET
if this is the last window.
-
getPreviousWindowIndex
public int getPreviousWindowIndex(int windowIndex, @RepeatMode @com.google.android.exoplayer2.Player.RepeatMode int repeatMode, boolean shuffleModeEnabled)
Description copied from class:Timeline
Returns the index of the window before the window at indexwindowIndex
depending on therepeatMode
and whether shuffling is enabled.- Overrides:
getPreviousWindowIndex
in classTimeline
- Parameters:
windowIndex
- Index of a window in the timeline.repeatMode
- A repeat mode.shuffleModeEnabled
- Whether shuffling is enabled.- Returns:
- The index of the previous window, or
C.INDEX_UNSET
if this is the first window.
-
getLastWindowIndex
public int getLastWindowIndex(boolean shuffleModeEnabled)
Description copied from class:Timeline
Returns the index of the last window in the playback order depending on whether shuffling is enabled.- Overrides:
getLastWindowIndex
in classTimeline
- Parameters:
shuffleModeEnabled
- Whether shuffling is enabled.- Returns:
- The index of the last window in the playback order, or
C.INDEX_UNSET
if the timeline is empty.
-
getFirstWindowIndex
public int getFirstWindowIndex(boolean shuffleModeEnabled)
Description copied from class:Timeline
Returns the index of the first window in the playback order depending on whether shuffling is enabled.- Overrides:
getFirstWindowIndex
in classTimeline
- Parameters:
shuffleModeEnabled
- Whether shuffling is enabled.- Returns:
- The index of the first window in the playback order, or
C.INDEX_UNSET
if the timeline is empty.
-
getWindow
public final Timeline.Window getWindow(int windowIndex, Timeline.Window window, long defaultPositionProjectionUs)
Description copied from class:Timeline
Populates aTimeline.Window
with data for the window at the specified index.- Specified by:
getWindow
in classTimeline
- Parameters:
windowIndex
- The index of the window.window
- TheTimeline.Window
to populate. Must not be null.defaultPositionProjectionUs
- A duration into the future that the populated window's default start position should be projected.- Returns:
- The populated
Timeline.Window
, for convenience.
-
getPeriodByUid
public final Timeline.Period getPeriodByUid(Object periodUid, Timeline.Period period)
Description copied from class:Timeline
Populates aTimeline.Period
with data for the period with the specified unique identifier.- Overrides:
getPeriodByUid
in classTimeline
- Parameters:
periodUid
- The unique identifier of the period.period
- TheTimeline.Period
to populate. Must not be null.- Returns:
- The populated
Timeline.Period
, for convenience.
-
getPeriod
public final Timeline.Period getPeriod(int periodIndex, Timeline.Period period, boolean setIds)
Description copied from class:Timeline
Populates aTimeline.Period
with data for the period at the specified index.- Specified by:
getPeriod
in classTimeline
- Parameters:
periodIndex
- The index of the period.period
- TheTimeline.Period
to populate. Must not be null.setIds
- WhetherTimeline.Period.id
andTimeline.Period.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:
- The populated
Timeline.Period
, for convenience.
-
getIndexOfPeriod
public final int getIndexOfPeriod(Object uid)
Description copied from class:Timeline
Returns the index of the period identified by its uniqueTimeline.Period.uid
, orC.INDEX_UNSET
if the period is not in the timeline.- Specified by:
getIndexOfPeriod
in classTimeline
- Parameters:
uid
- A unique identifier for a period.- Returns:
- The index of the period, or
C.INDEX_UNSET
if the period was not found.
-
getUidOfPeriod
public final Object getUidOfPeriod(int periodIndex)
Description copied from class:Timeline
Returns the unique id of the period identified by its index in the timeline.- Specified by:
getUidOfPeriod
in classTimeline
- Parameters:
periodIndex
- The index of the period.- Returns:
- The unique id of the period.
-
getChildIndexByPeriodIndex
protected abstract int getChildIndexByPeriodIndex(int periodIndex)
Returns the index of the child timeline containing the given period index.- Parameters:
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:
windowIndex
- A valid window index within the bounds of the timeline.
-
getChildIndexByChildUid
protected abstract int getChildIndexByChildUid(Object childUid)
Returns the index of the child timeline with the given UID orC.INDEX_UNSET
if not found.- Parameters:
childUid
- A child UID.- Returns:
- Index of child timeline or
C.INDEX_UNSET
if UID was not found.
-
getTimelineByChildIndex
protected abstract Timeline getTimelineByChildIndex(int childIndex)
Returns the child timeline for the child with the given index.- Parameters:
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:
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:
childIndex
- A valid child 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:
childIndex
- A valid child index within the bounds of the timeline.
-
-