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

Side by Side Diff: webrtc/modules/audio_coding/codecs/audio_decoder_factory_unittest.cc

Issue 2668523004: Move AudioDecoder and related stuff to the api/ directory (Closed)
Patch Set: more review fixes Created 3 years, 10 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
(Empty)
1 /*
2 * Copyright (c) 2016 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 <memory>
12
13 #include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h"
14 #include "webrtc/test/gtest.h"
15
16 namespace webrtc {
17
18 TEST(AudioDecoderFactoryTest, CreateUnknownDecoder) {
19 rtc::scoped_refptr<AudioDecoderFactory> adf =
20 CreateBuiltinAudioDecoderFactory();
21 ASSERT_TRUE(adf);
22 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("rey", 8000, 1)));
23 }
24
25 TEST(AudioDecoderFactoryTest, CreatePcmu) {
26 rtc::scoped_refptr<AudioDecoderFactory> adf =
27 CreateBuiltinAudioDecoderFactory();
28 ASSERT_TRUE(adf);
29 // PCMu supports 8 kHz, and any number of channels.
30 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("pcmu", 8000, 0)));
31 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("pcmu", 8000, 1)));
32 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("pcmu", 8000, 2)));
33 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("pcmu", 8000, 3)));
34 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("pcmu", 16000, 1)));
35 }
36
37 TEST(AudioDecoderFactoryTest, CreatePcma) {
38 rtc::scoped_refptr<AudioDecoderFactory> adf =
39 CreateBuiltinAudioDecoderFactory();
40 ASSERT_TRUE(adf);
41 // PCMa supports 8 kHz, and any number of channels.
42 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("pcma", 8000, 0)));
43 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("pcma", 8000, 1)));
44 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("pcma", 8000, 2)));
45 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("pcma", 8000, 3)));
46 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("pcma", 16000, 1)));
47 }
48
49 TEST(AudioDecoderFactoryTest, CreateIlbc) {
50 rtc::scoped_refptr<AudioDecoderFactory> adf =
51 CreateBuiltinAudioDecoderFactory();
52 ASSERT_TRUE(adf);
53 // iLBC supports 8 kHz, 1 channel.
54 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("ilbc", 8000, 0)));
55 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("ilbc", 8000, 1)));
56 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("ilbc", 8000, 2)));
57 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("ilbc", 16000, 1)));
58 }
59
60 TEST(AudioDecoderFactoryTest, CreateIsac) {
61 rtc::scoped_refptr<AudioDecoderFactory> adf =
62 CreateBuiltinAudioDecoderFactory();
63 ASSERT_TRUE(adf);
64 // iSAC supports 16 kHz, 1 channel. The float implementation additionally
65 // supports 32 kHz, 1 channel.
66 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("isac", 16000, 0)));
67 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("isac", 16000, 1)));
68 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("isac", 16000, 2)));
69 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("isac", 8000, 1)));
70 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("isac", 48000, 1)));
71 #ifdef WEBRTC_ARCH_ARM
72 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("isac", 32000, 1)));
73 #else
74 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("isac", 32000, 1)));
75 #endif
76 }
77
78 TEST(AudioDecoderFactoryTest, CreateL16) {
79 rtc::scoped_refptr<AudioDecoderFactory> adf =
80 CreateBuiltinAudioDecoderFactory();
81 ASSERT_TRUE(adf);
82 // L16 supports any clock rate, any number of channels.
83 const int clockrates[] = {8000, 16000, 32000, 48000};
84 const int num_channels[] = {1, 2, 3, 4711};
85 for (int clockrate : clockrates) {
86 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("l16", clockrate, 0)));
87 for (int channels : num_channels) {
88 EXPECT_TRUE(
89 adf->MakeAudioDecoder(SdpAudioFormat("l16", clockrate, channels)));
90 }
91 }
92 }
93
94 TEST(AudioDecoderFactoryTest, CreateG722) {
95 rtc::scoped_refptr<AudioDecoderFactory> adf =
96 CreateBuiltinAudioDecoderFactory();
97 ASSERT_TRUE(adf);
98 // g722 supports 8 kHz, 1-2 channels.
99 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("g722", 8000, 0)));
100 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("g722", 8000, 1)));
101 EXPECT_TRUE(adf->MakeAudioDecoder(SdpAudioFormat("g722", 8000, 2)));
102 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("g722", 8000, 3)));
103 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("g722", 16000, 1)));
104 EXPECT_FALSE(adf->MakeAudioDecoder(SdpAudioFormat("g722", 32000, 1)));
105
106 // g722 actually uses a 16 kHz sample rate instead of the nominal 8 kHz.
107 std::unique_ptr<AudioDecoder> dec =
108 adf->MakeAudioDecoder(SdpAudioFormat("g722", 8000, 1));
109 EXPECT_EQ(16000, dec->SampleRateHz());
110 }
111
112 TEST(AudioDecoderFactoryTest, CreateOpus) {
113 rtc::scoped_refptr<AudioDecoderFactory> adf =
114 CreateBuiltinAudioDecoderFactory();
115 ASSERT_TRUE(adf);
116 // Opus supports 48 kHz, 2 channels, and wants a "stereo" parameter whose
117 // value is either "0" or "1".
118 for (int hz : {8000, 16000, 32000, 48000}) {
119 for (int channels : {0, 1, 2, 3}) {
120 for (std::string stereo : {"XX", "0", "1", "2"}) {
121 std::map<std::string, std::string> params;
122 if (stereo != "XX") {
123 params["stereo"] = stereo;
124 }
125 const bool good = (hz == 48000 && channels == 2 &&
126 (stereo == "XX" || stereo == "0" || stereo == "1"));
127 EXPECT_EQ(good, static_cast<bool>(adf->MakeAudioDecoder(SdpAudioFormat(
128 "opus", hz, channels, std::move(params)))));
129 }
130 }
131 }
132 }
133
134 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/codecs/audio_decoder_factory.h ('k') | webrtc/modules/audio_coding/codecs/audio_format.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698