From 4423f4df7a4de43bf63dd86236376b074e8b76d3 Mon Sep 17 00:00:00 2001 From: Marc Baechinger Date: Mon, 17 Oct 2022 15:58:34 +0000 Subject: [PATCH] Merge pull request #10578 from thucngv:release-v2 PiperOrigin-RevId: 481115402 (cherry picked from commit 172cae4775d02da84077df33f234ad8df069eef4) --- RELEASENOTES.md | 2 ++ .../media3/exoplayer/mediacodec/MediaCodecRenderer.java | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ecf4473c6c..a8c85406c1 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -45,6 +45,8 @@ * DRM: * Work around a bug in the Android 13 ClearKey implementation that returns a non-empty but invalid license URL. + * Fix `setMediaDrmSession failed: session not opened` error when switching + between DRM schemes in a playlist (e.g. Widevine to ClearKey). * DASH: * Parse `EventStream.presentationTimeOffset` from manifests ([#10460](https://github.com/google/ExoPlayer/issues/10460)). diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java index b6e651419c..79c3b9ca7a 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/mediacodec/MediaCodecRenderer.java @@ -2094,6 +2094,11 @@ public abstract class MediaCodecRenderer extends BaseRenderer { // Note: Both oldSession and newSession are non-null, and they are different sessions. + if (!newSession.getSchemeUuid().equals(oldSession.getSchemeUuid())) { + // MediaCrypto.setMediaDrmSession is unable to switch between DRM schemes. + return true; + } + if (Util.SDK_INT < 23) { // MediaCrypto.setMediaDrmSession is only available from API level 23, so re-initialization is // required to switch to newSession on older API levels.