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

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

Issue 23517002: MediaSourcePlayer implements IsTypeSupported(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 7 years, 4 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/MediaCodecBridge.java
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 b1580d17dca91fec24575c2e8374523e76fe3443..9e261c7b2aeedcd3dfa78392b91202c4c3984b9e 100644
--- a/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
+++ b/media/base/android/java/src/org/chromium/media/MediaCodecBridge.java
@@ -8,6 +8,8 @@ import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.media.MediaCodec;
+import android.media.MediaCodecInfo;
+import android.media.MediaCodecList;
import android.media.MediaCrypto;
import android.media.MediaFormat;
import android.view.Surface;
@@ -80,22 +82,50 @@ class MediaCodecBridge {
private int numBytes() { return mNumBytes; }
}
- private MediaCodecBridge(String mime) throws IOException {
- mMediaCodec = MediaCodec.createDecoderByType(mime);
+ private static String getSecureDecoderNameForMime(String mime) {
+ int count = MediaCodecList.getCodecCount();
+ for (int i = 0; i < count; ++i) {
+ MediaCodecInfo info = MediaCodecList.getCodecInfoAt(i);
+ if (info.isEncoder()) {
+ continue;
+ }
+
+ String[] supportedTypes = info.getSupportedTypes();
+ for (int j = 0; j < supportedTypes.length; ++j) {
+ if (supportedTypes[j].equalsIgnoreCase(mime)) {
+ return info.getName() + ".secure";
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private MediaCodecBridge(MediaCodec mediaCodec) {
+ assert(mediaCodec != null);
+ mMediaCodec = mediaCodec;
mLastPresentationTimeUs = 0;
mFlushed = true;
}
@CalledByNative
- private static MediaCodecBridge create(String mime) {
- MediaCodecBridge mediaCodecBridge = null;
+ private static MediaCodecBridge create(String mime, boolean secure) {
qinmin 2013/08/28 18:39:59 nit: s/secure/isSecure/
xhwang 2013/08/30 05:32:38 Done.
+ MediaCodec mediaCodec = null;
try {
- mediaCodecBridge = new MediaCodecBridge(mime);
- } catch (IOException e) {
- Log.e(TAG, "Failed to create MediaCodecBridge " + e.toString());
+ if (secure) {
+ mediaCodec = MediaCodec.createByCodecName(getSecureDecoderNameForMime(mime));
+ } else {
+ mediaCodec = MediaCodec.createDecoderByType(mime);
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "Failed to create MediaCodec " + e.toString());
+ }
+
+ if (mediaCodec == null) {
+ return null;
}
- return mediaCodecBridge;
+ return new MediaCodecBridge(mediaCodec);
}
@CalledByNative

Powered by Google App Engine
This is Rietveld 408576698