diff options
-rw-r--r-- | src/ipa/rpi/controller/black_level_algorithm.h | 23 | ||||
-rw-r--r-- | src/ipa/rpi/controller/rpi/black_level.cpp | 10 | ||||
-rw-r--r-- | src/ipa/rpi/controller/rpi/black_level.h | 6 |
3 files changed, 36 insertions, 3 deletions
diff --git a/src/ipa/rpi/controller/black_level_algorithm.h b/src/ipa/rpi/controller/black_level_algorithm.h new file mode 100644 index 00000000..c2cff2f5 --- /dev/null +++ b/src/ipa/rpi/controller/black_level_algorithm.h @@ -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 */ diff --git a/src/ipa/rpi/controller/rpi/black_level.cpp b/src/ipa/rpi/controller/rpi/black_level.cpp index 85baec3f..2e3db51f 100644 --- a/src/ipa/rpi/controller/rpi/black_level.cpp +++ b/src/ipa/rpi/controller/rpi/black_level.cpp @@ -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) { /* diff --git a/src/ipa/rpi/controller/rpi/black_level.h b/src/ipa/rpi/controller/rpi/black_level.h index 2403f7f7..d8c41c62 100644 --- a/src/ipa/rpi/controller/rpi/black_level.h +++ b/src/ipa/rpi/controller/rpi/black_level.h @@ -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: |