# MediaCodecSelector

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

*** ** * ** ***


```
@UnstableApi
public interface MediaCodecSelector
```

<br />

*** ** * ** ***

Selector of `https://developer.android.com/reference/android/media/MediaCodec.html` instances.

## Summary

| ### Constants |
|---|---|
| `default static final https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector` | `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector#DEFAULT()` Default implementation of `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector`, which returns the preferred decoder for the given format. |
| `default static final https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector` | `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector#PREFER_SOFTWARE()` Implementation of `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector`, which returns the `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector#DEFAULT()` list of decoders for the given format, giving higher priority to software decoders. |

| ### Public methods |
|---|---|
| `abstract https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo>` | `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector#getDecoderInfos(java.lang.String,boolean,boolean)( https://developer.android.com/reference/java/lang/String.html mimeType, boolean requiresSecureDecoder, boolean requiresTunnelingDecoder )` Returns a list of decoders that can decode media in the specified MIME type, in priority order. |

## Constants

### DEFAULT

```
default static final MediaCodecSelector DEFAULT
```

Default implementation of `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector`, which returns the preferred decoder for the given format.

### PREFER_SOFTWARE

```
default static final MediaCodecSelector PREFER_SOFTWARE
```

Implementation of `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector`, which returns the `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecSelector#DEFAULT()` list of decoders for the given format, giving higher priority to software decoders.

## Public methods

### getDecoderInfos

```
abstract List<MediaCodecInfo> getDecoderInfos(
    String mimeType,
    boolean requiresSecureDecoder,
    boolean requiresTunnelingDecoder
)
```

Returns a list of decoders that can decode media in the specified MIME type, in priority order.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html mimeType` | The MIME type for which a decoder is required. |
| `boolean requiresSecureDecoder` | Whether a secure decoder is required. |
| `boolean requiresTunnelingDecoder` | Whether a tunneling decoder is required. |

| Returns |
|---|---|
| `https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo>` | An unmodifiable list of `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecInfo`s corresponding to decoders. May be empty. |

| Throws |
|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/mediacodec/MediaCodecUtil.DecoderQueryException` | Thrown if there was an error querying decoders. |