Chromium Code Reviews| Index: webrtc/modules/congestion_controller/probing_interval_estimator.cc |
| diff --git a/webrtc/modules/congestion_controller/probing_interval_estimator.cc b/webrtc/modules/congestion_controller/probing_interval_estimator.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..1cbc84e3f630ea8acf73afa99fb742b226f7db42 |
| --- /dev/null |
| +++ b/webrtc/modules/congestion_controller/probing_interval_estimator.cc |
| @@ -0,0 +1,49 @@ |
| +/* |
| + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
| + * |
| + * Use of this source code is governed by a BSD-style license |
| + * that can be found in the LICENSE file in the root of the source |
| + * tree. An additional intellectual property rights grant can be found |
| + * in the file PATENTS. All contributing project authors may |
| + * be found in the AUTHORS file in the root of the source tree. |
| + */ |
| + |
| +#include "webrtc/modules/congestion_controller/probing_interval_estimator.h" |
| + |
| +#include <algorithm> |
| +#include <utility> |
| + |
| +namespace webrtc { |
| + |
| +namespace { |
| +constexpr int kMinIntervalMs = 2000; |
| +constexpr int kMaxIntervalMs = 50000; |
| +} |
| + |
| +ProbingIntervalEstimator::ProbingIntervalEstimator( |
| + const AimdRateControl* const aimd_rate_control) |
|
minyue-webrtc
2016/11/14 16:50:42
second "const" can be omitted
michaelt
2016/11/15 09:41:59
Done.
|
| + : ProbingIntervalEstimator(kMinIntervalMs, |
| + kMaxIntervalMs, |
| + aimd_rate_control) {} |
| + |
| +ProbingIntervalEstimator::ProbingIntervalEstimator( |
| + int min_interval_ms, |
| + int max_interval_ms, |
| + const AimdRateControl* const aimd_rate_control) |
|
minyue-webrtc
2016/11/14 16:50:42
the second "const" can be omitted
michaelt
2016/11/15 09:41:59
Done.
|
| + : min_interval_ms_(min_interval_ms), |
| + max_interval_ms_(max_interval_ms), |
| + aimd_rate_control_(aimd_rate_control) {} |
| + |
| +rtc::Optional<int> ProbingIntervalEstimator::GetIntervalMs() const { |
| + rtc::Optional<int> drop_height = aimd_rate_control_->GetLastDecrease(); |
| + int increase_rate = aimd_rate_control_->GetNearMaxIncreaseRateBps(); |
| + |
| + if (!drop_height || increase_rate <= 0) |
| + return rtc::Optional<int>(); |
| + |
| + return rtc::Optional<int>(std::min( |
| + max_interval_ms_, |
| + std::max(1000 * (*drop_height) / increase_rate, min_interval_ms_))); |
| +} |
| + |
| +} // namespace webrtc |