From 331d4d626fcb1b65088c7ab849c0a0a3f5f6ba0e Mon Sep 17 00:00:00 2001 From: ibaker Date: Thu, 22 Sep 2022 15:59:44 +0000 Subject: [PATCH] Work around a bug in the Android 13 ClearKey implementation The ClearKey CDM will attach an 'invalid' URL in `KeyRequest` objects, when the documentation states this should be an empty string if a default URL is not known. #minor-release PiperOrigin-RevId: 476113513 --- .../exoplayer2/drm/FrameworkMediaDrm.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaDrm.java b/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaDrm.java index 1f45380cc3..29e84d35cc 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaDrm.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/drm/FrameworkMediaDrm.java @@ -218,11 +218,7 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { mediaDrm.getKeyRequest(scope, initData, mimeType, keyType, optionalParameters); byte[] requestData = adjustRequestData(uuid, request.getData()); - - String licenseServerUrl = request.getDefaultUrl(); - if (MOCK_LA_URL_VALUE.equals(licenseServerUrl)) { - licenseServerUrl = ""; - } + String licenseServerUrl = adjustLicenseServerUrl(request.getDefaultUrl()); if (TextUtils.isEmpty(licenseServerUrl) && schemeData != null && !TextUtils.isEmpty(schemeData.licenseServerUrl)) { @@ -236,6 +232,17 @@ public final class FrameworkMediaDrm implements ExoMediaDrm { return new KeyRequest(requestData, licenseServerUrl, requestType); } + private static String adjustLicenseServerUrl(String licenseServerUrl) { + if (MOCK_LA_URL.equals(licenseServerUrl)) { + return ""; + } else if (Util.SDK_INT == 33 && "https://default.url".equals(licenseServerUrl)) { + // Work around b/247808112 + return ""; + } else { + return licenseServerUrl; + } + } + @Override @Nullable public byte[] provideKeyResponse(byte[] scope, byte[] response)