@@ -7,14 +7,18 @@
#ifndef __LIBCAMERA_IPA_MODULE_INFO_H__
#define __LIBCAMERA_IPA_MODULE_INFO_H__
+#include <stdint.h>
+
#ifdef __cplusplus
namespace libcamera {
#endif
struct IPAModuleInfo {
+ uint32_t ipaAPIVersion;
+ uint32_t pipelineVersion;
+ char pipelineName[256];
char name[256];
- unsigned int version;
-};
+} __attribute__((packed));
#ifdef __cplusplus
extern "C" {
@@ -33,6 +33,19 @@ protected:
const struct IPAModuleInfo &info = ll->info();
+ if (info.ipaAPIVersion != testInfo.ipaAPIVersion) {
+ cerr << "test IPA module has incorrect ipaAPIVersion" << endl;
+ cerr << "expected \"" << testInfo.ipaAPIVersion << "\", got \""
+ << info.ipaAPIVersion << "\"" << endl;
+ ret = -1;
+ }
+ if (info.pipelineVersion != testInfo.pipelineVersion) {
+ cerr << "test IPA module has incorrect pipelineVersion" << endl;
+ cerr << "expected \"" << testInfo.pipelineVersion << "\", got \""
+ << info.pipelineVersion << "\"" << endl;
+ ret = -1;
+ }
+
if (strcmp(info.name, testInfo.name)) {
cerr << "test IPA module has incorrect name" << endl;
cerr << "expected \"" << testInfo.name << "\", got \""
@@ -40,13 +53,6 @@ protected:
ret = -1;
}
- if (info.version != testInfo.version) {
- cerr << "test IPA module has incorrect version" << endl;
- cerr << "expected \"" << testInfo.version << "\", got \""
- << info.version << "\"" << endl;
- ret = -1;
- }
-
delete ll;
return ret;
}
@@ -55,14 +61,23 @@ protected:
{
int count = 0;
- const struct IPAModuleInfo testInfo = {
- "It's over nine thousand!",
+ const struct IPAModuleInfo testInfo1 = {
+ 1,
9001,
+ "bloop",
+ "It's over nine thousand!",
+ };
+
+ const struct IPAModuleInfo testInfo2 = {
+ 1,
+ 8999,
+ "bleep",
+ "It's under nine thousand!",
};
- count += runTest("test/ipa/ipa-dummy-c.so", testInfo);
+ count += runTest("test/ipa/ipa-dummy-c.so", testInfo1);
- count += runTest("test/ipa/ipa-dummy-cpp.so", testInfo);
+ count += runTest("test/ipa/ipa-dummy-cpp.so", testInfo2);
if (count < 0)
return TestFail;
@@ -1,6 +1,8 @@
#include <libcamera/ipa/ipa_module_info.h>
const struct IPAModuleInfo ipaModuleInfo = {
+ .ipaAPIVersion = 1,
+ .pipelineVersion = 9001,
+ .pipelineName = "bloop",
.name = "It's over nine thousand!",
- .version = 9001,
};
@@ -4,8 +4,10 @@ namespace libcamera {
extern "C" {
const struct libcamera::IPAModuleInfo ipaModuleInfo = {
- "It's over nine thousand!",
- 9001,
+ 1,
+ 8999,
+ "bleep",
+ "It's under nine thousand!",
};
};
We need a way to match pipelines with IPA modules, so add fields in IPAModuleInfo to hold the IPA API version number and the pipeline matching string. Also update IPA module tests accordingly. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> --- include/libcamera/ipa/ipa_module_info.h | 8 ++++-- test/ipa/ipa_test.cpp | 37 +++++++++++++++++-------- test/ipa/shared_test.c | 4 ++- test/ipa/shared_test.cpp | 6 ++-- 4 files changed, 39 insertions(+), 16 deletions(-)