| Index: webrtc/base/ratetracker.h
|
| diff --git a/webrtc/base/ratetracker.h b/webrtc/base/ratetracker.h
|
| index 575bff75a46e62738b330b06f3a1bc9b6e316d96..0e2e040e888920a229a0eb2a714ab591abd1aeaf 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,52 @@
|
|
|
| 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);
|
| + // Computes the average rate over the most recent interval_milliseconds,
|
| + // or if the first sample was added within this period, computes the rate
|
| + // since the first sample was added.
|
| + double ComputeRateForInterval(uint32 interval_milliseconds) const;
|
| +
|
| + // Computes the average rate over the rate tracker's recording interval
|
| + // of bucket_milliseconds * bucket_count.
|
| + double ComputeRate() const {
|
| + return ComputeRateForInterval(
|
| + bucket_milliseconds_ * static_cast<uint32>(bucket_count_));
|
| + }
|
| +
|
| + // Computes the average rate since the first sample was added to the
|
| + // rate tracker.
|
| + 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_milliseconds_;
|
| + uint32 initialization_time_milliseconds_;
|
| };
|
|
|
| } // namespace rtc
|
|
|