summaryrefslogtreecommitdiff
path: root/src/ipa
diff options
context:
space:
mode:
authorJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-11-23 14:25:41 +0100
committerJean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>2021-11-29 20:41:37 +0100
commit55c07ed4db5e68752a2bd7f5a19f5999d3b058d3 (patch)
tree18d9251a72decc0a12fbe072aafac2772cdead1e /src/ipa
parentfdf1426694d8934a0f7c910def43e48eb4a8b959 (diff)
ipa: rkisp1: Use the Algorithm class
Now that libipa offers a templated class for Algorithm, use it in RkISP1. Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Diffstat (limited to 'src/ipa')
-rw-r--r--src/ipa/rkisp1/algorithms/algorithm.h26
-rw-r--r--src/ipa/rkisp1/algorithms/meson.build4
-rw-r--r--src/ipa/rkisp1/meson.build4
-rw-r--r--src/ipa/rkisp1/rkisp1.cpp7
4 files changed, 40 insertions, 1 deletions
diff --git a/src/ipa/rkisp1/algorithms/algorithm.h b/src/ipa/rkisp1/algorithms/algorithm.h
new file mode 100644
index 00000000..d46c3188
--- /dev/null
+++ b/src/ipa/rkisp1/algorithms/algorithm.h
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2021, Ideas On Board
+ *
+ * algorithm.h - RkISP1 control algorithm interface
+ */
+
+#pragma once
+
+#include <linux/rkisp1-config.h>
+
+#include <libcamera/ipa/rkisp1_ipa_interface.h>
+
+#include <libipa/algorithm.h>
+
+#include "ipa_context.h"
+
+namespace libcamera {
+
+namespace ipa::rkisp1 {
+
+using Algorithm = libcamera::ipa::Algorithm<IPAContext, IPACameraSensorInfo, rkisp1_params_cfg, rkisp1_stat_buffer>;
+
+} /* namespace ipa::rkisp1 */
+
+} /* namespace libcamera */
diff --git a/src/ipa/rkisp1/algorithms/meson.build b/src/ipa/rkisp1/algorithms/meson.build
new file mode 100644
index 00000000..1c6c59cf
--- /dev/null
+++ b/src/ipa/rkisp1/algorithms/meson.build
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: CC0-1.0
+
+rkisp1_ipa_algorithms = files([
+])
diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build
index 3683c922..8c822fbb 100644
--- a/src/ipa/rkisp1/meson.build
+++ b/src/ipa/rkisp1/meson.build
@@ -1,5 +1,7 @@
# SPDX-License-Identifier: CC0-1.0
+subdir('algorithms')
+
ipa_name = 'ipa_rkisp1'
rkisp1_ipa_sources = files([
@@ -7,6 +9,8 @@ rkisp1_ipa_sources = files([
'rkisp1.cpp',
])
+rkisp1_ipa_sources += rkisp1_ipa_algorithms
+
mod = shared_module(ipa_name,
[rkisp1_ipa_sources, libcamera_generated_ipa_headers],
name_prefix : '',
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
index 34c3f9a2..225f1847 100644
--- a/src/ipa/rkisp1/rkisp1.cpp
+++ b/src/ipa/rkisp1/rkisp1.cpp
@@ -25,9 +25,11 @@
#include <libcamera/internal/mapped_framebuffer.h>
-#include "ipa_context.h"
+#include "algorithms/algorithm.h"
#include "libipa/camera_sensor_helper.h"
+#include "ipa_context.h"
+
namespace libcamera {
LOG_DEFINE_CATEGORY(IPARkISP1)
@@ -82,6 +84,9 @@ private:
/* Local parameter storage */
struct IPAContext context_;
+
+ /* Maintain the algorithms used by the IPA */
+ std::list<std::unique_ptr<ipa::rkisp1::Algorithm>> algorithms_;
};
int IPARkISP1::init(const IPASettings &settings, unsigned int hwRevision)