Add an option to disable built-in AGC/NS to AppRTC Demo.
R=henrika@webrtc.org Review-Url: https://codereview.webrtc.org/2184653002 Cr-Commit-Position: refs/heads/master@{#13530}
This commit is contained in:
@ -121,10 +121,22 @@
|
||||
<string name="pref_opensles_default">false</string>
|
||||
|
||||
<string name="pref_disable_built_in_aec_key">disable_built_in_aec_preference</string>
|
||||
<string name="pref_disable_built_in_aec_title">Disable built-in AEC.</string>
|
||||
<string name="pref_disable_built_in_aec_dlg">Disable built-in AEC.</string>
|
||||
<string name="pref_disable_built_in_aec_title">Disable hardware AEC.</string>
|
||||
<string name="pref_disable_built_in_aec_dlg">Disable hardware AEC.</string>
|
||||
<string name="pref_disable_built_in_aec_default">false</string>
|
||||
<string name="pref_built_in_aec_not_available">Built-in AEC is not available</string>
|
||||
<string name="pref_built_in_aec_not_available">Hardware AEC is not available</string>
|
||||
|
||||
<string name="pref_disable_built_in_agc_key">disable_built_in_agc_preference</string>
|
||||
<string name="pref_disable_built_in_agc_title">Disable hardware AGC.</string>
|
||||
<string name="pref_disable_built_in_agc_dlg">Disable hardware AGC.</string>
|
||||
<string name="pref_disable_built_in_agc_default">false</string>
|
||||
<string name="pref_built_in_agc_not_available">Hardware AGC is not available</string>
|
||||
|
||||
<string name="pref_disable_built_in_ns_key">disable_built_in_ns_preference</string>
|
||||
<string name="pref_disable_built_in_ns_title">Disable hardware NS.</string>
|
||||
<string name="pref_disable_built_in_ns_dlg">Disable hardware NS.</string>
|
||||
<string name="pref_disable_built_in_ns_default">false</string>
|
||||
<string name="pref_built_in_ns_not_available">Hardware NS is not available</string>
|
||||
|
||||
<string name="pref_miscsettings_key">misc_settings_key</string>
|
||||
<string name="pref_miscsettings_title">Miscellaneous settings.</string>
|
||||
|
||||
@ -123,6 +123,18 @@
|
||||
android:title="@string/pref_disable_built_in_aec_title"
|
||||
android:dialogTitle="@string/pref_disable_built_in_aec_dlg"
|
||||
android:defaultValue="@string/pref_disable_built_in_aec_default" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/pref_disable_built_in_agc_key"
|
||||
android:title="@string/pref_disable_built_in_agc_title"
|
||||
android:dialogTitle="@string/pref_disable_built_in_agc_dlg"
|
||||
android:defaultValue="@string/pref_disable_built_in_agc_default" />
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="@string/pref_disable_built_in_ns_key"
|
||||
android:title="@string/pref_disable_built_in_ns_title"
|
||||
android:dialogTitle="@string/pref_disable_built_in_ns_dlg"
|
||||
android:defaultValue="@string/pref_disable_built_in_ns_default" />
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
|
||||
@ -84,6 +84,10 @@ public class CallActivity extends Activity
|
||||
"org.appspot.apprtc.OPENSLES";
|
||||
public static final String EXTRA_DISABLE_BUILT_IN_AEC =
|
||||
"org.appspot.apprtc.DISABLE_BUILT_IN_AEC";
|
||||
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_DISPLAY_HUD =
|
||||
"org.appspot.apprtc.DISPLAY_HUD";
|
||||
public static final String EXTRA_TRACING = "org.appspot.apprtc.TRACING";
|
||||
@ -247,7 +251,9 @@ public class CallActivity extends Activity
|
||||
intent.getBooleanExtra(EXTRA_NOAUDIOPROCESSING_ENABLED, false),
|
||||
intent.getBooleanExtra(EXTRA_AECDUMP_ENABLED, false),
|
||||
intent.getBooleanExtra(EXTRA_OPENSLES_ENABLED, false),
|
||||
intent.getBooleanExtra(EXTRA_DISABLE_BUILT_IN_AEC, false));
|
||||
intent.getBooleanExtra(EXTRA_DISABLE_BUILT_IN_AEC, false),
|
||||
intent.getBooleanExtra(EXTRA_DISABLE_BUILT_IN_AGC, false),
|
||||
intent.getBooleanExtra(EXTRA_DISABLE_BUILT_IN_NS, false));
|
||||
commandLineRun = intent.getBooleanExtra(EXTRA_CMDLINE, false);
|
||||
runTimeMs = intent.getIntExtra(EXTRA_RUNTIME, 0);
|
||||
|
||||
|
||||
@ -71,6 +71,8 @@ public class ConnectActivity extends Activity {
|
||||
private String keyprefAecDump;
|
||||
private String keyprefOpenSLES;
|
||||
private String keyprefDisableBuiltInAec;
|
||||
private String keyprefDisableBuiltInAgc;
|
||||
private String keyprefDisableBuiltInNs;
|
||||
private String keyprefDisplayHud;
|
||||
private String keyprefTracing;
|
||||
private String keyprefRoomServerUrl;
|
||||
@ -103,6 +105,8 @@ public class ConnectActivity extends Activity {
|
||||
keyprefAecDump = getString(R.string.pref_aecdump_key);
|
||||
keyprefOpenSLES = getString(R.string.pref_opensles_key);
|
||||
keyprefDisableBuiltInAec = getString(R.string.pref_disable_built_in_aec_key);
|
||||
keyprefDisableBuiltInAgc = getString(R.string.pref_disable_built_in_agc_key);
|
||||
keyprefDisableBuiltInNs = getString(R.string.pref_disable_built_in_ns_key);
|
||||
keyprefDisplayHud = getString(R.string.pref_displayhud_key);
|
||||
keyprefTracing = getString(R.string.pref_tracing_key);
|
||||
keyprefRoomServerUrl = getString(R.string.pref_room_server_url_key);
|
||||
@ -299,6 +303,16 @@ public class ConnectActivity extends Activity {
|
||||
keyprefDisableBuiltInAec,
|
||||
Boolean.valueOf(getString(R.string.pref_disable_built_in_aec_default)));
|
||||
|
||||
// Check Disable built-in AGC flag.
|
||||
boolean disableBuiltInAGC = sharedPref.getBoolean(
|
||||
keyprefDisableBuiltInAgc,
|
||||
Boolean.valueOf(getString(R.string.pref_disable_built_in_agc_default)));
|
||||
|
||||
// Check Disable built-in NS flag.
|
||||
boolean disableBuiltInNS = sharedPref.getBoolean(
|
||||
keyprefDisableBuiltInNs,
|
||||
Boolean.valueOf(getString(R.string.pref_disable_built_in_ns_default)));
|
||||
|
||||
// Get video resolution from settings.
|
||||
int videoWidth = 0;
|
||||
int videoHeight = 0;
|
||||
@ -385,6 +399,8 @@ public class ConnectActivity extends Activity {
|
||||
intent.putExtra(CallActivity.EXTRA_AECDUMP_ENABLED, aecDump);
|
||||
intent.putExtra(CallActivity.EXTRA_OPENSLES_ENABLED, useOpenSLES);
|
||||
intent.putExtra(CallActivity.EXTRA_DISABLE_BUILT_IN_AEC, disableBuiltInAEC);
|
||||
intent.putExtra(CallActivity.EXTRA_DISABLE_BUILT_IN_AGC, disableBuiltInAGC);
|
||||
intent.putExtra(CallActivity.EXTRA_DISABLE_BUILT_IN_NS, disableBuiltInNS);
|
||||
intent.putExtra(CallActivity.EXTRA_AUDIO_BITRATE, audioStartBitrate);
|
||||
intent.putExtra(CallActivity.EXTRA_AUDIOCODEC, audioCodec);
|
||||
intent.putExtra(CallActivity.EXTRA_DISPLAY_HUD, displayHud);
|
||||
|
||||
@ -160,6 +160,8 @@ public class PeerConnectionClient {
|
||||
public final boolean aecDump;
|
||||
public final boolean useOpenSLES;
|
||||
public final boolean disableBuiltInAEC;
|
||||
public final boolean disableBuiltInAGC;
|
||||
public final boolean disableBuiltInNS;
|
||||
|
||||
public PeerConnectionParameters(
|
||||
boolean videoCallEnabled, boolean loopback, boolean tracing, boolean useCamera2,
|
||||
@ -167,7 +169,7 @@ public class PeerConnectionClient {
|
||||
int videoStartBitrate, String videoCodec, boolean videoCodecHwAcceleration,
|
||||
boolean captureToTexture, int audioStartBitrate, String audioCodec,
|
||||
boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES,
|
||||
boolean disableBuiltInAEC) {
|
||||
boolean disableBuiltInAEC, boolean disableBuiltInAGC, boolean disableBuiltInNS) {
|
||||
this.videoCallEnabled = videoCallEnabled;
|
||||
this.useCamera2 = useCamera2;
|
||||
this.loopback = loopback;
|
||||
@ -185,6 +187,8 @@ public class PeerConnectionClient {
|
||||
this.aecDump = aecDump;
|
||||
this.useOpenSLES = useOpenSLES;
|
||||
this.disableBuiltInAEC = disableBuiltInAEC;
|
||||
this.disableBuiltInAGC = disableBuiltInAGC;
|
||||
this.disableBuiltInNS = disableBuiltInNS;
|
||||
}
|
||||
}
|
||||
|
||||
@ -368,6 +372,22 @@ public class PeerConnectionClient {
|
||||
WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(false);
|
||||
}
|
||||
|
||||
if (peerConnectionParameters.disableBuiltInAGC) {
|
||||
Log.d(TAG, "Disable built-in AGC even if device supports it");
|
||||
WebRtcAudioUtils.setWebRtcBasedAutomaticGainControl(true);
|
||||
} else {
|
||||
Log.d(TAG, "Enable built-in AGC if device supports it");
|
||||
WebRtcAudioUtils.setWebRtcBasedAutomaticGainControl(false);
|
||||
}
|
||||
|
||||
if (peerConnectionParameters.disableBuiltInNS) {
|
||||
Log.d(TAG, "Disable built-in NS even if device supports it");
|
||||
WebRtcAudioUtils.setWebRtcBasedNoiseSuppressor(true);
|
||||
} else {
|
||||
Log.d(TAG, "Enable built-in NS if device supports it");
|
||||
WebRtcAudioUtils.setWebRtcBasedNoiseSuppressor(false);
|
||||
}
|
||||
|
||||
// Create peer connection factory.
|
||||
if (!PeerConnectionFactory.initializeAndroidGlobals(context, true, true,
|
||||
peerConnectionParameters.videoCodecHwAcceleration)) {
|
||||
|
||||
@ -44,6 +44,8 @@ public class SettingsActivity extends Activity
|
||||
private String keyprefAecDump;
|
||||
private String keyprefOpenSLES;
|
||||
private String keyprefDisableBuiltInAEC;
|
||||
private String keyprefDisableBuiltInAGC;
|
||||
private String keyprefDisableBuiltInNS;
|
||||
|
||||
private String keyPrefRoomServerUrl;
|
||||
private String keyPrefDisplayHud;
|
||||
@ -70,6 +72,8 @@ public class SettingsActivity extends Activity
|
||||
keyprefAecDump = getString(R.string.pref_aecdump_key);
|
||||
keyprefOpenSLES = getString(R.string.pref_opensles_key);
|
||||
keyprefDisableBuiltInAEC = getString(R.string.pref_disable_built_in_aec_key);
|
||||
keyprefDisableBuiltInAGC = getString(R.string.pref_disable_built_in_agc_key);
|
||||
keyprefDisableBuiltInNS = getString(R.string.pref_disable_built_in_ns_key);
|
||||
|
||||
keyPrefRoomServerUrl = getString(R.string.pref_room_server_url_key);
|
||||
keyPrefDisplayHud = getString(R.string.pref_displayhud_key);
|
||||
@ -109,6 +113,8 @@ public class SettingsActivity extends Activity
|
||||
updateSummaryB(sharedPreferences, keyprefAecDump);
|
||||
updateSummaryB(sharedPreferences, keyprefOpenSLES);
|
||||
updateSummaryB(sharedPreferences, keyprefDisableBuiltInAEC);
|
||||
updateSummaryB(sharedPreferences, keyprefDisableBuiltInAGC);
|
||||
updateSummaryB(sharedPreferences, keyprefDisableBuiltInNS);
|
||||
|
||||
updateSummary(sharedPreferences, keyPrefRoomServerUrl);
|
||||
updateSummaryB(sharedPreferences, keyPrefDisplayHud);
|
||||
@ -132,6 +138,24 @@ public class SettingsActivity extends Activity
|
||||
disableBuiltInAECPreference.setSummary(getString(R.string.pref_built_in_aec_not_available));
|
||||
disableBuiltInAECPreference.setEnabled(false);
|
||||
}
|
||||
|
||||
WebRtcAudioUtils.setWebRtcBasedAutomaticGainControl(false);
|
||||
if (!WebRtcAudioUtils.isAutomaticGainControlSupported()) {
|
||||
Preference disableBuiltInAGCPreference =
|
||||
settingsFragment.findPreference(keyprefDisableBuiltInAGC);
|
||||
|
||||
disableBuiltInAGCPreference.setSummary(getString(R.string.pref_built_in_agc_not_available));
|
||||
disableBuiltInAGCPreference.setEnabled(false);
|
||||
}
|
||||
|
||||
WebRtcAudioUtils.setWebRtcBasedNoiseSuppressor(false);
|
||||
if (!WebRtcAudioUtils.isNoiseSuppressorSupported()) {
|
||||
Preference disableBuiltInNSPreference =
|
||||
settingsFragment.findPreference(keyprefDisableBuiltInNS);
|
||||
|
||||
disableBuiltInNSPreference.setSummary(getString(R.string.pref_built_in_ns_not_available));
|
||||
disableBuiltInNSPreference.setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -283,7 +283,9 @@ public class PeerConnectionClientTest extends InstrumentationTestCase
|
||||
false, /* noAudioProcessing */
|
||||
false, /* aecDump */
|
||||
false /* useOpenSLES */,
|
||||
false /* disableBuiltInAEC */);
|
||||
false /* disableBuiltInAEC */,
|
||||
false /* disableBuiltInAGC */,
|
||||
false /* disableBuiltInNS */);
|
||||
return peerConnectionParameters;
|
||||
}
|
||||
|
||||
@ -311,7 +313,9 @@ public class PeerConnectionClientTest extends InstrumentationTestCase
|
||||
false, /* noAudioProcessing */
|
||||
false, /* aecDump */
|
||||
false /* useOpenSLES */,
|
||||
false /* disableBuiltInAEC */);
|
||||
false /* disableBuiltInAEC */,
|
||||
false /* disableBuiltInAGC */,
|
||||
false /* disableBuiltInNS */);
|
||||
return peerConnectionParameters;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user