[RFC,v2,05/13] libcamera: ipa: simple: Introduce a general correction matrix
diff mbox series

Message ID 20251120104548.80268-6-mzamazal@redhat.com
State New
Headers show
Series
  • Simple pipeline IPA cleanup
Related show

Commit Message

Milan Zamazal Nov. 20, 2025, 10:45 a.m. UTC
Let's introduce IPAActiveState::combinedMatrix that is separate from
IPAActiveState::ccm and represents the overall correction matrix, not
only the sensor colour correction matrix.

IPAActiveState::ccm still includes everything; this is changed in the
followup patch.

Signed-off-by: Milan Zamazal <mzamazal@redhat.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Milan Zamazal <mzamazal@redhat.com>
---
 src/ipa/simple/algorithms/ccm.cpp | 1 +
 src/ipa/simple/algorithms/lut.cpp | 2 +-
 src/ipa/simple/ipa_context.h      | 1 +
 3 files changed, 3 insertions(+), 1 deletion(-)

Patch
diff mbox series

diff --git a/src/ipa/simple/algorithms/ccm.cpp b/src/ipa/simple/algorithms/ccm.cpp
index e05e5bc28..a3e8cd6c4 100644
--- a/src/ipa/simple/algorithms/ccm.cpp
+++ b/src/ipa/simple/algorithms/ccm.cpp
@@ -104,6 +104,7 @@  void Ccm::prepare(IPAContext &context, const uint32_t frame,
 	if (saturation)
 		applySaturation(ccm, saturation.value());
 
+	context.activeState.combinedMatrix = ccm;
 	context.activeState.ccm = ccm;
 	frameContext.saturation = saturation;
 	context.activeState.matrixChanged = true;
diff --git a/src/ipa/simple/algorithms/lut.cpp b/src/ipa/simple/algorithms/lut.cpp
index 39d8cca1d..fe8db65ea 100644
--- a/src/ipa/simple/algorithms/lut.cpp
+++ b/src/ipa/simple/algorithms/lut.cpp
@@ -129,7 +129,7 @@  void Lut::prepare(IPAContext &context,
 		Matrix<float, 3, 3> gainMatrix = { { gains.r(), 0, 0,
 						     0, gains.g(), 0,
 						     0, 0, gains.b() } };
-		auto matrix = context.activeState.ccm * gainMatrix;
+		auto matrix = context.activeState.combinedMatrix * gainMatrix;
 		auto &red = params->redCcm;
 		auto &green = params->greenCcm;
 		auto &blue = params->blueCcm;
diff --git a/src/ipa/simple/ipa_context.h b/src/ipa/simple/ipa_context.h
index b6b3cbfed..c69d59780 100644
--- a/src/ipa/simple/ipa_context.h
+++ b/src/ipa/simple/ipa_context.h
@@ -61,6 +61,7 @@  struct IPAActiveState {
 	} gamma;
 
 	Matrix<float, 3, 3> ccm;
+	Matrix<float, 3, 3> combinedMatrix;
 	bool matrixChanged = false;
 
 	struct {