OLD | NEW |
---|---|
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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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) | 57 #if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE) |
58 // AECM doesn't support super-wb. | 58 // Android doesn't support 48kHz. |
59 const int kProcessSampleRates[] = {8000, 16000}; | 59 const int kProcessSampleRates[] = {8000, 16000, 32000}; |
60 #elif defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE) | 60 #elif defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE) |
61 const int kProcessSampleRates[] = {8000, 16000, 32000, 48000}; | 61 const int kProcessSampleRates[] = {8000, 16000, 32000, 48000}; |
62 #endif | 62 #endif |
63 | 63 |
64 enum StreamDirection { kForward = 0, kReverse }; | 64 enum StreamDirection { kForward = 0, kReverse }; |
65 | 65 |
66 void ConvertToFloat(const int16_t* int_data, ChannelBuffer<float>* cb) { | 66 void ConvertToFloat(const int16_t* int_data, ChannelBuffer<float>* cb) { |
67 ChannelBuffer<int16_t> cb_int(cb->num_frames(), | 67 ChannelBuffer<int16_t> cb_int(cb->num_frames(), |
68 cb->num_channels()); | 68 cb->num_channels()); |
69 Deinterleave(int_data, | 69 Deinterleave(int_data, |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
428 config.Set<ExperimentalAgc>(new ExperimentalAgc(false)); | 428 config.Set<ExperimentalAgc>(new ExperimentalAgc(false)); |
429 apm_.reset(AudioProcessing::Create(config)); | 429 apm_.reset(AudioProcessing::Create(config)); |
430 } | 430 } |
431 | 431 |
432 void ApmTest::SetUp() { | 432 void ApmTest::SetUp() { |
433 ASSERT_TRUE(apm_.get() != NULL); | 433 ASSERT_TRUE(apm_.get() != NULL); |
434 | 434 |
435 frame_ = new AudioFrame(); | 435 frame_ = new AudioFrame(); |
436 revframe_ = new AudioFrame(); | 436 revframe_ = new AudioFrame(); |
437 | 437 |
438 #if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE) | |
439 Init(16000, 16000, 16000, 2, 2, 2, false); | |
440 #else | |
441 Init(32000, 32000, 32000, 2, 2, 2, false); | 438 Init(32000, 32000, 32000, 2, 2, 2, false); |
442 #endif | |
443 } | 439 } |
444 | 440 |
445 void ApmTest::TearDown() { | 441 void ApmTest::TearDown() { |
446 if (frame_) { | 442 if (frame_) { |
447 delete frame_; | 443 delete frame_; |
448 } | 444 } |
449 frame_ = NULL; | 445 frame_ = NULL; |
450 | 446 |
451 if (revframe_) { | 447 if (revframe_) { |
452 delete revframe_; | 448 delete revframe_; |
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1032 delay_max_ms); | 1028 delay_max_ms); |
1033 // 5) A delay above the maximum delay should give an estimate at the | 1029 // 5) A delay above the maximum delay should give an estimate at the |
1034 // boundary (= (kMaxDelayBlocks - 1) * num_ms_per_block). | 1030 // boundary (= (kMaxDelayBlocks - 1) * num_ms_per_block). |
1035 delay_ms += 20; | 1031 delay_ms += 20; |
1036 ProcessDelayVerificationTest(delay_ms, kSystemDelayMs, delay_min_ms, | 1032 ProcessDelayVerificationTest(delay_ms, kSystemDelayMs, delay_min_ms, |
1037 delay_max_ms); | 1033 delay_max_ms); |
1038 } | 1034 } |
1039 } | 1035 } |
1040 | 1036 |
1041 TEST_F(ApmTest, EchoControlMobile) { | 1037 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 | |
1054 // Turn AECM on (and AEC off) | 1038 // Turn AECM on (and AEC off) |
1055 Init(16000, 16000, 16000, 2, 2, 2, false); | 1039 Init(16000, 16000, 16000, 2, 2, 2, false); |
1056 EXPECT_EQ(apm_->kNoError, apm_->echo_control_mobile()->Enable(true)); | 1040 EXPECT_EQ(apm_->kNoError, apm_->echo_control_mobile()->Enable(true)); |
1057 EXPECT_TRUE(apm_->echo_control_mobile()->is_enabled()); | 1041 EXPECT_TRUE(apm_->echo_control_mobile()->is_enabled()); |
1058 | 1042 |
1059 // Toggle routing modes | 1043 // Toggle routing modes |
1060 EchoControlMobile::RoutingMode mode[] = { | 1044 EchoControlMobile::RoutingMode mode[] = { |
1061 EchoControlMobile::kQuietEarpieceOrHeadset, | 1045 EchoControlMobile::kQuietEarpieceOrHeadset, |
1062 EchoControlMobile::kEarpiece, | 1046 EchoControlMobile::kEarpiece, |
1063 EchoControlMobile::kLoudEarpiece, | 1047 EchoControlMobile::kLoudEarpiece, |
(...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1967 | 1951 |
1968 Init(test->sample_rate(), test->sample_rate(), test->sample_rate(), | 1952 Init(test->sample_rate(), test->sample_rate(), test->sample_rate(), |
1969 num_input_channels, num_output_channels, num_render_channels, true); | 1953 num_input_channels, num_output_channels, num_render_channels, true); |
1970 Init(fapm.get()); | 1954 Init(fapm.get()); |
1971 | 1955 |
1972 ChannelBuffer<int16_t> output_cb(samples_per_channel, num_input_channels); | 1956 ChannelBuffer<int16_t> output_cb(samples_per_channel, num_input_channels); |
1973 ChannelBuffer<int16_t> output_int16(samples_per_channel, | 1957 ChannelBuffer<int16_t> output_int16(samples_per_channel, |
1974 num_input_channels); | 1958 num_input_channels); |
1975 | 1959 |
1976 int analog_level = 127; | 1960 int analog_level = 127; |
1961 size_t num_bad_chunks = 0; | |
1977 while (ReadFrame(far_file_, revframe_, revfloat_cb_.get()) && | 1962 while (ReadFrame(far_file_, revframe_, revfloat_cb_.get()) && |
1978 ReadFrame(near_file_, frame_, float_cb_.get())) { | 1963 ReadFrame(near_file_, frame_, float_cb_.get())) { |
1979 frame_->vad_activity_ = AudioFrame::kVadUnknown; | 1964 frame_->vad_activity_ = AudioFrame::kVadUnknown; |
1980 | 1965 |
1981 EXPECT_NOERR(apm_->AnalyzeReverseStream(revframe_)); | 1966 EXPECT_NOERR(apm_->AnalyzeReverseStream(revframe_)); |
1982 EXPECT_NOERR(fapm->AnalyzeReverseStream( | 1967 EXPECT_NOERR(fapm->AnalyzeReverseStream( |
1983 revfloat_cb_->channels(), | 1968 revfloat_cb_->channels(), |
1984 samples_per_channel, | 1969 samples_per_channel, |
1985 test->sample_rate(), | 1970 test->sample_rate(), |
1986 LayoutFromChannels(num_render_channels))); | 1971 LayoutFromChannels(num_render_channels))); |
(...skipping 18 matching lines...) Expand all Loading... | |
2005 LayoutFromChannels(num_output_channels), | 1990 LayoutFromChannels(num_output_channels), |
2006 float_cb_->channels())); | 1991 float_cb_->channels())); |
2007 for (size_t j = 0; j < num_output_channels; ++j) { | 1992 for (size_t j = 0; j < num_output_channels; ++j) { |
2008 FloatToS16(float_cb_->channels()[j], | 1993 FloatToS16(float_cb_->channels()[j], |
2009 samples_per_channel, | 1994 samples_per_channel, |
2010 output_cb.channels()[j]); | 1995 output_cb.channels()[j]); |
2011 float variance = 0; | 1996 float variance = 0; |
2012 float snr = ComputeSNR(output_int16.channels()[j], | 1997 float snr = ComputeSNR(output_int16.channels()[j], |
2013 output_cb.channels()[j], | 1998 output_cb.channels()[j], |
2014 samples_per_channel, &variance); | 1999 samples_per_channel, &variance); |
2015 #if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE) | 2000 |
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 | |
2021 const float kVarianceThreshold = 20; | 2001 const float kVarianceThreshold = 20; |
2022 const float kSNRThreshold = 20; | 2002 const float kSNRThreshold = 20; |
2023 #endif | 2003 |
2024 // Skip frames with low energy. | 2004 // Skip frames with low energy. |
2025 if (sqrt(variance) > kVarianceThreshold) { | 2005 if (sqrt(variance) > kVarianceThreshold && snr < kSNRThreshold) { |
2026 EXPECT_LT(kSNRThreshold, snr); | 2006 ++num_bad_chunks; |
2027 } | 2007 } |
2028 } | 2008 } |
2029 | 2009 |
2030 analog_level = fapm->gain_control()->stream_analog_level(); | 2010 analog_level = fapm->gain_control()->stream_analog_level(); |
2031 EXPECT_EQ(apm_->gain_control()->stream_analog_level(), | 2011 EXPECT_EQ(apm_->gain_control()->stream_analog_level(), |
2032 fapm->gain_control()->stream_analog_level()); | 2012 fapm->gain_control()->stream_analog_level()); |
2033 EXPECT_EQ(apm_->echo_cancellation()->stream_has_echo(), | 2013 EXPECT_EQ(apm_->echo_cancellation()->stream_has_echo(), |
2034 fapm->echo_cancellation()->stream_has_echo()); | 2014 fapm->echo_cancellation()->stream_has_echo()); |
2035 EXPECT_NEAR(apm_->noise_suppression()->speech_probability(), | 2015 EXPECT_NEAR(apm_->noise_suppression()->speech_probability(), |
2036 fapm->noise_suppression()->speech_probability(), | 2016 fapm->noise_suppression()->speech_probability(), |
2037 0.01); | 2017 0.01); |
2038 | 2018 |
2039 // Reset in case of downmixing. | 2019 // Reset in case of downmixing. |
2040 frame_->num_channels_ = static_cast<size_t>(test->num_input_channels()); | 2020 frame_->num_channels_ = static_cast<size_t>(test->num_input_channels()); |
2041 } | 2021 } |
2022 | |
2023 #if defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE) | |
2024 const size_t kMaxNumBadChunks = 0; | |
2025 #elif defined(WEBRTC_AUDIOPROC_FIXED_PROFILE) | |
2026 // There are a few chunks in the fixed-point profile that give low SNR. | |
2027 // Listening confirmed the difference is acceptable. | |
2028 const size_t kMaxNumBadChunks = 60; | |
2029 #endif | |
2030 EXPECT_LE(num_bad_chunks, kMaxNumBadChunks); | |
2031 | |
2042 rewind(far_file_); | 2032 rewind(far_file_); |
2043 rewind(near_file_); | 2033 rewind(near_file_); |
2044 } | 2034 } |
2045 } | 2035 } |
2046 | 2036 |
2047 // TODO(andrew): Add a test to process a few frames with different combinations | 2037 // TODO(andrew): Add a test to process a few frames with different combinations |
2048 // of enabled components. | 2038 // of enabled components. |
2049 | 2039 |
2050 TEST_F(ApmTest, Process) { | 2040 TEST_F(ApmTest, Process) { |
2051 GOOGLE_PROTOBUF_VERIFY_VERSION; | 2041 GOOGLE_PROTOBUF_VERIFY_VERSION; |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2553 | 2543 |
2554 if (min_ref_rate > 32000) { | 2544 if (min_ref_rate > 32000) { |
2555 ref_rate = 48000; | 2545 ref_rate = 48000; |
2556 } else if (min_ref_rate > 16000) { | 2546 } else if (min_ref_rate > 16000) { |
2557 ref_rate = 32000; | 2547 ref_rate = 32000; |
2558 } else if (min_ref_rate > 8000) { | 2548 } else if (min_ref_rate > 8000) { |
2559 ref_rate = 16000; | 2549 ref_rate = 16000; |
2560 } else { | 2550 } else { |
2561 ref_rate = 8000; | 2551 ref_rate = 8000; |
2562 } | 2552 } |
2563 #ifdef WEBRTC_AUDIOPROC_FIXED_PROFILE | 2553 #ifdef WEBRTC_ARCH_ARM_FAMILY |
2564 if (file_direction == kForward) { | 2554 if (file_direction == kForward) { |
2565 ref_rate = std::min(ref_rate, 16000); | 2555 ref_rate = std::min(ref_rate, 32000); |
2566 } | 2556 } |
2567 #endif | 2557 #endif |
2568 FILE* out_file = fopen( | 2558 FILE* out_file = fopen( |
2569 OutputFilePath("out", input_rate_, output_rate_, reverse_input_rate_, | 2559 OutputFilePath("out", input_rate_, output_rate_, reverse_input_rate_, |
2570 reverse_output_rate_, cf[i].num_input, | 2560 reverse_output_rate_, cf[i].num_input, |
2571 cf[i].num_output, cf[i].num_reverse_input, | 2561 cf[i].num_output, cf[i].num_reverse_input, |
2572 cf[i].num_reverse_output, file_direction).c_str(), | 2562 cf[i].num_reverse_output, file_direction).c_str(), |
2573 "rb"); | 2563 "rb"); |
2574 // The reference files always have matching input and output channels. | 2564 // The reference files always have matching input and output channels. |
2575 FILE* ref_file = fopen( | 2565 FILE* ref_file = fopen( |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2638 << reverse_input_rate_ << ", " << reverse_output_rate_ << ", " | 2628 << reverse_input_rate_ << ", " << reverse_output_rate_ << ", " |
2639 << cf[i].num_input << ", " << cf[i].num_output << ", " | 2629 << cf[i].num_input << ", " << cf[i].num_output << ", " |
2640 << cf[i].num_reverse_input << ", " << cf[i].num_reverse_output | 2630 << cf[i].num_reverse_input << ", " << cf[i].num_reverse_output |
2641 << ", " << file_direction << "): "; | 2631 << ", " << file_direction << "): "; |
2642 if (sq_error > 0) { | 2632 if (sq_error > 0) { |
2643 double snr = 10 * log10(variance / sq_error); | 2633 double snr = 10 * log10(variance / sq_error); |
2644 EXPECT_GE(snr, expected_snr); | 2634 EXPECT_GE(snr, expected_snr); |
2645 EXPECT_NE(0, expected_snr); | 2635 EXPECT_NE(0, expected_snr); |
2646 std::cout << "SNR=" << snr << " dB" << std::endl; | 2636 std::cout << "SNR=" << snr << " dB" << std::endl; |
2647 } else { | 2637 } else { |
2648 EXPECT_EQ(expected_snr, 0); | 2638 std::cout << "SNR=inf dB" << std::endl; |
peah-webrtc
2016/03/11 11:34:39
From offline discussions, I got the impression tha
aluebs-webrtc
2016/03/11 13:27:05
This is not a weaken of the test. When we specify
peah-webrtc
2016/03/11 21:37:28
I actually think that is a weakening of the test.
aluebs-webrtc
2016/03/14 17:30:40
I see that a EXPECT_EQ has been removed, but it is
peah-webrtc
2016/03/15 15:22:54
Thanks for the explanation! Now I get it :-) Aweso
| |
2649 std::cout << "SNR=" | |
2650 << "inf dB" << std::endl; | |
2651 } | 2639 } |
2652 | 2640 |
2653 fclose(out_file); | 2641 fclose(out_file); |
2654 fclose(ref_file); | 2642 fclose(ref_file); |
2655 } | 2643 } |
2656 } | 2644 } |
2657 } | 2645 } |
2658 | 2646 |
2659 #if defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE) | 2647 #if defined(WEBRTC_AUDIOPROC_FLOAT_PROFILE) |
2660 INSTANTIATE_TEST_CASE_P( | 2648 INSTANTIATE_TEST_CASE_P( |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2722 std::tr1::make_tuple(48000, 44100, 48000, 44100, 15, 20), | 2710 std::tr1::make_tuple(48000, 44100, 48000, 44100, 15, 20), |
2723 std::tr1::make_tuple(48000, 44100, 32000, 44100, 15, 15), | 2711 std::tr1::make_tuple(48000, 44100, 32000, 44100, 15, 15), |
2724 std::tr1::make_tuple(48000, 44100, 16000, 44100, 15, 15), | 2712 std::tr1::make_tuple(48000, 44100, 16000, 44100, 15, 15), |
2725 std::tr1::make_tuple(48000, 32000, 48000, 32000, 20, 35), | 2713 std::tr1::make_tuple(48000, 32000, 48000, 32000, 20, 35), |
2726 std::tr1::make_tuple(48000, 32000, 32000, 32000, 20, 0), | 2714 std::tr1::make_tuple(48000, 32000, 32000, 32000, 20, 0), |
2727 std::tr1::make_tuple(48000, 32000, 16000, 32000, 20, 20), | 2715 std::tr1::make_tuple(48000, 32000, 16000, 32000, 20, 20), |
2728 std::tr1::make_tuple(48000, 16000, 48000, 16000, 20, 20), | 2716 std::tr1::make_tuple(48000, 16000, 48000, 16000, 20, 20), |
2729 std::tr1::make_tuple(48000, 16000, 32000, 16000, 20, 20), | 2717 std::tr1::make_tuple(48000, 16000, 32000, 16000, 20, 20), |
2730 std::tr1::make_tuple(48000, 16000, 16000, 16000, 20, 0), | 2718 std::tr1::make_tuple(48000, 16000, 16000, 16000, 20, 0), |
2731 | 2719 |
2732 std::tr1::make_tuple(44100, 48000, 48000, 48000, 20, 0), | 2720 std::tr1::make_tuple(44100, 48000, 48000, 48000, 15, 0), |
2733 std::tr1::make_tuple(44100, 48000, 32000, 48000, 20, 30), | 2721 std::tr1::make_tuple(44100, 48000, 32000, 48000, 15, 30), |
2734 std::tr1::make_tuple(44100, 48000, 16000, 48000, 20, 20), | 2722 std::tr1::make_tuple(44100, 48000, 16000, 48000, 15, 20), |
2735 std::tr1::make_tuple(44100, 44100, 48000, 44100, 15, 20), | 2723 std::tr1::make_tuple(44100, 44100, 48000, 44100, 15, 20), |
2736 std::tr1::make_tuple(44100, 44100, 32000, 44100, 15, 15), | 2724 std::tr1::make_tuple(44100, 44100, 32000, 44100, 15, 15), |
2737 std::tr1::make_tuple(44100, 44100, 16000, 44100, 15, 15), | 2725 std::tr1::make_tuple(44100, 44100, 16000, 44100, 15, 15), |
2738 std::tr1::make_tuple(44100, 32000, 48000, 32000, 20, 35), | 2726 std::tr1::make_tuple(44100, 32000, 48000, 32000, 20, 35), |
2739 std::tr1::make_tuple(44100, 32000, 32000, 32000, 20, 0), | 2727 std::tr1::make_tuple(44100, 32000, 32000, 32000, 20, 0), |
2740 std::tr1::make_tuple(44100, 32000, 16000, 32000, 20, 20), | 2728 std::tr1::make_tuple(44100, 32000, 16000, 32000, 20, 20), |
2741 std::tr1::make_tuple(44100, 16000, 48000, 16000, 20, 20), | 2729 std::tr1::make_tuple(44100, 16000, 48000, 16000, 20, 20), |
2742 std::tr1::make_tuple(44100, 16000, 32000, 16000, 20, 20), | 2730 std::tr1::make_tuple(44100, 16000, 32000, 16000, 20, 20), |
2743 std::tr1::make_tuple(44100, 16000, 16000, 16000, 20, 0), | 2731 std::tr1::make_tuple(44100, 16000, 16000, 16000, 20, 0), |
2744 | 2732 |
2745 std::tr1::make_tuple(32000, 48000, 48000, 48000, 20, 0), | 2733 std::tr1::make_tuple(32000, 48000, 48000, 48000, 35, 0), |
peah-webrtc
2016/03/11 21:37:28
Why did these values need to be changed? Are these
aluebs-webrtc
2016/03/14 17:30:40
Here I only improved the SNRs, because the test st
peah-webrtc
2016/03/15 15:22:54
Awesome! Thanks for the explanation!
| |
2746 std::tr1::make_tuple(32000, 48000, 32000, 48000, 20, 30), | 2734 std::tr1::make_tuple(32000, 48000, 32000, 48000, 65, 30), |
2747 std::tr1::make_tuple(32000, 48000, 16000, 48000, 20, 20), | 2735 std::tr1::make_tuple(32000, 48000, 16000, 48000, 40, 20), |
2748 std::tr1::make_tuple(32000, 44100, 48000, 44100, 15, 20), | 2736 std::tr1::make_tuple(32000, 44100, 48000, 44100, 20, 20), |
2749 std::tr1::make_tuple(32000, 44100, 32000, 44100, 15, 15), | 2737 std::tr1::make_tuple(32000, 44100, 32000, 44100, 20, 15), |
2750 std::tr1::make_tuple(32000, 44100, 16000, 44100, 15, 15), | 2738 std::tr1::make_tuple(32000, 44100, 16000, 44100, 20, 15), |
2751 std::tr1::make_tuple(32000, 32000, 48000, 32000, 20, 35), | 2739 std::tr1::make_tuple(32000, 32000, 48000, 32000, 35, 35), |
2752 std::tr1::make_tuple(32000, 32000, 32000, 32000, 20, 0), | 2740 std::tr1::make_tuple(32000, 32000, 32000, 32000, 0, 0), |
2753 std::tr1::make_tuple(32000, 32000, 16000, 32000, 20, 20), | 2741 std::tr1::make_tuple(32000, 32000, 16000, 32000, 40, 20), |
2754 std::tr1::make_tuple(32000, 16000, 48000, 16000, 20, 20), | 2742 std::tr1::make_tuple(32000, 16000, 48000, 16000, 20, 20), |
2755 std::tr1::make_tuple(32000, 16000, 32000, 16000, 20, 20), | 2743 std::tr1::make_tuple(32000, 16000, 32000, 16000, 20, 20), |
2756 std::tr1::make_tuple(32000, 16000, 16000, 16000, 20, 0), | 2744 std::tr1::make_tuple(32000, 16000, 16000, 16000, 20, 0), |
2757 | 2745 |
2758 std::tr1::make_tuple(16000, 48000, 48000, 48000, 25, 0), | 2746 std::tr1::make_tuple(16000, 48000, 48000, 48000, 25, 0), |
2759 std::tr1::make_tuple(16000, 48000, 32000, 48000, 25, 30), | 2747 std::tr1::make_tuple(16000, 48000, 32000, 48000, 25, 30), |
2760 std::tr1::make_tuple(16000, 48000, 16000, 48000, 25, 20), | 2748 std::tr1::make_tuple(16000, 48000, 16000, 48000, 25, 20), |
2761 std::tr1::make_tuple(16000, 44100, 48000, 44100, 15, 20), | 2749 std::tr1::make_tuple(16000, 44100, 48000, 44100, 15, 20), |
2762 std::tr1::make_tuple(16000, 44100, 32000, 44100, 15, 15), | 2750 std::tr1::make_tuple(16000, 44100, 32000, 44100, 15, 15), |
2763 std::tr1::make_tuple(16000, 44100, 16000, 44100, 15, 15), | 2751 std::tr1::make_tuple(16000, 44100, 16000, 44100, 15, 15), |
2764 std::tr1::make_tuple(16000, 32000, 48000, 32000, 25, 35), | 2752 std::tr1::make_tuple(16000, 32000, 48000, 32000, 25, 35), |
2765 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0), | 2753 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0), |
2766 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20), | 2754 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20), |
2767 std::tr1::make_tuple(16000, 16000, 48000, 16000, 35, 20), | 2755 std::tr1::make_tuple(16000, 16000, 48000, 16000, 35, 20), |
2768 std::tr1::make_tuple(16000, 16000, 32000, 16000, 40, 20), | 2756 std::tr1::make_tuple(16000, 16000, 32000, 16000, 40, 20), |
2769 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0))); | 2757 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0))); |
2770 #endif | 2758 #endif |
2771 | 2759 |
2772 } // namespace | 2760 } // namespace |
2773 } // namespace webrtc | 2761 } // namespace webrtc |
OLD | NEW |