From ecaaed96748d6ea70bbca2a9f8566df995dbbfac Mon Sep 17 00:00:00 2001 From: aquilescanta Date: Fri, 3 Nov 2017 09:36:43 -0700 Subject: [PATCH] Relax string comparison in DASH parseContentProtection ... by making it case insensitive and null-tolerant for schemeId (as was before adding playlist drm data merging). ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=174472123 --- .../dash/manifest/DashManifestParser.java | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java index 0c35ef0d10..72df69f7e9 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/manifest/DashManifestParser.java @@ -345,30 +345,32 @@ public class DashManifestParser extends DefaultHandler */ protected Pair parseContentProtection(XmlPullParser xpp) throws XmlPullParserException, IOException { - String schemeIdUri = xpp.getAttributeValue(null, "schemeIdUri"); String schemeType = null; byte[] data = null; UUID uuid = null; boolean requiresSecureDecoder = false; - switch (schemeIdUri) { - case "urn:mpeg:dash:mp4protection:2011": - schemeType = xpp.getAttributeValue(null, "value"); - String defaultKid = xpp.getAttributeValue(null, "cenc:default_KID"); - if (defaultKid != null && !"00000000-0000-0000-0000-000000000000".equals(defaultKid)) { - UUID keyId = UUID.fromString(defaultKid); - data = PsshAtomUtil.buildPsshAtom(C.COMMON_PSSH_UUID, new UUID[] {keyId}, null); - uuid = C.COMMON_PSSH_UUID; - } - break; - case "urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95": - uuid = C.PLAYREADY_UUID; - break; - case "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed": - uuid = C.WIDEVINE_UUID; - break; - default: - break; + String schemeIdUri = xpp.getAttributeValue(null, "schemeIdUri"); + if (schemeIdUri != null) { + switch (schemeIdUri.toLowerCase()) { + case "urn:mpeg:dash:mp4protection:2011": + schemeType = xpp.getAttributeValue(null, "value"); + String defaultKid = xpp.getAttributeValue(null, "cenc:default_KID"); + if (defaultKid != null && !"00000000-0000-0000-0000-000000000000".equals(defaultKid)) { + UUID keyId = UUID.fromString(defaultKid); + data = PsshAtomUtil.buildPsshAtom(C.COMMON_PSSH_UUID, new UUID[] {keyId}, null); + uuid = C.COMMON_PSSH_UUID; + } + break; + case "urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95": + uuid = C.PLAYREADY_UUID; + break; + case "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed": + uuid = C.WIDEVINE_UUID; + break; + default: + break; + } } do {