summaryrefslogtreecommitdiff
path: root/src/ipa/rkisp1/algorithms/lsc.h
diff options
context:
space:
mode:
authorFlorian Sylvestre <fsylvestre@baylibre.com>2022-10-03 16:23:57 +0200
committerPaul Elder <paul.elder@ideasonboard.com>2022-11-12 17:32:46 +0900
commit14c869c00fdd79a93d06b506546051716a2f4623 (patch)
treeab0418535f915fbc16fad7e94e786c8e42338aab /src/ipa/rkisp1/algorithms/lsc.h
parentccfe0a1af77c3d13e81a913b25206d6a4a4747e4 (diff)
ipa: rkisp1: Take into account color temperature during LSC algorithm
Add coefficients sets in the YAML tuning file to allow using different set depending of the image color temperature (provided by AWB algorithm). During processing, LSC algorithm computes coefficients by doing a linear interpolation between the two closer set. Signed-off-by: Florian Sylvestre <fsylvestre@baylibre.com> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/ipa/rkisp1/algorithms/lsc.h')
-rw-r--r--src/ipa/rkisp1/algorithms/lsc.h26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/ipa/rkisp1/algorithms/lsc.h b/src/ipa/rkisp1/algorithms/lsc.h
index da81ea53..e2a93a56 100644
--- a/src/ipa/rkisp1/algorithms/lsc.h
+++ b/src/ipa/rkisp1/algorithms/lsc.h
@@ -7,6 +7,8 @@
#pragma once
+#include <map>
+
#include "algorithm.h"
namespace libcamera {
@@ -26,17 +28,31 @@ public:
rkisp1_params_cfg *params) override;
private:
- std::vector<uint16_t> rData_;
- std::vector<uint16_t> grData_;
- std::vector<uint16_t> gbData_;
- std::vector<uint16_t> bData_;
-
+ struct Components {
+ uint32_t ct;
+ std::vector<uint16_t> r;
+ std::vector<uint16_t> gr;
+ std::vector<uint16_t> gb;
+ std::vector<uint16_t> b;
+ };
+
+ void setParameters(rkisp1_params_cfg *params);
+ void copyTable(rkisp1_cif_isp_lsc_config &config, const Components &set0);
+ void interpolateTable(rkisp1_cif_isp_lsc_config &config,
+ const Components &set0, const Components &set1,
+ const uint32_t ct);
+
+ std::map<uint32_t, Components> sets_;
std::vector<double> xSize_;
std::vector<double> ySize_;
uint16_t xGrad_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
uint16_t yGrad_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
uint16_t xSizes_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
uint16_t ySizes_[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
+ struct {
+ uint32_t original;
+ uint32_t adjusted;
+ } lastCt_;
};
} /* namespace ipa::rkisp1::algorithms */