
RTPStream, and NetEq as such. Also mark all other virtual overrides in the same files. This will make further changes to these classes safer by ensuring that the compile breaks if the base class changes and not all overrides are fixed. This also deletes ACMTest.cc, which existed solely to define ~ACMTest(), which was marked pure virtual in the header. (Pure virtual destructors still need a definition.) Because there is another pure virtual method in this class, the class is already abstract, so there's no benefit to making the desturctor pure. Making it non-pure allows removing the separate source file. BUG=none TEST=none R=henrik.lundin@webrtc.org, niklas.enbom@webrtc.org Review URL: https://webrtc-codereview.appspot.com/29389004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@7144 4adac7df-926f-26a2-2b94-8c16560cd09d
120 lines
3.1 KiB
C++
120 lines
3.1 KiB
C++
/*
|
|
* Copyright (c) 2012 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 WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_ENCODEDECODETEST_H_
|
|
#define WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_ENCODEDECODETEST_H_
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
#include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h"
|
|
#include "webrtc/modules/audio_coding/main/test/ACMTest.h"
|
|
#include "webrtc/modules/audio_coding/main/test/PCMFile.h"
|
|
#include "webrtc/modules/audio_coding/main/test/RTPFile.h"
|
|
#include "webrtc/typedefs.h"
|
|
|
|
namespace webrtc {
|
|
|
|
#define MAX_INCOMING_PAYLOAD 8096
|
|
|
|
// TestPacketization callback which writes the encoded payloads to file
|
|
class TestPacketization : public AudioPacketizationCallback {
|
|
public:
|
|
TestPacketization(RTPStream *rtpStream, uint16_t frequency);
|
|
~TestPacketization();
|
|
virtual int32_t SendData(
|
|
const FrameType frameType, const uint8_t payloadType,
|
|
const uint32_t timeStamp, const uint8_t* payloadData,
|
|
const uint16_t payloadSize,
|
|
const RTPFragmentationHeader* fragmentation) OVERRIDE;
|
|
|
|
private:
|
|
static void MakeRTPheader(uint8_t* rtpHeader, uint8_t payloadType,
|
|
int16_t seqNo, uint32_t timeStamp, uint32_t ssrc);
|
|
RTPStream* _rtpStream;
|
|
int32_t _frequency;
|
|
int16_t _seqNo;
|
|
};
|
|
|
|
class Sender {
|
|
public:
|
|
Sender();
|
|
void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
|
|
std::string in_file_name, int sample_rate, int channels);
|
|
void Teardown();
|
|
void Run();
|
|
bool Add10MsData();
|
|
|
|
//for auto_test and logging
|
|
uint8_t testMode;
|
|
uint8_t codeId;
|
|
|
|
protected:
|
|
AudioCodingModule* _acm;
|
|
|
|
private:
|
|
PCMFile _pcmFile;
|
|
AudioFrame _audioFrame;
|
|
TestPacketization* _packetization;
|
|
};
|
|
|
|
class Receiver {
|
|
public:
|
|
Receiver();
|
|
virtual ~Receiver() {};
|
|
void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
|
|
std::string out_file_name, int channels);
|
|
void Teardown();
|
|
void Run();
|
|
virtual bool IncomingPacket();
|
|
bool PlayoutData();
|
|
|
|
//for auto_test and logging
|
|
uint8_t codeId;
|
|
uint8_t testMode;
|
|
|
|
private:
|
|
PCMFile _pcmFile;
|
|
int16_t* _playoutBuffer;
|
|
uint16_t _playoutLengthSmpls;
|
|
int32_t _frequency;
|
|
bool _firstTime;
|
|
|
|
protected:
|
|
AudioCodingModule* _acm;
|
|
uint8_t _incomingPayload[MAX_INCOMING_PAYLOAD];
|
|
RTPStream* _rtpStream;
|
|
WebRtcRTPHeader _rtpInfo;
|
|
uint16_t _realPayloadSizeBytes;
|
|
uint16_t _payloadSizeBytes;
|
|
uint32_t _nextTime;
|
|
};
|
|
|
|
class EncodeDecodeTest : public ACMTest {
|
|
public:
|
|
EncodeDecodeTest();
|
|
explicit EncodeDecodeTest(int testMode);
|
|
virtual void Perform() OVERRIDE;
|
|
|
|
uint16_t _playoutFreq;
|
|
uint8_t _testMode;
|
|
|
|
private:
|
|
void EncodeToFile(int fileType, int codeId, int* codePars, int testMode);
|
|
|
|
protected:
|
|
Sender _sender;
|
|
Receiver _receiver;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_ENCODEDECODETEST_H_
|