Index: webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java |
diff --git a/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java b/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java |
index 1a650ff264cc21344ec14625f729b9a7a09c406c..61784a0fd385d96f3b74ebd9dd6e12e339c6f546 100644 |
--- a/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java |
+++ b/webrtc/examples/androidapp/src/org/appspot/apprtc/PeerConnectionClient.java |
@@ -71,6 +71,7 @@ public class PeerConnectionClient { |
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"; |
+ private static final String VIDEO_FLEXFEC_FIELDTRIAL = "WebRTC-FlexFEC-03/Enabled/"; |
private static final String AUDIO_CODEC_PARAM_BITRATE = "maxaveragebitrate"; |
private static final String AUDIO_ECHO_CANCELLATION_CONSTRAINT = "googEchoCancellation"; |
private static final String AUDIO_AUTO_GAIN_CONTROL_CONSTRAINT = "googAutoGainControl"; |
@@ -165,6 +166,7 @@ public class PeerConnectionClient { |
public final int videoMaxBitrate; |
public final String videoCodec; |
public final boolean videoCodecHwAcceleration; |
+ public final boolean videoFlexfecEnabled; |
public final int audioStartBitrate; |
public final String audioCodec; |
public final boolean noAudioProcessing; |
@@ -178,21 +180,22 @@ public class PeerConnectionClient { |
public PeerConnectionParameters(boolean videoCallEnabled, boolean loopback, boolean tracing, |
int videoWidth, int videoHeight, int videoFps, int videoMaxBitrate, String videoCodec, |
- boolean videoCodecHwAcceleration, int audioStartBitrate, String audioCodec, |
- boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES, boolean disableBuiltInAEC, |
- boolean disableBuiltInAGC, boolean disableBuiltInNS, boolean enableLevelControl) { |
+ boolean videoCodecHwAcceleration, boolean videoFlexfecEnabled, int audioStartBitrate, |
+ String audioCodec, boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES, |
+ boolean disableBuiltInAEC, boolean disableBuiltInAGC, boolean disableBuiltInNS, |
+ boolean enableLevelControl) { |
this(videoCallEnabled, loopback, tracing, videoWidth, videoHeight, videoFps, videoMaxBitrate, |
- videoCodec, videoCodecHwAcceleration, audioStartBitrate, audioCodec, noAudioProcessing, |
- aecDump, useOpenSLES, disableBuiltInAEC, disableBuiltInAGC, disableBuiltInNS, |
- enableLevelControl, null); |
+ videoCodec, videoCodecHwAcceleration, videoFlexfecEnabled, audioStartBitrate, audioCodec, |
+ noAudioProcessing, aecDump, useOpenSLES, disableBuiltInAEC, disableBuiltInAGC, |
+ disableBuiltInNS, enableLevelControl, null); |
} |
public PeerConnectionParameters(boolean videoCallEnabled, boolean loopback, boolean tracing, |
int videoWidth, int videoHeight, int videoFps, int videoMaxBitrate, String videoCodec, |
- boolean videoCodecHwAcceleration, int audioStartBitrate, String audioCodec, |
- boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES, boolean disableBuiltInAEC, |
- boolean disableBuiltInAGC, boolean disableBuiltInNS, boolean enableLevelControl, |
- DataChannelParameters dataChannelParameters) { |
+ boolean videoCodecHwAcceleration, boolean videoFlexfecEnabled, int audioStartBitrate, |
+ String audioCodec, boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES, |
+ boolean disableBuiltInAEC, boolean disableBuiltInAGC, boolean disableBuiltInNS, |
+ boolean enableLevelControl, DataChannelParameters dataChannelParameters) { |
this.videoCallEnabled = videoCallEnabled; |
this.loopback = loopback; |
this.tracing = tracing; |
@@ -201,6 +204,7 @@ public class PeerConnectionClient { |
this.videoFps = videoFps; |
this.videoMaxBitrate = videoMaxBitrate; |
this.videoCodec = videoCodec; |
+ this.videoFlexfecEnabled = videoFlexfecEnabled; |
this.videoCodecHwAcceleration = videoCodecHwAcceleration; |
this.audioStartBitrate = audioStartBitrate; |
this.audioCodec = audioCodec; |
@@ -366,7 +370,12 @@ public class PeerConnectionClient { |
isError = false; |
// Initialize field trials. |
- PeerConnectionFactory.initializeFieldTrials(""); |
+ if (peerConnectionParameters.videoFlexfecEnabled) { |
+ PeerConnectionFactory.initializeFieldTrials(VIDEO_FLEXFEC_FIELDTRIAL); |
+ Log.d(TAG, "Enable FlexFEC field trial."); |
+ } else { |
+ PeerConnectionFactory.initializeFieldTrials(""); |
+ } |
// Check preferred video codec. |
preferredVideoCodec = VIDEO_CODEC_VP8; |
@@ -377,7 +386,7 @@ public class PeerConnectionClient { |
preferredVideoCodec = VIDEO_CODEC_H264; |
} |
} |
- Log.d(TAG, "Pereferred video codec: " + preferredVideoCodec); |
+ Log.d(TAG, "Preferred video codec: " + preferredVideoCodec); |
// Check if ISAC is used by default. |
preferIsac = peerConnectionParameters.audioCodec != null |