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:
parent
46aefed208
commit
726e9274ea
121 changed files with 172 additions and 109 deletions
|
@ -1,73 +0,0 @@
|
|||
/* SPDX-License-Identifier: BSD-2-Clause */
|
||||
/*
|
||||
* Copyright (C) 2019, Raspberry Pi Ltd
|
||||
*
|
||||
* controller.h - ISP controller interface
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
/*
|
||||
* The Controller is simply a container for a collecting together a number of
|
||||
* "control algorithms" (such as AWB etc.) and for running them all in a
|
||||
* convenient manner.
|
||||
*/
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
#include "libcamera/internal/yaml_parser.h"
|
||||
|
||||
#include "camera_mode.h"
|
||||
#include "device_status.h"
|
||||
#include "metadata.h"
|
||||
#include "statistics.h"
|
||||
|
||||
namespace RPiController {
|
||||
|
||||
class Algorithm;
|
||||
typedef std::unique_ptr<Algorithm> AlgorithmPtr;
|
||||
|
||||
/*
|
||||
* The Controller holds a pointer to some global_metadata, which is how
|
||||
* different controllers and control algorithms within them can exchange
|
||||
* information. The Prepare function returns a pointer to metadata for this
|
||||
* specific image, and which should be passed on to the Process function.
|
||||
*/
|
||||
|
||||
class Controller
|
||||
{
|
||||
public:
|
||||
struct HardwareConfig {
|
||||
libcamera::Size agcRegions;
|
||||
libcamera::Size agcZoneWeights;
|
||||
libcamera::Size awbRegions;
|
||||
libcamera::Size focusRegions;
|
||||
unsigned int numHistogramBins;
|
||||
unsigned int numGammaPoints;
|
||||
unsigned int pipelineWidth;
|
||||
};
|
||||
|
||||
Controller();
|
||||
~Controller();
|
||||
int read(char const *filename);
|
||||
void initialise();
|
||||
void switchMode(CameraMode const &cameraMode, Metadata *metadata);
|
||||
void prepare(Metadata *imageMetadata);
|
||||
void process(StatisticsPtr stats, Metadata *imageMetadata);
|
||||
Metadata &getGlobalMetadata();
|
||||
Algorithm *getAlgorithm(std::string const &name) const;
|
||||
const std::string &getTarget() const;
|
||||
const HardwareConfig &getHardwareConfig() const;
|
||||
|
||||
protected:
|
||||
int createAlgorithm(const std::string &name, const libcamera::YamlObject ¶ms);
|
||||
|
||||
Metadata globalMetadata_;
|
||||
std::vector<AlgorithmPtr> algorithms_;
|
||||
bool switchModeCalled_;
|
||||
|
||||
private:
|
||||
std::string target_;
|
||||
};
|
||||
|
||||
} /* namespace RPiController */
|
Loading…
Add table
Add a link
Reference in a new issue