# SingleSampleMediaSource

Artifact: [androidx.media3:media3-exoplayer](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/exoplayer/source/SingleSampleMediaSource.java+class:androidx.media3.exoplayer.source.SingleSampleMediaSource)

*** ** * ** ***


```
@UnstableApi
public final class SingleSampleMediaSource extends BaseMediaSource
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.media3.exoplayer.source.BaseMediaSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource) ||
|   | ↳ | [androidx.media3.exoplayer.source.SingleSampleMediaSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource) |

*** ** * ** ***

> [!CAUTION]
> **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. Users of this class almost certainly need to `https://developer.android.com/reference/androidx/media3/exoplayer/text/TextRenderer#experimentalSetLegacyDecodingEnabled(boolean)` on their `https://developer.android.com/reference/androidx/media3/exoplayer/ExoPlayer` instance in order to avoid playback errors when trying to play subtitles.

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource.Factory` **This class is deprecated.** Deprecated in Java |

| ### Public fields |
|---|---|
| `final https://developer.android.com/reference/androidx/media3/common/MediaItem` | `https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#mediaItem()` **This field is deprecated.** Deprecated in Java |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` | `[createPeriod](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#createPeriod(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,androidx.media3.exoplayer.upstream.Allocator,long))( https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId id, https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Allocator allocator, long startPositionUs )` **This method is deprecated.** Deprecated in Java |
| `https://developer.android.com/reference/androidx/media3/common/MediaItem` | `[getMediaItem](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#getMediaItem())()` **This method is deprecated.** Deprecated in Java |
| `void` | `[maybeThrowSourceInfoRefreshError](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#maybeThrowSourceInfoRefreshError())()` **This method is deprecated.** Deprecated in Java |
| `void` | `[releasePeriod](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#releasePeriod(androidx.media3.exoplayer.source.MediaPeriod))(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod mediaPeriod)` **This method is deprecated.** Deprecated in Java |

| ### Protected methods |
|---|---|
| `void` | `[prepareSourceInternal](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#prepareSourceInternal(androidx.media3.datasource.TransferListener))(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/TransferListener mediaTransferListener)` **This method is deprecated.** Deprecated in Java |
| `void` | `[releaseSourceInternal](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#releaseSourceInternal())()` **This method is deprecated.** Deprecated in Java |

### Inherited fields

From [androidx.media3.exoplayer.source.BaseMediaSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource) `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#bandwidthMeter()`

**This field is deprecated.** Deprecated in Java
`@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId` `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#playerId()`

**This field is deprecated.** Deprecated in Java

### Inherited methods

From [androidx.media3.exoplayer.source.BaseMediaSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource) `final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[addDrmEventListener](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#addDrmEventListener(android.os.Handler,androidx.media3.exoplayer.drm.DrmSessionEventListener))(
https://developer.android.com/reference/android/os/Handler.html handler,
https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener eventListener
)`

**This method is deprecated.** Deprecated in Java
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[addEventListener](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#addEventListener(android.os.Handler,androidx.media3.exoplayer.source.MediaSourceEventListener))(
https://developer.android.com/reference/android/os/Handler.html handler,
https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener eventListener
)`

**This method is deprecated.** Deprecated in Java
`final https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener.EventDispatcher` `[createDrmEventDispatcher](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createDrmEventDispatcher(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId))(
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId
)`

**This method is deprecated.** Deprecated in Java
`final https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener.EventDispatcher` `[createDrmEventDispatcher](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createDrmEventDispatcher(int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId))(
int windowIndex,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId
)`

**This method is deprecated.** Deprecated in Java
`final https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` `[createEventDispatcher](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId))(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId)`

**This method is deprecated.** Deprecated in Java
`final https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` `[createEventDispatcher](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,long))(
https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId,
long mediaTimeOffsetMs
)`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)` instead.

<br />

`final https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` `[createEventDispatcher](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId))(
int windowIndex,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId
)`

**This method is deprecated.** Deprecated in Java
`final https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener.EventDispatcher` `[createEventDispatcher](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,long))(
int windowIndex,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId mediaPeriodId,
long mediaTimeOffsetMs
)`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#createEventDispatcher(int,androidx.media3.exoplayer.source.MediaSource.MediaPeriodId)` instead.

<br />

`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[disable](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#disable(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller))(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller caller)`

**This method is deprecated.** Deprecated in Java
`void` `[disableInternal](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#disableInternal())()`

**This method is deprecated.** Deprecated in Java
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[enable](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#enable(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller))(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller caller)`

**This method is deprecated.** Deprecated in Java
`void` `[enableInternal](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#enableInternal())()`

**This method is deprecated.** Deprecated in Java
`final https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter` `[getBandwidthMeter](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#getBandwidthMeter())()`

**This method is deprecated.** Deprecated in Java
`final https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId` `[getPlayerId](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#getPlayerId())()`

**This method is deprecated.** Deprecated in Java
`final boolean` `[isEnabled](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#isEnabled())()`

**This method is deprecated.** Deprecated in Java
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[prepareSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.exoplayer.analytics.PlayerId,androidx.media3.exoplayer.upstream.BandwidthMeter))(
https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller caller,
https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId playerId,
https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter bandwidthMeter
)`

**This method is deprecated.** Deprecated in Java
`final boolean` `[prepareSourceCalled](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#prepareSourceCalled())()`

**This method is deprecated.** Deprecated in Java
`final void` `[refreshSourceInfo](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#refreshSourceInfo(androidx.media3.common.Timeline))(https://developer.android.com/reference/androidx/media3/common/Timeline timeline)`

**This method is deprecated.** Deprecated in Java
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[releaseSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#releaseSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller))(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller caller)`

**This method is deprecated.** Deprecated in Java
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[removeDrmEventListener](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#removeDrmEventListener(androidx.media3.exoplayer.drm.DrmSessionEventListener))(https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener eventListener)`

**This method is deprecated.** Deprecated in Java
`final void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[removeEventListener](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#removeEventListener(androidx.media3.exoplayer.source.MediaSourceEventListener))(https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSourceEventListener eventListener)`

**This method is deprecated.** Deprecated in Java
`final void` `[setBandwidthMeter](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#setBandwidthMeter(androidx.media3.exoplayer.upstream.BandwidthMeter))(https://developer.android.com/reference/androidx/media3/exoplayer/upstream/BandwidthMeter bandwidthMeter)`

**This method is deprecated.** Deprecated in Java
`final void` `[setPlayerId](https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#setPlayerId(androidx.media3.exoplayer.analytics.PlayerId))(https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId playerId)`

**This method is deprecated.** Deprecated in Java
From [androidx.media3.exoplayer.source.MediaSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource) `boolean` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[canUpdateMediaItem](https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#canUpdateMediaItem(androidx.media3.common.MediaItem))(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)`

**This method is deprecated.** Deprecated in Java
`@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/Timeline` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[getInitialTimeline](https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#getInitialTimeline())()`

**This method is deprecated.** Deprecated in Java
`boolean` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[isSingleWindow](https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#isSingleWindow())()`

**This method is deprecated.** Deprecated in Java
`void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[prepareSource](https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.datasource.TransferListener,androidx.media3.exoplayer.analytics.PlayerId))(
https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaSourceCaller caller,
@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/TransferListener mediaTransferListener,
https://developer.android.com/reference/androidx/media3/exoplayer/analytics/PlayerId playerId
)`

**This method is deprecated.**

Use `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.exoplayer.analytics.PlayerId,androidx.media3.exoplayer.upstream.BandwidthMeter)` instead.

<br />

`void` `@https://developer.android.com/reference/androidx/media3/common/util/UnstableApi
[updateMediaItem](https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#updateMediaItem(androidx.media3.common.MediaItem))(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)`

**This method is deprecated.** Deprecated in Java

## Public fields

### mediaItem

```
public final MediaItem mediaItem
```

> [!CAUTION]
> **This field is deprecated.**   
> Deprecated in Java

## Public methods

### createPeriod

```
public MediaPeriod [createPeriod](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#createPeriod(androidx.media3.exoplayer.source.MediaSource.MediaPeriodId,androidx.media3.exoplayer.upstream.Allocator,long))(
    MediaSource.MediaPeriodId id,
    Allocator allocator,
    long startPositionUs
)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Returns a new `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` identified by `periodId`.

Should not be called directly from application code.

This method must be called on the playback thread and only if the source is enabled.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource.MediaPeriodId id` | The identifier of the period. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Allocator allocator` | An `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/Allocator` from which to obtain media buffer allocations. |
| `long startPositionUs` | The expected start position, in microseconds. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod` | A new `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod`. |

### getMediaItem

```
public MediaItem [getMediaItem](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#getMediaItem())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Returns the `https://developer.android.com/reference/androidx/media3/common/MediaItem` whose media is provided by the source.

Should not be called directly from application code.

This method must be called on the application thread.

### maybeThrowSourceInfoRefreshError

```
public void [maybeThrowSourceInfoRefreshError](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#maybeThrowSourceInfoRefreshError())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Throws any pending error encountered while loading or refreshing source information.

Should not be called directly from application code.

This method must be called on the playback thread and only after `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.exoplayer.analytics.PlayerId,androidx.media3.exoplayer.upstream.BandwidthMeter)`.

### releasePeriod

```
public void [releasePeriod](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#releasePeriod(androidx.media3.exoplayer.source.MediaPeriod))(MediaPeriod mediaPeriod)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Releases the period.

Should not be called directly from application code.

This method must be called on the playback thread.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaPeriod mediaPeriod` | The period to release. |

## Protected methods

### prepareSourceInternal

```
protected void [prepareSourceInternal](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#prepareSourceInternal(androidx.media3.datasource.TransferListener))(@Nullable TransferListener mediaTransferListener)
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Starts source preparation and enables the source, see `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#prepareSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller,androidx.media3.exoplayer.analytics.PlayerId,androidx.media3.exoplayer.upstream.BandwidthMeter)`. This method is called at most once until the next call to `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#releaseSourceInternal()`.

This method is called on the playback thread.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/datasource/TransferListener 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. |

### releaseSourceInternal

```
protected void [releaseSourceInternal](https://developer.android.com/reference/androidx/media3/exoplayer/source/SingleSampleMediaSource#releaseSourceInternal())()
```

> [!CAUTION]
> **This method is deprecated.**   
> Deprecated in Java

Releases the source, see `https://developer.android.com/reference/androidx/media3/exoplayer/source/MediaSource#releaseSource(androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller)`. This method is called exactly once after each call to `https://developer.android.com/reference/androidx/media3/exoplayer/source/BaseMediaSource#prepareSourceInternal(androidx.media3.datasource.TransferListener)`.

This method is called on the playback thread.