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:
parent
180362842a
commit
f3850f6933
@ -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",
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user