Skip to content

Commit e459071

Browse files
AquilesCantaojw28
authored andcommitted
Allow human readable strings as DRM intent extras.
Issue:#3478 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=176351086
1 parent c4fe0e6 commit e459071

File tree

3 files changed

+45
-25
lines changed

3 files changed

+45
-25
lines changed

demos/main/src/main/java/com/google/android/exoplayer2/demo/DemoUtil.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,43 @@
1616
package com.google.android.exoplayer2.demo;
1717

1818
import android.text.TextUtils;
19+
import com.google.android.exoplayer2.C;
1920
import com.google.android.exoplayer2.Format;
21+
import com.google.android.exoplayer2.drm.UnsupportedDrmException;
2022
import com.google.android.exoplayer2.util.MimeTypes;
23+
import com.google.android.exoplayer2.util.Util;
2124
import java.util.Locale;
25+
import java.util.UUID;
2226

2327
/**
2428
* Utility methods for demo application.
2529
*/
26-
/*package*/ final class DemoUtil {
30+
/* package */ final class DemoUtil {
31+
32+
/**
33+
* Derives a DRM {@link UUID} from {@code drmScheme}.
34+
*
35+
* @param drmScheme A protection scheme UUID string; or {@code "widevine"}, {@code "playready"} or
36+
* {@code "clearkey"}.
37+
* @return The derived {@link UUID}.
38+
* @throws UnsupportedDrmException If no {@link UUID} could be derived from {@code drmScheme}.
39+
*/
40+
public static UUID getDrmUuid(String drmScheme) throws UnsupportedDrmException {
41+
switch (Util.toLowerInvariant(drmScheme)) {
42+
case "widevine":
43+
return C.WIDEVINE_UUID;
44+
case "playready":
45+
return C.PLAYREADY_UUID;
46+
case "clearkey":
47+
return C.CLEARKEY_UUID;
48+
default:
49+
try {
50+
return UUID.fromString(drmScheme);
51+
} catch (RuntimeException e) {
52+
throw new UnsupportedDrmException(UnsupportedDrmException.REASON_UNSUPPORTED_SCHEME);
53+
}
54+
}
55+
}
2756

2857
/**
2958
* Builds a track name for display.

demos/main/src/main/java/com/google/android/exoplayer2/demo/PlayerActivity.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
public class PlayerActivity extends Activity implements OnClickListener,
8484
PlaybackControlView.VisibilityListener {
8585

86-
public static final String DRM_SCHEME_UUID_EXTRA = "drm_scheme_uuid";
86+
public static final String DRM_SCHEME_EXTRA = "drm_scheme";
8787
public static final String DRM_LICENSE_URL = "drm_license_url";
8888
public static final String DRM_KEY_REQUEST_PROPERTIES = "drm_key_request_properties";
8989
public static final String DRM_MULTI_SESSION = "drm_multi_session";
@@ -98,6 +98,9 @@ public class PlayerActivity extends Activity implements OnClickListener,
9898
public static final String EXTENSION_LIST_EXTRA = "extension_list";
9999
public static final String AD_TAG_URI_EXTRA = "ad_tag_uri";
100100

101+
// For backwards compatibility.
102+
private static final String DRM_SCHEME_UUID_EXTRA = "drm_scheme_uuid";
103+
101104
private static final DefaultBandwidthMeter BANDWIDTH_METER = new DefaultBandwidthMeter();
102105
private static final CookieManager DEFAULT_COOKIE_MANAGER;
103106
static {
@@ -256,10 +259,8 @@ private void initializePlayer() {
256259
lastSeenTrackGroupArray = null;
257260
eventLogger = new EventLogger(trackSelector);
258261

259-
UUID drmSchemeUuid = intent.hasExtra(DRM_SCHEME_UUID_EXTRA)
260-
? UUID.fromString(intent.getStringExtra(DRM_SCHEME_UUID_EXTRA)) : null;
261262
DrmSessionManager<FrameworkMediaCrypto> drmSessionManager = null;
262-
if (drmSchemeUuid != null) {
263+
if (intent.hasExtra(DRM_SCHEME_EXTRA) || intent.hasExtra(DRM_SCHEME_UUID_EXTRA)) {
263264
String drmLicenseUrl = intent.getStringExtra(DRM_LICENSE_URL);
264265
String[] keyRequestPropertiesArray = intent.getStringArrayExtra(DRM_KEY_REQUEST_PROPERTIES);
265266
boolean multiSession = intent.getBooleanExtra(DRM_MULTI_SESSION, false);
@@ -268,6 +269,9 @@ private void initializePlayer() {
268269
errorStringId = R.string.error_drm_not_supported;
269270
} else {
270271
try {
272+
String drmSchemeExtra = intent.hasExtra(DRM_SCHEME_EXTRA) ? DRM_SCHEME_EXTRA
273+
: DRM_SCHEME_UUID_EXTRA;
274+
UUID drmSchemeUuid = DemoUtil.getDrmUuid(intent.getStringExtra(drmSchemeExtra));
271275
drmSessionManager = buildDrmSessionManagerV18(drmSchemeUuid, drmLicenseUrl,
272276
keyRequestPropertiesArray, multiSession);
273277
} catch (UnsupportedDrmException e) {

demos/main/src/main/java/com/google/android/exoplayer2/demo/SampleChooserActivity.java

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
import android.widget.ExpandableListView.OnChildClickListener;
3333
import android.widget.TextView;
3434
import android.widget.Toast;
35-
import com.google.android.exoplayer2.C;
3635
import com.google.android.exoplayer2.ParserException;
36+
import com.google.android.exoplayer2.drm.UnsupportedDrmException;
3737
import com.google.android.exoplayer2.upstream.DataSource;
3838
import com.google.android.exoplayer2.upstream.DataSourceInputStream;
3939
import com.google.android.exoplayer2.upstream.DataSpec;
@@ -202,7 +202,11 @@ private Sample readEntry(JsonReader reader, boolean insidePlaylist) throws IOExc
202202
break;
203203
case "drm_scheme":
204204
Assertions.checkState(!insidePlaylist, "Invalid attribute on nested item: drm_scheme");
205-
drmUuid = getDrmUuid(reader.nextString());
205+
try {
206+
drmUuid = DemoUtil.getDrmUuid(reader.nextString());
207+
} catch (UnsupportedDrmException e) {
208+
throw new ParserException(e);
209+
}
206210
break;
207211
case "drm_license_url":
208212
Assertions.checkState(!insidePlaylist,
@@ -270,23 +274,6 @@ private SampleGroup getGroup(String groupName, List groups) {
270274
return group;
271275
}
272276

273-
private UUID getDrmUuid(String typeString) throws ParserException {
274-
switch (Util.toLowerInvariant(typeString)) {
275-
case "widevine":
276-
return C.WIDEVINE_UUID;
277-
case "playready":
278-
return C.PLAYREADY_UUID;
279-
case "clearkey":
280-
return C.CLEARKEY_UUID;
281-
default:
282-
try {
283-
return UUID.fromString(typeString);
284-
} catch (RuntimeException e) {
285-
throw new ParserException("Unsupported drm type: " + typeString);
286-
}
287-
}
288-
}
289-
290277
}
291278

292279
private static final class SampleAdapter extends BaseExpandableListAdapter {
@@ -393,7 +380,7 @@ public DrmInfo(UUID drmSchemeUuid, String drmLicenseUrl,
393380

394381
public void updateIntent(Intent intent) {
395382
Assertions.checkNotNull(intent);
396-
intent.putExtra(PlayerActivity.DRM_SCHEME_UUID_EXTRA, drmSchemeUuid.toString());
383+
intent.putExtra(PlayerActivity.DRM_SCHEME_EXTRA, drmSchemeUuid.toString());
397384
intent.putExtra(PlayerActivity.DRM_LICENSE_URL, drmLicenseUrl);
398385
intent.putExtra(PlayerActivity.DRM_KEY_REQUEST_PROPERTIES, drmKeyRequestProperties);
399386
intent.putExtra(PlayerActivity.DRM_MULTI_SESSION, drmMultiSession);

0 commit comments

Comments
 (0)