Chromium Code Reviews| Index: webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc |
| diff --git a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc b/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc |
| index 6730cbb611a1a94431d5e9d464a001f44a5a1bff..b689aa62b844b4a49019772fc54d630cfcfa3433 100644 |
| --- a/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc |
| +++ b/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc |
| @@ -133,7 +133,7 @@ void RemoteBitrateEstimatorSingleStream::IncomingPacket( |
| incoming_bitrate_.Rate(now_ms); |
| if (incoming_bitrate_bps && |
| (prior_state != kBwOverusing || |
| - remote_rate_->TimeToReduceFurther(now_ms, *incoming_bitrate_bps))) { |
| + GetRemoteRate()->TimeToReduceFurther(now_ms, *incoming_bitrate_bps))) { |
|
brandtr
2016/11/28 13:17:18
This change (and the one at the end) do not seem t
|
| // 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. |
| @@ -189,19 +189,19 @@ void RemoteBitrateEstimatorSingleStream::UpdateEstimate(int64_t now_ms) { |
| } |
| // We can't update the estimate if we don't have any active streams. |
| if (overuse_detectors_.empty()) { |
| - remote_rate_.reset(new AimdRateControl()); |
| return; |
| } |
| + AimdRateControl* remote_rate = GetRemoteRate(); |
| double mean_noise_var = sum_var_noise / |
| static_cast<double>(overuse_detectors_.size()); |
| const RateControlInput input(bw_state, |
| incoming_bitrate_.Rate(now_ms), |
| mean_noise_var); |
| - remote_rate_->Update(&input, now_ms); |
| - uint32_t target_bitrate = remote_rate_->UpdateBandwidthEstimate(now_ms); |
| - if (remote_rate_->ValidEstimate()) { |
| - process_interval_ms_ = remote_rate_->GetFeedbackInterval(); |
| + remote_rate->Update(&input, now_ms); |
| + uint32_t target_bitrate = remote_rate->UpdateBandwidthEstimate(now_ms); |
| + if (remote_rate->ValidEstimate()) { |
| + process_interval_ms_ = remote_rate->GetFeedbackInterval(); |
| std::vector<uint32_t> ssrcs; |
| GetSsrcs(&ssrcs); |
| observer_->OnReceiveBitrateChanged(ssrcs, target_bitrate); |
| @@ -211,7 +211,7 @@ void RemoteBitrateEstimatorSingleStream::UpdateEstimate(int64_t now_ms) { |
| void RemoteBitrateEstimatorSingleStream::OnRttUpdate(int64_t avg_rtt_ms, |
| int64_t max_rtt_ms) { |
| CriticalSectionScoped cs(crit_sect_.get()); |
| - remote_rate_->SetRtt(avg_rtt_ms); |
| + GetRemoteRate()->SetRtt(avg_rtt_ms); |
| } |
| void RemoteBitrateEstimatorSingleStream::RemoveStream(unsigned int ssrc) { |
| @@ -250,6 +250,12 @@ void RemoteBitrateEstimatorSingleStream::GetSsrcs( |
| } |
| } |
| +AimdRateControl* RemoteBitrateEstimatorSingleStream::GetRemoteRate() { |
| + if (!remote_rate_) |
| + remote_rate_.reset(new AimdRateControl()); |
| + return remote_rate_.get(); |
| +} |
| + |
| void RemoteBitrateEstimatorSingleStream::SetMinBitrate(int min_bitrate_bps) { |
| CriticalSectionScoped cs(crit_sect_.get()); |
| remote_rate_->SetMinBitrate(min_bitrate_bps); |