mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-20 09:07:52 +01:00
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:
parent
6d254bcd5e
commit
b357e54dd5
2 changed files with 15 additions and 8 deletions
|
@ -20,18 +20,23 @@ namespace {
|
||||||
|
|
||||||
// When PacerPushbackExperiment is enabled, build-up in the pacer due to
|
// When PacerPushbackExperiment is enabled, build-up in the pacer due to
|
||||||
// the congestion window and/or data spikes reduces encoder allocations.
|
// the congestion window and/or data spikes reduces encoder allocations.
|
||||||
const char kPacerPushbackExperiment[] = "WebRTC-PacerPushbackExperiment";
|
|
||||||
|
|
||||||
bool IsPacerPushbackExperimentEnabled() {
|
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
|
} // namespace
|
||||||
CongestionControlHandler::CongestionControlHandler(
|
CongestionControlHandler::CongestionControlHandler(
|
||||||
NetworkChangedObserver* observer,
|
NetworkChangedObserver* observer,
|
||||||
PacedSender* pacer)
|
PacedSender* pacer)
|
||||||
: observer_(observer),
|
: observer_(observer),
|
||||||
pacer_(pacer),
|
pacer_(pacer),
|
||||||
pacer_pushback_experiment_(IsPacerPushbackExperimentEnabled()) {
|
pacer_pushback_experiment_(IsPacerPushbackExperimentEnabled()),
|
||||||
|
disable_pacer_emergency_stop_(IsPacerEmergencyStopDisabled()) {
|
||||||
sequenced_checker_.Detach();
|
sequenced_checker_.Detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,9 +114,7 @@ void CongestionControlHandler::OnNetworkInvalidation() {
|
||||||
|
|
||||||
if (!network_available_) {
|
if (!network_available_) {
|
||||||
target_bitrate_bps = 0;
|
target_bitrate_bps = 0;
|
||||||
} else if (!pacer_pushback_experiment_) {
|
} else if (pacer_pushback_experiment_) {
|
||||||
target_bitrate_bps = IsSendQueueFull() ? 0 : target_bitrate_bps;
|
|
||||||
} else {
|
|
||||||
int64_t queue_length_ms = pacer_expected_queue_ms_;
|
int64_t queue_length_ms = pacer_expected_queue_ms_;
|
||||||
|
|
||||||
if (queue_length_ms == 0) {
|
if (queue_length_ms == 0) {
|
||||||
|
@ -124,7 +127,10 @@ void CongestionControlHandler::OnNetworkInvalidation() {
|
||||||
|
|
||||||
target_bitrate_bps *= encoding_rate_ratio_;
|
target_bitrate_bps *= encoding_rate_ratio_;
|
||||||
target_bitrate_bps = target_bitrate_bps < 50000 ? 0 : target_bitrate_bps;
|
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,
|
if (HasNetworkParametersToReportChanged(target_bitrate_bps, fraction_loss,
|
||||||
rtt_ms)) {
|
rtt_ms)) {
|
||||||
observer_->OnNetworkChanged(target_bitrate_bps, fraction_loss, rtt_ms,
|
observer_->OnNetworkChanged(target_bitrate_bps, fraction_loss, rtt_ms,
|
||||||
|
|
|
@ -59,7 +59,8 @@ class CongestionControlHandler {
|
||||||
int64_t last_reported_target_bitrate_bps_ = 0;
|
int64_t last_reported_target_bitrate_bps_ = 0;
|
||||||
uint8_t last_reported_fraction_loss_ = 0;
|
uint8_t last_reported_fraction_loss_ = 0;
|
||||||
int64_t last_reported_rtt_ms_ = 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_;
|
uint32_t min_pushback_target_bitrate_bps_;
|
||||||
int64_t pacer_expected_queue_ms_ = 0;
|
int64_t pacer_expected_queue_ms_ = 0;
|
||||||
double encoding_rate_ratio_ = 1.0;
|
double encoding_rate_ratio_ = 1.0;
|
||||||
|
|
Loading…
Reference in a new issue