Index: webrtc/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java |
diff --git a/webrtc/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java b/webrtc/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java |
index ea84bc4335bc0bb11510c1e40e9cb3da0d369bbb..9324ba3f25d7bb6e84faa9c4a9ab41f348fc1842 100644 |
--- a/webrtc/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java |
+++ b/webrtc/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java |
@@ -14,13 +14,11 @@ import static org.webrtc.MediaCodecUtils.EXYNOS_PREFIX; |
import static org.webrtc.MediaCodecUtils.INTEL_PREFIX; |
import static org.webrtc.MediaCodecUtils.QCOM_PREFIX; |
-import android.media.MediaCodec; |
import android.media.MediaCodecInfo; |
-import android.media.MediaCodecInfo.CodecCapabilities; |
import android.media.MediaCodecList; |
import android.os.Build; |
-import java.util.Arrays; |
import java.util.ArrayList; |
+import java.util.Arrays; |
import java.util.HashMap; |
import java.util.List; |
import java.util.Map; |
@@ -41,20 +39,6 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory { |
private static final List<String> H264_HW_EXCEPTION_MODELS = |
Arrays.asList("SAMSUNG-SGH-I337", "Nexus 7", "Nexus 4"); |
- // Keys for H264 VideoCodecInfo properties. |
- private static final String H264_FMTP_PROFILE_LEVEL_ID = "profile-level-id"; |
- private static final String H264_FMTP_LEVEL_ASYMMETRY_ALLOWED = "level-asymmetry-allowed"; |
- private static final String H264_FMTP_PACKETIZATION_MODE = "packetization-mode"; |
- |
- // Supported H264 profile ids and levels. |
- private static final String H264_PROFILE_CONSTRAINED_BASELINE = "4200"; |
- private static final String H264_PROFILE_CONSTRAINED_HIGH = "640c"; |
- private static final String H264_LEVEL_3_1 = "1f"; // 31 in hex. |
- private static final String H264_CONSTRAINED_BASELINE_3_1 = |
- H264_PROFILE_CONSTRAINED_BASELINE + H264_LEVEL_3_1; |
- private static final String H264_CONSTRAINED_HIGH_3_1 = |
- H264_PROFILE_CONSTRAINED_HIGH + H264_LEVEL_3_1; |
- |
private final EglBase14.Context sharedContext; |
private final boolean enableIntelVp8Encoder; |
private final boolean enableH264HighProfile; |
@@ -93,9 +77,9 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory { |
: MediaCodecUtils.TEXTURE_COLOR_FORMATS, |
info.getCapabilitiesForType(mime)); |
- return new HardwareVideoEncoder(codecName, type, colorFormat, getKeyFrameIntervalSec(type), |
- getForcedKeyFrameIntervalMs(type, codecName), createBitrateAdjuster(type, codecName), |
- sharedContext); |
+ return new HardwareVideoEncoder(codecName, type, colorFormat, input.params, |
+ getKeyFrameIntervalSec(type), getForcedKeyFrameIntervalMs(type, codecName), |
+ createBitrateAdjuster(type, codecName), sharedContext); |
} |
@Override |
@@ -250,10 +234,11 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory { |
return new HashMap<String, String>(); |
case H264: |
Map<String, String> properties = new HashMap<>(); |
- properties.put(H264_FMTP_LEVEL_ASYMMETRY_ALLOWED, "1"); |
- properties.put(H264_FMTP_PACKETIZATION_MODE, "1"); |
- properties.put(H264_FMTP_PROFILE_LEVEL_ID, |
- highProfile ? H264_CONSTRAINED_HIGH_3_1 : H264_CONSTRAINED_BASELINE_3_1); |
+ properties.put(VideoCodecInfo.H264_FMTP_LEVEL_ASYMMETRY_ALLOWED, "1"); |
+ properties.put(VideoCodecInfo.H264_FMTP_PACKETIZATION_MODE, "1"); |
+ properties.put(VideoCodecInfo.H264_FMTP_PROFILE_LEVEL_ID, |
+ highProfile ? VideoCodecInfo.H264_CONSTRAINED_HIGH_3_1 |
+ : VideoCodecInfo.H264_CONSTRAINED_BASELINE_3_1); |
return properties; |
default: |
throw new IllegalArgumentException("Unsupported codec: " + type); |