blob: 581b7bd315ceb5ac3ed361580f8cca2483fbceb2 [file] [log] [blame]
niklase@google.com470e71d2011-07-07 08:21:25 +00001/*
tina.legrand@webrtc.org16b6b902012-04-12 11:02:38 +00002 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
niklase@google.com470e71d2011-07-07 08:21:25 +00003 *
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 <stdio.h>
kjellander@webrtc.org5490c712011-12-21 13:34:18 +000012#include <string>
niklase@google.com470e71d2011-07-07 08:21:25 +000013#include <vector>
14
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000015#include "testing/gtest/include/gtest/gtest.h"
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000016#include "webrtc/common.h"
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000017#include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h"
18#include "webrtc/modules/audio_coding/main/test/APITest.h"
19#include "webrtc/modules/audio_coding/main/test/EncodeDecodeTest.h"
20#include "webrtc/modules/audio_coding/main/test/iSACTest.h"
21#include "webrtc/modules/audio_coding/main/test/opus_test.h"
22#include "webrtc/modules/audio_coding/main/test/TestAllCodecs.h"
23#include "webrtc/modules/audio_coding/main/test/TestFEC.h"
24#include "webrtc/modules/audio_coding/main/test/TestStereo.h"
25#include "webrtc/modules/audio_coding/main/test/TestVADDTX.h"
26#include "webrtc/modules/audio_coding/main/test/TwoWayCommunication.h"
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000027#include "webrtc/modules/audio_coding/main/test/utility.h"
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +000028#include "webrtc/system_wrappers/interface/trace.h"
29#include "webrtc/test/testsupport/fileutils.h"
henrike@webrtc.org89c67402013-08-02 16:53:47 +000030#include "webrtc/test/testsupport/gtest_disable.h"
niklase@google.com470e71d2011-07-07 08:21:25 +000031
tina.legrand@webrtc.org554ae1a2011-12-16 10:09:04 +000032using webrtc::Trace;
33
tina.legrand@webrtc.org50d5ca52012-06-18 13:35:52 +000034// This parameter is used to describe how to run the tests. It is normally
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +000035// set to 0, and all tests are run in quite mode.
tina.legrand@webrtc.org50d5ca52012-06-18 13:35:52 +000036#define ACM_TEST_MODE 0
niklase@google.com470e71d2011-07-07 08:21:25 +000037
tina.legrand@webrtc.org50d5ca52012-06-18 13:35:52 +000038TEST(AudioCodingModuleTest, TestAllCodecs) {
39 Trace::CreateTrace();
40 Trace::SetTraceFile((webrtc::test::OutputPath() +
tina.legrand@webrtc.orgd5726a12013-05-03 07:34:12 +000041 "acm_allcodecs_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000042 webrtc::Config config;
43
44 UseLegacyAcm(&config);
45 webrtc::TestAllCodecs(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +000046 Trace::ReturnTrace();
47}
48
49TEST(AudioCodingModuleTest, TestAllCodecsNewACM) {
50 Trace::CreateTrace();
51 Trace::SetTraceFile((webrtc::test::OutputPath() +
52 "acm_allcodecs_trace_new.txt").c_str());
53 webrtc::Config config;
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000054
55 UseNewAcm(&config);
56 webrtc::TestAllCodecs(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.org50d5ca52012-06-18 13:35:52 +000057 Trace::ReturnTrace();
58}
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +000059
andresp@webrtc.orgd0b436a2014-01-13 13:15:59 +000060TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestEncodeDecode)) {
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +000061 Trace::CreateTrace();
62 Trace::SetTraceFile((webrtc::test::OutputPath() +
63 "acm_encodedecode_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000064 webrtc::Config config;
65
66 UseLegacyAcm(&config);
67 webrtc::EncodeDecodeTest(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +000068 Trace::ReturnTrace();
69}
70
71TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestEncodeDecodeNewACM)) {
72 Trace::CreateTrace();
73 Trace::SetTraceFile((webrtc::test::OutputPath() +
74 "acm_encodedecode_trace_new.txt").c_str());
75 webrtc::Config config;
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000076
77 UseNewAcm(&config);
78 webrtc::EncodeDecodeTest(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +000079 Trace::ReturnTrace();
80}
81
andresp@webrtc.orgd0b436a2014-01-13 13:15:59 +000082TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestFEC)) {
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +000083 Trace::CreateTrace();
84 Trace::SetTraceFile((webrtc::test::OutputPath() +
85 "acm_fec_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000086 webrtc::Config config;
87
88 UseLegacyAcm(&config);
89 webrtc::TestFEC(config).Perform();
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +000090 Trace::ReturnTrace();
91}
92
93TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestFECNewACM)) {
94 Trace::CreateTrace();
95 Trace::SetTraceFile((webrtc::test::OutputPath() +
96 "acm_fec_trace_new.txt").c_str());
97 webrtc::Config config;
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000098
99 UseNewAcm(&config);
100 webrtc::TestFEC(config).Perform();
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000101 Trace::ReturnTrace();
102}
103
andresp@webrtc.orgd0b436a2014-01-13 13:15:59 +0000104TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestIsac)) {
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000105 Trace::CreateTrace();
106 Trace::SetTraceFile((webrtc::test::OutputPath() +
107 "acm_isac_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000108 webrtc::Config config;
109
110 UseLegacyAcm(&config);
111 webrtc::ISACTest(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +0000112 Trace::ReturnTrace();
113}
114
115TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestIsacNewACM)) {
116 Trace::CreateTrace();
117 Trace::SetTraceFile((webrtc::test::OutputPath() +
118 "acm_isac_trace_new.txt").c_str());
119 webrtc::Config config;
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000120
121 UseNewAcm(&config);
122 webrtc::ISACTest(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000123 Trace::ReturnTrace();
124}
125
andresp@webrtc.orgd0b436a2014-01-13 13:15:59 +0000126TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TwoWayCommunication)) {
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000127 Trace::CreateTrace();
128 Trace::SetTraceFile((webrtc::test::OutputPath() +
129 "acm_twowaycom_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000130 webrtc::Config config;
131
132 UseLegacyAcm(&config);
133 webrtc::TwoWayCommunication(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +0000134 Trace::ReturnTrace();
135}
136
137TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TwoWayCommunicationNewACM)) {
138 Trace::CreateTrace();
139 Trace::SetTraceFile((webrtc::test::OutputPath() +
140 "acm_twowaycom_trace_new.txt").c_str());
141 webrtc::Config config;
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000142
143 UseNewAcm(&config);
144 webrtc::TwoWayCommunication(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000145 Trace::ReturnTrace();
146}
147
andresp@webrtc.orgd0b436a2014-01-13 13:15:59 +0000148TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestStereo)) {
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000149 Trace::CreateTrace();
150 Trace::SetTraceFile((webrtc::test::OutputPath() +
151 "acm_stereo_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000152 webrtc::Config config;
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +0000153
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000154 UseLegacyAcm(&config);
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000155 webrtc::TestStereo(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +0000156 Trace::ReturnTrace();
157}
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000158
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +0000159TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestStereoNewACM)) {
160 Trace::CreateTrace();
161 Trace::SetTraceFile((webrtc::test::OutputPath() +
162 "acm_stereo_trace_new.txt").c_str());
163 webrtc::Config config;
164
165 UseNewAcm(&config);
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000166 webrtc::TestStereo(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000167 Trace::ReturnTrace();
168}
169
andresp@webrtc.orgd0b436a2014-01-13 13:15:59 +0000170TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestVADDTX)) {
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000171 Trace::CreateTrace();
172 Trace::SetTraceFile((webrtc::test::OutputPath() +
173 "acm_vaddtx_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000174 webrtc::Config config;
175
176 UseLegacyAcm(&config);
177 webrtc::TestVADDTX(config).Perform();
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +0000178 Trace::ReturnTrace();
179}
180
181TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestVADDTXNewACM)) {
182 Trace::CreateTrace();
183 Trace::SetTraceFile((webrtc::test::OutputPath() +
184 "acm_vaddtx_trace_new.txt").c_str());
185 webrtc::Config config;
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000186
187 UseNewAcm(&config);
188 webrtc::TestVADDTX(config).Perform();
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000189 Trace::ReturnTrace();
190}
tina.legrand@webrtc.org50d5ca52012-06-18 13:35:52 +0000191
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +0000192TEST(AudioCodingModuleTest, TestOpus) {
193 Trace::CreateTrace();
194 Trace::SetTraceFile((webrtc::test::OutputPath() +
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000195 "acm_opus_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000196 webrtc::Config config;
197
198 UseLegacyAcm(&config);
199 webrtc::OpusTest(config).Perform();
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +0000200 Trace::ReturnTrace();
201}
202
andrew@webrtc.org21df8472014-03-11 20:40:59 +0000203TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestOpusNewACM)) {
tina.legrand@webrtc.org056287e2014-02-19 13:45:54 +0000204 Trace::CreateTrace();
205 Trace::SetTraceFile((webrtc::test::OutputPath() +
206 "acm_opus_trace_new.txt").c_str());
207 webrtc::Config config;
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000208
209 UseNewAcm(&config);
210 webrtc::OpusTest(config).Perform();
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +0000211 Trace::ReturnTrace();
212}
213
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000214// The full API test is too long to run automatically on bots, but can be used
215// for offline testing. User interaction is needed.
216#ifdef ACM_TEST_FULL_API
217 TEST(AudioCodingModuleTest, TestAPI) {
218 Trace::CreateTrace();
219 Trace::SetTraceFile((webrtc::test::OutputPath() +
220 "acm_apitest_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000221 webrtc::Config config;
222
223 UseLegacyAcm(&config);
224 webrtc::APITest(config).Perform();
225
226 UseNewAcm(&config);
227 webrtc::APITest(config).Perform();
228
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000229 Trace::ReturnTrace();
tina.legrand@webrtc.org5e7ca602012-06-12 07:16:24 +0000230 }
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000231#endif