 Chromium Code Reviews
 Chromium Code Reviews Issue 2407143002:
  Remove GetFeedbackInterval in sender side BWE.   (Closed)
    
  
    Issue 2407143002:
  Remove GetFeedbackInterval in sender side BWE.   (Closed) 
  | Index: webrtc/modules/congestion_controller/delay_based_bwe.cc | 
| diff --git a/webrtc/modules/congestion_controller/delay_based_bwe.cc b/webrtc/modules/congestion_controller/delay_based_bwe.cc | 
| index fb6ffd157aa1c1fa76654b38e1c2c832914e7bcd..47d3147611f59ef8bd78622c63bc4ed51e6b651e 100644 | 
| --- a/webrtc/modules/congestion_controller/delay_based_bwe.cc | 
| +++ b/webrtc/modules/congestion_controller/delay_based_bwe.cc | 
| @@ -45,7 +45,6 @@ DelayBasedBwe::DelayBasedBwe(Clock* clock) | 
| estimator_(), | 
| detector_(OverUseDetectorOptions()), | 
| receiver_incoming_bitrate_(kBitrateWindowMs, 8000), | 
| - last_update_ms_(-1), | 
| last_seen_packet_ms_(-1), | 
| uma_recorded_(false) { | 
| network_thread_.DetachFromThread(); | 
| @@ -60,21 +59,21 @@ DelayBasedBwe::Result DelayBasedBwe::IncomingPacketFeedbackVector( | 
| BweNames::kBweNamesMax); | 
| uma_recorded_ = true; | 
| } | 
| + | 
| + int64_t now_ms = clock_->TimeInMilliseconds(); | 
| Result aggregated_result; | 
| for (const auto& packet_info : packet_feedback_vector) { | 
| - Result result = IncomingPacketInfo(packet_info); | 
| - if (result.updated) | 
| - aggregated_result = result; | 
| + aggregated_result = IncomingPacketInfo(packet_info, now_ms); | 
| } | 
| + aggregated_result.target_bitrate_bps = | 
| + rate_control_.UpdateBandwidthEstimate(now_ms); | 
| + aggregated_result.updated = rate_control_.ValidEstimate(); | 
| return aggregated_result; | 
| } | 
| -DelayBasedBwe::Result DelayBasedBwe::IncomingPacketInfo( | 
| - const PacketInfo& info) { | 
| - int64_t now_ms = clock_->TimeInMilliseconds(); | 
| - | 
| +DelayBasedBwe::Result DelayBasedBwe::IncomingPacketInfo(const PacketInfo& info, | 
| + int64_t now_ms) { | 
| receiver_incoming_bitrate_.Update(info.payload_size, info.arrival_time_ms); | 
| - Result result; | 
| // Reset if the stream has timed out. | 
| if (last_seen_packet_ms_ == -1 || | 
| now_ms - last_seen_packet_ms_ > kStreamTimeOutMs) { | 
| @@ -112,38 +111,17 @@ DelayBasedBwe::Result DelayBasedBwe::IncomingPacketInfo( | 
| if (info.probe_cluster_id != PacketInfo::kNotAProbe) { | 
| probing_bps = probe_bitrate_estimator_.HandleProbeAndEstimateBitrate(info); | 
| } | 
| - | 
| - // Currently overusing the bandwidth. | 
| - if (detector_.State() == kBwOverusing) { | 
| - rtc::Optional<uint32_t> incoming_rate = | 
| - receiver_incoming_bitrate_.Rate(info.arrival_time_ms); | 
| - if (incoming_rate && | 
| - rate_control_.TimeToReduceFurther(now_ms, *incoming_rate)) { | 
| 
stefan-webrtc
2016/10/26 15:19:20
Isn't this check still desirable? We shouldn't red
 
michaelt
2016/10/27 14:42:59
I removed it because it seamed strange to increase
 
stefan-webrtc
2016/10/31 15:08:49
I don't think I agree. Increasing is fine to do in
 | 
| - result.updated = UpdateEstimate(info.arrival_time_ms, now_ms, | 
| - &result.target_bitrate_bps); | 
| - } | 
| - } else if (probing_bps > 0) { | 
| + if (detector_.State() != kBwOverusing && probing_bps > 0) { | 
| // No overuse, but probing measured a bitrate. | 
| rate_control_.SetEstimate(probing_bps, info.arrival_time_ms); | 
| - result.probe = true; | 
| - result.updated = UpdateEstimate(info.arrival_time_ms, now_ms, | 
| - &result.target_bitrate_bps); | 
| - } | 
| - if (!result.updated && | 
| - (last_update_ms_ == -1 || | 
| - now_ms - last_update_ms_ > rate_control_.GetFeedbackInterval())) { | 
| - result.updated = UpdateEstimate(info.arrival_time_ms, now_ms, | 
| - &result.target_bitrate_bps); | 
| + UpdateEstimate(info.arrival_time_ms, now_ms); | 
| + return Result(true, 0); | 
| } | 
| - if (result.updated) | 
| - last_update_ms_ = now_ms; | 
| - | 
| - return result; | 
| + UpdateEstimate(info.arrival_time_ms, now_ms); | 
| + return Result(); | 
| 
stefan-webrtc
2016/10/26 15:19:20
I find this method a bit strange now. It basically
 
michaelt
2016/10/27 14:42:59
Since we work with a vector of packets, it seamed
 
stefan-webrtc
2016/10/31 15:08:49
I agree with that. Seems odd to me that we return
 | 
| } | 
| -bool DelayBasedBwe::UpdateEstimate(int64_t arrival_time_ms, | 
| - int64_t now_ms, | 
| - uint32_t* target_bitrate_bps) { | 
| +void DelayBasedBwe::UpdateEstimate(int64_t arrival_time_ms, int64_t now_ms) { | 
| // The first overuse should immediately trigger a new estimate. | 
| // We also have to update the estimate immediately if we are overusing | 
| // and the target bitrate is too high compared to what we are receiving. | 
| @@ -151,8 +129,6 @@ bool DelayBasedBwe::UpdateEstimate(int64_t arrival_time_ms, | 
| receiver_incoming_bitrate_.Rate(arrival_time_ms), | 
| estimator_->var_noise()); | 
| rate_control_.Update(&input, now_ms); | 
| - *target_bitrate_bps = rate_control_.UpdateBandwidthEstimate(now_ms); | 
| - return rate_control_.ValidEstimate(); | 
| } | 
| void DelayBasedBwe::OnRttUpdate(int64_t avg_rtt_ms, int64_t max_rtt_ms) { |