| /* | |
| * Copyright (c) 2019 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 | |
| * tree. An additional intellectual property rights grant can be found | |
| * in the file PATENTS. All contributing project authors may | |
| * be found in the AUTHORS file in the root of the source tree. | |
| */ | |
| #ifndef RTC_BASE_NUMERICS_SAMPLE_STATS_H_ | |
| #define RTC_BASE_NUMERICS_SAMPLE_STATS_H_ | |
| #include "api/numerics/samples_stats_counter.h" | |
| #include "api/units/data_rate.h" | |
| #include "api/units/time_delta.h" | |
| #include "api/units/timestamp.h" | |
| namespace webrtc { | |
| template <typename T> | |
| class SampleStats; | |
| // TODO(srte): Merge this implementation with SamplesStatsCounter. | |
| template <> | |
| class SampleStats<double> : public SamplesStatsCounter { | |
| public: | |
| double Max(); | |
| double Mean(); | |
| double Median(); | |
| double Quantile(double quantile); | |
| double Min(); | |
| double Variance(); | |
| double StandardDeviation(); | |
| int Count(); | |
| }; | |
| template <> | |
| class SampleStats<TimeDelta> { | |
| public: | |
| void AddSample(TimeDelta delta, Timestamp time); | |
| void AddSamples(const SampleStats<TimeDelta>& other); | |
| bool IsEmpty(); | |
| TimeDelta Max(); | |
| TimeDelta Mean(); | |
| TimeDelta Median(); | |
| TimeDelta Quantile(double quantile); | |
| TimeDelta Min(); | |
| TimeDelta Variance(); | |
| TimeDelta StandardDeviation(); | |
| int Count(); | |
| private: | |
| SampleStats<double> stats_; | |
| }; | |
| template <> | |
| class SampleStats<DataRate> { | |
| public: | |
| void AddSample(DataRate rate, Timestamp time); | |
| void AddSamples(const SampleStats<DataRate>& other); | |
| bool IsEmpty(); | |
| DataRate Max(); | |
| DataRate Mean(); | |
| DataRate Median(); | |
| DataRate Quantile(double quantile); | |
| DataRate Min(); | |
| DataRate Variance(); | |
| DataRate StandardDeviation(); | |
| int Count(); | |
| private: | |
| SampleStats<double> stats_; | |
| }; | |
| } // namespace webrtc | |
| #endif // RTC_BASE_NUMERICS_SAMPLE_STATS_H_ |