Add field trial config to disable pacer emergency stops.

Bug: none
Change-Id: Ie92c4ef82e5ce3e222ec85df21acfb233b16b85d
Reviewed-on: https://webrtc-review.googlesource.com/c/111883
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Christoffer Rodbro <crodbro@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25767}
This commit is contained in:
Christoffer Rodbro 2018-11-23 11:19:32 +01:00 committed by Commit Bot
parent 6d254bcd5e
commit b357e54dd5
2 changed files with 15 additions and 8 deletions

View file

@ -20,18 +20,23 @@ namespace {
// When PacerPushbackExperiment is enabled, build-up in the pacer due to
// the congestion window and/or data spikes reduces encoder allocations.
const char kPacerPushbackExperiment[] = "WebRTC-PacerPushbackExperiment";
bool IsPacerPushbackExperimentEnabled() {
return field_trial::IsEnabled(kPacerPushbackExperiment);
return field_trial::IsEnabled("WebRTC-PacerPushbackExperiment");
}
// By default, pacer emergency stops encoder when buffer reaches a high level.
bool IsPacerEmergencyStopDisabled() {
return field_trial::IsEnabled("WebRTC-DisablePacerEmergencyStop");
}
} // namespace
CongestionControlHandler::CongestionControlHandler(
NetworkChangedObserver* observer,
PacedSender* pacer)
: observer_(observer),
pacer_(pacer),
pacer_pushback_experiment_(IsPacerPushbackExperimentEnabled()) {
pacer_pushback_experiment_(IsPacerPushbackExperimentEnabled()),
disable_pacer_emergency_stop_(IsPacerEmergencyStopDisabled()) {
sequenced_checker_.Detach();
}
@ -109,9 +114,7 @@ void CongestionControlHandler::OnNetworkInvalidation() {
if (!network_available_) {
target_bitrate_bps = 0;
} else if (!pacer_pushback_experiment_) {
target_bitrate_bps = IsSendQueueFull() ? 0 : target_bitrate_bps;
} else {
} else if (pacer_pushback_experiment_) {
int64_t queue_length_ms = pacer_expected_queue_ms_;
if (queue_length_ms == 0) {
@ -124,7 +127,10 @@ void CongestionControlHandler::OnNetworkInvalidation() {
target_bitrate_bps *= encoding_rate_ratio_;
target_bitrate_bps = target_bitrate_bps < 50000 ? 0 : target_bitrate_bps;
} else if (!disable_pacer_emergency_stop_) {
target_bitrate_bps = IsSendQueueFull() ? 0 : target_bitrate_bps;
}
if (HasNetworkParametersToReportChanged(target_bitrate_bps, fraction_loss,
rtt_ms)) {
observer_->OnNetworkChanged(target_bitrate_bps, fraction_loss, rtt_ms,

View file

@ -59,7 +59,8 @@ class CongestionControlHandler {
int64_t last_reported_target_bitrate_bps_ = 0;
uint8_t last_reported_fraction_loss_ = 0;
int64_t last_reported_rtt_ms_ = 0;
const bool pacer_pushback_experiment_ = false;
const bool pacer_pushback_experiment_;
const bool disable_pacer_emergency_stop_;
uint32_t min_pushback_target_bitrate_bps_;
int64_t pacer_expected_queue_ms_ = 0;
double encoding_rate_ratio_ = 1.0;