Package com.google.android.exoplayer2.source

## Class LoopingMediaSource

- java.lang.Object
- - com.google.android.exoplayer2.source.BaseMediaSource
  - - com.google.android.exoplayer2.source.CompositeMediaSource<Void>
    - - com.google.android.exoplayer2.source.WrappingMediaSource
      - - com.google.android.exoplayer2.source.LoopingMediaSource

- All Implemented Interfaces:
    `MediaSource`

      @Deprecated
      public final class LoopingMediaSource
      extends WrappingMediaSource

  Deprecated.
  To loop a `MediaSource` indefinitely, use `Player.setRepeatMode(int)` instead of this class. To add a `MediaSource` a specific number of times to the playlist, use `ExoPlayer.addMediaSource(com.google.android.exoplayer2.source.MediaSource)` in a loop with the same `MediaSource`. To combine repeated `MediaSource` instances into one `MediaSource`, for example to further wrap it in another `MediaSource`, use `ConcatenatingMediaSource` with the same `MediaSource` `added` multiple times.
  Loops a `MediaSource` a specified number of times.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.google.android.exoplayer2.source.MediaSource

      `MediaSource.Factory, MediaSource.MediaPeriodId, MediaSource.MediaSourceCaller`

  - ### Field Summary

    - ### Fields inherited from class com.google.android.exoplayer2.source.WrappingMediaSource

      `mediaSource`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `LoopingMediaSource​(MediaSource childSource)` | Deprecated. Loops the provided source indefinitely.
    `LoopingMediaSource​(MediaSource childSource, int loopCount)` | Deprecated. Loops the provided source a specified number of times.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `MediaPeriod` | `createPeriod​(MediaSource.MediaPeriodId id, Allocator allocator, long startPositionUs)` | Deprecated. Creates the requested `MediaPeriod`.
    `Timeline` | `getInitialTimeline()` | Deprecated. Returns the initial placeholder timeline that is returned immediately when the real timeline is not yet known, or null to let the player create an initial timeline.
    `protected MediaSource.MediaPeriodId` | `getMediaPeriodIdForChildMediaPeriodId​(MediaSource.MediaPeriodId mediaPeriodId)` | Deprecated. Returns the `MediaSource.MediaPeriodId` in the wrapping source corresponding to the specified `MediaSource.MediaPeriodId` in a child source.
    `boolean` | `isSingleWindow()` | Deprecated. Returns true if the media source is guaranteed to never have zero or more than one window.
    `protected void` | `onChildSourceInfoRefreshed​(Timeline newTimeline)` | Deprecated. Called when the child source info has been refreshed.
    `void` | `releasePeriod​(MediaPeriod mediaPeriod)` | Deprecated. Releases a `MediaPeriod`.

    - ### Methods inherited from class com.google.android.exoplayer2.source.WrappingMediaSource

      `disableChildSource, enableChildSource, getMediaItem, getMediaPeriodIdForChildMediaPeriodId, getMediaTimeForChildMediaTime, getMediaTimeForChildMediaTime, getWindowIndexForChildWindowIndex, getWindowIndexForChildWindowIndex, onChildSourceInfoRefreshed, prepareChildSource, prepareSourceInternal, prepareSourceInternal, releaseChildSource`

    - ### Methods inherited from class com.google.android.exoplayer2.source.CompositeMediaSource

      `disableChildSource, disableInternal, enableChildSource, enableInternal, maybeThrowSourceInfoRefreshError, prepareChildSource, releaseChildSource, releaseSourceInternal`

    - ### Methods inherited from class com.google.android.exoplayer2.source.BaseMediaSource

      `addDrmEventListener, addEventListener, createDrmEventDispatcher, createDrmEventDispatcher, createEventDispatcher, createEventDispatcher, createEventDispatcher, disable, enable, getPlayerId, isEnabled, prepareSource, prepareSource, refreshSourceInfo, releaseSource, removeDrmEventListener, removeEventListener`

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

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

- - ### Constructor Detail

    - #### LoopingMediaSource

          public LoopingMediaSource​(MediaSource childSource)

      Deprecated.
      Loops the provided source indefinitely. Note that it is usually better to use `Player.setRepeatMode(int)`.
      Parameters:
        `childSource` - The `MediaSource` to loop.

    - #### LoopingMediaSource

          public LoopingMediaSource​(MediaSource childSource,
                                    int loopCount)

      Deprecated.
      Loops the provided source a specified number of times.
      Parameters:
        `childSource` - The `MediaSource` to loop.
        `loopCount` - The desired number of loops. Must be strictly positive.

  - ### Method Detail

    - #### getInitialTimeline

          @Nullable
          public Timeline getInitialTimeline()

      Deprecated.
      Description copied from interface: `MediaSource`
      Returns the initial placeholder timeline that is returned immediately when the real timeline is not yet known, or null to let the player create an initial timeline.

      The initial timeline must use the same uids for windows and periods that the real timeline will use. It also must provide windows which are marked as dynamic to indicate that the window is expected to change when the real timeline arrives.

      Any media source which has multiple windows should typically provide such an initial timeline to make sure the player reports the correct number of windows immediately.

      Specified by:
        `getInitialTimeline` in interface `MediaSource`
      Overrides:
        `getInitialTimeline` in class `WrappingMediaSource`

    - #### isSingleWindow

          public boolean isSingleWindow()

      Deprecated.
      Description copied from interface: `MediaSource`
      Returns true if the media source is guaranteed to never have zero or more than one window.

      The default implementation returns `true`.

      Specified by:
        `isSingleWindow` in interface `MediaSource`
      Overrides:
        `isSingleWindow` in class `WrappingMediaSource`
      Returns:
        true if the source has exactly one window.

    - #### createPeriod

          public MediaPeriod createPeriod​(MediaSource.MediaPeriodId id,
                                          Allocator allocator,
                                          long startPositionUs)

      Deprecated.
      Description copied from class: `WrappingMediaSource`
      Creates the requested `MediaPeriod`.

      This method typically forwards to the wrapped media source and optionally wraps the returned `MediaPeriod`.

      Specified by:
        `createPeriod` in interface `MediaSource`
      Overrides:
        `createPeriod` in class `WrappingMediaSource`
      Parameters:
        `id` - The identifier of the period.
        `allocator` - An `Allocator` from which to obtain media buffer allocations.
        `startPositionUs` - The expected start position, in microseconds.
      Returns:
        A new `MediaPeriod`.
      See Also:
        `MediaSource.createPeriod(MediaPeriodId, Allocator, long)`

    - #### releasePeriod

          public void releasePeriod​(MediaPeriod mediaPeriod)

      Deprecated.
      Description copied from class: `WrappingMediaSource`
      Releases a `MediaPeriod`.

      This method typically forwards to the wrapped media source and optionally unwraps the provided `MediaPeriod`.

      Specified by:
        `releasePeriod` in interface `MediaSource`
      Overrides:
        `releasePeriod` in class `WrappingMediaSource`
      Parameters:
        `mediaPeriod` - The period to release.
      See Also:
        `MediaSource.releasePeriod(MediaPeriod)`

    - #### onChildSourceInfoRefreshed

          protected void onChildSourceInfoRefreshed​(Timeline newTimeline)

      Deprecated.
      Description copied from class: `WrappingMediaSource`
      Called when the child source info has been refreshed.

      This `Timeline` can be amended if needed, for example using `ForwardingTimeline`. The `Timeline` for the wrapping source needs to be published with `BaseMediaSource.refreshSourceInfo(Timeline)`.

      Overrides:
        `onChildSourceInfoRefreshed` in class `WrappingMediaSource`
      Parameters:
        `newTimeline` - The timeline of the child source.

    - #### getMediaPeriodIdForChildMediaPeriodId

          @Nullable
          protected MediaSource.MediaPeriodId getMediaPeriodIdForChildMediaPeriodId​(MediaSource.MediaPeriodId mediaPeriodId)

      Deprecated.
      Description copied from class: `WrappingMediaSource`
      Returns the `MediaSource.MediaPeriodId` in the wrapping source corresponding to the specified `MediaSource.MediaPeriodId` in a child source. The default implementation does not change the media period id.
      Overrides:
        `getMediaPeriodIdForChildMediaPeriodId` in class `WrappingMediaSource`
      Parameters:
        `mediaPeriodId` - A `MediaSource.MediaPeriodId` of the child source.
      Returns:
        The corresponding `MediaSource.MediaPeriodId` in the wrapping source. Null if no corresponding media period id can be determined.