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(
33 const FrameType frameType, const uint8_t payloadType,
34 const uint32_t timeStamp, const uint8_t* payloadData,
35 const uint16_t payloadSize,
36 const RTPFragmentationHeader* fragmentation) OVERRIDE;
39 static void MakeRTPheader(uint8_t* rtpHeader, uint8_t payloadType,
40 int16_t seqNo, uint32_t timeStamp, uint32_t ssrc);
41 RTPStream* _rtpStream;
49 void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
50 std::string in_file_name, int sample_rate, int channels);
55 //for auto_test and logging
60 AudioCodingModule* _acm;
64 AudioFrame _audioFrame;
65 TestPacketization* _packetization;
71 virtual ~Receiver() {};
72 void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
73 std::string out_file_name, int channels);
76 virtual bool IncomingPacket();
79 //for auto_test and logging
85 int16_t* _playoutBuffer;
86 uint16_t _playoutLengthSmpls;
91 AudioCodingModule* _acm;
92 uint8_t _incomingPayload[MAX_INCOMING_PAYLOAD];
93 RTPStream* _rtpStream;
94 WebRtcRTPHeader _rtpInfo;
95 uint16_t _realPayloadSizeBytes;
96 uint16_t _payloadSizeBytes;
100 class EncodeDecodeTest : public ACMTest {
103 explicit EncodeDecodeTest(int testMode);
104 virtual void Perform() OVERRIDE;
106 uint16_t _playoutFreq;
110 void EncodeToFile(int fileType, int codeId, int* codePars, int testMode);
117 } // namespace webrtc
119 #endif // WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_ENCODEDECODETEST_H_