Use array geometry in Beamformer

R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/35559004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8000 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc
index 086380e..73b3f27 100644
--- a/webrtc/modules/audio_processing/audio_processing_impl.cc
+++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
@@ -185,7 +185,8 @@
       use_new_agc_(config.Get<ExperimentalAgc>().enabled),
 #endif
       transient_suppressor_enabled_(config.Get<ExperimentalNs>().enabled),
-      beamformer_enabled_(config.Get<Beamforming>().enabled) {
+      beamformer_enabled_(config.Get<Beamforming>().enabled),
+      array_geometry_(config.Get<Beamforming>().array_geometry) {
   echo_cancellation_ = new EchoCancellationImpl(this, crit_);
   component_list_.push_back(echo_cancellation_);
 
@@ -400,7 +401,8 @@
     return kNoError;
   }
   if (beamformer_enabled_ &&
-      (num_input_channels < 2 || num_output_channels > 1)) {
+      (static_cast<size_t>(num_input_channels) != array_geometry_.size() ||
+       num_output_channels > 1)) {
     return kBadNumberChannelsError;
   }
   return InitializeLocked(input_sample_rate_hz,
@@ -995,11 +997,9 @@
 void AudioProcessingImpl::InitializeBeamformer() {
   if (beamformer_enabled_) {
 #ifdef WEBRTC_BEAMFORMER
-    // TODO(aluebs): Don't use a hard-coded microphone spacing.
     beamformer_.reset(new Beamformer(kChunkSizeMs,
                                      split_rate_,
-                                     fwd_in_format_.num_channels(),
-                                     0.05f));
+                                     array_geometry_));
 #else
     assert(false);
 #endif