# AssetLoader

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

*** ** * ** ***

<br />

```
@UnstableApi
interface AssetLoader
```

<br />

Known direct subclasses [ExoPlayerAssetLoader](https://developer.android.com/reference/kotlin/androidx/media3/transformer/ExoPlayerAssetLoader), [ImageAssetLoader](https://developer.android.com/reference/kotlin/androidx/media3/transformer/ImageAssetLoader), [MediaProjectionAssetLoader](https://developer.android.com/reference/kotlin/androidx/media3/transformer/MediaProjectionAssetLoader), [RawAssetLoader](https://developer.android.com/reference/kotlin/androidx/media3/transformer/RawAssetLoader), [SurfaceAssetLoader](https://developer.android.com/reference/kotlin/androidx/media3/transformer/SurfaceAssetLoader), [TextureAssetLoader](https://developer.android.com/reference/kotlin/androidx/media3/transformer/TextureAssetLoader)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/ExoPlayerAssetLoader` | An `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader` implementation that uses an `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/ExoPlayer` to load samples. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/ImageAssetLoader` | An `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader` implementation that loads images into `https://developer.android.com/reference/android/graphics/Bitmap.html` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/MediaProjectionAssetLoader` | Asset loader that provides video from `https://developer.android.com/reference/android/media/projection/MediaProjection.html`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/RawAssetLoader` | An `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader` implementation that loads raw audio and/or video data. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/SurfaceAssetLoader` | Asset loader that outputs video data passed to its input `https://developer.android.com/reference/android/view/Surface.html`. |
| `https://developer.android.com/reference/kotlin/androidx/media3/transformer/TextureAssetLoader` | **This class is deprecated.** Use `https://developer.android.com/reference/kotlin/androidx/media3/transformer/RawAssetLoader`. <br /> |

*** ** * ** ***

Provides media data to a `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Transformer`.

The output samples can be encoded or decoded.

Only audio and video samples are supported. Both audio and video tracks can be provided by a single asset loader, but outputting multiple tracks of the same type is not supported.

An asset loader is responsible for `https://developer.android.com/reference/kotlin/androidx/media3/transformer/EditedMediaItem.Builder#setRemoveAudio(boolean)` or `https://developer.android.com/reference/kotlin/androidx/media3/transformer/EditedMediaItem.Builder#setRemoveVideo(boolean)` if requested.

If `https://developer.android.com/reference/kotlin/androidx/media3/transformer/EditedMediaItem.Builder#setFlattenForSlowMotion(boolean)` is requested, the asset loader should flatten the video track for media containing slow motion markers. This is usually done prior to decoding. The audio samples are flattened after they are output by the `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader`, because this is done on decoded samples.

## Summary

| ### Nested types |
|---|
| `class https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader.CompositionSettings` Customizations set on the `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Composition` that are needed when `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader` each of the `https://developer.android.com/reference/kotlin/androidx/media3/transformer/EditedMediaItem` in the `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Composition`. |
| `interface https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader.Factory` A factory for `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader` instances. |
| `interface https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader.Listener` A listener of `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader` events. |
| `@https://developer.android.com/reference/java/lang/annotation/Documented.html @https://developer.android.com/reference/java/lang/annotation/Retention.html(value = https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html#SOURCE) @https://developer.android.com/reference/java/lang/annotation/Target.html(value = https://developer.android.com/reference/java/lang/annotation/ElementType.html#TYPE_USE) @https://developer.android.com/reference/kotlin/androidx/annotation/IntDef(flag = true, value = ) annotation https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader.SupportedOutputTypes` Supported output types of an asset loader. |

| ### Constants |
|---|---|
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader#SUPPORTED_OUTPUT_TYPE_DECODED() = 2` Indicates that the asset loader can output decoded samples. |
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader#SUPPORTED_OUTPUT_TYPE_ENCODED() = 1` Indicates that the asset loader can output encoded samples. |

| ### Public functions |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableMap.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html!, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!>!` | `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader#getDecoderNames()()` Return the used decoders' names. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `@https://developer.android.com/reference/kotlin/androidx/media3/transformer/Transformer.ProgressState https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader#getProgress(androidx.media3.transformer.ProgressHolder)(progressHolder: https://developer.android.com/reference/kotlin/androidx/media3/transformer/ProgressHolder!)` Returns the current `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Transformer.ProgressState` and updates `progressHolder` with the current progress if it is `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Transformer#PROGRESS_STATE_AVAILABLE()`. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader#release()()` Stops loading data and releases all resources associated with the asset loader. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/media3/transformer/AssetLoader#start()()` Starts the asset loader. |

## Constants

### SUPPORTED_OUTPUT_TYPE_DECODED

```
const val SUPPORTED_OUTPUT_TYPE_DECODED = 2: Int
```

Indicates that the asset loader can output decoded samples.

### SUPPORTED_OUTPUT_TYPE_ENCODED

```
const val SUPPORTED_OUTPUT_TYPE_ENCODED = 1: Int
```

Indicates that the asset loader can output encoded samples.

## Public functions

### getDecoderNames

```
fun getDecoderNames(): ImmutableMap<Int!, String!>!
```

Return the used decoders' names.

| Returns |
|---|---|
| `https://guava.dev/releases/snapshot-android/api/docs/com/google/common/collect/ImmutableMap.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html!, https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html!>!` | The decoders' names keyed by `https://developer.android.com/reference/kotlin/androidx/media3/common/C.TrackType`. |

### getProgress

```
@Transformer.ProgressState
fun getProgress(progressHolder: ProgressHolder!): Int
```

Returns the current `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Transformer.ProgressState` and updates `progressHolder` with the current progress if it is `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Transformer#PROGRESS_STATE_AVAILABLE()`.

| Parameters |
|---|---|
| `progressHolder: https://developer.android.com/reference/kotlin/androidx/media3/transformer/ProgressHolder!` | A `https://developer.android.com/reference/kotlin/androidx/media3/transformer/ProgressHolder`, updated to hold the percentage progress if `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Transformer#PROGRESS_STATE_AVAILABLE()`. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The `https://developer.android.com/reference/kotlin/androidx/media3/transformer/Transformer.ProgressState`. |

### release

```
fun release(): Unit
```

Stops loading data and releases all resources associated with the asset loader.

### start

```
fun start(): Unit
```

Starts the asset loader.