// 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 "chrome/browser/vr/sliding_average.h"

namespace vr {

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 vr
