[libcamera-devel] [PATCH v2 1/4] ipa: libipa: algorithm: Add queueRequest() to the Algorithm class

Kieran Bingham kieran.bingham at ideasonboard.com
Thu Jul 21 14:52:50 CEST 2022


Hi Florian,

Quoting Florian Sylvestre via libcamera-devel (2022-07-20 16:42:18)
> Add queueRequest() function to the Algorithm class. The queueRequest() function
> provides controls values coming from the application to each algorithm.
> Each algorithm is responsible for retrieving the controls associated to them.
> 
> Signed-off-by: Florian Sylvestre <fsylvestre at baylibre.com>
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

I think this is going the right direction for what I had in mind too,
and you may have seen I've picked this into my development branch [0]

https://lists.libcamera.org/pipermail/libcamera-devel/2022-July/032471.html

I've tried to get the changes from v1 to v2 in that branch as well, but
I originally picked from v1, so I might have to take a closer look
later.

I don't really mind which series goes in first, I can rebase my work
accordingly.


Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> ---
>  src/ipa/libipa/algorithm.cpp | 16 ++++++++++++++++
>  src/ipa/libipa/algorithm.h   |  8 ++++++++
>  2 files changed, 24 insertions(+)
> 
> diff --git a/src/ipa/libipa/algorithm.cpp b/src/ipa/libipa/algorithm.cpp
> index 8549fe3f..38200e57 100644
> --- a/src/ipa/libipa/algorithm.cpp
> +++ b/src/ipa/libipa/algorithm.cpp
> @@ -81,6 +81,22 @@ namespace ipa {
>   * includes setting fields and flags that enable those processing blocks.
>   */
>  
> +/**
> + * \fn Algorithm::queueRequest()
> + * \brief Provide control values to the algorithm
> + * \param[in] context The shared IPA context
> + * \param[in] frame The frame number to apply the control values
> + * \param[in] controls The list of user controls
> + *
> + * This function is called for each request queued to the camera. It provides
> + * the controls stored in the request to the algorithm. The \a frame number
> + * is the Request sequence number and identifies the desired corresponding
> + * frame to target for the controls to take effect.
> + *
> + * Algorithms shall read the applicable controls and store their value for later
> + * use during frame processing.
> + */
> +
>  /**
>   * \fn Algorithm::process()
>   * \brief Process ISP statistics, and run algorithm operations
> diff --git a/src/ipa/libipa/algorithm.h b/src/ipa/libipa/algorithm.h
> index 2a8871d8..ccc659a6 100644
> --- a/src/ipa/libipa/algorithm.h
> +++ b/src/ipa/libipa/algorithm.h
> @@ -9,6 +9,8 @@
>  #include <memory>
>  #include <string>
>  
> +#include <libcamera/controls.h>
> +
>  namespace libcamera {
>  
>  class YamlObject;
> @@ -40,6 +42,12 @@ public:
>         {
>         }
>  
> +       virtual void queueRequest([[maybe_unused]] typename Module::Context &context,
> +                                 [[maybe_unused]] const uint32_t frame,
> +                                 [[maybe_unused]] const ControlList &controls)
> +       {
> +       }
> +
>         virtual void process([[maybe_unused]] typename Module::Context &context,
>                              [[maybe_unused]] typename Module::FrameContext *frameContext,
>                              [[maybe_unused]] const typename Module::Stats *stats)
> -- 
> 2.34.1
>


More information about the libcamera-devel mailing list