Index: webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java |
diff --git a/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java b/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java |
index f24e4708ee1974204739fdc3f1e4c33b0ccd53e6..6d2bd70a1ca4e00cc0013748b9c2319db53fed3d 100644 |
--- a/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java |
+++ b/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java |
@@ -134,6 +134,7 @@ public class WebRtcAudioManager { |
private boolean hardwareAGC; |
private boolean hardwareNS; |
private boolean lowLatencyOutput; |
+ private boolean lowLatencyInput; |
private boolean proAudio; |
private int sampleRate; |
private int channels; |
@@ -153,10 +154,9 @@ public class WebRtcAudioManager { |
} |
volumeLogger = new VolumeLogger(audioManager); |
storeAudioParameters(); |
- nativeCacheAudioParameters( |
- sampleRate, channels, hardwareAEC, hardwareAGC, hardwareNS, |
- lowLatencyOutput, proAudio, outputBufferSize, inputBufferSize, |
- nativeAudioManager); |
+ nativeCacheAudioParameters(sampleRate, channels, hardwareAEC, hardwareAGC, hardwareNS, |
+ lowLatencyOutput, lowLatencyInput, proAudio, outputBufferSize, inputBufferSize, |
+ nativeAudioManager); |
} |
private boolean init() { |
@@ -201,12 +201,13 @@ public class WebRtcAudioManager { |
hardwareAGC = isAutomaticGainControlSupported(); |
hardwareNS = isNoiseSuppressorSupported(); |
lowLatencyOutput = isLowLatencyOutputSupported(); |
+ lowLatencyInput = isLowLatencyInputSupported(); |
proAudio = isProAudioSupported(); |
outputBufferSize = lowLatencyOutput ? |
getLowLatencyOutputFramesPerBuffer() : |
getMinOutputFrameSize(sampleRate, channels); |
- // TODO(henrika): add support for low-latency input. |
- inputBufferSize = getMinInputFrameSize(sampleRate, channels); |
+ inputBufferSize = lowLatencyInput ? getLowLatencyInputFramesPerBuffer() |
+ : getMinInputFrameSize(sampleRate, channels); |
} |
// Gets the current earpiece state. |
@@ -223,13 +224,16 @@ public class WebRtcAudioManager { |
} |
// Returns true if low-latency audio input is supported. |
+ // TODO(henrika): remove the hardcoded false return value when OpenSL ES |
+ // input performance has been evaluated and tested more. |
public boolean isLowLatencyInputSupported() { |
// TODO(henrika): investigate if some sort of device list is needed here |
// as well. The NDK doc states that: "As of API level 21, lower latency |
// audio input is supported on select devices. To take advantage of this |
// feature, first confirm that lower latency output is available". |
- return WebRtcAudioUtils.runningOnLollipopOrHigher() |
- && isLowLatencyOutputSupported(); |
+ return false; |
tommi
2016/09/15 09:34:12
can you file a bug for this? Seems like we're cha
henrika_webrtc
2016/09/16 13:30:47
We are actually not changing anything for output.
tommi
2016/09/17 09:27:08
sorry, you're right, I must have missed the 'Input
henrika_webrtc
2016/09/19 11:16:12
Acknowledged.
|
+ // return WebRtcAudioUtils.runningOnLollipopOrHigher() |
+ // && isLowLatencyOutputSupported(); |
} |
// Returns true if the device has professional audio level of functionality |
@@ -353,8 +357,8 @@ public class WebRtcAudioManager { |
} |
} |
- private native void nativeCacheAudioParameters( |
- int sampleRate, int channels, boolean hardwareAEC, boolean hardwareAGC, |
- boolean hardwareNS, boolean lowLatencyOutput, boolean proAudio, |
- int outputBufferSize, int inputBufferSize, long nativeAudioManager); |
+ private native void nativeCacheAudioParameters(int sampleRate, int channels, boolean hardwareAEC, |
+ boolean hardwareAGC, boolean hardwareNS, boolean lowLatencyOutput, |
+ boolean lowLatencyInput, boolean proAudio, int outputBufferSize, int inputBufferSize, |
+ long nativeAudioManager); |
} |