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:
sakal
2016-07-26 06:03:03 -07:00
committed by Commit bot
parent 63d3f8390e
commit 2c3f46ec1a
7 changed files with 101 additions and 7 deletions

View File

@ -121,10 +121,22 @@
<string name="pref_opensles_default">false</string> <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_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_title">Disable hardware AEC.</string>
<string name="pref_disable_built_in_aec_dlg">Disable built-in 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_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_key">misc_settings_key</string>
<string name="pref_miscsettings_title">Miscellaneous settings.</string> <string name="pref_miscsettings_title">Miscellaneous settings.</string>

View File

@ -123,6 +123,18 @@
android:title="@string/pref_disable_built_in_aec_title" android:title="@string/pref_disable_built_in_aec_title"
android:dialogTitle="@string/pref_disable_built_in_aec_dlg" android:dialogTitle="@string/pref_disable_built_in_aec_dlg"
android:defaultValue="@string/pref_disable_built_in_aec_default" /> 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>
<PreferenceCategory <PreferenceCategory

View File

@ -84,6 +84,10 @@ public class CallActivity extends Activity
"org.appspot.apprtc.OPENSLES"; "org.appspot.apprtc.OPENSLES";
public static final String EXTRA_DISABLE_BUILT_IN_AEC = public static final String EXTRA_DISABLE_BUILT_IN_AEC =
"org.appspot.apprtc.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 = public static final String EXTRA_DISPLAY_HUD =
"org.appspot.apprtc.DISPLAY_HUD"; "org.appspot.apprtc.DISPLAY_HUD";
public static final String EXTRA_TRACING = "org.appspot.apprtc.TRACING"; 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_NOAUDIOPROCESSING_ENABLED, false),
intent.getBooleanExtra(EXTRA_AECDUMP_ENABLED, false), intent.getBooleanExtra(EXTRA_AECDUMP_ENABLED, false),
intent.getBooleanExtra(EXTRA_OPENSLES_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); commandLineRun = intent.getBooleanExtra(EXTRA_CMDLINE, false);
runTimeMs = intent.getIntExtra(EXTRA_RUNTIME, 0); runTimeMs = intent.getIntExtra(EXTRA_RUNTIME, 0);

View File

@ -71,6 +71,8 @@ public class ConnectActivity extends Activity {
private String keyprefAecDump; private String keyprefAecDump;
private String keyprefOpenSLES; private String keyprefOpenSLES;
private String keyprefDisableBuiltInAec; private String keyprefDisableBuiltInAec;
private String keyprefDisableBuiltInAgc;
private String keyprefDisableBuiltInNs;
private String keyprefDisplayHud; private String keyprefDisplayHud;
private String keyprefTracing; private String keyprefTracing;
private String keyprefRoomServerUrl; private String keyprefRoomServerUrl;
@ -103,6 +105,8 @@ public class ConnectActivity extends Activity {
keyprefAecDump = getString(R.string.pref_aecdump_key); keyprefAecDump = getString(R.string.pref_aecdump_key);
keyprefOpenSLES = getString(R.string.pref_opensles_key); keyprefOpenSLES = getString(R.string.pref_opensles_key);
keyprefDisableBuiltInAec = getString(R.string.pref_disable_built_in_aec_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); keyprefDisplayHud = getString(R.string.pref_displayhud_key);
keyprefTracing = getString(R.string.pref_tracing_key); keyprefTracing = getString(R.string.pref_tracing_key);
keyprefRoomServerUrl = getString(R.string.pref_room_server_url_key); keyprefRoomServerUrl = getString(R.string.pref_room_server_url_key);
@ -299,6 +303,16 @@ public class ConnectActivity extends Activity {
keyprefDisableBuiltInAec, keyprefDisableBuiltInAec,
Boolean.valueOf(getString(R.string.pref_disable_built_in_aec_default))); 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. // Get video resolution from settings.
int videoWidth = 0; int videoWidth = 0;
int videoHeight = 0; int videoHeight = 0;
@ -385,6 +399,8 @@ public class ConnectActivity extends Activity {
intent.putExtra(CallActivity.EXTRA_AECDUMP_ENABLED, aecDump); intent.putExtra(CallActivity.EXTRA_AECDUMP_ENABLED, aecDump);
intent.putExtra(CallActivity.EXTRA_OPENSLES_ENABLED, useOpenSLES); intent.putExtra(CallActivity.EXTRA_OPENSLES_ENABLED, useOpenSLES);
intent.putExtra(CallActivity.EXTRA_DISABLE_BUILT_IN_AEC, disableBuiltInAEC); 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_AUDIO_BITRATE, audioStartBitrate);
intent.putExtra(CallActivity.EXTRA_AUDIOCODEC, audioCodec); intent.putExtra(CallActivity.EXTRA_AUDIOCODEC, audioCodec);
intent.putExtra(CallActivity.EXTRA_DISPLAY_HUD, displayHud); intent.putExtra(CallActivity.EXTRA_DISPLAY_HUD, displayHud);

View File

@ -160,6 +160,8 @@ public class PeerConnectionClient {
public final boolean aecDump; public final boolean aecDump;
public final boolean useOpenSLES; public final boolean useOpenSLES;
public final boolean disableBuiltInAEC; public final boolean disableBuiltInAEC;
public final boolean disableBuiltInAGC;
public final boolean disableBuiltInNS;
public PeerConnectionParameters( public PeerConnectionParameters(
boolean videoCallEnabled, boolean loopback, boolean tracing, boolean useCamera2, boolean videoCallEnabled, boolean loopback, boolean tracing, boolean useCamera2,
@ -167,7 +169,7 @@ public class PeerConnectionClient {
int videoStartBitrate, String videoCodec, boolean videoCodecHwAcceleration, int videoStartBitrate, String videoCodec, boolean videoCodecHwAcceleration,
boolean captureToTexture, int audioStartBitrate, String audioCodec, boolean captureToTexture, int audioStartBitrate, String audioCodec,
boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES, boolean noAudioProcessing, boolean aecDump, boolean useOpenSLES,
boolean disableBuiltInAEC) { boolean disableBuiltInAEC, boolean disableBuiltInAGC, boolean disableBuiltInNS) {
this.videoCallEnabled = videoCallEnabled; this.videoCallEnabled = videoCallEnabled;
this.useCamera2 = useCamera2; this.useCamera2 = useCamera2;
this.loopback = loopback; this.loopback = loopback;
@ -185,6 +187,8 @@ public class PeerConnectionClient {
this.aecDump = aecDump; this.aecDump = aecDump;
this.useOpenSLES = useOpenSLES; this.useOpenSLES = useOpenSLES;
this.disableBuiltInAEC = disableBuiltInAEC; this.disableBuiltInAEC = disableBuiltInAEC;
this.disableBuiltInAGC = disableBuiltInAGC;
this.disableBuiltInNS = disableBuiltInNS;
} }
} }
@ -368,6 +372,22 @@ public class PeerConnectionClient {
WebRtcAudioUtils.setWebRtcBasedAcousticEchoCanceler(false); 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. // Create peer connection factory.
if (!PeerConnectionFactory.initializeAndroidGlobals(context, true, true, if (!PeerConnectionFactory.initializeAndroidGlobals(context, true, true,
peerConnectionParameters.videoCodecHwAcceleration)) { peerConnectionParameters.videoCodecHwAcceleration)) {

View File

@ -44,6 +44,8 @@ public class SettingsActivity extends Activity
private String keyprefAecDump; private String keyprefAecDump;
private String keyprefOpenSLES; private String keyprefOpenSLES;
private String keyprefDisableBuiltInAEC; private String keyprefDisableBuiltInAEC;
private String keyprefDisableBuiltInAGC;
private String keyprefDisableBuiltInNS;
private String keyPrefRoomServerUrl; private String keyPrefRoomServerUrl;
private String keyPrefDisplayHud; private String keyPrefDisplayHud;
@ -70,6 +72,8 @@ public class SettingsActivity extends Activity
keyprefAecDump = getString(R.string.pref_aecdump_key); keyprefAecDump = getString(R.string.pref_aecdump_key);
keyprefOpenSLES = getString(R.string.pref_opensles_key); keyprefOpenSLES = getString(R.string.pref_opensles_key);
keyprefDisableBuiltInAEC = getString(R.string.pref_disable_built_in_aec_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); keyPrefRoomServerUrl = getString(R.string.pref_room_server_url_key);
keyPrefDisplayHud = getString(R.string.pref_displayhud_key); keyPrefDisplayHud = getString(R.string.pref_displayhud_key);
@ -109,6 +113,8 @@ public class SettingsActivity extends Activity
updateSummaryB(sharedPreferences, keyprefAecDump); updateSummaryB(sharedPreferences, keyprefAecDump);
updateSummaryB(sharedPreferences, keyprefOpenSLES); updateSummaryB(sharedPreferences, keyprefOpenSLES);
updateSummaryB(sharedPreferences, keyprefDisableBuiltInAEC); updateSummaryB(sharedPreferences, keyprefDisableBuiltInAEC);
updateSummaryB(sharedPreferences, keyprefDisableBuiltInAGC);
updateSummaryB(sharedPreferences, keyprefDisableBuiltInNS);
updateSummary(sharedPreferences, keyPrefRoomServerUrl); updateSummary(sharedPreferences, keyPrefRoomServerUrl);
updateSummaryB(sharedPreferences, keyPrefDisplayHud); updateSummaryB(sharedPreferences, keyPrefDisplayHud);
@ -132,6 +138,24 @@ public class SettingsActivity extends Activity
disableBuiltInAECPreference.setSummary(getString(R.string.pref_built_in_aec_not_available)); disableBuiltInAECPreference.setSummary(getString(R.string.pref_built_in_aec_not_available));
disableBuiltInAECPreference.setEnabled(false); 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 @Override

View File

@ -283,7 +283,9 @@ public class PeerConnectionClientTest extends InstrumentationTestCase
false, /* noAudioProcessing */ false, /* noAudioProcessing */
false, /* aecDump */ false, /* aecDump */
false /* useOpenSLES */, false /* useOpenSLES */,
false /* disableBuiltInAEC */); false /* disableBuiltInAEC */,
false /* disableBuiltInAGC */,
false /* disableBuiltInNS */);
return peerConnectionParameters; return peerConnectionParameters;
} }
@ -311,7 +313,9 @@ public class PeerConnectionClientTest extends InstrumentationTestCase
false, /* noAudioProcessing */ false, /* noAudioProcessing */
false, /* aecDump */ false, /* aecDump */
false /* useOpenSLES */, false /* useOpenSLES */,
false /* disableBuiltInAEC */); false /* disableBuiltInAEC */,
false /* disableBuiltInAGC */,
false /* disableBuiltInNS */);
return peerConnectionParameters; return peerConnectionParameters;
} }