2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
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.
11 #ifndef WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_ENCODEDECODETEST_H_
12 #define WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_ENCODEDECODETEST_H_
17 #include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h"
18 #include "webrtc/modules/audio_coding/main/test/ACMTest.h"
19 #include "webrtc/modules/audio_coding/main/test/PCMFile.h"
20 #include "webrtc/modules/audio_coding/main/test/RTPFile.h"
21 #include "webrtc/typedefs.h"
25 #define MAX_INCOMING_PAYLOAD 8096
27 // TestPacketization callback which writes the encoded payloads to file
28 class TestPacketization : public AudioPacketizationCallback {
30 TestPacketization(RTPStream *rtpStream, uint16_t frequency);
32 virtual int32_t SendData(const FrameType frameType, const uint8_t payloadType,
33 const uint32_t timeStamp, const uint8_t* payloadData,
34 const uint16_t payloadSize,
35 const RTPFragmentationHeader* fragmentation);
38 static void MakeRTPheader(uint8_t* rtpHeader, uint8_t payloadType,
39 int16_t seqNo, uint32_t timeStamp, uint32_t ssrc);
40 RTPStream* _rtpStream;
48 void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
49 std::string in_file_name, int sample_rate, int channels);
54 //for auto_test and logging
59 AudioCodingModule* _acm;
63 AudioFrame _audioFrame;
64 TestPacketization* _packetization;
70 virtual ~Receiver() {};
71 void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
72 std::string out_file_name, int channels);
75 virtual bool IncomingPacket();
78 //for auto_test and logging
84 int16_t* _playoutBuffer;
85 uint16_t _playoutLengthSmpls;
90 AudioCodingModule* _acm;
91 uint8_t _incomingPayload[MAX_INCOMING_PAYLOAD];
92 RTPStream* _rtpStream;
93 WebRtcRTPHeader _rtpInfo;
94 uint16_t _realPayloadSizeBytes;
95 uint16_t _payloadSizeBytes;
99 class EncodeDecodeTest : public ACMTest {
102 explicit EncodeDecodeTest(int testMode);
103 virtual void Perform();
105 uint16_t _playoutFreq;
109 void EncodeToFile(int fileType, int codeId, int* codePars, int testMode);
116 } // namespace webrtc
118 #endif // WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_ENCODEDECODETEST_H_