From f3850f6933c468625511fc9e2df9aa4b9fefed89 Mon Sep 17 00:00:00 2001 From: Karl Wiberg Date: Thu, 2 Nov 2017 13:04:41 +0100 Subject: [PATCH] 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 Reviewed-by: Henrik Andreassson Cr-Commit-Position: refs/heads/master@{#20552} --- call/BUILD.gn | 1 + call/call_unittest.cc | 4 +++- voice_engine/BUILD.gn | 3 +-- voice_engine/include/voe_base.h | 11 +++++------ voice_engine/voe_base_impl.cc | 7 ++----- voice_engine/voe_base_unittest.cc | 7 +++++-- 6 files changed, 17 insertions(+), 16 deletions(-) diff --git a/call/BUILD.gn b/call/BUILD.gn index d41dd70dfe..cb5d341247 100644 --- a/call/BUILD.gn +++ b/call/BUILD.gn @@ -202,6 +202,7 @@ if (rtc_include_tests) { "..: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 d614de666c..aeba5a8168 100644 --- a/call/call_unittest.cc +++ b/call/call_unittest.cc @@ -13,6 +13,7 @@ #include #include +#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 @@ TEST(CallTest, RecreatingAudioStreamWithSameSsrcReusesRtpState) { 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 f4bbd96b2a..23e4f7af07 100644 --- a/voice_engine/BUILD.gn +++ b/voice_engine/BUILD.gn @@ -61,8 +61,6 @@ rtc_static_library("voice_engine") { "../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 @@ if (rtc_include_tests) { 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 a62a2b4520..06a8cf330d 100644 --- a/voice_engine/include/voe_base.h +++ b/voice_engine/include/voe_base.h @@ -92,13 +92,12 @@ class WEBRTC_DLLEXPORT VoEBase { // 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& - decoder_factory = nullptr) = 0; + virtual int Init( + AudioDeviceModule* external_adm, + AudioProcessing* external_apm, + const rtc::scoped_refptr& 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 9e7a5f46f9..585ce4475f 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 @@ int VoEBaseImpl::Init( } #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 72f2e0a396..51fdf4e4cf 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 @@ class VoEBaseTest : public ::testing::Test { }; 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));