# ProgressiveMediaSource.Factory

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/ProgressiveMediaSource.java+class:androidx.media3.exoplayer.source.ProgressiveMediaSource.Factory)

*** ** * ** ***


```
class ProgressiveMediaSource.Factory : MediaSourceFactory
```

<br />

*** ** * ** ***

Factory for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource`s.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#Factory(androidx.media3.datasource.DataSource.Factory)(dataSourceFactory: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory!)` Creates a new factory for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource`s. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#Factory(androidx.media3.datasource.DataSource.Factory,androidx.media3.extractor.ExtractorsFactory)( dataSourceFactory: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory!, extractorsFactory: https://developer.android.com/reference/kotlin/androidx/media3/extractor/ExtractorsFactory! )` Equivalent to `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#Factory(androidx.media3.datasource.DataSource.Factory,androidx.media3.exoplayer.source.ProgressiveMediaExtractor.Factory)`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#Factory(androidx.media3.datasource.DataSource.Factory,androidx.media3.exoplayer.source.ProgressiveMediaExtractor.Factory)( dataSourceFactory: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory!, progressiveMediaExtractorFactory: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaExtractor.Factory! )` Creates a new factory for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource`s. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#Factory(androidx.media3.datasource.DataSource.Factory,androidx.media3.exoplayer.source.ProgressiveMediaExtractor.Factory,androidx.media3.exoplayer.drm.DrmSessionManagerProvider,androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy,int)( dataSourceFactory: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory!, progressiveMediaExtractorFactory: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaExtractor.Factory!, drmSessionManagerProvider: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DrmSessionManagerProvider!, loadErrorHandlingPolicy: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy!, continueLoadingCheckIntervalBytes: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` Creates a new factory for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource`s. |

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource!` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#createMediaSource(androidx.media3.common.MediaItem)(mediaItem: https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem!)` Returns a new `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource` using the current parameters. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-array/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html>!` | `@https://developer.android.com/reference/kotlin/androidx/media3/common/C.ContentType https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#getSupportedTypes()()` Returns the `https://developer.android.com/reference/kotlin/androidx/media3/common/C.ContentType` supported by media sources created by this factory. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#setContinueLoadingCheckIntervalBytes(int)( continueLoadingCheckIntervalBytes: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` Sets the number of bytes that should be loaded between each invocation of `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/SequenceableLoader.Callback#onContinueLoadingRequested(T)`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#setDownloadExecutor(com.google.common.base.Supplier<androidx.media3.exoplayer.util.ReleasableExecutor>)(downloadExecutor: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/util/ReleasableExecutor!>!)` Sets a supplier for an `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/util/ReleasableExecutor` that is used for loading the media. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html <T : https://developer.android.com/reference/java/util/concurrent/Executor.html?> https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#setDownloadExecutor(com.google.common.base.Supplier<T>,java.util.function.Consumer<T>)( downloadExecutor: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<T!>!, downloadExecutorReleaser: https://developer.android.com/reference/java/util/function/Consumer.html<T!>! )` Sets a supplier for an `https://developer.android.com/reference/java/util/concurrent/Executor.html` that is used for loading the media. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#setDrmSessionManagerProvider(androidx.media3.exoplayer.drm.DrmSessionManagerProvider)( drmSessionManagerProvider: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DrmSessionManagerProvider! )` Sets the `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DrmSessionManagerProvider` used to obtain a `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DrmSessionManager` for a `https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#setLoadErrorHandlingPolicy(androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy)( loadErrorHandlingPolicy: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy! )` Sets an optional `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#setLoadOnlySelectedTracks(boolean)(loadOnlySelectedTracks: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Sets whether to load only the video and image tracks selected by the track selection policy. |

### Inherited Constants

From [androidx.media3.exoplayer.source.MediaSource.Factory](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory) `const https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory#UNSUPPORTED()`

An instance that throws `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` from `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory#createMediaSource(androidx.media3.common.MediaItem)` and `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory#getSupportedTypes()`.
From [androidx.media3.exoplayer.source.MediaSourceFactory](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSourceFactory) `const https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSourceFactory!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSourceFactory#UNSUPPORTED()`

An instance that throws `https://developer.android.com/reference/java/lang/UnsupportedOperationException.html` from `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory#createMediaSource(androidx.media3.common.MediaItem)` and `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory#getSupportedTypes()`.

### Inherited functions

From [androidx.media3.exoplayer.source.MediaSource.Factory](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory) `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
@https://developer.android.com/reference/kotlin/androidx/media3/common/util/ExperimentalApi
[experimentalParseSubtitlesDuringExtraction](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory#experimentalParseSubtitlesDuringExtraction(boolean))(
parseSubtitlesDuringExtraction: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html
)`

**This function is deprecated.**

This method (and all support for 'legacy' subtitle decoding during rendering) will be removed in a future release.

<br />

`https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory#setCmcdConfigurationFactory(androidx.media3.exoplayer.upstream.CmcdConfiguration.Factory)(
cmcdConfigurationFactory: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration.Factory!
)`

Sets the `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration.Factory` used to obtain a `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration` for a `https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem`.
`https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory!` `@https://developer.android.com/reference/kotlin/androidx/media3/common/util/UnstableApi
https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory#setSubtitleParserFactory(androidx.media3.extractor.text.SubtitleParser.Factory)(subtitleParserFactory: https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser.Factory!)`

Sets the `https://developer.android.com/reference/kotlin/androidx/media3/extractor/text/SubtitleParser.Factory` to be used for parsing subtitles during extraction.

## Public constructors

### Factory

```
Factory(dataSourceFactory: DataSource.Factory!)
```

Creates a new factory for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource`s.

The factory will use the following default components:

- `https://developer.android.com/reference/kotlin/androidx/media3/extractor/DefaultExtractorsFactory`
- `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider`
- `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/DefaultLoadErrorHandlingPolicy`

| Parameters |
|---|---|
| `dataSourceFactory: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory!` | A factory for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` to read the media. |

### Factory

```
Factory(
    dataSourceFactory: DataSource.Factory!,
    extractorsFactory: ExtractorsFactory!
)
```

Equivalent to `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory#Factory(androidx.media3.datasource.DataSource.Factory,androidx.media3.exoplayer.source.ProgressiveMediaExtractor.Factory)`.

The factory will use the following default components:

- `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider`
- `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/DefaultLoadErrorHandlingPolicy`

| Parameters |
|---|---|
| `dataSourceFactory: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory!` | A factory for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` to read the media. |
| `extractorsFactory: https://developer.android.com/reference/kotlin/androidx/media3/extractor/ExtractorsFactory!` | A factory for the `https://developer.android.com/reference/kotlin/androidx/media3/extractor/Extractor` used to extract the media from its container. |

### Factory

```
Factory(
    dataSourceFactory: DataSource.Factory!,
    progressiveMediaExtractorFactory: ProgressiveMediaExtractor.Factory!
)
```

Creates a new factory for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource`s.

The factory will use the following default components:

- `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider`
- `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/DefaultLoadErrorHandlingPolicy`

| Parameters |
|---|---|
| `dataSourceFactory: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory!` | A factory for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` to read the media. |
| `progressiveMediaExtractorFactory: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaExtractor.Factory!` | A factory for the `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaExtractor` to extract the media from its container. |

### Factory

```
Factory(
    dataSourceFactory: DataSource.Factory!,
    progressiveMediaExtractorFactory: ProgressiveMediaExtractor.Factory!,
    drmSessionManagerProvider: DrmSessionManagerProvider!,
    loadErrorHandlingPolicy: LoadErrorHandlingPolicy!,
    continueLoadingCheckIntervalBytes: Int
)
```

Creates a new factory for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource`s.

| Parameters |
|---|---|
| `dataSourceFactory: https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource.Factory!` | A factory for `https://developer.android.com/reference/kotlin/androidx/media3/datasource/DataSource` to read the media. |
| `progressiveMediaExtractorFactory: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaExtractor.Factory!` | A factory for the `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaExtractor` to extract media from its container. |
| `drmSessionManagerProvider: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DrmSessionManagerProvider!` | A provider to obtain a `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DrmSessionManager` for a `https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem`. |
| `loadErrorHandlingPolicy: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy!` | A policy to handle load error. |
| `continueLoadingCheckIntervalBytes: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The number of bytes that should be loaded between each invocation of `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/SequenceableLoader.Callback#onContinueLoadingRequested(T)`. |

## Public functions

### createMediaSource

```
fun createMediaSource(mediaItem: MediaItem!): ProgressiveMediaSource!
```

Returns a new `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource` using the current parameters.

| Parameters |
|---|---|
| `mediaItem: https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem!` | The `https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource!` | The new `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource`. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException.html` | if `https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem#localConfiguration()` is `null`. |

### getSupportedTypes

```
@C.ContentType
fun getSupportedTypes(): Array<Int>!
```

Returns the `https://developer.android.com/reference/kotlin/androidx/media3/common/C.ContentType` supported by media sources created by this factory.

### setContinueLoadingCheckIntervalBytes

```
@CanIgnoreReturnValue
fun setContinueLoadingCheckIntervalBytes(
    continueLoadingCheckIntervalBytes: Int
): ProgressiveMediaSource.Factory!
```

Sets the number of bytes that should be loaded between each invocation of `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/SequenceableLoader.Callback#onContinueLoadingRequested(T)`. The default value is `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource#DEFAULT_LOADING_CHECK_INTERVAL_BYTES()`.

| Parameters |
|---|---|
| `continueLoadingCheckIntervalBytes: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The number of bytes that should be loaded between each invocation of `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/SequenceableLoader.Callback#onContinueLoadingRequested(T)`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory!` | This factory, for convenience. |

### setDownloadExecutor

```
@CanIgnoreReturnValue
fun setDownloadExecutor(downloadExecutor: Supplier<ReleasableExecutor!>!): MediaSource.Factory!
```

Sets a supplier for an `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/util/ReleasableExecutor` that is used for loading the media.

| Parameters |
|---|---|
| `downloadExecutor: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/util/ReleasableExecutor!>!` | A `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html` that provides an externally managed `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/util/ReleasableExecutor` for downloading and extraction. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/MediaSource.Factory!` | This factory, for convenience. |

### setDownloadExecutor

```
@CanIgnoreReturnValue
fun <T : Executor?> setDownloadExecutor(
    downloadExecutor: Supplier<T!>!,
    downloadExecutorReleaser: Consumer<T!>!
): ProgressiveMediaSource.Factory!
```

Sets a supplier for an `https://developer.android.com/reference/java/util/concurrent/Executor.html` that is used for loading the media.

| Parameters |
|---|---|
| `downloadExecutor: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<T!>!` | A `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html` that provides an externally managed `https://developer.android.com/reference/java/util/concurrent/Executor.html` for downloading and extraction. |
| `downloadExecutorReleaser: https://developer.android.com/reference/java/util/function/Consumer.html<T!>!` | A callback triggered once a load task is finished and a supplied executor is no longer required. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory!` | This factory, for convenience. |

### setDrmSessionManagerProvider

```
@CanIgnoreReturnValue
fun setDrmSessionManagerProvider(
    drmSessionManagerProvider: DrmSessionManagerProvider!
): ProgressiveMediaSource.Factory!
```

Sets the `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DrmSessionManagerProvider` used to obtain a `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/drm/DrmSessionManager` for a `https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem`.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory!` | This factory, for convenience. |

### setLoadErrorHandlingPolicy

```
@CanIgnoreReturnValue
fun setLoadErrorHandlingPolicy(
    loadErrorHandlingPolicy: LoadErrorHandlingPolicy!
): ProgressiveMediaSource.Factory!
```

Sets an optional `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/LoadErrorHandlingPolicy`.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory!` | This factory, for convenience. |

### setLoadOnlySelectedTracks

```
@CanIgnoreReturnValue
fun setLoadOnlySelectedTracks(loadOnlySelectedTracks: Boolean): ProgressiveMediaSource.Factory!
```

Sets whether to load only the video and image tracks selected by the track selection policy.

Audio, text, and metadata tracks are always loaded regardless of track selection, as they have relatively low bitrate and are more likely to be toggled mid-playback (e.g., changing audio languages or subtitle tracks, or disabling audio during scrubbing mode). Always loading them allows seamlessly switching mid-playback without re-buffering or seeking.

Note that while this saves memory, it may cause additional buffering or latency if unselected video or image tracks are enabled mid-playback, as the player may need to perform additional network requests to fetch the newly selected track data.

The default is `true`.

| Parameters |
|---|---|
| `loadOnlySelectedTracks: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | Whether to load only the video and image tracks selected by the track selection policy, instead of loading all tracks. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/source/ProgressiveMediaSource.Factory!` | This factory, for convenience. |