Create Environment for VoipCore
To make Environment available for creating AudioEncoders in follow ups Bug: webrtc:343086059 Change-Id: I0965155915caeee28964ce8406045beeabaa0185 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/353741 Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/main@{#42460}
This commit is contained in:
parent
6f3103f23d
commit
03ebfdf044
@ -30,6 +30,7 @@ rtc_source_set("voip_api") {
|
|||||||
|
|
||||||
rtc_library("voip_engine_factory") {
|
rtc_library("voip_engine_factory") {
|
||||||
visibility = [ "*" ]
|
visibility = [ "*" ]
|
||||||
|
allow_poison = [ "environment_construction" ]
|
||||||
sources = [
|
sources = [
|
||||||
"voip_engine_factory.cc",
|
"voip_engine_factory.cc",
|
||||||
"voip_engine_factory.h",
|
"voip_engine_factory.h",
|
||||||
@ -42,6 +43,7 @@ rtc_library("voip_engine_factory") {
|
|||||||
"../audio:audio_device",
|
"../audio:audio_device",
|
||||||
"../audio:audio_processing",
|
"../audio:audio_processing",
|
||||||
"../audio_codecs:audio_codecs_api",
|
"../audio_codecs:audio_codecs_api",
|
||||||
|
"../environment:environment_factory",
|
||||||
"../task_queue",
|
"../task_queue",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include "api/environment/environment_factory.h"
|
||||||
#include "audio/voip/voip_core.h"
|
#include "audio/voip/voip_core.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
|
|
||||||
@ -27,11 +28,11 @@ std::unique_ptr<VoipEngine> CreateVoipEngine(VoipEngineConfig config) {
|
|||||||
RTC_DLOG(LS_INFO) << "No audio processing functionality provided.";
|
RTC_DLOG(LS_INFO) << "No audio processing functionality provided.";
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::make_unique<VoipCore>(std::move(config.encoder_factory),
|
return std::make_unique<VoipCore>(
|
||||||
std::move(config.decoder_factory),
|
CreateEnvironment(std::move(config.task_queue_factory)),
|
||||||
std::move(config.task_queue_factory),
|
std::move(config.encoder_factory), std::move(config.decoder_factory),
|
||||||
std::move(config.audio_device_module),
|
std::move(config.audio_device_module),
|
||||||
std::move(config.audio_processing));
|
std::move(config.audio_processing));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
|||||||
@ -20,6 +20,7 @@ rtc_library("voip_core") {
|
|||||||
"../../api/audio:audio_device",
|
"../../api/audio:audio_device",
|
||||||
"../../api/audio:audio_processing",
|
"../../api/audio:audio_processing",
|
||||||
"../../api/audio_codecs:audio_codecs_api",
|
"../../api/audio_codecs:audio_codecs_api",
|
||||||
|
"../../api/environment",
|
||||||
"../../api/task_queue",
|
"../../api/task_queue",
|
||||||
"../../api/voip:voip_api",
|
"../../api/voip:voip_api",
|
||||||
"../../modules/audio_mixer:audio_mixer_impl",
|
"../../modules/audio_mixer:audio_mixer_impl",
|
||||||
|
|||||||
@ -28,6 +28,7 @@ if (rtc_include_tests) {
|
|||||||
"..:voip_core",
|
"..:voip_core",
|
||||||
"../../../api/audio_codecs:builtin_audio_decoder_factory",
|
"../../../api/audio_codecs:builtin_audio_decoder_factory",
|
||||||
"../../../api/audio_codecs:builtin_audio_encoder_factory",
|
"../../../api/audio_codecs:builtin_audio_encoder_factory",
|
||||||
|
"../../../api/environment:environment_factory",
|
||||||
"../../../api/task_queue:default_task_queue_factory",
|
"../../../api/task_queue:default_task_queue_factory",
|
||||||
"../../../modules/audio_device:mock_audio_device",
|
"../../../modules/audio_device:mock_audio_device",
|
||||||
"../../../modules/audio_processing:mocks",
|
"../../../modules/audio_processing:mocks",
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
|
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
|
||||||
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
|
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
|
||||||
#include "api/task_queue/default_task_queue_factory.h"
|
#include "api/environment/environment_factory.h"
|
||||||
#include "modules/audio_device/include/mock_audio_device.h"
|
#include "modules/audio_device/include/mock_audio_device.h"
|
||||||
#include "modules/audio_processing/include/mock_audio_processing.h"
|
#include "modules/audio_processing/include/mock_audio_processing.h"
|
||||||
#include "test/gtest.h"
|
#include "test/gtest.h"
|
||||||
@ -43,9 +43,8 @@ class VoipCoreTest : public ::testing::Test {
|
|||||||
rtc::make_ref_counted<NiceMock<test::MockAudioProcessing>>();
|
rtc::make_ref_counted<NiceMock<test::MockAudioProcessing>>();
|
||||||
|
|
||||||
voip_core_ = std::make_unique<VoipCore>(
|
voip_core_ = std::make_unique<VoipCore>(
|
||||||
std::move(encoder_factory), std::move(decoder_factory),
|
CreateEnvironment(), std::move(encoder_factory),
|
||||||
CreateDefaultTaskQueueFactory(), audio_device_,
|
std::move(decoder_factory), audio_device_, std::move(audio_processing));
|
||||||
std::move(audio_processing));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
test::RunLoop run_loop_;
|
test::RunLoop run_loop_;
|
||||||
|
|||||||
@ -37,16 +37,16 @@ static constexpr int kMaxChannelId = 100000;
|
|||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
VoipCore::VoipCore(rtc::scoped_refptr<AudioEncoderFactory> encoder_factory,
|
VoipCore::VoipCore(const Environment& env,
|
||||||
|
rtc::scoped_refptr<AudioEncoderFactory> encoder_factory,
|
||||||
rtc::scoped_refptr<AudioDecoderFactory> decoder_factory,
|
rtc::scoped_refptr<AudioDecoderFactory> decoder_factory,
|
||||||
std::unique_ptr<TaskQueueFactory> task_queue_factory,
|
|
||||||
rtc::scoped_refptr<AudioDeviceModule> audio_device_module,
|
rtc::scoped_refptr<AudioDeviceModule> audio_device_module,
|
||||||
rtc::scoped_refptr<AudioProcessing> audio_processing) {
|
rtc::scoped_refptr<AudioProcessing> audio_processing)
|
||||||
encoder_factory_ = std::move(encoder_factory);
|
: env_(env),
|
||||||
decoder_factory_ = std::move(decoder_factory);
|
encoder_factory_(std::move(encoder_factory)),
|
||||||
task_queue_factory_ = std::move(task_queue_factory);
|
decoder_factory_(std::move(decoder_factory)),
|
||||||
audio_device_module_ = std::move(audio_device_module);
|
audio_processing_(std::move(audio_processing)),
|
||||||
audio_processing_ = std::move(audio_processing);
|
audio_device_module_(std::move(audio_device_module)) {
|
||||||
audio_mixer_ = AudioMixerImpl::Create();
|
audio_mixer_ = AudioMixerImpl::Create();
|
||||||
|
|
||||||
// AudioTransportImpl depends on audio mixer and audio processing instances.
|
// AudioTransportImpl depends on audio mixer and audio processing instances.
|
||||||
@ -133,7 +133,7 @@ ChannelId VoipCore::CreateChannel(Transport* transport,
|
|||||||
|
|
||||||
rtc::scoped_refptr<AudioChannel> channel =
|
rtc::scoped_refptr<AudioChannel> channel =
|
||||||
rtc::make_ref_counted<AudioChannel>(transport, local_ssrc.value(),
|
rtc::make_ref_counted<AudioChannel>(transport, local_ssrc.value(),
|
||||||
task_queue_factory_.get(),
|
&env_.task_queue_factory(),
|
||||||
audio_mixer_.get(), decoder_factory_);
|
audio_mixer_.get(), decoder_factory_);
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -21,8 +21,8 @@
|
|||||||
#include "api/audio/audio_processing.h"
|
#include "api/audio/audio_processing.h"
|
||||||
#include "api/audio_codecs/audio_decoder_factory.h"
|
#include "api/audio_codecs/audio_decoder_factory.h"
|
||||||
#include "api/audio_codecs/audio_encoder_factory.h"
|
#include "api/audio_codecs/audio_encoder_factory.h"
|
||||||
|
#include "api/environment/environment.h"
|
||||||
#include "api/scoped_refptr.h"
|
#include "api/scoped_refptr.h"
|
||||||
#include "api/task_queue/task_queue_factory.h"
|
|
||||||
#include "api/voip/voip_base.h"
|
#include "api/voip/voip_base.h"
|
||||||
#include "api/voip/voip_codec.h"
|
#include "api/voip/voip_codec.h"
|
||||||
#include "api/voip/voip_dtmf.h"
|
#include "api/voip/voip_dtmf.h"
|
||||||
@ -52,10 +52,9 @@ class VoipCore : public VoipEngine,
|
|||||||
public VoipStatistics,
|
public VoipStatistics,
|
||||||
public VoipVolumeControl {
|
public VoipVolumeControl {
|
||||||
public:
|
public:
|
||||||
// Construct VoipCore with provided arguments.
|
VoipCore(const Environment& env,
|
||||||
VoipCore(rtc::scoped_refptr<AudioEncoderFactory> encoder_factory,
|
rtc::scoped_refptr<AudioEncoderFactory> encoder_factory,
|
||||||
rtc::scoped_refptr<AudioDecoderFactory> decoder_factory,
|
rtc::scoped_refptr<AudioDecoderFactory> decoder_factory,
|
||||||
std::unique_ptr<TaskQueueFactory> task_queue_factory,
|
|
||||||
rtc::scoped_refptr<AudioDeviceModule> audio_device_module,
|
rtc::scoped_refptr<AudioDeviceModule> audio_device_module,
|
||||||
rtc::scoped_refptr<AudioProcessing> audio_processing);
|
rtc::scoped_refptr<AudioProcessing> audio_processing);
|
||||||
~VoipCore() override = default;
|
~VoipCore() override = default;
|
||||||
@ -136,9 +135,9 @@ class VoipCore : public VoipEngine,
|
|||||||
bool UpdateAudioTransportWithSenders();
|
bool UpdateAudioTransportWithSenders();
|
||||||
|
|
||||||
// Synchronization for these are handled internally.
|
// Synchronization for these are handled internally.
|
||||||
|
const Environment env_;
|
||||||
rtc::scoped_refptr<AudioEncoderFactory> encoder_factory_;
|
rtc::scoped_refptr<AudioEncoderFactory> encoder_factory_;
|
||||||
rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_;
|
rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_;
|
||||||
std::unique_ptr<TaskQueueFactory> task_queue_factory_;
|
|
||||||
|
|
||||||
// Synchronization is handled internally by AudioProcessing.
|
// Synchronization is handled internally by AudioProcessing.
|
||||||
// Must be placed before `audio_device_module_` for proper destruction.
|
// Must be placed before `audio_device_module_` for proper destruction.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user