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; |
} |