summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ipa/rpi/controller/black_level_algorithm.h23
-rw-r--r--src/ipa/rpi/controller/rpi/black_level.cpp10
-rw-r--r--src/ipa/rpi/controller/rpi/black_level.h6
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 &params)
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 &params) override;
+ void initialValues(uint16_t &blackLevelR, uint16_t &blackLevelG,
+ uint16_t &blackLevelB) override;
void prepare(Metadata *imageMetadata) override;
private: