From 6838b0b29cca2d17a1abd61058e12da6dcfa402d Mon Sep 17 00:00:00 2001 From: aquilescanta Date: Wed, 19 Jun 2019 20:32:46 +0100 Subject: [PATCH] Relax DrmSessionManager-in-Renderer requirement for MediaSource-provided DRM PiperOrigin-RevId: 254048233 --- .../android/exoplayer2/ext/vp9/LibvpxVideoRenderer.java | 8 ++++---- .../exoplayer2/audio/SimpleDecoderAudioRenderer.java | 9 +++++---- .../exoplayer2/mediacodec/MediaCodecRenderer.java | 8 ++++---- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/LibvpxVideoRenderer.java b/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/LibvpxVideoRenderer.java index f5d92e2a15..c032fe1192 100644 --- a/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/LibvpxVideoRenderer.java +++ b/extensions/vp9/src/main/java/com/google/android/exoplayer2/ext/vp9/LibvpxVideoRenderer.java @@ -499,13 +499,13 @@ public class LibvpxVideoRenderer extends BaseRenderer { : oldFormat.drmInitData); if (drmInitDataChanged) { if (format.drmInitData != null) { - if (drmSessionManager == null) { - throw ExoPlaybackException.createForRenderer( - new IllegalStateException("Media requires a DrmSessionManager"), getIndex()); - } if (formatHolder.decryptionResourceIsProvided) { setSourceDrmSession((DrmSession) formatHolder.drmSession); } else { + if (drmSessionManager == null) { + throw ExoPlaybackException.createForRenderer( + new IllegalStateException("Media requires a DrmSessionManager"), getIndex()); + } DrmSession session = drmSessionManager.acquireSession(Looper.myLooper(), newFormat.drmInitData); if (sourceDrmSession != null) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/audio/SimpleDecoderAudioRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/audio/SimpleDecoderAudioRenderer.java index 08e8203fd4..c79208dda6 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/audio/SimpleDecoderAudioRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/audio/SimpleDecoderAudioRenderer.java @@ -664,13 +664,14 @@ public abstract class SimpleDecoderAudioRenderer extends BaseRenderer implements : oldFormat.drmInitData); if (drmInitDataChanged) { if (inputFormat.drmInitData != null) { - if (drmSessionManager == null) { - throw ExoPlaybackException.createForRenderer( - new IllegalStateException("Media requires a DrmSessionManager"), getIndex()); - } + if (formatHolder.decryptionResourceIsProvided) { setSourceDrmSession((DrmSession) formatHolder.drmSession); } else { + if (drmSessionManager == null) { + throw ExoPlaybackException.createForRenderer( + new IllegalStateException("Media requires a DrmSessionManager"), getIndex()); + } DrmSession session = drmSessionManager.acquireSession(Looper.myLooper(), newFormat.drmInitData); if (sourceDrmSession != null) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java index 4b7bab2cfa..7ed5e09e41 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/mediacodec/MediaCodecRenderer.java @@ -1200,13 +1200,13 @@ public abstract class MediaCodecRenderer extends BaseRenderer { !Util.areEqual(newFormat.drmInitData, oldFormat == null ? null : oldFormat.drmInitData); if (drmInitDataChanged) { if (newFormat.drmInitData != null) { - if (drmSessionManager == null) { - throw ExoPlaybackException.createForRenderer( - new IllegalStateException("Media requires a DrmSessionManager"), getIndex()); - } if (formatHolder.decryptionResourceIsProvided) { setSourceDrmSession((DrmSession) formatHolder.drmSession); } else { + if (drmSessionManager == null) { + throw ExoPlaybackException.createForRenderer( + new IllegalStateException("Media requires a DrmSessionManager"), getIndex()); + } DrmSession session = drmSessionManager.acquireSession(Looper.myLooper(), newFormat.drmInitData); if (sourceDrmSession != null) {