libcamera/src/ipa/raspberrypi/controller/algorithm.hpp
Naushir Patuck acd5d9979f ipa: raspberrypi: Change to C style code comments
As part of the on-going refactor efforts for the source files in
src/ipa/raspberrypi/, switch all C++ style comments to C style comments.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2022-07-27 18:12:13 +03:00

64 lines
1.5 KiB
C++

/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (C) 2019, Raspberry Pi (Trading) Limited
*
* algorithm.hpp - ISP control algorithm interface
*/
#pragma once
/*
* All algorithms should be derived from this class and made available to the
* Controller.
*/
#include <string>
#include <memory>
#include <map>
#include "controller.hpp"
#include <boost/property_tree/ptree.hpp>
namespace RPiController {
/* This defines the basic interface for all control algorithms. */
class Algorithm
{
public:
Algorithm(Controller *controller)
: controller_(controller), paused_(false)
{
}
virtual ~Algorithm() = default;
virtual char const *name() const = 0;
virtual bool isPaused() const { return paused_; }
virtual void pause() { paused_ = true; }
virtual void resume() { paused_ = false; }
virtual void read(boost::property_tree::ptree const &params);
virtual void initialise();
virtual void switchMode(CameraMode const &cameraMode, Metadata *metadata);
virtual void prepare(Metadata *imageMetadata);
virtual void process(StatisticsPtr &stats, Metadata *imageMetadata);
Metadata &getGlobalMetadata() const
{
return controller_->getGlobalMetadata();
}
private:
Controller *controller_;
bool paused_;
};
/*
* This code is for automatic registration of Front End algorithms with the
* system.
*/
typedef Algorithm *(*AlgoCreateFunc)(Controller *controller);
struct RegisterAlgorithm {
RegisterAlgorithm(char const *name, AlgoCreateFunc createFunc);
};
std::map<std::string, AlgoCreateFunc> const &getAlgorithms();
} /* namespace RPiController */