1. Make a clear distinction between codec internal FEC and RED, confusing mentioning of FEC in the old codes is replaced by RED
2. Add two new APIs to configure codec internal FEC
3. Add a test and listened to results. This is based modifying EncodeDecodeTest and deriving a new class from it.
New ACM gives good result.
Old ACM does not use NetEq 4, so FEC won't be decoded.
BUG=
R=tina.legrand@webrtc.org, turaj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/11759004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6233 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/audio_coding/main/test/EncodeDecodeTest.h b/webrtc/modules/audio_coding/main/test/EncodeDecodeTest.h
index 4fdd943..dbe3f0cb 100644
--- a/webrtc/modules/audio_coding/main/test/EncodeDecodeTest.h
+++ b/webrtc/modules/audio_coding/main/test/EncodeDecodeTest.h
@@ -12,6 +12,7 @@
#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"
@@ -44,7 +45,8 @@
class Sender {
public:
Sender();
- void Setup(AudioCodingModule *acm, RTPStream *rtpStream);
+ void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
+ std::string in_file_name, int sample_rate, int channels);
void Teardown();
void Run();
bool Add10MsData();
@@ -53,8 +55,10 @@
uint8_t testMode;
uint8_t codeId;
- private:
+ protected:
AudioCodingModule* _acm;
+
+ private:
PCMFile _pcmFile;
AudioFrame _audioFrame;
TestPacketization* _packetization;
@@ -63,10 +67,12 @@
class Receiver {
public:
Receiver();
- void Setup(AudioCodingModule *acm, RTPStream *rtpStream);
+ virtual ~Receiver() {};
+ void Setup(AudioCodingModule *acm, RTPStream *rtpStream,
+ std::string out_file_name, int channels);
void Teardown();
void Run();
- bool IncomingPacket();
+ virtual bool IncomingPacket();
bool PlayoutData();
//for auto_test and logging
@@ -74,17 +80,19 @@
uint8_t testMode;
private:
- AudioCodingModule* _acm;
- RTPStream* _rtpStream;
PCMFile _pcmFile;
int16_t* _playoutBuffer;
uint16_t _playoutLengthSmpls;
- uint8_t _incomingPayload[MAX_INCOMING_PAYLOAD];
- uint16_t _payloadSizeBytes;
- uint16_t _realPayloadSizeBytes;
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;
};