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}
This commit is contained in:
Magnus Jedvert
2017-02-14 12:41:35 +01:00
parent 1f16ee38c1
commit 0706813280
2 changed files with 23 additions and 7 deletions

View File

@ -32,7 +32,8 @@
<string-array name="videoCodecs">
<item>VP8</item>
<item>VP9</item>
<item>H264</item>
<item>H264 Baseline</item>
<item>H264 High</item>
</string-array>
<string-array name="audioCodecs">

View File

@ -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