diff --git a/api/BUILD.gn b/api/BUILD.gn index c187a7d296..dfbf671b3a 100644 --- a/api/BUILD.gn +++ b/api/BUILD.gn @@ -47,6 +47,7 @@ rtc_source_set("enable_media") { "../media:rtc_audio_video", "../pc:media_factory", "../rtc_base/system:rtc_export", + "environment", ] } @@ -1433,6 +1434,7 @@ if (rtc_include_tests) { "../rtc_base:checks", "../system_wrappers", "../test/time_controller", + "environment", ] absl_deps = [ "//third_party/abseil-cpp/absl/base:nullability" ] } diff --git a/api/enable_media.cc b/api/enable_media.cc index 566cc15dd7..a05b1b328a 100644 --- a/api/enable_media.cc +++ b/api/enable_media.cc @@ -13,6 +13,7 @@ #include #include +#include "api/environment/environment.h" #include "api/peer_connection_interface.h" #include "call/call_factory.h" #include "media/engine/webrtc_media_engine.h" @@ -41,26 +42,18 @@ class MediaFactoryImpl : public MediaFactory { } std::unique_ptr CreateMediaEngine( + const Environment& env, PeerConnectionFactoryDependencies& deps) override { - std::unique_ptr fallback_trials; - const FieldTrialsView* trials; - if (deps.trials) { - trials = deps.trials.get(); - } else { - fallback_trials = std::make_unique(); - trials = fallback_trials.get(); - } auto audio_engine = std::make_unique( - deps.task_queue_factory.get(), deps.adm.get(), + &env.task_queue_factory(), deps.adm.get(), std::move(deps.audio_encoder_factory), std::move(deps.audio_decoder_factory), std::move(deps.audio_mixer), std::move(deps.audio_processing), std::move(deps.audio_frame_processor), - *trials); + env.field_trials()); auto video_engine = std::make_unique( std::move(deps.video_encoder_factory), - std::move(deps.video_decoder_factory), *trials); - return std::make_unique(std::move(fallback_trials), - std::move(audio_engine), + std::move(deps.video_decoder_factory), env.field_trials()); + return std::make_unique(std::move(audio_engine), std::move(video_engine)); } }; diff --git a/api/test/create_time_controller.cc b/api/test/create_time_controller.cc index 3378805088..f26d73a515 100644 --- a/api/test/create_time_controller.cc +++ b/api/test/create_time_controller.cc @@ -15,6 +15,7 @@ #include "absl/base/nullability.h" #include "api/enable_media_with_defaults.h" +#include "api/environment/environment.h" #include "api/peer_connection_interface.h" #include "call/call.h" #include "call/rtp_transport_config.h" @@ -74,8 +75,9 @@ void EnableMediaWithDefaultsAndTimeController( } std::unique_ptr CreateMediaEngine( + const Environment& env, PeerConnectionFactoryDependencies& dependencies) override { - return media_factory_->CreateMediaEngine(dependencies); + return media_factory_->CreateMediaEngine(env, dependencies); } private: diff --git a/pc/BUILD.gn b/pc/BUILD.gn index fe128c0527..8c85788164 100644 --- a/pc/BUILD.gn +++ b/pc/BUILD.gn @@ -318,6 +318,7 @@ rtc_source_set("media_factory") { sources = [ "media_factory.h" ] deps = [ "../api:callfactory_api", + "../api/environment", "../call:call_interfaces", "../media:rtc_media_base", ] @@ -2746,6 +2747,7 @@ if (rtc_include_tests && !build_with_chromium) { deps = [ ":media_factory", "../api:libjingle_peerconnection_api", + "../api/environment", "../call:call_interfaces", "../media:rtc_media_tests_utils", "../rtc_base:checks", diff --git a/pc/connection_context.cc b/pc/connection_context.cc index 48ce8996d6..75d95a96d9 100644 --- a/pc/connection_context.cc +++ b/pc/connection_context.cc @@ -14,6 +14,7 @@ #include #include +#include "api/environment/environment.h" #include "api/transport/field_trial_based_config.h" #include "media/base/media_engine.h" #include "media/sctp/sctp_transport_factory.h" @@ -114,7 +115,8 @@ ConnectionContext::ConnectionContext( env_(env), media_engine_( dependencies->media_factory != nullptr - ? dependencies->media_factory->CreateMediaEngine(*dependencies) + ? dependencies->media_factory->CreateMediaEngine(env_, + *dependencies) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" : std::move(dependencies->media_engine)), diff --git a/pc/media_factory.h b/pc/media_factory.h index 323744a3e2..2ca2a1f667 100644 --- a/pc/media_factory.h +++ b/pc/media_factory.h @@ -14,6 +14,7 @@ #include #include "api/call/call_factory_interface.h" +#include "api/environment/environment.h" #include "call/call.h" #include "call/call_config.h" #include "media/base/media_engine.h" @@ -38,6 +39,7 @@ class MediaFactory : public CallFactoryInterface { std::unique_ptr CreateCall(const CallConfig& config) override = 0; virtual std::unique_ptr CreateMediaEngine( + const Environment& env, PeerConnectionFactoryDependencies& dependencies) = 0; }; diff --git a/pc/test/enable_fake_media.cc b/pc/test/enable_fake_media.cc index 5a849553ec..5497c60724 100644 --- a/pc/test/enable_fake_media.cc +++ b/pc/test/enable_fake_media.cc @@ -14,6 +14,7 @@ #include #include "absl/base/nullability.h" +#include "api/environment/environment.h" #include "api/peer_connection_interface.h" #include "call/call.h" #include "call/call_config.h" @@ -40,6 +41,7 @@ void EnableFakeMedia( } std::unique_ptr CreateMediaEngine( + const Environment& /*env*/, PeerConnectionFactoryDependencies& /*dependencies*/) { RTC_CHECK(fake_ != nullptr) << "CreateMediaEngine can be called at most once.";