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:
committed by
Commit Bot
parent
836a7a2e4d
commit
ed1f75ab6d
@ -29,15 +29,13 @@ class TargetTransferRateObserver {
|
|||||||
// optional to use for a network controller implementation.
|
// optional to use for a network controller implementation.
|
||||||
struct NetworkControllerConfig {
|
struct NetworkControllerConfig {
|
||||||
// The initial constraints to start with, these can be changed at any later
|
// 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;
|
TargetRateConstraints constraints;
|
||||||
// Initial stream specific configuration, these are changed at any later time
|
// Initial stream specific configuration, these are changed at any later time
|
||||||
// by calls to OnStreamsConfig.
|
// by calls to OnStreamsConfig.
|
||||||
StreamsConfig stream_based_config;
|
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
|
// NetworkControllerInterface is implemented by network controllers. A network
|
||||||
|
|||||||
@ -45,6 +45,8 @@ struct TargetRateConstraints {
|
|||||||
Timestamp at_time = Timestamp::Infinity();
|
Timestamp at_time = Timestamp::Infinity();
|
||||||
absl::optional<DataRate> min_data_rate;
|
absl::optional<DataRate> min_data_rate;
|
||||||
absl::optional<DataRate> max_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;
|
absl::optional<DataRate> starting_rate;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -217,8 +217,8 @@ BbrNetworkController::BbrNetworkController(NetworkControllerConfig config)
|
|||||||
app_limited_since_last_probe_rtt_(false),
|
app_limited_since_last_probe_rtt_(false),
|
||||||
min_rtt_since_last_probe_rtt_(TimeDelta::PlusInfinity()) {
|
min_rtt_since_last_probe_rtt_(TimeDelta::PlusInfinity()) {
|
||||||
RTC_LOG(LS_INFO) << "Creating BBR controller";
|
RTC_LOG(LS_INFO) << "Creating BBR controller";
|
||||||
if (config.starting_bandwidth.IsFinite())
|
if (config.constraints.starting_rate)
|
||||||
default_bandwidth_ = config.starting_bandwidth;
|
default_bandwidth_ = *config.constraints.starting_rate;
|
||||||
constraints_ = config.constraints;
|
constraints_ = config.constraints;
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,7 +53,7 @@ NetworkControllerConfig InitialConfig(
|
|||||||
config.constraints.at_time = kDefaultStartTime;
|
config.constraints.at_time = kDefaultStartTime;
|
||||||
config.constraints.min_data_rate = DataRate::kbps(min_data_rate_kbps);
|
config.constraints.min_data_rate = DataRate::kbps(min_data_rate_kbps);
|
||||||
config.constraints.max_data_rate = DataRate::kbps(max_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;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -128,7 +128,7 @@ GoogCcNetworkController::GoogCcNetworkController(RtcEventLog* event_log,
|
|||||||
acknowledged_bitrate_estimator_(
|
acknowledged_bitrate_estimator_(
|
||||||
absl::make_unique<AcknowledgedBitrateEstimator>()),
|
absl::make_unique<AcknowledgedBitrateEstimator>()),
|
||||||
initial_config_(config),
|
initial_config_(config),
|
||||||
last_bandwidth_(config.starting_bandwidth),
|
last_bandwidth_(*config.constraints.starting_rate),
|
||||||
pacing_factor_(config.stream_based_config.pacing_factor.value_or(
|
pacing_factor_(config.stream_based_config.pacing_factor.value_or(
|
||||||
kDefaultPaceMultiplier)),
|
kDefaultPaceMultiplier)),
|
||||||
min_pacing_rate_(config.stream_based_config.min_pacing_rate.value_or(
|
min_pacing_rate_(config.stream_based_config.min_pacing_rate.value_or(
|
||||||
@ -186,8 +186,9 @@ NetworkControlUpdate GoogCcNetworkController::OnProcessInterval(
|
|||||||
ProcessInterval msg) {
|
ProcessInterval msg) {
|
||||||
NetworkControlUpdate update;
|
NetworkControlUpdate update;
|
||||||
if (initial_config_) {
|
if (initial_config_) {
|
||||||
update.probe_cluster_configs = UpdateBitrateConstraints(
|
update.probe_cluster_configs =
|
||||||
initial_config_->constraints, initial_config_->starting_bandwidth);
|
UpdateBitrateConstraints(initial_config_->constraints,
|
||||||
|
initial_config_->constraints.starting_rate);
|
||||||
update.pacer_config = GetPacingRates(msg.at_time);
|
update.pacer_config = GetPacingRates(msg.at_time);
|
||||||
|
|
||||||
probe_controller_->EnablePeriodicAlrProbing(
|
probe_controller_->EnablePeriodicAlrProbing(
|
||||||
|
|||||||
@ -64,7 +64,7 @@ class GoogCcNetworkControllerTest : public ::testing::Test {
|
|||||||
config.constraints.at_time = current_time_;
|
config.constraints.at_time = current_time_;
|
||||||
config.constraints.min_data_rate = DataRate::kbps(min_data_rate_kbps);
|
config.constraints.min_data_rate = DataRate::kbps(min_data_rate_kbps);
|
||||||
config.constraints.max_data_rate = DataRate::kbps(max_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;
|
return config;
|
||||||
}
|
}
|
||||||
ProcessInterval DefaultInterval() {
|
ProcessInterval DefaultInterval() {
|
||||||
|
|||||||
@ -74,8 +74,8 @@ PccNetworkController::PccNetworkController(NetworkControllerConfig config)
|
|||||||
monitor_intervals_duration_(TimeDelta::Zero()),
|
monitor_intervals_duration_(TimeDelta::Zero()),
|
||||||
complete_feedback_monitor_interval_number_(0),
|
complete_feedback_monitor_interval_number_(0),
|
||||||
random_generator_(kRandomSeed) {
|
random_generator_(kRandomSeed) {
|
||||||
if (config.starting_bandwidth.IsFinite()) {
|
if (config.constraints.starting_rate) {
|
||||||
default_bandwidth_ = config.starting_bandwidth;
|
default_bandwidth_ = *config.constraints.starting_rate;
|
||||||
bandwidth_estimate_ = default_bandwidth_;
|
bandwidth_estimate_ = default_bandwidth_;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,7 +50,7 @@ NetworkControllerConfig InitialConfig(
|
|||||||
config.constraints.at_time = kDefaultStartTime;
|
config.constraints.at_time = kDefaultStartTime;
|
||||||
config.constraints.min_data_rate = DataRate::kbps(min_data_rate_kbps);
|
config.constraints.min_data_rate = DataRate::kbps(min_data_rate_kbps);
|
||||||
config.constraints.max_data_rate = DataRate::kbps(max_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;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -372,7 +372,6 @@ SendSideCongestionController::SendSideCongestionController(
|
|||||||
initial_config_.constraints = ConvertConstraints(
|
initial_config_.constraints = ConvertConstraints(
|
||||||
min_bitrate_bps, max_bitrate_bps, start_bitrate_bps, clock_);
|
min_bitrate_bps, max_bitrate_bps, start_bitrate_bps, clock_);
|
||||||
RTC_DCHECK(start_bitrate_bps > 0);
|
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
|
// 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) {
|
int max_bitrate_bps) {
|
||||||
TargetRateConstraints constraints = ConvertConstraints(
|
TargetRateConstraints constraints = ConvertConstraints(
|
||||||
min_bitrate_bps, max_bitrate_bps, start_bitrate_bps, clock_);
|
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_);
|
RTC_DCHECK_RUN_ON(task_queue_);
|
||||||
if (controller_) {
|
if (controller_) {
|
||||||
control_handler_->PostUpdates(
|
control_handler_->PostUpdates(
|
||||||
controller_->OnTargetRateConstraints(constraints));
|
controller_->OnTargetRateConstraints(constraints));
|
||||||
} else {
|
} else {
|
||||||
initial_config_.constraints = constraints;
|
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_) {
|
if (controller_) {
|
||||||
control_handler_->PostUpdates(controller_->OnNetworkRouteChange(msg));
|
control_handler_->PostUpdates(controller_->OnNetworkRouteChange(msg));
|
||||||
} else {
|
} else {
|
||||||
if (msg.constraints.starting_rate)
|
|
||||||
initial_config_.starting_bandwidth = *msg.constraints.starting_rate;
|
|
||||||
initial_config_.constraints = msg.constraints;
|
initial_config_.constraints = msg.constraints;
|
||||||
}
|
}
|
||||||
pacer_controller_->OnNetworkRouteChange(msg);
|
pacer_controller_->OnNetworkRouteChange(msg);
|
||||||
|
|||||||
Reference in New Issue
Block a user