| Index: webrtc/call/congestion_controller.cc
|
| diff --git a/webrtc/call/congestion_controller.cc b/webrtc/call/congestion_controller.cc
|
| index 52704154bbdc9576da90798d87335af9bfb91d9d..27185c162d91a26837073a7884fd9a41a9666771 100644
|
| --- a/webrtc/call/congestion_controller.cc
|
| +++ b/webrtc/call/congestion_controller.cc
|
| @@ -282,16 +282,22 @@ void CongestionController::SignalNetworkState(NetworkState state) {
|
| void CongestionController::OnNetworkChanged(uint32_t target_bitrate_bps,
|
| uint8_t fraction_loss,
|
| int64_t rtt) {
|
| - bitrate_allocator_->OnNetworkChanged(target_bitrate_bps, fraction_loss, rtt);
|
| + uint32_t allocated_bitrate_bps = bitrate_allocator_->OnNetworkChanged(
|
| + target_bitrate_bps, fraction_loss, rtt);
|
| int pad_up_to_bitrate_bps = 0;
|
| {
|
| rtc::CritScope lock(&encoder_crit_);
|
| for (const auto& encoder : encoders_)
|
| pad_up_to_bitrate_bps += encoder->GetPaddingNeededBps();
|
| }
|
| + // Allocated bitrate might be higher than bitrate estimate if enforcing min
|
| + // bitrate, or lower if estimate is higher than the sum of max bitrates, so
|
| + // set the pacer bitrate to the maximum of the two.
|
| + uint32_t pacer_bitrate_bps =
|
| + std::max(target_bitrate_bps, allocated_bitrate_bps);
|
| pacer_->UpdateBitrate(
|
| - target_bitrate_bps / 1000,
|
| - PacedSender::kDefaultPaceMultiplier * target_bitrate_bps / 1000,
|
| + pacer_bitrate_bps / 1000,
|
| + PacedSender::kDefaultPaceMultiplier * pacer_bitrate_bps / 1000,
|
| pad_up_to_bitrate_bps / 1000);
|
| }
|
|
|
|
|