Use Environemnt in MedaFactory::CreateMediaEngine
to propagate field trials and task queue factory
Bug: webrtc:15656
Change-Id: I2d19e169d2ff1cc871899a0e96b1733333fdc604
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/328881
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41257}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index c187a7d..dfbf671 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -47,6 +47,7 @@
"../media:rtc_audio_video",
"../pc:media_factory",
"../rtc_base/system:rtc_export",
+ "environment",
]
}
@@ -1433,6 +1434,7 @@
"../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 566cc15..a05b1b3 100644
--- a/api/enable_media.cc
+++ b/api/enable_media.cc
@@ -13,6 +13,7 @@
#include <memory>
#include <utility>
+#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 @@
}
std::unique_ptr<MediaEngineInterface> CreateMediaEngine(
+ const Environment& env,
PeerConnectionFactoryDependencies& deps) override {
- std::unique_ptr<FieldTrialsView> fallback_trials;
- const FieldTrialsView* trials;
- if (deps.trials) {
- trials = deps.trials.get();
- } else {
- fallback_trials = std::make_unique<FieldTrialBasedConfig>();
- trials = fallback_trials.get();
- }
auto audio_engine = std::make_unique<WebRtcVoiceEngine>(
- 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<WebRtcVideoEngine>(
std::move(deps.video_encoder_factory),
- std::move(deps.video_decoder_factory), *trials);
- return std::make_unique<CompositeMediaEngine>(std::move(fallback_trials),
- std::move(audio_engine),
+ std::move(deps.video_decoder_factory), env.field_trials());
+ return std::make_unique<CompositeMediaEngine>(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 3378805..f26d73a 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 @@
}
std::unique_ptr<cricket::MediaEngineInterface> 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 fe128c0..8c85788 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -318,6 +318,7 @@
sources = [ "media_factory.h" ]
deps = [
"../api:callfactory_api",
+ "../api/environment",
"../call:call_interfaces",
"../media:rtc_media_base",
]
@@ -2746,6 +2747,7 @@
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 48ce899..75d95a9 100644
--- a/pc/connection_context.cc
+++ b/pc/connection_context.cc
@@ -14,6 +14,7 @@
#include <utility>
#include <vector>
+#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 @@
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 323744a..2ca2a1f 100644
--- a/pc/media_factory.h
+++ b/pc/media_factory.h
@@ -14,6 +14,7 @@
#include <memory>
#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 @@
std::unique_ptr<Call> CreateCall(const CallConfig& config) override = 0;
virtual std::unique_ptr<cricket::MediaEngineInterface> CreateMediaEngine(
+ const Environment& env,
PeerConnectionFactoryDependencies& dependencies) = 0;
};
diff --git a/pc/test/enable_fake_media.cc b/pc/test/enable_fake_media.cc
index 5a84955..5497c60 100644
--- a/pc/test/enable_fake_media.cc
+++ b/pc/test/enable_fake_media.cc
@@ -14,6 +14,7 @@
#include <utility>
#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 @@
}
std::unique_ptr<MediaEngineInterface> CreateMediaEngine(
+ const Environment& /*env*/,
PeerConnectionFactoryDependencies& /*dependencies*/) {
RTC_CHECK(fake_ != nullptr)
<< "CreateMediaEngine can be called at most once.";