From c934ce744dbc55ddd6dbde29037c441afde7671c Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 24 Sep 2018 06:34:12 -0700 Subject: [PATCH] Don't request session sharing on CDMs that don't support it Issue: #4834 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=214258163 --- RELEASENOTES.md | 3 +++ .../android/exoplayer2/drm/DefaultDrmSessionManager.java | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 97f3b29c3e..55ad062859 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -145,6 +145,9 @@ looping ([#3829](https://github.com/google/ExoPlayer/issues/3829)). * Fix issue where `player.getCurrentTag()` throws an `IndexOutOfBoundsException` ([#4822](https://github.com/google/ExoPlayer/issues/4822)). +* Fix bug preventing use of multiple key session support (`multiSession=true`) + for non-Widevine `DefaultDrmSessionManager` instances + ([#4834](https://github.com/google/ExoPlayer/issues/4834)). * IMA extension: * Refine the previous fix for empty ad groups to avoid discarding ad breaks unnecessarily ([#4030](https://github.com/google/ExoPlayer/issues/4030) and diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java index 03269f0caa..460ee357ea 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/DefaultDrmSessionManager.java @@ -367,7 +367,11 @@ public class DefaultDrmSessionManager implements DrmSe mode = MODE_PLAYBACK; sessions = new ArrayList<>(); provisioningSessions = new ArrayList<>(); - if (multiSession) { + if (multiSession && C.WIDEVINE_UUID.equals(uuid) && Util.SDK_INT >= 19) { + // TODO: Enabling session sharing probably doesn't do anything useful here. It would only be + // useful if DefaultDrmSession instances were aware of one another's state, which is not + // implemented. Or if custom renderers are being used that allow playback to proceed before + // keys, which seems unlikely to be true in practice. mediaDrm.setPropertyString("sessionSharing", "enable"); } mediaDrm.setOnEventListener(new MediaDrmEventListener());