diff options
author | fischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-06 16:00:00 +0000 |
---|---|---|
committer | fischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-06 16:00:00 +0000 |
commit | a8e0e636de63081a4c3bc75813b115bc206daaba (patch) | |
tree | 641b5942f5f1db2773cade43b32e9f7a04f505a5 /media | |
parent | 072e8522e404a1d3e9b3dc437b699df20d3fc224 (diff) | |
download | chromium_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.java | 29 |
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( |