[libcamera-devel] [PATCH v4 4/4] ipa: ipu3: awb: Clamp gain values
Jean-Michel Hautbois
jeanmichel.hautbois at ideasonboard.com
Thu Feb 24 16:11:13 CET 2022
The gain values are coded as u3.13 fixed point values, ie they can not
be more than 8. Clampt the values in order to avoid any off limits value
which could make the IPU3 behave weirdly.
Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
---
src/ipa/ipu3/algorithms/awb.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/ipa/ipu3/algorithms/awb.cpp b/src/ipa/ipu3/algorithms/awb.cpp
index 1dc27fc9..dc25be81 100644
--- a/src/ipa/ipu3/algorithms/awb.cpp
+++ b/src/ipa/ipu3/algorithms/awb.cpp
@@ -353,6 +353,14 @@ void Awb::awbGreyWorld()
/* Color temperature is not relevant in Grey world but still useful to estimate it :-) */
asyncResults_.temperatureK = estimateCCT(sumRed.R, sumRed.G, sumBlue.B);
+
+ /*
+ * Gain values are unsigned integer value, range 0 to 8 with 13 bit
+ * fractional part.
+ */
+ redGain = std::clamp(redGain, 0.0, 65535.0 / 8192);
+ blueGain = std::clamp(blueGain, 0.0, 65535.0 / 8192);
+
asyncResults_.redGain = redGain;
/* Hardcode the green gain to 1.0. */
asyncResults_.greenGain = 1.0;
--
2.32.0
More information about the libcamera-devel
mailing list