blob: 3ed09674d1757206416aedd5bf40aeced2734d1f [file] [log] [blame]
// 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/fps_meter.h"
namespace vr {
namespace {
static constexpr size_t kDefaultNumFrameTimes = 10;
} // namespace
FPSMeter::FPSMeter() : frame_times_(kDefaultNumFrameTimes) {}
FPSMeter::FPSMeter(size_t window_size) : frame_times_(window_size) {}
FPSMeter::~FPSMeter() = default;
size_t FPSMeter::GetNumFrameTimes() {
return frame_times_.GetWindowSize();
}
void FPSMeter::AddFrame(const base::TimeTicks& time_stamp) {
if (last_time_stamp_.is_null()) {
last_time_stamp_ = time_stamp;
return;
}
int64_t delta = (time_stamp - last_time_stamp_).InMicroseconds();
last_time_stamp_ = time_stamp;
frame_times_.AddSample(delta);
}
bool FPSMeter::CanComputeFPS() const {
return frame_times_.GetCount() > 0;
}
// Simply takes the average time delta.
double FPSMeter::GetFPS() const {
if (!CanComputeFPS())
return 0.0;
return (frame_times_.GetCount() * 1.0e6) / frame_times_.GetSum();
}
} // namespace vr