[libcamera-devel] [PATCH v3 1/5] ipa: rkisp1: Use frame counter for the request queued

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sun Mar 27 22:21:55 CEST 2022


Hi Jean-Michel,

Thank you for the patch.

On Thu, Feb 24, 2022 at 12:33:43PM +0100, Jean-Michel Hautbois wrote:
> Introduce a frameCount variable in the IPAFrameContext which increments
> each time a request is queued. It is reset at configure call, when the
> camera is started.
> 
> This will allow the frameCount to be used by other algorithms, without
> having to keep multiple private frame counters.
> 
> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois at ideasonboard.com>
> 
> ---
> v3: - replace frameId by a frame counter
>     - Change the date of the copyright
> ---
>  src/ipa/rkisp1/ipa_context.cpp | 9 ++++++++-
>  src/ipa/rkisp1/ipa_context.h   | 4 +++-
>  src/ipa/rkisp1/rkisp1.cpp      | 3 +++
>  3 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/src/ipa/rkisp1/ipa_context.cpp b/src/ipa/rkisp1/ipa_context.cpp
> index 9cb2a9fd..664f572f 100644
> --- a/src/ipa/rkisp1/ipa_context.cpp
> +++ b/src/ipa/rkisp1/ipa_context.cpp
> @@ -1,6 +1,6 @@
>  /* SPDX-License-Identifier: LGPL-2.1-or-later */
>  /*
> - * Copyright (C) 2021, Ideas On Board
> + * Copyright (C) 2021-2022, Ideas On Board
>   *
>   * ipa_context.cpp - RkISP1 IPA Context
>   */
> @@ -113,4 +113,11 @@ namespace libcamera::ipa::rkisp1 {
>   * \brief Analogue gain multiplier
>   */
>  
> +/**
> + * \var IPAFrameContext::frameCount
> + * \brief Number of queued requests for this frame context

"Number of queued requests" sounds a bit like the number of requests
currently queued.

/**
 * \var IPAFrameContext::frameCount
 * \brief Counter of requests queued to the IPA module
 *
 * The counter is reset to 0 when the IPA module is configured, and is
 * incremented for each request being queued, after calling the
 * Algorithm::prepare() function of all algorithms.
 */

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> + *
> + * It restarts from 0 when the camera is started.
> + */
> +
>  } /* namespace libcamera::ipa::rkisp1 */
> diff --git a/src/ipa/rkisp1/ipa_context.h b/src/ipa/rkisp1/ipa_context.h
> index b94ade0c..212fa052 100644
> --- a/src/ipa/rkisp1/ipa_context.h
> +++ b/src/ipa/rkisp1/ipa_context.h
> @@ -1,6 +1,6 @@
>  /* SPDX-License-Identifier: LGPL-2.1-or-later */
>  /*
> - * Copyright (C) 2021, Ideas On Board
> + * Copyright (C) 2021-2022, Ideas On Board
>   *
>   * ipa_context.h - RkISP1 IPA Context
>   *
> @@ -43,6 +43,8 @@ struct IPAFrameContext {
>  		uint32_t exposure;
>  		double gain;
>  	} sensor;
> +
> +	unsigned int frameCount;
>  };
>  
>  struct IPAContext {
> diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
> index 2d79f15f..f119b3f3 100644
> --- a/src/ipa/rkisp1/rkisp1.cpp
> +++ b/src/ipa/rkisp1/rkisp1.cpp
> @@ -196,6 +196,8 @@ int IPARkISP1::configure([[maybe_unused]] const IPACameraSensorInfo &info,
>  	context_.configuration.agc.minAnalogueGain = camHelper_->gain(minGain_);
>  	context_.configuration.agc.maxAnalogueGain = camHelper_->gain(maxGain_);
>  
> +	context_.frameContext.frameCount = 0;
> +
>  	for (auto const &algo : algorithms_) {
>  		int ret = algo->configure(context_, info);
>  		if (ret)
> @@ -284,6 +286,7 @@ void IPARkISP1::queueRequest(unsigned int frame, rkisp1_params_cfg *params,
>  	op.op = ActionParamFilled;
>  
>  	queueFrameAction.emit(frame, op);
> +	context_.frameContext.frameCount++;
>  }
>  
>  void IPARkISP1::updateStatistics(unsigned int frame,

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list