ACM/NetEq: Restructure how post-decode VAD is enabled
This change avoids calling neteq_->EnableVad() and DisableVad from the AcmReceiver constructor. Instead, the new member enable_post_decode_vad is added to NetEq's config struct. It is disabled by defualt, but ACM sets it to enabled. This preserves the behavior both of NetEq stand-alone (i.e., in tests) and of ACM. BUG=webrtc:3520 Review URL: https://codereview.webrtc.org/1425133002 Cr-Commit-Position: refs/heads/master@{#10476}
This commit is contained in:
committed by
Commit bot
parent
d56d68cd27
commit
9bc2667fa6
@ -128,7 +128,7 @@ AcmReceiver::AcmReceiver(const AudioCodingModule::Config& config)
|
||||
audio_buffer_(new int16_t[AudioFrame::kMaxDataSizeSamples]),
|
||||
last_audio_buffer_(new int16_t[AudioFrame::kMaxDataSizeSamples]),
|
||||
neteq_(NetEq::Create(config.neteq_config)),
|
||||
vad_enabled_(true),
|
||||
vad_enabled_(config.neteq_config.enable_post_decode_vad),
|
||||
clock_(config.clock),
|
||||
resampled_last_output_frame_(true),
|
||||
av_sync_(false),
|
||||
@ -136,15 +136,6 @@ AcmReceiver::AcmReceiver(const AudioCodingModule::Config& config)
|
||||
missing_packets_sync_stream_(),
|
||||
late_packets_sync_stream_() {
|
||||
assert(clock_);
|
||||
|
||||
// Make sure we are on the same page as NetEq. Post-decode VAD is disabled by
|
||||
// default in NetEq4, however, Audio Conference Mixer relies on VAD decision
|
||||
// and fails if VAD decision is not provided.
|
||||
if (vad_enabled_)
|
||||
neteq_->EnableVad();
|
||||
else
|
||||
neteq_->DisableVad();
|
||||
|
||||
memset(audio_buffer_.get(), 0, AudioFrame::kMaxDataSizeSamples);
|
||||
memset(last_audio_buffer_.get(), 0, AudioFrame::kMaxDataSizeSamples);
|
||||
}
|
||||
|
||||
@ -60,7 +60,11 @@ class AudioCodingModule {
|
||||
|
||||
public:
|
||||
struct Config {
|
||||
Config() : id(0), neteq_config(), clock(Clock::GetRealTimeClock()) {}
|
||||
Config() : id(0), neteq_config(), clock(Clock::GetRealTimeClock()) {
|
||||
// Post-decode VAD is disabled by default in NetEq, however, Audio
|
||||
// Conference Mixer relies on VAD decisions and fails without them.
|
||||
neteq_config.enable_post_decode_vad = true;
|
||||
}
|
||||
|
||||
int id;
|
||||
NetEq::Config neteq_config;
|
||||
|
||||
Reference in New Issue
Block a user