/* * 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/units/data_rate.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" #include "rtc_base/numerics/samples_stats_counter.h" namespace webrtc { template class SampleStats; // TODO(srte): Merge this implementation with SamplesStatsCounter. template <> class SampleStats : public SamplesStatsCounter { public: double Max(); double Mean(); double Median(); double Quantile(double quantile); double Min(); double Variance(); double StandardDeviation(); int Count(); }; template <> class SampleStats { public: void AddSample(TimeDelta delta); void AddSampleMs(double delta_ms); void AddSamples(const SampleStats& other); bool IsEmpty(); TimeDelta Max(); TimeDelta Mean(); TimeDelta Median(); TimeDelta Quantile(double quantile); TimeDelta Min(); TimeDelta Variance(); TimeDelta StandardDeviation(); int Count(); private: SampleStats stats_; }; template <> class SampleStats { public: void AddSample(DataRate rate); void AddSampleBps(double rate_bps); void AddSamples(const SampleStats& other); bool IsEmpty(); DataRate Max(); DataRate Mean(); DataRate Median(); DataRate Quantile(double quantile); DataRate Min(); DataRate Variance(); DataRate StandardDeviation(); int Count(); private: SampleStats stats_; }; } // namespace webrtc #endif // RTC_BASE_NUMERICS_SAMPLE_STATS_H_