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 more `Timeline`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>`

  - ### Field Summary

    - ### Fields inherited from class com.google.android.exoplayer2.Timeline

      `CREATOR, EMPTY`

  - ### 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 or `C.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 unique `Timeline.Period.uid`, or `C.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 index `windowIndex` depending on the `repeatMode` and whether shuffling is enabled.
    `Timeline.Period` | `getPeriod​(int periodIndex, Timeline.Period period, boolean setIds)` | Populates a `Timeline.Period` with data for the period at the specified index.
    `Timeline.Period` | `getPeriodByUid​(Object periodUid, Timeline.Period period)` | Populates a `Timeline.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 index `windowIndex` depending on the `repeatMode` 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 a `Timeline.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, toBundleWithOneWindowOnly`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### 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 index `windowIndex` depending on the `repeatMode` and whether shuffling is enabled.
      Overrides:
        `getNextWindowIndex` in class `Timeline`
      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 index `windowIndex` depending on the `repeatMode` and whether shuffling is enabled.
      Overrides:
        `getPreviousWindowIndex` in class `Timeline`
      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 class `Timeline`
      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 class `Timeline`
      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 a `Timeline.Window` with data for the window at the specified index.
      Specified by:
        `getWindow` in class `Timeline`
      Parameters:
        `windowIndex` - The index of the window.
        `window` - The `Timeline.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 a `Timeline.Period` with data for the period with the specified unique identifier.
      Overrides:
        `getPeriodByUid` in class `Timeline`
      Parameters:
        `periodUid` - The unique identifier of the period.
        `period` - The `Timeline.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 a `Timeline.Period` with data for the period at the specified index.
      Specified by:
        `getPeriod` in class `Timeline`
      Parameters:
        `periodIndex` - The index of the period.
        `period` - The `Timeline.Period` to populate. Must not be null.
        `setIds` - Whether `Timeline.Period.id` and `Timeline.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 unique `Timeline.Period.uid`, or `C.INDEX_UNSET` if the period is not in the timeline.
      Specified by:
        `getIndexOfPeriod` in class `Timeline`
      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 class `Timeline`
      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 or `C.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.