Chromium Code Reviews| Index: webrtc/base/ratetracker.h |
| diff --git a/webrtc/base/ratetracker.h b/webrtc/base/ratetracker.h |
| index 575bff75a46e62738b330b06f3a1bc9b6e316d96..317dd9b99347f5118cbb1f1e1b866c9165f86cd0 100644 |
| --- a/webrtc/base/ratetracker.h |
| +++ b/webrtc/base/ratetracker.h |
| @@ -1,5 +1,5 @@ |
| /* |
| - * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
| + * Copyright 2015 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 |
| @@ -16,25 +16,45 @@ |
| namespace rtc { |
| -// Computes instantaneous units per second. |
| +// Computes units per second over a given interval by tracking the units over |
| +// each bucket of a given size and calculating the instantaneous rate assuming |
| +// that over each bucket the rate was constant. |
| class RateTracker { |
| public: |
| - RateTracker(); |
| - virtual ~RateTracker() {} |
| + RateTracker(uint32 bucket_milliseconds, size_t bucket_count); |
| + virtual ~RateTracker(); |
| - size_t total_units() const; |
| - size_t units_second(); |
| - void Update(size_t units); |
| + double ComputeCurrentRate(uint32 interval_milliseconds) const; |
| + double ComputeCurrentRate() const { |
|
noahric
2015/09/03 21:42:24
Use a different name for these; C++ style guide fr
tpsiaki
2015/09/03 23:28:59
Done.
|
| + return ComputeCurrentRate( |
| + bucket_milliseconds_ * static_cast<uint32>(bucket_count_)); |
| + } |
| + |
| + // Computes the average rate over the lifetime of the rate tracker. |
|
noahric
2015/09/03 21:42:24
I'd replace "lifetime" with "since the first sampl
tpsiaki
2015/09/03 23:28:59
Done.
|
| + double ComputeTotalRate() const; |
| + |
| + // The total number of samples added. |
| + size_t TotalSampleCount() const; |
| + |
| + // Reads the current time in order to determine the appropriate bucket for |
| + // these samples, and increments the count for that bucket by sample_count. |
| + void AddSamples(size_t sample_count); |
| protected: |
| // overrideable for tests |
| virtual uint32 Time() const; |
| private: |
| - size_t total_units_; |
| - size_t units_second_; |
| - uint32 last_units_second_time_; |
| - size_t last_units_second_calc_; |
| + void EnsureInitialized(); |
| + size_t NextBucketIndex(size_t bucket_index) const; |
| + |
| + const uint32 bucket_milliseconds_; |
| + const size_t bucket_count_; |
| + size_t* sample_buckets_; |
| + size_t total_sample_count_; |
| + size_t current_bucket_; |
| + uint32 bucket_start_time_; |
|
noahric
2015/09/03 21:42:24
Prefer these have units as well (millis, ms, or mi
tpsiaki
2015/09/03 23:28:59
Done.
|
| + uint32 initialization_time_; |
| }; |
| } // namespace rtc |