[libcamera-devel] [PATCH v3 2/6] libcamera: ipa_manager: Split path handling

Kieran Bingham kieran.bingham at ideasonboard.com
Thu Feb 20 17:57:00 CET 2020


Move the iteration of a colon-separated path to its own function.
This prepares for parsing extra path variables.

Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
 src/libcamera/include/ipa_manager.h |  1 +
 src/libcamera/ipa_manager.cpp       | 35 ++++++++++++++++++++++-------
 2 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/src/libcamera/include/ipa_manager.h b/src/libcamera/include/ipa_manager.h
index 126f8babbc8f..94d35d9062e4 100644
--- a/src/libcamera/include/ipa_manager.h
+++ b/src/libcamera/include/ipa_manager.h
@@ -33,6 +33,7 @@ private:
 	~IPAManager();
 
 	int addDir(const char *libDir);
+	int addPath(const char *path);
 };
 
 } /* namespace libcamera */
diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp
index 4ffbdd712ac2..d87f2221b00b 100644
--- a/src/libcamera/ipa_manager.cpp
+++ b/src/libcamera/ipa_manager.cpp
@@ -110,14 +110,7 @@ IPAManager::IPAManager()
 		return;
 	}
 
-	for (const auto &dir : utils::split(modulePaths, ":")) {
-		if (dir.empty())
-			continue;
-
-		int ret = addDir(dir.c_str());
-		if (ret > 0)
-			ipaCount += ret;
-	}
+	ipaCount += addPath(modulePaths);
 
 	if (!ipaCount)
 		LOG(IPAManager, Warning)
@@ -197,6 +190,32 @@ int IPAManager::addDir(const char *libDir)
 	return count;
 }
 
+/**
+ * \brief Load IPA modules from a search path
+ * \param[in] path The colon-separated list of directories to load IPA modules from
+ *
+ * This method tries to create an IPAModule instance for every shared object
+ * found in the directories listed in \a path.
+ *
+ * \return Number of modules loaded by this call, or a negative error code
+ * otherwise
+ */
+int IPAManager::addPath(const char *path)
+{
+	int ipaCount = 0;
+
+	for (const auto &dir : utils::split(path, ":")) {
+		if (dir.empty())
+			continue;
+
+		int ret = addDir(dir.c_str());
+		if (ret > 0)
+			ipaCount += ret;
+	}
+
+	return ipaCount;
+}
+
 /**
  * \brief Create an IPA interface that matches a given pipeline handler
  * \param[in] pipe The pipeline handler that wants a matching IPA interface
-- 
2.20.1



More information about the libcamera-devel mailing list