summaryrefslogtreecommitdiff
path: root/src/ipa/ipu3/algorithms/tone_mapping.h
diff options
context:
space:
mode:
authorJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-08-19 10:49:42 +0200
committerJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-08-20 12:11:28 +0200
commitfcf56b9716ad5722e21d2d345a8708c21c88ae03 (patch)
tree829d3e14f492c4c16bea81301a6d5162ce5f55c8 /src/ipa/ipu3/algorithms/tone_mapping.h
parent96dfda8e4b4ef3021f025ea295c10fec49e081d8 (diff)
ipa: ipu3: Introduce a modular tone mapping algorithm
Introduce a new algorithm to manage the tone mapping handling of the IPU3. The initial algorithm is chosen to configure the gamma contrast curve which moves the implementation out of AWB for simplicity. As it is initialised with a default gamma value of 1.1, there is no need to use the default table at initialisation anymore. This demonstrates the way to use process() call when the EventStatReady comes in. The function calculates the LUT in the context of a frame, and when prepare() is called, the parameters are filled with the updated values. AGC is modified to take the new process interface into account. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/ipa/ipu3/algorithms/tone_mapping.h')
-rw-r--r--src/ipa/ipu3/algorithms/tone_mapping.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/ipa/ipu3/algorithms/tone_mapping.h b/src/ipa/ipu3/algorithms/tone_mapping.h
new file mode 100644
index 00000000..1dae4f9a
--- /dev/null
+++ b/src/ipa/ipu3/algorithms/tone_mapping.h
@@ -0,0 +1,32 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2021, Google inc.
+ *
+ * tone_mapping.h - IPU3 ToneMapping and Gamma control
+ */
+#ifndef __LIBCAMERA_IPU3_ALGORITHMS_TONE_MAPPING_H__
+#define __LIBCAMERA_IPU3_ALGORITHMS_TONE_MAPPING_H__
+
+#include "algorithm.h"
+
+namespace libcamera {
+
+namespace ipa::ipu3::algorithms {
+
+class ToneMapping : public Algorithm
+{
+public:
+ ToneMapping();
+
+ void prepare(IPAContext &context, ipu3_uapi_params *params) override;
+ void process(IPAContext &context, const ipu3_uapi_stats_3a *stats) override;
+
+private:
+ double gamma_;
+};
+
+} /* namespace ipa::ipu3::algorithms */
+
+} /* namespace libcamera */
+
+#endif /* __LIBCAMERA_IPU3_ALGORITHMS_TONE_MAPPING_H__ */