Expose the capture-side AudioProcessing object and allow it to be injected.
* Clean up the configuration code, including removing most of the weird defines.
* Add a unit test.
Review URL: https://webrtc-codereview.appspot.com/1152005
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@3605 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/voice_engine/voice_engine_defines.h b/voice_engine/voice_engine_defines.h
index a542c3e..e5c9af9 100644
--- a/voice_engine/voice_engine_defines.h
+++ b/voice_engine/voice_engine_defines.h
@@ -18,6 +18,7 @@
#include "webrtc/common_types.h"
#include "webrtc/engine_configurations.h"
+#include "webrtc/modules/audio_processing/include/audio_processing.h"
#include "webrtc/system_wrappers/interface/logging.h"
// ----------------------------------------------------------------------------
@@ -77,7 +78,19 @@
enum { kVoiceEngineMaxSrtpKeyAuthNullLength = 256 };
// Audio processing
-enum { kVoiceEngineAudioProcessingDeviceSampleRateHz = 48000 };
+const NoiseSuppression::Level kDefaultNsMode = NoiseSuppression::kModerate;
+const GainControl::Mode kDefaultAgcMode =
+#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
+ GainControl::kAdaptiveDigital;
+#else
+ GainControl::kAdaptiveAnalog;
+#endif
+const bool kDefaultAgcState =
+#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
+ false;
+#else
+ true;
+#endif
// Codec
// Min init target rate for iSAC-wb
@@ -129,31 +142,15 @@
} // namespace webrtc
-// TODO(andrew): we shouldn't be using the precompiler for this.
+// TODO(ajm): we shouldn't be using the precompiler for this.
// Use enums or bools as appropriate.
-#define WEBRTC_AUDIO_PROCESSING_OFF false
-
-#define WEBRTC_VOICE_ENGINE_HP_DEFAULT_STATE true
- // AudioProcessing HP is ON
-#define WEBRTC_VOICE_ENGINE_NS_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
- // AudioProcessing NS off
-#define WEBRTC_VOICE_ENGINE_AGC_DEFAULT_STATE true
- // AudioProcessing AGC on
-#define WEBRTC_VOICE_ENGINE_EC_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
- // AudioProcessing EC off
-#define WEBRTC_VOICE_ENGINE_VAD_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
- // AudioProcessing off
-#define WEBRTC_VOICE_ENGINE_RX_AGC_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
+#define WEBRTC_VOICE_ENGINE_RX_AGC_DEFAULT_STATE false
// AudioProcessing RX AGC off
-#define WEBRTC_VOICE_ENGINE_RX_NS_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
+#define WEBRTC_VOICE_ENGINE_RX_NS_DEFAULT_STATE false
// AudioProcessing RX NS off
-#define WEBRTC_VOICE_ENGINE_RX_HP_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
+#define WEBRTC_VOICE_ENGINE_RX_HP_DEFAULT_STATE false
// AudioProcessing RX High Pass Filter off
-#define WEBRTC_VOICE_ENGINE_NS_DEFAULT_MODE NoiseSuppression::kModerate
- // AudioProcessing NS moderate suppression
-#define WEBRTC_VOICE_ENGINE_AGC_DEFAULT_MODE GainControl::kAdaptiveAnalog
- // AudioProcessing AGC analog digital combined
#define WEBRTC_VOICE_ENGINE_RX_AGC_DEFAULT_MODE GainControl::kAdaptiveDigital
// AudioProcessing AGC mode
#define WEBRTC_VOICE_ENGINE_RX_NS_DEFAULT_MODE NoiseSuppression::kModerate
@@ -346,22 +343,6 @@
#undef WEBRTC_CONFERENCING
#undef WEBRTC_TYPING_DETECTION
- // Default audio processing states
- #undef WEBRTC_VOICE_ENGINE_NS_DEFAULT_STATE
- #undef WEBRTC_VOICE_ENGINE_AGC_DEFAULT_STATE
- #undef WEBRTC_VOICE_ENGINE_EC_DEFAULT_STATE
- #define WEBRTC_VOICE_ENGINE_NS_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
- #define WEBRTC_VOICE_ENGINE_AGC_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
- #define WEBRTC_VOICE_ENGINE_EC_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
-
- // Default audio processing modes
- #undef WEBRTC_VOICE_ENGINE_NS_DEFAULT_MODE
- #undef WEBRTC_VOICE_ENGINE_AGC_DEFAULT_MODE
- #define WEBRTC_VOICE_ENGINE_NS_DEFAULT_MODE \
- NoiseSuppression::kModerate
- #define WEBRTC_VOICE_ENGINE_AGC_DEFAULT_MODE \
- GainControl::kAdaptiveDigital
-
#define ANDROID_NOT_SUPPORTED(stat) NOT_SUPPORTED(stat)
#else // LINUX PC
@@ -444,20 +425,6 @@
#undef WEBRTC_CODEC_ISAC
#undef WEBRTC_VOE_EXTERNAL_REC_AND_PLAYOUT
- #undef WEBRTC_VOICE_ENGINE_NS_DEFAULT_STATE
- #undef WEBRTC_VOICE_ENGINE_AGC_DEFAULT_STATE
- #undef WEBRTC_VOICE_ENGINE_EC_DEFAULT_STATE
- #define WEBRTC_VOICE_ENGINE_NS_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
- #define WEBRTC_VOICE_ENGINE_AGC_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
- #define WEBRTC_VOICE_ENGINE_EC_DEFAULT_STATE WEBRTC_AUDIO_PROCESSING_OFF
-
- #undef WEBRTC_VOICE_ENGINE_NS_DEFAULT_MODE
- #undef WEBRTC_VOICE_ENGINE_AGC_DEFAULT_MODE
- #define WEBRTC_VOICE_ENGINE_NS_DEFAULT_MODE \
- NoiseSuppression::kModerate
- #define WEBRTC_VOICE_ENGINE_AGC_DEFAULT_MODE \
- GainControl::kAdaptiveDigital
-
#define IPHONE_NOT_SUPPORTED(stat) NOT_SUPPORTED(stat)
#else // Non-iPhone