Index: webrtc/call/congestion_controller.cc |
diff --git a/webrtc/call/congestion_controller.cc b/webrtc/call/congestion_controller.cc |
index 27185c162d91a26837073a7884fd9a41a9666771..d29b0d77456e60b2ad4c05ee2a72c685698cb1d7 100644 |
--- a/webrtc/call/congestion_controller.cc |
+++ b/webrtc/call/congestion_controller.cc |
@@ -13,6 +13,7 @@ |
#include "webrtc/base/checks.h" |
#include "webrtc/base/thread_annotations.h" |
#include "webrtc/common.h" |
+#include "webrtc/modules/bitrate_controller/include/bitrate_controller.h" |
#include "webrtc/modules/pacing/include/paced_sender.h" |
#include "webrtc/modules/pacing/include/packet_router.h" |
#include "webrtc/modules/remote_bitrate_estimator/include/send_time_history.h" |
@@ -144,9 +145,9 @@ class WrappingBitrateEstimator : public RemoteBitrateEstimator { |
} // namespace |
CongestionController::CongestionController(ProcessThread* process_thread, |
- CallStats* call_stats) |
+ CallStats* call_stats, |
+ BitrateObserver* bitrate_observer) |
: remb_(new VieRemb()), |
- bitrate_allocator_(new BitrateAllocator()), |
packet_router_(new PacketRouter()), |
pacer_(new PacedSender(Clock::GetRealTimeClock(), |
packet_router_.get(), |
@@ -166,7 +167,7 @@ CongestionController::CongestionController(ProcessThread* process_thread, |
// construction. |
bitrate_controller_( |
BitrateController::CreateBitrateController(Clock::GetRealTimeClock(), |
- this)), |
+ bitrate_observer)), |
min_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps) { |
call_stats_->RegisterStatsObserver(remote_bitrate_estimator_.get()); |
@@ -249,6 +250,12 @@ CongestionController::GetTransportFeedbackObserver() { |
return transport_feedback_adapter_.get(); |
} |
+void CongestionController::UpdatePacerBitrate(int bitrate_kbps, |
+ int max_bitrate_kbps, |
+ int min_bitrate_kbps) { |
+ pacer_->UpdateBitrate(bitrate_kbps, max_bitrate_kbps, min_bitrate_kbps); |
+} |
+ |
int64_t CongestionController::GetPacerQueuingDelayMs() const { |
return pacer_->QueueInMs(); |
} |
@@ -278,29 +285,6 @@ void CongestionController::SignalNetworkState(NetworkState state) { |
} |
} |
-// TODO(mflodman): Move this logic out from CongestionController. |
-void CongestionController::OnNetworkChanged(uint32_t target_bitrate_bps, |
- uint8_t fraction_loss, |
- int64_t 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( |
- pacer_bitrate_bps / 1000, |
- PacedSender::kDefaultPaceMultiplier * pacer_bitrate_bps / 1000, |
- pad_up_to_bitrate_bps / 1000); |
-} |
- |
void CongestionController::OnSentPacket(const rtc::SentPacket& sent_packet) { |
if (transport_feedback_adapter_) { |
transport_feedback_adapter_->OnSentPacket(sent_packet.packet_id, |