diff --git a/webrtc/examples/androidapp/res/values/arrays.xml b/webrtc/examples/androidapp/res/values/arrays.xml index c663400efc..e0e6ccbdc2 100644 --- a/webrtc/examples/androidapp/res/values/arrays.xml +++ b/webrtc/examples/androidapp/res/values/arrays.xml @@ -32,7 +32,8 @@ VP8 VP9 - H264 + H264 Baseline + H264 High diff --git a/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java b/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java index c9f880ee5e..5b725fa22c 100644 --- a/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java +++ b/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java @@ -74,6 +74,8 @@ public class PeerConnectionClient { private static final String VIDEO_CODEC_VP8 = "VP8"; private static final String VIDEO_CODEC_VP9 = "VP9"; private static final String VIDEO_CODEC_H264 = "H264"; + private static final String VIDEO_CODEC_H264_BASELINE = "H264 Baseline"; + private static final String VIDEO_CODEC_H264_HIGH = "H264 High"; private static final String AUDIO_CODEC_OPUS = "opus"; private static final String AUDIO_CODEC_ISAC = "ISAC"; private static final String VIDEO_CODEC_PARAM_START_BITRATE = "x-google-start-bitrate"; @@ -383,19 +385,32 @@ public class PeerConnectionClient { Log.d(TAG, "Enable FlexFEC field trial."); } fieldTrials += VIDEO_VP8_INTEL_HW_ENCODER_FIELDTRIAL; - fieldTrials += VIDEO_H264_HIGH_PROFILE_FIELDTRIAL; - PeerConnectionFactory.initializeFieldTrials(fieldTrials); // Check preferred video codec. preferredVideoCodec = VIDEO_CODEC_VP8; if (videoCallEnabled && peerConnectionParameters.videoCodec != null) { - if (peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_VP9)) { - preferredVideoCodec = VIDEO_CODEC_VP9; - } else if (peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_H264)) { - preferredVideoCodec = VIDEO_CODEC_H264; + switch (peerConnectionParameters.videoCodec) { + case VIDEO_CODEC_VP8: + preferredVideoCodec = VIDEO_CODEC_VP8; + break; + case VIDEO_CODEC_VP9: + preferredVideoCodec = VIDEO_CODEC_VP9; + break; + case VIDEO_CODEC_H264_BASELINE: + preferredVideoCodec = VIDEO_CODEC_H264; + break; + case VIDEO_CODEC_H264_HIGH: + // TODO(magjed): Strip High from SDP when selecting Baseline instead of using field trial. + fieldTrials += VIDEO_H264_HIGH_PROFILE_FIELDTRIAL; + preferredVideoCodec = VIDEO_CODEC_H264; + break; + default: + preferredVideoCodec = VIDEO_CODEC_VP8; } } Log.d(TAG, "Preferred video codec: " + preferredVideoCodec); + PeerConnectionFactory.initializeFieldTrials(fieldTrials); + Log.d(TAG, "Field trials: " + fieldTrials); // Check if ISAC is used by default. preferIsac = peerConnectionParameters.audioCodec != null