| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "device/vr/util/sliding_average.h" |
| |
| namespace device { |
| |
| SlidingAverage::SlidingAverage(size_t window_size) : values_(window_size) {} |
| |
| SlidingAverage::~SlidingAverage() = default; |
| |
| void SlidingAverage::AddSample(int64_t value) { |
| values_.AddSample(value); |
| } |
| |
| int64_t SlidingAverage::GetAverageOrDefault(int64_t default_value) const { |
| if (values_.GetCount() == 0) |
| return default_value; |
| return values_.GetSum() / values_.GetCount(); |
| } |
| |
| SlidingTimeDeltaAverage::SlidingTimeDeltaAverage(size_t window_size) |
| : sample_microseconds_(window_size) {} |
| |
| SlidingTimeDeltaAverage::~SlidingTimeDeltaAverage() = default; |
| |
| void SlidingTimeDeltaAverage::AddSample(base::TimeDelta value) { |
| sample_microseconds_.AddSample(value.InMicroseconds()); |
| } |
| |
| base::TimeDelta SlidingTimeDeltaAverage::GetAverageOrDefault( |
| base::TimeDelta default_value) const { |
| return base::TimeDelta::FromMicroseconds( |
| sample_microseconds_.GetAverageOrDefault(default_value.InMicroseconds())); |
| } |
| |
| } // namespace device |