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

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Thu Jul 21 09:42:44 CEST 2022


Hi Florian,

On Wed, Jul 20, 2022 at 05:42:18PM +0200, Florian Sylvestre via libcamera-devel wrote:
> 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>

Reviewed-by: Paul Elder <paul.elder 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