Ignore low probe results when using NetworkStateEstimator under field trial

The feature is added as part a new field trial WebRTC-Bwe-IgnoreProbesLowerThanNetworkStateEstimate

Bug: webrtc:10498
Change-Id: I72b3c73256a35e0583f4d595edef45848f8bbb22
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158260
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29624}
This commit is contained in:
Per Kjellander
2019-10-28 07:48:50 +01:00
committed by Commit Bot
parent 1230fb787f
commit 632d57d3d0
3 changed files with 12 additions and 3 deletions

View File

@ -62,9 +62,9 @@ class DelayBasedBwe {
void SetMinBitrate(DataRate min_bitrate);
TimeDelta GetExpectedBwePeriod() const;
void SetAlrLimitedBackoffExperiment(bool enabled);
DataRate TriggerOveruse(Timestamp at_time,
absl::optional<DataRate> link_capacity);
DataRate last_estimate() const { return prev_bitrate_; }
private:
friend class GoogCcStatePrinter;

View File

@ -72,6 +72,9 @@ GoogCcNetworkController::GoogCcNetworkController(NetworkControllerConfig config,
"WebRTC-Bwe-CongestionWindowDownlinkDelay")),
use_min_allocatable_as_lower_bound_(
IsNotDisabled(key_value_config_, "WebRTC-Bwe-MinAllocAsLowerBound")),
ignore_probes_lower_than_network_estimate_(
IsEnabled(key_value_config_,
"WebRTC-Bwe-IgnoreProbesLowerThanNetworkStateEstimate")),
rate_control_settings_(
RateControlSettings::ParseFromKeyValueConfig(key_value_config_)),
probe_controller_(
@ -489,8 +492,6 @@ NetworkControlUpdate GoogCcNetworkController::OnTransportPacketsFeedback(
}
}
absl::optional<DataRate> probe_bitrate =
probe_bitrate_estimator_->FetchAndResetLastEstimatedBitrate();
if (network_estimator_) {
network_estimator_->OnTransportPacketsFeedback(report);
auto prev_estimate = estimate_;
@ -503,6 +504,13 @@ NetworkControlUpdate GoogCcNetworkController::OnTransportPacketsFeedback(
estimate_->link_capacity_lower, estimate_->link_capacity_upper));
}
}
absl::optional<DataRate> probe_bitrate =
probe_bitrate_estimator_->FetchAndResetLastEstimatedBitrate();
if (ignore_probes_lower_than_network_estimate_ && probe_bitrate &&
estimate_ && *probe_bitrate < delay_based_bwe_->last_estimate() &&
*probe_bitrate < estimate_->link_capacity_lower) {
probe_bitrate.reset();
}
NetworkControlUpdate update;
bool recovered_from_overuse = false;

View File

@ -87,6 +87,7 @@ class GoogCcNetworkController : public NetworkControllerInterface {
FieldTrialFlag safe_reset_acknowledged_rate_;
const bool use_downlink_delay_for_congestion_window_;
const bool use_min_allocatable_as_lower_bound_;
const bool ignore_probes_lower_than_network_estimate_;
const RateControlSettings rate_control_settings_;
const std::unique_ptr<ProbeController> probe_controller_;