| Index: webrtc/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java
|
| diff --git a/webrtc/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java b/webrtc/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java
|
| index 432c0bf877c393cbf3d250c7c7989b9ff91c7d1c..c3e2133f77013234c22f16a058baf9d3449aa3e4 100644
|
| --- a/webrtc/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java
|
| +++ b/webrtc/sdk/android/api/org/webrtc/MediaCodecVideoEncoder.java
|
| @@ -20,8 +20,8 @@ import android.opengl.GLES20;
|
| import android.os.Build;
|
| import android.os.Bundle;
|
| import android.view.Surface;
|
| -
|
| import java.nio.ByteBuffer;
|
| +import java.util.ArrayList;
|
| import java.util.Arrays;
|
| import java.util.HashSet;
|
| import java.util.List;
|
| @@ -114,8 +114,17 @@ public class MediaCodecVideoEncoder {
|
| "OMX.qcom.", Build.VERSION_CODES.KITKAT, BitrateAdjustmentType.NO_ADJUSTMENT);
|
| private static final MediaCodecProperties exynosVp8HwProperties = new MediaCodecProperties(
|
| "OMX.Exynos.", Build.VERSION_CODES.M, BitrateAdjustmentType.DYNAMIC_ADJUSTMENT);
|
| - private static final MediaCodecProperties[] vp8HwList =
|
| - new MediaCodecProperties[] {qcomVp8HwProperties, exynosVp8HwProperties};
|
| + private static final MediaCodecProperties intelVp8HwProperties = new MediaCodecProperties(
|
| + "OMX.Intel.", Build.VERSION_CODES.LOLLIPOP, BitrateAdjustmentType.NO_ADJUSTMENT);
|
| + private static MediaCodecProperties[] vp8HwList() {
|
| + final ArrayList<MediaCodecProperties> supported_codecs = new ArrayList<MediaCodecProperties>();
|
| + supported_codecs.add(qcomVp8HwProperties);
|
| + supported_codecs.add(exynosVp8HwProperties);
|
| + if (PeerConnectionFactory.fieldTrialsFindFullName("WebRTC-IntelVP8").equals("Enabled")) {
|
| + supported_codecs.add(intelVp8HwProperties);
|
| + }
|
| + return supported_codecs.toArray(new MediaCodecProperties[supported_codecs.size()]);
|
| + }
|
|
|
| // List of supported HW VP9 encoders.
|
| private static final MediaCodecProperties qcomVp9HwProperties = new MediaCodecProperties(
|
| @@ -203,14 +212,14 @@ public class MediaCodecVideoEncoder {
|
| // Functions to query if HW encoding is supported.
|
| public static boolean isVp8HwSupported() {
|
| return !hwEncoderDisabledTypes.contains(VP8_MIME_TYPE)
|
| - && (findHwEncoder(VP8_MIME_TYPE, vp8HwList, supportedColorList) != null);
|
| + && (findHwEncoder(VP8_MIME_TYPE, vp8HwList(), supportedColorList) != null);
|
| }
|
|
|
| public static EncoderProperties vp8HwEncoderProperties() {
|
| if (hwEncoderDisabledTypes.contains(VP8_MIME_TYPE)) {
|
| return null;
|
| } else {
|
| - return findHwEncoder(VP8_MIME_TYPE, vp8HwList, supportedColorList);
|
| + return findHwEncoder(VP8_MIME_TYPE, vp8HwList(), supportedColorList);
|
| }
|
| }
|
|
|
| @@ -226,7 +235,7 @@ public class MediaCodecVideoEncoder {
|
|
|
| public static boolean isVp8HwSupportedUsingTextures() {
|
| return !hwEncoderDisabledTypes.contains(VP8_MIME_TYPE)
|
| - && (findHwEncoder(VP8_MIME_TYPE, vp8HwList, supportedSurfaceColorList) != null);
|
| + && (findHwEncoder(VP8_MIME_TYPE, vp8HwList(), supportedSurfaceColorList) != null);
|
| }
|
|
|
| public static boolean isVp9HwSupportedUsingTextures() {
|
| @@ -387,7 +396,7 @@ public class MediaCodecVideoEncoder {
|
| if (type == VideoCodecType.VIDEO_CODEC_VP8) {
|
| mime = VP8_MIME_TYPE;
|
| properties = findHwEncoder(
|
| - VP8_MIME_TYPE, vp8HwList, useSurface ? supportedSurfaceColorList : supportedColorList);
|
| + VP8_MIME_TYPE, vp8HwList(), useSurface ? supportedSurfaceColorList : supportedColorList);
|
| keyFrameIntervalSec = 100;
|
| } else if (type == VideoCodecType.VIDEO_CODEC_VP9) {
|
| mime = VP9_MIME_TYPE;
|
|
|