AppRTCMobile support to turn off the WebRTC AGC and HPF

This CL adds support for turning off the WebRTC AGC
and HPF in AppRTCMobile.

BUG=webrtc:6183,webrtc:6220

Review-Url: https://codereview.webrtc.org/2871393002
Cr-Commit-Position: refs/heads/master@{#18204}
This commit is contained in:
peah
2017-05-18 15:09:33 -07:00
committed by Commit bot
parent 93e4522105
commit b274204feb
7 changed files with 75 additions and 42 deletions

View File

@ -106,6 +106,8 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
public static final String EXTRA_DISABLE_BUILT_IN_AGC = "org.appspot.apprtc.DISABLE_BUILT_IN_AGC";
public static final String EXTRA_DISABLE_BUILT_IN_NS = "org.appspot.apprtc.DISABLE_BUILT_IN_NS";
public static final String EXTRA_ENABLE_LEVEL_CONTROL = "org.appspot.apprtc.ENABLE_LEVEL_CONTROL";
public static final String EXTRA_DISABLE_WEBRTC_AGC_AND_HPF =
"org.appspot.apprtc.DISABLE_WEBRTC_GAIN_CONTROL";
public static final String EXTRA_DISPLAY_HUD = "org.appspot.apprtc.DISPLAY_HUD";
public static final String EXTRA_TRACING = "org.appspot.apprtc.TRACING";
public static final String EXTRA_CMDLINE = "org.appspot.apprtc.CMDLINE";
@ -323,7 +325,8 @@ public class CallActivity extends Activity implements AppRTCClient.SignalingEven
intent.getBooleanExtra(EXTRA_DISABLE_BUILT_IN_AEC, false),
intent.getBooleanExtra(EXTRA_DISABLE_BUILT_IN_AGC, false),
intent.getBooleanExtra(EXTRA_DISABLE_BUILT_IN_NS, false),
intent.getBooleanExtra(EXTRA_ENABLE_LEVEL_CONTROL, false), dataChannelParameters);
intent.getBooleanExtra(EXTRA_ENABLE_LEVEL_CONTROL, false),
intent.getBooleanExtra(EXTRA_DISABLE_WEBRTC_AGC_AND_HPF, false), dataChannelParameters);
commandLineRun = intent.getBooleanExtra(EXTRA_CMDLINE, false);
runTimeMs = intent.getIntExtra(EXTRA_RUNTIME, 0);

View File

@ -74,6 +74,7 @@ public class ConnectActivity extends Activity {
private String keyprefDisableBuiltInAgc;
private String keyprefDisableBuiltInNs;
private String keyprefEnableLevelControl;
private String keyprefDisableWebRtcAGCAndHPF;
private String keyprefDisplayHud;
private String keyprefTracing;
private String keyprefRoomServerUrl;
@ -118,6 +119,7 @@ public class ConnectActivity extends Activity {
keyprefDisableBuiltInAgc = getString(R.string.pref_disable_built_in_agc_key);
keyprefDisableBuiltInNs = getString(R.string.pref_disable_built_in_ns_key);
keyprefEnableLevelControl = getString(R.string.pref_enable_level_control_key);
keyprefDisableWebRtcAGCAndHPF = getString(R.string.pref_disable_webrtc_agc_and_hpf_key);
keyprefDisplayHud = getString(R.string.pref_displayhud_key);
keyprefTracing = getString(R.string.pref_tracing_key);
keyprefRoomServerUrl = getString(R.string.pref_room_server_url_key);
@ -393,6 +395,11 @@ public class ConnectActivity extends Activity {
CallActivity.EXTRA_ENABLE_LEVEL_CONTROL, R.string.pref_enable_level_control_key,
useValuesFromIntent);
// Check Disable gain control
boolean disableWebRtcAGCAndHPF = sharedPrefGetBoolean(
R.string.pref_disable_webrtc_agc_and_hpf_key, CallActivity.EXTRA_DISABLE_WEBRTC_AGC_AND_HPF,
R.string.pref_disable_webrtc_agc_and_hpf_key, useValuesFromIntent);
// Get video resolution from settings.
int videoWidth = 0;
int videoHeight = 0;
@ -521,6 +528,7 @@ public class ConnectActivity extends Activity {
intent.putExtra(CallActivity.EXTRA_DISABLE_BUILT_IN_AGC, disableBuiltInAGC);
intent.putExtra(CallActivity.EXTRA_DISABLE_BUILT_IN_NS, disableBuiltInNS);
intent.putExtra(CallActivity.EXTRA_ENABLE_LEVEL_CONTROL, enableLevelControl);
intent.putExtra(CallActivity.EXTRA_DISABLE_WEBRTC_AGC_AND_HPF, disableWebRtcAGCAndHPF);
intent.putExtra(CallActivity.EXTRA_AUDIO_BITRATE, audioStartBitrate);
intent.putExtra(CallActivity.EXTRA_AUDIOCODEC, audioCodec);
intent.putExtra(CallActivity.EXTRA_DISPLAY_HUD, displayHud);

View File

@ -87,6 +87,8 @@ public class PeerConnectionClient {
private static final String VIDEO_VP8_INTEL_HW_ENCODER_FIELDTRIAL = "WebRTC-IntelVP8/Enabled/";
private static final String VIDEO_H264_HIGH_PROFILE_FIELDTRIAL =
"WebRTC-H264HighProfile/Enabled/";
private static final String DISABLE_WEBRTC_AGC_FIELDTRIAL =
"WebRTC-Audio-MinimizeResamplingOnMobile/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";
@ -190,6 +192,7 @@ public class PeerConnectionClient {
public final boolean disableBuiltInAGC;
public final boolean disableBuiltInNS;
public final boolean enableLevelControl;
public final boolean disableWebRtcAGCAndHPF;
private final DataChannelParameters dataChannelParameters;
public PeerConnectionParameters(boolean videoCallEnabled, boolean loopback, boolean tracing,
@ -197,11 +200,11 @@ public class PeerConnectionClient {
boolean videoCodecHwAcceleration, boolean videoFlexfecEnabled, int audioStartBitrate,
String audioCodec, boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES,
boolean disableBuiltInAEC, boolean disableBuiltInAGC, boolean disableBuiltInNS,
boolean enableLevelControl) {
boolean enableLevelControl, boolean disableWebRtcAGCAndHPF) {
this(videoCallEnabled, loopback, tracing, videoWidth, videoHeight, videoFps, videoMaxBitrate,
videoCodec, videoCodecHwAcceleration, videoFlexfecEnabled, audioStartBitrate, audioCodec,
noAudioProcessing, aecDump, useOpenSLES, disableBuiltInAEC, disableBuiltInAGC,
disableBuiltInNS, enableLevelControl, null);
disableBuiltInNS, enableLevelControl, disableWebRtcAGCAndHPF, null);
}
public PeerConnectionParameters(boolean videoCallEnabled, boolean loopback, boolean tracing,
@ -209,7 +212,8 @@ public class PeerConnectionClient {
boolean videoCodecHwAcceleration, boolean videoFlexfecEnabled, int audioStartBitrate,
String audioCodec, boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES,
boolean disableBuiltInAEC, boolean disableBuiltInAGC, boolean disableBuiltInNS,
boolean enableLevelControl, DataChannelParameters dataChannelParameters) {
boolean enableLevelControl, boolean disableWebRtcAGCAndHPF,
DataChannelParameters dataChannelParameters) {
this.videoCallEnabled = videoCallEnabled;
this.loopback = loopback;
this.tracing = tracing;
@ -229,6 +233,7 @@ public class PeerConnectionClient {
this.disableBuiltInAGC = disableBuiltInAGC;
this.disableBuiltInNS = disableBuiltInNS;
this.enableLevelControl = enableLevelControl;
this.disableWebRtcAGCAndHPF = disableWebRtcAGCAndHPF;
this.dataChannelParameters = dataChannelParameters;
}
}
@ -389,6 +394,10 @@ public class PeerConnectionClient {
Log.d(TAG, "Enable FlexFEC field trial.");
}
fieldTrials += VIDEO_VP8_INTEL_HW_ENCODER_FIELDTRIAL;
if (peerConnectionParameters.disableWebRtcAGCAndHPF) {
fieldTrials += DISABLE_WEBRTC_AGC_FIELDTRIAL;
Log.d(TAG, "Disable WebRTC AGC field trial.");
}
// Check preferred video codec.
preferredVideoCodec = VIDEO_CODEC_VP8;

View File

@ -47,6 +47,7 @@ public class SettingsActivity extends Activity implements OnSharedPreferenceChan
private String keyprefDisableBuiltInAGC;
private String keyprefDisableBuiltInNS;
private String keyprefEnableLevelControl;
private String keyprefDisableWebRtcAGCAndHPF;
private String keyprefSpeakerphone;
private String keyPrefRoomServerUrl;
@ -87,6 +88,7 @@ public class SettingsActivity extends Activity implements OnSharedPreferenceChan
keyprefDisableBuiltInAGC = getString(R.string.pref_disable_built_in_agc_key);
keyprefDisableBuiltInNS = getString(R.string.pref_disable_built_in_ns_key);
keyprefEnableLevelControl = getString(R.string.pref_enable_level_control_key);
keyprefDisableWebRtcAGCAndHPF = getString(R.string.pref_disable_webrtc_agc_and_hpf_key);
keyprefSpeakerphone = getString(R.string.pref_speakerphone_key);
keyprefEnableDataChannel = getString(R.string.pref_enable_datachannel_key);
@ -141,6 +143,7 @@ public class SettingsActivity extends Activity implements OnSharedPreferenceChan
updateSummaryB(sharedPreferences, keyprefDisableBuiltInAGC);
updateSummaryB(sharedPreferences, keyprefDisableBuiltInNS);
updateSummaryB(sharedPreferences, keyprefEnableLevelControl);
updateSummaryB(sharedPreferences, keyprefDisableWebRtcAGCAndHPF);
updateSummaryList(sharedPreferences, keyprefSpeakerphone);
updateSummaryB(sharedPreferences, keyprefEnableDataChannel);
@ -234,6 +237,7 @@ public class SettingsActivity extends Activity implements OnSharedPreferenceChan
|| key.equals(keyprefDisableBuiltInAGC)
|| key.equals(keyprefDisableBuiltInNS)
|| key.equals(keyprefEnableLevelControl)
|| key.equals(keyprefDisableWebRtcAGCAndHPF)
|| key.equals(keyPrefDisplayHud)
|| key.equals(keyprefEnableDataChannel)
|| key.equals(keyprefOrdered)