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 #ifndef WEBRTC_MODULES_AUDIO_CODING_TEST_ISACTEST_H_ 12 #define WEBRTC_MODULES_AUDIO_CODING_TEST_ISACTEST_H_ 13 14 #include <string.h> 15 16 #include "webrtc/base/scoped_ptr.h" 17 #include "webrtc/common_types.h" 18 #include "webrtc/modules/audio_coding/include/audio_coding_module.h" 19 #include "webrtc/modules/audio_coding/test/ACMTest.h" 20 #include "webrtc/modules/audio_coding/test/Channel.h" 21 #include "webrtc/modules/audio_coding/test/PCMFile.h" 22 #include "webrtc/modules/audio_coding/test/utility.h" 23 24 #define MAX_FILE_NAME_LENGTH_BYTE 500 25 #define NO_OF_CLIENTS 15 26 27 namespace webrtc { 28 29 struct ACMTestISACConfig { 30 int32_t currentRateBitPerSec; 31 int16_t currentFrameSizeMsec; 32 int16_t encodingMode; 33 uint32_t initRateBitPerSec; 34 int16_t initFrameSizeInMsec; 35 bool enforceFrameSize; 36 }; 37 38 class ISACTest : public ACMTest { 39 public: 40 explicit ISACTest(int testMode); 41 ~ISACTest(); 42 43 void Perform(); 44 private: 45 void Setup(); 46 47 void Run10ms(); 48 49 void EncodeDecode(int testNr, ACMTestISACConfig& wbISACConfig, 50 ACMTestISACConfig& swbISACConfig); 51 52 void SwitchingSamplingRate(int testNr, int maxSampRateChange); 53 54 rtc::scoped_ptr<AudioCodingModule> _acmA; 55 rtc::scoped_ptr<AudioCodingModule> _acmB; 56 57 rtc::scoped_ptr<Channel> _channel_A2B; 58 rtc::scoped_ptr<Channel> _channel_B2A; 59 60 PCMFile _inFileA; 61 PCMFile _inFileB; 62 63 PCMFile _outFileA; 64 PCMFile _outFileB; 65 66 uint8_t _idISAC16kHz; 67 uint8_t _idISAC32kHz; 68 CodecInst _paramISAC16kHz; 69 CodecInst _paramISAC32kHz; 70 71 std::string file_name_swb_; 72 73 ACMTestTimer _myTimer; 74 int _testMode; 75 }; 76 77 } // namespace webrtc 78 79 #endif // WEBRTC_MODULES_AUDIO_CODING_TEST_ISACTEST_H_ 80