summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorfischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-06 16:00:00 +0000
committerfischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-06 16:00:00 +0000
commita8e0e636de63081a4c3bc75813b115bc206daaba (patch)
tree641b5942f5f1db2773cade43b32e9f7a04f505a5 /media
parent072e8522e404a1d3e9b3dc437b699df20d3fc224 (diff)
downloadchromium_src-a8e0e636de63081a4c3bc75813b115bc206daaba.zip
chromium_src-a8e0e636de63081a4c3bc75813b115bc206daaba.tar.gz
chromium_src-a8e0e636de63081a4c3bc75813b115bc206daaba.tar.bz2
MediaCodecBridge: don't try to create .secure codecs pre-JB-MR2.
BUG=314868 NOTRY=true Review URL: https://codereview.chromium.org/60423004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@233272 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r--media/base/android/java/src/org/chromium/media/MediaCodecBridge.java29
1 files changed, 19 insertions, 10 deletions
diff --git a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
index 74bec56..b240fc4 100644
--- a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
@@ -12,8 +12,9 @@ import android.media.MediaCodecInfo;
import android.media.MediaCodecList;
import android.media.MediaCrypto;
import android.media.MediaFormat;
-import android.view.Surface;
+import android.os.Build;
import android.util.Log;
+import android.view.Surface;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -151,17 +152,25 @@ class MediaCodecBridge {
continue;
}
- String[] supportedTypes = info.getSupportedTypes();
- String codecString = info.getName();
- String secureCodecName = codecString + ".secure";
boolean secureDecoderSupported = false;
- try {
- MediaCodec secureCodec = MediaCodec.createByCodecName(secureCodecName);
- secureDecoderSupported = true;
- secureCodec.release();
- } catch (Exception e) {
- Log.e(TAG, "Failed to create " + secureCodecName);
+ String codecString = info.getName();
+ // ".secure" codecs sometimes crash instead of throwing on pre-JBMR2
+ // platforms, but this code isn't run on them anyway (MediaDrm
+ // unavailable) so we side-step the issue. http://crbug.com/314868
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
+ String secureCodecName = codecString + ".secure";
+ try {
+ MediaCodec secureCodec = MediaCodec.createByCodecName(secureCodecName);
+ if (secureCodec != null) {
+ secureDecoderSupported = true;
+ secureCodec.release();
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "Failed to create " + secureCodecName);
+ }
}
+
+ String[] supportedTypes = info.getSupportedTypes();
for (int j = 0; j < supportedTypes.length; ++j) {
if (!CodecInfoMap.containsKey(supportedTypes[j]) || secureDecoderSupported) {
CodecInfoMap.put(supportedTypes[j], new CodecInfo(