Package com.google.android.exoplayer2.mediacodec

## Class DefaultMediaCodecAdapterFactory

- java.lang.Object
- - com.google.android.exoplayer2.mediacodec.DefaultMediaCodecAdapterFactory

- All Implemented Interfaces:
    `MediaCodecAdapter.Factory`

      public final class DefaultMediaCodecAdapterFactory
      extends Object
      implements MediaCodecAdapter.Factory

  The default `MediaCodecAdapter.Factory`.

  By default, this factory `creates` `AsynchronousMediaCodecAdapter` instances on devices with API level >= 31 (Android 12+). For devices with older API versions, the default behavior is to create `SynchronousMediaCodecAdapter` instances. The factory offers APIs to force the creation of `AsynchronousMediaCodecAdapter` (applicable for devices with API >= 23) or `SynchronousMediaCodecAdapter` instances.

- - ### Field Summary

    - ### Fields inherited from interface com.google.android.exoplayer2.mediacodec.MediaCodecAdapter.Factory

      `DEFAULT`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DefaultMediaCodecAdapterFactory()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `MediaCodecAdapter` | `createAdapter​(MediaCodecAdapter.Configuration configuration)` | Creates a `MediaCodecAdapter` instance.
    `void` | `experimentalSetSynchronizeCodecInteractionsWithQueueingEnabled​(boolean enabled)` | Enable synchronizing codec interactions with asynchronous buffer queueing.
    `DefaultMediaCodecAdapterFactory` | `forceDisableAsynchronous()` | Forces the factory to always create `SynchronousMediaCodecAdapter` instances.
    `DefaultMediaCodecAdapterFactory` | `forceEnableAsynchronous()` | Forces this factory to always create `AsynchronousMediaCodecAdapter` instances, provided the device API level is >= 23.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DefaultMediaCodecAdapterFactory

          public DefaultMediaCodecAdapterFactory()

  - ### Method Detail

    - #### forceEnableAsynchronous

          @CanIgnoreReturnValue
          public DefaultMediaCodecAdapterFactory forceEnableAsynchronous()

      Forces this factory to always create `AsynchronousMediaCodecAdapter` instances, provided the device API level is >= 23. For devices with API level < 23, the factory will create `SynchronousMediaCodecAdapters`.
      Returns:
        This factory, for convenience.

    - #### forceDisableAsynchronous

          @CanIgnoreReturnValue
          public DefaultMediaCodecAdapterFactory forceDisableAsynchronous()

      Forces the factory to always create `SynchronousMediaCodecAdapter` instances.
      Returns:
        This factory, for convenience.

    - #### experimentalSetSynchronizeCodecInteractionsWithQueueingEnabled

          public void experimentalSetSynchronizeCodecInteractionsWithQueueingEnabled​(boolean enabled)

      Enable synchronizing codec interactions with asynchronous buffer queueing.

      This method is experimental, and will be renamed or removed in a future release.

      Parameters:
        `enabled` - Whether codec interactions will be synchronized with asynchronous buffer queueing.

    - #### createAdapter

          public MediaCodecAdapter createAdapter​(MediaCodecAdapter.Configuration configuration)
                                          throws IOException

      Description copied from interface: `MediaCodecAdapter.Factory`
      Creates a `MediaCodecAdapter` instance.
      Specified by:
        `createAdapter` in interface `MediaCodecAdapter.Factory`
      Throws:
        `IOException`