Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Constants](https://developer.android.com/reference/android/media/MediaCodecList#constants) \| [Ctors](https://developer.android.com/reference/android/media/MediaCodecList#pubctors) \| [Methods](https://developer.android.com/reference/android/media/MediaCodecList#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/media/MediaCodecList#inhmethods)

# MediaCodecList

*** ** * ** ***

` public final class MediaCodecList `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.media.MediaCodecList |

<br />

*** ** * ** ***

Allows you to enumerate available codecs, each specified as a `https://developer.android.com/reference/android/media/MediaCodecInfo` object, find a codec supporting a given format and query the capabilities of a given codec.

See `https://developer.android.com/reference/android/media/MediaCodecInfo` for sample usage.

## Summary

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/media/MediaCodecList#ALL_CODECS` Use in `https://developer.android.com/reference/android/media/MediaCodecList#MediaCodecList(int)` to enumerate all codecs, even ones that are not suitable for regular (buffer-to-buffer) decoding or encoding. |
| `int` | `https://developer.android.com/reference/android/media/MediaCodecList#REGULAR_CODECS` Use in `https://developer.android.com/reference/android/media/MediaCodecList#MediaCodecList(int)` to enumerate only codecs that are suitable for regular (buffer-to-buffer) decoding or encoding. |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/media/MediaCodecList#MediaCodecList(int)(int kind) ` Create a list of media-codecs of a specific kind. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/media/MediaCodecList#findDecoderForFormat(android.media.MediaFormat)(https://developer.android.com/reference/android/media/MediaFormat format) ` Find a decoder supporting a given `https://developer.android.com/reference/android/media/MediaFormat` in the list of media-codecs. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/android/media/MediaCodecList#findEncoderForFormat(android.media.MediaFormat)(https://developer.android.com/reference/android/media/MediaFormat format) ` Find an encoder supporting a given `https://developer.android.com/reference/android/media/MediaFormat` in the list of media-codecs. |
| ` static int` | ` https://developer.android.com/reference/android/media/MediaCodecList#getCodecCount()() ` *This method was deprecated in API level 21. Use `https://developer.android.com/reference/android/media/MediaCodecList#getCodecInfos()` instead.* |
| ` static https://developer.android.com/reference/android/media/MediaCodecInfo` | ` https://developer.android.com/reference/android/media/MediaCodecList#getCodecInfoAt(int)(int index) ` *This method was deprecated in API level 21. Use `https://developer.android.com/reference/android/media/MediaCodecList#getCodecInfos()` instead.* |
| ` https://developer.android.com/reference/android/media/MediaCodecInfo` | ` https://developer.android.com/reference/android/media/MediaCodecList#getCodecInfos()() ` Returns the list of `https://developer.android.com/reference/android/media/MediaCodecInfo` objects for the list of media-codecs. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.

## Constants

### ALL_CODECS

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int ALL_CODECS
```

Use in `https://developer.android.com/reference/android/media/MediaCodecList#MediaCodecList(int)` to enumerate all codecs, even ones that are not suitable for regular (buffer-to-buffer) decoding or encoding. These include codecs, for example, that only work with special input or output surfaces, such as secure-only or tunneled-only codecs.

<br />

**See also:**

- `https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities#isFormatSupported(android.media.MediaFormat)`
- `https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities#FEATURE_SecurePlayback`
- `https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities#FEATURE_TunneledPlayback`

Constant Value: 1 (0x00000001)

### REGULAR_CODECS

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int REGULAR_CODECS
```

Use in `https://developer.android.com/reference/android/media/MediaCodecList#MediaCodecList(int)` to enumerate only codecs that are suitable for regular (buffer-to-buffer) decoding or encoding. *NOTE:* These are the codecs that are returned prior to API 21, using the now deprecated static methods.

<br />

Constant Value: 0 (0x00000000)

## Public constructors

### MediaCodecList

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public MediaCodecList (int kind)
```

Create a list of media-codecs of a specific kind.

<br />

| Parameters ||
|---|---|
| `kind` | `int`: Either `https://developer.android.com/reference/android/media/MediaCodecList#REGULAR_CODECS` or `https://developer.android.com/reference/android/media/MediaCodecList#ALL_CODECS`. <br /> |

## Public methods

### findDecoderForFormat

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String findDecoderForFormat (MediaFormat format)
```

Find a decoder supporting a given `https://developer.android.com/reference/android/media/MediaFormat` in the list of media-codecs.

**Note:** On `https://developer.android.com/reference/android/os/Build.VERSION_CODES#LOLLIPOP`, `format` must not contain a [frame rate](https://developer.android.com/reference/android/media/MediaFormat#KEY_FRAME_RATE). Use `format.setString(MediaFormat.KEY_FRAME_RATE, null)` to clear any existing frame rate setting in the format.

<br />

| Parameters ||
|---|---|
| `format` | `MediaFormat`: A decoder media format with optional feature directives. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | the name of a decoder that supports the given format and feature requests, or `null` if no such codec has been found. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if format is not a valid media format. |
| `https://developer.android.com/reference/java/lang/NullPointerException` | if format is null. |

**See also:**

- `https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities#isFormatSupported(android.media.MediaFormat)`

### findEncoderForFormat

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String findEncoderForFormat (MediaFormat format)
```

Find an encoder supporting a given `https://developer.android.com/reference/android/media/MediaFormat` in the list of media-codecs.

**Note:** On `https://developer.android.com/reference/android/os/Build.VERSION_CODES#LOLLIPOP`, `format` must not contain a [frame rate](https://developer.android.com/reference/android/media/MediaFormat#KEY_FRAME_RATE). Use `format.setString(MediaFormat.KEY_FRAME_RATE, null)` to clear any existing frame rate setting in the format.

<br />

| Parameters ||
|---|---|
| `format` | `MediaFormat`: An encoder media format with optional feature directives. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | the name of an encoder that supports the given format and feature requests, or `null` if no such codec has been found. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if format is not a valid media format. |
| `https://developer.android.com/reference/java/lang/NullPointerException` | if format is null. |

**See also:**

- `https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities#isFormatSupported(android.media.MediaFormat)`

### getCodecCount

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static int getCodecCount ()
```

<br />

**This method was deprecated in API level 21.**   

Use `https://developer.android.com/reference/android/media/MediaCodecList#getCodecInfos()` instead.

Count the number of available (regular) codecs.

<br />

| Returns ||
|---|---|
| `int` | <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/MediaCodecList#REGULAR_CODECS`

### getCodecInfoAt

Added in [API level 16](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)   
Deprecated in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static MediaCodecInfo getCodecInfoAt (int index)
```

<br />

**This method was deprecated in API level 21.**   

Use `https://developer.android.com/reference/android/media/MediaCodecList#getCodecInfos()` instead.

Return the `https://developer.android.com/reference/android/media/MediaCodecInfo` object for the codec at the given `index` in the regular list.

<br />

| Parameters ||
|---|---|
| `index` | `int` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaCodecInfo` | <br /> |

**See also:**

- `https://developer.android.com/reference/android/media/MediaCodecList#REGULAR_CODECS`

### getCodecInfos

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public MediaCodecInfo[] getCodecInfos ()
```

Returns the list of `https://developer.android.com/reference/android/media/MediaCodecInfo` objects for the list of media-codecs.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/MediaCodecInfo` | <br /> |