From 575ca8854433043a1149286878bb5ef7029ba681 Mon Sep 17 00:00:00 2001
From: Florian Sylvestre <fsylvestre@baylibre.com>
Date: Fri, 17 Jun 2022 11:23:12 +0200
Subject: ipa: libipa: algorithm: Add init() function to the Algorithm class

Add the init() function that will be called during algorithm initialization
to provide each algorithm the list of algorithms tuning data.

Signed-off-by: Florian Sylvestre <fsylvestre@baylibre.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/ipa/libipa/algorithm.cpp | 13 +++++++++++++
 src/ipa/libipa/algorithm.h   |  8 ++++++++
 2 files changed, 21 insertions(+)

(limited to 'src/ipa/libipa')

diff --git a/src/ipa/libipa/algorithm.cpp b/src/ipa/libipa/algorithm.cpp
index 1d099808..8549fe3f 100644
--- a/src/ipa/libipa/algorithm.cpp
+++ b/src/ipa/libipa/algorithm.cpp
@@ -37,6 +37,19 @@ namespace ipa {
  * \brief The IPA module type for this class of algorithms
  */
 
+/**
+ * \fn Algorithm::init()
+ * \brief Initialize the Algorithm with tuning data
+ * \param[in] context The shared IPA context
+ * \param[in] tuningData The tuning data for the algorithm
+ *
+ * This function is called once, when the IPA module is initialized, to
+ * initialize the algorithm. The \a tuningData YamlObject contains the tuning
+ * data for algorithm.
+ *
+ * \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 cfbe4ed8..2a8871d8 100644
--- a/src/ipa/libipa/algorithm.h
+++ b/src/ipa/libipa/algorithm.h
@@ -11,6 +11,8 @@
 
 namespace libcamera {
 
+class YamlObject;
+
 namespace ipa {
 
 template<typename _Module>
@@ -21,6 +23,12 @@ public:
 
 	virtual ~Algorithm() {}
 
+	virtual int init([[maybe_unused]] typename Module::Context &context,
+			 [[maybe_unused]] const YamlObject &tuningData)
+	{
+		return 0;
+	}
+
 	virtual int configure([[maybe_unused]] typename Module::Context &context,
 			      [[maybe_unused]] const typename Module::Config &configInfo)
 	{
-- 
cgit v1.2.1