libcamera: ipa: simple: Apply gain matrix in awb

Now, when we have a combined matrix, we can apply AWB gains to it
directly in awb.cpp.

Reviewed-by: Robert Mader <robert.mader@collabora.com>
Signed-off-by: Milan Zamazal <mzamazal@redhat.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Milan Zamazal
2026-01-28 12:43:57 +01:00
committed by Kieran Bingham
parent 0f01a68086
commit da0926bc4b
2 changed files with 6 additions and 4 deletions

View File

@@ -40,6 +40,11 @@ void Awb::prepare(IPAContext &context,
[[maybe_unused]] DebayerParams *params)
{
auto &gains = context.activeState.awb.gains;
Matrix<float, 3, 3> gainMatrix = { { gains.r(), 0, 0,
0, gains.g(), 0,
0, 0, gains.b() } };
context.activeState.combinedMatrix =
context.activeState.combinedMatrix * gainMatrix;
/* Just report, the gains are applied in LUT algorithm. */
frameContext.gains.red = gains.r();
frameContext.gains.blue = gains.b();

View File

@@ -107,10 +107,7 @@ void Lut::prepare(IPAContext &context,
params->blue[i] = gammaTable[static_cast<unsigned int>(lutGains.b())];
}
} else if (context.activeState.matrixChanged || gammaUpdateNeeded) {
Matrix<float, 3, 3> gainMatrix = { { gains.r(), 0, 0,
0, gains.g(), 0,
0, 0, gains.b() } };
auto matrix = context.activeState.combinedMatrix * gainMatrix;
auto &matrix = context.activeState.combinedMatrix;
auto &red = params->redCcm;
auto &green = params->greenCcm;
auto &blue = params->blueCcm;