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

Unified Diff: webrtc/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java

Issue 2977153003: Add texture support to HardwareVideoEncoder. (Closed)
Patch Set: Created 3 years, 5 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: 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 9b904431b567e352740ae76b8ffa25c83bd26857..1e203cad1e6724b93a57da8018185b6168e89d69 100644
--- a/webrtc/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java
+++ b/webrtc/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java
@@ -55,14 +55,27 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory {
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;
- public HardwareVideoEncoderFactory(boolean enableIntelVp8Encoder, boolean enableH264HighProfile) {
+ public HardwareVideoEncoderFactory(
+ EglBase.Context sharedContext, boolean enableIntelVp8Encoder, boolean enableH264HighProfile) {
+ // Texture mode requires EglBase14.
+ if (sharedContext instanceof EglBase14.Context) {
sakal 2017/07/17 12:25:41 I would prefer this just taking in EglBase14.Conte
mellem 2017/07/17 17:49:29 EglBase14 is not part of the api (it's a package-p
+ this.sharedContext = (EglBase14.Context) sharedContext;
+ } else {
+ this.sharedContext = null;
+ }
this.enableIntelVp8Encoder = enableIntelVp8Encoder;
this.enableH264HighProfile = enableH264HighProfile;
}
+ @Deprecated
+ public HardwareVideoEncoderFactory(boolean enableIntelVp8Encoder, boolean enableH264HighProfile) {
+ this(null, enableIntelVp8Encoder, enableH264HighProfile);
+ }
+
@Override
public VideoEncoder createEncoder(VideoCodecInfo input) {
VideoCodecType type = VideoCodecType.valueOf(input.name);
@@ -74,11 +87,14 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory {
String codecName = info.getName();
String mime = type.mimeType();
- int colorFormat = MediaCodecUtils.selectColorFormat(
- MediaCodecUtils.ENCODER_COLOR_FORMATS, info.getCapabilitiesForType(mime));
+ int colorFormat = MediaCodecUtils.selectColorFormat(sharedContext == null
+ ? MediaCodecUtils.ENCODER_COLOR_FORMATS
+ : MediaCodecUtils.TEXTURE_COLOR_FORMATS,
+ info.getCapabilitiesForType(mime));
return new HardwareVideoEncoder(codecName, type, colorFormat, getKeyFrameIntervalSec(type),
- getForcedKeyFrameIntervalMs(type, codecName), createBitrateAdjuster(type, codecName));
+ getForcedKeyFrameIntervalMs(type, codecName), createBitrateAdjuster(type, codecName),
+ sharedContext);
}
@Override
@@ -127,8 +143,10 @@ public class HardwareVideoEncoderFactory implements VideoEncoderFactory {
return false;
}
// Check for a supported color format.
- if (MediaCodecUtils.selectColorFormat(
- MediaCodecUtils.ENCODER_COLOR_FORMATS, info.getCapabilitiesForType(type.mimeType()))
+ if (MediaCodecUtils.selectColorFormat(sharedContext == null
+ ? MediaCodecUtils.ENCODER_COLOR_FORMATS
+ : MediaCodecUtils.TEXTURE_COLOR_FORMATS,
+ info.getCapabilitiesForType(type.mimeType()))
== null) {
return false;
}

Powered by Google App Engine
This is Rietveld 408576698