Index: webrtc/modules/video_coding/utility/moving_average.h |
diff --git a/webrtc/modules/video_coding/utility/moving_average.h b/webrtc/modules/video_coding/utility/moving_average.h |
index cdad50f0f9096b3bd8df3f0ac2de49a7ec020a2c..2fd47c8fe7bd533a2ecb64c6d881e3e44792518b 100644 |
--- a/webrtc/modules/video_coding/utility/moving_average.h |
+++ b/webrtc/modules/video_coding/utility/moving_average.h |
@@ -13,61 +13,24 @@ |
#include <stddef.h> |
-#include <list> |
- |
-#include "webrtc/typedefs.h" |
+#include <vector> |
namespace webrtc { |
-template <class T> |
class MovingAverage { |
public: |
MovingAverage(); |
- void AddSample(T sample); |
- bool GetAverage(size_t num_samples, T* average); |
+ explicit MovingAverage(size_t s); |
+ void AddSample(int sample); |
+ int GetAverage() const; |
+ int GetAverage(size_t num_samples) const; |
void Reset(); |
- int size(); |
+ size_t size() const; |
private: |
- T sum_; |
- std::list<T> samples_; |
+ size_t count_ = 0; |
+ int sum_ = 0; |
+ std::vector<int> samples_; |
sakal
2016/09/05 12:28:11
This vector does not contain samples. Maybe sum_hi
|
}; |
- |
-template <class T> |
-MovingAverage<T>::MovingAverage() |
- : sum_(static_cast<T>(0)) {} |
- |
-template <class T> |
-void MovingAverage<T>::AddSample(T sample) { |
- samples_.push_back(sample); |
- sum_ += sample; |
-} |
- |
-template <class T> |
-bool MovingAverage<T>::GetAverage(size_t num_samples, T* avg) { |
- if (num_samples > samples_.size()) |
- return false; |
- |
- // Remove old samples. |
- while (num_samples < samples_.size()) { |
- sum_ -= samples_.front(); |
- samples_.pop_front(); |
- } |
- |
- *avg = sum_ / static_cast<T>(num_samples); |
- return true; |
-} |
- |
-template <class T> |
-void MovingAverage<T>::Reset() { |
- sum_ = static_cast<T>(0); |
- samples_.clear(); |
-} |
- |
-template <class T> |
-int MovingAverage<T>::size() { |
- return samples_.size(); |
-} |
- |
} // namespace webrtc |
#endif // WEBRTC_MODULES_VIDEO_CODING_UTILITY_MOVING_AVERAGE_H_ |