Removes trial to enable BBR congestion controller.

The BBR controller can still be injected, but the trials
will no longer work. This reduces the binary size.

Bug: webrtc:8415
Change-Id: I2c32c414d08ef0cc16bfd72651535a755cde9916
Reviewed-on: https://webrtc-review.googlesource.com/c/114120
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26077}
This commit is contained in:
Sebastian Jansson
2018-12-20 09:46:29 +01:00
committed by Commit Bot
parent e2e000059d
commit 7f57788ab7
11 changed files with 7 additions and 130 deletions

View File

@ -23,11 +23,6 @@ rtc_source_set("control_handler") {
"control_handler.h",
]
if (!build_with_chromium && is_clang) {
# Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
}
deps = [
"../:congestion_controller",
"../../../api/transport:network_control",
@ -38,7 +33,6 @@ rtc_source_set("control_handler") {
"../../../rtc_base:rate_limiter",
"../../../rtc_base:safe_minmax",
"../../../rtc_base:sequenced_task_checker",
"../../../rtc_base/experiments:congestion_controller_experiment",
"../../../system_wrappers",
"../../../system_wrappers:field_trial",
"../../pacing",

View File

@ -208,12 +208,10 @@ rtc_static_library("peerconnection") {
"../logging:rtc_event_log_impl_output",
"../media:rtc_data",
"../media:rtc_media_base",
"../modules/congestion_controller/bbr",
"../p2p:rtc_p2p",
"../rtc_base:checks",
"../rtc_base:rtc_base",
"../rtc_base:rtc_base_approved",
"../rtc_base/experiments:congestion_controller_experiment",
"../rtc_base/system:rtc_export",
"../rtc_base/third_party/base64",
"../rtc_base/third_party/sigslot",

View File

@ -37,7 +37,6 @@
#include "media/engine/webrtcvideodecoderfactory.h" // nogncheck
#include "media/engine/webrtcvideoencoderfactory.h" // nogncheck
#include "modules/audio_device/include/audio_device.h" // nogncheck
#include "modules/congestion_controller/bbr/bbr_factory.h"
#include "p2p/base/basicpacketsocketfactory.h"
#include "p2p/client/basicportallocator.h"
#include "pc/audiotrack.h"
@ -46,7 +45,6 @@
#include "pc/peerconnection.h"
#include "pc/videocapturertracksource.h"
#include "pc/videotrack.h"
#include "rtc_base/experiments/congestion_controller_experiment.h"
#include "system_wrappers/include/field_trial.h"
namespace webrtc {
@ -147,9 +145,7 @@ PeerConnectionFactory::PeerConnectionFactory(
event_log_factory_(std::move(event_log_factory)),
fec_controller_factory_(std::move(fec_controller_factory)),
injected_network_controller_factory_(
std::move(network_controller_factory)),
bbr_network_controller_factory_(
absl::make_unique<BbrNetworkControllerFactory>()) {
std::move(network_controller_factory)) {
if (!network_thread_) {
owned_network_thread_ = rtc::Thread::CreateWithSocketServer();
owned_network_thread_->SetName("pc_network_thread", nullptr);
@ -478,11 +474,7 @@ std::unique_ptr<Call> PeerConnectionFactory::CreateCall_w(
call_config.fec_controller_factory = fec_controller_factory_.get();
if (CongestionControllerExperiment::BbrControllerEnabled()) {
RTC_LOG(LS_INFO) << "Using BBR network controller factory";
call_config.network_controller_factory =
bbr_network_controller_factory_.get();
} else if (CongestionControllerExperiment::InjectedControllerEnabled()) {
if (field_trial::IsEnabled("WebRTC-Bwe-InjectedCongestionController")) {
RTC_LOG(LS_INFO) << "Using injected network controller factory";
call_config.network_controller_factory =
injected_network_controller_factory_.get();

View File

@ -151,8 +151,6 @@ class PeerConnectionFactory : public PeerConnectionFactoryInterface {
std::unique_ptr<FecControllerFactoryInterface> fec_controller_factory_;
std::unique_ptr<NetworkControllerFactoryInterface>
injected_network_controller_factory_;
std::unique_ptr<NetworkControllerFactoryInterface>
bbr_network_controller_factory_;
std::unique_ptr<MediaTransportFactory> media_transport_factory_;
};

View File

@ -37,18 +37,6 @@ rtc_static_library("field_trial_parser") {
]
}
rtc_static_library("congestion_controller_experiment") {
sources = [
"congestion_controller_experiment.cc",
"congestion_controller_experiment.h",
]
deps = [
"../:rtc_base_approved",
"../../system_wrappers:field_trial",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_static_library("quality_scaling_experiment") {
sources = [
"quality_scaling_experiment.cc",
@ -114,7 +102,6 @@ if (rtc_include_tests) {
testonly = true
sources = [
"congestion_controller_experiment_unittest.cc",
"cpu_speed_experiment_unittest.cc",
"field_trial_parser_unittest.cc",
"field_trial_units_unittest.cc",
@ -123,7 +110,6 @@ if (rtc_include_tests) {
"rtt_mult_experiment_unittest.cc",
]
deps = [
":congestion_controller_experiment",
":cpu_speed_experiment",
":field_trial_parser",
":normalize_simulcast_size_experiment",

View File

@ -1,33 +0,0 @@
/*
* Copyright 2018 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "rtc_base/experiments/congestion_controller_experiment.h"
#include <string>
#include "system_wrappers/include/field_trial.h"
namespace webrtc {
namespace {
const char kControllerExperiment[] = "WebRTC-BweCongestionController";
} // namespace
bool CongestionControllerExperiment::BbrControllerEnabled() {
std::string trial_string =
webrtc::field_trial::FindFullName(kControllerExperiment);
return trial_string.find("Enabled,BBR") == 0;
}
bool CongestionControllerExperiment::InjectedControllerEnabled() {
std::string trial_string =
webrtc::field_trial::FindFullName(kControllerExperiment);
return trial_string.find("Enabled,Injected") == 0;
}
} // namespace webrtc

View File

@ -1,22 +0,0 @@
/*
* Copyright 2018 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef RTC_BASE_EXPERIMENTS_CONGESTION_CONTROLLER_EXPERIMENT_H_
#define RTC_BASE_EXPERIMENTS_CONGESTION_CONTROLLER_EXPERIMENT_H_
namespace webrtc {
class CongestionControllerExperiment {
public:
static bool BbrControllerEnabled();
static bool InjectedControllerEnabled();
};
} // namespace webrtc
#endif // RTC_BASE_EXPERIMENTS_CONGESTION_CONTROLLER_EXPERIMENT_H_

View File

@ -1,27 +0,0 @@
/*
* Copyright 2018 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "rtc_base/experiments/congestion_controller_experiment.h"
#include "test/field_trial.h"
#include "test/gtest.h"
namespace webrtc {
TEST(CongestionControllerExperimentTest, BbrDisabledByDefault) {
webrtc::test::ScopedFieldTrials field_trials("");
EXPECT_FALSE(CongestionControllerExperiment::BbrControllerEnabled());
}
TEST(CongestionControllerExperimentTest, BbrEnabledByFieldTrial) {
webrtc::test::ScopedFieldTrials field_trials(
"WebRTC-BweCongestionController/Enabled,BBR/");
EXPECT_TRUE(CongestionControllerExperiment::BbrControllerEnabled());
}
} // namespace webrtc

View File

@ -710,7 +710,6 @@ rtc_source_set("test_common") {
"../modules/audio_device:mock_audio_device",
"../modules/audio_mixer:audio_mixer_impl",
"../modules/audio_processing",
"../modules/congestion_controller/bbr",
"../modules/rtp_rtcp",
"../modules/rtp_rtcp:mock_rtp_rtcp",
"../modules/rtp_rtcp:rtp_rtcp_format",
@ -723,7 +722,6 @@ rtc_source_set("test_common") {
"../modules/video_coding:webrtc_vp9",
"../rtc_base:checks",
"../rtc_base:rtc_base_approved",
"../rtc_base/experiments:congestion_controller_experiment",
"../system_wrappers",
"../system_wrappers:field_trial",
"../video",

View File

@ -21,10 +21,8 @@
#include "call/rtp_transport_controller_send.h"
#include "call/simulated_network.h"
#include "modules/audio_mixer/audio_mixer_impl.h"
#include "modules/congestion_controller/bbr/bbr_factory.h"
#include "rtc_base/checks.h"
#include "rtc_base/event.h"
#include "rtc_base/experiments/congestion_controller_experiment.h"
#include "test/fake_encoder.h"
#include "test/testsupport/fileutils.h"
@ -39,7 +37,6 @@ CallTest::CallTest()
audio_send_config_(/*send_transport=*/nullptr,
/*media_transport=*/nullptr),
audio_send_stream_(nullptr),
bbr_network_controller_factory_(new BbrNetworkControllerFactory()),
fake_encoder_factory_([this]() {
std::unique_ptr<FakeEncoder> fake_encoder;
if (video_encoder_configs_[0].codec_type == kVideoCodecVP8) {
@ -200,14 +197,12 @@ void CallTest::CreateSenderCall() {
void CallTest::CreateSenderCall(const Call::Config& config) {
NetworkControllerFactoryInterface* injected_factory =
config.network_controller_factory;
if (!injected_factory) {
if (CongestionControllerExperiment::BbrControllerEnabled()) {
RTC_LOG(LS_INFO) << "Using BBR network controller factory";
injected_factory = bbr_network_controller_factory_.get();
if (injected_factory) {
RTC_LOG(LS_INFO) << "Using injected network controller factory";
} else {
RTC_LOG(LS_INFO) << "Using default network controller factory";
}
}
std::unique_ptr<RtpTransportControllerSend> controller_send =
absl::make_unique<RtpTransportControllerSend>(
Clock::GetRealTimeClock(), config.event_log, injected_factory,

View File

@ -198,8 +198,6 @@ class CallTest : public ::testing::Test {
DegradationPreference::MAINTAIN_FRAMERATE;
std::unique_ptr<FecControllerFactoryInterface> fec_controller_factory_;
std::unique_ptr<NetworkControllerFactoryInterface>
bbr_network_controller_factory_;
test::FunctionVideoEncoderFactory fake_encoder_factory_;
int fake_encoder_max_bitrate_ = -1;