new file mode 100644
@@ -0,0 +1,25 @@
+/* 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 */
new file mode 100644
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: CC0-1.0
+
+rkisp1_ipa_algorithms = files([
+])
@@ -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 : '',
@@ -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)