[libcamera-devel] [PATCH v2 2/5] ipa: libipa: Add init() function to the Algorithm class
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Thu Jun 16 10:55:49 CEST 2022
Hi Florian,
Thank you for the patch.
On Thu, Jun 16, 2022 at 10:07:41AM +0200, Florian Sylvestre via libcamera-devel wrote:
> Add the init() function that will be called during algorithm initialization
> to provide each algorithm the list of algorithms tuning data.
> Each algorithm will be responsible to grab their corresponding parameters.
>
> Signed-off-by: Florian Sylvestre <fsylvestre at baylibre.com>
> ---
> src/ipa/ipu3/algorithms/algorithm.h | 4 +++-
> src/ipa/libipa/algorithm.cpp | 16 ++++++++++++++++
> src/ipa/libipa/algorithm.h | 10 +++++++++-
> 3 files changed, 28 insertions(+), 2 deletions(-)
>
> diff --git a/src/ipa/ipu3/algorithms/algorithm.h b/src/ipa/ipu3/algorithms/algorithm.h
> index d2eecc78..32cdfe52 100644
> --- a/src/ipa/ipu3/algorithms/algorithm.h
> +++ b/src/ipa/ipu3/algorithms/algorithm.h
> @@ -15,9 +15,11 @@
>
> namespace libcamera {
>
> +class YamlObject;
> +
> namespace ipa::ipu3 {
>
> -using Algorithm = libcamera::ipa::Algorithm<IPAContext, IPAConfigInfo, ipu3_uapi_params, ipu3_uapi_stats_3a>;
> +using Algorithm = libcamera::ipa::Algorithm<IPAContext, YamlObject, IPAConfigInfo, ipu3_uapi_params, ipu3_uapi_stats_3a>;
This is getting long, I'd wrap it as
using Algorithm = libcamera::ipa::Algorithm<IPAContext, YamlObject, IPAConfigInfo,
ipu3_uapi_params, ipu3_uapi_stats_3a>;
>
> } /* namespace ipa::ipu3 */
>
> diff --git a/src/ipa/libipa/algorithm.cpp b/src/ipa/libipa/algorithm.cpp
> index 398d5372..3424610b 100644
> --- a/src/ipa/libipa/algorithm.cpp
> +++ b/src/ipa/libipa/algorithm.cpp
> @@ -29,6 +29,22 @@ namespace ipa {
> * to manage algorithms regardless of their specific type.
> */
>
> +/**
> + * \fn Algorithm::init()
> + * \brief Configure the Algorithm with default parameters
> + * \param[in] context The shared IPA context
> + * \param[in] params The initial parameters used to tune algorithms
> + *
> + * This function is called once before the camera is running to get default
> + * algorithm parameters.
I think this sentence is a leftover of v1, it can be dropped.
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> + * This function is called once, when the IPA module is initialized, to
> + * initialize the algorithm. The \a params YamlObject contains IPA module
> + * parameters, typically tuning data for all algorithms. The Algorithm is
> + * responsible for reading the parameters relevant to its configuration.
> + *
> + * \return 0 if successful, an error code otherwise
> + */
> +
> /**
> * \fn Algorithm::configure()
> * \brief Configure the Algorithm given an IPAConfigInfo
> diff --git a/src/ipa/libipa/algorithm.h b/src/ipa/libipa/algorithm.h
> index 766aee5d..f5be1caf 100644
> --- a/src/ipa/libipa/algorithm.h
> +++ b/src/ipa/libipa/algorithm.h
> @@ -10,12 +10,20 @@ namespace libcamera {
>
> namespace ipa {
>
> -template<typename Context, typename Config, typename Params, typename Stats>
> +template<typename Context, typename TuningData,
> + typename Config, typename Params, typename Stats>
> +
> class Algorithm
> {
> public:
> virtual ~Algorithm() {}
>
> + virtual int init([[maybe_unused]] Context &context,
> + [[maybe_unused]] const TuningData *params)
> + {
> + return 0;
> + }
> +
> virtual int configure([[maybe_unused]] Context &context,
> [[maybe_unused]] const Config &configInfo)
> {
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list