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}
This commit is contained in:
Danil Chapovalov 2023-11-27 17:56:49 +01:00 committed by WebRTC LUCI CQ
parent 3c5850148e
commit 680f103baa
7 changed files with 20 additions and 15 deletions

View file

@ -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" ]
}

View file

@ -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 @@ class MediaFactoryImpl : public MediaFactory {
}
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));
}
};

View file

@ -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<cricket::MediaEngineInterface> CreateMediaEngine(
const Environment& env,
PeerConnectionFactoryDependencies& dependencies) override {
return media_factory_->CreateMediaEngine(dependencies);
return media_factory_->CreateMediaEngine(env, dependencies);
}
private:

View file

@ -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",

View file

@ -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 @@ 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)),

View file

@ -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 @@ class MediaFactory : public CallFactoryInterface {
std::unique_ptr<Call> CreateCall(const CallConfig& config) override = 0;
virtual std::unique_ptr<cricket::MediaEngineInterface> CreateMediaEngine(
const Environment& env,
PeerConnectionFactoryDependencies& dependencies) = 0;
};

View file

@ -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 @@ void EnableFakeMedia(
}
std::unique_ptr<MediaEngineInterface> CreateMediaEngine(
const Environment& /*env*/,
PeerConnectionFactoryDependencies& /*dependencies*/) {
RTC_CHECK(fake_ != nullptr)
<< "CreateMediaEngine can be called at most once.";