summaryrefslogtreecommitdiff
path: root/src/ipa/rkisp1/algorithms/awb.h
diff options
context:
space:
mode:
authorJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2022-02-24 15:39:50 +0100
committerJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2022-03-28 12:31:37 +0200
commit4b2251509f1543d018fea577e7e2760bb913ee86 (patch)
tree8f6572579fbd2be8823b6c3fc2ac9a25b2c612ee /src/ipa/rkisp1/algorithms/awb.h
parent8917c9e7ba642285ae33a7b9cee9cb4a22c76482 (diff)
ipa: rkisp1: Introduce AWB
The RkISP1 ISP calculates a mean value for Y, Cr and Cb at each frame. There is a RGB mode which could theoretically give us the values for R, G and B directly, but it seems to be failing right now. Convert those values into R, G and B and estimate the gain to apply in a grey world. Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Tested-by: Peter Griffin <peter.griffin@linaro.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/ipa/rkisp1/algorithms/awb.h')
-rw-r--r--src/ipa/rkisp1/algorithms/awb.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/ipa/rkisp1/algorithms/awb.h b/src/ipa/rkisp1/algorithms/awb.h
new file mode 100644
index 00000000..11946643
--- /dev/null
+++ b/src/ipa/rkisp1/algorithms/awb.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2021-2022, Ideas On Board
+ *
+ * awb.h - AWB control algorithm
+ */
+
+#pragma once
+
+#include <linux/rkisp1-config.h>
+
+#include "algorithm.h"
+
+namespace libcamera {
+
+namespace ipa::rkisp1::algorithms {
+
+class Awb : public Algorithm
+{
+public:
+ Awb() = default;
+ ~Awb() = default;
+
+ int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
+ void prepare(IPAContext &context, rkisp1_params_cfg *params) override;
+ void process(IPAContext &context, const rkisp1_stat_buffer *stats) override;
+
+private:
+ uint32_t estimateCCT(double red, double green, double blue);
+};
+
+} /* namespace ipa::rkisp1::algorithms */
+} /* namespace libcamera */