[libcamera-devel] [PATCH v2 10/14] ipa: ipu3: awb: Add support for color temperature

Jean-Michel Hautbois jeanmichel.hautbois at ideasonboard.com
Wed Nov 10 20:58:57 CET 2021


The AWB estimates the color temperature, but it is not used at all. It
can be useful for debug purpose at least, but also for lux estimation
later, to be able to know the temperature estimated for a given frame.

Add a new member to the IPAFrameContext::awb for this purpose, and
update the value in AWB.

Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
 src/ipa/ipu3/algorithms/awb.cpp | 1 +
 src/ipa/ipu3/ipa_context.cpp    | 3 +++
 src/ipa/ipu3/ipa_context.h      | 2 ++
 3 files changed, 6 insertions(+)

diff --git a/src/ipa/ipu3/algorithms/awb.cpp b/src/ipa/ipu3/algorithms/awb.cpp
index a4114659..c7bcb20e 100644
--- a/src/ipa/ipu3/algorithms/awb.cpp
+++ b/src/ipa/ipu3/algorithms/awb.cpp
@@ -385,6 +385,7 @@ void Awb::process(IPAContext &context, const ipu3_uapi_stats_3a *stats)
 	context.frameContext.awb.gains.blue = asyncResults_.blueGain;
 	context.frameContext.awb.gains.green = asyncResults_.greenGain;
 	context.frameContext.awb.gains.red = asyncResults_.redGain;
+	context.frameContext.awb.temperatureK = asyncResults_.temperatureK;
 }
 
 constexpr uint16_t Awb::threshold(float value)
diff --git a/src/ipa/ipu3/ipa_context.cpp b/src/ipa/ipu3/ipa_context.cpp
index 2355a9c7..0205640e 100644
--- a/src/ipa/ipu3/ipa_context.cpp
+++ b/src/ipa/ipu3/ipa_context.cpp
@@ -117,6 +117,9 @@ namespace libcamera::ipa::ipu3 {
  *
  * \var IPAFrameContext::awb.gains.blue
  * \brief White balance gain for B channel
+ *
+ * \var IPAFrameContext::awb.temperatureK
+ * \brief Estimated color temperature
  */
 
 /**
diff --git a/src/ipa/ipu3/ipa_context.h b/src/ipa/ipu3/ipa_context.h
index 1e46c61a..e1087224 100644
--- a/src/ipa/ipu3/ipa_context.h
+++ b/src/ipa/ipu3/ipa_context.h
@@ -45,6 +45,8 @@ struct IPAFrameContext {
 			double green;
 			double blue;
 		} gains;
+
+		double temperatureK;
 	} awb;
 
 	struct {
-- 
2.32.0



More information about the libcamera-devel mailing list