diff --git a/RELEASENOTES.md b/RELEASENOTES.md index f15bf82489..4747f0f795 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -19,6 +19,12 @@ * Add `ImaAdsLoader.focusSkipButton` to allow apps to request that the skip button should receive UI focus, if shown ([#8565](https://github.com/google/ExoPlayer/issues/8565)). +* DRM: + * Re-use the previous `DrmSessionManager` instance when playing a playlist + (if possible) + ([#8523](https://github.com/google/ExoPlayer/issues/8523)). + * Propagate DRM configuration when creating media sources for ad content + ([#8568](https://github.com/google/ExoPlayer/issues/8568)). * Remove deprecated symbols: * Remove `Player.DefaultEventListener`. Use `Player.EventListener` instead. @@ -26,10 +32,6 @@ instead. * Remove `extension-jobdispatcher` module. Use the `extension-workmanager` module instead. -* DRM: - * Re-use the previous `DrmSessionManager` instance when playing a playlist - (if possible) - ([#8523](https://github.com/google/ExoPlayer/issues/8523)). ### 2.13.0 (2021-02-04) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java index 4f2617e868..be1ab81cd3 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ads/AdsMediaSource.java @@ -318,8 +318,28 @@ public final class AdsMediaSource extends CompositeMediaSource { && adIndexInAdGroup < adPlaybackState.adGroups[adGroupIndex].uris.length) { @Nullable Uri adUri = adPlaybackState.adGroups[adGroupIndex].uris[adIndexInAdGroup]; if (adUri != null) { - MediaSource adMediaSource = - adMediaSourceFactory.createMediaSource(MediaItem.fromUri(adUri)); + MediaItem.Builder adMediaItem = new MediaItem.Builder().setUri(adUri); + // Propagate the content's DRM config into the ad media source. + @Nullable + MediaItem.PlaybackProperties contentPlaybackProperties = + contentMediaSource.getMediaItem().playbackProperties; + if (contentPlaybackProperties != null + && contentPlaybackProperties.drmConfiguration != null) { + MediaItem.DrmConfiguration drmConfiguration = + contentPlaybackProperties.drmConfiguration; + // TODO(internal b/179984779): Use MediaItem.Builder#setDrmConfiguration() when it's + // available. + adMediaItem.setDrmUuid(drmConfiguration.uuid); + adMediaItem.setDrmKeySetId(drmConfiguration.getKeySetId()); + adMediaItem.setDrmLicenseUri(drmConfiguration.licenseUri); + adMediaItem.setDrmForceDefaultLicenseUri(drmConfiguration.forceDefaultLicenseUri); + adMediaItem.setDrmLicenseRequestHeaders(drmConfiguration.requestHeaders); + adMediaItem.setDrmMultiSession(drmConfiguration.multiSession); + adMediaItem.setDrmPlayClearContentWithoutKey( + drmConfiguration.playClearContentWithoutKey); + adMediaItem.setDrmSessionForClearTypes(drmConfiguration.sessionForClearTypes); + } + MediaSource adMediaSource = adMediaSourceFactory.createMediaSource(adMediaItem.build()); adMediaSourceHolder.initializeWithMediaSource(adMediaSource, adUri); } }