| Index: webrtc/modules/congestion_controller/congestion_controller.cc
|
| diff --git a/webrtc/modules/congestion_controller/congestion_controller.cc b/webrtc/modules/congestion_controller/congestion_controller.cc
|
| index 6ed64a299d73799ef4781277eacdb0e8770a39d4..bc2f29cf0cfee22cd75ac6facf4a9bb74e6a7bd9 100644
|
| --- a/webrtc/modules/congestion_controller/congestion_controller.cc
|
| +++ b/webrtc/modules/congestion_controller/congestion_controller.cc
|
| @@ -160,7 +160,6 @@
|
| std::unique_ptr<PacedSender> pacer)
|
| : clock_(clock),
|
| observer_(observer),
|
| - event_log_(event_log),
|
| packet_router_(packet_router),
|
| pacer_(std::move(pacer)),
|
| bitrate_controller_(
|
| @@ -170,16 +169,15 @@
|
| new RateLimiter(clock, kRetransmitWindowSizeMs)),
|
| remote_bitrate_estimator_(remote_bitrate_observer, clock_),
|
| remote_estimator_proxy_(clock_, packet_router_),
|
| - transport_feedback_adapter_(clock_),
|
| + transport_feedback_adapter_(event_log, clock_, bitrate_controller_.get()),
|
| min_bitrate_bps_(congestion_controller::GetMinBitrateBps()),
|
| max_bitrate_bps_(0),
|
| last_reported_bitrate_bps_(0),
|
| last_reported_fraction_loss_(0),
|
| last_reported_rtt_(0),
|
| - network_state_(kNetworkUp),
|
| - delay_based_bwe_(new DelayBasedBwe(event_log_, clock_)) {
|
| - delay_based_bwe_->SetMinBitrate(min_bitrate_bps_);
|
| - worker_thread_checker_.DetachFromThread();
|
| + network_state_(kNetworkUp) {
|
| + transport_feedback_adapter_.InitBwe();
|
| + transport_feedback_adapter_.SetMinBitrate(min_bitrate_bps_);
|
| }
|
|
|
| CongestionController::~CongestionController() {}
|
| @@ -212,12 +210,9 @@
|
|
|
| remote_bitrate_estimator_.SetMinBitrate(min_bitrate_bps);
|
| min_bitrate_bps_ = min_bitrate_bps;
|
| - {
|
| - rtc::CritScope cs(&bwe_lock_);
|
| - if (start_bitrate_bps > 0)
|
| - delay_based_bwe_->SetStartBitrate(start_bitrate_bps);
|
| - delay_based_bwe_->SetMinBitrate(min_bitrate_bps_);
|
| - }
|
| + if (start_bitrate_bps > 0)
|
| + transport_feedback_adapter_.SetStartBitrate(start_bitrate_bps);
|
| + transport_feedback_adapter_.SetMinBitrate(min_bitrate_bps_);
|
| MaybeTriggerOnNetworkChanged();
|
| }
|
|
|
| @@ -236,12 +231,9 @@
|
| remote_bitrate_estimator_.SetMinBitrate(min_bitrate_bps);
|
|
|
| transport_feedback_adapter_.ClearSendTimeHistory();
|
| - {
|
| - rtc::CritScope cs(&bwe_lock_);
|
| - delay_based_bwe_.reset(new DelayBasedBwe(event_log_, clock_));
|
| - delay_based_bwe_->SetStartBitrate(bitrate_bps);
|
| - delay_based_bwe_->SetMinBitrate(min_bitrate_bps);
|
| - }
|
| + transport_feedback_adapter_.InitBwe();
|
| + transport_feedback_adapter_.SetStartBitrate(bitrate_bps);
|
| + transport_feedback_adapter_.SetMinBitrate(min_bitrate_bps);
|
|
|
| probe_controller_->Reset();
|
| probe_controller_->SetBitrates(min_bitrate_bps, bitrate_bps, max_bitrate_bps);
|
| @@ -260,6 +252,11 @@
|
| } else {
|
| return &remote_bitrate_estimator_;
|
| }
|
| +}
|
| +
|
| +TransportFeedbackObserver*
|
| +CongestionController::GetTransportFeedbackObserver() {
|
| + return &transport_feedback_adapter_;
|
| }
|
|
|
| RateLimiter* CongestionController::GetRetransmissionRateLimiter() {
|
| @@ -289,7 +286,7 @@
|
| pacer_->Pause();
|
| }
|
| {
|
| - rtc::CritScope cs(&network_state_lock_);
|
| + rtc::CritScope cs(&critsect_);
|
| network_state_ = state;
|
| }
|
| probe_controller_->OnNetworkStateChanged(state);
|
| @@ -313,10 +310,7 @@
|
|
|
| void CongestionController::OnRttUpdate(int64_t avg_rtt_ms, int64_t max_rtt_ms) {
|
| remote_bitrate_estimator_.OnRttUpdate(avg_rtt_ms, max_rtt_ms);
|
| - {
|
| - rtc::CritScope cs(&bwe_lock_);
|
| - delay_based_bwe_->OnRttUpdate(avg_rtt_ms, max_rtt_ms);
|
| - }
|
| + transport_feedback_adapter_.OnRttUpdate(avg_rtt_ms, max_rtt_ms);
|
| }
|
|
|
| int64_t CongestionController::TimeUntilNextProcess() {
|
| @@ -329,32 +323,6 @@
|
| remote_bitrate_estimator_.Process();
|
| probe_controller_->Process();
|
| MaybeTriggerOnNetworkChanged();
|
| -}
|
| -
|
| -void CongestionController::AddPacket(uint16_t sequence_number,
|
| - size_t length,
|
| - const PacedPacketInfo& pacing_info) {
|
| - transport_feedback_adapter_.AddPacket(sequence_number, length, pacing_info);
|
| -}
|
| -
|
| -void CongestionController::OnTransportFeedback(
|
| - const rtcp::TransportFeedback& feedback) {
|
| - RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
|
| - transport_feedback_adapter_.OnTransportFeedback(feedback);
|
| - DelayBasedBwe::Result result;
|
| - {
|
| - rtc::CritScope cs(&bwe_lock_);
|
| - result = delay_based_bwe_->IncomingPacketFeedbackVector(
|
| - transport_feedback_adapter_.GetTransportFeedbackVector());
|
| - }
|
| - if (result.updated)
|
| - bitrate_controller_->OnDelayBasedBweResult(result);
|
| -}
|
| -
|
| -std::vector<PacketFeedback> CongestionController::GetTransportFeedbackVector()
|
| - const {
|
| - RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
|
| - return transport_feedback_adapter_.GetTransportFeedbackVector();
|
| }
|
|
|
| void CongestionController::MaybeTriggerOnNetworkChanged() {
|
| @@ -377,13 +345,9 @@
|
| bitrate_bps = IsNetworkDown() || IsSendQueueFull() ? 0 : bitrate_bps;
|
|
|
| if (HasNetworkParametersToReportChanged(bitrate_bps, fraction_loss, rtt)) {
|
| - int64_t probing_interval_ms;
|
| - {
|
| - rtc::CritScope cs(&bwe_lock_);
|
| - probing_interval_ms = delay_based_bwe_->GetProbingIntervalMs();
|
| - }
|
| - observer_->OnNetworkChanged(bitrate_bps, fraction_loss, rtt,
|
| - probing_interval_ms);
|
| + observer_->OnNetworkChanged(
|
| + bitrate_bps, fraction_loss, rtt,
|
| + transport_feedback_adapter_.GetProbingIntervalMs());
|
| remote_estimator_proxy_.OnBitrateChanged(bitrate_bps);
|
| }
|
| }
|
| @@ -392,7 +356,7 @@
|
| uint32_t bitrate_bps,
|
| uint8_t fraction_loss,
|
| int64_t rtt) {
|
| - rtc::CritScope cs(&network_state_lock_);
|
| + rtc::CritScope cs(&critsect_);
|
| bool changed =
|
| last_reported_bitrate_bps_ != bitrate_bps ||
|
| (bitrate_bps > 0 && (last_reported_fraction_loss_ != fraction_loss ||
|
| @@ -412,7 +376,7 @@
|
| }
|
|
|
| bool CongestionController::IsNetworkDown() const {
|
| - rtc::CritScope cs(&network_state_lock_);
|
| + rtc::CritScope cs(&critsect_);
|
| return network_state_ == kNetworkDown;
|
| }
|
|
|
|
|