Add a new parameter to ACMGenericCodec constructor
Adding the same parameter to the constructors in all subclasses. This change is in preparation for changes to come where this will be needed. BUG=4228 COAUTHOR=kwiberg@webrtc.org R=minyue@webrtc.org Review URL: https://webrtc-codereview.appspot.com/34849004 Cr-Commit-Position: refs/heads/master@{#8210} git-svn-id: http://webrtc.googlecode.com/svn/trunk@8210 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
2444d9605a
commit
c3643f2fe3
@ -46,8 +46,9 @@ namespace webrtc {
|
||||
namespace acm2 {
|
||||
|
||||
#ifndef WEBRTC_CODEC_AMR
|
||||
ACMAMR::ACMAMR(int16_t /* codec_id */)
|
||||
: encoder_inst_ptr_(NULL),
|
||||
ACMAMR::ACMAMR(int16_t /* codec_id */, bool enable_red)
|
||||
: ACMGenericCodec(enable_red),
|
||||
encoder_inst_ptr_(NULL),
|
||||
encoding_mode_(-1), // Invalid value.
|
||||
encoding_rate_(0), // Invalid value.
|
||||
encoder_packing_format_(AMRBandwidthEfficient) {
|
||||
|
@ -25,7 +25,7 @@ namespace acm2 {
|
||||
|
||||
class ACMAMR : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMAMR(int16_t codec_id);
|
||||
ACMAMR(int16_t codec_id, bool enable_red);
|
||||
~ACMAMR();
|
||||
|
||||
// for FEC
|
||||
|
@ -43,8 +43,9 @@ namespace webrtc {
|
||||
namespace acm2 {
|
||||
|
||||
#ifndef WEBRTC_CODEC_AMRWB
|
||||
ACMAMRwb::ACMAMRwb(int16_t /* codec_id */)
|
||||
: encoder_inst_ptr_(NULL),
|
||||
ACMAMRwb::ACMAMRwb(int16_t /* codec_id */, bool enable_red)
|
||||
: ACMGenericCodec(enable_red),
|
||||
encoder_inst_ptr_(NULL),
|
||||
encoding_mode_(-1), // invalid value
|
||||
encoding_rate_(0), // invalid value
|
||||
encoder_packing_format_(AMRBandwidthEfficient) {}
|
||||
|
@ -23,7 +23,7 @@ namespace acm2 {
|
||||
|
||||
class ACMAMRwb : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMAMRwb(int16_t codec_id);
|
||||
ACMAMRwb(int16_t codec_id, bool enable_red);
|
||||
~ACMAMRwb();
|
||||
|
||||
// for FEC
|
||||
|
@ -19,7 +19,8 @@ namespace webrtc {
|
||||
|
||||
namespace acm2 {
|
||||
|
||||
ACMCNG::ACMCNG(int16_t codec_id) {
|
||||
ACMCNG::ACMCNG(int16_t codec_id, bool enable_red)
|
||||
: ACMGenericCodec(enable_red) {
|
||||
encoder_inst_ptr_ = NULL;
|
||||
codec_id_ = codec_id;
|
||||
samp_freq_hz_ = ACMCodecDB::CodecFreq(codec_id_);
|
||||
|
@ -23,7 +23,7 @@ namespace acm2 {
|
||||
|
||||
class ACMCNG: public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMCNG(int16_t codec_id);
|
||||
ACMCNG(int16_t codec_id, bool enable_red);
|
||||
~ACMCNG();
|
||||
|
||||
// for FEC
|
||||
|
@ -572,38 +572,38 @@ ACMGenericCodec* ACMCodecDB::CreateCodecInstance(const CodecInst& codec_inst) {
|
||||
// All we have support for right now.
|
||||
if (!STR_CASE_CMP(codec_inst.plname, "ISAC")) {
|
||||
#if (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX))
|
||||
return new ACMISAC(kISAC);
|
||||
return new ACMISAC(kISAC, false);
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "PCMU")) {
|
||||
if (codec_inst.channels == 1) {
|
||||
return new ACMPCMU(kPCMU);
|
||||
return new ACMPCMU(kPCMU, false);
|
||||
} else {
|
||||
return new ACMPCMU(kPCMU_2ch);
|
||||
return new ACMPCMU(kPCMU_2ch, false);
|
||||
}
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "PCMA")) {
|
||||
if (codec_inst.channels == 1) {
|
||||
return new ACMPCMA(kPCMA);
|
||||
return new ACMPCMA(kPCMA, false);
|
||||
} else {
|
||||
return new ACMPCMA(kPCMA_2ch);
|
||||
return new ACMPCMA(kPCMA_2ch, false);
|
||||
}
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "ILBC")) {
|
||||
#ifdef WEBRTC_CODEC_ILBC
|
||||
return new ACMILBC(kILBC);
|
||||
return new ACMILBC(kILBC, false);
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "AMR")) {
|
||||
#ifdef WEBRTC_CODEC_AMR
|
||||
return new ACMAMR(kGSMAMR);
|
||||
return new ACMAMR(kGSMAMR, false);
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "AMR-WB")) {
|
||||
#ifdef WEBRTC_CODEC_AMRWB
|
||||
return new ACMAMRwb(kGSMAMRWB);
|
||||
return new ACMAMRwb(kGSMAMRWB, false);
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "G722")) {
|
||||
#ifdef WEBRTC_CODEC_G722
|
||||
if (codec_inst.channels == 1) {
|
||||
return new ACMG722(kG722);
|
||||
return new ACMG722(kG722, false);
|
||||
} else {
|
||||
return new ACMG722(kG722_2ch);
|
||||
return new ACMG722(kG722_2ch, false);
|
||||
}
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "G7221")) {
|
||||
@ -628,7 +628,7 @@ ACMGenericCodec* ACMCodecDB::CreateCodecInstance(const CodecInst& codec_inst) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return new ACMG722_1(codec_id);
|
||||
return new ACMG722_1(codec_id, false);
|
||||
#endif
|
||||
FALLTHROUGH();
|
||||
}
|
||||
@ -652,7 +652,7 @@ ACMGenericCodec* ACMCodecDB::CreateCodecInstance(const CodecInst& codec_inst) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return new ACMG722_1C(codec_id);
|
||||
return new ACMG722_1C(codec_id, false);
|
||||
#endif
|
||||
FALLTHROUGH();
|
||||
}
|
||||
@ -685,18 +685,18 @@ ACMGenericCodec* ACMCodecDB::CreateCodecInstance(const CodecInst& codec_inst) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return new ACMCNG(codec_id);
|
||||
return new ACMCNG(codec_id, false);
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "G729")) {
|
||||
#ifdef WEBRTC_CODEC_G729
|
||||
return new ACMG729(kG729);
|
||||
return new ACMG729(kG729, false);
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "G7291")) {
|
||||
#ifdef WEBRTC_CODEC_G729_1
|
||||
return new ACMG729_1(kG729_1);
|
||||
return new ACMG729_1(kG729_1, false);
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "opus")) {
|
||||
#ifdef WEBRTC_CODEC_OPUS
|
||||
return new ACMOpus(kOpus);
|
||||
return new ACMOpus(kOpus, false);
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "speex")) {
|
||||
#ifdef WEBRTC_CODEC_SPEEX
|
||||
@ -714,7 +714,7 @@ ACMGenericCodec* ACMCodecDB::CreateCodecInstance(const CodecInst& codec_inst) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return new ACMSPEEX(codec_id);
|
||||
return new ACMSPEEX(codec_id, false);
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "CN")) {
|
||||
// For CN we need to check sampling frequency to know what codec to create.
|
||||
@ -742,7 +742,7 @@ ACMGenericCodec* ACMCodecDB::CreateCodecInstance(const CodecInst& codec_inst) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
return new ACMCNG(codec_id);
|
||||
return new ACMCNG(codec_id, false);
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "L16")) {
|
||||
#ifdef WEBRTC_CODEC_PCM16
|
||||
// For L16 we need to check sampling frequency to know what codec to create.
|
||||
@ -784,15 +784,15 @@ ACMGenericCodec* ACMCodecDB::CreateCodecInstance(const CodecInst& codec_inst) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return new ACMPCM16B(codec_id);
|
||||
return new ACMPCM16B(codec_id, false);
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "telephone-event")) {
|
||||
#ifdef WEBRTC_CODEC_AVT
|
||||
return new ACMDTMFPlayout(kAVT);
|
||||
return new ACMDTMFPlayout(kAVT, false);
|
||||
#endif
|
||||
} else if (!STR_CASE_CMP(codec_inst.plname, "red")) {
|
||||
#ifdef WEBRTC_CODEC_RED
|
||||
return new ACMRED(kRED);
|
||||
return new ACMRED(kRED, false);
|
||||
#endif
|
||||
}
|
||||
return NULL;
|
||||
|
@ -46,7 +46,10 @@ void ACMDTMFPlayout::DestructEncoderSafe() {
|
||||
|
||||
#else //===================== Actual Implementation =======================
|
||||
|
||||
ACMDTMFPlayout::ACMDTMFPlayout(int16_t codec_id) { codec_id_ = codec_id; }
|
||||
ACMDTMFPlayout::ACMDTMFPlayout(int16_t codec_id, bool enable_red)
|
||||
: ACMGenericCodec(enable_red) {
|
||||
codec_id_ = codec_id;
|
||||
}
|
||||
|
||||
ACMDTMFPlayout::~ACMDTMFPlayout() { return; }
|
||||
|
||||
|
@ -19,7 +19,7 @@ namespace acm2 {
|
||||
|
||||
class ACMDTMFPlayout : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMDTMFPlayout(int16_t codec_id);
|
||||
ACMDTMFPlayout(int16_t codec_id, bool enable_red);
|
||||
~ACMDTMFPlayout();
|
||||
|
||||
// for FEC
|
||||
|
@ -64,8 +64,10 @@ struct ACMG722DecStr {
|
||||
G722DecInst* inst_right; // instance for right channel in case of stereo
|
||||
};
|
||||
|
||||
ACMG722::ACMG722(int16_t codec_id)
|
||||
: encoder_inst_ptr_(NULL), encoder_inst_ptr_right_(NULL) {
|
||||
ACMG722::ACMG722(int16_t codec_id, bool enable_red)
|
||||
: ACMGenericCodec(enable_red),
|
||||
encoder_inst_ptr_(NULL),
|
||||
encoder_inst_ptr_right_(NULL) {
|
||||
ptr_enc_str_ = new ACMG722EncStr;
|
||||
if (ptr_enc_str_ != NULL) {
|
||||
ptr_enc_str_->inst = NULL;
|
||||
|
@ -27,7 +27,7 @@ struct ACMG722DecStr;
|
||||
|
||||
class ACMG722 : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMG722(int16_t codec_id);
|
||||
ACMG722(int16_t codec_id, bool enable_red);
|
||||
~ACMG722();
|
||||
|
||||
// For FEC.
|
||||
|
@ -84,8 +84,9 @@ namespace acm2 {
|
||||
|
||||
#ifndef WEBRTC_CODEC_G722_1
|
||||
|
||||
ACMG722_1::ACMG722_1(int16_t /* codec_id */)
|
||||
: operational_rate_(-1),
|
||||
ACMG722_1::ACMG722_1(int16_t /* codec_id */, bool enable_red)
|
||||
: ACMGenericCodec(enable_red),
|
||||
operational_rate_(-1),
|
||||
encoder_inst_ptr_(NULL),
|
||||
encoder_inst_ptr_right_(NULL),
|
||||
encoder_inst16_ptr_(NULL),
|
||||
|
@ -28,7 +28,7 @@ namespace acm2 {
|
||||
|
||||
class ACMG722_1 : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMG722_1(int16_t codec_id);
|
||||
ACMG722_1(int16_t codec_id, bool enable_red);
|
||||
~ACMG722_1();
|
||||
|
||||
// for FEC
|
||||
|
@ -84,8 +84,9 @@ namespace acm2 {
|
||||
|
||||
#ifndef WEBRTC_CODEC_G722_1C
|
||||
|
||||
ACMG722_1C::ACMG722_1C(int16_t /* codec_id */)
|
||||
: operational_rate_(-1),
|
||||
ACMG722_1C::ACMG722_1C(int16_t /* codec_id */, bool enable_red)
|
||||
: ACMGenericCodec(enable_red),
|
||||
operational_rate_(-1),
|
||||
encoder_inst_ptr_(NULL),
|
||||
encoder_inst_ptr_right_(NULL),
|
||||
encoder_inst24_ptr_(NULL),
|
||||
|
@ -28,7 +28,7 @@ namespace acm2 {
|
||||
|
||||
class ACMG722_1C : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMG722_1C(int16_t codec_id);
|
||||
ACMG722_1C(int16_t codec_id, bool enable_red);
|
||||
~ACMG722_1C();
|
||||
|
||||
// for FEC
|
||||
|
@ -26,7 +26,9 @@ namespace acm2 {
|
||||
|
||||
#ifndef WEBRTC_CODEC_G729
|
||||
|
||||
ACMG729::ACMG729(int16_t /* codec_id */) : encoder_inst_ptr_(NULL) {}
|
||||
ACMG729::ACMG729(int16_t /* codec_id */, bool enable_red)
|
||||
: ACMGenericCodec(enable_red), encoder_inst_ptr_(NULL) {
|
||||
}
|
||||
|
||||
ACMG729::~ACMG729() { return; }
|
||||
|
||||
|
@ -23,7 +23,7 @@ namespace acm2 {
|
||||
|
||||
class ACMG729 : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMG729(int16_t codec_id);
|
||||
ACMG729(int16_t codec_id, bool enable_red);
|
||||
~ACMG729();
|
||||
|
||||
// for FEC
|
||||
|
@ -25,8 +25,9 @@ namespace acm2 {
|
||||
|
||||
#ifndef WEBRTC_CODEC_G729_1
|
||||
|
||||
ACMG729_1::ACMG729_1(int16_t /* codec_id */)
|
||||
: encoder_inst_ptr_(NULL),
|
||||
ACMG729_1::ACMG729_1(int16_t /* codec_id */, bool enable_red)
|
||||
: ACMGenericCodec(enable_red),
|
||||
encoder_inst_ptr_(NULL),
|
||||
my_rate_(32000),
|
||||
flag_8khz_(0),
|
||||
flag_g729_mode_(0) {
|
||||
|
@ -23,7 +23,7 @@ namespace acm2 {
|
||||
|
||||
class ACMG729_1 : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMG729_1(int16_t codec_id);
|
||||
ACMG729_1(int16_t codec_id, bool enable_red);
|
||||
~ACMG729_1();
|
||||
|
||||
// for FEC
|
||||
|
@ -37,7 +37,7 @@ enum {
|
||||
// We set some of the variables to invalid values as a check point
|
||||
// if a proper initialization has happened. Another approach is
|
||||
// to initialize to a default codec that we are sure is always included.
|
||||
ACMGenericCodec::ACMGenericCodec()
|
||||
ACMGenericCodec::ACMGenericCodec(bool enable_red)
|
||||
: in_audio_ix_write_(0),
|
||||
in_audio_ix_read_(0),
|
||||
in_timestamp_ix_write_(0),
|
||||
@ -60,6 +60,7 @@ ACMGenericCodec::ACMGenericCodec()
|
||||
sent_cn_previous_(false),
|
||||
prev_frame_cng_(0),
|
||||
has_internal_fec_(false),
|
||||
copy_red_enabled_(enable_red),
|
||||
codec_wrapper_lock_(*RWLockWrapper::CreateRWLock()),
|
||||
last_timestamp_(0xD87F3F9F),
|
||||
unique_id_(0) {
|
||||
@ -202,6 +203,16 @@ int ACMGenericCodec::SetFEC(bool enable_fec) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ACMGenericCodec::EnableCopyRed(bool enable, int /*red_payload_type*/) {
|
||||
WriteLockScoped lockCodec(codec_wrapper_lock_);
|
||||
copy_red_enabled_ = enable;
|
||||
}
|
||||
|
||||
bool ACMGenericCodec::ExternalRedNeeded() {
|
||||
ReadLockScoped lockCodec(codec_wrapper_lock_);
|
||||
return copy_red_enabled_;
|
||||
}
|
||||
|
||||
int16_t ACMGenericCodec::Encode(uint8_t* bitstream,
|
||||
int16_t* bitstream_len_byte,
|
||||
uint32_t* timestamp,
|
||||
|
@ -40,7 +40,7 @@ class ACMGenericCodec {
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Constructor of the class
|
||||
//
|
||||
ACMGenericCodec();
|
||||
explicit ACMGenericCodec(bool enable_red);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Destructor of the class.
|
||||
@ -614,6 +614,13 @@ class ACMGenericCodec {
|
||||
//
|
||||
virtual int SetPacketLossRate(int /* loss_rate */) { return 0; }
|
||||
|
||||
// Sets if CopyRed should be enabled.
|
||||
virtual void EnableCopyRed(bool enable, int red_payload_type);
|
||||
|
||||
// Returns true if the caller needs to produce RED data manually (that is, if
|
||||
// RED has been enabled but the codec isn't able to produce the data itself).
|
||||
virtual bool ExternalRedNeeded();
|
||||
|
||||
protected:
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// All the functions with FunctionNameSafe(...) contain the actual
|
||||
@ -953,6 +960,8 @@ class ACMGenericCodec {
|
||||
// FEC.
|
||||
bool has_internal_fec_ GUARDED_BY(codec_wrapper_lock_);
|
||||
|
||||
bool copy_red_enabled_ GUARDED_BY(codec_wrapper_lock_);
|
||||
|
||||
WebRtcACMCodecParams encoder_params_ GUARDED_BY(codec_wrapper_lock_);
|
||||
|
||||
// Used to lock wrapper internal data
|
||||
|
@ -25,7 +25,9 @@ namespace acm2 {
|
||||
|
||||
#ifndef WEBRTC_CODEC_GSMFR
|
||||
|
||||
ACMGSMFR::ACMGSMFR(int16_t /* codec_id */) : encoder_inst_ptr_(NULL) {}
|
||||
ACMGSMFR::ACMGSMFR(int16_t /* codec_id */, bool enable_red)
|
||||
: ACMGenericCodec(enable_red), encoder_inst_ptr_(NULL) {
|
||||
}
|
||||
|
||||
ACMGSMFR::~ACMGSMFR() { return; }
|
||||
|
||||
|
@ -23,7 +23,7 @@ namespace acm2 {
|
||||
|
||||
class ACMGSMFR : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMGSMFR(int16_t codec_id);
|
||||
ACMGSMFR(int16_t codec_id, bool enable_red);
|
||||
~ACMGSMFR();
|
||||
|
||||
// for FEC
|
||||
|
@ -44,7 +44,8 @@ int16_t ACMILBC::SetBitRateSafe(const int32_t /* rate */) { return -1; }
|
||||
|
||||
#else //===================== Actual Implementation =======================
|
||||
|
||||
ACMILBC::ACMILBC(int16_t codec_id) : encoder_inst_ptr_(NULL) {
|
||||
ACMILBC::ACMILBC(int16_t codec_id, bool enable_red)
|
||||
: ACMGenericCodec(enable_red), encoder_inst_ptr_(NULL) {
|
||||
codec_id_ = codec_id;
|
||||
return;
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ namespace acm2 {
|
||||
|
||||
class ACMILBC : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMILBC(int16_t codec_id);
|
||||
ACMILBC(int16_t codec_id, bool enable_red);
|
||||
~ACMILBC();
|
||||
|
||||
// for FEC
|
||||
|
@ -261,8 +261,9 @@ static uint16_t ACMISACFixGetDecSampRate(ACM_ISAC_STRUCT* /* inst */) {
|
||||
|
||||
#endif
|
||||
|
||||
ACMISAC::ACMISAC(int16_t codec_id)
|
||||
: codec_inst_crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
|
||||
ACMISAC::ACMISAC(int16_t codec_id, bool enable_red)
|
||||
: ACMGenericCodec(enable_red),
|
||||
codec_inst_crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
|
||||
is_enc_initialized_(false),
|
||||
isac_coding_mode_(CHANNEL_INDEPENDENT),
|
||||
enforce_frame_size_(false),
|
||||
|
@ -31,7 +31,7 @@ enum IsacCodingMode {
|
||||
|
||||
class ACMISAC : public ACMGenericCodec, AudioDecoder {
|
||||
public:
|
||||
explicit ACMISAC(int16_t codec_id);
|
||||
ACMISAC(int16_t codec_id, bool enable_red);
|
||||
~ACMISAC();
|
||||
|
||||
int16_t InternalInitDecoder(WebRtcACMCodecParams* codec_params)
|
||||
|
@ -63,11 +63,12 @@ int16_t ACMOpus::SetBitRateSafe(const int32_t /*rate*/) {
|
||||
|
||||
#else //===================== Actual Implementation =======================
|
||||
|
||||
ACMOpus::ACMOpus(int16_t codec_id)
|
||||
: encoder_inst_ptr_(NULL),
|
||||
sample_freq_(32000), // Default sampling frequency.
|
||||
bitrate_(20000), // Default bit-rate.
|
||||
channels_(1), // Default mono.
|
||||
ACMOpus::ACMOpus(int16_t codec_id, bool enable_red)
|
||||
: ACMGenericCodec(enable_red),
|
||||
encoder_inst_ptr_(NULL),
|
||||
sample_freq_(32000), // Default sampling frequency.
|
||||
bitrate_(20000), // Default bit-rate.
|
||||
channels_(1), // Default mono.
|
||||
packet_loss_rate_(0), // Initial packet loss rate.
|
||||
application_(kVoip) { // Initial application mode.
|
||||
codec_id_ = codec_id;
|
||||
|
@ -23,7 +23,7 @@ namespace acm2 {
|
||||
|
||||
class ACMOpus : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMOpus(int16_t codec_id);
|
||||
ACMOpus(int16_t codec_id, bool enable_red);
|
||||
~ACMOpus();
|
||||
|
||||
ACMGenericCodec* CreateInstance(void);
|
||||
|
@ -31,8 +31,7 @@ namespace {
|
||||
|
||||
class AcmOpusTest : public ACMOpus {
|
||||
public:
|
||||
explicit AcmOpusTest(int16_t codec_id)
|
||||
: ACMOpus(codec_id) {}
|
||||
explicit AcmOpusTest(int16_t codec_id) : ACMOpus(codec_id, false) {}
|
||||
~AcmOpusTest() {}
|
||||
int packet_loss_rate() { return packet_loss_rate_; }
|
||||
OpusApplicationMode application() { return application_; }
|
||||
|
@ -44,7 +44,8 @@ int16_t ACMPCM16B::InternalCreateEncoder() { return -1; }
|
||||
void ACMPCM16B::DestructEncoderSafe() { return; }
|
||||
|
||||
#else //===================== Actual Implementation =======================
|
||||
ACMPCM16B::ACMPCM16B(int16_t codec_id) {
|
||||
ACMPCM16B::ACMPCM16B(int16_t codec_id, bool enable_red)
|
||||
: ACMGenericCodec(enable_red) {
|
||||
codec_id_ = codec_id;
|
||||
sampling_freq_hz_ = ACMCodecDB::CodecFreq(codec_id_);
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ namespace acm2 {
|
||||
|
||||
class ACMPCM16B : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMPCM16B(int16_t codec_id);
|
||||
ACMPCM16B(int16_t codec_id, bool enable_red);
|
||||
~ACMPCM16B();
|
||||
|
||||
// For FEC.
|
||||
|
@ -20,7 +20,10 @@ namespace webrtc {
|
||||
|
||||
namespace acm2 {
|
||||
|
||||
ACMPCMA::ACMPCMA(int16_t codec_id) { codec_id_ = codec_id; }
|
||||
ACMPCMA::ACMPCMA(int16_t codec_id, bool enable_red)
|
||||
: ACMGenericCodec(enable_red) {
|
||||
codec_id_ = codec_id;
|
||||
}
|
||||
|
||||
ACMPCMA::~ACMPCMA() { return; }
|
||||
|
||||
|
@ -19,7 +19,7 @@ namespace acm2 {
|
||||
|
||||
class ACMPCMA : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMPCMA(int16_t codec_id);
|
||||
ACMPCMA(int16_t codec_id, bool enable_red);
|
||||
~ACMPCMA();
|
||||
|
||||
// For FEC.
|
||||
|
@ -20,7 +20,10 @@ namespace webrtc {
|
||||
|
||||
namespace acm2 {
|
||||
|
||||
ACMPCMU::ACMPCMU(int16_t codec_id) { codec_id_ = codec_id; }
|
||||
ACMPCMU::ACMPCMU(int16_t codec_id, bool enable_red)
|
||||
: ACMGenericCodec(enable_red) {
|
||||
codec_id_ = codec_id;
|
||||
}
|
||||
|
||||
ACMPCMU::~ACMPCMU() {}
|
||||
|
||||
|
@ -19,7 +19,7 @@ namespace acm2 {
|
||||
|
||||
class ACMPCMU : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMPCMU(int16_t codec_id);
|
||||
ACMPCMU(int16_t codec_id, bool enable_red);
|
||||
~ACMPCMU();
|
||||
|
||||
// For FEC.
|
||||
|
@ -17,7 +17,10 @@ namespace webrtc {
|
||||
|
||||
namespace acm2 {
|
||||
|
||||
ACMRED::ACMRED(int16_t codec_id) { codec_id_ = codec_id; }
|
||||
ACMRED::ACMRED(int16_t codec_id, bool enable_red)
|
||||
: ACMGenericCodec(enable_red) {
|
||||
codec_id_ = codec_id;
|
||||
}
|
||||
|
||||
ACMRED::~ACMRED() {}
|
||||
|
||||
|
@ -19,7 +19,7 @@ namespace acm2 {
|
||||
|
||||
class ACMRED : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMRED(int16_t codec_id);
|
||||
ACMRED(int16_t codec_id, bool enable_red);
|
||||
~ACMRED();
|
||||
|
||||
// For FEC.
|
||||
|
@ -24,8 +24,9 @@ namespace webrtc {
|
||||
namespace acm2 {
|
||||
|
||||
#ifndef WEBRTC_CODEC_SPEEX
|
||||
ACMSPEEX::ACMSPEEX(int16_t /* codec_id */)
|
||||
: encoder_inst_ptr_(NULL),
|
||||
ACMSPEEX::ACMSPEEX(int16_t /* codec_id */, bool enable_red)
|
||||
: ACMGenericCodec(enable_red),
|
||||
encoder_inst_ptr_(NULL),
|
||||
compl_mode_(0),
|
||||
vbr_enabled_(false),
|
||||
encoding_rate_(-1),
|
||||
|
@ -23,7 +23,7 @@ namespace acm2 {
|
||||
|
||||
class ACMSPEEX : public ACMGenericCodec {
|
||||
public:
|
||||
explicit ACMSPEEX(int16_t codec_id);
|
||||
ACMSPEEX(int16_t codec_id, bool enable_red);
|
||||
~ACMSPEEX();
|
||||
|
||||
// For FEC.
|
||||
|
Loading…
x
Reference in New Issue
Block a user