ipa: rpi: black_level: Add an initialValues method
This allows the IPA to discover the correct black level values even before any frames have been processed. This is important on the PiSP platform where the front end black level blocks must be programmed in advance. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
e71d63ce1b
commit
8892d937c5
3 changed files with 36 additions and 3 deletions
23
src/ipa/rpi/controller/black_level_algorithm.h
Normal file
23
src/ipa/rpi/controller/black_level_algorithm.h
Normal file
|
@ -0,0 +1,23 @@
|
|||
/* SPDX-License-Identifier: BSD-2-Clause */
|
||||
/*
|
||||
* Copyright (C) 2023, Raspberry Pi Ltd
|
||||
*
|
||||
* black_level_algorithm.h - black level control algorithm interface
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "algorithm.h"
|
||||
|
||||
namespace RPiController {
|
||||
|
||||
class BlackLevelAlgorithm : public Algorithm
|
||||
{
|
||||
public:
|
||||
BlackLevelAlgorithm(Controller *controller)
|
||||
: Algorithm(controller) {}
|
||||
/* A black level algorithm must provide the following: */
|
||||
virtual void initialValues(uint16_t &blackLevelR, uint16_t &blackLevelG,
|
||||
uint16_t &blackLevelB) = 0;
|
||||
};
|
||||
|
||||
} /* namespace RPiController */
|
|
@ -22,7 +22,7 @@ LOG_DEFINE_CATEGORY(RPiBlackLevel)
|
|||
#define NAME "rpi.black_level"
|
||||
|
||||
BlackLevel::BlackLevel(Controller *controller)
|
||||
: Algorithm(controller)
|
||||
: BlackLevelAlgorithm(controller)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -45,6 +45,14 @@ int BlackLevel::read(const libcamera::YamlObject ¶ms)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void BlackLevel::initialValues(uint16_t &blackLevelR, uint16_t &blackLevelG,
|
||||
uint16_t &blackLevelB)
|
||||
{
|
||||
blackLevelR = blackLevelR_;
|
||||
blackLevelG = blackLevelG_;
|
||||
blackLevelB = blackLevelB_;
|
||||
}
|
||||
|
||||
void BlackLevel::prepare(Metadata *imageMetadata)
|
||||
{
|
||||
/*
|
||||
|
|
|
@ -6,19 +6,21 @@
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "../algorithm.h"
|
||||
#include "../black_level_algorithm.h"
|
||||
#include "../black_level_status.h"
|
||||
|
||||
/* This is our implementation of the "black level algorithm". */
|
||||
|
||||
namespace RPiController {
|
||||
|
||||
class BlackLevel : public Algorithm
|
||||
class BlackLevel : public BlackLevelAlgorithm
|
||||
{
|
||||
public:
|
||||
BlackLevel(Controller *controller);
|
||||
char const *name() const override;
|
||||
int read(const libcamera::YamlObject ¶ms) override;
|
||||
void initialValues(uint16_t &blackLevelR, uint16_t &blackLevelG,
|
||||
uint16_t &blackLevelB) override;
|
||||
void prepare(Metadata *imageMetadata) override;
|
||||
|
||||
private:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue