175 lines
4.3 KiB
C++
175 lines
4.3 KiB
C++
/*
|
|
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef API_TEST_H
|
|
#define API_TEST_H
|
|
|
|
#include "ACMTest.h"
|
|
#include "Channel.h"
|
|
#include "PCMFile.h"
|
|
#include "event_wrapper.h"
|
|
#include "utility.h"
|
|
|
|
enum APITESTAction {TEST_CHANGE_CODEC_ONLY = 0, DTX_TEST = 1};
|
|
|
|
class APITest : public ACMTest
|
|
{
|
|
public:
|
|
APITest();
|
|
~APITest();
|
|
|
|
void Perform();
|
|
private:
|
|
WebRtc_Word16 SetUp();
|
|
|
|
static bool PushAudioThreadA(void* obj);
|
|
static bool PullAudioThreadA(void* obj);
|
|
static bool ProcessThreadA(void* obj);
|
|
static bool APIThreadA(void* obj);
|
|
|
|
static bool PushAudioThreadB(void* obj);
|
|
static bool PullAudioThreadB(void* obj);
|
|
static bool ProcessThreadB(void* obj);
|
|
static bool APIThreadB(void* obj);
|
|
|
|
void CheckVADStatus(char side);
|
|
|
|
// Set Min delay, get delay, playout timestamp
|
|
void TestDelay(char side);
|
|
|
|
// Unregister a codec & register again.
|
|
void TestRegisteration(char side);
|
|
|
|
// Playout Mode, background noise mode.
|
|
// Receiver Frequency, playout frequency.
|
|
void TestPlayout(char receiveSide);
|
|
|
|
// set/get receiver VAD status & mode.
|
|
void TestReceiverVAD(char side);
|
|
|
|
//
|
|
void TestSendVAD(char side);
|
|
|
|
void CurrentCodec(char side);
|
|
|
|
void ChangeCodec(char side);
|
|
|
|
void Wait(WebRtc_UWord32 waitLengthMs);
|
|
|
|
void LookForDTMF(char side);
|
|
|
|
void RunTest(char thread);
|
|
|
|
bool PushAudioRunA();
|
|
bool PullAudioRunA();
|
|
bool ProcessRunA();
|
|
bool APIRunA();
|
|
|
|
bool PullAudioRunB();
|
|
bool PushAudioRunB();
|
|
bool ProcessRunB();
|
|
bool APIRunB();
|
|
|
|
|
|
|
|
//--- ACMs
|
|
AudioCodingModule* _acmA;
|
|
AudioCodingModule* _acmB;
|
|
|
|
//--- Channels
|
|
Channel* _channel_A2B;
|
|
Channel* _channel_B2A;
|
|
|
|
//--- I/O files
|
|
// A
|
|
PCMFile _inFileA;
|
|
PCMFile _outFileA;
|
|
// B
|
|
PCMFile _outFileB;
|
|
PCMFile _inFileB;
|
|
|
|
//--- I/O params
|
|
// A
|
|
WebRtc_Word32 _outFreqHzA;
|
|
// B
|
|
WebRtc_Word32 _outFreqHzB;
|
|
|
|
// Should we write to file.
|
|
// we might skip writing to file if we
|
|
// run the test for a long time.
|
|
bool _writeToFile;
|
|
//--- Events
|
|
// A
|
|
EventWrapper* _pullEventA; // pulling data from ACM
|
|
EventWrapper* _pushEventA; // pushing data to ACM
|
|
EventWrapper* _processEventA; // process
|
|
EventWrapper* _apiEventA; // API calls
|
|
// B
|
|
EventWrapper* _pullEventB; // pulling data from ACM
|
|
EventWrapper* _pushEventB; // pushing data to ACM
|
|
EventWrapper* _processEventB; // process
|
|
EventWrapper* _apiEventB; // API calls
|
|
|
|
// keep track of the codec in either side.
|
|
WebRtc_UWord8 _codecCntrA;
|
|
WebRtc_UWord8 _codecCntrB;
|
|
|
|
// keep track of tests
|
|
WebRtc_UWord8 _testCntrA;
|
|
WebRtc_UWord8 _testCntrB;
|
|
|
|
// Is set to true if there is no encoder in either side
|
|
bool _thereIsEncoderA;
|
|
bool _thereIsEncoderB;
|
|
bool _thereIsDecoderA;
|
|
bool _thereIsDecoderB;
|
|
|
|
bool _sendVADA;
|
|
bool _sendDTXA;
|
|
ACMVADMode _sendVADModeA;
|
|
|
|
bool _sendVADB;
|
|
bool _sendDTXB;
|
|
ACMVADMode _sendVADModeB;
|
|
|
|
WebRtc_Word32 _minDelayA;
|
|
WebRtc_Word32 _minDelayB;
|
|
bool _payloadUsed[32];
|
|
|
|
AudioPlayoutMode _playoutModeA;
|
|
AudioPlayoutMode _playoutModeB;
|
|
|
|
ACMBackgroundNoiseMode _bgnModeA;
|
|
ACMBackgroundNoiseMode _bgnModeB;
|
|
|
|
|
|
WebRtc_UWord64 _receiveVADActivityA[3];
|
|
WebRtc_UWord64 _receiveVADActivityB[3];
|
|
bool _verbose;
|
|
|
|
int _dotPositionA;
|
|
int _dotMoveDirectionA;
|
|
int _dotPositionB;
|
|
int _dotMoveDirectionB;
|
|
|
|
char _movingDot[41];
|
|
|
|
DTMFDetector* _dtmfCallback;
|
|
VADCallback* _vadCallbackA;
|
|
VADCallback* _vadCallbackB;
|
|
RWLockWrapper& _apiTestRWLock;
|
|
bool _randomTest;
|
|
int _testNumA;
|
|
int _testNumB;
|
|
};
|
|
|
|
|
|
#endif
|