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:
Sebastian Jansson
2018-05-18 18:05:10 +02:00
committed by Commit Bot
parent 78b0a60223
commit dfce03af6e
21 changed files with 105 additions and 50 deletions

View File

@ -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;

View File

@ -53,7 +53,6 @@ rtc_static_library("congestion_controller") {
"../../pacing",
"../../remote_bitrate_estimator",
"../../rtp_rtcp:rtp_rtcp_format",
"../bbr",
"../goog_cc",
]

View File

@ -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_);

View File

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

View File

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