# CmcdConfiguration.Factory

# 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)

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/androidx/media3/exoplayer/upstream/CmcdConfiguration.Factory "View this page in Java")

<br />

```
interface CmcdConfiguration.Factory
```

<br />

*** ** * ** ***

Factory for[CmcdConfiguration](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration)instances.

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

## Summary

|                                                                    ### Constants                                                                    |
|-----------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `const `[CmcdConfiguration.Factory](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration.Factory)`!` | [DEFAULT](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration.Factory#DEFAULT()) The default factory implementation. |

|                                                    ### Public functions                                                     |
|-----------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [CmcdConfiguration](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration)`?` | [createCmcdConfiguration](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration.Factory#createCmcdConfiguration(androidx.media3.common.MediaItem))`(mediaItem: `[MediaItem](https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem)`!)` Creates a[CmcdConfiguration](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration)based on the provided[MediaItem](https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem). |

## Constants

### DEFAULT

```
const val DEFAULT: CmcdConfiguration.Factory!
```

The default factory implementation.

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

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

## Public functions

### createCmcdConfiguration

```
fun createCmcdConfiguration(mediaItem: MediaItem!): CmcdConfiguration?
```

Creates a[CmcdConfiguration](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration)based on the provided[MediaItem](https://developer.android.com/reference/kotlin/androidx/media3/common/MediaItem).  

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

|                                                           Returns                                                           |
|-----------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [CmcdConfiguration](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration)`?` | A[CmcdConfiguration](https://developer.android.com/reference/kotlin/androidx/media3/exoplayer/upstream/CmcdConfiguration)instance, or`null`to disable CMCD logging. |