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 <perkj@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39532}
This commit is contained in:
Danil Chapovalov 2023-03-09 18:36:20 +01:00 committed by WebRTC LUCI CQ
parent 0c126ed47a
commit 1391f821fa
2 changed files with 10 additions and 20 deletions

View File

@ -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_;

View File

@ -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<RemoteBitrateEstimatorAbsSendTime>(
&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<RemoteBitrateEstimatorSingleStream>(
&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<RemoteBitrateEstimatorAbsSendTime>(&remb_throttler_,
&clock_);
} else {
rbe_ = std::make_unique<RemoteBitrateEstimatorSingleStream>(
&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<AbsoluteSendTime>());
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);
}
}