From 791d43c4b1332e77f75f39347c176f75e57b3e62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Tue, 8 Jan 2019 15:46:06 +0100 Subject: [PATCH] Add ability to set max probing bitrate in SendSideCongestionController. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit While this class is deprecated, it's needed as a stop-gap solution. Other methods to configure the max probe rate all effect the current estimate and/or trigger new probes to be sent, and we need a way to configure the max without affecting other behavior. Bug: webrtc:10070 Change-Id: I2b0ba2fef42d0bab6e5ea7f7c921681557802b4b Reviewed-on: https://webrtc-review.googlesource.com/c/114880 Reviewed-by: Sebastian Jansson Commit-Queue: Erik Språng Cr-Commit-Position: refs/heads/master@{#26162} --- modules/congestion_controller/goog_cc/probe_controller.cc | 4 ++++ modules/congestion_controller/goog_cc/probe_controller.h | 3 +++ .../include/send_side_congestion_controller.h | 2 ++ .../send_side_congestion_controller.cc | 6 ++++++ 4 files changed, 15 insertions(+) diff --git a/modules/congestion_controller/goog_cc/probe_controller.cc b/modules/congestion_controller/goog_cc/probe_controller.cc index 1f4a9d7b57..94a98e03fe 100644 --- a/modules/congestion_controller/goog_cc/probe_controller.cc +++ b/modules/congestion_controller/goog_cc/probe_controller.cc @@ -280,6 +280,10 @@ std::vector ProbeController::InitiateCapacityProbing( return std::vector(); } +void ProbeController::SetMaxBitrate(int64_t max_bitrate_bps) { + max_bitrate_bps_ = max_bitrate_bps; +} + void ProbeController::Reset(int64_t at_time_ms) { network_available_ = true; state_ = State::kInit; diff --git a/modules/congestion_controller/goog_cc/probe_controller.h b/modules/congestion_controller/goog_cc/probe_controller.h index 0b1e685bab..75f3ee778b 100644 --- a/modules/congestion_controller/goog_cc/probe_controller.h +++ b/modules/congestion_controller/goog_cc/probe_controller.h @@ -63,6 +63,9 @@ class ProbeController { RTC_WARN_UNUSED_RESULT std::vector InitiateCapacityProbing(int64_t bitrate_bps, int64_t at_time_ms); + // Sets a new maximum probing bitrate, without generating a new probe cluster. + void SetMaxBitrate(int64_t max_bitrate_bps); + // Resets the ProbeController to a state equivalent to as if it was just // created EXCEPT for |enable_periodic_alr_probing_|. void Reset(int64_t at_time_ms); diff --git a/modules/congestion_controller/include/send_side_congestion_controller.h b/modules/congestion_controller/include/send_side_congestion_controller.h index 41c10173c2..7f22ed2594 100644 --- a/modules/congestion_controller/include/send_side_congestion_controller.h +++ b/modules/congestion_controller/include/send_side_congestion_controller.h @@ -121,6 +121,8 @@ class DEPRECATED_SendSideCongestionController void SetAlrLimitedBackoffExperiment(bool enable); + void SetMaxProbingBitrate(int64_t max_probing_bitrate_bps); + private: void MaybeTriggerOnNetworkChanged(); diff --git a/modules/congestion_controller/send_side_congestion_controller.cc b/modules/congestion_controller/send_side_congestion_controller.cc index cf2bba4273..3c8f72f385 100644 --- a/modules/congestion_controller/send_side_congestion_controller.cc +++ b/modules/congestion_controller/send_side_congestion_controller.cc @@ -192,6 +192,12 @@ void DEPRECATED_SendSideCongestionController::SetAlrLimitedBackoffExperiment( delay_based_bwe_->SetAlrLimitedBackoffExperiment(enable); } +void DEPRECATED_SendSideCongestionController::SetMaxProbingBitrate( + int64_t max_probing_bitrate_bps) { + rtc::CritScope cs(&probe_lock_); + probe_controller_->SetMaxBitrate(max_probing_bitrate_bps); +} + void DEPRECATED_SendSideCongestionController::RegisterPacketFeedbackObserver( PacketFeedbackObserver* observer) { transport_feedback_adapter_.RegisterPacketFeedbackObserver(observer);