pipeline: ipa: raspberrypi: Refactor and move the Raspberry Pi code

Split the Raspberry Pi pipeline handler and IPA source code into common
and VC4/BCM2835 specific file structures.

For the pipeline handler, the common code files now live in
src/libcamera/pipeline/rpi/common/
and the VC4-specific files in src/libcamera/pipeline/rpi/vc4/.

For the IPA, the common code files now live in
src/ipa/rpi/{cam_helper,controller}/
and the vc4 specific files in src/ipa/rpi/vc4/. With this change, the
camera tuning files are now installed under share/libcamera/ipa/rpi/vc4/.

To build the pipeline and IPA, the meson configuration options have now
changed from "raspberrypi" to "rpi/vc4":

meson setup build -Dipas=rpi/vc4 -Dpipelines=rpi/vc4

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Naushir Patuck
2023-05-04 20:47:40 +03:00
committed by Laurent Pinchart
parent 46aefed208
commit 726e9274ea
121 changed files with 172 additions and 109 deletions
+68
View File
@@ -0,0 +1,68 @@
/* 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();
}
const Controller::HardwareConfig &getHardwareConfig() const
{
return controller_->getHardwareConfig();
}
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 */