1/* 2 * Copyright (c) 2012 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 <stdio.h> 12#include <string> 13#include <vector> 14 15#include "testing/gtest/include/gtest/gtest.h" 16#include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h" 17#include "webrtc/modules/audio_coding/main/test/APITest.h" 18#include "webrtc/modules/audio_coding/main/test/EncodeDecodeTest.h" 19#include "webrtc/modules/audio_coding/main/test/iSACTest.h" 20#include "webrtc/modules/audio_coding/main/test/opus_test.h" 21#include "webrtc/modules/audio_coding/main/test/PacketLossTest.h" 22#include "webrtc/modules/audio_coding/main/test/TestAllCodecs.h" 23#include "webrtc/modules/audio_coding/main/test/TestRedFec.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" 27#include "webrtc/system_wrappers/interface/trace.h" 28#include "webrtc/test/testsupport/fileutils.h" 29#include "webrtc/test/testsupport/gtest_disable.h" 30 31using webrtc::Trace; 32 33// This parameter is used to describe how to run the tests. It is normally 34// set to 0, and all tests are run in quite mode. 35#define ACM_TEST_MODE 0 36 37TEST(AudioCodingModuleTest, TestAllCodecs) { 38 Trace::CreateTrace(); 39 Trace::SetTraceFile((webrtc::test::OutputPath() + 40 "acm_allcodecs_trace.txt").c_str()); 41 webrtc::TestAllCodecs(ACM_TEST_MODE).Perform(); 42 Trace::ReturnTrace(); 43} 44 45TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestEncodeDecode)) { 46 Trace::CreateTrace(); 47 Trace::SetTraceFile((webrtc::test::OutputPath() + 48 "acm_encodedecode_trace.txt").c_str()); 49 webrtc::EncodeDecodeTest(ACM_TEST_MODE).Perform(); 50 Trace::ReturnTrace(); 51} 52 53TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestRedFec)) { 54 Trace::CreateTrace(); 55 Trace::SetTraceFile((webrtc::test::OutputPath() + 56 "acm_fec_trace.txt").c_str()); 57 webrtc::TestRedFec().Perform(); 58 Trace::ReturnTrace(); 59} 60 61TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestIsac)) { 62 Trace::CreateTrace(); 63 Trace::SetTraceFile((webrtc::test::OutputPath() + 64 "acm_isac_trace.txt").c_str()); 65 webrtc::ISACTest(ACM_TEST_MODE).Perform(); 66 Trace::ReturnTrace(); 67} 68 69TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TwoWayCommunication)) { 70 Trace::CreateTrace(); 71 Trace::SetTraceFile((webrtc::test::OutputPath() + 72 "acm_twowaycom_trace.txt").c_str()); 73 webrtc::TwoWayCommunication(ACM_TEST_MODE).Perform(); 74 Trace::ReturnTrace(); 75} 76 77TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestStereo)) { 78 Trace::CreateTrace(); 79 Trace::SetTraceFile((webrtc::test::OutputPath() + 80 "acm_stereo_trace.txt").c_str()); 81 webrtc::TestStereo(ACM_TEST_MODE).Perform(); 82 Trace::ReturnTrace(); 83} 84 85TEST(AudioCodingModuleTest, DISABLED_ON_ANDROID(TestVADDTX)) { 86 Trace::CreateTrace(); 87 Trace::SetTraceFile((webrtc::test::OutputPath() + 88 "acm_vaddtx_trace.txt").c_str()); 89 webrtc::TestVADDTX().Perform(); 90 Trace::ReturnTrace(); 91} 92 93TEST(AudioCodingModuleTest, TestOpus) { 94 Trace::CreateTrace(); 95 Trace::SetTraceFile((webrtc::test::OutputPath() + 96 "acm_opus_trace.txt").c_str()); 97 webrtc::OpusTest().Perform(); 98 Trace::ReturnTrace(); 99} 100 101TEST(AudioCodingModuleTest, TestPacketLoss) { 102 Trace::CreateTrace(); 103 Trace::SetTraceFile((webrtc::test::OutputPath() + 104 "acm_packetloss_trace.txt").c_str()); 105 webrtc::PacketLossTest(1, 10, 10, 1).Perform(); 106 Trace::ReturnTrace(); 107} 108 109TEST(AudioCodingModuleTest, TestPacketLossBurst) { 110 Trace::CreateTrace(); 111 Trace::SetTraceFile((webrtc::test::OutputPath() + 112 "acm_packetloss_burst_trace.txt").c_str()); 113 webrtc::PacketLossTest(1, 10, 10, 2).Perform(); 114 Trace::ReturnTrace(); 115} 116 117TEST(AudioCodingModuleTest, TestPacketLossStereo) { 118 Trace::CreateTrace(); 119 Trace::SetTraceFile((webrtc::test::OutputPath() + 120 "acm_packetloss_trace.txt").c_str()); 121 webrtc::PacketLossTest(2, 10, 10, 1).Perform(); 122 Trace::ReturnTrace(); 123} 124 125TEST(AudioCodingModuleTest, TestPacketLossStereoBurst) { 126 Trace::CreateTrace(); 127 Trace::SetTraceFile((webrtc::test::OutputPath() + 128 "acm_packetloss_burst_trace.txt").c_str()); 129 webrtc::PacketLossTest(2, 10, 10, 2).Perform(); 130 Trace::ReturnTrace(); 131} 132 133// The full API test is too long to run automatically on bots, but can be used 134// for offline testing. User interaction is needed. 135#ifdef ACM_TEST_FULL_API 136 TEST(AudioCodingModuleTest, TestAPI) { 137 Trace::CreateTrace(); 138 Trace::SetTraceFile((webrtc::test::OutputPath() + 139 "acm_apitest_trace.txt").c_str()); 140 webrtc::APITest().Perform(); 141 Trace::ReturnTrace(); 142 } 143#endif 144