summaryrefslogtreecommitdiff
path: root/src/ipa/libipa/module.cpp
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-06-20 03:36:23 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-06-29 17:21:05 +0300
commit7a5e23585fc1f292da7c127d9c5eb323b28b7f99 (patch)
treede9053a7a3b91307cdc84f9a25640dbc67f7c42b /src/ipa/libipa/module.cpp
parent575ca8854433043a1149286878bb5ef7029ba681 (diff)
ipa: libipa: module: Add support for instantiation from YAML
Add a Module::createAlgorithms() function to instantiate algorithms from a YamlObject. The instantiated algorithms are stored in a private member variable list, exposed through the Module::algorithms() function. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Diffstat (limited to 'src/ipa/libipa/module.cpp')
-rw-r--r--src/ipa/libipa/module.cpp42
1 files changed, 32 insertions, 10 deletions
diff --git a/src/ipa/libipa/module.cpp b/src/ipa/libipa/module.cpp
index 451614fd..77352104 100644
--- a/src/ipa/libipa/module.cpp
+++ b/src/ipa/libipa/module.cpp
@@ -14,6 +14,8 @@
namespace libcamera {
+LOG_DEFINE_CATEGORY(IPAModuleAlgo)
+
/**
* \brief The IPA namespace
*
@@ -76,18 +78,23 @@ namespace ipa {
*/
/**
- * \fn Module::createAlgorithm()
- * \brief Create an instance of an Algorithm by name
- * \param[in] name The algorithm name
- *
- * This function is the entry point to algorithm instantiation for the IPA
- * module. It creates and returns an instance of an algorithm identified by its
- * \a name. If no such algorithm exists, the function returns nullptr.
+ * \fn Module::algorithms()
+ * \brief Retrieve the list of instantiated algorithms
+ * \return The list of instantiated algorithms
+ */
+
+/**
+ * \fn Module::createAlgorithms()
+ * \brief Create algorithms from YAML configuration data
+ * \param[in] context The IPA context
+ * \param[in] algorithms Algorithms configuration data as a parsed YamlObject
*
- * To make an algorithm available to the IPA module, it shall be registered with
- * the REGISTER_IPA_ALGORITHM() macro.
+ * This function iterates over the list of \a algorithms parsed from the YAML
+ * configuration file, and instantiates and initializes the corresponding
+ * algorithms. The configuration data is expected to be correct, any error
+ * causes the function to fail and return immediately.
*
- * \return A new instance of the Algorithm subclass corresponding to the \a name
+ * \return 0 on success, or a negative error code on failure
*/
/**
@@ -99,6 +106,21 @@ namespace ipa {
* AlgorithmFactory constructor only.
*/
+/**
+ * \fn Module::createAlgorithm(const std::string &name)
+ * \brief Create an instance of an Algorithm by name
+ * \param[in] name The algorithm name
+ *
+ * This function is the entry point to algorithm instantiation for the IPA
+ * module. It creates and returns an instance of an algorithm identified by its
+ * \a name. If no such algorithm exists, the function returns nullptr.
+ *
+ * To make an algorithm available to the IPA module, it shall be registered with
+ * the REGISTER_IPA_ALGORITHM() macro.
+ *
+ * \return A new instance of the Algorithm subclass corresponding to the \a name
+ */
+
} /* namespace ipa */
} /* namespace libcamera */