summaryrefslogtreecommitdiff
path: root/src/ipa/rkisp1/algorithms
diff options
context:
space:
mode:
authorUmang Jain <umang.jain@ideasonboard.com>2022-05-17 22:12:33 +0530
committerKieran Bingham <kieran.bingham@ideasonboard.com>2022-05-18 15:27:32 +0100
commit8b291bce82f7cc8307e8ef55ff20e3f41462fa3f (patch)
tree342247f930b0b5544c536cfa6d12ae02d262c63a /src/ipa/rkisp1/algorithms
parentbab437df1fb02046fc8dfd4bb5457e0b60ce3213 (diff)
ipa: libipa: Add frame context pointer in process()
Currently we have a single structure of IPAFrameContext but subsequently, we shall have a ring buffer (or similar) container to keep IPAFrameContext structures for each frame. It would be a hassle to query out the frame context required for process() (since they will reside in a ring buffer) by the IPA for each process. Hence, prepare the process() libipa template to accept a particular IPAFrameContext early on. As for this patch, we shall pass in the pointer as nullptr, so that the changes compile and keep working as-is. Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/ipa/rkisp1/algorithms')
-rw-r--r--src/ipa/rkisp1/algorithms/agc.cpp4
-rw-r--r--src/ipa/rkisp1/algorithms/agc.h3
-rw-r--r--src/ipa/rkisp1/algorithms/algorithm.h4
-rw-r--r--src/ipa/rkisp1/algorithms/awb.cpp4
-rw-r--r--src/ipa/rkisp1/algorithms/awb.h3
5 files changed, 13 insertions, 5 deletions
diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
index 5f4c3f93..b5a184d9 100644
--- a/src/ipa/rkisp1/algorithms/agc.cpp
+++ b/src/ipa/rkisp1/algorithms/agc.cpp
@@ -280,7 +280,9 @@ double Agc::measureBrightness(const rkisp1_cif_isp_hist_stat *hist) const
* Identify the current image brightness, and use that to estimate the optimal
* new exposure and gain for the scene.
*/
-void Agc::process(IPAContext &context, const rkisp1_stat_buffer *stats)
+void Agc::process(IPAContext &context,
+ [[maybe_unused]] IPAFrameContext *frameContext,
+ const rkisp1_stat_buffer *stats)
{
const rkisp1_cif_isp_stat *params = &stats->params;
ASSERT(stats->meas_type & RKISP1_CIF_ISP_STAT_AUTOEXP);
diff --git a/src/ipa/rkisp1/algorithms/agc.h b/src/ipa/rkisp1/algorithms/agc.h
index ce1adf27..22c02779 100644
--- a/src/ipa/rkisp1/algorithms/agc.h
+++ b/src/ipa/rkisp1/algorithms/agc.h
@@ -29,7 +29,8 @@ public:
int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
void prepare(IPAContext &context, rkisp1_params_cfg *params) override;
- void process(IPAContext &context, const rkisp1_stat_buffer *stats) override;
+ void process(IPAContext &context, IPAFrameContext *frameContext,
+ const rkisp1_stat_buffer *stats) override;
private:
void computeExposure(IPAContext &Context, double yGain, double iqMeanGain);
diff --git a/src/ipa/rkisp1/algorithms/algorithm.h b/src/ipa/rkisp1/algorithms/algorithm.h
index d46c3188..68e3a44e 100644
--- a/src/ipa/rkisp1/algorithms/algorithm.h
+++ b/src/ipa/rkisp1/algorithms/algorithm.h
@@ -19,7 +19,9 @@ namespace libcamera {
namespace ipa::rkisp1 {
-using Algorithm = libcamera::ipa::Algorithm<IPAContext, IPACameraSensorInfo, rkisp1_params_cfg, rkisp1_stat_buffer>;
+using Algorithm = libcamera::ipa::Algorithm<IPAContext, IPAFrameContext,
+ IPACameraSensorInfo, rkisp1_params_cfg,
+ rkisp1_stat_buffer>;
} /* namespace ipa::rkisp1 */
diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp
index be4585c6..88441382 100644
--- a/src/ipa/rkisp1/algorithms/awb.cpp
+++ b/src/ipa/rkisp1/algorithms/awb.cpp
@@ -119,7 +119,9 @@ void Awb::prepare(IPAContext &context, rkisp1_params_cfg *params)
/**
* \copydoc libcamera::ipa::Algorithm::process
*/
-void Awb::process([[maybe_unused]] IPAContext &context, const rkisp1_stat_buffer *stats)
+void Awb::process([[maybe_unused]] IPAContext &context,
+ [[maybe_unused]] IPAFrameContext *frameCtx,
+ const rkisp1_stat_buffer *stats)
{
const rkisp1_cif_isp_stat *params = &stats->params;
const rkisp1_cif_isp_awb_stat *awb = &params->awb;
diff --git a/src/ipa/rkisp1/algorithms/awb.h b/src/ipa/rkisp1/algorithms/awb.h
index 11946643..7647842f 100644
--- a/src/ipa/rkisp1/algorithms/awb.h
+++ b/src/ipa/rkisp1/algorithms/awb.h
@@ -23,7 +23,8 @@ public:
int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
void prepare(IPAContext &context, rkisp1_params_cfg *params) override;
- void process(IPAContext &context, const rkisp1_stat_buffer *stats) override;
+ void process(IPAContext &context, IPAFrameContext *frameCtx,
+ const rkisp1_stat_buffer *stats) override;
private:
uint32_t estimateCCT(double red, double green, double blue);