diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-06-20 03:36:23 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-06-29 17:21:05 +0300 |
commit | 7a5e23585fc1f292da7c127d9c5eb323b28b7f99 (patch) | |
tree | de9053a7a3b91307cdc84f9a25640dbc67f7c42b /src/ipa/libipa/module.cpp | |
parent | 575ca8854433043a1149286878bb5ef7029ba681 (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.cpp | 42 |
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 */ |