| Index: webrtc/modules/remote_bitrate_estimator/test/estimators/min_rtt_filter.h
|
| diff --git a/webrtc/modules/remote_bitrate_estimator/test/estimators/min_rtt_filter.h b/webrtc/modules/remote_bitrate_estimator/test/estimators/min_rtt_filter.h
|
| index b4932e51cad7e4e773ce41e3de67bff59aae7201..9a247c58172108dacce3da3137f032699a6e4592 100644
|
| --- a/webrtc/modules/remote_bitrate_estimator/test/estimators/min_rtt_filter.h
|
| +++ b/webrtc/modules/remote_bitrate_estimator/test/estimators/min_rtt_filter.h
|
| @@ -14,6 +14,7 @@
|
|
|
| #include <cstdint>
|
| #include <limits>
|
| +#include <list>
|
|
|
| #include "webrtc/rtc_base/optional.h"
|
|
|
| @@ -23,7 +24,8 @@ namespace bwe {
|
|
|
| // Expiration time for min_rtt sample, which is set to 10 seconds according to
|
| // BBR design doc.
|
| -const int64_t kMinRttFilterSizeMs = 10000;
|
| +const float kRttIncreaseThresholdForExpiry = 2.3f;
|
| +const size_t kRttFilterSize = 25;
|
|
|
| class MinRttFilter {
|
| public:
|
| @@ -34,19 +36,32 @@ class MinRttFilter {
|
| void AddRttSample(int64_t rtt_ms, int64_t now_ms) {
|
| if (!min_rtt_ms_ || rtt_ms <= *min_rtt_ms_ || MinRttExpired(now_ms)) {
|
| min_rtt_ms_.emplace(rtt_ms);
|
| - discovery_time_ms_ = now_ms;
|
| }
|
| + rtt_samples_.push_back(rtt_ms);
|
| + if (rtt_samples_.size() > kRttFilterSize)
|
| + rtt_samples_.pop_front();
|
| }
|
| int64_t discovery_time() { return discovery_time_ms_; }
|
|
|
| // Checks whether or not last discovered min_rtt value is older than x
|
| // milliseconds.
|
| bool MinRttExpired(int64_t now_ms) {
|
| - return now_ms - discovery_time_ms_ >= kMinRttFilterSizeMs;
|
| + if (rtt_samples_.size() < kRttFilterSize || !min_rtt_ms_)
|
| + return false;
|
| + int64_t sum_of_rtts_ms = 0;
|
| + for (int64_t i : rtt_samples_)
|
| + sum_of_rtts_ms += i;
|
| + if (sum_of_rtts_ms >=
|
| + *min_rtt_ms_ * kRttIncreaseThresholdForExpiry * kRttFilterSize) {
|
| + rtt_samples_.clear();
|
| + return true;
|
| + }
|
| + return false;
|
| }
|
|
|
| private:
|
| rtc::Optional<int64_t> min_rtt_ms_;
|
| + std::list<int64_t> rtt_samples_;
|
| int64_t discovery_time_ms_ = 0;
|
| };
|
| } // namespace bwe
|
|
|