From 1391f821fad3fd266b44cb7417a4a76535aef500 Mon Sep 17 00:00:00 2001 From: Danil Chapovalov Date: Thu, 9 Mar 2023 18:36:20 +0100 Subject: [PATCH] Cleanup ReceiveSideCongestionController internal dependency on RTPHeader Bug: webrtc:14859 Change-Id: Ic7d1c904cfd0a68b3ec45e5cee6eace95667b239 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/296824 Reviewed-by: Per Kjellander Commit-Queue: Per Kjellander Auto-Submit: Danil Chapovalov Cr-Commit-Position: refs/heads/main@{#39532} --- .../receive_side_congestion_controller.h | 3 +-- .../receive_side_congestion_controller.cc | 27 +++++++------------ 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/modules/congestion_controller/include/receive_side_congestion_controller.h b/modules/congestion_controller/include/receive_side_congestion_controller.h index 82f098cba1..8e0f755cd6 100644 --- a/modules/congestion_controller/include/receive_side_congestion_controller.h +++ b/modules/congestion_controller/include/receive_side_congestion_controller.h @@ -74,9 +74,8 @@ class ReceiveSideCongestionController : public CallStatsObserver { TimeDelta MaybeProcess(); private: - void PickEstimatorFromHeader(const RTPHeader& header) + void PickEstimator(bool has_absolute_send_time) RTC_EXCLUSIVE_LOCKS_REQUIRED(mutex_); - void PickEstimator() RTC_EXCLUSIVE_LOCKS_REQUIRED(mutex_); Clock& clock_; RembThrottler remb_throttler_; diff --git a/modules/congestion_controller/receive_side_congestion_controller.cc b/modules/congestion_controller/receive_side_congestion_controller.cc index 9352e50a69..cc314699f7 100644 --- a/modules/congestion_controller/receive_side_congestion_controller.cc +++ b/modules/congestion_controller/receive_side_congestion_controller.cc @@ -40,15 +40,16 @@ DataRate ReceiveSideCongestionController::LatestReceiveSideEstimate() const { return rbe_->LatestEstimate(); } -void ReceiveSideCongestionController::PickEstimatorFromHeader( - const RTPHeader& header) { - if (header.extension.hasAbsoluteSendTime) { +void ReceiveSideCongestionController::PickEstimator( + bool has_absolute_send_time) { + if (has_absolute_send_time) { // If we see AST in header, switch RBE strategy immediately. if (!using_absolute_send_time_) { RTC_LOG(LS_INFO) << "WrappingBitrateEstimator: Switching to absolute send time RBE."; using_absolute_send_time_ = true; - PickEstimator(); + rbe_ = std::make_unique( + &remb_throttler_, &clock_); } packets_since_absolute_send_time_ = 0; } else { @@ -60,23 +61,13 @@ void ReceiveSideCongestionController::PickEstimatorFromHeader( << "WrappingBitrateEstimator: Switching to transmission " "time offset RBE."; using_absolute_send_time_ = false; - PickEstimator(); + rbe_ = std::make_unique( + &remb_throttler_, &clock_); } } } } -// Instantiate RBE for Time Offset or Absolute Send Time extensions. -void ReceiveSideCongestionController::PickEstimator() { - if (using_absolute_send_time_) { - rbe_ = std::make_unique(&remb_throttler_, - &clock_); - } else { - rbe_ = std::make_unique( - &remb_throttler_, &clock_); - } -} - ReceiveSideCongestionController::ReceiveSideCongestionController( Clock* clock, RemoteEstimatorProxy::TransportFeedbackSender feedback_sender, @@ -109,7 +100,7 @@ void ReceiveSideCongestionController::OnReceivedPacket( MutexLock lock(&mutex_); RTPHeader header; packet.GetHeader(&header); - PickEstimatorFromHeader(header); + PickEstimator(packet.HasExtension()); rbe_->IncomingPacket(packet.arrival_time().ms(), packet.payload_size() + packet.padding_size(), header); } @@ -123,7 +114,7 @@ void ReceiveSideCongestionController::OnReceivedPacket( if (!header.extension.hasTransportSequenceNumber) { // Receive-side BWE. MutexLock lock(&mutex_); - PickEstimatorFromHeader(header); + PickEstimator(header.extension.hasAbsoluteSendTime); rbe_->IncomingPacket(arrival_time_ms, payload_size, header); } }