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}
diff --git a/api/voip/BUILD.gn b/api/voip/BUILD.gn
index 6ed1ea8..b28d7ce 100644
--- a/api/voip/BUILD.gn
+++ b/api/voip/BUILD.gn
@@ -30,6 +30,7 @@
rtc_library("voip_engine_factory") {
visibility = [ "*" ]
+ allow_poison = [ "environment_construction" ]
sources = [
"voip_engine_factory.cc",
"voip_engine_factory.h",
@@ -42,6 +43,7 @@
"../audio:audio_device",
"../audio:audio_processing",
"../audio_codecs:audio_codecs_api",
+ "../environment:environment_factory",
"../task_queue",
]
}
diff --git a/api/voip/voip_engine_factory.cc b/api/voip/voip_engine_factory.cc
index 8da53ce..2465ec9 100644
--- a/api/voip/voip_engine_factory.cc
+++ b/api/voip/voip_engine_factory.cc
@@ -12,6 +12,7 @@
#include <utility>
+#include "api/environment/environment_factory.h"
#include "audio/voip/voip_core.h"
#include "rtc_base/logging.h"
@@ -27,11 +28,11 @@
RTC_DLOG(LS_INFO) << "No audio processing functionality provided.";
}
- return std::make_unique<VoipCore>(std::move(config.encoder_factory),
- std::move(config.decoder_factory),
- std::move(config.task_queue_factory),
- std::move(config.audio_device_module),
- std::move(config.audio_processing));
+ return std::make_unique<VoipCore>(
+ CreateEnvironment(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_processing));
}
} // namespace webrtc
diff --git a/audio/voip/BUILD.gn b/audio/voip/BUILD.gn
index 8042ec9..a491ec4 100644
--- a/audio/voip/BUILD.gn
+++ b/audio/voip/BUILD.gn
@@ -20,6 +20,7 @@
"../../api/audio:audio_device",
"../../api/audio:audio_processing",
"../../api/audio_codecs:audio_codecs_api",
+ "../../api/environment",
"../../api/task_queue",
"../../api/voip:voip_api",
"../../modules/audio_mixer:audio_mixer_impl",
diff --git a/audio/voip/test/BUILD.gn b/audio/voip/test/BUILD.gn
index 088a7a5..5dae888 100644
--- a/audio/voip/test/BUILD.gn
+++ b/audio/voip/test/BUILD.gn
@@ -28,6 +28,7 @@
"..:voip_core",
"../../../api/audio_codecs:builtin_audio_decoder_factory",
"../../../api/audio_codecs:builtin_audio_encoder_factory",
+ "../../../api/environment:environment_factory",
"../../../api/task_queue:default_task_queue_factory",
"../../../modules/audio_device:mock_audio_device",
"../../../modules/audio_processing:mocks",
diff --git a/audio/voip/test/voip_core_unittest.cc b/audio/voip/test/voip_core_unittest.cc
index b432506..2838f5e 100644
--- a/audio/voip/test/voip_core_unittest.cc
+++ b/audio/voip/test/voip_core_unittest.cc
@@ -12,7 +12,7 @@
#include "api/audio_codecs/builtin_audio_decoder_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_processing/include/mock_audio_processing.h"
#include "test/gtest.h"
@@ -43,9 +43,8 @@
rtc::make_ref_counted<NiceMock<test::MockAudioProcessing>>();
voip_core_ = std::make_unique<VoipCore>(
- std::move(encoder_factory), std::move(decoder_factory),
- CreateDefaultTaskQueueFactory(), audio_device_,
- std::move(audio_processing));
+ CreateEnvironment(), std::move(encoder_factory),
+ std::move(decoder_factory), audio_device_, std::move(audio_processing));
}
test::RunLoop run_loop_;
diff --git a/audio/voip/voip_core.cc b/audio/voip/voip_core.cc
index 8df1c59..30c8459 100644
--- a/audio/voip/voip_core.cc
+++ b/audio/voip/voip_core.cc
@@ -37,16 +37,16 @@
} // 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,
- std::unique_ptr<TaskQueueFactory> task_queue_factory,
rtc::scoped_refptr<AudioDeviceModule> audio_device_module,
- rtc::scoped_refptr<AudioProcessing> audio_processing) {
- encoder_factory_ = std::move(encoder_factory);
- decoder_factory_ = std::move(decoder_factory);
- task_queue_factory_ = std::move(task_queue_factory);
- audio_device_module_ = std::move(audio_device_module);
- audio_processing_ = std::move(audio_processing);
+ rtc::scoped_refptr<AudioProcessing> audio_processing)
+ : env_(env),
+ encoder_factory_(std::move(encoder_factory)),
+ decoder_factory_(std::move(decoder_factory)),
+ audio_processing_(std::move(audio_processing)),
+ audio_device_module_(std::move(audio_device_module)) {
audio_mixer_ = AudioMixerImpl::Create();
// AudioTransportImpl depends on audio mixer and audio processing instances.
@@ -133,7 +133,7 @@
rtc::scoped_refptr<AudioChannel> channel =
rtc::make_ref_counted<AudioChannel>(transport, local_ssrc.value(),
- task_queue_factory_.get(),
+ &env_.task_queue_factory(),
audio_mixer_.get(), decoder_factory_);
{
diff --git a/audio/voip/voip_core.h b/audio/voip/voip_core.h
index 4a6031d..3ee1e8c 100644
--- a/audio/voip/voip_core.h
+++ b/audio/voip/voip_core.h
@@ -21,8 +21,8 @@
#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
+#include "api/environment/environment.h"
#include "api/scoped_refptr.h"
-#include "api/task_queue/task_queue_factory.h"
#include "api/voip/voip_base.h"
#include "api/voip/voip_codec.h"
#include "api/voip/voip_dtmf.h"
@@ -52,10 +52,9 @@
public VoipStatistics,
public VoipVolumeControl {
public:
- // Construct VoipCore with provided arguments.
- VoipCore(rtc::scoped_refptr<AudioEncoderFactory> encoder_factory,
+ VoipCore(const Environment& env,
+ rtc::scoped_refptr<AudioEncoderFactory> encoder_factory,
rtc::scoped_refptr<AudioDecoderFactory> decoder_factory,
- std::unique_ptr<TaskQueueFactory> task_queue_factory,
rtc::scoped_refptr<AudioDeviceModule> audio_device_module,
rtc::scoped_refptr<AudioProcessing> audio_processing);
~VoipCore() override = default;
@@ -136,9 +135,9 @@
bool UpdateAudioTransportWithSenders();
// Synchronization for these are handled internally.
+ const Environment env_;
rtc::scoped_refptr<AudioEncoderFactory> encoder_factory_;
rtc::scoped_refptr<AudioDecoderFactory> decoder_factory_;
- std::unique_ptr<TaskQueueFactory> task_queue_factory_;
// Synchronization is handled internally by AudioProcessing.
// Must be placed before `audio_device_module_` for proper destruction.