# androidx.media3.exoplayer.source

*** ** * ** ***

## Annotations

|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.IllegalClippingException.Reason` | The reason clipping failed. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MergingMediaSource.IllegalMergeException.Reason` | The reason the merge failed. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream.Flags` | Flags that can be specified on the stream. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream.ReadDataResult` | Return values of `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream#readData(androidx.media3.exoplayer.FormatHolder,androidx.media3.decoder.DecoderInputBuffer,int)`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream.ReadFlags` | Flags that can be specified when calling `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream#readData(androidx.media3.exoplayer.FormatHolder,androidx.media3.decoder.DecoderInputBuffer,int)`. |

## Interfaces

|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/CompositeSequenceableLoaderFactory` | A factory to create composite `https://developer.android.com/reference/androidx/media3/exoplayer/source/SequenceableLoader`s. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/DefaultMediaSourceFactory.AdsLoaderProvider` | **This interface is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/ads/AdsLoader.Provider` instead. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ExternalLoader` | An object for loading media outside of ExoPlayer's loading mechanism. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MaskingMediaPeriod.PrepareListener` | Listener for preparation events. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` | Loads media corresponding to a `https://developer.android.com/reference/androidx/media3/common/Timeline.Period`, and allows that media to be read. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod.Callback` | A callback to be notified of `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` events. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` | Defines and provides media to be played by an `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory` | Factory for creating `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` from `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller` | A caller of media sources, which will be notified of source events. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener` | Interface for callbacks to be notified of `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` events. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceFactory` | **This interface is deprecated.** Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory`. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaExtractor` | Extracts the contents of a container file from a progressive media stream. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaExtractor.Factory` | Creates `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaExtractor` instances. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaSource.Listener` | A listener of `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaSource`, which will be notified of source events. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleQueue.UpstreamFormatChangedListener` | A listener for changes to the upstream format. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream` | A stream of media samples (and associated format information). |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SequenceableLoader` | A loader that can proceed in approximate synchronization with other loaders. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SequenceableLoader.Callback` | A callback to be notified of `https://developer.android.com/reference/androidx/media3/exoplayer/source/SequenceableLoader` events. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ShuffleOrder` | Shuffled order of indices. |

## Classes

|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource` | Base `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` implementation to handle parallel reuse and to keep a list of `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener`s. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/BundledExtractorsAdapter` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaExtractor` built on top of `https://developer.android.com/reference/androidx/media3/extractor/Extractor` instances, whose implementation classes are bundled in the app. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaPeriod` | Wraps a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` and clips its `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream`s to provide a subsequence of their samples. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` that wraps a source and clips its timeline based on specified start/end positions. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.Builder` | A builder for `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/CompositeMediaSource` | Composite `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` consisting of multiple child sources. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/CompositeSequenceableLoader` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/SequenceableLoader` that encapsulates multiple other `https://developer.android.com/reference/androidx/media3/exoplayer/source/SequenceableLoader`s. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource` | **This class is deprecated.** Use playlist modification methods like `https://developer.android.com/reference/androidx/media3/common/Player#addMediaItem(androidx.media3.common.MediaItem)` instead. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource.MediaSourceHolder` | **This class is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2` | Concatenates multiple `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource`, combining everything in one single `https://developer.android.com/reference/androidx/media3/common/Timeline.Window`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2.Builder` | A builder for `https://developer.android.com/reference/androidx/media3/exoplayer/source/ConcatenatingMediaSource2` instances. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/DefaultCompositeSequenceableLoaderFactory` | Default implementation of `https://developer.android.com/reference/androidx/media3/exoplayer/source/CompositeSequenceableLoaderFactory`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/DefaultMediaSourceFactory` | The default `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory` implementation. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/EmptySampleStream` | An empty `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleStream`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ExternalLoader.LoadRequest` | A data class providing information associated with the load event. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ExternallyLoadedMediaSource` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` for media loaded outside of the usual ExoPlayer loading mechanism. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ExternallyLoadedMediaSource.Factory` | Factory for `https://developer.android.com/reference/androidx/media3/exoplayer/source/ExternallyLoadedMediaSource`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/FilteringMediaSource` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` that filters the available `https://developer.android.com/reference/androidx/media3/common/C.TrackType`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ForwardingMediaSourceFactory` | A forwarding `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.Factory` that forwards all methods to the underlying implementation. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ForwardingTimeline` | An overridable `https://developer.android.com/reference/androidx/media3/common/Timeline` implementation forwarding methods to another timeline. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` load event information. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo.Builder` | Builder for `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoadEventInfo`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/LoopingMediaSource` | **This class is deprecated.** To loop a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` indefinitely, use `https://developer.android.com/reference/androidx/media3/common/Player#setRepeatMode(int)` instead of this class. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MaskingMediaPeriod` | Media period that defers calling `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#createPeriod(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,androidx.media3.exoplayer.upstream.Allocator,long)` on a given source until `https://developer.android.com/reference/androidx/media3/exoplayer/source/MaskingMediaPeriod#createPeriod(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)` has been called. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MaskingMediaSource` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` that masks the `https://developer.android.com/reference/androidx/media3/common/Timeline` with a placeholder until the actual media structure is known. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MaskingMediaSource.PlaceholderTimeline` | A timeline with one dynamic window with a period of indeterminate duration. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaLoadData` | Descriptor for data being loaded or selected by a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaParserExtractorAdapter` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaExtractor` implemented on top of the platform's `https://developer.android.com/reference/android/media/MediaParser.html`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaParserExtractorAdapter.Factory` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaExtractor.Factory` for instances of `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaParserExtractorAdapter`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId` | Identifier for a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` | Dispatches events to `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MergingMediaSource` | Merges multiple `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource`s. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaSource` | Provides one period that loads data from a `https://developer.android.com/reference/android/net/Uri.html` and extracted using an `https://developer.android.com/reference/androidx/media3/extractor/Extractor`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory` | Factory for `https://developer.android.com/reference/androidx/media3/exoplayer/source/ProgressiveMediaSource`s. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SampleQueue` | A queue of media samples. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ShuffleOrder.DefaultShuffleOrder` | The default `https://developer.android.com/reference/androidx/media3/exoplayer/source/ShuffleOrder` implementation for random shuffle order. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ShuffleOrder.UnshuffledShuffleOrder` | A `https://developer.android.com/reference/androidx/media3/exoplayer/source/ShuffleOrder` implementation which does not shuffle. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SilenceMediaSource` | Media source with a single period consisting of silent raw audio of a given duration. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SilenceMediaSource.Factory` | Factory for `https://developer.android.com/reference/androidx/media3/exoplayer/source/SilenceMediaSource`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SinglePeriodTimeline` | A `https://developer.android.com/reference/androidx/media3/common/Timeline` consisting of a single period and static window. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource` | **This class is deprecated.** The only use for this class is subtitle playback, but it is only compatible with legacy subtitle decoding, which is not supported by default. <br /> |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource.Factory` | **This class is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/TimelineWithUpdatedMediaItem` | A `https://developer.android.com/reference/androidx/media3/common/Timeline` that overrides the `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/TrackGroupArray` | An immutable array of `https://developer.android.com/reference/androidx/media3/common/TrackGroup`s. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/WrappingMediaSource` | An abstract `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource` wrapping a single child `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource`. |

## Exceptions

|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/BehindLiveWindowException` | Thrown when a live playback falls behind the available media window. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource.IllegalClippingException` | Thrown when a `https://developer.android.com/reference/androidx/media3/exoplayer/source/ClippingMediaSource` cannot clip its wrapped source. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MergingMediaSource.IllegalMergeException` | Thrown when a `https://developer.android.com/reference/androidx/media3/exoplayer/source/MergingMediaSource` cannot merge its sources. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/UnrecognizedInputFormatException` | Thrown if the input format was not recognized. |