summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Elder <paul.elder@ideasonboard.com>2019-07-12 01:27:23 +0900
committerPaul Elder <paul.elder@ideasonboard.com>2019-07-12 15:52:37 +0900
commit099815b85377ac68147e789f491ef26c57da3956 (patch)
tree7c60e752f0b1760ba4c8baa9fa69e0e69083f0f6 /src
parentdfc9a8db0921d7af1a0ebf958127853965000732 (diff)
libcamera: ipa_module: add isOpenSource
Add a method to IPAModule to check if the module is open source. This uses the license field of the member IPAModuleInfo. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src')
-rw-r--r--src/libcamera/include/ipa_module.h2
-rw-r--r--src/libcamera/ipa_module.cpp24
2 files changed, 26 insertions, 0 deletions
diff --git a/src/libcamera/include/ipa_module.h b/src/libcamera/include/ipa_module.h
index b88ae5d2..18e9223f 100644
--- a/src/libcamera/include/ipa_module.h
+++ b/src/libcamera/include/ipa_module.h
@@ -35,6 +35,8 @@ public:
bool match(PipelineHandler *pipe,
uint32_t minVersion, uint32_t maxVersion) const;
+ bool isOpenSource() const;
+
private:
struct IPAModuleInfo info_;
diff --git a/src/libcamera/ipa_module.cpp b/src/libcamera/ipa_module.cpp
index 9cead715..93bb4889 100644
--- a/src/libcamera/ipa_module.cpp
+++ b/src/libcamera/ipa_module.cpp
@@ -7,6 +7,8 @@
#include "ipa_module.h"
+#include <algorithm>
+#include <array>
#include <dlfcn.h>
#include <elf.h>
#include <errno.h>
@@ -469,4 +471,26 @@ bool IPAModule::match(PipelineHandler *pipe,
!strcmp(info_.pipelineName, pipe->name());
}
+/**
+ * \brief Verify if the IPA module is open source
+ *
+ * \sa IPAModuleInfo::license
+ */
+bool IPAModule::isOpenSource() const
+{
+ static std::array<const char *, sizeof(char *)> osLicenses = {
+ "GPL-2.0-only",
+ "GPL-2.0-or-later",
+ "GPL-3.0-only",
+ "GPL-3.0-or-later",
+ "LGPL-2.1-only",
+ "LGPL-2.1-or-later",
+ "LGPL-3.0-only",
+ "LGPL-3.0-or-later",
+ };
+
+ return std::find(osLicenses.begin(), osLicenses.end(), info_.license)
+ != osLicenses.end();
+}
+
} /* namespace libcamera */