[libcamera-devel] [PATCH v3 10/11] ipa: rkisp1: agc: Introduce prepare call
Kieran Bingham
kieran.bingham at ideasonboard.com
Tue Nov 23 17:19:50 CET 2021
Quoting Jean-Michel Hautbois (2021-11-23 15:04:22)
> When a new parameter buffer needs to be queued, we need to specify which
> algorithm is activated or not in the ISP. Add a simple prepare function
> in AGC for that, which may later evolve to take the exposure locking
> into account. For that function to be called, we also need to add the
> loop on the algorithms in IPARkISP1::queueRequest.
>
> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Tempted to add in the commit message that we no longer disable the AE
algorithm based on the controls::AeEnable, which will be handled in a
different manner later.
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/ipa/rkisp1/algorithms/agc.cpp | 7 +++++++
> src/ipa/rkisp1/algorithms/agc.h | 1 +
> src/ipa/rkisp1/rkisp1.cpp | 12 +++---------
> 3 files changed, 11 insertions(+), 9 deletions(-)
>
> diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
> index 9c6d312e..0433813a 100644
> --- a/src/ipa/rkisp1/algorithms/agc.cpp
> +++ b/src/ipa/rkisp1/algorithms/agc.cpp
> @@ -260,6 +260,13 @@ void Agc::process(IPAContext &context, const rkisp1_stat_buffer *stats)
> frameCount_++;
> }
>
> +void Agc::prepare([[maybe_unused]] IPAContext &context,
> + rkisp1_params_cfg *params)
> +{
> + params->module_ens |= RKISP1_CIF_ISP_MODULE_AEC;
> + params->module_en_update |= RKISP1_CIF_ISP_MODULE_AEC;
> +}
> +
> } /* namespace ipa::rkisp1::algorithms */
>
> } /* namespace libcamera */
> diff --git a/src/ipa/rkisp1/algorithms/agc.h b/src/ipa/rkisp1/algorithms/agc.h
> index 83159743..ac95dea5 100644
> --- a/src/ipa/rkisp1/algorithms/agc.h
> +++ b/src/ipa/rkisp1/algorithms/agc.h
> @@ -28,6 +28,7 @@ public:
> ~Agc() = default;
>
> 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;
>
> private:
> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
> index 89d98b6c..59e868ff 100644
> --- a/src/ipa/rkisp1/rkisp1.cpp
> +++ b/src/ipa/rkisp1/rkisp1.cpp
> @@ -270,19 +270,13 @@ void IPARkISP1::processEvent(const RkISP1Event &event)
> }
>
> void IPARkISP1::queueRequest(unsigned int frame, rkisp1_params_cfg *params,
> - const ControlList &controls)
> + [[maybe_unused]] const ControlList &controls)
> {
> /* Prepare parameters buffer. */
> memset(params, 0, sizeof(*params));
>
> - /* Auto Exposure on/off. */
> - if (controls.contains(controls::AeEnable)) {
> - autoExposure_ = controls.get(controls::AeEnable);
> - if (autoExposure_)
> - params->module_ens = RKISP1_CIF_ISP_MODULE_AEC;
> -
> - params->module_en_update = RKISP1_CIF_ISP_MODULE_AEC;
> - }
> + for (auto const &algo : algorithms_)
> + algo->prepare(context_, params);
>
> RkISP1Action op;
> op.op = ActionParamFilled;
> --
> 2.32.0
>
More information about the libcamera-devel
mailing list