Chromium Code Reviews| 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 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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) | |
| 61 const int kProcessSampleRates[] = {8000, 16000, 32000, 48000}; | 57 const int kProcessSampleRates[] = {8000, 16000, 32000, 48000}; |
| 62 #endif | |
| 63 | 58 |
| 64 enum StreamDirection { kForward = 0, kReverse }; | 59 enum StreamDirection { kForward = 0, kReverse }; |
| 65 | 60 |
| 66 void ConvertToFloat(const int16_t* int_data, ChannelBuffer<float>* cb) { | 61 void ConvertToFloat(const int16_t* int_data, ChannelBuffer<float>* cb) { |
| 67 ChannelBuffer<int16_t> cb_int(cb->num_frames(), | 62 ChannelBuffer<int16_t> cb_int(cb->num_frames(), |
| 68 cb->num_channels()); | 63 cb->num_channels()); |
| 69 Deinterleave(int_data, | 64 Deinterleave(int_data, |
| 70 cb->num_frames(), | 65 cb->num_frames(), |
| 71 cb->num_channels(), | 66 cb->num_channels(), |
| 72 cb_int.channels()); | 67 cb_int.channels()); |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 428 config.Set<ExperimentalAgc>(new ExperimentalAgc(false)); | 423 config.Set<ExperimentalAgc>(new ExperimentalAgc(false)); |
| 429 apm_.reset(AudioProcessing::Create(config)); | 424 apm_.reset(AudioProcessing::Create(config)); |
| 430 } | 425 } |
| 431 | 426 |
| 432 void ApmTest::SetUp() { | 427 void ApmTest::SetUp() { |
| 433 ASSERT_TRUE(apm_.get() != NULL); | 428 ASSERT_TRUE(apm_.get() != NULL); |
| 434 | 429 |
| 435 frame_ = new AudioFrame(); | 430 frame_ = new AudioFrame(); |
| 436 revframe_ = new AudioFrame(); | 431 revframe_ = new AudioFrame(); |
| 437 | 432 |
| 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); | 433 Init(32000, 32000, 32000, 2, 2, 2, false); |
| 442 #endif | |
| 443 } | 434 } |
| 444 | 435 |
| 445 void ApmTest::TearDown() { | 436 void ApmTest::TearDown() { |
| 446 if (frame_) { | 437 if (frame_) { |
| 447 delete frame_; | 438 delete frame_; |
| 448 } | 439 } |
| 449 frame_ = NULL; | 440 frame_ = NULL; |
| 450 | 441 |
| 451 if (revframe_) { | 442 if (revframe_) { |
| 452 delete revframe_; | 443 delete revframe_; |
| (...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1032 delay_max_ms); | 1023 delay_max_ms); |
| 1033 // 5) A delay above the maximum delay should give an estimate at the | 1024 // 5) A delay above the maximum delay should give an estimate at the |
| 1034 // boundary (= (kMaxDelayBlocks - 1) * num_ms_per_block). | 1025 // boundary (= (kMaxDelayBlocks - 1) * num_ms_per_block). |
| 1035 delay_ms += 20; | 1026 delay_ms += 20; |
| 1036 ProcessDelayVerificationTest(delay_ms, kSystemDelayMs, delay_min_ms, | 1027 ProcessDelayVerificationTest(delay_ms, kSystemDelayMs, delay_min_ms, |
| 1037 delay_max_ms); | 1028 delay_max_ms); |
| 1038 } | 1029 } |
| 1039 } | 1030 } |
| 1040 | 1031 |
| 1041 TEST_F(ApmTest, EchoControlMobile) { | 1032 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) | 1033 // Turn AECM on (and AEC off) |
| 1055 Init(16000, 16000, 16000, 2, 2, 2, false); | 1034 Init(16000, 16000, 16000, 2, 2, 2, false); |
| 1056 EXPECT_EQ(apm_->kNoError, apm_->echo_control_mobile()->Enable(true)); | 1035 EXPECT_EQ(apm_->kNoError, apm_->echo_control_mobile()->Enable(true)); |
| 1057 EXPECT_TRUE(apm_->echo_control_mobile()->is_enabled()); | 1036 EXPECT_TRUE(apm_->echo_control_mobile()->is_enabled()); |
| 1058 | 1037 |
| 1059 // Toggle routing modes | 1038 // Toggle routing modes |
| 1060 EchoControlMobile::RoutingMode mode[] = { | 1039 EchoControlMobile::RoutingMode mode[] = { |
| 1061 EchoControlMobile::kQuietEarpieceOrHeadset, | 1040 EchoControlMobile::kQuietEarpieceOrHeadset, |
| 1062 EchoControlMobile::kEarpiece, | 1041 EchoControlMobile::kEarpiece, |
| 1063 EchoControlMobile::kLoudEarpiece, | 1042 EchoControlMobile::kLoudEarpiece, |
| (...skipping 903 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1967 | 1946 |
| 1968 Init(test->sample_rate(), test->sample_rate(), test->sample_rate(), | 1947 Init(test->sample_rate(), test->sample_rate(), test->sample_rate(), |
| 1969 num_input_channels, num_output_channels, num_render_channels, true); | 1948 num_input_channels, num_output_channels, num_render_channels, true); |
| 1970 Init(fapm.get()); | 1949 Init(fapm.get()); |
| 1971 | 1950 |
| 1972 ChannelBuffer<int16_t> output_cb(samples_per_channel, num_input_channels); | 1951 ChannelBuffer<int16_t> output_cb(samples_per_channel, num_input_channels); |
| 1973 ChannelBuffer<int16_t> output_int16(samples_per_channel, | 1952 ChannelBuffer<int16_t> output_int16(samples_per_channel, |
| 1974 num_input_channels); | 1953 num_input_channels); |
| 1975 | 1954 |
| 1976 int analog_level = 127; | 1955 int analog_level = 127; |
| 1956 size_t num_bad_chunks = 0; | |
| 1977 while (ReadFrame(far_file_, revframe_, revfloat_cb_.get()) && | 1957 while (ReadFrame(far_file_, revframe_, revfloat_cb_.get()) && |
| 1978 ReadFrame(near_file_, frame_, float_cb_.get())) { | 1958 ReadFrame(near_file_, frame_, float_cb_.get())) { |
| 1979 frame_->vad_activity_ = AudioFrame::kVadUnknown; | 1959 frame_->vad_activity_ = AudioFrame::kVadUnknown; |
| 1980 | 1960 |
| 1981 EXPECT_NOERR(apm_->AnalyzeReverseStream(revframe_)); | 1961 EXPECT_NOERR(apm_->AnalyzeReverseStream(revframe_)); |
| 1982 EXPECT_NOERR(fapm->AnalyzeReverseStream( | 1962 EXPECT_NOERR(fapm->AnalyzeReverseStream( |
| 1983 revfloat_cb_->channels(), | 1963 revfloat_cb_->channels(), |
| 1984 samples_per_channel, | 1964 samples_per_channel, |
| 1985 test->sample_rate(), | 1965 test->sample_rate(), |
| 1986 LayoutFromChannels(num_render_channels))); | 1966 LayoutFromChannels(num_render_channels))); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 2005 LayoutFromChannels(num_output_channels), | 1985 LayoutFromChannels(num_output_channels), |
| 2006 float_cb_->channels())); | 1986 float_cb_->channels())); |
| 2007 for (size_t j = 0; j < num_output_channels; ++j) { | 1987 for (size_t j = 0; j < num_output_channels; ++j) { |
| 2008 FloatToS16(float_cb_->channels()[j], | 1988 FloatToS16(float_cb_->channels()[j], |
| 2009 samples_per_channel, | 1989 samples_per_channel, |
| 2010 output_cb.channels()[j]); | 1990 output_cb.channels()[j]); |
| 2011 float variance = 0; | 1991 float variance = 0; |
| 2012 float snr = ComputeSNR(output_int16.channels()[j], | 1992 float snr = ComputeSNR(output_int16.channels()[j], |
| 2013 output_cb.channels()[j], | 1993 output_cb.channels()[j], |
| 2014 samples_per_channel, &variance); | 1994 samples_per_channel, &variance); |
| 2015 #if defined(WEBRTC_AUDIOPROC_FIXED_PROFILE) | 1995 |
| 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; | 1996 const float kVarianceThreshold = 20; |
| 2022 const float kSNRThreshold = 20; | 1997 const float kSNRThreshold = 20; |
| 2023 #endif | 1998 |
| 2024 // Skip frames with low energy. | 1999 // Skip frames with low energy. |
| 2025 if (sqrt(variance) > kVarianceThreshold) { | 2000 if (sqrt(variance) > kVarianceThreshold && snr < kSNRThreshold) { |
| 2026 EXPECT_LT(kSNRThreshold, snr); | 2001 ++num_bad_chunks; |
| 2027 } | 2002 } |
| 2028 } | 2003 } |
| 2029 | 2004 |
| 2030 analog_level = fapm->gain_control()->stream_analog_level(); | 2005 analog_level = fapm->gain_control()->stream_analog_level(); |
| 2031 EXPECT_EQ(apm_->gain_control()->stream_analog_level(), | 2006 EXPECT_EQ(apm_->gain_control()->stream_analog_level(), |
| 2032 fapm->gain_control()->stream_analog_level()); | 2007 fapm->gain_control()->stream_analog_level()); |
| 2033 EXPECT_EQ(apm_->echo_cancellation()->stream_has_echo(), | 2008 EXPECT_EQ(apm_->echo_cancellation()->stream_has_echo(), |
| 2034 fapm->echo_cancellation()->stream_has_echo()); | 2009 fapm->echo_cancellation()->stream_has_echo()); |
| 2035 EXPECT_NEAR(apm_->noise_suppression()->speech_probability(), | 2010 EXPECT_NEAR(apm_->noise_suppression()->speech_probability(), |
| 2036 fapm->noise_suppression()->speech_probability(), | 2011 fapm->noise_suppression()->speech_probability(), |
| 2037 0.01); | 2012 0.01); |
| 2038 | 2013 |
| 2039 // Reset in case of downmixing. | 2014 // Reset in case of downmixing. |
| 2040 frame_->num_channels_ = static_cast<size_t>(test->num_input_channels()); | 2015 frame_->num_channels_ = static_cast<size_t>(test->num_input_channels()); |
| 2041 } | 2016 } |
| 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); | |
|
turaj
2016/03/08 16:35:59
Indentation.
aluebs-webrtc
2016/03/08 16:45:32
Done.
| |
| 2026 | |
| 2042 rewind(far_file_); | 2027 rewind(far_file_); |
| 2043 rewind(near_file_); | 2028 rewind(near_file_); |
| 2044 } | 2029 } |
| 2045 } | 2030 } |
| 2046 | 2031 |
| 2047 // TODO(andrew): Add a test to process a few frames with different combinations | 2032 // TODO(andrew): Add a test to process a few frames with different combinations |
| 2048 // of enabled components. | 2033 // of enabled components. |
| 2049 | 2034 |
| 2050 TEST_F(ApmTest, Process) { | 2035 TEST_F(ApmTest, Process) { |
| 2051 GOOGLE_PROTOBUF_VERIFY_VERSION; | 2036 GOOGLE_PROTOBUF_VERIFY_VERSION; |
| (...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2553 | 2538 |
| 2554 if (min_ref_rate > 32000) { | 2539 if (min_ref_rate > 32000) { |
| 2555 ref_rate = 48000; | 2540 ref_rate = 48000; |
| 2556 } else if (min_ref_rate > 16000) { | 2541 } else if (min_ref_rate > 16000) { |
| 2557 ref_rate = 32000; | 2542 ref_rate = 32000; |
| 2558 } else if (min_ref_rate > 8000) { | 2543 } else if (min_ref_rate > 8000) { |
| 2559 ref_rate = 16000; | 2544 ref_rate = 16000; |
| 2560 } else { | 2545 } else { |
| 2561 ref_rate = 8000; | 2546 ref_rate = 8000; |
| 2562 } | 2547 } |
| 2563 #ifdef WEBRTC_AUDIOPROC_FIXED_PROFILE | |
| 2564 if (file_direction == kForward) { | |
| 2565 ref_rate = std::min(ref_rate, 16000); | |
| 2566 } | |
| 2567 #endif | |
| 2568 FILE* out_file = fopen( | 2548 FILE* out_file = fopen( |
| 2569 OutputFilePath("out", input_rate_, output_rate_, reverse_input_rate_, | 2549 OutputFilePath("out", input_rate_, output_rate_, reverse_input_rate_, |
| 2570 reverse_output_rate_, cf[i].num_input, | 2550 reverse_output_rate_, cf[i].num_input, |
| 2571 cf[i].num_output, cf[i].num_reverse_input, | 2551 cf[i].num_output, cf[i].num_reverse_input, |
| 2572 cf[i].num_reverse_output, file_direction).c_str(), | 2552 cf[i].num_reverse_output, file_direction).c_str(), |
| 2573 "rb"); | 2553 "rb"); |
| 2574 // The reference files always have matching input and output channels. | 2554 // The reference files always have matching input and output channels. |
| 2575 FILE* ref_file = fopen( | 2555 FILE* ref_file = fopen( |
| 2576 OutputFilePath("ref", ref_rate, ref_rate, ref_rate, ref_rate, | 2556 OutputFilePath("ref", ref_rate, ref_rate, ref_rate, ref_rate, |
| 2577 cf[i].num_output, cf[i].num_output, | 2557 cf[i].num_output, cf[i].num_output, |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2709 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0), | 2689 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0), |
| 2710 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20), | 2690 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20), |
| 2711 std::tr1::make_tuple(16000, 16000, 48000, 16000, 40, 20), | 2691 std::tr1::make_tuple(16000, 16000, 48000, 16000, 40, 20), |
| 2712 std::tr1::make_tuple(16000, 16000, 32000, 16000, 50, 20), | 2692 std::tr1::make_tuple(16000, 16000, 32000, 16000, 50, 20), |
| 2713 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0))); | 2693 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0))); |
| 2714 | 2694 |
| 2715 #elif defined(WEBRTC_AUDIOPROC_FIXED_PROFILE) | 2695 #elif defined(WEBRTC_AUDIOPROC_FIXED_PROFILE) |
| 2716 INSTANTIATE_TEST_CASE_P( | 2696 INSTANTIATE_TEST_CASE_P( |
| 2717 CommonFormats, | 2697 CommonFormats, |
| 2718 AudioProcessingTest, | 2698 AudioProcessingTest, |
| 2719 testing::Values(std::tr1::make_tuple(48000, 48000, 48000, 48000, 20, 0), | 2699 testing::Values(std::tr1::make_tuple(48000, 48000, 48000, 48000, 0, 0), |
| 2720 std::tr1::make_tuple(48000, 48000, 32000, 48000, 20, 30), | 2700 std::tr1::make_tuple(48000, 48000, 32000, 48000, 40, 30), |
| 2721 std::tr1::make_tuple(48000, 48000, 16000, 48000, 20, 20), | 2701 std::tr1::make_tuple(48000, 48000, 16000, 48000, 40, 20), |
| 2722 std::tr1::make_tuple(48000, 44100, 48000, 44100, 15, 20), | 2702 std::tr1::make_tuple(48000, 44100, 48000, 44100, 25, 20), |
| 2723 std::tr1::make_tuple(48000, 44100, 32000, 44100, 15, 15), | 2703 std::tr1::make_tuple(48000, 44100, 32000, 44100, 25, 15), |
| 2724 std::tr1::make_tuple(48000, 44100, 16000, 44100, 15, 15), | 2704 std::tr1::make_tuple(48000, 44100, 16000, 44100, 25, 15), |
| 2725 std::tr1::make_tuple(48000, 32000, 48000, 32000, 20, 35), | 2705 std::tr1::make_tuple(48000, 32000, 48000, 32000, 20, 35), |
| 2726 std::tr1::make_tuple(48000, 32000, 32000, 32000, 20, 0), | 2706 std::tr1::make_tuple(48000, 32000, 32000, 32000, 20, 0), |
| 2727 std::tr1::make_tuple(48000, 32000, 16000, 32000, 20, 20), | 2707 std::tr1::make_tuple(48000, 32000, 16000, 32000, 20, 20), |
| 2728 std::tr1::make_tuple(48000, 16000, 48000, 16000, 20, 20), | 2708 std::tr1::make_tuple(48000, 16000, 48000, 16000, 20, 20), |
| 2729 std::tr1::make_tuple(48000, 16000, 32000, 16000, 20, 20), | 2709 std::tr1::make_tuple(48000, 16000, 32000, 16000, 20, 20), |
| 2730 std::tr1::make_tuple(48000, 16000, 16000, 16000, 20, 0), | 2710 std::tr1::make_tuple(48000, 16000, 16000, 16000, 20, 0), |
| 2731 | 2711 |
| 2732 std::tr1::make_tuple(44100, 48000, 48000, 48000, 20, 0), | 2712 std::tr1::make_tuple(44100, 48000, 48000, 48000, 15, 0), |
| 2733 std::tr1::make_tuple(44100, 48000, 32000, 48000, 20, 30), | 2713 std::tr1::make_tuple(44100, 48000, 32000, 48000, 15, 30), |
| 2734 std::tr1::make_tuple(44100, 48000, 16000, 48000, 20, 20), | 2714 std::tr1::make_tuple(44100, 48000, 16000, 48000, 15, 20), |
| 2735 std::tr1::make_tuple(44100, 44100, 48000, 44100, 15, 20), | 2715 std::tr1::make_tuple(44100, 44100, 48000, 44100, 15, 20), |
| 2736 std::tr1::make_tuple(44100, 44100, 32000, 44100, 15, 15), | 2716 std::tr1::make_tuple(44100, 44100, 32000, 44100, 15, 15), |
| 2737 std::tr1::make_tuple(44100, 44100, 16000, 44100, 15, 15), | 2717 std::tr1::make_tuple(44100, 44100, 16000, 44100, 15, 15), |
| 2738 std::tr1::make_tuple(44100, 32000, 48000, 32000, 20, 35), | 2718 std::tr1::make_tuple(44100, 32000, 48000, 32000, 20, 35), |
| 2739 std::tr1::make_tuple(44100, 32000, 32000, 32000, 20, 0), | 2719 std::tr1::make_tuple(44100, 32000, 32000, 32000, 20, 0), |
| 2740 std::tr1::make_tuple(44100, 32000, 16000, 32000, 20, 20), | 2720 std::tr1::make_tuple(44100, 32000, 16000, 32000, 20, 20), |
| 2741 std::tr1::make_tuple(44100, 16000, 48000, 16000, 20, 20), | 2721 std::tr1::make_tuple(44100, 16000, 48000, 16000, 20, 20), |
| 2742 std::tr1::make_tuple(44100, 16000, 32000, 16000, 20, 20), | 2722 std::tr1::make_tuple(44100, 16000, 32000, 16000, 20, 20), |
| 2743 std::tr1::make_tuple(44100, 16000, 16000, 16000, 20, 0), | 2723 std::tr1::make_tuple(44100, 16000, 16000, 16000, 20, 0), |
| 2744 | 2724 |
| 2745 std::tr1::make_tuple(32000, 48000, 48000, 48000, 20, 0), | 2725 std::tr1::make_tuple(32000, 48000, 48000, 48000, 35, 0), |
| 2746 std::tr1::make_tuple(32000, 48000, 32000, 48000, 20, 30), | 2726 std::tr1::make_tuple(32000, 48000, 32000, 48000, 65, 30), |
| 2747 std::tr1::make_tuple(32000, 48000, 16000, 48000, 20, 20), | 2727 std::tr1::make_tuple(32000, 48000, 16000, 48000, 40, 20), |
| 2748 std::tr1::make_tuple(32000, 44100, 48000, 44100, 15, 20), | 2728 std::tr1::make_tuple(32000, 44100, 48000, 44100, 20, 20), |
| 2749 std::tr1::make_tuple(32000, 44100, 32000, 44100, 15, 15), | 2729 std::tr1::make_tuple(32000, 44100, 32000, 44100, 20, 15), |
| 2750 std::tr1::make_tuple(32000, 44100, 16000, 44100, 15, 15), | 2730 std::tr1::make_tuple(32000, 44100, 16000, 44100, 20, 15), |
| 2751 std::tr1::make_tuple(32000, 32000, 48000, 32000, 20, 35), | 2731 std::tr1::make_tuple(32000, 32000, 48000, 32000, 35, 35), |
| 2752 std::tr1::make_tuple(32000, 32000, 32000, 32000, 20, 0), | 2732 std::tr1::make_tuple(32000, 32000, 32000, 32000, 0, 0), |
| 2753 std::tr1::make_tuple(32000, 32000, 16000, 32000, 20, 20), | 2733 std::tr1::make_tuple(32000, 32000, 16000, 32000, 40, 20), |
| 2754 std::tr1::make_tuple(32000, 16000, 48000, 16000, 20, 20), | 2734 std::tr1::make_tuple(32000, 16000, 48000, 16000, 20, 20), |
| 2755 std::tr1::make_tuple(32000, 16000, 32000, 16000, 20, 20), | 2735 std::tr1::make_tuple(32000, 16000, 32000, 16000, 20, 20), |
| 2756 std::tr1::make_tuple(32000, 16000, 16000, 16000, 20, 0), | 2736 std::tr1::make_tuple(32000, 16000, 16000, 16000, 20, 0), |
| 2757 | 2737 |
| 2758 std::tr1::make_tuple(16000, 48000, 48000, 48000, 25, 0), | 2738 std::tr1::make_tuple(16000, 48000, 48000, 48000, 25, 0), |
| 2759 std::tr1::make_tuple(16000, 48000, 32000, 48000, 25, 30), | 2739 std::tr1::make_tuple(16000, 48000, 32000, 48000, 25, 30), |
| 2760 std::tr1::make_tuple(16000, 48000, 16000, 48000, 25, 20), | 2740 std::tr1::make_tuple(16000, 48000, 16000, 48000, 25, 20), |
| 2761 std::tr1::make_tuple(16000, 44100, 48000, 44100, 15, 20), | 2741 std::tr1::make_tuple(16000, 44100, 48000, 44100, 15, 20), |
| 2762 std::tr1::make_tuple(16000, 44100, 32000, 44100, 15, 15), | 2742 std::tr1::make_tuple(16000, 44100, 32000, 44100, 15, 15), |
| 2763 std::tr1::make_tuple(16000, 44100, 16000, 44100, 15, 15), | 2743 std::tr1::make_tuple(16000, 44100, 16000, 44100, 15, 15), |
| 2764 std::tr1::make_tuple(16000, 32000, 48000, 32000, 25, 35), | 2744 std::tr1::make_tuple(16000, 32000, 48000, 32000, 25, 35), |
| 2765 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0), | 2745 std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0), |
| 2766 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20), | 2746 std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20), |
| 2767 std::tr1::make_tuple(16000, 16000, 48000, 16000, 35, 20), | 2747 std::tr1::make_tuple(16000, 16000, 48000, 16000, 35, 20), |
| 2768 std::tr1::make_tuple(16000, 16000, 32000, 16000, 40, 20), | 2748 std::tr1::make_tuple(16000, 16000, 32000, 16000, 40, 20), |
| 2769 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0))); | 2749 std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0))); |
| 2770 #endif | 2750 #endif |
| 2771 | 2751 |
| 2772 } // namespace | 2752 } // namespace |
| 2773 } // namespace webrtc | 2753 } // namespace webrtc |
| OLD | NEW |