| Index: webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer_unittest.cc | 
| diff --git a/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer_unittest.cc b/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer_unittest.cc | 
| index 490db2c646238422e41c8570d6cc35d084944943..7512c3865a0906d079fe2a4b2bb5d1eb51986c33 100644 | 
| --- a/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer_unittest.cc | 
| +++ b/webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer_unittest.cc | 
| @@ -19,6 +19,7 @@ | 
|  | 
| #include "testing/gtest/include/gtest/gtest.h" | 
| #include "webrtc/base/arraysize.h" | 
| +#include "webrtc/base/scoped_ptr.h" | 
| #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" | 
| #include "webrtc/modules/audio_processing/intelligibility/intelligibility_enhancer.h" | 
|  | 
| @@ -74,15 +75,11 @@ const float kMaxTestError = 0.005f; | 
|  | 
| // Enhancer initialization parameters. | 
| const int kSamples = 2000; | 
| -const int kErbResolution = 2; | 
| const int kSampleRate = 1000; | 
| -const int kFragmentSize = kSampleRate / 100; | 
| const int kNumChannels = 1; | 
| -const float kDecayRate = 0.9f; | 
| -const int kWindowSize = 800; | 
| -const int kAnalyzeRate = 800; | 
| -const int kVarianceRate = 2; | 
| -const float kGainLimit = 0.1f; | 
| +const int kFragmentSize = kSampleRate / 100; | 
| +const float kNoiseDetected = 0.f; | 
| +const float kSpeechDetected = 1.f; | 
|  | 
| }  // namespace | 
|  | 
| @@ -92,28 +89,22 @@ using intelligibility::VarianceArray; | 
| class IntelligibilityEnhancerTest : public ::testing::Test { | 
| protected: | 
| IntelligibilityEnhancerTest() | 
| -      : enh_(kErbResolution, | 
| -             kSampleRate, | 
| -             kNumChannels, | 
| -             VarianceArray::kStepInfinite, | 
| -             kDecayRate, | 
| -             kWindowSize, | 
| -             kAnalyzeRate, | 
| -             kVarianceRate, | 
| -             kGainLimit), | 
| -        clear_data_(kSamples), | 
| -        noise_data_(kSamples), | 
| -        orig_data_(kSamples) {} | 
| +      : clear_data_(kSamples), noise_data_(kSamples), orig_data_(kSamples) { | 
| +    config_.sample_rate_hz = kSampleRate; | 
| +    enh_.reset(new IntelligibilityEnhancer(config_)); | 
| +  } | 
|  | 
| bool CheckUpdate(VarianceArray::StepType step_type) { | 
| -    IntelligibilityEnhancer enh(kErbResolution, kSampleRate, kNumChannels, | 
| -                                step_type, kDecayRate, kWindowSize, | 
| -                                kAnalyzeRate, kVarianceRate, kGainLimit); | 
| +    config_.sample_rate_hz = kSampleRate; | 
| +    config_.var_type = step_type; | 
| +    enh_.reset(new IntelligibilityEnhancer(config_)); | 
| float* clear_cursor = &clear_data_[0]; | 
| float* noise_cursor = &noise_data_[0]; | 
| for (int i = 0; i < kSamples; i += kFragmentSize) { | 
| -      enh.ProcessCaptureAudio(&noise_cursor); | 
| -      enh.ProcessRenderAudio(&clear_cursor); | 
| +      enh_->AnalyzeCaptureAudio(&noise_cursor, kSampleRate, kNumChannels, | 
| +                                kNoiseDetected); | 
| +      enh_->ProcessRenderAudio(&clear_cursor, kSampleRate, kNumChannels, | 
| +                               kSpeechDetected); | 
| clear_cursor += kFragmentSize; | 
| noise_cursor += kFragmentSize; | 
| } | 
| @@ -125,7 +116,8 @@ class IntelligibilityEnhancerTest : public ::testing::Test { | 
| return false; | 
| } | 
|  | 
| -  IntelligibilityEnhancer enh_; | 
| +  IntelligibilityEnhancer::Config config_; | 
| +  rtc::scoped_ptr<IntelligibilityEnhancer> enh_; | 
| vector<float> clear_data_; | 
| vector<float> noise_data_; | 
| vector<float> orig_data_; | 
| @@ -161,12 +153,12 @@ TEST_F(IntelligibilityEnhancerTest, TestRenderUpdate) { | 
|  | 
| // Tests ERB bank creation, comparing against matlab output. | 
| TEST_F(IntelligibilityEnhancerTest, TestErbCreation) { | 
| -  ASSERT_EQ(static_cast<int>(arraysize(kTestCenterFreqs)), enh_.bank_size_); | 
| -  for (int i = 0; i < enh_.bank_size_; ++i) { | 
| -    EXPECT_NEAR(kTestCenterFreqs[i], enh_.center_freqs_[i], kMaxTestError); | 
| -    ASSERT_EQ(static_cast<int>(arraysize(kTestFilterBank[0])), enh_.freqs_); | 
| -    for (int j = 0; j < enh_.freqs_; ++j) { | 
| -      EXPECT_NEAR(kTestFilterBank[i][j], enh_.filter_bank_[i][j], | 
| +  ASSERT_EQ(static_cast<int>(arraysize(kTestCenterFreqs)), enh_->bank_size_); | 
| +  for (int i = 0; i < enh_->bank_size_; ++i) { | 
| +    EXPECT_NEAR(kTestCenterFreqs[i], enh_->center_freqs_[i], kMaxTestError); | 
| +    ASSERT_EQ(static_cast<int>(arraysize(kTestFilterBank[0])), enh_->freqs_); | 
| +    for (int j = 0; j < enh_->freqs_; ++j) { | 
| +      EXPECT_NEAR(kTestFilterBank[i][j], enh_->filter_bank_[i][j], | 
| kMaxTestError); | 
| } | 
| } | 
| @@ -175,29 +167,29 @@ TEST_F(IntelligibilityEnhancerTest, TestErbCreation) { | 
| // Tests analytic solution for optimal gains, comparing | 
| // against matlab output. | 
| TEST_F(IntelligibilityEnhancerTest, TestSolveForGains) { | 
| -  ASSERT_EQ(kTestStartFreq, enh_.start_freq_); | 
| -  vector<float> sols(enh_.bank_size_); | 
| +  ASSERT_EQ(kTestStartFreq, enh_->start_freq_); | 
| +  vector<float> sols(enh_->bank_size_); | 
| float lambda = -0.001f; | 
| -  for (int i = 0; i < enh_.bank_size_; i++) { | 
| -    enh_.filtered_clear_var_[i] = 0.0f; | 
| -    enh_.filtered_noise_var_[i] = 0.0f; | 
| -    enh_.rho_[i] = 0.02f; | 
| +  for (int i = 0; i < enh_->bank_size_; i++) { | 
| +    enh_->filtered_clear_var_[i] = 0.0f; | 
| +    enh_->filtered_noise_var_[i] = 0.0f; | 
| +    enh_->rho_[i] = 0.02f; | 
| } | 
| -  enh_.SolveForGainsGivenLambda(lambda, enh_.start_freq_, &sols[0]); | 
| -  for (int i = 0; i < enh_.bank_size_; i++) { | 
| +  enh_->SolveForGainsGivenLambda(lambda, enh_->start_freq_, &sols[0]); | 
| +  for (int i = 0; i < enh_->bank_size_; i++) { | 
| EXPECT_NEAR(kTestZeroVar[i], sols[i], kMaxTestError); | 
| } | 
| -  for (int i = 0; i < enh_.bank_size_; i++) { | 
| -    enh_.filtered_clear_var_[i] = static_cast<float>(i + 1); | 
| -    enh_.filtered_noise_var_[i] = static_cast<float>(enh_.bank_size_ - i); | 
| +  for (int i = 0; i < enh_->bank_size_; i++) { | 
| +    enh_->filtered_clear_var_[i] = static_cast<float>(i + 1); | 
| +    enh_->filtered_noise_var_[i] = static_cast<float>(enh_->bank_size_ - i); | 
| } | 
| -  enh_.SolveForGainsGivenLambda(lambda, enh_.start_freq_, &sols[0]); | 
| -  for (int i = 0; i < enh_.bank_size_; i++) { | 
| +  enh_->SolveForGainsGivenLambda(lambda, enh_->start_freq_, &sols[0]); | 
| +  for (int i = 0; i < enh_->bank_size_; i++) { | 
| EXPECT_NEAR(kTestNonZeroVarLambdaTop[i], sols[i], kMaxTestError); | 
| } | 
| lambda = -1.0; | 
| -  enh_.SolveForGainsGivenLambda(lambda, enh_.start_freq_, &sols[0]); | 
| -  for (int i = 0; i < enh_.bank_size_; i++) { | 
| +  enh_->SolveForGainsGivenLambda(lambda, enh_->start_freq_, &sols[0]); | 
| +  for (int i = 0; i < enh_->bank_size_; i++) { | 
| EXPECT_NEAR(kTestZeroVar[i], sols[i], kMaxTestError); | 
| } | 
| } | 
|  |