summaryrefslogtreecommitdiff
path: root/src/ipa/libipa/module.h
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-06-20 00:12:00 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-06-29 17:20:59 +0300
commit83df7854933c06ff51f4473e54b72b3eac36d321 (patch)
tree217f1627cd119d0b130631d1218b114b47961e26 /src/ipa/libipa/module.h
parent9dacde0d651df322058c3611b3515820bf06715e (diff)
ipa: libipa: Introduce a Module class template
libipa defines an abstract Algorithm class template that is specialized by IPA modules. IPA modules then instantiate and manage algorithms internally, without help from libipa. With ongoing work on tuning data support for the RkISP1, and future similar work for the IPU3, more code duplication for algorithms management is expected. To address this and share code between multiple IPA modules, introduce a new Module class template that will define and manage top-level concepts for the IPA module. The Module class template needs to be specialized with the same types as the Algorithm class. To avoid manual specialization of both classes, store the types in the Module class, and replace the template arguments of the Algorithm class with a single Module argument from which the other types are retrieved. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Diffstat (limited to 'src/ipa/libipa/module.h')
-rw-r--r--src/ipa/libipa/module.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/ipa/libipa/module.h b/src/ipa/libipa/module.h
new file mode 100644
index 00000000..c4d77812
--- /dev/null
+++ b/src/ipa/libipa/module.h
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2022, Ideas On Board
+ *
+ * module.h - IPA module
+ */
+
+#pragma once
+
+namespace libcamera {
+
+namespace ipa {
+
+template<typename _Context, typename _FrameContext, typename _Config,
+ typename _Params, typename _Stats>
+class Module
+{
+public:
+ using Context = _Context;
+ using FrameContext = _FrameContext;
+ using Config = _Config;
+ using Params = _Params;
+ using Stats = _Stats;
+
+ virtual ~Module() {}
+};
+
+} /* namespace ipa */
+
+} /* namespace libcamera */