From 870c8ae4df9b3a0157318bcd4790906efc48430e Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 14 Aug 2017 03:15:43 -0700 Subject: [PATCH] Fix canAcquireSession for ClearKey ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=165159376 --- .../drm/DefaultDrmSessionManager.java | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) 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 fcd8ac862b..69403a90a6 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 @@ -311,7 +311,7 @@ public class DefaultDrmSessionManager implements DrmSe @Override public boolean canAcquireSession(@NonNull DrmInitData drmInitData) { - SchemeData schemeData = drmInitData.get(uuid); + SchemeData schemeData = getSchemeData(drmInitData); if (schemeData == null) { // No data for this manager's scheme. return false; @@ -347,11 +347,7 @@ public class DefaultDrmSessionManager implements DrmSe postRequestHandler = new PostRequestHandler(requestHandlerThread.getLooper()); if (offlineLicenseKeySetId == null) { - SchemeData schemeData = drmInitData.get(uuid); - if (schemeData == null && C.CLEARKEY_UUID.equals(uuid)) { - // If present, the Common PSSH box should be used for ClearKey. - schemeData = drmInitData.get(C.COMMON_PSSH_UUID); - } + SchemeData schemeData = getSchemeData(drmInitData); if (schemeData == null) { onError(new IllegalStateException("Media does not support uuid: " + uuid)); return this; @@ -627,6 +623,21 @@ public class DefaultDrmSessionManager implements DrmSe } } + /** + * Extracts {@link SchemeData} suitable for this manager. + * + * @param drmInitData The {@link DrmInitData} from which to extract the {@link SchemeData}. + * @return The extracted {@link SchemeData}, or null if no suitable data is present. + */ + private SchemeData getSchemeData(DrmInitData drmInitData) { + SchemeData schemeData = drmInitData.get(uuid); + if (schemeData == null && C.CLEARKEY_UUID.equals(uuid)) { + // If present, the Common PSSH box should be used for ClearKey. + schemeData = drmInitData.get(C.COMMON_PSSH_UUID); + } + return schemeData; + } + @SuppressLint("HandlerLeak") private class MediaDrmHandler extends Handler {