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:
committed by
Commit Bot
parent
1230fb787f
commit
632d57d3d0
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user