# Package com.google.android.exoplayer2.drm

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

- Class Summary
  Class | Description
  --- | ---
  DefaultDrmSessionManager | A `DrmSessionManager` that supports playbacks using `ExoMediaDrm`.
  DefaultDrmSessionManager.Builder | Builder for `DefaultDrmSessionManager` instances.
  DefaultDrmSessionManagerProvider | Default implementation of `DrmSessionManagerProvider`.
  DrmInitData | Initialization data for one or more DRM schemes.
  DrmInitData.SchemeData | Scheme initialization data.
  DrmSessionEventListener.EventDispatcher | Dispatches events to `DrmSessionEventListeners`.
  DrmUtil | DRM-related utility methods.
  DummyExoMediaDrm | An `ExoMediaDrm` that does not support any protection schemes.
  ErrorStateDrmSession | A `DrmSession` that's in a terminal error state.
  ExoMediaDrm.AppManagedProvider | Provides an `ExoMediaDrm` instance owned by the app.
  ExoMediaDrm.KeyRequest | Contains data used to request keys from a license server.
  ExoMediaDrm.KeyStatus | Defines the status of a key.
  ExoMediaDrm.ProvisionRequest | Contains data to request a certificate from a provisioning server.
  FrameworkCryptoConfig | A `CryptoConfig` for `C.CRYPTO_TYPE_FRAMEWORK`.
  FrameworkMediaDrm | An `ExoMediaDrm` implementation that wraps the framework `MediaDrm`.
  HttpMediaDrmCallback | A `MediaDrmCallback` that makes requests using `DataSource` instances.
  LocalMediaDrmCallback | A `MediaDrmCallback` that provides a fixed response to key requests.
  OfflineLicenseHelper | Helper class to download, renew and release offline licenses.
  WidevineUtil | Utility methods for Widevine.

- Exception Summary
  Exception | Description
  --- | ---
  DefaultDrmSessionManager.MissingSchemeDataException | Signals that the `Format.drmInitData` passed to `DefaultDrmSessionManager.acquireSession(com.google.android.exoplayer2.drm.DrmSessionEventListener.EventDispatcher, com.google.android.exoplayer2.Format)` does not contain scheme data for the required UUID.
  DrmSession.DrmSessionException | Wraps the throwable which is the cause of the error state.
  KeysExpiredException | Thrown when the drm keys loaded into an open session expire.
  MediaDrmCallbackException | Thrown when an error occurs while executing a DRM `key` or `provisioning` request.
  UnsupportedDrmException | Thrown when the requested DRM scheme is not supported.

- Annotation Types Summary
  Annotation Type | Description
  --- | ---
  DefaultDrmSessionManager.Mode | Determines the action to be done after a session acquired.
  DrmSession.State | The state of the DRM session.
  DrmUtil.ErrorSource | Identifies the operation which caused a DRM-related error.
  ExoMediaDrm.KeyRequest.RequestType | Key request types.
  UnsupportedDrmException.Reason | The reason for the exception.