git-svn-id: http://webrtc.googlecode.com/svn/trunk@4 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
174
modules/audio_coding/main/test/APITest.h
Normal file
174
modules/audio_coding/main/test/APITest.h
Normal file
@@ -0,0 +1,174 @@
|
||||
/*
|
||||
* 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
|
||||
Reference in New Issue
Block a user