Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1103)

Unified Diff: media/base/android/java/src/org/chromium/media/MediaDrmBridge.java

Issue 23480036: Support creating secure decoder in MediaCodecBridge. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix test Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
diff --git a/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java b/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
index b5191067dec0cc45dcbb50c07da23694e6026426..a024240a027674fc60f68b438436bb5dc026b271 100644
--- a/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java
@@ -59,20 +59,18 @@ class MediaDrmBridge {
return new UUID(mostSigBits, leastSigBits);
}
- private MediaDrmBridge(UUID schemeUUID, String securityLevel, int nativeMediaDrmBridge) {
- try {
- mSchemeUUID = schemeUUID;
- mMediaDrm = new MediaDrm(schemeUUID);
- mHandler = new Handler();
- mNativeMediaDrmBridge = nativeMediaDrmBridge;
- mMediaDrm.setOnEventListener(new MediaDrmListener());
- mMediaDrm.setPropertyString(PRIVACY_MODE, "enable");
+ private MediaDrmBridge(UUID schemeUUID, String securityLevel, int nativeMediaDrmBridge)
+ throws android.media.UnsupportedSchemeException {
+ mSchemeUUID = schemeUUID;
+ mMediaDrm = new MediaDrm(schemeUUID);
+ mHandler = new Handler();
+ mNativeMediaDrmBridge = nativeMediaDrmBridge;
+ mMediaDrm.setOnEventListener(new MediaDrmListener());
+ mMediaDrm.setPropertyString(PRIVACY_MODE, "enable");
+ String currentSecurityLevel = mMediaDrm.getPropertyString(SECURITY_LEVEL);
+ Log.e(TAG, "Security level: current " + currentSecurityLevel + ", new " + securityLevel);
+ if (!securityLevel.equals(currentSecurityLevel))
mMediaDrm.setPropertyString(SECURITY_LEVEL, securityLevel);
- } catch (android.media.UnsupportedSchemeException e) {
- Log.e(TAG, "Unsupported DRM scheme: " + e.toString());
- } catch (java.lang.IllegalArgumentException e) {
- Log.e(TAG, "Failed to set DRM properties: " + e.toString());
- }
}
/**
@@ -146,10 +144,21 @@ class MediaDrmBridge {
private static MediaDrmBridge create(
byte[] schemeUUID, String securityLevel, int nativeMediaDrmBridge) {
UUID cryptoScheme = getUUIDFromBytes(schemeUUID);
- if (cryptoScheme != null && MediaDrm.isCryptoSchemeSupported(cryptoScheme)) {
- return new MediaDrmBridge(cryptoScheme, securityLevel, nativeMediaDrmBridge);
+ if (cryptoScheme == null || !MediaDrm.isCryptoSchemeSupported(cryptoScheme)) {
+ return null;
}
- return null;
+
+ MediaDrmBridge media_drm_bridge = null;
+ try {
+ media_drm_bridge = new MediaDrmBridge(
+ cryptoScheme, securityLevel, nativeMediaDrmBridge);
+ } catch (android.media.UnsupportedSchemeException e) {
+ Log.e(TAG, "Unsupported DRM scheme: " + e.toString());
+ } catch (java.lang.IllegalArgumentException e) {
+ Log.e(TAG, "Failed to create MediaDrmBridge: " + e.toString());
+ }
+
+ return media_drm_bridge;
}
/**
@@ -167,6 +176,7 @@ class MediaDrmBridge {
private void release() {
if (mMediaCrypto != null) {
mMediaCrypto.release();
+ mMediaCrypto = null;
}
if (mSessionId != null) {
try {
@@ -175,9 +185,12 @@ class MediaDrmBridge {
} catch (java.io.UnsupportedEncodingException e) {
Log.e(TAG, "Failed to close session: " + e.toString());
}
+ mSessionId = null;
+ }
+ if (mMediaDrm != null) {
+ mMediaDrm.release();
+ mMediaDrm = null;
}
- mMediaDrm.release();
- mMediaDrm = null;
}
/**
@@ -329,6 +342,10 @@ class MediaDrmBridge {
Log.e(TAG, "failed to provide provision response: " + e.toString());
onKeyError();
return;
+ } catch (java.lang.IllegalStateException e) {
+ Log.e(TAG, "failed to provide provision response: " + e.toString());
+ onKeyError();
+ return;
}
if (mPendingInitData != null) {
« no previous file with comments | « media/base/android/java/src/org/chromium/media/MediaCodecBridge.java ('k') | media/base/android/media_codec_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698