google / google/ExoPlayer

DownloadRequest.toMediaItem always discards keySetId

Open
#9,378 2 comments 0 reactions 1 assignee Assigned to @marcbaechinger View on GitHub
bug
Dominant language
Java
Stars
21.9k
Forks
6k
PR merge metrics
No merged PRs in 30d

Description

### Problem

The method is defined as follows:

https://github.com/google/ExoPlayer/blob/0ba317b1337eaa789f05dd6c5241246478a3d1e5/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadRequest.java#L225-L234

However, `MediaItem.Builder` constructs the `MediaItem` in the following way:

https://github.com/google/ExoPlayer/blob/02f7aafe67b4893134a31ea55a3ba0f0535df145/library/common/src/main/java/com/google/android/exoplayer2/MediaItem.java#L578-L588

Hence `drmKeySetId` is never applied because `drmUuid` was never set. This makes it confusing in the least. `.toMediaItem` should accept a DRM UUID to prevent this from happening, or `.toMediaItem` should never set `drmKeySetId` since it implies it has any significance.

### Workaround

Not using `.toMediaItem` and setting all values manually, like so:

```java
new MediaItem.Builder()
.setMediaId(download.request.id)
.setUri(download.request.uri)
.setCustomCacheKey(download.request.customCacheKey)
.setMimeType(download.request.mimeType)
.setStreamKeys(download.request.streamKeys)
.setDrmKeySetId(download.request.keySetId)
// has to be added to overcome ignoring of `keySetId`
.setDrmUuid(C.WIDEVINE_UUID)
.build();
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.