Chromium Code Reviews| 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..77afb0d7c31a7ee53a7f01189c7996c44817e81c 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,8 @@ 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; |
| } // namespace |
| @@ -92,28 +86,19 @@ 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; |
|
aluebs-webrtc
2015/07/15 01:02:05
Shouldn't the step_type be set here as well?
ekm
2015/07/17 19:59:38
Done. Nice catch.
|
| + 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_->ProcessCaptureAudio(&noise_cursor); |
| + enh_->ProcessRenderAudio(&clear_cursor); |
| clear_cursor += kFragmentSize; |
| noise_cursor += kFragmentSize; |
| } |
| @@ -125,7 +110,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 +147,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 +161,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); |
| } |
| } |