AudioCodingModule::Create(): Require caller to supply an AudioDecoderFactory

So that we don't have to be capable of creating one ourselves, which
requires a dependency on the audio decoders.

BUG=webrtc:5801, webrtc:8396

Change-Id: I80749ec3b86cba73994307046d05964f59167d44
Reviewed-on: https://webrtc-review.googlesource.com/18440
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22774}
This commit is contained in:
Karl Wiberg
2018-04-06 10:06:42 +02:00
committed by Commit Bot
parent d31843e436
commit 5817d3dfaa
19 changed files with 112 additions and 83 deletions

View File

@ -12,7 +12,6 @@
#include <algorithm>
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "modules/audio_coding/acm2/acm_receiver.h"
#include "modules/audio_coding/acm2/acm_resampler.h"
#include "modules/audio_coding/acm2/codec_manager.h"
@ -1243,8 +1242,11 @@ ANAStats AudioCodingModuleImpl::GetANAStats() const {
} // namespace
AudioCodingModule::Config::Config()
: neteq_config(), clock(Clock::GetRealTimeClock()) {
AudioCodingModule::Config::Config(
rtc::scoped_refptr<AudioDecoderFactory> decoder_factory)
: neteq_config(),
clock(Clock::GetRealTimeClock()),
decoder_factory(decoder_factory) {
// 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;
@ -1253,34 +1255,7 @@ AudioCodingModule::Config::Config()
AudioCodingModule::Config::Config(const Config&) = default;
AudioCodingModule::Config::~Config() = default;
AudioCodingModule* AudioCodingModule::Create(int id) {
RTC_UNUSED(id);
return Create();
}
// Create module
AudioCodingModule* AudioCodingModule::Create() {
Config config;
config.clock = Clock::GetRealTimeClock();
config.decoder_factory = CreateBuiltinAudioDecoderFactory();
return Create(config);
}
AudioCodingModule* AudioCodingModule::Create(Clock* clock) {
Config config;
config.clock = clock;
config.decoder_factory = CreateBuiltinAudioDecoderFactory();
return Create(config);
}
AudioCodingModule* AudioCodingModule::Create(const Config& config) {
if (!config.decoder_factory) {
// TODO(ossu): Backwards compatibility. Will be removed after a deprecation
// cycle.
Config config_copy = config;
config_copy.decoder_factory = CreateBuiltinAudioDecoderFactory();
return new AudioCodingModuleImpl(config_copy);
}
return new AudioCodingModuleImpl(config);
}