From 070681328037b24dff85c83e21038c70384481b5 Mon Sep 17 00:00:00 2001 From: Magnus Jedvert Date: Tue, 14 Feb 2017 12:41:35 +0100 Subject: [PATCH] Android AppRTCMobile: Add setting for selecting H264 Baseline or High profile BUG=webrtc:6337 R=glaznev@webrtc.org Review-Url: https://codereview.webrtc.org/2658243002 . Cr-Commit-Position: refs/heads/master@{#16605} --- .../examples/androidapp/res/values/arrays.xml | 3 ++- .../appspot/apprtc/PeerConnectionClient.java | 27 ++++++++++++++----- 2 files changed, 23 insertions(+), 7 deletions(-) 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