Removes redundant starting rate.

Sine a starting rate field was added to the constraints struct. Having
it in the initial config separately is reduntant. To simplify the code,
the extra field is removed. This is a follow up on:
https://webrtc-review.googlesource.com/c/src/+/92624

Bug: webrtc:9586
Change-Id: I9b01b16b2fc4b8479e83b7e998308be2295e0325
Reviewed-on: https://webrtc-review.googlesource.com/96801
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24514}
This commit is contained in:
Sebastian Jansson
2018-08-30 15:56:48 +02:00
committed by Commit Bot
parent 836a7a2e4d
commit ed1f75ab6d
9 changed files with 17 additions and 21 deletions

View File

@ -29,15 +29,13 @@ class TargetTransferRateObserver {
// optional to use for a network controller implementation.
struct NetworkControllerConfig {
// The initial constraints to start with, these can be changed at any later
// time by calls to OnTargetRateConstraints.
// time by calls to OnTargetRateConstraints. Note that the starting rate
// has to be set initially to provide a starting state for the network
// controller, even though the field is marked as optional.
TargetRateConstraints constraints;
// Initial stream specific configuration, these are changed at any later time
// by calls to OnStreamsConfig.
StreamsConfig stream_based_config;
// The initial bandwidth estimate to base target rate on. This should be used
// as the basis for initial OnTargetTransferRate and OnPacerConfig callbacks.
// Note that starting rate is only provided on construction.
DataRate starting_bandwidth = DataRate::Infinity();
};
// NetworkControllerInterface is implemented by network controllers. A network

View File

@ -45,6 +45,8 @@ struct TargetRateConstraints {
Timestamp at_time = Timestamp::Infinity();
absl::optional<DataRate> min_data_rate;
absl::optional<DataRate> max_data_rate;
// The initial bandwidth estimate to base target rate on. This should be used
// as the basis for initial OnTargetTransferRate and OnPacerConfig callbacks.
absl::optional<DataRate> starting_rate;
};

View File

@ -217,8 +217,8 @@ BbrNetworkController::BbrNetworkController(NetworkControllerConfig config)
app_limited_since_last_probe_rtt_(false),
min_rtt_since_last_probe_rtt_(TimeDelta::PlusInfinity()) {
RTC_LOG(LS_INFO) << "Creating BBR controller";
if (config.starting_bandwidth.IsFinite())
default_bandwidth_ = config.starting_bandwidth;
if (config.constraints.starting_rate)
default_bandwidth_ = *config.constraints.starting_rate;
constraints_ = config.constraints;
Reset();
}

View File

@ -53,7 +53,7 @@ NetworkControllerConfig InitialConfig(
config.constraints.at_time = kDefaultStartTime;
config.constraints.min_data_rate = DataRate::kbps(min_data_rate_kbps);
config.constraints.max_data_rate = DataRate::kbps(max_data_rate_kbps);
config.starting_bandwidth = DataRate::kbps(starting_bandwidth_kbps);
config.constraints.starting_rate = DataRate::kbps(starting_bandwidth_kbps);
return config;
}

View File

@ -128,7 +128,7 @@ GoogCcNetworkController::GoogCcNetworkController(RtcEventLog* event_log,
acknowledged_bitrate_estimator_(
absl::make_unique<AcknowledgedBitrateEstimator>()),
initial_config_(config),
last_bandwidth_(config.starting_bandwidth),
last_bandwidth_(*config.constraints.starting_rate),
pacing_factor_(config.stream_based_config.pacing_factor.value_or(
kDefaultPaceMultiplier)),
min_pacing_rate_(config.stream_based_config.min_pacing_rate.value_or(
@ -186,8 +186,9 @@ NetworkControlUpdate GoogCcNetworkController::OnProcessInterval(
ProcessInterval msg) {
NetworkControlUpdate update;
if (initial_config_) {
update.probe_cluster_configs = UpdateBitrateConstraints(
initial_config_->constraints, initial_config_->starting_bandwidth);
update.probe_cluster_configs =
UpdateBitrateConstraints(initial_config_->constraints,
initial_config_->constraints.starting_rate);
update.pacer_config = GetPacingRates(msg.at_time);
probe_controller_->EnablePeriodicAlrProbing(

View File

@ -64,7 +64,7 @@ class GoogCcNetworkControllerTest : public ::testing::Test {
config.constraints.at_time = current_time_;
config.constraints.min_data_rate = DataRate::kbps(min_data_rate_kbps);
config.constraints.max_data_rate = DataRate::kbps(max_data_rate_kbps);
config.starting_bandwidth = DataRate::kbps(starting_bandwidth_kbps);
config.constraints.starting_rate = DataRate::kbps(starting_bandwidth_kbps);
return config;
}
ProcessInterval DefaultInterval() {

View File

@ -74,8 +74,8 @@ PccNetworkController::PccNetworkController(NetworkControllerConfig config)
monitor_intervals_duration_(TimeDelta::Zero()),
complete_feedback_monitor_interval_number_(0),
random_generator_(kRandomSeed) {
if (config.starting_bandwidth.IsFinite()) {
default_bandwidth_ = config.starting_bandwidth;
if (config.constraints.starting_rate) {
default_bandwidth_ = *config.constraints.starting_rate;
bandwidth_estimate_ = default_bandwidth_;
}
}

View File

@ -50,7 +50,7 @@ NetworkControllerConfig InitialConfig(
config.constraints.at_time = kDefaultStartTime;
config.constraints.min_data_rate = DataRate::kbps(min_data_rate_kbps);
config.constraints.max_data_rate = DataRate::kbps(max_data_rate_kbps);
config.starting_bandwidth = DataRate::kbps(starting_bandwidth_kbps);
config.constraints.starting_rate = DataRate::kbps(starting_bandwidth_kbps);
return config;
}

View File

@ -372,7 +372,6 @@ SendSideCongestionController::SendSideCongestionController(
initial_config_.constraints = ConvertConstraints(
min_bitrate_bps, max_bitrate_bps, start_bitrate_bps, clock_);
RTC_DCHECK(start_bitrate_bps > 0);
initial_config_.starting_bandwidth = DataRate::bps(start_bitrate_bps);
}
// There is no point in having a network controller for a network that is not
@ -447,15 +446,13 @@ void SendSideCongestionController::SetBweBitrates(int min_bitrate_bps,
int max_bitrate_bps) {
TargetRateConstraints constraints = ConvertConstraints(
min_bitrate_bps, max_bitrate_bps, start_bitrate_bps, clock_);
task_queue_->PostTask([this, constraints, start_bitrate_bps]() {
task_queue_->PostTask([this, constraints]() {
RTC_DCHECK_RUN_ON(task_queue_);
if (controller_) {
control_handler_->PostUpdates(
controller_->OnTargetRateConstraints(constraints));
} else {
initial_config_.constraints = constraints;
if (start_bitrate_bps > 0)
initial_config_.starting_bandwidth = DataRate::bps(start_bitrate_bps);
}
});
}
@ -493,8 +490,6 @@ void SendSideCongestionController::OnNetworkRouteChanged(
if (controller_) {
control_handler_->PostUpdates(controller_->OnNetworkRouteChange(msg));
} else {
if (msg.constraints.starting_rate)
initial_config_.starting_bandwidth = *msg.constraints.starting_rate;
initial_config_.constraints = msg.constraints;
}
pacer_controller_->OnNetworkRouteChange(msg);