summaryrefslogtreecommitdiff
path: root/src/ipa/libipa
diff options
context:
space:
mode:
authorFlorian Sylvestre <fsylvestre@baylibre.com>2022-07-20 17:42:18 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-07-22 00:51:50 +0300
commit242191fbb6ca126b54cb77400b9e41d33b4f37ac (patch)
tree911a935606fc4b00651a8422ce86d12750b98f11 /src/ipa/libipa
parentc49f47589cbafaa94e2baa53424f32a8755185cd (diff)
ipa: libipa: algorithm: Add queueRequest() to the Algorithm class
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@baylibre.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/ipa/libipa')
-rw-r--r--src/ipa/libipa/algorithm.cpp16
-rw-r--r--src/ipa/libipa/algorithm.h8
2 files changed, 24 insertions, 0 deletions
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
@@ -82,6 +82,22 @@ namespace ipa {
*/
/**
+ * \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
* \param[in] context The shared IPA context
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)