# androidx.media3.exoplayer.drm

*** ** * ** ***

## Annotations

|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Mode` | Determines the action to be done after a session acquired. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession.State` | The state of the DRM session. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmUtil.ErrorSource` | Identifies the operation which caused a DRM-related error. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.KeyRequest.RequestType` | Key request types. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/UnsupportedDrmException.Reason` | The reason for the exception. |

## Interfaces

|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession` | A DRM session. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener` | Listener of `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager` events. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager` | Manages a DRM session. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager.DrmSessionReference` | Represents a single reference count of a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession`, while deliberately not giving access to the underlying session. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManagerProvider` | A provider to obtain a `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager` suitable for playing the content described by a `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm` | Used to obtain keys for decrypting protected media streams. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.OnEventListener` | Called when a DRM event occurs. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.OnExpirationUpdateListener` | Called when a session expiration update occurs. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.OnKeyStatusChangeListener` | Called when the keys in a DRM session change state. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.Provider` | Provider for `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm` instances. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback` | Performs `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm` key and provisioning requests. |

## Classes

|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager` | A `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManager` that supports playbacks using `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.Builder` | Builder for `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager` instances. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManagerProvider` | Default implementation of `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionManagerProvider`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener.EventDispatcher` | Dispatches events to `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSessionEventListener`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmUtil` | DRM-related utility methods. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DummyExoMediaDrm` | An `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm` that does not support any protection schemes. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ErrorStateDrmSession` | A `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession` that's in a terminal error state. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.AppManagedProvider` | Provides an `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm` instance owned by the app. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.KeyRequest` | Contains data used to request keys from a license server. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.KeyStatus` | Defines the status of a key. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm.ProvisionRequest` | Contains data to request a certificate from a provisioning server. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/FrameworkCryptoConfig` | A `https://developer.android.com/reference/androidx/media3/decoder/CryptoConfig` for `https://developer.android.com/reference/androidx/media3/common/C#CRYPTO_TYPE_FRAMEWORK()`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/FrameworkMediaDrm` | An `https://developer.android.com/reference/androidx/media3/exoplayer/drm/ExoMediaDrm` implementation that wraps the framework `https://developer.android.com/reference/android/media/MediaDrm.html`. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/HttpMediaDrmCallback` | A `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback` that makes requests using `https://developer.android.com/reference/androidx/media3/datasource/DataSource` instances. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/KeyRequestInfo` | Information related to a completed DRM key request operation. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/KeyRequestInfo.Builder` | Builder for `https://developer.android.com/reference/androidx/media3/exoplayer/drm/KeyRequestInfo` instances. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/LocalMediaDrmCallback` | A `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback` that provides a fixed response to key requests. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` | Response data from the `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback` requests. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response.Builder` | Builder for `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback.Response` instances. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/OfflineLicenseHelper` | Helper class to download, renew and release offline licenses. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/WidevineUtil` | Utility methods for Widevine. |

## Exceptions

|---|---|
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager.MissingSchemeDataException` | Signals that the `https://developer.android.com/reference/androidx/media3/common/Format#drmInitData()` passed to `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DefaultDrmSessionManager#acquireSession(androidx.media3.exoplayer.drm.DrmSessionEventListener.EventDispatcher,androidx.media3.common.Format)` does not contain scheme data for the required UUID. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/DrmSession.DrmSessionException` | Wraps the throwable which is the cause of the error state. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/KeysExpiredException` | Thrown when the drm keys loaded into an open session expire. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallbackException` | Thrown when an error occurs while executing a DRM `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback#executeKeyRequest(java.util.UUID,androidx.media3.exoplayer.drm.ExoMediaDrm.KeyRequest)` or `https://developer.android.com/reference/androidx/media3/exoplayer/drm/MediaDrmCallback#executeProvisionRequest(java.util.UUID,androidx.media3.exoplayer.drm.ExoMediaDrm.ProvisionRequest)` request. |
| `https://developer.android.com/reference/androidx/media3/exoplayer/drm/UnsupportedDrmException` | Thrown when the requested DRM scheme is not supported. |