summaryrefslogtreecommitdiff
path: root/src/ipa/rkisp1
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-07-21 13:13:04 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-09-27 14:39:47 +0300
commit2101af47e4ea9f6a949be75ee8595ab9de38c59a (patch)
tree8f1c7fce76d6c3637daf5b6f6745338eb821734c /src/ipa/rkisp1
parent024d16b7db8f5c56e06e959634b513c3d6d3155f (diff)
ipa: libipa: Pass a reference instead of pointer to Algorithm::process()
Frame contexts will become the core component of IPA modules, always available to functions of the algorithms. To indicate and prepare for this, turn the frame context pointer passed to Algorithm::process() into a reference. The RkISP1 IPA module doesn't use frame contexts yet, so pass a dummy context for now. While at it, drop an unneeded [[maybe_unused]] from Agc::process() and add a missing parameter documentation for the frameContext argument to Awb::process(). Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Diffstat (limited to 'src/ipa/rkisp1')
-rw-r--r--src/ipa/rkisp1/algorithms/agc.cpp3
-rw-r--r--src/ipa/rkisp1/algorithms/agc.h2
-rw-r--r--src/ipa/rkisp1/algorithms/awb.cpp2
-rw-r--r--src/ipa/rkisp1/algorithms/awb.h2
-rw-r--r--src/ipa/rkisp1/rkisp1.cpp5
5 files changed, 9 insertions, 5 deletions
diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
index a1bb7d97..0f75f05e 100644
--- a/src/ipa/rkisp1/algorithms/agc.cpp
+++ b/src/ipa/rkisp1/algorithms/agc.cpp
@@ -275,13 +275,14 @@ double Agc::measureBrightness(const rkisp1_cif_isp_hist_stat *hist) const
/**
* \brief Process RkISP1 statistics, and run AGC operations
* \param[in] context The shared IPA context
+ * \param[in] frameContext The current frame context
* \param[in] stats The RKISP1 statistics and ISP results
*
* Identify the current image brightness, and use that to estimate the optimal
* new exposure and gain for the scene.
*/
void Agc::process(IPAContext &context,
- [[maybe_unused]] IPAFrameContext *frameContext,
+ [[maybe_unused]] IPAFrameContext &frameContext,
const rkisp1_stat_buffer *stats)
{
const rkisp1_cif_isp_stat *params = &stats->params;
diff --git a/src/ipa/rkisp1/algorithms/agc.h b/src/ipa/rkisp1/algorithms/agc.h
index 1c9818b7..6a5723ec 100644
--- a/src/ipa/rkisp1/algorithms/agc.h
+++ b/src/ipa/rkisp1/algorithms/agc.h
@@ -27,7 +27,7 @@ public:
int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
void prepare(IPAContext &context, rkisp1_params_cfg *params) override;
- void process(IPAContext &context, IPAFrameContext *frameContext,
+ void process(IPAContext &context, IPAFrameContext &frameContext,
const rkisp1_stat_buffer *stats) override;
private:
diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp
index b12df21d..2bc5d3aa 100644
--- a/src/ipa/rkisp1/algorithms/awb.cpp
+++ b/src/ipa/rkisp1/algorithms/awb.cpp
@@ -152,7 +152,7 @@ void Awb::queueRequest(IPAContext &context,
* \copydoc libcamera::ipa::Algorithm::process
*/
void Awb::process([[maybe_unused]] IPAContext &context,
- [[maybe_unused]] IPAFrameContext *frameCtx,
+ [[maybe_unused]] IPAFrameContext &frameCtx,
const rkisp1_stat_buffer *stats)
{
const rkisp1_cif_isp_stat *params = &stats->params;
diff --git a/src/ipa/rkisp1/algorithms/awb.h b/src/ipa/rkisp1/algorithms/awb.h
index 4917267b..fc221ace 100644
--- a/src/ipa/rkisp1/algorithms/awb.h
+++ b/src/ipa/rkisp1/algorithms/awb.h
@@ -23,7 +23,7 @@ public:
void prepare(IPAContext &context, rkisp1_params_cfg *params) override;
void queueRequest(IPAContext &context, const uint32_t frame,
const ControlList &controls) override;
- void process(IPAContext &context, IPAFrameContext *frameCtx,
+ void process(IPAContext &context, IPAFrameContext &frameCtx,
const rkisp1_stat_buffer *stats) override;
private:
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
index 9e3eb7fb..22404c15 100644
--- a/src/ipa/rkisp1/rkisp1.cpp
+++ b/src/ipa/rkisp1/rkisp1.cpp
@@ -325,8 +325,11 @@ void IPARkISP1::processStatsBuffer(const uint32_t frame, const uint32_t bufferId
unsigned int aeState = 0;
+ /* \todo Obtain the frame context to pass to process from the FCQueue */
+ IPAFrameContext frameContext;
+
for (auto const &algo : algorithms())
- algo->process(context_, nullptr, stats);
+ algo->process(context_, frameContext, stats);
setControls(frame);