Move the code for the builtin benchmark to its own small Benchmark class. Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Milan Zamazal <mzamazal@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> [bod: Fixed up some drift in this patch since initial propostion] Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
40 lines
824 B
C++
40 lines
824 B
C++
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2024, Red Hat Inc.
|
|
*
|
|
* Authors:
|
|
* Hans de Goede <hdegoede@redhat.com>
|
|
*
|
|
* Simple builtin benchmark to measure software ISP processing times
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <time.h>
|
|
#include <libcamera/base/log.h>
|
|
#include "libcamera/internal/global_configuration.h"
|
|
|
|
namespace libcamera {
|
|
|
|
class Benchmark
|
|
{
|
|
public:
|
|
Benchmark(const GlobalConfiguration &configuration);
|
|
~Benchmark();
|
|
|
|
void startFrame(void);
|
|
void finishFrame(void);
|
|
|
|
private:
|
|
timespec frameStartTime_;
|
|
bool measure;
|
|
/* Skip 30 frames for things to stabilize then measure 30 frames */
|
|
unsigned int encounteredFrames_ = 0;
|
|
int64_t frameProcessTime_ = 0;
|
|
unsigned int skipBeforeMeasure_ = 30;
|
|
unsigned int framesToMeasure_ = 30;
|
|
};
|
|
|
|
} /* namespace libcamera */
|