# CmcdConfiguration.Factory

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/upstream/CmcdConfiguration.java+class:androidx.media3.exoplayer.upstream.CmcdConfiguration.Factory)

*** ** * ** ***


```
public interface CmcdConfiguration.Factory
```

<br />

*** ** * ** ***

Factory for `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration` instances.

Implementations must not make assumptions about which thread called their methods; and must be thread-safe.

## Summary

| ### Constants |
|---|---|
| `default static final https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration.Factory` | `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration.Factory#DEFAULT()` The default factory implementation. |

| ### Public methods |
|---|---|
| `abstract @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration` | `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration.Factory#createCmcdConfiguration(androidx.media3.common.MediaItem)(https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem)` Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration` based on the provided `https://developer.android.com/reference/androidx/media3/common/MediaItem`. |

## Constants

### DEFAULT

```
default static final CmcdConfiguration.Factory DEFAULT
```

The default factory implementation.

It creates a `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration` by generating a random session ID and using the content ID from `https://developer.android.com/reference/androidx/media3/common/MediaItem#mediaId()` (or `https://developer.android.com/reference/androidx/media3/common/MediaItem#DEFAULT_MEDIA_ID()` if the media item does not have a `https://developer.android.com/reference/androidx/media3/common/MediaItem#mediaId()` defined).

It also utilises a default `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration.RequestConfig` implementation that enables all available keys, provides empty custom data, and sets the maximum requested bitrate to `https://developer.android.com/reference/androidx/media3/common/C#RATE_UNSET_INT()`.

## Public methods

### createCmcdConfiguration

```
abstract @Nullable CmcdConfiguration createCmcdConfiguration(MediaItem mediaItem)
```

Creates a `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration` based on the provided `https://developer.android.com/reference/androidx/media3/common/MediaItem`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/MediaItem mediaItem` | The `https://developer.android.com/reference/androidx/media3/common/MediaItem` from which to create the CMCD configuration. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration` | A `https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration` instance, or `null` to disable CMCD logging. |