# DefaultMediaCodecAdapterFactory

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

*** ** * ** ***


```
@UnstableApi
class DefaultMediaCodecAdapterFactory : MediaCodecAdapter.Factory
```

<br />

*** ** * ** ***

The default `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory`.

By default, this factory `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#createAdapter(androidx.media3.exoplayer.mediacodec.MediaCodecAdapter.Configuration)``https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecAdapter` instances on devices with API level \>= 31 (Android 12+). For devices with older API versions, the default behavior is to create `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/SynchronousMediaCodecAdapter` instances. The factory offers APIs to force the creation of `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecAdapter` or `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/SynchronousMediaCodecAdapter` instances.

## Summary

| ### Public constructors |
|---|
| `[DefaultMediaCodecAdapterFactory](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#DefaultMediaCodecAdapterFactory())()` **This function is deprecated.** Use `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#DefaultMediaCodecAdapterFactory(android.content.Context)` instead. <br /> |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#DefaultMediaCodecAdapterFactory(android.content.Context)(context: https://developer.android.com/reference/android/content/Context.html!)` Creates the default media codec adapter factory. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#DefaultMediaCodecAdapterFactory(android.content.Context,com.google.common.base.Supplier<android.os.HandlerThread>,com.google.common.base.Supplier<android.os.HandlerThread>)( context: https://developer.android.com/reference/android/content/Context.html!, callbackThreadSupplier: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://developer.android.com/reference/android/os/HandlerThread.html!>?, queueingThreadSupplier: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://developer.android.com/reference/android/os/HandlerThread.html!>? )` Creates the default media codec adapter factory. |

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter!` | `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#createAdapter(androidx.media3.exoplayer.mediacodec.MediaCodecAdapter.Configuration)(configuration: https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Configuration!)` Creates a `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter` instance. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#forceDisableAsynchronous()()` Forces the factory to always create `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/SynchronousMediaCodecAdapter` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#forceEnableAsynchronous()()` Forces this factory to always create `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecAdapter` instances. |
| `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory!` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#setAsyncCryptoFlagEnabled(boolean)(enableAsyncCryptoFlag: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Sets whether to enable `https://developer.android.com/reference/android/media/MediaCodec.html#CONFIGURE_FLAG_USE_CRYPTO_ASYNC` on API 36 and above for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecAdapter` instances. |

### Inherited Constants

From [androidx.media3.exoplayer.mediacodec.MediaCodecAdapter.Factory](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory) `const https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory!` `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory#DEFAULT()`

**This property is deprecated.**

Use `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory#getDefault(android.content.Context)` instead.

<br />

### Inherited functions

From [androidx.media3.exoplayer.mediacodec.MediaCodecAdapter.Factory](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory) `java-static https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory!` `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter.Factory#getDefault(android.content.Context)(context: https://developer.android.com/reference/android/content/Context.html!)`

Returns the default factory that should be used in most cases.

## Public constructors

### DefaultMediaCodecAdapterFactory

```
[DefaultMediaCodecAdapterFactory](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#DefaultMediaCodecAdapterFactory())()
```

> [!CAUTION]
> **This function is deprecated.**   
>
> Use `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/DefaultMediaCodecAdapterFactory#DefaultMediaCodecAdapterFactory(android.content.Context)` instead.

### DefaultMediaCodecAdapterFactory

```
DefaultMediaCodecAdapterFactory(context: Context!)
```

Creates the default media codec adapter factory.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html!` | A `https://developer.android.com/reference/android/content/Context.html`. |

### DefaultMediaCodecAdapterFactory

```
DefaultMediaCodecAdapterFactory(
    context: Context!,
    callbackThreadSupplier: Supplier<HandlerThread!>?,
    queueingThreadSupplier: Supplier<HandlerThread!>?
)
```

Creates the default media codec adapter factory.

| Parameters |
|---|---|
| `context: https://developer.android.com/reference/android/content/Context.html!` | A `https://developer.android.com/reference/android/content/Context.html`. |
| `callbackThreadSupplier: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://developer.android.com/reference/android/os/HandlerThread.html!>?` | A supplier of `https://developer.android.com/reference/android/os/HandlerThread.html` used for `https://developer.android.com/reference/android/media/MediaCodec.html` callbacks invoked when buffers are available. |
| `queueingThreadSupplier: https://guava.dev/releases/snapshot-android/api/docs/com/google/common/base/Supplier.html<https://developer.android.com/reference/android/os/HandlerThread.html!>?` | A supplier of `https://developer.android.com/reference/android/os/HandlerThread.html` to use for queueing buffers. |

## Public functions

### createAdapter

```
fun createAdapter(configuration: MediaCodecAdapter.Configuration!): MediaCodecAdapter!
```

Creates a `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/MediaCodecAdapter` instance.

| Throws |
|---|---|
| `https://developer.android.com/reference/java/io/IOException.html` |   |

### forceDisableAsynchronous

```
@CanIgnoreReturnValue
fun forceDisableAsynchronous(): DefaultMediaCodecAdapterFactory!
```

Forces the factory to always create `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/SynchronousMediaCodecAdapter` instances.

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

### forceEnableAsynchronous

```
@CanIgnoreReturnValue
fun forceEnableAsynchronous(): DefaultMediaCodecAdapterFactory!
```

Forces this factory to always create `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecAdapter` instances.

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

### setAsyncCryptoFlagEnabled

```
@CanIgnoreReturnValue
fun setAsyncCryptoFlagEnabled(enableAsyncCryptoFlag: Boolean): DefaultMediaCodecAdapterFactory!
```

Sets whether to enable `https://developer.android.com/reference/android/media/MediaCodec.html#CONFIGURE_FLAG_USE_CRYPTO_ASYNC` on API 36 and above for `https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/mediacodec/AsynchronousMediaCodecAdapter` instances. The default is `true`.

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