blob: 6b60d052751e4b0e4f12b8aa1384559588e5fe21 [file] [log] [blame]
andrew@webrtc.org50b2efe2013-04-29 17:27:29 +00001/*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "testing/gtest/include/gtest/gtest.h"
12#include "webrtc/common_audio/resampler/include/push_resampler.h"
13
14// Quality testing of PushResampler is handled through output_mixer_unittest.cc.
15
16namespace webrtc {
17
18typedef std::tr1::tuple<int, int, bool> PushResamplerTestData;
19class PushResamplerTest
20 : public testing::TestWithParam<PushResamplerTestData> {
21 public:
22 PushResamplerTest()
23 : input_rate_(std::tr1::get<0>(GetParam())),
24 output_rate_(std::tr1::get<1>(GetParam())),
25 use_sinc_resampler_(std::tr1::get<2>(GetParam())) {
26 }
27
28 virtual ~PushResamplerTest() {}
29
30 protected:
31 int input_rate_;
32 int output_rate_;
33 bool use_sinc_resampler_;
34};
35
36TEST_P(PushResamplerTest, SincResamplerOnlyUsedWhenNecessary) {
37 PushResampler resampler;
38 resampler.InitializeIfNeeded(input_rate_, output_rate_, 1);
39 EXPECT_EQ(use_sinc_resampler_, resampler.use_sinc_resampler());
40}
41
42INSTANTIATE_TEST_CASE_P(
43 PushResamplerTest, PushResamplerTest, testing::Values(
44 // To 8 kHz
45 std::tr1::make_tuple(8000, 8000, false),
46 std::tr1::make_tuple(16000, 8000, false),
47 std::tr1::make_tuple(32000, 8000, false),
48 std::tr1::make_tuple(44100, 8000, true),
49 std::tr1::make_tuple(48000, 8000, false),
50 std::tr1::make_tuple(96000, 8000, false),
51 std::tr1::make_tuple(192000, 8000, true),
52
53 // To 16 kHz
54 std::tr1::make_tuple(8000, 16000, false),
55 std::tr1::make_tuple(16000, 16000, false),
56 std::tr1::make_tuple(32000, 16000, false),
57 std::tr1::make_tuple(44100, 16000, true),
58 std::tr1::make_tuple(48000, 16000, false),
59 std::tr1::make_tuple(96000, 16000, false),
60 std::tr1::make_tuple(192000, 16000, false),
61
62 // To 32 kHz
63 std::tr1::make_tuple(8000, 32000, false),
64 std::tr1::make_tuple(16000, 32000, false),
65 std::tr1::make_tuple(32000, 32000, false),
66 std::tr1::make_tuple(44100, 32000, true),
67 std::tr1::make_tuple(48000, 32000, false),
68 std::tr1::make_tuple(96000, 32000, false),
69 std::tr1::make_tuple(192000, 32000, false),
70
71 // To 44.1kHz
72 std::tr1::make_tuple(8000, 44100, true),
73 std::tr1::make_tuple(16000, 44100, true),
74 std::tr1::make_tuple(32000, 44100, true),
75 std::tr1::make_tuple(44100, 44100, false),
76 std::tr1::make_tuple(48000, 44100, true),
77 std::tr1::make_tuple(96000, 44100, true),
78 std::tr1::make_tuple(192000, 44100, true),
79
80 // To 48kHz
81 std::tr1::make_tuple(8000, 48000, false),
82 std::tr1::make_tuple(16000, 48000, false),
83 std::tr1::make_tuple(32000, 48000, false),
84 std::tr1::make_tuple(44100, 48000, true),
85 std::tr1::make_tuple(48000, 48000, false),
86 std::tr1::make_tuple(96000, 48000, false),
87 std::tr1::make_tuple(192000, 48000, false),
88
89 // To 96kHz
90 std::tr1::make_tuple(8000, 96000, false),
91 std::tr1::make_tuple(16000, 96000, false),
92 std::tr1::make_tuple(32000, 96000, false),
93 std::tr1::make_tuple(44100, 96000, true),
94 std::tr1::make_tuple(48000, 96000, false),
95 std::tr1::make_tuple(96000, 96000, false),
96 std::tr1::make_tuple(192000, 96000, false),
97
98 // To 192kHz
99 std::tr1::make_tuple(8000, 192000, true),
100 std::tr1::make_tuple(16000, 192000, false),
101 std::tr1::make_tuple(32000, 192000, false),
102 std::tr1::make_tuple(44100, 192000, true),
103 std::tr1::make_tuple(48000, 192000, false),
104 std::tr1::make_tuple(96000, 192000, false),
105 std::tr1::make_tuple(192000, 192000, false)));
106
107} // namespace webrtc