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

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: 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..8e7af583cc9e79276df4bb7546ea400cbb99982e 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 media_codec) {
+ assert(media_codec != null);
+ mMediaCodec = media_codec;
mLastPresentationTimeUs = 0;
mFlushed = true;
}
@CalledByNative
- private static MediaCodecBridge create(String mime) {
- MediaCodecBridge mediaCodecBridge = null;
+ private static MediaCodecBridge create(String mime, boolean secure) {
+ MediaCodec media_codec = null;
qinmin 2013/08/27 21:41:12 java coding style use camelCase
xhwang 2013/08/28 01:21:24 Done.
try {
- mediaCodecBridge = new MediaCodecBridge(mime);
- } catch (IOException e) {
- Log.e(TAG, "Failed to create MediaCodecBridge " + e.toString());
+ if (secure) {
+ media_codec = MediaCodec.createByCodecName(getSecureDecoderNameForMime(mime));
+ } else {
+ media_codec = MediaCodec.createDecoderByType(mime);
+ }
+ } catch (Exception e) {
qinmin 2013/08/27 21:41:12 use specific exception type
xhwang 2013/08/28 01:21:24 Well this is complicated. The old code assumes Med
+ Log.e(TAG, "Failed to create MediaCodec " + e.toString());
+ }
+
+ if (media_codec == null) {
+ return null;
}
- return mediaCodecBridge;
+ return new MediaCodecBridge(media_codec);
}
@CalledByNative

Powered by Google App Engine
This is Rietveld 408576698