Provide Environment when AudioDeviceModule created for testing purpose
Bug: webrtc:413413572
Change-Id: Ic9425b0d787fc5ec03aa3c012483036a72ce89fe
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/389140
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44505}
diff --git a/call/call_perf_tests.cc b/call/call_perf_tests.cc
index b72558d..17e988e 100644
--- a/call/call_perf_tests.cc
+++ b/call/call_perf_tests.cc
@@ -237,8 +237,7 @@
metrics::Reset();
scoped_refptr<AudioDeviceModule> fake_audio_device =
TestAudioDeviceModule::Create(
- &env().task_queue_factory(),
- TestAudioDeviceModule::CreatePulsedNoiseCapturer(256, 48000),
+ env(), TestAudioDeviceModule::CreatePulsedNoiseCapturer(256, 48000),
TestAudioDeviceModule::CreateDiscardRenderer(48000),
audio_rtp_speed);
EXPECT_EQ(0, fake_audio_device->Init());
diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn
index d527ef6..805a6ab 100644
--- a/modules/audio_device/BUILD.gn
+++ b/modules/audio_device/BUILD.gn
@@ -178,6 +178,11 @@
"test_audio_device_impl.cc",
"test_audio_device_impl.h",
]
+
+ # TODO: bugs.webrtc.org/413413572 - Mark this build target as testonly or
+ # or update downstream not to use deprecated function. Explicit poison
+ # can be removed then.
+ allow_poison = [ "environment_construction" ]
deps = [
":audio_device_buffer",
":audio_device_default",
@@ -187,6 +192,8 @@
"../../api:make_ref_counted",
"../../api:scoped_refptr",
"../../api/audio:audio_device",
+ "../../api/environment",
+ "../../api/environment:environment_factory",
"../../api/task_queue",
"../../api/units:time_delta",
"../../common_audio",
diff --git a/modules/audio_device/include/test_audio_device.cc b/modules/audio_device/include/test_audio_device.cc
index a0e0ef8..f6d5386 100644
--- a/modules/audio_device/include/test_audio_device.cc
+++ b/modules/audio_device/include/test_audio_device.cc
@@ -21,6 +21,8 @@
#include "absl/strings/string_view.h"
#include "api/array_view.h"
#include "api/audio/audio_device.h"
+#include "api/environment/environment.h"
+#include "api/environment/environment_factory.h"
#include "api/make_ref_counted.h"
#include "api/scoped_refptr.h"
#include "api/task_queue/task_queue_factory.h"
@@ -428,11 +430,21 @@
std::unique_ptr<TestAudioDeviceModule::Capturer> capturer,
std::unique_ptr<TestAudioDeviceModule::Renderer> renderer,
float speed) {
+ return Create(CreateEnvironment(task_queue_factory), std::move(capturer),
+ std::move(renderer), speed);
+}
+
+scoped_refptr<AudioDeviceModule> TestAudioDeviceModule::Create(
+ const Environment& env,
+ std::unique_ptr<TestAudioDeviceModule::Capturer> capturer,
+ std::unique_ptr<TestAudioDeviceModule::Renderer> renderer,
+ float speed) {
auto audio_device = make_ref_counted<AudioDeviceModuleImpl>(
AudioDeviceModule::AudioLayer::kDummyAudio,
- std::make_unique<TestAudioDevice>(task_queue_factory, std::move(capturer),
+ std::make_unique<TestAudioDevice>(&env.task_queue_factory(),
+ std::move(capturer),
std::move(renderer), speed),
- task_queue_factory,
+ &env.task_queue_factory(),
/*create_detached=*/true);
// Ensure that the current platform is supported.
diff --git a/modules/audio_device/include/test_audio_device.h b/modules/audio_device/include/test_audio_device.h
index 6a98342..d7c5568 100644
--- a/modules/audio_device/include/test_audio_device.h
+++ b/modules/audio_device/include/test_audio_device.h
@@ -14,12 +14,11 @@
#include <stdint.h>
#include <memory>
-#include <string>
#include "absl/strings/string_view.h"
#include "api/array_view.h"
#include "api/audio/audio_device.h"
-#include "api/audio/audio_device_defines.h"
+#include "api/environment/environment.h"
#include "api/scoped_refptr.h"
#include "api/task_queue/task_queue_factory.h"
#include "rtc_base/buffer.h"
@@ -82,6 +81,13 @@
// played out. Can be nullptr if this device is never used for playing.
// Use one of the Create... functions to get these instances.
static scoped_refptr<AudioDeviceModule> Create(
+ const Environment& env,
+ std::unique_ptr<Capturer> capturer,
+ std::unique_ptr<Renderer> renderer,
+ float speed = 1);
+
+ [[deprecated("bugs.webrtc.org/413413572")]]
+ static scoped_refptr<AudioDeviceModule> Create(
TaskQueueFactory* task_queue_factory,
std::unique_ptr<Capturer> capturer,
std::unique_ptr<Renderer> renderer,
diff --git a/modules/audio_device/include/test_audio_device_unittest.cc b/modules/audio_device/include/test_audio_device_unittest.cc
index 18abf00..5e4888b 100644
--- a/modules/audio_device/include/test_audio_device_unittest.cc
+++ b/modules/audio_device/include/test_audio_device_unittest.cc
@@ -10,22 +10,32 @@
#include "modules/audio_device/include/test_audio_device.h"
+#include <stdio.h>
+
#include <algorithm>
-#include <array>
+#include <cstddef>
+#include <cstdint>
+#include <cstdlib>
+#include <cstring>
#include <memory>
#include <optional>
+#include <string>
#include <utility>
+#include <vector>
#include "api/array_view.h"
+#include "api/audio/audio_device.h"
#include "api/audio/audio_device_defines.h"
-#include "api/task_queue/task_queue_factory.h"
+#include "api/environment/environment.h"
+#include "api/environment/environment_factory.h"
+#include "api/scoped_refptr.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "common_audio/wav_file.h"
-#include "common_audio/wav_header.h"
+#include "rtc_base/buffer.h"
#include "rtc_base/checks.h"
-#include "rtc_base/logging.h"
#include "rtc_base/synchronization/mutex.h"
+#include "rtc_base/thread_annotations.h"
#include "test/gmock.h"
#include "test/gtest.h"
#include "test/testsupport/file_utils.h"
@@ -463,15 +473,17 @@
TEST(TestAudioDeviceModuleTest, CreatedADMCanRecord) {
GlobalSimulatedTimeController time_controller(kStartTime);
+ const Environment env = CreateEnvironment(
+ time_controller.GetClock(), time_controller.GetTaskQueueFactory());
TestAudioTransport audio_transport(TestAudioTransport::Mode::kRecording);
std::unique_ptr<TestAudioDeviceModule::PulsedNoiseCapturer> capturer =
TestAudioDeviceModule::CreatePulsedNoiseCapturer(
/*max_amplitude=*/1000,
/*sampling_frequency_in_hz=*/48000, /*num_channels=*/2);
- scoped_refptr<AudioDeviceModule> adm = TestAudioDeviceModule::Create(
- time_controller.GetTaskQueueFactory(), std::move(capturer),
- /*renderer=*/nullptr);
+ scoped_refptr<AudioDeviceModule> adm =
+ TestAudioDeviceModule::Create(env, std::move(capturer),
+ /*renderer=*/nullptr);
ASSERT_EQ(adm->RegisterAudioCallback(&audio_transport), 0);
ASSERT_EQ(adm->Init(), 0);
@@ -495,13 +507,15 @@
TEST(TestAudioDeviceModuleTest, CreatedADMCanPlay) {
GlobalSimulatedTimeController time_controller(kStartTime);
+ const Environment env = CreateEnvironment(
+ time_controller.GetClock(), time_controller.GetTaskQueueFactory());
TestAudioTransport audio_transport(TestAudioTransport::Mode::kPlaying);
std::unique_ptr<TestAudioDeviceModule::Renderer> renderer =
TestAudioDeviceModule::CreateDiscardRenderer(
/*sampling_frequency_in_hz=*/48000, /*num_channels=*/2);
scoped_refptr<AudioDeviceModule> adm =
- TestAudioDeviceModule::Create(time_controller.GetTaskQueueFactory(),
+ TestAudioDeviceModule::Create(env,
/*capturer=*/nullptr, std::move(renderer));
ASSERT_EQ(adm->RegisterAudioCallback(&audio_transport), 0);
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 7d10685..ad3012d 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -1260,10 +1260,12 @@
"../api:frame_generator_api",
"../api:rtp_headers",
"../api:rtp_parameters",
+ "../api:scoped_refptr",
"../api:simulated_network_api",
"../api:transport_api",
"../api/audio:audio_device",
"../api/audio:builtin_audio_processing_builder",
+ "../api/audio_codecs:audio_codecs_api",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory",
"../api/environment",
@@ -1271,16 +1273,19 @@
"../api/rtc_event_log",
"../api/task_queue",
"../api/test/video:function_video_factory",
+ "../api/transport:bitrate_settings",
"../api/transport:field_trial_based_config",
"../api/units:time_delta",
"../api/video:builtin_video_bitrate_allocator_factory",
"../api/video:video_bitrate_allocator_factory",
"../api/video:video_frame",
+ "../api/video:video_rtp_headers",
"../api/video_codecs:video_codecs_api",
"../call",
"../call:call_interfaces",
"../call:fake_network",
"../call:simulated_packet_receiver",
+ "../call:video_receive_stream_api",
"../call:video_send_stream_api",
"../modules/audio_device:test_audio_device_module",
"../modules/audio_mixer:audio_mixer_impl",
diff --git a/test/call_test.cc b/test/call_test.cc
index 37e2ef9..4d55cde 100644
--- a/test/call_test.cc
+++ b/test/call_test.cc
@@ -10,26 +10,59 @@
#include "test/call_test.h"
-#include <algorithm>
+#include <cstddef>
+#include <cstdint>
+#include <list>
+#include <map>
#include <memory>
+#include <optional>
+#include <string>
+#include <utility>
+#include <vector>
#include "api/audio/audio_device.h"
#include "api/audio/builtin_audio_processing_builder.h"
+#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
+#include "api/call/transport.h"
#include "api/environment/environment.h"
#include "api/environment/environment_factory.h"
-#include "api/task_queue/task_queue_base.h"
+#include "api/rtc_event_log/rtc_event_log.h"
+#include "api/rtp_headers.h"
+#include "api/rtp_parameters.h"
+#include "api/scoped_refptr.h"
+#include "api/task_queue/task_queue_factory.h"
#include "api/test/create_frame_generator.h"
+#include "api/test/simulated_network.h"
+#include "api/transport/bitrate_settings.h"
+#include "api/units/time_delta.h"
#include "api/video/builtin_video_bitrate_allocator_factory.h"
+#include "api/video/video_codec_type.h"
+#include "api/video/video_rotation.h"
+#include "api/video_codecs/sdp_video_format.h"
+#include "api/video_codecs/video_decoder_factory.h"
+#include "call/audio_receive_stream.h"
+#include "call/audio_send_stream.h"
+#include "call/audio_state.h"
+#include "call/call.h"
+#include "call/call_config.h"
#include "call/fake_network_pipe.h"
+#include "call/flexfec_receive_stream.h"
#include "call/packet_receiver.h"
+#include "call/video_receive_stream.h"
+#include "call/video_send_stream.h"
#include "modules/audio_device/include/test_audio_device.h"
#include "modules/audio_mixer/audio_mixer_impl.h"
+#include "modules/rtp_rtcp/source/rtp_packet_received.h"
#include "rtc_base/checks.h"
-#include "rtc_base/event.h"
#include "rtc_base/task_queue_for_test.h"
+#include "test/encoder_settings.h"
+#include "test/fake_decoder.h"
#include "test/fake_encoder.h"
+#include "test/fake_vp8_encoder.h"
+#include "test/frame_generator_capturer.h"
+#include "test/gtest.h"
#include "test/network/simulated_network.h"
#include "test/rtp_rtcp_observer.h"
#include "test/testsupport/file_utils.h"
@@ -531,10 +564,10 @@
void CallTest::CreateFakeAudioDevices(
std::unique_ptr<TestAudioDeviceModule::Capturer> capturer,
std::unique_ptr<TestAudioDeviceModule::Renderer> renderer) {
- fake_send_audio_device_ = TestAudioDeviceModule::Create(
- &env_.task_queue_factory(), std::move(capturer), nullptr, 1.f);
- fake_recv_audio_device_ = TestAudioDeviceModule::Create(
- &env_.task_queue_factory(), nullptr, std::move(renderer), 1.f);
+ fake_send_audio_device_ =
+ TestAudioDeviceModule::Create(env_, std::move(capturer), nullptr, 1.f);
+ fake_recv_audio_device_ =
+ TestAudioDeviceModule::Create(env_, nullptr, std::move(renderer), 1.f);
}
void CallTest::CreateVideoStreams() {
diff --git a/test/network/BUILD.gn b/test/network/BUILD.gn
index 6f2b0300..81ce6e3 100644
--- a/test/network/BUILD.gn
+++ b/test/network/BUILD.gn
@@ -112,6 +112,8 @@
"../../api:rtc_error_matchers",
"../../api:scoped_refptr",
"../../api:simulated_network_api",
+ "../../api/environment",
+ "../../api/environment:environment_factory",
"../../api/rtc_event_log:rtc_event_log_factory",
"../../api/task_queue:default_task_queue_factory",
"../../api/test/network_emulation",
@@ -122,6 +124,7 @@
"../../pc:peerconnection_wrapper",
"../../rtc_base:network",
"../../rtc_base:task_queue_for_test",
+ "../../rtc_base:threading",
]
}
}
diff --git a/test/network/network_emulation_pc_unittest.cc b/test/network/network_emulation_pc_unittest.cc
index 2eca595..5a24845 100644
--- a/test/network/network_emulation_pc_unittest.cc
+++ b/test/network/network_emulation_pc_unittest.cc
@@ -14,23 +14,23 @@
#include "api/audio_options.h"
#include "api/enable_media_with_defaults.h"
+#include "api/environment/environment.h"
+#include "api/environment/environment_factory.h"
#include "api/jsep.h"
#include "api/media_stream_interface.h"
#include "api/peer_connection_interface.h"
#include "api/rtc_event_log/rtc_event_log_factory.h"
#include "api/scoped_refptr.h"
-#include "api/task_queue/default_task_queue_factory.h"
#include "api/test/network_emulation/network_emulation_interfaces.h"
#include "api/test/network_emulation_manager.h"
#include "api/test/rtc_error_matchers.h"
#include "api/test/simulated_network.h"
-#include "api/transport/field_trial_based_config.h"
#include "modules/audio_device/include/test_audio_device.h"
#include "p2p/base/port_allocator.h"
#include "pc/peer_connection_wrapper.h"
#include "pc/test/mock_peer_connection_observers.h"
-#include "rtc_base/network.h"
#include "rtc_base/task_queue_for_test.h"
+#include "rtc_base/thread.h"
#include "test/gmock.h"
#include "test/gtest.h"
#include "test/network/network_emulation.h"
@@ -63,17 +63,17 @@
scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
Thread* signaling_thread,
EmulatedNetworkManagerInterface* network) {
+ const Environment env = CreateEnvironment();
PeerConnectionFactoryDependencies pcf_deps;
- pcf_deps.task_queue_factory = CreateDefaultTaskQueueFactory();
+ pcf_deps.env = env;
pcf_deps.event_log_factory = std::make_unique<RtcEventLogFactory>();
pcf_deps.network_thread = network->network_thread();
pcf_deps.signaling_thread = signaling_thread;
- pcf_deps.trials = std::make_unique<FieldTrialBasedConfig>();
pcf_deps.socket_factory = network->socket_factory();
pcf_deps.network_manager = network->ReleaseNetworkManager();
pcf_deps.adm = TestAudioDeviceModule::Create(
- pcf_deps.task_queue_factory.get(),
+ env,
TestAudioDeviceModule::CreatePulsedNoiseCapturer(kMaxAptitude,
kSamplingFrequency),
TestAudioDeviceModule::CreateDiscardRenderer(kSamplingFrequency),
diff --git a/test/pc/e2e/test_peer_factory.cc b/test/pc/e2e/test_peer_factory.cc
index a251caf..4ff994a 100644
--- a/test/pc/e2e/test_peer_factory.cc
+++ b/test/pc/e2e/test_peer_factory.cc
@@ -24,7 +24,6 @@
#include "api/peer_connection_interface.h"
#include "api/rtc_event_log/rtc_event_log_factory.h"
#include "api/scoped_refptr.h"
-#include "api/task_queue/task_queue_factory.h"
#include "api/test/pclf/media_configuration.h"
#include "api/test/pclf/media_quality_test_params.h"
#include "api/test/pclf/peer_configurer.h"
@@ -124,10 +123,10 @@
}
scoped_refptr<AudioDeviceModule> CreateAudioDeviceModule(
+ const Environment& env,
std::optional<AudioConfig> audio_config,
std::optional<RemotePeerAudioConfig> remote_audio_config,
- std::optional<EchoEmulationConfig> echo_emulation_config,
- TaskQueueFactory* task_queue_factory) {
+ std::optional<EchoEmulationConfig> echo_emulation_config) {
std::unique_ptr<TestAudioDeviceModule::Renderer> renderer =
CreateAudioRenderer(remote_audio_config);
std::unique_ptr<TestAudioDeviceModule::Capturer> capturer =
@@ -150,7 +149,7 @@
std::move(capturer), audio_config->input_dump_file_name.value());
}
- return TestAudioDeviceModule::Create(task_queue_factory, std::move(capturer),
+ return TestAudioDeviceModule::Create(env, std::move(capturer),
std::move(renderer), /*speed=*/1.f);
}
@@ -296,8 +295,8 @@
// Create peer connection factory.
scoped_refptr<AudioDeviceModule> audio_device_module =
- CreateAudioDeviceModule(params->audio_config, remote_audio_config,
- echo_emulation_config, &env.task_queue_factory());
+ CreateAudioDeviceModule(env, params->audio_config, remote_audio_config,
+ echo_emulation_config);
WrapVideoEncoderFactory(
params->name.value(), params->video_encoder_bitrate_multiplier,
CalculateRequiredSpatialIndexPerStream(
diff --git a/test/peer_scenario/peer_scenario_client.cc b/test/peer_scenario/peer_scenario_client.cc
index 52dedbd..2c688e0 100644
--- a/test/peer_scenario/peer_scenario_client.cc
+++ b/test/peer_scenario/peer_scenario_client.cc
@@ -287,7 +287,7 @@
pcf_deps.env = env_;
pcf_deps.adm = TestAudioDeviceModule::Create(
- &env_.task_queue_factory(),
+ env_,
TestAudioDeviceModule::CreatePulsedNoiseCapturer(
config.audio.pulsed_noise->amplitude *
std::numeric_limits<int16_t>::max(),
diff --git a/test/scenario/BUILD.gn b/test/scenario/BUILD.gn
index 2cae762..b7fd6a3 100644
--- a/test/scenario/BUILD.gn
+++ b/test/scenario/BUILD.gn
@@ -103,6 +103,7 @@
"../../api/task_queue",
"../../api/test/network_emulation",
"../../api/test/video:function_video_factory",
+ "../../api/transport:bitrate_settings",
"../../api/transport:network_control",
"../../api/units:data_rate",
"../../api/units:data_size",
@@ -140,6 +141,7 @@
"../../modules/video_coding/svc:scalability_mode_util",
"../../rtc_base:checks",
"../../rtc_base:copy_on_write_buffer",
+ "../../rtc_base:logging",
"../../rtc_base:macromagic",
"../../rtc_base:net_helper",
"../../rtc_base:net_helpers",
diff --git a/test/scenario/call_client.cc b/test/scenario/call_client.cc
index b598c28..1f6719d 100644
--- a/test/scenario/call_client.cc
+++ b/test/scenario/call_client.cc
@@ -9,24 +9,48 @@
*/
#include "test/scenario/call_client.h"
-#include <iostream>
+#include <cstddef>
+#include <cstdint>
+#include <functional>
#include <memory>
+#include <string>
#include <utility>
+#include "api/array_view.h"
#include "api/audio/builtin_audio_processing_builder.h"
#include "api/environment/environment.h"
#include "api/environment/environment_factory.h"
#include "api/media_types.h"
#include "api/rtc_event_log/rtc_event_log.h"
#include "api/rtc_event_log/rtc_event_log_factory.h"
+#include "api/rtc_event_log_output.h"
+#include "api/rtp_parameters.h"
+#include "api/scoped_refptr.h"
+#include "api/task_queue/task_queue_factory.h"
+#include "api/test/network_emulation/network_emulation_interfaces.h"
+#include "api/test/time_controller.h"
+#include "api/transport/bitrate_settings.h"
+#include "api/transport/network_control.h"
#include "api/transport/network_types.h"
+#include "api/units/data_rate.h"
+#include "api/units/time_delta.h"
+#include "api/units/timestamp.h"
+#include "call/audio_state.h"
#include "call/call.h"
-#include "call/rtp_transport_controller_send_factory.h"
+#include "call/call_config.h"
#include "modules/audio_device/include/test_audio_device.h"
#include "modules/audio_mixer/audio_mixer_impl.h"
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
#include "modules/rtp_rtcp/source/rtp_util.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/event.h"
+#include "rtc_base/logging.h"
+#include "rtc_base/strings/string_builder.h"
+#include "test/logging/log_writer.h"
+#include "test/scenario/column_printer.h"
+#include "test/scenario/network_node.h"
+#include "test/scenario/scenario_config.h"
namespace webrtc {
namespace test {
@@ -48,7 +72,7 @@
auto capturer = TestAudioDeviceModule::CreatePulsedNoiseCapturer(256, 48000);
auto renderer = TestAudioDeviceModule::CreateDiscardRenderer(48000);
setup.fake_audio_device = TestAudioDeviceModule::Create(
- &env.task_queue_factory(), std::move(capturer), std::move(renderer), 1.f);
+ env, std::move(capturer), std::move(renderer), 1.f);
setup.apm = BuiltinAudioProcessingBuilder().Build(env);
setup.fake_audio_device->Init();
AudioState::Config audio_state_config;
diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc
index f7a1239..66a8a25 100644
--- a/video/video_quality_test.cc
+++ b/video/video_quality_test.cc
@@ -1407,8 +1407,7 @@
} else {
// By default, create a test ADM which fakes audio.
audio_device = TestAudioDeviceModule::Create(
- &env_.task_queue_factory(),
- TestAudioDeviceModule::CreatePulsedNoiseCapturer(32000, 48000),
+ env_, TestAudioDeviceModule::CreatePulsedNoiseCapturer(32000, 48000),
TestAudioDeviceModule::CreateDiscardRenderer(48000), 1.f);
}
RTC_CHECK(audio_device);