| Message ID | 20251127022256.178929-20-bryan.odonoghue@linaro.org |
|---|---|
| State | New |
| Headers | show |
| Series |
|
| Related | show |
Quoting Bryan O'Donoghue (2025-11-27 02:22:51) > Provide the CCM calculated in LUT to the debayer params structure for > consumption in the debayer shaders. > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- > include/libcamera/internal/software_isp/debayer_params.h | 7 +++++++ > src/ipa/simple/algorithms/lut.cpp | 1 + > src/libcamera/software_isp/debayer.cpp | 5 +++++ > 3 files changed, 13 insertions(+) > > diff --git a/include/libcamera/internal/software_isp/debayer_params.h b/include/libcamera/internal/software_isp/debayer_params.h > index 217cd5d92..4b203e211 100644 > --- a/include/libcamera/internal/software_isp/debayer_params.h > +++ b/include/libcamera/internal/software_isp/debayer_params.h > @@ -13,6 +13,8 @@ > #include <array> > #include <stdint.h> > > +#include "libcamera/internal/matrix.h" > + > namespace libcamera { > > struct DebayerParams { > @@ -49,6 +51,11 @@ struct DebayerParams { > CcmLookupTable greenCcm; > CcmLookupTable blueCcm; > LookupTable gammaLut; > + > + /* > + * Per frame corrections as calculated by the IPA > + */ > + Matrix<float, 3, 3> ccm; > }; > > } /* namespace libcamera */ > diff --git a/src/ipa/simple/algorithms/lut.cpp b/src/ipa/simple/algorithms/lut.cpp > index d4a79e101..49482d711 100644 > --- a/src/ipa/simple/algorithms/lut.cpp > +++ b/src/ipa/simple/algorithms/lut.cpp > @@ -133,6 +133,7 @@ void Lut::prepare(IPAContext &context, > auto &red = params->redCcm; > auto &green = params->greenCcm; > auto &blue = params->blueCcm; > + params->ccm = ccm; > for (unsigned int i = 0; i < DebayerParams::kRGBLookupSize; i++) { > red[i].r = ccmValue(i, ccm[0][0]); > red[i].g = ccmValue(i, ccm[1][0]); > diff --git a/src/libcamera/software_isp/debayer.cpp b/src/libcamera/software_isp/debayer.cpp > index 1d135b278..4ec76dce6 100644 > --- a/src/libcamera/software_isp/debayer.cpp > +++ b/src/libcamera/software_isp/debayer.cpp > @@ -100,6 +100,11 @@ namespace libcamera { > * \brief Gamma lookup table used with color correction matrix > */ > > + /** > + * \var DebayerParams::ccm > + * \brief Per frame colour correction matrix for GPUISP > + */ > + lint: This is incorrectly indented, but easily fixed: Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > /** > * \class Debayer > * \brief Base debayering class > -- > 2.51.2 >
diff --git a/include/libcamera/internal/software_isp/debayer_params.h b/include/libcamera/internal/software_isp/debayer_params.h index 217cd5d92..4b203e211 100644 --- a/include/libcamera/internal/software_isp/debayer_params.h +++ b/include/libcamera/internal/software_isp/debayer_params.h @@ -13,6 +13,8 @@ #include <array> #include <stdint.h> +#include "libcamera/internal/matrix.h" + namespace libcamera { struct DebayerParams { @@ -49,6 +51,11 @@ struct DebayerParams { CcmLookupTable greenCcm; CcmLookupTable blueCcm; LookupTable gammaLut; + + /* + * Per frame corrections as calculated by the IPA + */ + Matrix<float, 3, 3> ccm; }; } /* namespace libcamera */ diff --git a/src/ipa/simple/algorithms/lut.cpp b/src/ipa/simple/algorithms/lut.cpp index d4a79e101..49482d711 100644 --- a/src/ipa/simple/algorithms/lut.cpp +++ b/src/ipa/simple/algorithms/lut.cpp @@ -133,6 +133,7 @@ void Lut::prepare(IPAContext &context, auto &red = params->redCcm; auto &green = params->greenCcm; auto &blue = params->blueCcm; + params->ccm = ccm; for (unsigned int i = 0; i < DebayerParams::kRGBLookupSize; i++) { red[i].r = ccmValue(i, ccm[0][0]); red[i].g = ccmValue(i, ccm[1][0]); diff --git a/src/libcamera/software_isp/debayer.cpp b/src/libcamera/software_isp/debayer.cpp index 1d135b278..4ec76dce6 100644 --- a/src/libcamera/software_isp/debayer.cpp +++ b/src/libcamera/software_isp/debayer.cpp @@ -100,6 +100,11 @@ namespace libcamera { * \brief Gamma lookup table used with color correction matrix */ + /** + * \var DebayerParams::ccm + * \brief Per frame colour correction matrix for GPUISP + */ + /** * \class Debayer * \brief Base debayering class
Provide the CCM calculated in LUT to the debayer params structure for consumption in the debayer shaders. Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> --- include/libcamera/internal/software_isp/debayer_params.h | 7 +++++++ src/ipa/simple/algorithms/lut.cpp | 1 + src/libcamera/software_isp/debayer.cpp | 5 +++++ 3 files changed, 13 insertions(+)