summaryrefslogtreecommitdiff
path: root/src/ipa/rkisp1/algorithms/lsc.h
diff options
context:
space:
mode:
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 */