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:
@ -152,6 +152,10 @@
|
||||
<string name="pref_enable_level_control_title">Enable level control.</string>
|
||||
<string name="pref_enable_level_control_default">false</string>
|
||||
|
||||
<string name="pref_disable_webrtc_agc_and_hpf_key">disable_webrtc_agc_and_hpf_preference</string>
|
||||
<string name="pref_disable_webrtc_agc_and_hpf_title">Disable WebRTC AGC and HPF.</string>
|
||||
<string name="pref_disable_webrtc_agc_default">false</string>
|
||||
|
||||
<string name="pref_speakerphone_key">speakerphone_preference</string>
|
||||
<string name="pref_speakerphone_title">Speakerphone.</string>
|
||||
<string name="pref_speakerphone_dlg">Speakerphone.</string>
|
||||
|
||||
@ -152,6 +152,11 @@
|
||||
android:title="@string/pref_enable_level_control_title"
|
||||
android:defaultValue="@string/pref_enable_level_control_default" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/pref_disable_webrtc_agc_and_hpf_key"
|
||||
android:title="@string/pref_disable_webrtc_agc_and_hpf_title"
|
||||
android:defaultValue="@string/pref_disable_webrtc_agc_default" />
|
||||
|
||||
<ListPreference
|
||||
android:key="@string/pref_speakerphone_key"
|
||||
android:title="@string/pref_speakerphone_title"
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -263,8 +263,8 @@ public class PeerConnectionClientTest implements PeerConnectionEvents {
|
||||
}
|
||||
|
||||
private PeerConnectionParameters createParametersForAudioCall() {
|
||||
PeerConnectionParameters peerConnectionParameters =
|
||||
new PeerConnectionParameters(false, /* videoCallEnabled */
|
||||
PeerConnectionParameters peerConnectionParameters = new PeerConnectionParameters(
|
||||
false, /* videoCallEnabled */
|
||||
true, /* loopback */
|
||||
false, /* tracing */
|
||||
// Video codec parameters.
|
||||
@ -281,7 +281,7 @@ public class PeerConnectionClientTest implements PeerConnectionEvents {
|
||||
false, /* noAudioProcessing */
|
||||
false, /* aecDump */
|
||||
false /* useOpenSLES */, false /* disableBuiltInAEC */, false /* disableBuiltInAGC */,
|
||||
false /* disableBuiltInNS */, false /* enableLevelControl */);
|
||||
false /* disableBuiltInNS */, false /* enableLevelControl */, false /* disableWebRtcAGC */);
|
||||
|
||||
return peerConnectionParameters;
|
||||
}
|
||||
@ -301,8 +301,8 @@ public class PeerConnectionClientTest implements PeerConnectionEvents {
|
||||
}
|
||||
|
||||
private PeerConnectionParameters createParametersForVideoCall(String videoCodec) {
|
||||
PeerConnectionParameters peerConnectionParameters =
|
||||
new PeerConnectionParameters(true, /* videoCallEnabled */
|
||||
PeerConnectionParameters peerConnectionParameters = new PeerConnectionParameters(
|
||||
true, /* videoCallEnabled */
|
||||
true, /* loopback */
|
||||
false, /* tracing */
|
||||
// Video codec parameters.
|
||||
@ -319,7 +319,7 @@ public class PeerConnectionClientTest implements PeerConnectionEvents {
|
||||
false, /* noAudioProcessing */
|
||||
false, /* aecDump */
|
||||
false /* useOpenSLES */, false /* disableBuiltInAEC */, false /* disableBuiltInAGC */,
|
||||
false /* disableBuiltInNS */, false /* enableLevelControl */);
|
||||
false /* disableBuiltInNS */, false /* enableLevelControl */, false /* disableWebRtcAGC */);
|
||||
|
||||
return peerConnectionParameters;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user