summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Elder <paul.elder@ideasonboard.com>2019-06-03 13:20:23 -0400
committerPaul Elder <paul.elder@ideasonboard.com>2019-06-05 10:44:52 -0400
commit42c9b4bad40b462ef267b477e136202f02071137 (patch)
tree8e4bcfdc83111518b62abb7c8fd9cf3520c6dc3f
parent7faa67889fffc4de5fdbeaf9d969d91bbd734e6c (diff)
libcamera: ipa_module: match IPA module with pipeline handler
Add a method to IPAModule to check if it matches with a given pipeline handler and pipeline version range. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/libcamera/include/ipa_module.h5
-rw-r--r--src/libcamera/ipa_module.cpp20
2 files changed, 25 insertions, 0 deletions
diff --git a/src/libcamera/include/ipa_module.h b/src/libcamera/include/ipa_module.h
index 7ac5cad5..fec42371 100644
--- a/src/libcamera/include/ipa_module.h
+++ b/src/libcamera/include/ipa_module.h
@@ -13,6 +13,8 @@
#include <libcamera/ipa/ipa_interface.h>
#include <libcamera/ipa/ipa_module_info.h>
+#include "pipeline_handler.h"
+
namespace libcamera {
class IPAModule
@@ -29,6 +31,9 @@ public:
std::unique_ptr<IPAInterface> createInstance();
+ bool match(PipelineHandler *pipe,
+ uint32_t minVersion, uint32_t maxVersion) const;
+
private:
struct IPAModuleInfo info_;
diff --git a/src/libcamera/ipa_module.cpp b/src/libcamera/ipa_module.cpp
index 5490f9b6..2663b9ef 100644
--- a/src/libcamera/ipa_module.cpp
+++ b/src/libcamera/ipa_module.cpp
@@ -18,6 +18,7 @@
#include <unistd.h>
#include "log.h"
+#include "pipeline_handler.h"
/**
* \file ipa_module.h
@@ -391,4 +392,23 @@ std::unique_ptr<IPAInterface> IPAModule::createInstance()
return std::unique_ptr<IPAInterface>(ipaCreate_());
}
+/**
+ * \brief Verify if the IPA module maches a given pipeline handler
+ * \param[in] pipe Pipeline handler to match with
+ * \param[in] minVersion Minimum acceptable version of IPA module
+ * \param[in] maxVersion Maximum acceptable version of IPA module
+ *
+ * This method checks if this IPA module matches the \a pipe pipeline handler,
+ * and the input version range.
+ *
+ * \return True if the pipeline handler matches the IPA module, or false otherwise
+ */
+bool IPAModule::match(PipelineHandler *pipe,
+ uint32_t minVersion, uint32_t maxVersion) const
+{
+ return info_.pipelineVersion >= minVersion &&
+ info_.pipelineVersion <= maxVersion &&
+ !strcmp(info_.pipelineName, pipe->name());
+}
+
} /* namespace libcamera */