Package com.google.android.exoplayer2.source.smoothstreaming

## Class SsMediaSource

- java.lang.Object
- - com.google.android.exoplayer2.source.BaseMediaSource
  - - com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource

- All Implemented Interfaces:
    `MediaSource`, `Loader.Callback<ParsingLoadable<SsManifest>>`

      public final class SsMediaSource
      extends BaseMediaSource
      implements Loader.Callback<ParsingLoadable<SsManifest>>

  A SmoothStreaming `MediaSource`.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `SsMediaSource.Factory` | Factory for `SsMediaSource`.

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

      `MediaSource.MediaPeriodId, MediaSource.MediaSourceCaller`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static long` | `DEFAULT_LIVE_PRESENTATION_DELAY_MS` | The default presentation delay for live streams.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `MediaPeriod` | `createPeriod​(MediaSource.MediaPeriodId id, Allocator allocator, long startPositionUs)` | Returns a new `MediaPeriod` identified by `periodId`.
    `MediaItem` | `getMediaItem()` | Returns the `MediaItem` whose media is provided by the source.
    `void` | `maybeThrowSourceInfoRefreshError()` | Throws any pending error encountered while loading or refreshing source information.
    `void` | `onLoadCanceled​(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs, long loadDurationMs, boolean released)` | Called when a load has been canceled.
    `void` | `onLoadCompleted​(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs, long loadDurationMs)` | Called when a load has completed.
    `Loader.LoadErrorAction` | `onLoadError​(ParsingLoadable<SsManifest> loadable, long elapsedRealtimeMs, long loadDurationMs, IOException error, int errorCount)` | Called when a load encounters an error.
    `protected void` | `prepareSourceInternal​(TransferListener mediaTransferListener)` | Starts source preparation and enables the source, see `BaseMediaSource.prepareSource(MediaSourceCaller, TransferListener)`.
    `void` | `releasePeriod​(MediaPeriod mediaPeriod)` | Releases the period.
    `protected void` | `releaseSourceInternal()` | Releases the source, see `BaseMediaSource.releaseSource(MediaSourceCaller)`.

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

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

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

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

    - ### Methods inherited from interface com.google.android.exoplayer2.source.MediaSource

      `getInitialTimeline, isSingleWindow`

- - ### Field Detail

    - #### DEFAULT_LIVE_PRESENTATION_DELAY_MS

          public static final long DEFAULT_LIVE_PRESENTATION_DELAY_MS

      The default presentation delay for live streams. The presentation delay is the duration by which the default start position precedes the end of the live window.
      See Also:
        Constant Field Values

  - ### Method Detail

    - #### getMediaItem

          public MediaItem getMediaItem()

      Description copied from interface: `MediaSource`
      Returns the `MediaItem` whose media is provided by the source.
      Specified by:
        `getMediaItem` in interface `MediaSource`

    - #### prepareSourceInternal

          protected void prepareSourceInternal​(@Nullable
                                               TransferListener mediaTransferListener)

      Description copied from class: `BaseMediaSource`
      Starts source preparation and enables the source, see `BaseMediaSource.prepareSource(MediaSourceCaller, TransferListener)`. This method is called at most once until the next call to `BaseMediaSource.releaseSourceInternal()`.
      Specified by:
        `prepareSourceInternal` in class `BaseMediaSource`
      Parameters:
        `mediaTransferListener` - The transfer listener which should be informed of any media data transfers. May be null if no listener is available. Note that this listener should usually be only informed of transfers related to the media loads and not of auxiliary loads for manifests and other data.

    - #### maybeThrowSourceInfoRefreshError

          public void maybeThrowSourceInfoRefreshError()
                                                throws IOException

      Description copied from interface: `MediaSource`
      Throws any pending error encountered while loading or refreshing source information.

      Should not be called directly from application code.

      Must only be called after `MediaSource.prepareSource(MediaSourceCaller, TransferListener)`.

      Specified by:
        `maybeThrowSourceInfoRefreshError` in interface `MediaSource`
      Throws:
        `IOException`

    - #### createPeriod

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

      Description copied from interface: `MediaSource`
      Returns a new `MediaPeriod` identified by `periodId`.

      Should not be called directly from application code.

      Must only be called if the source is enabled.

      Specified by:
        `createPeriod` in interface `MediaSource`
      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`.

    - #### releasePeriod

          public void releasePeriod​(MediaPeriod mediaPeriod)

      Description copied from interface: `MediaSource`
      Releases the period.

      Should not be called directly from application code.

      Specified by:
        `releasePeriod` in interface `MediaSource`
      Parameters:
        `mediaPeriod` - The period to release.

    - #### releaseSourceInternal

          protected void releaseSourceInternal()

      Description copied from class: `BaseMediaSource`
      Releases the source, see `BaseMediaSource.releaseSource(MediaSourceCaller)`. This method is called exactly once after each call to `BaseMediaSource.prepareSourceInternal(TransferListener)`.
      Specified by:
        `releaseSourceInternal` in class `BaseMediaSource`

    - #### onLoadCompleted

          public void onLoadCompleted​(ParsingLoadable<SsManifest> loadable,
                                      long elapsedRealtimeMs,
                                      long loadDurationMs)

      Description copied from interface: `Loader.Callback`
      Called when a load has completed.

      Note: There is guaranteed to be a memory barrier between `Loader.Loadable.load()` exiting and this callback being called.

      Specified by:
        `onLoadCompleted` in interface `Loader.Callback<ParsingLoadable<SsManifest>>`
      Parameters:
        `loadable` - The loadable whose load has completed.
        `elapsedRealtimeMs` - `SystemClock.elapsedRealtime()` when the load ended.
        `loadDurationMs` - The duration in milliseconds of the load since `Loader.startLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback<T>, int)` was called.

    - #### onLoadCanceled

          public void onLoadCanceled​(ParsingLoadable<SsManifest> loadable,
                                     long elapsedRealtimeMs,
                                     long loadDurationMs,
                                     boolean released)

      Description copied from interface: `Loader.Callback`
      Called when a load has been canceled.

      Note: If the `Loader` has not been released then there is guaranteed to be a memory barrier between `Loader.Loadable.load()` exiting and this callback being called. If the `Loader` has been released then this callback may be called before `Loader.Loadable.load()` exits.

      Specified by:
        `onLoadCanceled` in interface `Loader.Callback<ParsingLoadable<SsManifest>>`
      Parameters:
        `loadable` - The loadable whose load has been canceled.
        `elapsedRealtimeMs` - `SystemClock.elapsedRealtime()` when the load was canceled.
        `loadDurationMs` - The duration in milliseconds of the load since `Loader.startLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback<T>, int)` was called up to the point at which it was canceled.
        `released` - True if the load was canceled because the `Loader` was released. False otherwise.

    - #### onLoadError

          public Loader.LoadErrorAction onLoadError​(ParsingLoadable<SsManifest> loadable,
                                                    long elapsedRealtimeMs,
                                                    long loadDurationMs,
                                                    IOException error,
                                                    int errorCount)

      Description copied from interface: `Loader.Callback`
      Called when a load encounters an error.

      Note: There is guaranteed to be a memory barrier between `Loader.Loadable.load()` exiting and this callback being called.

      Specified by:
        `onLoadError` in interface `Loader.Callback<ParsingLoadable<SsManifest>>`
      Parameters:
        `loadable` - The loadable whose load has encountered an error.
        `elapsedRealtimeMs` - `SystemClock.elapsedRealtime()` when the error occurred.
        `loadDurationMs` - The duration in milliseconds of the load since `Loader.startLoading(T, com.google.android.exoplayer2.upstream.Loader.Callback<T>, int)` was called up to the point at which the error occurred.
        `error` - The load error.
        `errorCount` - The number of errors this load has encountered, including this one.
      Returns:
        The desired error handling action. One of `Loader.RETRY`, `Loader.RETRY_RESET_ERROR_COUNT`, `Loader.DONT_RETRY`, `Loader.DONT_RETRY_FATAL` or a retry action created by `Loader.createRetryAction(boolean, long)`.