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_
16 #include "webrtc/modules/audio_coding/main/interface/audio_coding_module.h"
17 #include "webrtc/modules/audio_coding/main/test/ACMTest.h"
18 #include "webrtc/modules/audio_coding/main/test/PCMFile.h"
19 #include "webrtc/modules/audio_coding/main/test/RTPFile.h"
20 #include "webrtc/typedefs.h"
24 #define MAX_INCOMING_PAYLOAD 8096
26 // TestPacketization callback which writes the encoded payloads to file
27 class TestPacketization : public AudioPacketizationCallback {
29 TestPacketization(RTPStream *rtpStream, uint16_t frequency);
31 virtual int32_t SendData(const FrameType frameType, const uint8_t payloadType,
32 const uint32_t timeStamp, const uint8_t* payloadData,
33 const uint16_t payloadSize,
34 const RTPFragmentationHeader* fragmentation);
37 static void MakeRTPheader(uint8_t* rtpHeader, uint8_t payloadType,
38 int16_t seqNo, uint32_t timeStamp, uint32_t ssrc);
39 RTPStream* _rtpStream;
47 void Setup(AudioCodingModule *acm, RTPStream *rtpStream);
52 //for auto_test and logging
57 AudioCodingModule* _acm;
59 AudioFrame _audioFrame;
60 TestPacketization* _packetization;
66 void Setup(AudioCodingModule *acm, RTPStream *rtpStream);
69 bool IncomingPacket();
72 //for auto_test and logging
77 AudioCodingModule* _acm;
78 RTPStream* _rtpStream;
80 int16_t* _playoutBuffer;
81 uint16_t _playoutLengthSmpls;
82 uint8_t _incomingPayload[MAX_INCOMING_PAYLOAD];
83 uint16_t _payloadSizeBytes;
84 uint16_t _realPayloadSizeBytes;
87 WebRtcRTPHeader _rtpInfo;
91 class EncodeDecodeTest : public ACMTest {
94 explicit EncodeDecodeTest(int testMode);
95 virtual void Perform();
97 uint16_t _playoutFreq;
101 void EncodeToFile(int fileType, int codeId, int* codePars, int testMode);
108 } // namespace webrtc
110 #endif // WEBRTC_MODULES_AUDIO_CODING_MAIN_TEST_ENCODEDECODETEST_H_