123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #ifndef RTC_BASE_RATE_TRACKER_H_
- #define RTC_BASE_RATE_TRACKER_H_
- #include <stdint.h>
- #include <stdlib.h>
- namespace rtc {
- class RateTracker {
- public:
- RateTracker(int64_t bucket_milliseconds, size_t bucket_count);
- virtual ~RateTracker();
-
-
-
- double ComputeRateForInterval(int64_t interval_milliseconds) const;
-
-
- double ComputeRate() const {
- return ComputeRateForInterval(bucket_milliseconds_ *
- static_cast<int64_t>(bucket_count_));
- }
-
-
- double ComputeTotalRate() const;
-
- int64_t TotalSampleCount() const;
-
-
- void AddSamples(int64_t sample_count);
- protected:
-
- virtual int64_t Time() const;
- private:
- void EnsureInitialized();
- size_t NextBucketIndex(size_t bucket_index) const;
- const int64_t bucket_milliseconds_;
- const size_t bucket_count_;
- int64_t* sample_buckets_;
- size_t total_sample_count_;
- size_t current_bucket_;
- int64_t bucket_start_time_milliseconds_;
- int64_t initialization_time_milliseconds_;
- };
- }
- #endif
|