BUG=
TBR=cpaulin@chromium.org

Review URL: https://codereview.webrtc.org/1176023002.

Cr-Commit-Position: refs/heads/master@{#9410}
This commit is contained in:
Niklas Enbom 2015-06-10 11:39:30 -07:00
parent 1fe120a6b9
commit 8a19f3dc62
7 changed files with 47 additions and 3 deletions

View File

@ -87,6 +87,11 @@
<string name="pref_audiocodec_dlg">Select default audio codec.</string> <string name="pref_audiocodec_dlg">Select default audio codec.</string>
<string name="pref_audiocodec_default">OPUS</string> <string name="pref_audiocodec_default">OPUS</string>
<string name="pref_noaudioprocessing_key">audioprocessing_preference</string>
<string name="pref_noaudioprocessing_title">Disable audio processing.</string>
<string name="pref_noaudioprocessing_dlg">Disable audio processing pipeline.</string>
<string name="pref_noaudioprocessing_default">false</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

@ -82,6 +82,12 @@
android:dialogTitle="@string/pref_audiocodec_dlg" android:dialogTitle="@string/pref_audiocodec_dlg"
android:entries="@array/audioCodecs" android:entries="@array/audioCodecs"
android:entryValues="@array/audioCodecs" /> android:entryValues="@array/audioCodecs" />
<CheckBoxPreference
android:key="@string/pref_noaudioprocessing_key"
android:title="@string/pref_noaudioprocessing_title"
android:dialogTitle="@string/pref_noaudioprocessing_dlg"
android:defaultValue="@string/pref_noaudioprocessing_default" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory <PreferenceCategory

View File

@ -85,6 +85,8 @@ public class CallActivity extends Activity
"org.appspot.apprtc.AUDIO_BITRATE"; "org.appspot.apprtc.AUDIO_BITRATE";
public static final String EXTRA_AUDIOCODEC = public static final String EXTRA_AUDIOCODEC =
"org.appspot.apprtc.AUDIOCODEC"; "org.appspot.apprtc.AUDIOCODEC";
public static final String EXTRA_NOAUDIOPROCESSING_ENABLED =
"org.appspot.apprtc.NOAUDIOPROCESSING";
public static final String EXTRA_CPUOVERUSE_DETECTION = public static final String EXTRA_CPUOVERUSE_DETECTION =
"org.appspot.apprtc.CPUOVERUSE_DETECTION"; "org.appspot.apprtc.CPUOVERUSE_DETECTION";
public static final String EXTRA_DISPLAY_HUD = public static final String EXTRA_DISPLAY_HUD =
@ -235,6 +237,7 @@ public class CallActivity extends Activity
intent.getBooleanExtra(EXTRA_HWCODEC_ENABLED, true), intent.getBooleanExtra(EXTRA_HWCODEC_ENABLED, true),
intent.getIntExtra(EXTRA_AUDIO_BITRATE, 0), intent.getIntExtra(EXTRA_AUDIO_BITRATE, 0),
intent.getStringExtra(EXTRA_AUDIOCODEC), intent.getStringExtra(EXTRA_AUDIOCODEC),
intent.getBooleanExtra(EXTRA_NOAUDIOPROCESSING_ENABLED, false),
intent.getBooleanExtra(EXTRA_CPUOVERUSE_DETECTION, true)); intent.getBooleanExtra(EXTRA_CPUOVERUSE_DETECTION, true));
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

@ -81,6 +81,7 @@ public class ConnectActivity extends Activity {
private String keyprefAudioBitrateValue; private String keyprefAudioBitrateValue;
private String keyprefAudioCodec; private String keyprefAudioCodec;
private String keyprefHwCodecAcceleration; private String keyprefHwCodecAcceleration;
private String keyprefNoAudioProcessingPipeline;
private String keyprefCpuUsageDetection; private String keyprefCpuUsageDetection;
private String keyprefDisplayHud; private String keyprefDisplayHud;
private String keyprefRoomServerUrl; private String keyprefRoomServerUrl;
@ -106,6 +107,7 @@ public class ConnectActivity extends Activity {
keyprefAudioBitrateType = getString(R.string.pref_startaudiobitrate_key); keyprefAudioBitrateType = getString(R.string.pref_startaudiobitrate_key);
keyprefAudioBitrateValue = getString(R.string.pref_startaudiobitratevalue_key); keyprefAudioBitrateValue = getString(R.string.pref_startaudiobitratevalue_key);
keyprefAudioCodec = getString(R.string.pref_audiocodec_key); keyprefAudioCodec = getString(R.string.pref_audiocodec_key);
keyprefNoAudioProcessingPipeline = getString(R.string.pref_noaudioprocessing_key);
keyprefCpuUsageDetection = getString(R.string.pref_cpu_usage_detection_key); keyprefCpuUsageDetection = getString(R.string.pref_cpu_usage_detection_key);
keyprefDisplayHud = getString(R.string.pref_displayhud_key); keyprefDisplayHud = getString(R.string.pref_displayhud_key);
keyprefRoomServerUrl = getString(R.string.pref_room_server_url_key); keyprefRoomServerUrl = getString(R.string.pref_room_server_url_key);
@ -266,6 +268,11 @@ public class ConnectActivity extends Activity {
boolean hwCodec = sharedPref.getBoolean(keyprefHwCodecAcceleration, boolean hwCodec = sharedPref.getBoolean(keyprefHwCodecAcceleration,
Boolean.valueOf(getString(R.string.pref_hwcodec_default))); Boolean.valueOf(getString(R.string.pref_hwcodec_default)));
// Check Disable Audio Processing flag.
boolean noAudioProcessing = sharedPref.getBoolean(
keyprefNoAudioProcessingPipeline,
Boolean.valueOf(getString(R.string.pref_noaudioprocessing_default)));
// Get video resolution from settings. // Get video resolution from settings.
int videoWidth = 0; int videoWidth = 0;
int videoHeight = 0; int videoHeight = 0;
@ -342,6 +349,8 @@ public class ConnectActivity extends Activity {
intent.putExtra(CallActivity.EXTRA_VIDEO_BITRATE, videoStartBitrate); intent.putExtra(CallActivity.EXTRA_VIDEO_BITRATE, videoStartBitrate);
intent.putExtra(CallActivity.EXTRA_VIDEOCODEC, videoCodec); intent.putExtra(CallActivity.EXTRA_VIDEOCODEC, videoCodec);
intent.putExtra(CallActivity.EXTRA_HWCODEC_ENABLED, hwCodec); intent.putExtra(CallActivity.EXTRA_HWCODEC_ENABLED, hwCodec);
intent.putExtra(CallActivity.EXTRA_NOAUDIOPROCESSING_ENABLED,
noAudioProcessing);
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_CPUOVERUSE_DETECTION, intent.putExtra(CallActivity.EXTRA_CPUOVERUSE_DETECTION,

View File

@ -79,6 +79,10 @@ public class PeerConnectionClient {
private static final String VIDEO_CODEC_PARAM_START_BITRATE = private static final String VIDEO_CODEC_PARAM_START_BITRATE =
"x-google-start-bitrate"; "x-google-start-bitrate";
private static final String AUDIO_CODEC_PARAM_BITRATE = "maxaveragebitrate"; 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";
private static final String AUDIO_HIGH_PASS_FILTER_CONSTRAINT = "googHighpassFilter";
private static final String AUDIO_NOISE_SUPPRESSION_CONSTRAINT = "googNoiseSuppression";
private static final String MAX_VIDEO_WIDTH_CONSTRAINT = "maxWidth"; private static final String MAX_VIDEO_WIDTH_CONSTRAINT = "maxWidth";
private static final String MIN_VIDEO_WIDTH_CONSTRAINT = "minWidth"; private static final String MIN_VIDEO_WIDTH_CONSTRAINT = "minWidth";
private static final String MAX_VIDEO_HEIGHT_CONSTRAINT = "maxHeight"; private static final String MAX_VIDEO_HEIGHT_CONSTRAINT = "maxHeight";
@ -144,6 +148,7 @@ public class PeerConnectionClient {
public final boolean videoCodecHwAcceleration; public final boolean videoCodecHwAcceleration;
public final int audioStartBitrate; public final int audioStartBitrate;
public final String audioCodec; public final String audioCodec;
public final boolean noAudioProcessing;
public final boolean cpuOveruseDetection; public final boolean cpuOveruseDetection;
public PeerConnectionParameters( public PeerConnectionParameters(
@ -151,7 +156,7 @@ public class PeerConnectionClient {
int videoWidth, int videoHeight, int videoFps, int videoStartBitrate, int videoWidth, int videoHeight, int videoFps, int videoStartBitrate,
String videoCodec, boolean videoCodecHwAcceleration, String videoCodec, boolean videoCodecHwAcceleration,
int audioStartBitrate, String audioCodec, int audioStartBitrate, String audioCodec,
boolean cpuOveruseDetection) { boolean noAudioProcessing, boolean cpuOveruseDetection) {
this.videoCallEnabled = videoCallEnabled; this.videoCallEnabled = videoCallEnabled;
this.loopback = loopback; this.loopback = loopback;
this.videoWidth = videoWidth; this.videoWidth = videoWidth;
@ -162,6 +167,7 @@ public class PeerConnectionClient {
this.videoCodecHwAcceleration = videoCodecHwAcceleration; this.videoCodecHwAcceleration = videoCodecHwAcceleration;
this.audioStartBitrate = audioStartBitrate; this.audioStartBitrate = audioStartBitrate;
this.audioCodec = audioCodec; this.audioCodec = audioCodec;
this.noAudioProcessing = noAudioProcessing;
this.cpuOveruseDetection = cpuOveruseDetection; this.cpuOveruseDetection = cpuOveruseDetection;
} }
} }
@ -387,7 +393,18 @@ public class PeerConnectionClient {
// Create audio constraints. // Create audio constraints.
audioConstraints = new MediaConstraints(); audioConstraints = new MediaConstraints();
// added for audio performance measurements
if (peerConnectionParameters.noAudioProcessing) {
Log.d(TAG, "Disabling audio processing");
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair(
AUDIO_ECHO_CANCELLATION_CONSTRAINT, "false"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair(
AUDIO_AUTO_GAIN_CONTROL_CONSTRAINT, "false"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair(
AUDIO_HIGH_PASS_FILTER_CONSTRAINT, "false"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair(
AUDIO_NOISE_SUPPRESSION_CONSTRAINT , "false"));
}
// Create SDP constraints. // Create SDP constraints.
sdpMediaConstraints = new MediaConstraints(); sdpMediaConstraints = new MediaConstraints();
sdpMediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair( sdpMediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair(

View File

@ -50,6 +50,7 @@ public class SettingsActivity extends Activity
private String keyprefStartAudioBitrateType; private String keyprefStartAudioBitrateType;
private String keyprefStartAudioBitrateValue; private String keyprefStartAudioBitrateValue;
private String keyPrefAudioCodec; private String keyPrefAudioCodec;
private String keyprefNoAudioProcessing;
private String keyprefCpuUsageDetection; private String keyprefCpuUsageDetection;
private String keyPrefRoomServerUrl; private String keyPrefRoomServerUrl;
@ -69,6 +70,7 @@ public class SettingsActivity extends Activity
keyprefStartAudioBitrateType = getString(R.string.pref_startaudiobitrate_key); keyprefStartAudioBitrateType = getString(R.string.pref_startaudiobitrate_key);
keyprefStartAudioBitrateValue = getString(R.string.pref_startaudiobitratevalue_key); keyprefStartAudioBitrateValue = getString(R.string.pref_startaudiobitratevalue_key);
keyPrefAudioCodec = getString(R.string.pref_audiocodec_key); keyPrefAudioCodec = getString(R.string.pref_audiocodec_key);
keyprefNoAudioProcessing = getString(R.string.pref_noaudioprocessing_key);
keyprefCpuUsageDetection = getString(R.string.pref_cpu_usage_detection_key); keyprefCpuUsageDetection = getString(R.string.pref_cpu_usage_detection_key);
keyPrefRoomServerUrl = getString(R.string.pref_room_server_url_key); keyPrefRoomServerUrl = getString(R.string.pref_room_server_url_key);
@ -101,6 +103,7 @@ public class SettingsActivity extends Activity
updateSummaryBitrate(sharedPreferences, keyprefStartAudioBitrateValue); updateSummaryBitrate(sharedPreferences, keyprefStartAudioBitrateValue);
setAudioBitrateEnable(sharedPreferences); setAudioBitrateEnable(sharedPreferences);
updateSummary(sharedPreferences, keyPrefAudioCodec); updateSummary(sharedPreferences, keyPrefAudioCodec);
updateSummaryB(sharedPreferences, keyprefNoAudioProcessing);
updateSummaryB(sharedPreferences, keyprefCpuUsageDetection); updateSummaryB(sharedPreferences, keyprefCpuUsageDetection);
updateSummary(sharedPreferences, keyPrefRoomServerUrl); updateSummary(sharedPreferences, keyPrefRoomServerUrl);
@ -131,6 +134,7 @@ public class SettingsActivity extends Activity
updateSummaryBitrate(sharedPreferences, key); updateSummaryBitrate(sharedPreferences, key);
} else if (key.equals(keyprefVideoCall) } else if (key.equals(keyprefVideoCall)
|| key.equals(keyprefHwCodec) || key.equals(keyprefHwCodec)
|| key.equals(keyprefNoAudioProcessing)
|| key.equals(keyprefCpuUsageDetection) || key.equals(keyprefCpuUsageDetection)
|| key.equals(keyPrefDisplayHud)) { || key.equals(keyPrefDisplayHud)) {
updateSummaryB(sharedPreferences, key); updateSummaryB(sharedPreferences, key);

View File

@ -252,7 +252,7 @@ public class PeerConnectionClientTest extends InstrumentationTestCase
new PeerConnectionParameters( new PeerConnectionParameters(
enableVideo, true, // videoCallEnabled, loopback. enableVideo, true, // videoCallEnabled, loopback.
0, 0, 0, 0, videoCodec, true, // video codec parameters. 0, 0, 0, 0, videoCodec, true, // video codec parameters.
0, "OPUS", true); // audio codec parameters. 0, "OPUS", false, true); // audio codec parameters.
PeerConnectionClient client = PeerConnectionClient.getInstance(); PeerConnectionClient client = PeerConnectionClient.getInstance();
PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();