Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Side by Side Diff: webrtc/modules/audio_processing/test/audio_processing_unittest.cc

Issue 1781893002: Revert of Drop the 16kHz sample rate restriction on AECM and zero out higher bands (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 // TODO(bjornv): This is not feasible until the functionality has been 47 // TODO(bjornv): This is not feasible until the functionality has been
48 // re-implemented; see comment at the bottom of this file. For now, the user has 48 // re-implemented; see comment at the bottom of this file. For now, the user has
49 // to hard code the |write_ref_data| value. 49 // to hard code the |write_ref_data| value.
50 // When false, this will compare the output data with the results stored to 50 // When false, this will compare the output data with the results stored to
51 // file. This is the typical case. When the file should be updated, it can 51 // file. This is the typical case. When the file should be updated, it can
52 // be set to true with the command-line switch --write_ref_data. 52 // be set to true with the command-line switch --write_ref_data.
53 bool write_ref_data = false; 53 bool write_ref_data = false;
54 const google::protobuf::int32 kChannels[] = {1, 2}; 54 const google::protobuf::int32 kChannels[] = {1, 2};
55 const int kSampleRates[] = {8000, 16000, 32000, 48000}; 55 const int kSampleRates[] = {8000, 16000, 32000, 48000};
56 56
57 #if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
58 // AECM doesn't support super-wb.
59 const int kProcessSampleRates[] = {8000, 16000};
60 #elif defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE)
57 const int kProcessSampleRates[] = {8000, 16000, 32000, 48000}; 61 const int kProcessSampleRates[] = {8000, 16000, 32000, 48000};
62 #endif
58 63
59 enum StreamDirection { kForward = 0, kReverse }; 64 enum StreamDirection { kForward = 0, kReverse };
60 65
61 void ConvertToFloat(const int16_t* int_data, ChannelBuffer<float>* cb) { 66 void ConvertToFloat(const int16_t* int_data, ChannelBuffer<float>* cb) {
62 ChannelBuffer<int16_t> cb_int(cb->num_frames(), 67 ChannelBuffer<int16_t> cb_int(cb->num_frames(),
63 cb->num_channels()); 68 cb->num_channels());
64 Deinterleave(int_data, 69 Deinterleave(int_data,
65 cb->num_frames(), 70 cb->num_frames(),
66 cb->num_channels(), 71 cb->num_channels(),
67 cb_int.channels()); 72 cb_int.channels());
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 config.Set<ExperimentalAgc>(new ExperimentalAgc(false)); 428 config.Set<ExperimentalAgc>(new ExperimentalAgc(false));
424 apm_.reset(AudioProcessing::Create(config)); 429 apm_.reset(AudioProcessing::Create(config));
425 } 430 }
426 431
427 void ApmTest::SetUp() { 432 void ApmTest::SetUp() {
428 ASSERT_TRUE(apm_.get() != NULL); 433 ASSERT_TRUE(apm_.get() != NULL);
429 434
430 frame_ = new AudioFrame(); 435 frame_ = new AudioFrame();
431 revframe_ = new AudioFrame(); 436 revframe_ = new AudioFrame();
432 437
438 #if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
439 Init(16000, 16000, 16000, 2, 2, 2, false);
440 #else
433 Init(32000, 32000, 32000, 2, 2, 2, false); 441 Init(32000, 32000, 32000, 2, 2, 2, false);
442 #endif
434 } 443 }
435 444
436 void ApmTest::TearDown() { 445 void ApmTest::TearDown() {
437 if (frame_) { 446 if (frame_) {
438 delete frame_; 447 delete frame_;
439 } 448 }
440 frame_ = NULL; 449 frame_ = NULL;
441 450
442 if (revframe_) { 451 if (revframe_) {
443 delete revframe_; 452 delete revframe_;
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
1023 delay_max_ms); 1032 delay_max_ms);
1024 // 5) A delay above the maximum delay should give an estimate at the 1033 // 5) A delay above the maximum delay should give an estimate at the
1025 // boundary (= (kMaxDelayBlocks - 1) * num_ms_per_block). 1034 // boundary (= (kMaxDelayBlocks - 1) * num_ms_per_block).
1026 delay_ms += 20; 1035 delay_ms += 20;
1027 ProcessDelayVerificationTest(delay_ms, kSystemDelayMs, delay_min_ms, 1036 ProcessDelayVerificationTest(delay_ms, kSystemDelayMs, delay_min_ms,
1028 delay_max_ms); 1037 delay_max_ms);
1029 } 1038 }
1030 } 1039 }
1031 1040
1032 TEST_F(ApmTest, EchoControlMobile) { 1041 TEST_F(ApmTest, EchoControlMobile) {
1042 // AECM won't use super-wideband.
1043 SetFrameSampleRate(frame_, 32000);
1044 EXPECT_NOERR(apm_->ProcessStream(frame_));
1045 EXPECT_EQ(apm_->kBadSampleRateError,
1046 apm_->echo_control_mobile()->Enable(true));
1047 SetFrameSampleRate(frame_, 16000);
1048 EXPECT_NOERR(apm_->ProcessStream(frame_));
1049 EXPECT_EQ(apm_->kNoError,
1050 apm_->echo_control_mobile()->Enable(true));
1051 SetFrameSampleRate(frame_, 32000);
1052 EXPECT_EQ(apm_->kUnsupportedComponentError, apm_->ProcessStream(frame_));
1053
1033 // Turn AECM on (and AEC off) 1054 // Turn AECM on (and AEC off)
1034 Init(16000, 16000, 16000, 2, 2, 2, false); 1055 Init(16000, 16000, 16000, 2, 2, 2, false);
1035 EXPECT_EQ(apm_->kNoError, apm_->echo_control_mobile()->Enable(true)); 1056 EXPECT_EQ(apm_->kNoError, apm_->echo_control_mobile()->Enable(true));
1036 EXPECT_TRUE(apm_->echo_control_mobile()->is_enabled()); 1057 EXPECT_TRUE(apm_->echo_control_mobile()->is_enabled());
1037 1058
1038 // Toggle routing modes 1059 // Toggle routing modes
1039 EchoControlMobile::RoutingMode mode[] = { 1060 EchoControlMobile::RoutingMode mode[] = {
1040 EchoControlMobile::kQuietEarpieceOrHeadset, 1061 EchoControlMobile::kQuietEarpieceOrHeadset,
1041 EchoControlMobile::kEarpiece, 1062 EchoControlMobile::kEarpiece,
1042 EchoControlMobile::kLoudEarpiece, 1063 EchoControlMobile::kLoudEarpiece,
(...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after
1946 1967
1947 Init(test->sample_rate(), test->sample_rate(), test->sample_rate(), 1968 Init(test->sample_rate(), test->sample_rate(), test->sample_rate(),
1948 num_input_channels, num_output_channels, num_render_channels, true); 1969 num_input_channels, num_output_channels, num_render_channels, true);
1949 Init(fapm.get()); 1970 Init(fapm.get());
1950 1971
1951 ChannelBuffer<int16_t> output_cb(samples_per_channel, num_input_channels); 1972 ChannelBuffer<int16_t> output_cb(samples_per_channel, num_input_channels);
1952 ChannelBuffer<int16_t> output_int16(samples_per_channel, 1973 ChannelBuffer<int16_t> output_int16(samples_per_channel,
1953 num_input_channels); 1974 num_input_channels);
1954 1975
1955 int analog_level = 127; 1976 int analog_level = 127;
1956 size_t num_bad_chunks = 0;
1957 while (ReadFrame(far_file_, revframe_, revfloat_cb_.get()) && 1977 while (ReadFrame(far_file_, revframe_, revfloat_cb_.get()) &&
1958 ReadFrame(near_file_, frame_, float_cb_.get())) { 1978 ReadFrame(near_file_, frame_, float_cb_.get())) {
1959 frame_->vad_activity_ = AudioFrame::kVadUnknown; 1979 frame_->vad_activity_ = AudioFrame::kVadUnknown;
1960 1980
1961 EXPECT_NOERR(apm_->AnalyzeReverseStream(revframe_)); 1981 EXPECT_NOERR(apm_->AnalyzeReverseStream(revframe_));
1962 EXPECT_NOERR(fapm->AnalyzeReverseStream( 1982 EXPECT_NOERR(fapm->AnalyzeReverseStream(
1963 revfloat_cb_->channels(), 1983 revfloat_cb_->channels(),
1964 samples_per_channel, 1984 samples_per_channel,
1965 test->sample_rate(), 1985 test->sample_rate(),
1966 LayoutFromChannels(num_render_channels))); 1986 LayoutFromChannels(num_render_channels)));
(...skipping 18 matching lines...) Expand all
1985 LayoutFromChannels(num_output_channels), 2005 LayoutFromChannels(num_output_channels),
1986 float_cb_->channels())); 2006 float_cb_->channels()));
1987 for (size_t j = 0; j < num_output_channels; ++j) { 2007 for (size_t j = 0; j < num_output_channels; ++j) {
1988 FloatToS16(float_cb_->channels()[j], 2008 FloatToS16(float_cb_->channels()[j],
1989 samples_per_channel, 2009 samples_per_channel,
1990 output_cb.channels()[j]); 2010 output_cb.channels()[j]);
1991 float variance = 0; 2011 float variance = 0;
1992 float snr = ComputeSNR(output_int16.channels()[j], 2012 float snr = ComputeSNR(output_int16.channels()[j],
1993 output_cb.channels()[j], 2013 output_cb.channels()[j],
1994 samples_per_channel, &variance); 2014 samples_per_channel, &variance);
1995 2015 #if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
2016 // There are a few chunks in the fixed-point profile that give low SNR.
2017 // Listening confirmed the difference is acceptable.
2018 const float kVarianceThreshold = 150;
2019 const float kSNRThreshold = 10;
2020 #else
1996 const float kVarianceThreshold = 20; 2021 const float kVarianceThreshold = 20;
1997 const float kSNRThreshold = 20; 2022 const float kSNRThreshold = 20;
1998 2023 #endif
1999 // Skip frames with low energy. 2024 // Skip frames with low energy.
2000 if (sqrt(variance) > kVarianceThreshold && snr < kSNRThreshold) { 2025 if (sqrt(variance) > kVarianceThreshold) {
2001 ++num_bad_chunks; 2026 EXPECT_LT(kSNRThreshold, snr);
2002 } 2027 }
2003 } 2028 }
2004 2029
2005 analog_level = fapm->gain_control()->stream_analog_level(); 2030 analog_level = fapm->gain_control()->stream_analog_level();
2006 EXPECT_EQ(apm_->gain_control()->stream_analog_level(), 2031 EXPECT_EQ(apm_->gain_control()->stream_analog_level(),
2007 fapm->gain_control()->stream_analog_level()); 2032 fapm->gain_control()->stream_analog_level());
2008 EXPECT_EQ(apm_->echo_cancellation()->stream_has_echo(), 2033 EXPECT_EQ(apm_->echo_cancellation()->stream_has_echo(),
2009 fapm->echo_cancellation()->stream_has_echo()); 2034 fapm->echo_cancellation()->stream_has_echo());
2010 EXPECT_NEAR(apm_->noise_suppression()->speech_probability(), 2035 EXPECT_NEAR(apm_->noise_suppression()->speech_probability(),
2011 fapm->noise_suppression()->speech_probability(), 2036 fapm->noise_suppression()->speech_probability(),
2012 0.01); 2037 0.01);
2013 2038
2014 // Reset in case of downmixing. 2039 // Reset in case of downmixing.
2015 frame_->num_channels_ = static_cast<size_t>(test->num_input_channels()); 2040 frame_->num_channels_ = static_cast<size_t>(test->num_input_channels());
2016 } 2041 }
2017
2018 #if defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE)
2019 const size_t kMaxNumBadChunks = 0;
2020 #elif defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
2021 // There are a few chunks in the fixed-point profile that give low SNR.
2022 // Listening confirmed the difference is acceptable.
2023 const size_t kMaxNumBadChunks = 60;
2024 #endif
2025 EXPECT_LE(num_bad_chunks, kMaxNumBadChunks);
2026
2027 rewind(far_file_); 2042 rewind(far_file_);
2028 rewind(near_file_); 2043 rewind(near_file_);
2029 } 2044 }
2030 } 2045 }
2031 2046
2032 // TODO(andrew): Add a test to process a few frames with different combinations 2047 // TODO(andrew): Add a test to process a few frames with different combinations
2033 // of enabled components. 2048 // of enabled components.
2034 2049
2035 TEST_F(ApmTest, Process) { 2050 TEST_F(ApmTest, Process) {
2036 GOOGLE_PROTOBUF_VERIFY_VERSION; 2051 GOOGLE_PROTOBUF_VERIFY_VERSION;
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after
2538 2553
2539 if (min_ref_rate > 32000) { 2554 if (min_ref_rate > 32000) {
2540 ref_rate = 48000; 2555 ref_rate = 48000;
2541 } else if (min_ref_rate > 16000) { 2556 } else if (min_ref_rate > 16000) {
2542 ref_rate = 32000; 2557 ref_rate = 32000;
2543 } else if (min_ref_rate > 8000) { 2558 } else if (min_ref_rate > 8000) {
2544 ref_rate = 16000; 2559 ref_rate = 16000;
2545 } else { 2560 } else {
2546 ref_rate = 8000; 2561 ref_rate = 8000;
2547 } 2562 }
2563 #ifdef WEBRTC_AUDIOPROC_FIXED_PROFILE
2564 if (file_direction == kForward) {
2565 ref_rate = std::min(ref_rate, 16000);
2566 }
2567 #endif
2548 FILE* out_file = fopen( 2568 FILE* out_file = fopen(
2549 OutputFilePath("out", input_rate_, output_rate_, reverse_input_rate_, 2569 OutputFilePath("out", input_rate_, output_rate_, reverse_input_rate_,
2550 reverse_output_rate_, cf[i].num_input, 2570 reverse_output_rate_, cf[i].num_input,
2551 cf[i].num_output, cf[i].num_reverse_input, 2571 cf[i].num_output, cf[i].num_reverse_input,
2552 cf[i].num_reverse_output, file_direction).c_str(), 2572 cf[i].num_reverse_output, file_direction).c_str(),
2553 "rb"); 2573 "rb");
2554 // The reference files always have matching input and output channels. 2574 // The reference files always have matching input and output channels.
2555 FILE* ref_file = fopen( 2575 FILE* ref_file = fopen(
2556 OutputFilePath("ref", ref_rate, ref_rate, ref_rate, ref_rate, 2576 OutputFilePath("ref", ref_rate, ref_rate, ref_rate, ref_rate,
2557 cf[i].num_output, cf[i].num_output, 2577 cf[i].num_output, cf[i].num_output,
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
2689 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0), 2709 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0),
2690 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20), 2710 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20),
2691 std::tr1::make_tuple(16000, 16000, 48000, 16000, 40, 20), 2711 std::tr1::make_tuple(16000, 16000, 48000, 16000, 40, 20),
2692 std::tr1::make_tuple(16000, 16000, 32000, 16000, 50, 20), 2712 std::tr1::make_tuple(16000, 16000, 32000, 16000, 50, 20),
2693 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0))); 2713 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0)));
2694 2714
2695 #elif defined(WEBRTC_AUDIOPROC_FIXED_PROFILE) 2715 #elif defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
2696 INSTANTIATE_TEST_CASE_P( 2716 INSTANTIATE_TEST_CASE_P(
2697 CommonFormats, 2717 CommonFormats,
2698 AudioProcessingTest, 2718 AudioProcessingTest,
2699 testing::Values(std::tr1::make_tuple(48000, 48000, 48000, 48000, 0, 0), 2719 testing::Values(std::tr1::make_tuple(48000, 48000, 48000, 48000, 20, 0),
2700 std::tr1::make_tuple(48000, 48000, 32000, 48000, 40, 30), 2720 std::tr1::make_tuple(48000, 48000, 32000, 48000, 20, 30),
2701 std::tr1::make_tuple(48000, 48000, 16000, 48000, 40, 20), 2721 std::tr1::make_tuple(48000, 48000, 16000, 48000, 20, 20),
2702 std::tr1::make_tuple(48000, 44100, 48000, 44100, 25, 20), 2722 std::tr1::make_tuple(48000, 44100, 48000, 44100, 15, 20),
2703 std::tr1::make_tuple(48000, 44100, 32000, 44100, 25, 15), 2723 std::tr1::make_tuple(48000, 44100, 32000, 44100, 15, 15),
2704 std::tr1::make_tuple(48000, 44100, 16000, 44100, 25, 15), 2724 std::tr1::make_tuple(48000, 44100, 16000, 44100, 15, 15),
2705 std::tr1::make_tuple(48000, 32000, 48000, 32000, 20, 35), 2725 std::tr1::make_tuple(48000, 32000, 48000, 32000, 20, 35),
2706 std::tr1::make_tuple(48000, 32000, 32000, 32000, 20, 0), 2726 std::tr1::make_tuple(48000, 32000, 32000, 32000, 20, 0),
2707 std::tr1::make_tuple(48000, 32000, 16000, 32000, 20, 20), 2727 std::tr1::make_tuple(48000, 32000, 16000, 32000, 20, 20),
2708 std::tr1::make_tuple(48000, 16000, 48000, 16000, 20, 20), 2728 std::tr1::make_tuple(48000, 16000, 48000, 16000, 20, 20),
2709 std::tr1::make_tuple(48000, 16000, 32000, 16000, 20, 20), 2729 std::tr1::make_tuple(48000, 16000, 32000, 16000, 20, 20),
2710 std::tr1::make_tuple(48000, 16000, 16000, 16000, 20, 0), 2730 std::tr1::make_tuple(48000, 16000, 16000, 16000, 20, 0),
2711 2731
2712 std::tr1::make_tuple(44100, 48000, 48000, 48000, 15, 0), 2732 std::tr1::make_tuple(44100, 48000, 48000, 48000, 20, 0),
2713 std::tr1::make_tuple(44100, 48000, 32000, 48000, 15, 30), 2733 std::tr1::make_tuple(44100, 48000, 32000, 48000, 20, 30),
2714 std::tr1::make_tuple(44100, 48000, 16000, 48000, 15, 20), 2734 std::tr1::make_tuple(44100, 48000, 16000, 48000, 20, 20),
2715 std::tr1::make_tuple(44100, 44100, 48000, 44100, 15, 20), 2735 std::tr1::make_tuple(44100, 44100, 48000, 44100, 15, 20),
2716 std::tr1::make_tuple(44100, 44100, 32000, 44100, 15, 15), 2736 std::tr1::make_tuple(44100, 44100, 32000, 44100, 15, 15),
2717 std::tr1::make_tuple(44100, 44100, 16000, 44100, 15, 15), 2737 std::tr1::make_tuple(44100, 44100, 16000, 44100, 15, 15),
2718 std::tr1::make_tuple(44100, 32000, 48000, 32000, 20, 35), 2738 std::tr1::make_tuple(44100, 32000, 48000, 32000, 20, 35),
2719 std::tr1::make_tuple(44100, 32000, 32000, 32000, 20, 0), 2739 std::tr1::make_tuple(44100, 32000, 32000, 32000, 20, 0),
2720 std::tr1::make_tuple(44100, 32000, 16000, 32000, 20, 20), 2740 std::tr1::make_tuple(44100, 32000, 16000, 32000, 20, 20),
2721 std::tr1::make_tuple(44100, 16000, 48000, 16000, 20, 20), 2741 std::tr1::make_tuple(44100, 16000, 48000, 16000, 20, 20),
2722 std::tr1::make_tuple(44100, 16000, 32000, 16000, 20, 20), 2742 std::tr1::make_tuple(44100, 16000, 32000, 16000, 20, 20),
2723 std::tr1::make_tuple(44100, 16000, 16000, 16000, 20, 0), 2743 std::tr1::make_tuple(44100, 16000, 16000, 16000, 20, 0),
2724 2744
2725 std::tr1::make_tuple(32000, 48000, 48000, 48000, 35, 0), 2745 std::tr1::make_tuple(32000, 48000, 48000, 48000, 20, 0),
2726 std::tr1::make_tuple(32000, 48000, 32000, 48000, 65, 30), 2746 std::tr1::make_tuple(32000, 48000, 32000, 48000, 20, 30),
2727 std::tr1::make_tuple(32000, 48000, 16000, 48000, 40, 20), 2747 std::tr1::make_tuple(32000, 48000, 16000, 48000, 20, 20),
2728 std::tr1::make_tuple(32000, 44100, 48000, 44100, 20, 20), 2748 std::tr1::make_tuple(32000, 44100, 48000, 44100, 15, 20),
2729 std::tr1::make_tuple(32000, 44100, 32000, 44100, 20, 15), 2749 std::tr1::make_tuple(32000, 44100, 32000, 44100, 15, 15),
2730 std::tr1::make_tuple(32000, 44100, 16000, 44100, 20, 15), 2750 std::tr1::make_tuple(32000, 44100, 16000, 44100, 15, 15),
2731 std::tr1::make_tuple(32000, 32000, 48000, 32000, 35, 35), 2751 std::tr1::make_tuple(32000, 32000, 48000, 32000, 20, 35),
2732 std::tr1::make_tuple(32000, 32000, 32000, 32000, 0, 0), 2752 std::tr1::make_tuple(32000, 32000, 32000, 32000, 20, 0),
2733 std::tr1::make_tuple(32000, 32000, 16000, 32000, 40, 20), 2753 std::tr1::make_tuple(32000, 32000, 16000, 32000, 20, 20),
2734 std::tr1::make_tuple(32000, 16000, 48000, 16000, 20, 20), 2754 std::tr1::make_tuple(32000, 16000, 48000, 16000, 20, 20),
2735 std::tr1::make_tuple(32000, 16000, 32000, 16000, 20, 20), 2755 std::tr1::make_tuple(32000, 16000, 32000, 16000, 20, 20),
2736 std::tr1::make_tuple(32000, 16000, 16000, 16000, 20, 0), 2756 std::tr1::make_tuple(32000, 16000, 16000, 16000, 20, 0),
2737 2757
2738 std::tr1::make_tuple(16000, 48000, 48000, 48000, 25, 0), 2758 std::tr1::make_tuple(16000, 48000, 48000, 48000, 25, 0),
2739 std::tr1::make_tuple(16000, 48000, 32000, 48000, 25, 30), 2759 std::tr1::make_tuple(16000, 48000, 32000, 48000, 25, 30),
2740 std::tr1::make_tuple(16000, 48000, 16000, 48000, 25, 20), 2760 std::tr1::make_tuple(16000, 48000, 16000, 48000, 25, 20),
2741 std::tr1::make_tuple(16000, 44100, 48000, 44100, 15, 20), 2761 std::tr1::make_tuple(16000, 44100, 48000, 44100, 15, 20),
2742 std::tr1::make_tuple(16000, 44100, 32000, 44100, 15, 15), 2762 std::tr1::make_tuple(16000, 44100, 32000, 44100, 15, 15),
2743 std::tr1::make_tuple(16000, 44100, 16000, 44100, 15, 15), 2763 std::tr1::make_tuple(16000, 44100, 16000, 44100, 15, 15),
2744 std::tr1::make_tuple(16000, 32000, 48000, 32000, 25, 35), 2764 std::tr1::make_tuple(16000, 32000, 48000, 32000, 25, 35),
2745 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0), 2765 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0),
2746 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20), 2766 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20),
2747 std::tr1::make_tuple(16000, 16000, 48000, 16000, 35, 20), 2767 std::tr1::make_tuple(16000, 16000, 48000, 16000, 35, 20),
2748 std::tr1::make_tuple(16000, 16000, 32000, 16000, 40, 20), 2768 std::tr1::make_tuple(16000, 16000, 32000, 16000, 40, 20),
2749 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0))); 2769 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0)));
2750 #endif 2770 #endif
2751 2771
2752 } // namespace 2772 } // namespace
2753 } // namespace webrtc 2773 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_processing/include/audio_processing.h ('k') | webrtc/voice_engine/transmit_mixer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698