Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(454)

Unified Diff: talk/media/webrtc/webrtcvoiceengine.cc

Issue 1344563002: Improving support for Android Audio Effects in WebRTC (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Improved comments Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: talk/media/webrtc/webrtcvoiceengine.cc
diff --git a/talk/media/webrtc/webrtcvoiceengine.cc b/talk/media/webrtc/webrtcvoiceengine.cc
index 69050c398b84ba2e0c891b6e6ede94d47618a21b..f4b5ab3f555015b105253c2b23e80b3fd11e0ced 100644
--- a/talk/media/webrtc/webrtcvoiceengine.cc
+++ b/talk/media/webrtc/webrtcvoiceengine.cc
@@ -615,6 +615,7 @@ bool WebRtcVoiceEngine::ClearOptionOverrides() {
// AudioOptions defaults are set in InitInternal (for options with corresponding
// MediaEngineInterface flags) and in SetOptions(int) for flagless options.
bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
+ LOG(LS_INFO) << "ApplyOptions: " << options_in.ToString();
AudioOptions options = options_in; // The options are modified below.
// kEcConference is AEC with high suppression.
webrtc::EcModes ec_mode = webrtc::kEcConference;
@@ -659,8 +660,6 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
}
#endif
- LOG(LS_INFO) << "Applying audio options: " << options.ToString();
-
webrtc::VoEAudioProcessing* voep = voe_wrapper_->processing();
bool echo_cancellation = false;
@@ -707,8 +706,19 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
}
}
- bool auto_gain_control;
+ bool auto_gain_control = false;
if (options.auto_gain_control.Get(&auto_gain_control)) {
+ const bool built_in_agc = voe_wrapper_->hw()->BuiltInAGCIsAvailable();
+ if (built_in_agc) {
+ if (voe_wrapper_->hw()->EnableBuiltInAGC(auto_gain_control) == 0 &&
+ auto_gain_control) {
+ // Disable internal software AGC if built-in AGC is enabled,
+ // i.e., replace the software AGC with the built-in AGC.
+ options.auto_gain_control.Set(false);
+ auto_gain_control = false;
+ LOG(LS_INFO) << "Disabling AGC since built-in AGC will be used instead";
+ }
+ }
if (voep->SetAgcStatus(auto_gain_control, agc_mode) == -1) {
LOG_RTCERR2(SetAgcStatus, auto_gain_control, agc_mode);
return false;
@@ -747,14 +757,25 @@ bool WebRtcVoiceEngine::ApplyOptions(const AudioOptions& options_in) {
}
}
- bool noise_suppression;
+ bool noise_suppression = false;
if (options.noise_suppression.Get(&noise_suppression)) {
+ const bool built_in_ns = voe_wrapper_->hw()->BuiltInNSIsAvailable();
+ if (built_in_ns) {
+ if (voe_wrapper_->hw()->EnableBuiltInNS(noise_suppression) == 0 &&
+ noise_suppression) {
+ // Disable internal software NS if built-in NS is enabled,
+ // i.e., replace the software NS with the built-in NS.
+ options.noise_suppression.Set(false);
+ noise_suppression = false;
+ LOG(LS_INFO) << "Disabling NS since built-in NS will be used instead";
+ }
+ }
if (voep->SetNsStatus(noise_suppression, ns_mode) == -1) {
LOG_RTCERR2(SetNsStatus, noise_suppression, ns_mode);
return false;
} else {
- LOG(LS_VERBOSE) << "Noise suppression set to " << noise_suppression
- << " with mode " << ns_mode;
+ LOG(LS_INFO) << "Noise suppression set to " << noise_suppression
+ << " with mode " << ns_mode;
}
}
« no previous file with comments | « talk/media/webrtc/fakewebrtcvoiceengine.h ('k') | webrtc/modules/audio_device/android/audio_device_template.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698