Allows injection of network controller factory into peer connection factory.
Bug: webrtc:9155 Change-Id: I0a17024042f154297aba20f5d2dc766feb27f3f7 Reviewed-on: https://webrtc-review.googlesource.com/73123 Commit-Queue: Sebastian Jansson <srte@webrtc.org> Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org> Reviewed-by: Stefan Holmer <stefan@webrtc.org> Reviewed-by: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23313}
This commit is contained in:
committed by
Commit Bot
parent
78b0a60223
commit
dfce03af6e
@ -177,6 +177,7 @@ BbrNetworkController::BbrNetworkController(NetworkControllerConfig config)
|
||||
congestion_window_gain_constant_(kProbeBWCongestionWindowGain),
|
||||
rtt_variance_weight_(kBbrRttVariationWeight),
|
||||
recovery_window_(max_congestion_window_) {
|
||||
RTC_LOG(LS_INFO) << "Creating BBR controller";
|
||||
config_ = BbrControllerConfig::ExperimentConfig();
|
||||
if (config.starting_bandwidth.IsFinite())
|
||||
default_bandwidth_ = config.starting_bandwidth;
|
||||
|
||||
@ -53,7 +53,6 @@ rtc_static_library("congestion_controller") {
|
||||
"../../pacing",
|
||||
"../../remote_bitrate_estimator",
|
||||
"../../rtp_rtcp:rtp_rtcp_format",
|
||||
"../bbr",
|
||||
"../goog_cc",
|
||||
]
|
||||
|
||||
|
||||
@ -65,13 +65,16 @@ class SendSideCongestionController
|
||||
: public SendSideCongestionControllerInterface,
|
||||
public RtcpBandwidthObserver {
|
||||
public:
|
||||
SendSideCongestionController(const Clock* clock,
|
||||
rtc::TaskQueue* task_queue,
|
||||
RtcEventLog* event_log,
|
||||
PacedSender* pacer,
|
||||
int start_bitrate_bps,
|
||||
int min_bitrate_bps,
|
||||
int max_bitrate_bps);
|
||||
SendSideCongestionController(
|
||||
const Clock* clock,
|
||||
rtc::TaskQueue* task_queue,
|
||||
RtcEventLog* event_log,
|
||||
PacedSender* pacer,
|
||||
int start_bitrate_bps,
|
||||
int min_bitrate_bps,
|
||||
int max_bitrate_bps,
|
||||
NetworkControllerFactoryInterface* controller_factory);
|
||||
|
||||
~SendSideCongestionController() override;
|
||||
|
||||
void RegisterPacketFeedbackObserver(
|
||||
@ -170,8 +173,8 @@ class SendSideCongestionController
|
||||
// TODO(srte): Move all access to feedback adapter to task queue.
|
||||
TransportFeedbackAdapter transport_feedback_adapter_;
|
||||
|
||||
const std::unique_ptr<NetworkControllerFactoryInterface>
|
||||
controller_factory_with_feedback_ RTC_GUARDED_BY(task_queue_);
|
||||
NetworkControllerFactoryInterface* const controller_factory_with_feedback_
|
||||
RTC_GUARDED_BY(task_queue_);
|
||||
const std::unique_ptr<NetworkControllerFactoryInterface>
|
||||
controller_factory_fallback_ RTC_GUARDED_BY(task_queue_);
|
||||
|
||||
|
||||
@ -15,12 +15,10 @@
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include "api/transport/network_types.h"
|
||||
#include "modules/congestion_controller/bbr/bbr_factory.h"
|
||||
#include "modules/congestion_controller/goog_cc/include/goog_cc_factory.h"
|
||||
#include "modules/remote_bitrate_estimator/include/bwe_defines.h"
|
||||
#include "rtc_base/bind.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/experiments/congestion_controller_experiment.h"
|
||||
#include "rtc_base/format_macros.h"
|
||||
#include "rtc_base/logging.h"
|
||||
#include "rtc_base/numerics/safe_conversions.h"
|
||||
@ -50,16 +48,6 @@ bool IsPacerPushbackExperimentEnabled() {
|
||||
webrtc::runtime_enabled_features::kDualStreamModeFeatureName));
|
||||
}
|
||||
|
||||
std::unique_ptr<NetworkControllerFactoryInterface> MaybeCreateBbrFactory() {
|
||||
if (CongestionControllerExperiment::BbrControllerEnabled()) {
|
||||
RTC_LOG(LS_INFO) << "Creating BBR factory";
|
||||
return rtc::MakeUnique<BbrNetworkControllerFactory>();
|
||||
} else {
|
||||
RTC_LOG(LS_INFO) << "Not creating BBR factory";
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void SortPacketFeedbackVector(std::vector<webrtc::PacketFeedback>* input) {
|
||||
std::sort(input->begin(), input->end(), PacketFeedbackComparator());
|
||||
}
|
||||
@ -310,11 +298,12 @@ SendSideCongestionController::SendSideCongestionController(
|
||||
PacedSender* pacer,
|
||||
int start_bitrate_bps,
|
||||
int min_bitrate_bps,
|
||||
int max_bitrate_bps)
|
||||
int max_bitrate_bps,
|
||||
NetworkControllerFactoryInterface* controller_factory)
|
||||
: clock_(clock),
|
||||
pacer_(pacer),
|
||||
transport_feedback_adapter_(clock_),
|
||||
controller_factory_with_feedback_(MaybeCreateBbrFactory()),
|
||||
controller_factory_with_feedback_(controller_factory),
|
||||
controller_factory_fallback_(
|
||||
rtc::MakeUnique<GoogCcNetworkControllerFactory>(event_log)),
|
||||
pacer_controller_(MakeUnique<PacerController>(pacer_)),
|
||||
|
||||
@ -77,7 +77,7 @@ class SendSideCongestionControllerTest : public ::testing::Test {
|
||||
task_queue_ = rtc::MakeUnique<rtc::TaskQueue>("SSCC Test");
|
||||
controller_.reset(new SendSideCongestionControllerForTest(
|
||||
&clock_, task_queue_.get(), &event_log_, pacer_.get(),
|
||||
kInitialBitrateBps, 0, 5 * kInitialBitrateBps));
|
||||
kInitialBitrateBps, 0, 5 * kInitialBitrateBps, nullptr));
|
||||
controller_->DisablePeriodicTasks();
|
||||
controller_->RegisterNetworkObserver(&observer_);
|
||||
controller_->SignalNetworkState(NetworkState::kNetworkUp);
|
||||
@ -97,7 +97,7 @@ class SendSideCongestionControllerTest : public ::testing::Test {
|
||||
task_queue_ = rtc::MakeUnique<rtc::TaskQueue>("SSCC Test");
|
||||
controller_.reset(new SendSideCongestionControllerForTest(
|
||||
&clock_, task_queue_.get(), &event_log_, pacer_.get(),
|
||||
kInitialBitrateBps, 0, 5 * kInitialBitrateBps));
|
||||
kInitialBitrateBps, 0, 5 * kInitialBitrateBps, nullptr));
|
||||
controller_->DisablePeriodicTasks();
|
||||
controller_->RegisterNetworkObserver(&target_bitrate_observer_);
|
||||
controller_->SignalNetworkState(NetworkState::kNetworkUp);
|
||||
|
||||
Reference in New Issue
Block a user