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 31 using 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 37 TEST(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 45 TEST(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 53 TEST(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 61 TEST(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 69 TEST(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 77 TEST(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 85 TEST(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 93 TEST(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 101 TEST(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 109 TEST(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 117 TEST(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 125 TEST(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