Voice Engine: 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.
In the process, remove the default values for the VoEBase::Init() arguments,
since there isn't a sensible default value for the audio decoder factory
anymore.
BUG=webrtc:8396
Change-Id: Idb433efa49e1a68e8206d369d27b3c255185777a
Reviewed-on: https://webrtc-review.googlesource.com/18200
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20552}
diff --git a/call/BUILD.gn b/call/BUILD.gn
index d41dd70..cb5d341 100644
--- a/call/BUILD.gn
+++ b/call/BUILD.gn
@@ -202,6 +202,7 @@
"..:webrtc_common",
"../api:array_view",
"../api:mock_audio_mixer",
+ "../api/audio_codecs:builtin_audio_decoder_factory",
"../logging:rtc_event_log_api",
"../modules/audio_device:mock_audio_device",
"../modules/audio_mixer",
diff --git a/call/call_unittest.cc b/call/call_unittest.cc
index d614de6..aeba5a8 100644
--- a/call/call_unittest.cc
+++ b/call/call_unittest.cc
@@ -13,6 +13,7 @@
#include <memory>
#include <utility>
+#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/test/mock_audio_mixer.h"
#include "call/audio_state.h"
#include "call/call.h"
@@ -456,7 +457,8 @@
audio_state_config.voice_engine = voice_engine.voe;
audio_state_config.audio_mixer = mock_mixer;
audio_state_config.audio_processing = AudioProcessing::Create();
- voice_engine.base->Init(&mock_adm, audio_state_config.audio_processing.get());
+ voice_engine.base->Init(&mock_adm, audio_state_config.audio_processing.get(),
+ CreateBuiltinAudioDecoderFactory());
auto audio_state = AudioState::Create(audio_state_config);
RtcEventLogNullImpl event_log;
diff --git a/voice_engine/BUILD.gn b/voice_engine/BUILD.gn
index f4bbd96..23e4f7a 100644
--- a/voice_engine/BUILD.gn
+++ b/voice_engine/BUILD.gn
@@ -61,8 +61,6 @@
"../api:refcountedbase",
"../api:transport_api",
"../api/audio_codecs:audio_codecs_api",
- "../api/audio_codecs:builtin_audio_decoder_factory",
- "../api/audio_codecs:builtin_audio_encoder_factory",
"../audio/utility:audio_frame_operations",
"../call:rtp_interfaces",
"../common_audio",
@@ -101,6 +99,7 @@
rtc_test("voice_engine_unittests") {
deps = [
":voice_engine",
+ "../api/audio_codecs:builtin_audio_decoder_factory",
"../common_audio",
"../modules:module_api",
"../modules/audio_coding",
diff --git a/voice_engine/include/voe_base.h b/voice_engine/include/voe_base.h
index a62a2b4..06a8cf3 100644
--- a/voice_engine/include/voe_base.h
+++ b/voice_engine/include/voe_base.h
@@ -92,13 +92,12 @@
// functionality in a separate (reference counted) module.
// - The AudioProcessing module handles capture-side processing.
// - An AudioDecoderFactory - used to create audio decoders.
- // If NULL is passed for either of ADM or AudioDecoderFactory, VoiceEngine
+ // If NULL is passed for ADM, VoiceEngine
// will create its own. Returns -1 in case of an error, 0 otherwise.
- // TODO(ajm): Remove default NULLs.
- virtual int Init(AudioDeviceModule* external_adm = NULL,
- AudioProcessing* external_apm = nullptr,
- const rtc::scoped_refptr<AudioDecoderFactory>&
- decoder_factory = nullptr) = 0;
+ virtual int Init(
+ AudioDeviceModule* external_adm,
+ AudioProcessing* external_apm,
+ const rtc::scoped_refptr<AudioDecoderFactory>& decoder_factory) = 0;
// This method is WIP - DO NOT USE!
// Returns NULL before Init() is called.
virtual AudioDeviceModule* audio_device_module() = 0;
diff --git a/voice_engine/voe_base_impl.cc b/voice_engine/voe_base_impl.cc
index 9e7a5f4..585ce44 100644
--- a/voice_engine/voe_base_impl.cc
+++ b/voice_engine/voe_base_impl.cc
@@ -10,7 +10,6 @@
#include "voice_engine/voe_base_impl.h"
-#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "common_audio/signal_processing/include/signal_processing_library.h"
#include "modules/audio_coding/include/audio_coding_module.h"
#include "modules/audio_device/audio_device_impl.h"
@@ -272,10 +271,8 @@
}
#endif
- if (decoder_factory)
- decoder_factory_ = decoder_factory;
- else
- decoder_factory_ = CreateBuiltinAudioDecoderFactory();
+ RTC_DCHECK(decoder_factory);
+ decoder_factory_ = decoder_factory;
return 0;
}
diff --git a/voice_engine/voe_base_unittest.cc b/voice_engine/voe_base_unittest.cc
index 72f2e0a..51fdf4e 100644
--- a/voice_engine/voe_base_unittest.cc
+++ b/voice_engine/voe_base_unittest.cc
@@ -10,6 +10,7 @@
#include "voice_engine/include/voe_base.h"
+#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "modules/audio_device/include/fake_audio_device.h"
#include "modules/audio_processing/include/mock_audio_processing.h"
#include "rtc_base/refcountedobject.h"
@@ -39,11 +40,13 @@
};
TEST_F(VoEBaseTest, InitWithExternalAudioDevice) {
- EXPECT_EQ(0, base_->Init(&adm_, apm_.get()));
+ EXPECT_EQ(0,
+ base_->Init(&adm_, apm_.get(), CreateBuiltinAudioDecoderFactory()));
}
TEST_F(VoEBaseTest, CreateChannelAfterInit) {
- EXPECT_EQ(0, base_->Init(&adm_, apm_.get(), nullptr));
+ EXPECT_EQ(0,
+ base_->Init(&adm_, apm_.get(), CreateBuiltinAudioDecoderFactory()));
int channelID = base_->CreateChannel();
EXPECT_NE(channelID, -1);
EXPECT_EQ(0, base_->DeleteChannel(channelID));