blob: 31f7317fc73220a2f71a7c4bdd4a6986e03d6e5e [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();
46
47 UseNewAcm(&config);
48 webrtc::TestAllCodecs(ACM_TEST_MODE, config).Perform();
49
tina.legrand@webrtc.org50d5ca52012-06-18 13:35:52 +000050 Trace::ReturnTrace();
51}
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +000052
53TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestEncodeDecode)) {
54 Trace::CreateTrace();
55 Trace::SetTraceFile((webrtc::test::OutputPath() +
56 "acm_encodedecode_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000057 webrtc::Config config;
58
59 UseLegacyAcm(&config);
60 webrtc::EncodeDecodeTest(ACM_TEST_MODE, config).Perform();
61
62 UseNewAcm(&config);
63 webrtc::EncodeDecodeTest(ACM_TEST_MODE, config).Perform();
64
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +000065 Trace::ReturnTrace();
66}
67
68TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestFEC)) {
69 Trace::CreateTrace();
70 Trace::SetTraceFile((webrtc::test::OutputPath() +
71 "acm_fec_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000072 webrtc::Config config;
73
74 UseLegacyAcm(&config);
75 webrtc::TestFEC(config).Perform();
76
77 UseNewAcm(&config);
78 webrtc::TestFEC(config).Perform();
79
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +000080 Trace::ReturnTrace();
81}
82
83TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestIsac)) {
84 Trace::CreateTrace();
85 Trace::SetTraceFile((webrtc::test::OutputPath() +
86 "acm_isac_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +000087 webrtc::Config config;
88
89 UseLegacyAcm(&config);
90 webrtc::ISACTest(ACM_TEST_MODE, config).Perform();
91
92 UseNewAcm(&config);
93 webrtc::ISACTest(ACM_TEST_MODE, config).Perform();
94
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +000095 Trace::ReturnTrace();
96}
97
98TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TwoWayCommunication)) {
99 Trace::CreateTrace();
100 Trace::SetTraceFile((webrtc::test::OutputPath() +
101 "acm_twowaycom_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000102 webrtc::Config config;
103
104 UseLegacyAcm(&config);
105 webrtc::TwoWayCommunication(ACM_TEST_MODE, config).Perform();
106
107 UseNewAcm(&config);
108 webrtc::TwoWayCommunication(ACM_TEST_MODE, config).Perform();
109
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000110 Trace::ReturnTrace();
111}
112
113TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestStereo)) {
114 Trace::CreateTrace();
115 Trace::SetTraceFile((webrtc::test::OutputPath() +
116 "acm_stereo_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000117
118 webrtc::Config config;
119 UseLegacyAcm(&config);
120
121 webrtc::TestStereo(ACM_TEST_MODE, config).Perform();
122 UseNewAcm(&config);
123
124 webrtc::TestStereo(ACM_TEST_MODE, config).Perform();
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000125 Trace::ReturnTrace();
126}
127
128TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestVADDTX)) {
129 Trace::CreateTrace();
130 Trace::SetTraceFile((webrtc::test::OutputPath() +
131 "acm_vaddtx_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000132 webrtc::Config config;
133
134 UseLegacyAcm(&config);
135 webrtc::TestVADDTX(config).Perform();
136
137 UseNewAcm(&config);
138 webrtc::TestVADDTX(config).Perform();
139
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000140 Trace::ReturnTrace();
141}
tina.legrand@webrtc.org50d5ca52012-06-18 13:35:52 +0000142
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +0000143TEST(AudioCodingModuleTest, TestOpus) {
144 Trace::CreateTrace();
145 Trace::SetTraceFile((webrtc::test::OutputPath() +
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000146 "acm_opus_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000147 webrtc::Config config;
148
149 UseLegacyAcm(&config);
150 webrtc::OpusTest(config).Perform();
151
152 UseNewAcm(&config);
153 webrtc::OpusTest(config).Perform();
154
tina.legrand@webrtc.org73222cf2013-03-15 13:29:17 +0000155 Trace::ReturnTrace();
156}
157
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000158// The full API test is too long to run automatically on bots, but can be used
159// for offline testing. User interaction is needed.
160#ifdef ACM_TEST_FULL_API
161 TEST(AudioCodingModuleTest, TestAPI) {
162 Trace::CreateTrace();
163 Trace::SetTraceFile((webrtc::test::OutputPath() +
164 "acm_apitest_trace.txt").c_str());
turaj@webrtc.org6ea3d1c2013-10-02 21:44:33 +0000165 webrtc::Config config;
166
167 UseLegacyAcm(&config);
168 webrtc::APITest(config).Perform();
169
170 UseNewAcm(&config);
171 webrtc::APITest(config).Perform();
172
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000173 Trace::ReturnTrace();
tina.legrand@webrtc.org5e7ca602012-06-12 07:16:24 +0000174 }
tina.legrand@webrtc.orgee92b662013-08-27 07:33:51 +0000175#endif