summaryrefslogtreecommitdiff
path: root/src/ipa/rpi/controller
diff options
context:
space:
mode:
authorStefan Klug <stefan.klug@ideasonboard.com>2024-11-18 17:47:04 +0100
committerStefan Klug <stefan.klug@ideasonboard.com>2024-12-03 17:47:14 +0100
commit6f3b07e649e7a7859530f4e7d681b3915da6af6b (patch)
tree098806d9d4e37124da938dbd112f134809b31d3d /src/ipa/rpi/controller
parent2a9b0b34f8cb2295cd41a5340a9d26231dcd3e4b (diff)
ipa: rpi: Rename Matrix to Matrix3x3
The upcoming patches will introduce a Matrix class into libcamera/internal. That name clashes with the Matrix class from the RaspberryPi ccm implementation. Rename the rpi version to Matrix3x3 to prevent the name clash. Matrix3x3 will be replaced by the generic implementation later. Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/ipa/rpi/controller')
-rw-r--r--src/ipa/rpi/controller/rpi/ccm.cpp18
-rw-r--r--src/ipa/rpi/controller/rpi/ccm.h20
2 files changed, 19 insertions, 19 deletions
diff --git a/src/ipa/rpi/controller/rpi/ccm.cpp b/src/ipa/rpi/controller/rpi/ccm.cpp
index aefa580c..7f63f3fd 100644
--- a/src/ipa/rpi/controller/rpi/ccm.cpp
+++ b/src/ipa/rpi/controller/rpi/ccm.cpp
@@ -29,17 +29,17 @@ LOG_DEFINE_CATEGORY(RPiCcm)
#define NAME "rpi.ccm"
-Matrix::Matrix()
+Matrix3x3::Matrix3x3()
{
memset(m, 0, sizeof(m));
}
-Matrix::Matrix(double m0, double m1, double m2, double m3, double m4, double m5,
+Matrix3x3::Matrix3x3(double m0, double m1, double m2, double m3, double m4, double m5,
double m6, double m7, double m8)
{
m[0][0] = m0, m[0][1] = m1, m[0][2] = m2, m[1][0] = m3, m[1][1] = m4,
m[1][2] = m5, m[2][0] = m6, m[2][1] = m7, m[2][2] = m8;
}
-int Matrix::read(const libcamera::YamlObject &params)
+int Matrix3x3::read(const libcamera::YamlObject &params)
{
double *ptr = (double *)m;
@@ -125,7 +125,7 @@ bool getLocked(Metadata *metadata, std::string const &tag, T &value)
return true;
}
-Matrix calculateCcm(std::vector<CtCcm> const &ccms, double ct)
+Matrix3x3 calculateCcm(std::vector<CtCcm> const &ccms, double ct)
{
if (ct <= ccms.front().ct)
return ccms.front().ccm;
@@ -141,13 +141,13 @@ Matrix calculateCcm(std::vector<CtCcm> const &ccms, double ct)
}
}
-Matrix applySaturation(Matrix const &ccm, double saturation)
+Matrix3x3 applySaturation(Matrix3x3 const &ccm, double saturation)
{
- Matrix RGB2Y(0.299, 0.587, 0.114, -0.169, -0.331, 0.500, 0.500, -0.419,
+ Matrix3x3 RGB2Y(0.299, 0.587, 0.114, -0.169, -0.331, 0.500, 0.500, -0.419,
-0.081);
- Matrix Y2RGB(1.000, 0.000, 1.402, 1.000, -0.345, -0.714, 1.000, 1.771,
+ Matrix3x3 Y2RGB(1.000, 0.000, 1.402, 1.000, -0.345, -0.714, 1.000, 1.771,
0.000);
- Matrix S(1, 0, 0, 0, saturation, 0, 0, 0, saturation);
+ Matrix3x3 S(1, 0, 0, 0, saturation, 0, 0, 0, saturation);
return Y2RGB * S * RGB2Y * ccm;
}
@@ -170,7 +170,7 @@ void Ccm::prepare(Metadata *imageMetadata)
LOG(RPiCcm, Warning) << "no colour temperature found";
if (!luxOk)
LOG(RPiCcm, Warning) << "no lux value found";
- Matrix ccm = calculateCcm(config_.ccms, awb.temperatureK);
+ Matrix3x3 ccm = calculateCcm(config_.ccms, awb.temperatureK);
double saturation = saturation_;
struct CcmStatus ccmStatus;
ccmStatus.saturation = saturation;
diff --git a/src/ipa/rpi/controller/rpi/ccm.h b/src/ipa/rpi/controller/rpi/ccm.h
index 4e5b33fe..8e7f9616 100644
--- a/src/ipa/rpi/controller/rpi/ccm.h
+++ b/src/ipa/rpi/controller/rpi/ccm.h
@@ -16,22 +16,22 @@ namespace RPiController {
/* Algorithm to calculate colour matrix. Should be placed after AWB. */
-struct Matrix {
- Matrix(double m0, double m1, double m2, double m3, double m4, double m5,
+struct Matrix3x3 {
+ Matrix3x3(double m0, double m1, double m2, double m3, double m4, double m5,
double m6, double m7, double m8);
- Matrix();
+ Matrix3x3();
double m[3][3];
int read(const libcamera::YamlObject &params);
};
-static inline Matrix operator*(double d, Matrix const &m)
+static inline Matrix3x3 operator*(double d, Matrix3x3 const &m)
{
- return Matrix(m.m[0][0] * d, m.m[0][1] * d, m.m[0][2] * d,
+ return Matrix3x3(m.m[0][0] * d, m.m[0][1] * d, m.m[0][2] * d,
m.m[1][0] * d, m.m[1][1] * d, m.m[1][2] * d,
m.m[2][0] * d, m.m[2][1] * d, m.m[2][2] * d);
}
-static inline Matrix operator*(Matrix const &m1, Matrix const &m2)
+static inline Matrix3x3 operator*(Matrix3x3 const &m1, Matrix3x3 const &m2)
{
- Matrix m;
+ Matrix3x3 m;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
m.m[i][j] = m1.m[i][0] * m2.m[0][j] +
@@ -39,9 +39,9 @@ static inline Matrix operator*(Matrix const &m1, Matrix const &m2)
m1.m[i][2] * m2.m[2][j];
return m;
}
-static inline Matrix operator+(Matrix const &m1, Matrix const &m2)
+static inline Matrix3x3 operator+(Matrix3x3 const &m1, Matrix3x3 const &m2)
{
- Matrix m;
+ Matrix3x3 m;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
m.m[i][j] = m1.m[i][j] + m2.m[i][j];
@@ -50,7 +50,7 @@ static inline Matrix operator+(Matrix const &m1, Matrix const &m2)
struct CtCcm {
double ct;
- Matrix ccm;
+ Matrix3x3 ccm;
};
struct CcmConfig {