| Index: webrtc/modules/audio_processing/test/audio_processing_unittest.cc
|
| diff --git a/webrtc/modules/audio_processing/test/audio_processing_unittest.cc b/webrtc/modules/audio_processing/test/audio_processing_unittest.cc
|
| index ad4bf72387b3f33eb6193fd2fe93ea3081dd9f35..53f667d50d7815287ae1b873606598bd02120149 100644
|
| --- a/webrtc/modules/audio_processing/test/audio_processing_unittest.cc
|
| +++ b/webrtc/modules/audio_processing/test/audio_processing_unittest.cc
|
| @@ -54,7 +54,12 @@
|
| const google::protobuf::int32 kChannels[] = {1, 2};
|
| const int kSampleRates[] = {8000, 16000, 32000, 48000};
|
|
|
| +#if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
|
| +// AECM doesn't support super-wb.
|
| +const int kProcessSampleRates[] = {8000, 16000};
|
| +#elif defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE)
|
| const int kProcessSampleRates[] = {8000, 16000, 32000, 48000};
|
| +#endif
|
|
|
| enum StreamDirection { kForward = 0, kReverse };
|
|
|
| @@ -430,7 +435,11 @@
|
| frame_ = new AudioFrame();
|
| revframe_ = new AudioFrame();
|
|
|
| +#if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
|
| + Init(16000, 16000, 16000, 2, 2, 2, false);
|
| +#else
|
| Init(32000, 32000, 32000, 2, 2, 2, false);
|
| +#endif
|
| }
|
|
|
| void ApmTest::TearDown() {
|
| @@ -1030,6 +1039,18 @@
|
| }
|
|
|
| TEST_F(ApmTest, EchoControlMobile) {
|
| + // AECM won't use super-wideband.
|
| + SetFrameSampleRate(frame_, 32000);
|
| + EXPECT_NOERR(apm_->ProcessStream(frame_));
|
| + EXPECT_EQ(apm_->kBadSampleRateError,
|
| + apm_->echo_control_mobile()->Enable(true));
|
| + SetFrameSampleRate(frame_, 16000);
|
| + EXPECT_NOERR(apm_->ProcessStream(frame_));
|
| + EXPECT_EQ(apm_->kNoError,
|
| + apm_->echo_control_mobile()->Enable(true));
|
| + SetFrameSampleRate(frame_, 32000);
|
| + EXPECT_EQ(apm_->kUnsupportedComponentError, apm_->ProcessStream(frame_));
|
| +
|
| // Turn AECM on (and AEC off)
|
| Init(16000, 16000, 16000, 2, 2, 2, false);
|
| EXPECT_EQ(apm_->kNoError, apm_->echo_control_mobile()->Enable(true));
|
| @@ -1953,7 +1974,6 @@
|
| num_input_channels);
|
|
|
| int analog_level = 127;
|
| - size_t num_bad_chunks = 0;
|
| while (ReadFrame(far_file_, revframe_, revfloat_cb_.get()) &&
|
| ReadFrame(near_file_, frame_, float_cb_.get())) {
|
| frame_->vad_activity_ = AudioFrame::kVadUnknown;
|
| @@ -1992,13 +2012,18 @@
|
| float snr = ComputeSNR(output_int16.channels()[j],
|
| output_cb.channels()[j],
|
| samples_per_channel, &variance);
|
| -
|
| + #if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
|
| + // There are a few chunks in the fixed-point profile that give low SNR.
|
| + // Listening confirmed the difference is acceptable.
|
| + const float kVarianceThreshold = 150;
|
| + const float kSNRThreshold = 10;
|
| + #else
|
| const float kVarianceThreshold = 20;
|
| const float kSNRThreshold = 20;
|
| -
|
| + #endif
|
| // Skip frames with low energy.
|
| - if (sqrt(variance) > kVarianceThreshold && snr < kSNRThreshold) {
|
| - ++num_bad_chunks;
|
| + if (sqrt(variance) > kVarianceThreshold) {
|
| + EXPECT_LT(kSNRThreshold, snr);
|
| }
|
| }
|
|
|
| @@ -2014,16 +2039,6 @@
|
| // Reset in case of downmixing.
|
| frame_->num_channels_ = static_cast<size_t>(test->num_input_channels());
|
| }
|
| -
|
| -#if defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE)
|
| - const size_t kMaxNumBadChunks = 0;
|
| -#elif defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
|
| - // There are a few chunks in the fixed-point profile that give low SNR.
|
| - // Listening confirmed the difference is acceptable.
|
| - const size_t kMaxNumBadChunks = 60;
|
| -#endif
|
| - EXPECT_LE(num_bad_chunks, kMaxNumBadChunks);
|
| -
|
| rewind(far_file_);
|
| rewind(near_file_);
|
| }
|
| @@ -2545,6 +2560,11 @@
|
| } else {
|
| ref_rate = 8000;
|
| }
|
| +#ifdef WEBRTC_AUDIOPROC_FIXED_PROFILE
|
| + if (file_direction == kForward) {
|
| + ref_rate = std::min(ref_rate, 16000);
|
| + }
|
| +#endif
|
| FILE* out_file = fopen(
|
| OutputFilePath("out", input_rate_, output_rate_, reverse_input_rate_,
|
| reverse_output_rate_, cf[i].num_input,
|
| @@ -2696,12 +2716,12 @@
|
| INSTANTIATE_TEST_CASE_P(
|
| CommonFormats,
|
| AudioProcessingTest,
|
| - testing::Values(std::tr1::make_tuple(48000, 48000, 48000, 48000, 0, 0),
|
| - std::tr1::make_tuple(48000, 48000, 32000, 48000, 40, 30),
|
| - std::tr1::make_tuple(48000, 48000, 16000, 48000, 40, 20),
|
| - std::tr1::make_tuple(48000, 44100, 48000, 44100, 25, 20),
|
| - std::tr1::make_tuple(48000, 44100, 32000, 44100, 25, 15),
|
| - std::tr1::make_tuple(48000, 44100, 16000, 44100, 25, 15),
|
| + testing::Values(std::tr1::make_tuple(48000, 48000, 48000, 48000, 20, 0),
|
| + std::tr1::make_tuple(48000, 48000, 32000, 48000, 20, 30),
|
| + std::tr1::make_tuple(48000, 48000, 16000, 48000, 20, 20),
|
| + std::tr1::make_tuple(48000, 44100, 48000, 44100, 15, 20),
|
| + std::tr1::make_tuple(48000, 44100, 32000, 44100, 15, 15),
|
| + std::tr1::make_tuple(48000, 44100, 16000, 44100, 15, 15),
|
| std::tr1::make_tuple(48000, 32000, 48000, 32000, 20, 35),
|
| std::tr1::make_tuple(48000, 32000, 32000, 32000, 20, 0),
|
| std::tr1::make_tuple(48000, 32000, 16000, 32000, 20, 20),
|
| @@ -2709,9 +2729,9 @@
|
| std::tr1::make_tuple(48000, 16000, 32000, 16000, 20, 20),
|
| std::tr1::make_tuple(48000, 16000, 16000, 16000, 20, 0),
|
|
|
| - std::tr1::make_tuple(44100, 48000, 48000, 48000, 15, 0),
|
| - std::tr1::make_tuple(44100, 48000, 32000, 48000, 15, 30),
|
| - std::tr1::make_tuple(44100, 48000, 16000, 48000, 15, 20),
|
| + std::tr1::make_tuple(44100, 48000, 48000, 48000, 20, 0),
|
| + std::tr1::make_tuple(44100, 48000, 32000, 48000, 20, 30),
|
| + std::tr1::make_tuple(44100, 48000, 16000, 48000, 20, 20),
|
| std::tr1::make_tuple(44100, 44100, 48000, 44100, 15, 20),
|
| std::tr1::make_tuple(44100, 44100, 32000, 44100, 15, 15),
|
| std::tr1::make_tuple(44100, 44100, 16000, 44100, 15, 15),
|
| @@ -2722,15 +2742,15 @@
|
| std::tr1::make_tuple(44100, 16000, 32000, 16000, 20, 20),
|
| std::tr1::make_tuple(44100, 16000, 16000, 16000, 20, 0),
|
|
|
| - std::tr1::make_tuple(32000, 48000, 48000, 48000, 35, 0),
|
| - std::tr1::make_tuple(32000, 48000, 32000, 48000, 65, 30),
|
| - std::tr1::make_tuple(32000, 48000, 16000, 48000, 40, 20),
|
| - std::tr1::make_tuple(32000, 44100, 48000, 44100, 20, 20),
|
| - std::tr1::make_tuple(32000, 44100, 32000, 44100, 20, 15),
|
| - std::tr1::make_tuple(32000, 44100, 16000, 44100, 20, 15),
|
| - std::tr1::make_tuple(32000, 32000, 48000, 32000, 35, 35),
|
| - std::tr1::make_tuple(32000, 32000, 32000, 32000, 0, 0),
|
| - std::tr1::make_tuple(32000, 32000, 16000, 32000, 40, 20),
|
| + std::tr1::make_tuple(32000, 48000, 48000, 48000, 20, 0),
|
| + std::tr1::make_tuple(32000, 48000, 32000, 48000, 20, 30),
|
| + std::tr1::make_tuple(32000, 48000, 16000, 48000, 20, 20),
|
| + std::tr1::make_tuple(32000, 44100, 48000, 44100, 15, 20),
|
| + std::tr1::make_tuple(32000, 44100, 32000, 44100, 15, 15),
|
| + std::tr1::make_tuple(32000, 44100, 16000, 44100, 15, 15),
|
| + std::tr1::make_tuple(32000, 32000, 48000, 32000, 20, 35),
|
| + std::tr1::make_tuple(32000, 32000, 32000, 32000, 20, 0),
|
| + std::tr1::make_tuple(32000, 32000, 16000, 32000, 20, 20),
|
| std::tr1::make_tuple(32000, 16000, 48000, 16000, 20, 20),
|
| std::tr1::make_tuple(32000, 16000, 32000, 16000, 20, 20),
|
| std::tr1::make_tuple(32000, 16000, 16000, 16000, 20, 0),
|
|
|