diff --git a/media/BUILD.gn b/media/BUILD.gn index 6b8eaf700b..3f18a79792 100644 --- a/media/BUILD.gn +++ b/media/BUILD.gn @@ -825,6 +825,8 @@ if (rtc_include_tests) { "../api:simulcast_test_fixture_api", "../api/audio_codecs:builtin_audio_decoder_factory", "../api/audio_codecs:builtin_audio_encoder_factory", + "../api/environment", + "../api/environment:environment_factory", "../api/rtc_event_log", "../api/task_queue", "../api/task_queue:default_task_queue_factory", diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc index 645413bced..f5736679be 100644 --- a/media/engine/webrtc_video_engine_unittest.cc +++ b/media/engine/webrtc_video_engine_unittest.cc @@ -20,9 +20,9 @@ #include "absl/algorithm/container.h" #include "absl/strings/match.h" -#include "api/rtc_event_log/rtc_event_log.h" +#include "api/environment/environment.h" +#include "api/environment/environment_factory.h" #include "api/rtp_parameters.h" -#include "api/task_queue/default_task_queue_factory.h" #include "api/test/mock_encoder_selector.h" #include "api/test/mock_video_bitrate_allocator.h" #include "api/test/mock_video_bitrate_allocator_factory.h" @@ -101,6 +101,8 @@ using ::testing::WithArg; using ::webrtc::BitrateConstraints; using ::webrtc::Call; using ::webrtc::CallConfig; +using ::webrtc::CreateEnvironment; +using ::webrtc::Environment; using ::webrtc::kDefaultScalabilityModeStr; using ::webrtc::RtpExtension; using ::webrtc::RtpPacket; @@ -355,13 +357,10 @@ class WebRtcVideoEngineTest : public ::testing::Test { explicit WebRtcVideoEngineTest(const std::string& field_trials) : field_trials_(field_trials), time_controller_(webrtc::Timestamp::Millis(4711)), - task_queue_factory_(time_controller_.CreateTaskQueueFactory()), - call_(Call::Create([&] { - CallConfig call_config(&event_log_); - call_config.task_queue_factory = task_queue_factory_.get(); - call_config.trials = &field_trials_; - return call_config; - }())), + env_(CreateEnvironment(&field_trials_, + time_controller_.CreateTaskQueueFactory(), + time_controller_.GetClock())), + call_(Call::Create(CallConfig(env_))), encoder_factory_(new cricket::FakeWebRtcVideoEncoderFactory), decoder_factory_(new cricket::FakeWebRtcVideoDecoderFactory), video_bitrate_allocator_factory_( @@ -398,8 +397,7 @@ class WebRtcVideoEngineTest : public ::testing::Test { webrtc::test::ScopedKeyValueConfig field_trials_; webrtc::GlobalSimulatedTimeController time_controller_; - webrtc::RtcEventLogNull event_log_; - std::unique_ptr task_queue_factory_; + Environment env_; // Used in WebRtcVideoEngineVoiceTest, but defined here so it's properly // initialized when the constructor is called. std::unique_ptr call_; @@ -1479,14 +1477,10 @@ TEST(WebRtcVideoEngineNewVideoCodecFactoryTest, Vp8) { EXPECT_CALL(*decoder_factory, CreateVideoDecoder(format)).Times(0); // Create a call. - webrtc::RtcEventLogNull event_log; webrtc::GlobalSimulatedTimeController time_controller( webrtc::Timestamp::Millis(4711)); - auto task_queue_factory = time_controller.CreateTaskQueueFactory(); - CallConfig call_config(&event_log); - webrtc::FieldTrialBasedConfig field_trials; - call_config.trials = &field_trials; - call_config.task_queue_factory = task_queue_factory.get(); + CallConfig call_config(CreateEnvironment( + time_controller.CreateTaskQueueFactory(), time_controller.GetClock())); const std::unique_ptr call = Call::Create(call_config); // Create send channel. @@ -1615,18 +1609,11 @@ TEST_F(WebRtcVideoEngineTest, SetVideoRtxEnabled) { class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test { protected: - CallConfig GetCallConfig(webrtc::RtcEventLogNull* event_log, - webrtc::TaskQueueFactory* task_queue_factory) { - CallConfig call_config(event_log); - call_config.task_queue_factory = task_queue_factory; - call_config.trials = &field_trials_; - return call_config; - } - WebRtcVideoChannelEncodedFrameCallbackTest() - : task_queue_factory_(time_controller_.CreateTaskQueueFactory()), - call_(Call::Create( - GetCallConfig(&event_log_, task_queue_factory_.get()))), + : env_(CreateEnvironment(&field_trials_, + time_controller_.CreateTaskQueueFactory(), + time_controller_.GetClock())), + call_(Call::Create(CallConfig(env_))), video_bitrate_allocator_factory_( webrtc::CreateBuiltinVideoBitrateAllocatorFactory()), engine_( @@ -1676,8 +1663,7 @@ class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test { webrtc::GlobalSimulatedTimeController time_controller_{ Timestamp::Seconds(1000)}; webrtc::test::ScopedKeyValueConfig field_trials_; - webrtc::RtcEventLogNull event_log_; - std::unique_ptr task_queue_factory_; + Environment env_; std::unique_ptr call_; std::unique_ptr video_bitrate_allocator_factory_; @@ -1796,7 +1782,9 @@ TEST_F(WebRtcVideoChannelEncodedFrameCallbackTest, DoesNotDecodeWhenDisabled) { class WebRtcVideoChannelBaseTest : public ::testing::Test { protected: WebRtcVideoChannelBaseTest() - : task_queue_factory_(time_controller_.CreateTaskQueueFactory()), + : env_(CreateEnvironment(&field_trials_, + time_controller_.CreateTaskQueueFactory(), + time_controller_.GetClock())), video_bitrate_allocator_factory_( webrtc::CreateBuiltinVideoBitrateAllocatorFactory()), engine_(std::make_unique override_field_trials_; - std::unique_ptr task_queue_factory_; + Environment env_; std::unique_ptr call_; std::unique_ptr video_bitrate_allocator_factory_; @@ -9863,7 +9847,6 @@ class WebRtcVideoChannelSimulcastTest : public ::testing::Test { } webrtc::test::ScopedKeyValueConfig field_trials_; - webrtc::RtcEventLogNull event_log_; FakeCall fake_call_; cricket::FakeWebRtcVideoEncoderFactory* encoder_factory_; cricket::FakeWebRtcVideoDecoderFactory* decoder_factory_; diff --git a/media/engine/webrtc_voice_engine_unittest.cc b/media/engine/webrtc_voice_engine_unittest.cc index 4c5d850533..4d6580631d 100644 --- a/media/engine/webrtc_voice_engine_unittest.cc +++ b/media/engine/webrtc_voice_engine_unittest.cc @@ -18,8 +18,9 @@ #include "absl/types/optional.h" #include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "api/audio_codecs/builtin_audio_encoder_factory.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/rtp_parameters.h" #include "api/scoped_refptr.h" #include "api/task_queue/default_task_queue_factory.h" @@ -45,6 +46,7 @@ #include "test/mock_audio_encoder_factory.h" #include "test/scoped_key_value_config.h" +namespace { using ::testing::_; using ::testing::ContainerEq; using ::testing::Contains; @@ -55,11 +57,11 @@ using ::testing::ReturnPointee; using ::testing::SaveArg; using ::testing::StrictMock; using ::testing::UnorderedElementsAreArray; +using ::webrtc::BitrateConstraints; using ::webrtc::Call; using ::webrtc::CallConfig; - -namespace { -using webrtc::BitrateConstraints; +using ::webrtc::CreateEnvironment; +using ::webrtc::Environment; constexpr uint32_t kMaxUnsignaledRecvStreams = 4; @@ -3678,24 +3680,18 @@ TEST(WebRtcVoiceEngineTest, StartupShutdown) { for (bool use_null_apm : {false, true}) { // If the VoiceEngine wants to gather available codecs early, that's fine // but we never want it to create a decoder at this stage. - std::unique_ptr task_queue_factory = - webrtc::CreateDefaultTaskQueueFactory(); + Environment env = CreateEnvironment(); rtc::scoped_refptr adm = webrtc::test::MockAudioDeviceModule::CreateNice(); rtc::scoped_refptr apm = use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create(); - webrtc::FieldTrialBasedConfig field_trials; cricket::WebRtcVoiceEngine engine( - task_queue_factory.get(), adm.get(), + &env.task_queue_factory(), adm.get(), webrtc::MockAudioEncoderFactory::CreateUnusedFactory(), webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm, - nullptr, field_trials); + nullptr, env.field_trials()); engine.Init(); - webrtc::RtcEventLogNull event_log; - CallConfig call_config(&event_log); - call_config.trials = &field_trials; - call_config.task_queue_factory = task_queue_factory.get(); - std::unique_ptr call = Call::Create(call_config); + std::unique_ptr call = Call::Create(CallConfig(env)); std::unique_ptr send_channel = engine.CreateSendChannel( call.get(), cricket::MediaConfig(), cricket::AudioOptions(), @@ -3713,25 +3709,19 @@ TEST(WebRtcVoiceEngineTest, StartupShutdown) { TEST(WebRtcVoiceEngineTest, StartupShutdownWithExternalADM) { rtc::AutoThread main_thread; for (bool use_null_apm : {false, true}) { - std::unique_ptr task_queue_factory = - webrtc::CreateDefaultTaskQueueFactory(); + Environment env = CreateEnvironment(); auto adm = rtc::make_ref_counted< ::testing::NiceMock>(); { rtc::scoped_refptr apm = use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create(); - webrtc::FieldTrialBasedConfig field_trials; cricket::WebRtcVoiceEngine engine( - task_queue_factory.get(), adm.get(), + &env.task_queue_factory(), adm.get(), webrtc::MockAudioEncoderFactory::CreateUnusedFactory(), webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm, - nullptr, field_trials); + nullptr, env.field_trials()); engine.Init(); - webrtc::RtcEventLogNull event_log; - CallConfig call_config(&event_log); - call_config.trials = &field_trials; - call_config.task_queue_factory = task_queue_factory.get(); - std::unique_ptr call = Call::Create(call_config); + std::unique_ptr call = Call::Create(CallConfig(env)); std::unique_ptr send_channel = engine.CreateSendChannel( call.get(), cricket::MediaConfig(), cricket::AudioOptions(), @@ -3804,24 +3794,18 @@ TEST(WebRtcVoiceEngineTest, HasCorrectPayloadTypeMapping) { TEST(WebRtcVoiceEngineTest, Has32Channels) { rtc::AutoThread main_thread; for (bool use_null_apm : {false, true}) { - std::unique_ptr task_queue_factory = - webrtc::CreateDefaultTaskQueueFactory(); + Environment env = CreateEnvironment(); rtc::scoped_refptr adm = webrtc::test::MockAudioDeviceModule::CreateNice(); rtc::scoped_refptr apm = use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create(); - webrtc::FieldTrialBasedConfig field_trials; cricket::WebRtcVoiceEngine engine( - task_queue_factory.get(), adm.get(), + &env.task_queue_factory(), adm.get(), webrtc::MockAudioEncoderFactory::CreateUnusedFactory(), webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm, - nullptr, field_trials); + nullptr, env.field_trials()); engine.Init(); - webrtc::RtcEventLogNull event_log; - CallConfig call_config(&event_log); - call_config.trials = &field_trials; - call_config.task_queue_factory = task_queue_factory.get(); - std::unique_ptr call = Call::Create(call_config); + std::unique_ptr call = Call::Create(CallConfig(env)); std::vector> channels; @@ -3843,8 +3827,7 @@ TEST(WebRtcVoiceEngineTest, Has32Channels) { TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { rtc::AutoThread main_thread; for (bool use_null_apm : {false, true}) { - std::unique_ptr task_queue_factory = - webrtc::CreateDefaultTaskQueueFactory(); + Environment env = CreateEnvironment(); // TODO(ossu): I'm not sure of the intent of this test. It's either: // - Check that our builtin codecs are usable by Channel. // - The codecs provided by the engine is usable by Channel. @@ -3856,18 +3839,13 @@ TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { webrtc::test::MockAudioDeviceModule::CreateNice(); rtc::scoped_refptr apm = use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create(); - webrtc::FieldTrialBasedConfig field_trials; cricket::WebRtcVoiceEngine engine( - task_queue_factory.get(), adm.get(), + &env.task_queue_factory(), adm.get(), webrtc::MockAudioEncoderFactory::CreateUnusedFactory(), webrtc::CreateBuiltinAudioDecoderFactory(), nullptr, apm, nullptr, - field_trials); + env.field_trials()); engine.Init(); - webrtc::RtcEventLogNull event_log; - CallConfig call_config(&event_log); - call_config.trials = &field_trials; - call_config.task_queue_factory = task_queue_factory.get(); - std::unique_ptr call = Call::Create(call_config); + std::unique_ptr call = Call::Create(CallConfig(env)); cricket::WebRtcVoiceReceiveChannel channel( &engine, cricket::MediaConfig(), cricket::AudioOptions(), webrtc::CryptoOptions(), call.get(), @@ -3880,21 +3858,17 @@ TEST(WebRtcVoiceEngineTest, SetRecvCodecs) { TEST(WebRtcVoiceEngineTest, SetRtpSendParametersMaxBitrate) { rtc::AutoThread main_thread; - std::unique_ptr task_queue_factory = - webrtc::CreateDefaultTaskQueueFactory(); + Environment env = CreateEnvironment(); rtc::scoped_refptr adm = webrtc::test::MockAudioDeviceModule::CreateNice(); - webrtc::FieldTrialBasedConfig field_trials; FakeAudioSource source; - cricket::WebRtcVoiceEngine engine(task_queue_factory.get(), adm.get(), + cricket::WebRtcVoiceEngine engine(&env.task_queue_factory(), adm.get(), webrtc::CreateBuiltinAudioEncoderFactory(), webrtc::CreateBuiltinAudioDecoderFactory(), - nullptr, nullptr, nullptr, field_trials); + nullptr, nullptr, nullptr, + env.field_trials()); engine.Init(); - webrtc::RtcEventLogNull event_log; - CallConfig call_config(&event_log); - call_config.trials = &field_trials; - call_config.task_queue_factory = task_queue_factory.get(); + CallConfig call_config(env); { webrtc::AudioState::Config config; config.audio_mixer = webrtc::AudioMixerImpl::Create();