| Index: webrtc/video/stats_counter.h
|
| diff --git a/webrtc/video/stats_counter.h b/webrtc/video/stats_counter.h
|
| index c272b6278d0961b69362748ab7272ba5c4b2af71..cad5a63de74760f3f4f899a04402b38333d616e8 100644
|
| --- a/webrtc/video/stats_counter.h
|
| +++ b/webrtc/video/stats_counter.h
|
| @@ -11,6 +11,8 @@
|
| #ifndef WEBRTC_VIDEO_STATS_COUNTER_H_
|
| #define WEBRTC_VIDEO_STATS_COUNTER_H_
|
|
|
| +#include <limits>
|
| +#include <map>
|
| #include <memory>
|
|
|
| #include "webrtc/base/constructormagic.h"
|
| @@ -82,25 +84,34 @@ class StatsCounter {
|
|
|
| AggregatedStats GetStats();
|
|
|
| + // Holds gathered samples within a process interval.
|
| + struct Samples {
|
| + void Add(int sample);
|
| + void Set(int sample);
|
| + void Reset();
|
| +
|
| + int max_ = std::numeric_limits<int>::min();
|
| + int64_t num_ = 0;
|
| + int64_t sum_ = 0;
|
| + int64_t last_sum_ = 0;
|
| + };
|
| +
|
| protected:
|
| StatsCounter(Clock* clock,
|
| bool include_empty_intervals,
|
| StatsCounterObserver* observer);
|
|
|
| void Add(int sample);
|
| - void Set(int sample);
|
| + void Set(int sample, uint32_t ssrc);
|
|
|
| - int max_;
|
| - int64_t sum_;
|
| - int64_t num_samples_;
|
| - int64_t last_sum_;
|
| + const bool include_empty_intervals_;
|
| + std::map<uint32_t, Samples> samples_; // Gathered samples mapped by SSRC.
|
|
|
| private:
|
| bool TimeToProcess();
|
| void TryProcess();
|
|
|
| Clock* const clock_;
|
| - const bool include_empty_intervals_;
|
| const std::unique_ptr<StatsCounterObserver> observer_;
|
| const std::unique_ptr<AggregatedCounter> aggregated_counter_;
|
| int64_t last_process_time_ms_;
|
| @@ -218,7 +229,7 @@ class RateAccCounter : public StatsCounter {
|
| bool include_empty_intervals);
|
| ~RateAccCounter() override {}
|
|
|
| - void Set(int sample);
|
| + void Set(int sample, uint32_t ssrc);
|
|
|
| private:
|
| bool GetMetric(int* metric) const override;
|
|
|