Use min allocatable bitrate as lower bound for target bitrate.

Bug: None
Change-Id: Iee060064bb35bc916dcf2744d969ccd512bf8973
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126004
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27018}
This commit is contained in:
Sebastian Jansson 2019-03-07 14:21:39 +01:00 committed by Commit Bot
parent ffe9376a13
commit 06b77f9d8f
2 changed files with 14 additions and 0 deletions

View File

@ -87,6 +87,9 @@ GoogCcNetworkController::GoogCcNetworkController(RtcEventLog* event_log,
fall_back_to_probe_rate_(
key_value_config_->Lookup("WebRTC-Bwe-ProbeRateFallback")
.find("Enabled") == 0),
use_min_allocatable_as_lower_bound_(
key_value_config_->Lookup("WebRTC-Bwe-MinAllocAsLowerBound")
.find("Disabled") != 0),
rate_control_settings_(
RateControlSettings::ParseFromKeyValueConfig(key_value_config_)),
probe_controller_(new ProbeController(key_value_config_, event_log)),
@ -281,6 +284,14 @@ NetworkControlUpdate GoogCcNetworkController::OnStreamsConfig(
*msg.min_total_allocated_bitrate != min_total_allocated_bitrate_) {
min_total_allocated_bitrate_ = *msg.min_total_allocated_bitrate;
pacing_changed = true;
if (use_min_allocatable_as_lower_bound_) {
ClampConstraints();
bandwidth_estimation_->SetBitrates(starting_rate_, min_data_rate_,
max_data_rate_, msg.at_time);
delay_based_bwe_->SetMinBitrate(min_data_rate_);
MaybeTriggerOnNetworkChanged(&update, msg.at_time);
}
}
if (msg.max_padding_rate && *msg.max_padding_rate != max_padding_rate_) {
max_padding_rate_ = *msg.max_padding_rate;
@ -306,6 +317,8 @@ void GoogCcNetworkController::ClampConstraints() {
// The congestion controller should allow a min bitrate of 0.
min_data_rate_ =
std::max(min_data_rate_, congestion_controller::GetMinBitrate());
if (use_min_allocatable_as_lower_bound_)
min_data_rate_ = std::max(min_data_rate_, min_total_allocated_bitrate_);
if (max_data_rate_ < min_data_rate_) {
RTC_LOG(LS_WARNING) << "max bitrate smaller than min bitrate";
max_data_rate_ = min_data_rate_;

View File

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