Message ID | 20241119103740.1919807-2-stefan.klug@ideasonboard.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi Stefan, Thank you for the patch. On Tue, Nov 19, 2024 at 11:37:28AM +0100, Stefan Klug wrote: > The upcoming patches will introduce a Matrix class into > libcamera/internal. That name clashes with the Matrix class from the > RaspeberryPi ccm implementation. Rename the rpi version to Matrix3x3 to s/RaspeberryPi/RaspberryPi/ > 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> > --- > src/ipa/rpi/controller/rpi/ccm.cpp | 18 +++++++++--------- > src/ipa/rpi/controller/rpi/ccm.h | 20 ++++++++++---------- > 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 aefa580c9a4b..7f63f3fdb702 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 ¶ms) > +int Matrix3x3::read(const libcamera::YamlObject ¶ms) > { > 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 4e5b33fefa4e..8e7f9616c2ab 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 ¶ms); > }; > -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 {
diff --git a/src/ipa/rpi/controller/rpi/ccm.cpp b/src/ipa/rpi/controller/rpi/ccm.cpp index aefa580c9a4b..7f63f3fdb702 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 ¶ms) +int Matrix3x3::read(const libcamera::YamlObject ¶ms) { 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 4e5b33fefa4e..8e7f9616c2ab 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 ¶ms); }; -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 {
The upcoming patches will introduce a Matrix class into libcamera/internal. That name clashes with the Matrix class from the RaspeberryPi 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> --- src/ipa/rpi/controller/rpi/ccm.cpp | 18 +++++++++--------- src/ipa/rpi/controller/rpi/ccm.h | 20 ++++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-)