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}
This commit is contained in:
Karl Wiberg 2017-11-02 13:04:41 +01:00 committed by Commit Bot
parent 180362842a
commit f3850f6933
6 changed files with 17 additions and 16 deletions

View File

@ -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",

View File

@ -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 @@ 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;

View File

@ -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",

View File

@ -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<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;

View File

@ -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;
}

View File

@ -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));