Index: talk/app/webrtc/java/src/org/webrtc/MediaCodecVideoDecoder.java |
diff --git a/talk/app/webrtc/java/src/org/webrtc/MediaCodecVideoDecoder.java b/talk/app/webrtc/java/src/org/webrtc/MediaCodecVideoDecoder.java |
index ba94cc1e6d493743a4944a0411ce8eb7b7015a37..0443114e29ce4c7f4e5dda03a89a486fcdd47e38 100644 |
--- a/talk/app/webrtc/java/src/org/webrtc/MediaCodecVideoDecoder.java |
+++ b/talk/app/webrtc/java/src/org/webrtc/MediaCodecVideoDecoder.java |
@@ -77,10 +77,14 @@ public class MediaCodecVideoDecoder { |
private ByteBuffer[] inputBuffers; |
private ByteBuffer[] outputBuffers; |
private static final String VP8_MIME_TYPE = "video/x-vnd.on2.vp8"; |
+ private static final String VP9_MIME_TYPE = "video/x-vnd.on2.vp9"; |
private static final String H264_MIME_TYPE = "video/avc"; |
// List of supported HW VP8 decoders. |
private static final String[] supportedVp8HwCodecPrefixes = |
{"OMX.qcom.", "OMX.Nvidia.", "OMX.Exynos.", "OMX.Intel." }; |
+ // List of supported HW VP9 decoders. |
+ private static final String[] supportedVp9HwCodecPrefixes = |
+ {"OMX.qcom."}; |
// List of supported HW H.264 decoders. |
private static final String[] supportedH264HwCodecPrefixes = |
{"OMX.qcom.", "OMX.Intel." }; |
@@ -135,6 +139,7 @@ public class MediaCodecVideoDecoder { |
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { |
return null; // MediaCodec.setParameters is missing. |
} |
+ Logging.d(TAG, "Trying to find HW decoder for mime " + mime); |
for (int i = 0; i < MediaCodecList.getCodecCount(); ++i) { |
MediaCodecInfo info = MediaCodecList.getCodecInfoAt(i); |
if (info.isEncoder()) { |
@@ -150,7 +155,7 @@ public class MediaCodecVideoDecoder { |
if (name == null) { |
continue; // No HW support in this codec; try the next one. |
} |
- Logging.v(TAG, "Found candidate decoder " + name); |
+ Logging.d(TAG, "Found candidate decoder " + name); |
// Check if this is supported decoder. |
boolean supportedCodec = false; |
@@ -181,6 +186,7 @@ public class MediaCodecVideoDecoder { |
} |
} |
} |
+ Logging.d(TAG, "No HW decoder found for mime " + mime); |
return null; // No HW decoder. |
} |
@@ -188,6 +194,10 @@ public class MediaCodecVideoDecoder { |
return findDecoder(VP8_MIME_TYPE, supportedVp8HwCodecPrefixes) != null; |
} |
+ public static boolean isVp9HwSupported() { |
+ return findDecoder(VP9_MIME_TYPE, supportedVp9HwCodecPrefixes) != null; |
+ } |
+ |
public static boolean isH264HwSupported() { |
return findDecoder(H264_MIME_TYPE, supportedH264HwCodecPrefixes) != null; |
} |
@@ -223,6 +233,9 @@ public class MediaCodecVideoDecoder { |
if (type == VideoCodecType.VIDEO_CODEC_VP8) { |
mime = VP8_MIME_TYPE; |
supportedCodecPrefixes = supportedVp8HwCodecPrefixes; |
+ } else if (type == VideoCodecType.VIDEO_CODEC_VP9) { |
+ mime = VP9_MIME_TYPE; |
+ supportedCodecPrefixes = supportedVp9HwCodecPrefixes; |
} else if (type == VideoCodecType.VIDEO_CODEC_H264) { |
mime = H264_MIME_TYPE; |
supportedCodecPrefixes = supportedH264HwCodecPrefixes; |