# DrmInitData

Artifact: [androidx.media3:media3-common](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/common/DrmInitData.java+class:androidx.media3.common.DrmInitData)

*** ** * ** ***


```
@UnstableApi
public final class DrmInitData implements Comparator<DrmInitData.SchemeData>, Parcelable
```

<br />

*** ** * ** ***

Initialization data for one or more DRM schemes.

## Summary

| ### Nested types |
|---|
| `public final class https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData implements https://developer.android.com/reference/android/os/Parcelable.html` Scheme initialization data. |

| ### Constants |
|---|---|
| `static final https://developer.android.com/reference/android/os/Parcelable.Creator.html<https://developer.android.com/reference/androidx/media3/common/DrmInitData>` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#CREATOR()` |

| ### Public fields |
|---|---|
| `final int` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#schemeDataCount()` Number of `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData`s. |
| `final @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#schemeType()` The protection scheme type, or null if not applicable or unknown. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData#DrmInitData(androidx.media3.common.DrmInitData.SchemeData...)(DrmInitData.SchemeData[] schemeDatas)` |
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData#DrmInitData(java.util.List<androidx.media3.common.DrmInitData.SchemeData>)(https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData> schemeDatas)` |
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData#DrmInitData(java.lang.String,androidx.media3.common.DrmInitData.SchemeData...)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html schemeType, DrmInitData.SchemeData[] schemeDatas )` |
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData#DrmInitData(java.lang.String,java.util.List<androidx.media3.common.DrmInitData.SchemeData>)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html schemeType, https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData> schemeDatas )` |

| ### Public methods |
|---|---|
| `int` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#compare(androidx.media3.common.DrmInitData.SchemeData,androidx.media3.common.DrmInitData.SchemeData)(https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData first, https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData second)` |
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#copyWithSchemeType(java.lang.String)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html schemeType)` Returns a copy with the specified protection scheme type. |
| `static @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/DrmInitData` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#createSessionCreationData(androidx.media3.common.DrmInitData,androidx.media3.common.DrmInitData)( @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/DrmInitData manifestData, @https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/DrmInitData mediaData )` Merges `https://developer.android.com/reference/androidx/media3/common/DrmInitData` obtained from a media manifest and a media stream. |
| `int` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#describeContents()()` |
| `boolean` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#equals(java.lang.Object)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Object.html obj)` |
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#get(int)(int index)` Retrieves the `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData` at a given index. |
| `int` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#hashCode()()` |
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#merge(androidx.media3.common.DrmInitData)(https://developer.android.com/reference/androidx/media3/common/DrmInitData drmInitData)` Returns an instance containing the `https://developer.android.com/reference/androidx/media3/common/DrmInitData#schemeDatas()` from both this and `other`. |
| `void` | `https://developer.android.com/reference/androidx/media3/common/DrmInitData#writeToParcel(android.os.Parcel,int)(https://developer.android.com/reference/android/os/Parcel.html dest, int flags)` |

### Inherited Constants

From [android.os.Parcelable](https://developer.android.com/reference/android/os/Parcelable.html) `static final int` `https://developer.android.com/reference/android/os/Parcelable.html#CONTENTS_FILE_DESCRIPTOR = 1` `static final int` `https://developer.android.com/reference/android/os/Parcelable.html#PARCELABLE_WRITE_RETURN_VALUE = 1`

### Inherited methods

From [java.util.Comparator](https://developer.android.com/reference/java/util/Comparator.html) `static https://developer.android.com/reference/java/util/Comparator.html<T>` `<T, U extends https://developer.android.com/reference/java/lang/Comparable.html<U>> https://developer.android.com/reference/java/util/Comparator.html#comparing(java.util.function.Function&lt;? super T,? extends U&gt;)(https://developer.android.com/reference/java/util/function/Function.html<T, U> keyExtractor)` `static https://developer.android.com/reference/java/util/Comparator.html<T>` `<T> https://developer.android.com/reference/java/util/Comparator.html#comparingDouble(java.util.function.ToDoubleFunction&lt;? super T&gt;)(https://developer.android.com/reference/java/util/function/ToDoubleFunction.html<T> keyExtractor)` `static https://developer.android.com/reference/java/util/Comparator.html<T>` `<T> https://developer.android.com/reference/java/util/Comparator.html#comparingInt(java.util.function.ToIntFunction&lt;? super T&gt;)(https://developer.android.com/reference/java/util/function/ToIntFunction.html<T> keyExtractor)` `static https://developer.android.com/reference/java/util/Comparator.html<T>` `<T> https://developer.android.com/reference/java/util/Comparator.html#comparingLong(java.util.function.ToLongFunction&lt;? super T&gt;)(https://developer.android.com/reference/java/util/function/ToLongFunction.html<T> keyExtractor)` `static https://developer.android.com/reference/java/util/Comparator.html<T>` `<T extends https://developer.android.com/reference/java/lang/Comparable.html<T>> https://developer.android.com/reference/java/util/Comparator.html#naturalOrder()()` `static https://developer.android.com/reference/java/util/Comparator.html<T>` `<T> https://developer.android.com/reference/java/util/Comparator.html#nullsFirst(java.util.Comparator&lt;? super T&gt;)(https://developer.android.com/reference/java/util/Comparator.html<T> comparator)` `static https://developer.android.com/reference/java/util/Comparator.html<T>` `<T> https://developer.android.com/reference/java/util/Comparator.html#nullsLast(java.util.Comparator&lt;? super T&gt;)(https://developer.android.com/reference/java/util/Comparator.html<T> comparator)` `static https://developer.android.com/reference/java/util/Comparator.html<T>` `<T extends https://developer.android.com/reference/java/lang/Comparable.html<T>> https://developer.android.com/reference/java/util/Comparator.html#reverseOrder()()` `https://developer.android.com/reference/java/util/Comparator.html<T>` `https://developer.android.com/reference/java/util/Comparator.html#reversed()()` `https://developer.android.com/reference/java/util/Comparator.html<T>` `https://developer.android.com/reference/java/util/Comparator.html#thenComparing(java.util.Comparator&lt;? super T&gt;)(https://developer.android.com/reference/java/util/Comparator.html<T> other)` `https://developer.android.com/reference/java/util/Comparator.html<T>` `https://developer.android.com/reference/java/util/Comparator.html#thenComparingDouble(java.util.function.ToDoubleFunction&lt;? super T&gt;)(https://developer.android.com/reference/java/util/function/ToDoubleFunction.html<T> keyExtractor)` `https://developer.android.com/reference/java/util/Comparator.html<T>` `https://developer.android.com/reference/java/util/Comparator.html#thenComparingInt(java.util.function.ToIntFunction&lt;? super T&gt;)(https://developer.android.com/reference/java/util/function/ToIntFunction.html<T> keyExtractor)` `https://developer.android.com/reference/java/util/Comparator.html<T>` `https://developer.android.com/reference/java/util/Comparator.html#thenComparingLong(java.util.function.ToLongFunction&lt;? super T&gt;)(https://developer.android.com/reference/java/util/function/ToLongFunction.html<T> keyExtractor)`

## Constants

### CREATOR

```
public static final Parcelable.Creator<DrmInitData> CREATOR
```

## Public fields

### schemeDataCount

```
public final int schemeDataCount
```

Number of `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData`s.

### schemeType

```
public final @Nullable String schemeType
```

The protection scheme type, or null if not applicable or unknown.

## Public constructors

### DrmInitData

```
public DrmInitData(DrmInitData.SchemeData[] schemeDatas)
```

| Parameters |
|---|---|
| `DrmInitData.SchemeData[] schemeDatas` | Scheme initialization data for possibly multiple DRM schemes. |

### DrmInitData

```
public DrmInitData(List<DrmInitData.SchemeData> schemeDatas)
```

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData> schemeDatas` | Scheme initialization data for possibly multiple DRM schemes. |

### DrmInitData

```
public DrmInitData(
    @Nullable String schemeType,
    DrmInitData.SchemeData[] schemeDatas
)
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html schemeType` | See `https://developer.android.com/reference/androidx/media3/common/DrmInitData#schemeType()`. |
| `DrmInitData.SchemeData[] schemeDatas` | Scheme initialization data for possibly multiple DRM schemes. |

### DrmInitData

```
public DrmInitData(
    @Nullable String schemeType,
    List<DrmInitData.SchemeData> schemeDatas
)
```

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html schemeType` | See `https://developer.android.com/reference/androidx/media3/common/DrmInitData#schemeType()`. |
| `https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData> schemeDatas` | Scheme initialization data for possibly multiple DRM schemes. |

## Public methods

### compare

```
public int compare(DrmInitData.SchemeData first, DrmInitData.SchemeData second)
```

### copyWithSchemeType

```
public DrmInitData copyWithSchemeType(@Nullable String schemeType)
```

Returns a copy with the specified protection scheme type.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html schemeType` | A protection scheme type. May be null. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData` | A copy with the specified protection scheme type. |

### createSessionCreationData

```
public static @Nullable DrmInitData createSessionCreationData(
    @Nullable DrmInitData manifestData,
    @Nullable DrmInitData mediaData
)
```

Merges `https://developer.android.com/reference/androidx/media3/common/DrmInitData` obtained from a media manifest and a media stream.

The result is generated as follows.

1. Include all `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData`s from `manifestData` where `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData#hasData()` is true.
2. Include all `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData`s in `mediaData` where `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData#hasData()` is true and for which we did not include an entry from the manifest targeting the same UUID.
3. If available, the scheme type from the manifest is used. If not, the scheme type from the media is used.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/DrmInitData manifestData` | DRM session acquisition data obtained from the manifest. |
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/DrmInitData mediaData` | DRM session acquisition data obtained from the media. |

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/androidx/media3/common/DrmInitData` | A `https://developer.android.com/reference/androidx/media3/common/DrmInitData` obtained from merging a media manifest and a media stream. |

### describeContents

```
public int describeContents()
```

### equals

```
public boolean equals(@Nullable Object obj)
```

### get

```
public DrmInitData.SchemeData get(int index)
```

Retrieves the `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData` at a given index.

| Parameters |
|---|---|
| `int index` | The index of the scheme to return. Must not exceed `https://developer.android.com/reference/androidx/media3/common/DrmInitData#schemeDataCount()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData` | The `https://developer.android.com/reference/androidx/media3/common/DrmInitData.SchemeData` at the specified index. |

### hashCode

```
public int hashCode()
```

### merge

```
public DrmInitData merge(DrmInitData drmInitData)
```

Returns an instance containing the `https://developer.android.com/reference/androidx/media3/common/DrmInitData#schemeDatas()` from both this and `other`. The `https://developer.android.com/reference/androidx/media3/common/DrmInitData#schemeType()` of the instances being merged must either match, or at least one scheme type must be `null`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData drmInitData` | The instance to merge. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/common/DrmInitData` | The merged result. |

### writeToParcel

```
public void writeToParcel(Parcel dest, int flags)
```