Index: webrtc/modules/audio_coding/acm2/audio_coding_module_impl.cc |
diff --git a/webrtc/modules/audio_coding/acm2/audio_coding_module_impl.cc b/webrtc/modules/audio_coding/acm2/audio_coding_module_impl.cc |
index d770c5b059f0010866cc4fafa68bb5de792baee6..a7d9df457c1133c79db9752116a106837ed99bf7 100644 |
--- a/webrtc/modules/audio_coding/acm2/audio_coding_module_impl.cc |
+++ b/webrtc/modules/audio_coding/acm2/audio_coding_module_impl.cc |
@@ -107,6 +107,7 @@ AudioCodingModuleImpl::AudioCodingModuleImpl( |
expected_in_ts_(0xD87F3F9F), |
receiver_(config), |
bitrate_logger_("WebRTC.Audio.TargetBitrateInKbps"), |
+ encoder_factory_(new EncoderFactory), |
encoder_stack_(nullptr), |
previous_pltype_(255), |
receiver_initialized_(false), |
@@ -195,39 +196,39 @@ int32_t AudioCodingModuleImpl::Encode(const InputData& input_data) { |
// Can be called multiple times for Codec, CNG, RED. |
int AudioCodingModuleImpl::RegisterSendCodec(const CodecInst& send_codec) { |
rtc::CritScope lock(&acm_crit_sect_); |
- if (!codec_manager_.RegisterEncoder(send_codec)) { |
+ if (!encoder_factory_->codec_manager.RegisterEncoder(send_codec)) { |
return -1; |
} |
- auto* sp = codec_manager_.GetStackParams(); |
- if (!sp->speech_encoder && codec_manager_.GetCodecInst()) { |
+ auto* sp = encoder_factory_->codec_manager.GetStackParams(); |
+ if (!sp->speech_encoder && encoder_factory_->codec_manager.GetCodecInst()) { |
// We have no speech encoder, but we have a specification for making one. |
- AudioEncoder* enc = |
- rent_a_codec_.RentEncoder(*codec_manager_.GetCodecInst()); |
+ AudioEncoder* enc = encoder_factory_->rent_a_codec.RentEncoder( |
+ *encoder_factory_->codec_manager.GetCodecInst()); |
if (!enc) |
return -1; |
sp->speech_encoder = enc; |
} |
if (sp->speech_encoder) |
- encoder_stack_ = rent_a_codec_.RentEncoderStack(sp); |
+ encoder_stack_ = encoder_factory_->rent_a_codec.RentEncoderStack(sp); |
return 0; |
} |
void AudioCodingModuleImpl::RegisterExternalSendCodec( |
AudioEncoder* external_speech_encoder) { |
rtc::CritScope lock(&acm_crit_sect_); |
- auto* sp = codec_manager_.GetStackParams(); |
+ auto* sp = encoder_factory_->codec_manager.GetStackParams(); |
sp->speech_encoder = external_speech_encoder; |
- encoder_stack_ = rent_a_codec_.RentEncoderStack(sp); |
+ encoder_stack_ = encoder_factory_->rent_a_codec.RentEncoderStack(sp); |
} |
// Get current send codec. |
rtc::Optional<CodecInst> AudioCodingModuleImpl::SendCodec() const { |
rtc::CritScope lock(&acm_crit_sect_); |
- auto* ci = codec_manager_.GetCodecInst(); |
+ auto* ci = encoder_factory_->codec_manager.GetCodecInst(); |
if (ci) { |
return rtc::Optional<CodecInst>(*ci); |
} |
- auto* enc = codec_manager_.GetStackParams()->speech_encoder; |
+ auto* enc = encoder_factory_->codec_manager.GetStackParams()->speech_encoder; |
if (enc) { |
return rtc::Optional<CodecInst>(CodecManager::ForgeCodecInst(enc)); |
} |
@@ -442,19 +443,19 @@ int AudioCodingModuleImpl::PreprocessToAddData(const AudioFrame& in_frame, |
bool AudioCodingModuleImpl::REDStatus() const { |
rtc::CritScope lock(&acm_crit_sect_); |
- return codec_manager_.GetStackParams()->use_red; |
+ return encoder_factory_->codec_manager.GetStackParams()->use_red; |
} |
// Configure RED status i.e on/off. |
int AudioCodingModuleImpl::SetREDStatus(bool enable_red) { |
#ifdef WEBRTC_CODEC_RED |
rtc::CritScope lock(&acm_crit_sect_); |
- if (!codec_manager_.SetCopyRed(enable_red)) { |
+ if (!encoder_factory_->codec_manager.SetCopyRed(enable_red)) { |
return -1; |
} |
- auto* sp = codec_manager_.GetStackParams(); |
+ auto* sp = encoder_factory_->codec_manager.GetStackParams(); |
if (sp->speech_encoder) |
- encoder_stack_ = rent_a_codec_.RentEncoderStack(sp); |
+ encoder_stack_ = encoder_factory_->rent_a_codec.RentEncoderStack(sp); |
return 0; |
#else |
WEBRTC_TRACE(webrtc::kTraceWarning, webrtc::kTraceAudioCoding, id_, |
@@ -469,17 +470,17 @@ int AudioCodingModuleImpl::SetREDStatus(bool enable_red) { |
bool AudioCodingModuleImpl::CodecFEC() const { |
rtc::CritScope lock(&acm_crit_sect_); |
- return codec_manager_.GetStackParams()->use_codec_fec; |
+ return encoder_factory_->codec_manager.GetStackParams()->use_codec_fec; |
} |
int AudioCodingModuleImpl::SetCodecFEC(bool enable_codec_fec) { |
rtc::CritScope lock(&acm_crit_sect_); |
- if (!codec_manager_.SetCodecFEC(enable_codec_fec)) { |
+ if (!encoder_factory_->codec_manager.SetCodecFEC(enable_codec_fec)) { |
return -1; |
} |
- auto* sp = codec_manager_.GetStackParams(); |
+ auto* sp = encoder_factory_->codec_manager.GetStackParams(); |
if (sp->speech_encoder) |
- encoder_stack_ = rent_a_codec_.RentEncoderStack(sp); |
+ encoder_stack_ = encoder_factory_->rent_a_codec.RentEncoderStack(sp); |
if (enable_codec_fec) { |
return sp->use_codec_fec ? 0 : -1; |
} else { |
@@ -505,12 +506,12 @@ int AudioCodingModuleImpl::SetVAD(bool enable_dtx, |
// Note: |enable_vad| is not used; VAD is enabled based on the DTX setting. |
RTC_DCHECK_EQ(enable_dtx, enable_vad); |
rtc::CritScope lock(&acm_crit_sect_); |
- if (!codec_manager_.SetVAD(enable_dtx, mode)) { |
+ if (!encoder_factory_->codec_manager.SetVAD(enable_dtx, mode)) { |
return -1; |
} |
- auto* sp = codec_manager_.GetStackParams(); |
+ auto* sp = encoder_factory_->codec_manager.GetStackParams(); |
if (sp->speech_encoder) |
- encoder_stack_ = rent_a_codec_.RentEncoderStack(sp); |
+ encoder_stack_ = encoder_factory_->rent_a_codec.RentEncoderStack(sp); |
return 0; |
} |
@@ -518,7 +519,7 @@ int AudioCodingModuleImpl::SetVAD(bool enable_dtx, |
int AudioCodingModuleImpl::VAD(bool* dtx_enabled, bool* vad_enabled, |
ACMVADMode* mode) const { |
rtc::CritScope lock(&acm_crit_sect_); |
- const auto* sp = codec_manager_.GetStackParams(); |
+ const auto* sp = encoder_factory_->codec_manager.GetStackParams(); |
*dtx_enabled = *vad_enabled = sp->use_cng; |
*mode = sp->vad_mode; |
return 0; |
@@ -609,8 +610,9 @@ int AudioCodingModuleImpl::RegisterReceiveCodec(const CodecInst& codec) { |
// not own its decoder. |
return receiver_.AddCodec( |
*codec_index, codec.pltype, codec.channels, codec.plfreq, |
- STR_CASE_CMP(codec.plname, "isac") == 0 ? rent_a_codec_.RentIsacDecoder() |
- : nullptr, |
+ STR_CASE_CMP(codec.plname, "isac") == 0 |
+ ? encoder_factory_->rent_a_codec.RentIsacDecoder() |
+ : nullptr, |
codec.plname); |
} |