} // namespace
-AudioCodingModuleImpl::AudioCodingModuleImpl(int id)
+AudioCodingModuleImpl::AudioCodingModuleImpl(
+ const AudioCodingModule::Config& config)
: packetization_callback_(NULL),
- id_(id),
+ id_(config.id),
expected_codec_ts_(0xD87F3F9F),
expected_in_ts_(0xD87F3F9F),
send_codec_inst_(),
stereo_send_(false),
current_send_codec_idx_(-1),
send_codec_registered_(false),
+ receiver_(config),
acm_crit_sect_(CriticalSectionWrapper::CreateCriticalSection()),
vad_callback_(NULL),
is_first_red_(true),
mirror_codec_idx_[i] = -1;
}
- receiver_.set_id(id_);
-
// Allocate memory for RED.
red_buffer_ = new uint8_t[MAX_PAYLOAD_SIZE_BYTE];
WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, id_,
"Cannot initialize receiver");
}
- WEBRTC_TRACE(webrtc::kTraceMemory, webrtc::kTraceAudioCoding, id, "Created");
+ WEBRTC_TRACE(webrtc::kTraceMemory, webrtc::kTraceAudioCoding, id_, "Created");
}
AudioCodingModuleImpl::~AudioCodingModuleImpl() {
return -1;
}
- // Allow for 8, 16, 32 and 48kHz input audio.
- if ((audio_frame.sample_rate_hz_ != 8000)
- && (audio_frame.sample_rate_hz_ != 16000)
- && (audio_frame.sample_rate_hz_ != 32000)
- && (audio_frame.sample_rate_hz_ != 48000)) {
+ if (audio_frame.sample_rate_hz_ > 48000) {
assert(false);
WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, id_,
"Cannot Add 10 ms audio, input frequency not valid");
// The result of the resampler is written to output frame.
dest_ptr_audio = preprocess_frame_.data_;
- preprocess_frame_.samples_per_channel_ = resampler_.Resample10Msec(
- src_ptr_audio, in_frame.sample_rate_hz_, send_codec_inst_.plfreq,
- preprocess_frame_.num_channels_, dest_ptr_audio);
+ preprocess_frame_.samples_per_channel_ =
+ resampler_.Resample10Msec(src_ptr_audio,
+ in_frame.sample_rate_hz_,
+ send_codec_inst_.plfreq,
+ preprocess_frame_.num_channels_,
+ AudioFrame::kMaxDataSizeSamples,
+ dest_ptr_audio);
if (preprocess_frame_.samples_per_channel_ < 0) {
WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, id_,
- "Cannot add 10 ms audio, resmapling failed");
+ "Cannot add 10 ms audio, resampling failed");
return -1;
}
preprocess_frame_.sample_rate_hz_ = send_codec_inst_.plfreq;
}
audio_frame->id_ = id_;
- audio_frame->energy_ = 0;
+ // The energy must be -1 in order to have the energy calculated later on in
+ // the AudioConferenceMixer module.
+ audio_frame->energy_ = static_cast<uint32_t>(-1);
audio_frame->timestamp_ = 0;
return 0;
}
return receiver_.LeastRequiredDelayMs();
}
-const char* AudioCodingModuleImpl::Version() const {
- return kExperimentalAcmVersion;
-}
-
void AudioCodingModuleImpl::GetDecodingCallStatistics(
AudioDecodingCallStats* call_stats) const {
receiver_.GetDecodingCallStatistics(call_stats);