Files
external_libcamera/src/ipa/raspberrypi/controller/algorithm.h
T
Naushir Patuck cf6df17958 ipa: raspberrypi Store the target string in the controller
The target string may be used by algorithms to determine the running
hardware target.

Store the target string provided by the camera tuning files in the
controller state. Add a getTarget() member function to retrieve this
string.

Validate the correct hardware target ("bcm2835") during the IPA
initialisation phase.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
2023-03-31 13:29:17 +01:00

65 lines
1.4 KiB
C++

/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (C) 2019, Raspberry Pi Ltd
*
* algorithm.h - 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 "libcamera/internal/yaml_parser.h"
#include "controller.h"
namespace RPiController {
/* This defines the basic interface for all control algorithms. */
class Algorithm
{
public:
Algorithm(Controller *controller)
: controller_(controller)
{
}
virtual ~Algorithm() = default;
virtual char const *name() const = 0;
virtual int read(const libcamera::YamlObject &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();
}
const std::string &getTarget() const
{
return controller_->getTarget();
}
private:
Controller *controller_;
};
/*
* 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 */