# ExternallyLoadedImageDecoder

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/image/ExternallyLoadedImageDecoder.java+class:androidx.media3.exoplayer.image.ExternallyLoadedImageDecoder)

*** ** * ** ***


```
@UnstableApi
public final class ExternallyLoadedImageDecoder implements ImageDecoder
```

<br />

*** ** * ** ***

An `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoder` for externally loaded images.

| See also |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/MimeTypes#APPLICATION_EXTERNALLY_LOADED_IMAGE()` |   |

## Summary

| ### Nested types |
|---|
| `public interface https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder.BitmapResolver` The resolver that resolves an external image request to a Bitmap. |
| `public final class https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder.ExternalImageRequest` A data class providing information about the external image request. |
| `public final class https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder.Factory implements https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoder.Factory` A `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoder.Factory` for `https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder` instances. |

| ### Public methods |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer` | `https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder#dequeueInputBuffer()()` Dequeues the next input buffer to be filled and queued to the decoder. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageOutputBuffer` | `https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder#dequeueOutputBuffer()()` Returns the next decoded `https://developer.android.com/reference/android/graphics/Bitmap.html` in an `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageOutputBuffer`. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder#flush()()` Flushes the decoder. |
| `https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder#getName()()` Returns the name of the decoder. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder#queueInputBuffer(androidx.media3.decoder.DecoderInputBuffer)(https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer inputBuffer)` Queues an `https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer` to the decoder. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder#release()()` Releases the decoder. |
| `void` | `https://developer.android.com/reference/androidx/media3/exoplayer/image/ExternallyLoadedImageDecoder#setOutputStartTimeUs(long)(long outputStartTimeUs)` Sets the timestamp from which output buffers should be produced, in microseconds. |

| ### Inherited methods |
|---|
| From [androidx.media3.decoder.Decoder](https://developer.android.com/reference/androidx/media3/decoder/Decoder) |---|---| | `abstract @https://developer.android.com/reference/androidx/annotation/Nullable O` | `https://developer.android.com/reference/androidx/media3/decoder/Decoder#dequeueOutputBuffer()()` Dequeues the next output buffer from the decoder. | | `abstract void` | `https://developer.android.com/reference/androidx/media3/decoder/Decoder#queueInputBuffer(I)(I inputBuffer)` Queues an input buffer to the decoder. | | `void` | `https://developer.android.com/reference/androidx/media3/decoder/Decoder#setCallback(androidx.media3.decoder.Decoder.Callback,java.util.concurrent.Executor)(https://developer.android.com/reference/androidx/media3/decoder/Decoder.Callback callback, https://developer.android.com/reference/java/util/concurrent/Executor.html executor)` Sets the callback and executor. | |

## Public methods

### dequeueInputBuffer

```
public @Nullable DecoderInputBuffer dequeueInputBuffer()
```

Dequeues the next input buffer to be filled and queued to the decoder.

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer` | The input buffer, which will have been cleared, or null if a buffer isn't available. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/decoder/Decoder` | If a decoder error has occurred. |

### dequeueOutputBuffer

```
public @Nullable ImageOutputBuffer dequeueOutputBuffer()
```

Returns the next decoded `https://developer.android.com/reference/android/graphics/Bitmap.html` in an `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageOutputBuffer`.

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageOutputBuffer` | The output buffer, or `null` if an output buffer isn't available. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoderException` | If a decoder error has occurred. |

### flush

```
public void flush()
```

Flushes the decoder. Ownership of dequeued input buffers is returned to the decoder. The caller is still responsible for releasing any dequeued output buffers.

### getName

```
public String getName()
```

Returns the name of the decoder.

| Returns |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html` | The name of the decoder. |

### queueInputBuffer

```
public void queueInputBuffer(DecoderInputBuffer inputBuffer)
```

Queues an `https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer` to the decoder.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/decoder/DecoderInputBuffer inputBuffer` | The input buffer containing the byte data corresponding to the image(s). |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/image/ImageDecoderException` | If a decoder error has occurred. |

### release

```
public void release()
```

Releases the decoder. Must be called when the decoder is no longer needed.

### setOutputStartTimeUs

```
public void setOutputStartTimeUs(long outputStartTimeUs)
```

Sets the timestamp from which output buffers should be produced, in microseconds.

Any decoded buffer with a timestamp less than `outputStartTimeUs` should be skipped by the implementation and not made available via `https://developer.android.com/reference/androidx/media3/decoder/Decoder#dequeueOutputBuffer()`.

This method must only be called before `https://developer.android.com/reference/androidx/media3/decoder/Decoder#queueInputBuffer(I)` initially or after `https://developer.android.com/reference/androidx/media3/decoder/Decoder#flush()`.

| Parameters |
|---|---|
| `long outputStartTimeUs` | The time from which output buffer should be produced, in microseconds. |