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:
parent
0c126ed47a
commit
1391f821fa
@ -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_;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user