cf6df17958
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>
65 lines
1.4 KiB
C++
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 ¶ms);
|
|
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 */
|