summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaushir Patuck <naush@raspberrypi.com>2023-05-03 13:20:27 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2023-05-04 20:47:40 +0300
commit726e9274ea95fa46352556d340c5793a8da51fcd (patch)
tree80f6adcdbf744f9317e09eff3e80c602b384a753
parent46aefed208fef4bc8d6f6e8882b92b9af710a60b (diff)
pipeline: ipa: raspberrypi: Refactor and move the Raspberry Pi code
Split the Raspberry Pi pipeline handler and IPA source code into common and VC4/BCM2835 specific file structures. For the pipeline handler, the common code files now live in src/libcamera/pipeline/rpi/common/ and the VC4-specific files in src/libcamera/pipeline/rpi/vc4/. For the IPA, the common code files now live in src/ipa/rpi/{cam_helper,controller}/ and the vc4 specific files in src/ipa/rpi/vc4/. With this change, the camera tuning files are now installed under share/libcamera/ipa/rpi/vc4/. To build the pipeline and IPA, the meson configuration options have now changed from "raspberrypi" to "rpi/vc4": meson setup build -Dipas=rpi/vc4 -Dpipelines=rpi/vc4 Signed-off-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--.reuse/dep52
-rw-r--r--Documentation/environment_variables.rst4
-rw-r--r--Documentation/guides/introduction.rst2
-rw-r--r--Documentation/guides/pipeline-handler.rst2
-rw-r--r--include/libcamera/ipa/meson.build2
-rw-r--r--meson.build2
-rw-r--r--meson_options.txt4
-rw-r--r--src/ipa/raspberrypi/meson.build68
-rw-r--r--src/ipa/rpi/README.md (renamed from src/ipa/raspberrypi/README.md)0
-rw-r--r--src/ipa/rpi/cam_helper/cam_helper.cpp (renamed from src/ipa/raspberrypi/cam_helper.cpp)0
-rw-r--r--src/ipa/rpi/cam_helper/cam_helper.h (renamed from src/ipa/raspberrypi/cam_helper.h)2
-rw-r--r--src/ipa/rpi/cam_helper/cam_helper_imx219.cpp (renamed from src/ipa/raspberrypi/cam_helper_imx219.cpp)0
-rw-r--r--src/ipa/rpi/cam_helper/cam_helper_imx290.cpp (renamed from src/ipa/raspberrypi/cam_helper_imx290.cpp)0
-rw-r--r--src/ipa/rpi/cam_helper/cam_helper_imx296.cpp (renamed from src/ipa/raspberrypi/cam_helper_imx296.cpp)0
-rw-r--r--src/ipa/rpi/cam_helper/cam_helper_imx477.cpp (renamed from src/ipa/raspberrypi/cam_helper_imx477.cpp)0
-rw-r--r--src/ipa/rpi/cam_helper/cam_helper_imx519.cpp (renamed from src/ipa/raspberrypi/cam_helper_imx519.cpp)0
-rw-r--r--src/ipa/rpi/cam_helper/cam_helper_imx708.cpp (renamed from src/ipa/raspberrypi/cam_helper_imx708.cpp)0
-rw-r--r--src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp (renamed from src/ipa/raspberrypi/cam_helper_ov5647.cpp)0
-rw-r--r--src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp (renamed from src/ipa/raspberrypi/cam_helper_ov9281.cpp)0
-rw-r--r--src/ipa/rpi/cam_helper/md_parser.h (renamed from src/ipa/raspberrypi/md_parser.h)0
-rw-r--r--src/ipa/rpi/cam_helper/md_parser_smia.cpp (renamed from src/ipa/raspberrypi/md_parser_smia.cpp)0
-rw-r--r--src/ipa/rpi/cam_helper/meson.build26
-rw-r--r--src/ipa/rpi/controller/af_algorithm.h (renamed from src/ipa/raspberrypi/controller/af_algorithm.h)0
-rw-r--r--src/ipa/rpi/controller/af_status.h (renamed from src/ipa/raspberrypi/controller/af_status.h)0
-rw-r--r--src/ipa/rpi/controller/agc_algorithm.h (renamed from src/ipa/raspberrypi/controller/agc_algorithm.h)0
-rw-r--r--src/ipa/rpi/controller/agc_status.h (renamed from src/ipa/raspberrypi/controller/agc_status.h)0
-rw-r--r--src/ipa/rpi/controller/algorithm.cpp (renamed from src/ipa/raspberrypi/controller/algorithm.cpp)0
-rw-r--r--src/ipa/rpi/controller/algorithm.h (renamed from src/ipa/raspberrypi/controller/algorithm.h)0
-rw-r--r--src/ipa/rpi/controller/alsc_status.h (renamed from src/ipa/raspberrypi/controller/alsc_status.h)0
-rw-r--r--src/ipa/rpi/controller/awb_algorithm.h (renamed from src/ipa/raspberrypi/controller/awb_algorithm.h)0
-rw-r--r--src/ipa/rpi/controller/awb_status.h (renamed from src/ipa/raspberrypi/controller/awb_status.h)0
-rw-r--r--src/ipa/rpi/controller/black_level_status.h (renamed from src/ipa/raspberrypi/controller/black_level_status.h)0
-rw-r--r--src/ipa/rpi/controller/camera_mode.h (renamed from src/ipa/raspberrypi/controller/camera_mode.h)0
-rw-r--r--src/ipa/rpi/controller/ccm_algorithm.h (renamed from src/ipa/raspberrypi/controller/ccm_algorithm.h)0
-rw-r--r--src/ipa/rpi/controller/ccm_status.h (renamed from src/ipa/raspberrypi/controller/ccm_status.h)0
-rw-r--r--src/ipa/rpi/controller/contrast_algorithm.h (renamed from src/ipa/raspberrypi/controller/contrast_algorithm.h)0
-rw-r--r--src/ipa/rpi/controller/contrast_status.h (renamed from src/ipa/raspberrypi/controller/contrast_status.h)0
-rw-r--r--src/ipa/rpi/controller/controller.cpp (renamed from src/ipa/raspberrypi/controller/controller.cpp)0
-rw-r--r--src/ipa/rpi/controller/controller.h (renamed from src/ipa/raspberrypi/controller/controller.h)0
-rw-r--r--src/ipa/rpi/controller/denoise_algorithm.h (renamed from src/ipa/raspberrypi/controller/denoise_algorithm.h)0
-rw-r--r--src/ipa/rpi/controller/denoise_status.h (renamed from src/ipa/raspberrypi/controller/denoise_status.h)0
-rw-r--r--src/ipa/rpi/controller/device_status.cpp (renamed from src/ipa/raspberrypi/controller/device_status.cpp)0
-rw-r--r--src/ipa/rpi/controller/device_status.h (renamed from src/ipa/raspberrypi/controller/device_status.h)0
-rw-r--r--src/ipa/rpi/controller/dpc_status.h (renamed from src/ipa/raspberrypi/controller/dpc_status.h)0
-rw-r--r--src/ipa/rpi/controller/geq_status.h (renamed from src/ipa/raspberrypi/controller/geq_status.h)0
-rw-r--r--src/ipa/rpi/controller/histogram.cpp (renamed from src/ipa/raspberrypi/controller/histogram.cpp)0
-rw-r--r--src/ipa/rpi/controller/histogram.h (renamed from src/ipa/raspberrypi/controller/histogram.h)0
-rw-r--r--src/ipa/rpi/controller/lux_status.h (renamed from src/ipa/raspberrypi/controller/lux_status.h)0
-rw-r--r--src/ipa/rpi/controller/meson.build29
-rw-r--r--src/ipa/rpi/controller/metadata.h (renamed from src/ipa/raspberrypi/controller/metadata.h)0
-rw-r--r--src/ipa/rpi/controller/noise_status.h (renamed from src/ipa/raspberrypi/controller/noise_status.h)0
-rw-r--r--src/ipa/rpi/controller/pdaf_data.h (renamed from src/ipa/raspberrypi/controller/pdaf_data.h)0
-rw-r--r--src/ipa/rpi/controller/pwl.cpp (renamed from src/ipa/raspberrypi/controller/pwl.cpp)0
-rw-r--r--src/ipa/rpi/controller/pwl.h (renamed from src/ipa/raspberrypi/controller/pwl.h)0
-rw-r--r--src/ipa/rpi/controller/region_stats.h (renamed from src/ipa/raspberrypi/controller/region_stats.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/af.cpp (renamed from src/ipa/raspberrypi/controller/rpi/af.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/af.h (renamed from src/ipa/raspberrypi/controller/rpi/af.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/agc.cpp (renamed from src/ipa/raspberrypi/controller/rpi/agc.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/agc.h (renamed from src/ipa/raspberrypi/controller/rpi/agc.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/alsc.cpp (renamed from src/ipa/raspberrypi/controller/rpi/alsc.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/alsc.h (renamed from src/ipa/raspberrypi/controller/rpi/alsc.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/awb.cpp (renamed from src/ipa/raspberrypi/controller/rpi/awb.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/awb.h (renamed from src/ipa/raspberrypi/controller/rpi/awb.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/black_level.cpp (renamed from src/ipa/raspberrypi/controller/rpi/black_level.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/black_level.h (renamed from src/ipa/raspberrypi/controller/rpi/black_level.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/ccm.cpp (renamed from src/ipa/raspberrypi/controller/rpi/ccm.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/ccm.h (renamed from src/ipa/raspberrypi/controller/rpi/ccm.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/contrast.cpp (renamed from src/ipa/raspberrypi/controller/rpi/contrast.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/contrast.h (renamed from src/ipa/raspberrypi/controller/rpi/contrast.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/dpc.cpp (renamed from src/ipa/raspberrypi/controller/rpi/dpc.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/dpc.h (renamed from src/ipa/raspberrypi/controller/rpi/dpc.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/focus.h (renamed from src/ipa/raspberrypi/controller/rpi/focus.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/geq.cpp (renamed from src/ipa/raspberrypi/controller/rpi/geq.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/geq.h (renamed from src/ipa/raspberrypi/controller/rpi/geq.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/lux.cpp (renamed from src/ipa/raspberrypi/controller/rpi/lux.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/lux.h (renamed from src/ipa/raspberrypi/controller/rpi/lux.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/noise.cpp (renamed from src/ipa/raspberrypi/controller/rpi/noise.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/noise.h (renamed from src/ipa/raspberrypi/controller/rpi/noise.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/sdn.cpp (renamed from src/ipa/raspberrypi/controller/rpi/sdn.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/sdn.h (renamed from src/ipa/raspberrypi/controller/rpi/sdn.h)0
-rw-r--r--src/ipa/rpi/controller/rpi/sharpen.cpp (renamed from src/ipa/raspberrypi/controller/rpi/sharpen.cpp)0
-rw-r--r--src/ipa/rpi/controller/rpi/sharpen.h (renamed from src/ipa/raspberrypi/controller/rpi/sharpen.h)0
-rw-r--r--src/ipa/rpi/controller/sharpen_algorithm.h (renamed from src/ipa/raspberrypi/controller/sharpen_algorithm.h)0
-rw-r--r--src/ipa/rpi/controller/sharpen_status.h (renamed from src/ipa/raspberrypi/controller/sharpen_status.h)0
-rw-r--r--src/ipa/rpi/controller/statistics.h (renamed from src/ipa/raspberrypi/statistics.h)0
-rw-r--r--src/ipa/rpi/meson.build13
-rw-r--r--src/ipa/rpi/vc4/data/imx219.json (renamed from src/ipa/raspberrypi/data/imx219.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx219_noir.json (renamed from src/ipa/raspberrypi/data/imx219_noir.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx290.json (renamed from src/ipa/raspberrypi/data/imx290.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx296.json (renamed from src/ipa/raspberrypi/data/imx296.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx296_mono.json (renamed from src/ipa/raspberrypi/data/imx296_mono.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx378.json (renamed from src/ipa/raspberrypi/data/imx378.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx477.json (renamed from src/ipa/raspberrypi/data/imx477.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx477_noir.json (renamed from src/ipa/raspberrypi/data/imx477_noir.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx477_scientific.json (renamed from src/ipa/raspberrypi/data/imx477_scientific.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx477_v1.json (renamed from src/ipa/raspberrypi/data/imx477_v1.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx519.json (renamed from src/ipa/raspberrypi/data/imx519.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx708.json (renamed from src/ipa/raspberrypi/data/imx708.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx708_noir.json (renamed from src/ipa/raspberrypi/data/imx708_noir.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx708_wide.json (renamed from src/ipa/raspberrypi/data/imx708_wide.json)0
-rw-r--r--src/ipa/rpi/vc4/data/imx708_wide_noir.json (renamed from src/ipa/raspberrypi/data/imx708_wide_noir.json)0
-rw-r--r--src/ipa/rpi/vc4/data/meson.build (renamed from src/ipa/raspberrypi/data/meson.build)2
-rw-r--r--src/ipa/rpi/vc4/data/ov5647.json (renamed from src/ipa/raspberrypi/data/ov5647.json)0
-rw-r--r--src/ipa/rpi/vc4/data/ov5647_noir.json (renamed from src/ipa/raspberrypi/data/ov5647_noir.json)0
-rw-r--r--src/ipa/rpi/vc4/data/ov9281_mono.json (renamed from src/ipa/raspberrypi/data/ov9281_mono.json)0
-rw-r--r--src/ipa/rpi/vc4/data/se327m12.json (renamed from src/ipa/raspberrypi/data/se327m12.json)0
-rw-r--r--src/ipa/rpi/vc4/data/uncalibrated.json (renamed from src/ipa/raspberrypi/data/uncalibrated.json)0
-rw-r--r--src/ipa/rpi/vc4/meson.build47
-rw-r--r--src/ipa/rpi/vc4/raspberrypi.cpp (renamed from src/ipa/raspberrypi/raspberrypi.cpp)48
-rw-r--r--src/libcamera/pipeline/rpi/common/delayed_controls.cpp (renamed from src/libcamera/pipeline/raspberrypi/delayed_controls.cpp)0
-rw-r--r--src/libcamera/pipeline/rpi/common/delayed_controls.h (renamed from src/libcamera/pipeline/raspberrypi/delayed_controls.h)0
-rw-r--r--src/libcamera/pipeline/rpi/common/meson.build6
-rw-r--r--src/libcamera/pipeline/rpi/common/rpi_stream.cpp (renamed from src/libcamera/pipeline/raspberrypi/rpi_stream.cpp)0
-rw-r--r--src/libcamera/pipeline/rpi/common/rpi_stream.h (renamed from src/libcamera/pipeline/raspberrypi/rpi_stream.h)0
-rw-r--r--src/libcamera/pipeline/rpi/meson.build12
-rw-r--r--src/libcamera/pipeline/rpi/vc4/data/example.yaml (renamed from src/libcamera/pipeline/raspberrypi/data/example.yaml)0
-rw-r--r--src/libcamera/pipeline/rpi/vc4/data/meson.build (renamed from src/libcamera/pipeline/raspberrypi/data/meson.build)2
-rw-r--r--src/libcamera/pipeline/rpi/vc4/dma_heaps.cpp (renamed from src/libcamera/pipeline/raspberrypi/dma_heaps.cpp)0
-rw-r--r--src/libcamera/pipeline/rpi/vc4/dma_heaps.h (renamed from src/libcamera/pipeline/raspberrypi/dma_heaps.h)0
-rw-r--r--src/libcamera/pipeline/rpi/vc4/meson.build (renamed from src/libcamera/pipeline/raspberrypi/meson.build)2
-rw-r--r--src/libcamera/pipeline/rpi/vc4/raspberrypi.cpp (renamed from src/libcamera/pipeline/raspberrypi/raspberrypi.cpp)6
121 files changed, 172 insertions, 109 deletions
diff --git a/.reuse/dep5 b/.reuse/dep5
index bba46179..d283a0c9 100644
--- a/.reuse/dep5
+++ b/.reuse/dep5
@@ -7,7 +7,7 @@ Files: Documentation/theme/static/search.png
Copyright: 2022 Fonticons, Inc.
License: CC-BY-4.0
-Files: src/ipa/raspberrypi/data/*.json
+Files: src/ipa/rpi/vc4/data/*.json
utils/raspberrypi/ctt/ctt_config_example.json
utils/raspberrypi/ctt/ctt_ref.pgm
Copyright: 2019-2020 Raspberry Pi Ltd
diff --git a/Documentation/environment_variables.rst b/Documentation/environment_variables.rst
index ceeb251a..a9b230bc 100644
--- a/Documentation/environment_variables.rst
+++ b/Documentation/environment_variables.rst
@@ -40,7 +40,7 @@ LIBCAMERA_IPA_MODULE_PATH
LIBCAMERA_RPI_CONFIG_FILE
Define a custom configuration file to use in the Raspberry Pi pipeline handler.
- Example value: ``/usr/local/share/libcamera/pipeline/raspberrypi/minimal_mem.yaml``
+ Example value: ``/usr/local/share/libcamera/pipeline/rpi/vc4/minimal_mem.yaml``
Further details
---------------
@@ -143,7 +143,7 @@ contain tuning parameters for the algorithms, in JSON format.
The ``LIBCAMERA_IPA_CONFIG_PATH`` variable can be used to specify custom
storage locations to search for those configuration files.
-`Examples <https://git.libcamera.org/libcamera/libcamera.git/tree/src/ipa/raspberrypi/data>`__
+`Examples <https://git.libcamera.org/libcamera/libcamera.git/tree/src/ipa/rpi/vc4/data>`__
IPA module
~~~~~~~~~~
diff --git a/Documentation/guides/introduction.rst b/Documentation/guides/introduction.rst
index 2d1760c1..700ec2d3 100644
--- a/Documentation/guides/introduction.rst
+++ b/Documentation/guides/introduction.rst
@@ -288,7 +288,7 @@ with dedicated pipeline handlers:
- Intel IPU3 (ipu3)
- Rockchip RK3399 (rkisp1)
- - RaspberryPi 3 and 4 (raspberrypi)
+ - RaspberryPi 3 and 4 (rpi/vc4)
Furthermore, generic platform support is provided for the following:
diff --git a/Documentation/guides/pipeline-handler.rst b/Documentation/guides/pipeline-handler.rst
index 1acd1812..57644534 100644
--- a/Documentation/guides/pipeline-handler.rst
+++ b/Documentation/guides/pipeline-handler.rst
@@ -183,7 +183,7 @@ to the libcamera build options in the top level ``meson_options.txt``.
option('pipelines',
type : 'array',
- choices : ['ipu3', 'raspberrypi', 'rkisp1', 'simple', 'uvcvideo', 'vimc', 'vivid'],
+ choices : ['ipu3', 'rkisp1', 'rpi/vc4', 'simple', 'uvcvideo', 'vimc', 'vivid'],
description : 'Select which pipeline handlers to include')
diff --git a/include/libcamera/ipa/meson.build b/include/libcamera/ipa/meson.build
index d2bb2cf4..6a5ae686 100644
--- a/include/libcamera/ipa/meson.build
+++ b/include/libcamera/ipa/meson.build
@@ -64,7 +64,7 @@ libcamera_generated_ipa_headers += custom_target('core_ipa_serializer_h',
pipeline_ipa_mojom_mapping = {
'ipu3': 'ipu3.mojom',
'rkisp1': 'rkisp1.mojom',
- 'raspberrypi': 'raspberrypi.mojom',
+ 'rpi/vc4': 'raspberrypi.mojom',
'vimc': 'vimc.mojom',
}
diff --git a/meson.build b/meson.build
index 2d99029b..e1fd9243 100644
--- a/meson.build
+++ b/meson.build
@@ -194,8 +194,8 @@ arch_x86 = ['x86', 'x86_64']
pipelines_support = {
'imx8-isi': arch_arm,
'ipu3': arch_x86,
- 'raspberrypi': arch_arm,
'rkisp1': arch_arm,
+ 'rpi/vc4': arch_arm,
'simple': arch_arm,
'uvcvideo': ['any'],
'vimc': ['test'],
diff --git a/meson_options.txt b/meson_options.txt
index 78a78b72..c8cd53b4 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -27,7 +27,7 @@ option('gstreamer',
option('ipas',
type : 'array',
- choices : ['ipu3', 'raspberrypi', 'rkisp1', 'vimc'],
+ choices : ['ipu3', 'rkisp1', 'rpi/vc4', 'vimc'],
description : 'Select which IPA modules to build')
option('lc-compliance',
@@ -43,8 +43,8 @@ option('pipelines',
'auto',
'imx8-isi',
'ipu3',
- 'raspberrypi',
'rkisp1',
+ 'rpi/vc4',
'simple',
'uvcvideo',
'vimc'
diff --git a/src/ipa/raspberrypi/meson.build b/src/ipa/raspberrypi/meson.build
deleted file mode 100644
index 95437cbc..00000000
--- a/src/ipa/raspberrypi/meson.build
+++ /dev/null
@@ -1,68 +0,0 @@
-# SPDX-License-Identifier: CC0-1.0
-
-ipa_name = 'ipa_rpi'
-
-rpi_ipa_deps = [
- libcamera_private,
- libatomic,
-]
-
-rpi_ipa_includes = [
- ipa_includes,
- libipa_includes,
- include_directories('controller')
-]
-
-rpi_ipa_sources = files([
- 'raspberrypi.cpp',
- 'md_parser_smia.cpp',
- 'cam_helper.cpp',
- 'cam_helper_ov5647.cpp',
- 'cam_helper_imx219.cpp',
- 'cam_helper_imx290.cpp',
- 'cam_helper_imx296.cpp',
- 'cam_helper_imx477.cpp',
- 'cam_helper_imx519.cpp',
- 'cam_helper_imx708.cpp',
- 'cam_helper_ov9281.cpp',
- 'controller/controller.cpp',
- 'controller/histogram.cpp',
- 'controller/algorithm.cpp',
- 'controller/rpi/af.cpp',
- 'controller/rpi/alsc.cpp',
- 'controller/rpi/awb.cpp',
- 'controller/rpi/sharpen.cpp',
- 'controller/rpi/black_level.cpp',
- 'controller/rpi/geq.cpp',
- 'controller/rpi/noise.cpp',
- 'controller/rpi/lux.cpp',
- 'controller/rpi/agc.cpp',
- 'controller/rpi/dpc.cpp',
- 'controller/rpi/ccm.cpp',
- 'controller/rpi/contrast.cpp',
- 'controller/rpi/sdn.cpp',
- 'controller/pwl.cpp',
- 'controller/device_status.cpp',
-])
-
-mod = shared_module(ipa_name,
- [rpi_ipa_sources, libcamera_generated_ipa_headers],
- name_prefix : '',
- include_directories : rpi_ipa_includes,
- dependencies : rpi_ipa_deps,
- link_with : libipa,
- install : true,
- install_dir : ipa_install_dir)
-
-if ipa_sign_module
- custom_target(ipa_name + '.so.sign',
- input : mod,
- output : ipa_name + '.so.sign',
- command : [ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@'],
- install : false,
- build_by_default : true)
-endif
-
-subdir('data')
-
-ipa_names += ipa_name
diff --git a/src/ipa/raspberrypi/README.md b/src/ipa/rpi/README.md
index 94a8ccc8..94a8ccc8 100644
--- a/src/ipa/raspberrypi/README.md
+++ b/src/ipa/rpi/README.md
diff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/rpi/cam_helper/cam_helper.cpp
index ddd5e9a4..ddd5e9a4 100644
--- a/src/ipa/raspberrypi/cam_helper.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper.cpp
diff --git a/src/ipa/raspberrypi/cam_helper.h b/src/ipa/rpi/cam_helper/cam_helper.h
index b3f8c980..58a4b202 100644
--- a/src/ipa/raspberrypi/cam_helper.h
+++ b/src/ipa/rpi/cam_helper/cam_helper.h
@@ -13,7 +13,7 @@
#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
-#include "camera_mode.h"
+#include "controller/camera_mode.h"
#include "controller/controller.h"
#include "controller/metadata.h"
#include "md_parser.h"
diff --git a/src/ipa/raspberrypi/cam_helper_imx219.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
index c3337ed0..c3337ed0 100644
--- a/src/ipa/raspberrypi/cam_helper_imx219.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_imx290.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
index 7d6f5b54..7d6f5b54 100644
--- a/src/ipa/raspberrypi/cam_helper_imx290.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_imx296.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
index ecb845e7..ecb845e7 100644
--- a/src/ipa/raspberrypi/cam_helper_imx296.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_imx477.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
index bc769ca7..bc769ca7 100644
--- a/src/ipa/raspberrypi/cam_helper_imx477.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_imx519.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
index c7262aa0..c7262aa0 100644
--- a/src/ipa/raspberrypi/cam_helper_imx519.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_imx708.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
index 641ba18f..641ba18f 100644
--- a/src/ipa/raspberrypi/cam_helper_imx708.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_ov5647.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
index 5a99083d..5a99083d 100644
--- a/src/ipa/raspberrypi/cam_helper_ov5647.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
diff --git a/src/ipa/raspberrypi/cam_helper_ov9281.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
index 86c5bc4c..86c5bc4c 100644
--- a/src/ipa/raspberrypi/cam_helper_ov9281.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
diff --git a/src/ipa/raspberrypi/md_parser.h b/src/ipa/rpi/cam_helper/md_parser.h
index 77d557aa..77d557aa 100644
--- a/src/ipa/raspberrypi/md_parser.h
+++ b/src/ipa/rpi/cam_helper/md_parser.h
diff --git a/src/ipa/raspberrypi/md_parser_smia.cpp b/src/ipa/rpi/cam_helper/md_parser_smia.cpp
index 210787ed..210787ed 100644
--- a/src/ipa/raspberrypi/md_parser_smia.cpp
+++ b/src/ipa/rpi/cam_helper/md_parser_smia.cpp
diff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build
new file mode 100644
index 00000000..bdf2db8e
--- /dev/null
+++ b/src/ipa/rpi/cam_helper/meson.build
@@ -0,0 +1,26 @@
+# SPDX-License-Identifier: CC0-1.0
+
+rpi_ipa_cam_helper_sources = files([
+ 'cam_helper.cpp',
+ 'cam_helper_ov5647.cpp',
+ 'cam_helper_imx219.cpp',
+ 'cam_helper_imx290.cpp',
+ 'cam_helper_imx296.cpp',
+ 'cam_helper_imx477.cpp',
+ 'cam_helper_imx519.cpp',
+ 'cam_helper_imx708.cpp',
+ 'cam_helper_ov9281.cpp',
+ 'md_parser_smia.cpp',
+])
+
+rpi_ipa_cam_helper_includes = [
+ include_directories('..'),
+]
+
+rpi_ipa_cam_helper_deps = [
+ libcamera_private,
+]
+
+rpi_ipa_cam_helper_lib = static_library('rpi_ipa_cam_helper', rpi_ipa_cam_helper_sources,
+ include_directories : rpi_ipa_cam_helper_includes,
+ dependencies : rpi_ipa_cam_helper_deps)
diff --git a/src/ipa/raspberrypi/controller/af_algorithm.h b/src/ipa/rpi/controller/af_algorithm.h
index ad9b5754..ad9b5754 100644
--- a/src/ipa/raspberrypi/controller/af_algorithm.h
+++ b/src/ipa/rpi/controller/af_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/af_status.h b/src/ipa/rpi/controller/af_status.h
index 92c08812..92c08812 100644
--- a/src/ipa/raspberrypi/controller/af_status.h
+++ b/src/ipa/rpi/controller/af_status.h
diff --git a/src/ipa/raspberrypi/controller/agc_algorithm.h b/src/ipa/rpi/controller/agc_algorithm.h
index 36e6c110..36e6c110 100644
--- a/src/ipa/raspberrypi/controller/agc_algorithm.h
+++ b/src/ipa/rpi/controller/agc_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/agc_status.h b/src/ipa/rpi/controller/agc_status.h
index 6abf09d9..6abf09d9 100644
--- a/src/ipa/raspberrypi/controller/agc_status.h
+++ b/src/ipa/rpi/controller/agc_status.h
diff --git a/src/ipa/raspberrypi/controller/algorithm.cpp b/src/ipa/rpi/controller/algorithm.cpp
index a957fde5..a957fde5 100644
--- a/src/ipa/raspberrypi/controller/algorithm.cpp
+++ b/src/ipa/rpi/controller/algorithm.cpp
diff --git a/src/ipa/raspberrypi/controller/algorithm.h b/src/ipa/rpi/controller/algorithm.h
index 4aa814eb..4aa814eb 100644
--- a/src/ipa/raspberrypi/controller/algorithm.h
+++ b/src/ipa/rpi/controller/algorithm.h
diff --git a/src/ipa/raspberrypi/controller/alsc_status.h b/src/ipa/rpi/controller/alsc_status.h
index 49a9f4a0..49a9f4a0 100644
--- a/src/ipa/raspberrypi/controller/alsc_status.h
+++ b/src/ipa/rpi/controller/alsc_status.h
diff --git a/src/ipa/raspberrypi/controller/awb_algorithm.h b/src/ipa/rpi/controller/awb_algorithm.h
index 8462c4db..8462c4db 100644
--- a/src/ipa/raspberrypi/controller/awb_algorithm.h
+++ b/src/ipa/rpi/controller/awb_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/awb_status.h b/src/ipa/rpi/controller/awb_status.h
index dd5a79e3..dd5a79e3 100644
--- a/src/ipa/raspberrypi/controller/awb_status.h
+++ b/src/ipa/rpi/controller/awb_status.h
diff --git a/src/ipa/raspberrypi/controller/black_level_status.h b/src/ipa/rpi/controller/black_level_status.h
index fd5e4ccb..fd5e4ccb 100644
--- a/src/ipa/raspberrypi/controller/black_level_status.h
+++ b/src/ipa/rpi/controller/black_level_status.h
diff --git a/src/ipa/raspberrypi/controller/camera_mode.h b/src/ipa/rpi/controller/camera_mode.h
index 63b11778..63b11778 100644
--- a/src/ipa/raspberrypi/controller/camera_mode.h
+++ b/src/ipa/rpi/controller/camera_mode.h
diff --git a/src/ipa/raspberrypi/controller/ccm_algorithm.h b/src/ipa/rpi/controller/ccm_algorithm.h
index e2c4d771..e2c4d771 100644
--- a/src/ipa/raspberrypi/controller/ccm_algorithm.h
+++ b/src/ipa/rpi/controller/ccm_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/ccm_status.h b/src/ipa/rpi/controller/ccm_status.h
index 5e28ee7c..5e28ee7c 100644
--- a/src/ipa/raspberrypi/controller/ccm_status.h
+++ b/src/ipa/rpi/controller/ccm_status.h
diff --git a/src/ipa/raspberrypi/controller/contrast_algorithm.h b/src/ipa/rpi/controller/contrast_algorithm.h
index ce17a4f9..ce17a4f9 100644
--- a/src/ipa/raspberrypi/controller/contrast_algorithm.h
+++ b/src/ipa/rpi/controller/contrast_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/contrast_status.h b/src/ipa/rpi/controller/contrast_status.h
index fb9fe4ba..fb9fe4ba 100644
--- a/src/ipa/raspberrypi/controller/contrast_status.h
+++ b/src/ipa/rpi/controller/contrast_status.h
diff --git a/src/ipa/raspberrypi/controller/controller.cpp b/src/ipa/rpi/controller/controller.cpp
index fa172113..fa172113 100644
--- a/src/ipa/raspberrypi/controller/controller.cpp
+++ b/src/ipa/rpi/controller/controller.cpp
diff --git a/src/ipa/raspberrypi/controller/controller.h b/src/ipa/rpi/controller/controller.h
index c6af5cd6..c6af5cd6 100644
--- a/src/ipa/raspberrypi/controller/controller.h
+++ b/src/ipa/rpi/controller/controller.h
diff --git a/src/ipa/raspberrypi/controller/denoise_algorithm.h b/src/ipa/rpi/controller/denoise_algorithm.h
index 52009ba9..52009ba9 100644
--- a/src/ipa/raspberrypi/controller/denoise_algorithm.h
+++ b/src/ipa/rpi/controller/denoise_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/denoise_status.h b/src/ipa/rpi/controller/denoise_status.h
index f6b9ee29..f6b9ee29 100644
--- a/src/ipa/raspberrypi/controller/denoise_status.h
+++ b/src/ipa/rpi/controller/denoise_status.h
diff --git a/src/ipa/raspberrypi/controller/device_status.cpp b/src/ipa/rpi/controller/device_status.cpp
index c907efdd..c907efdd 100644
--- a/src/ipa/raspberrypi/controller/device_status.cpp
+++ b/src/ipa/rpi/controller/device_status.cpp
diff --git a/src/ipa/raspberrypi/controller/device_status.h b/src/ipa/rpi/controller/device_status.h
index c45db749..c45db749 100644
--- a/src/ipa/raspberrypi/controller/device_status.h
+++ b/src/ipa/rpi/controller/device_status.h
diff --git a/src/ipa/raspberrypi/controller/dpc_status.h b/src/ipa/rpi/controller/dpc_status.h
index 46d0cf34..46d0cf34 100644
--- a/src/ipa/raspberrypi/controller/dpc_status.h
+++ b/src/ipa/rpi/controller/dpc_status.h
diff --git a/src/ipa/raspberrypi/controller/geq_status.h b/src/ipa/rpi/controller/geq_status.h
index 2d749fc9..2d749fc9 100644
--- a/src/ipa/raspberrypi/controller/geq_status.h
+++ b/src/ipa/rpi/controller/geq_status.h
diff --git a/src/ipa/raspberrypi/controller/histogram.cpp b/src/ipa/rpi/controller/histogram.cpp
index 16a9207f..16a9207f 100644
--- a/src/ipa/raspberrypi/controller/histogram.cpp
+++ b/src/ipa/rpi/controller/histogram.cpp
diff --git a/src/ipa/raspberrypi/controller/histogram.h b/src/ipa/rpi/controller/histogram.h
index 6b3e3a9e..6b3e3a9e 100644
--- a/src/ipa/raspberrypi/controller/histogram.h
+++ b/src/ipa/rpi/controller/histogram.h
diff --git a/src/ipa/raspberrypi/controller/lux_status.h b/src/ipa/rpi/controller/lux_status.h
index 5eb9faac..5eb9faac 100644
--- a/src/ipa/raspberrypi/controller/lux_status.h
+++ b/src/ipa/rpi/controller/lux_status.h
diff --git a/src/ipa/rpi/controller/meson.build b/src/ipa/rpi/controller/meson.build
new file mode 100644
index 00000000..feb0334e
--- /dev/null
+++ b/src/ipa/rpi/controller/meson.build
@@ -0,0 +1,29 @@
+# SPDX-License-Identifier: CC0-1.0
+
+rpi_ipa_controller_sources = files([
+ 'algorithm.cpp',
+ 'controller.cpp',
+ 'device_status.cpp',
+ 'histogram.cpp',
+ 'pwl.cpp',
+ 'rpi/af.cpp',
+ 'rpi/agc.cpp',
+ 'rpi/alsc.cpp',
+ 'rpi/awb.cpp',
+ 'rpi/black_level.cpp',
+ 'rpi/ccm.cpp',
+ 'rpi/contrast.cpp',
+ 'rpi/dpc.cpp',
+ 'rpi/geq.cpp',
+ 'rpi/lux.cpp',
+ 'rpi/noise.cpp',
+ 'rpi/sdn.cpp',
+ 'rpi/sharpen.cpp',
+])
+
+rpi_ipa_controller_deps = [
+ libcamera_private,
+]
+
+rpi_ipa_controller_lib = static_library('rpi_ipa_controller', rpi_ipa_controller_sources,
+ dependencies : rpi_ipa_controller_deps)
diff --git a/src/ipa/raspberrypi/controller/metadata.h b/src/ipa/rpi/controller/metadata.h
index bf8a2393..bf8a2393 100644
--- a/src/ipa/raspberrypi/controller/metadata.h
+++ b/src/ipa/rpi/controller/metadata.h
diff --git a/src/ipa/raspberrypi/controller/noise_status.h b/src/ipa/rpi/controller/noise_status.h
index da194f71..da194f71 100644
--- a/src/ipa/raspberrypi/controller/noise_status.h
+++ b/src/ipa/rpi/controller/noise_status.h
diff --git a/src/ipa/raspberrypi/controller/pdaf_data.h b/src/ipa/rpi/controller/pdaf_data.h
index 470510f2..470510f2 100644
--- a/src/ipa/raspberrypi/controller/pdaf_data.h
+++ b/src/ipa/rpi/controller/pdaf_data.h
diff --git a/src/ipa/raspberrypi/controller/pwl.cpp b/src/ipa/rpi/controller/pwl.cpp
index 70c2e24b..70c2e24b 100644
--- a/src/ipa/raspberrypi/controller/pwl.cpp
+++ b/src/ipa/rpi/controller/pwl.cpp
diff --git a/src/ipa/raspberrypi/controller/pwl.h b/src/ipa/rpi/controller/pwl.h
index aacf6039..aacf6039 100644
--- a/src/ipa/raspberrypi/controller/pwl.h
+++ b/src/ipa/rpi/controller/pwl.h
diff --git a/src/ipa/raspberrypi/controller/region_stats.h b/src/ipa/rpi/controller/region_stats.h
index a8860dc8..a8860dc8 100644
--- a/src/ipa/raspberrypi/controller/region_stats.h
+++ b/src/ipa/rpi/controller/region_stats.h
diff --git a/src/ipa/raspberrypi/controller/rpi/af.cpp b/src/ipa/rpi/controller/rpi/af.cpp
index ed0c8a94..ed0c8a94 100644
--- a/src/ipa/raspberrypi/controller/rpi/af.cpp
+++ b/src/ipa/rpi/controller/rpi/af.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/af.h b/src/ipa/rpi/controller/rpi/af.h
index 6d2bae67..6d2bae67 100644
--- a/src/ipa/raspberrypi/controller/rpi/af.h
+++ b/src/ipa/rpi/controller/rpi/af.h
diff --git a/src/ipa/raspberrypi/controller/rpi/agc.cpp b/src/ipa/rpi/controller/rpi/agc.cpp
index e6fb7b8d..e6fb7b8d 100644
--- a/src/ipa/raspberrypi/controller/rpi/agc.cpp
+++ b/src/ipa/rpi/controller/rpi/agc.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/agc.h b/src/ipa/rpi/controller/rpi/agc.h
index 4e5f272f..4e5f272f 100644
--- a/src/ipa/raspberrypi/controller/rpi/agc.h
+++ b/src/ipa/rpi/controller/rpi/agc.h
diff --git a/src/ipa/raspberrypi/controller/rpi/alsc.cpp b/src/ipa/rpi/controller/rpi/alsc.cpp
index 3a2e8fe0..3a2e8fe0 100644
--- a/src/ipa/raspberrypi/controller/rpi/alsc.cpp
+++ b/src/ipa/rpi/controller/rpi/alsc.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/alsc.h b/src/ipa/rpi/controller/rpi/alsc.h
index 0b6d9478..0b6d9478 100644
--- a/src/ipa/raspberrypi/controller/rpi/alsc.h
+++ b/src/ipa/rpi/controller/rpi/alsc.h
diff --git a/src/ipa/raspberrypi/controller/rpi/awb.cpp b/src/ipa/rpi/controller/rpi/awb.cpp
index ef3435d6..ef3435d6 100644
--- a/src/ipa/raspberrypi/controller/rpi/awb.cpp
+++ b/src/ipa/rpi/controller/rpi/awb.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/awb.h b/src/ipa/rpi/controller/rpi/awb.h
index e7d49cd8..e7d49cd8 100644
--- a/src/ipa/raspberrypi/controller/rpi/awb.h
+++ b/src/ipa/rpi/controller/rpi/awb.h
diff --git a/src/ipa/raspberrypi/controller/rpi/black_level.cpp b/src/ipa/rpi/controller/rpi/black_level.cpp
index 85baec3f..85baec3f 100644
--- a/src/ipa/raspberrypi/controller/rpi/black_level.cpp
+++ b/src/ipa/rpi/controller/rpi/black_level.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/black_level.h b/src/ipa/rpi/controller/rpi/black_level.h
index 2403f7f7..2403f7f7 100644
--- a/src/ipa/raspberrypi/controller/rpi/black_level.h
+++ b/src/ipa/rpi/controller/rpi/black_level.h
diff --git a/src/ipa/raspberrypi/controller/rpi/ccm.cpp b/src/ipa/rpi/controller/rpi/ccm.cpp
index 2e2e6664..2e2e6664 100644
--- a/src/ipa/raspberrypi/controller/rpi/ccm.cpp
+++ b/src/ipa/rpi/controller/rpi/ccm.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/ccm.h b/src/ipa/rpi/controller/rpi/ccm.h
index 286d0b33..286d0b33 100644
--- a/src/ipa/raspberrypi/controller/rpi/ccm.h
+++ b/src/ipa/rpi/controller/rpi/ccm.h
diff --git a/src/ipa/raspberrypi/controller/rpi/contrast.cpp b/src/ipa/rpi/controller/rpi/contrast.cpp
index bee1eadd..bee1eadd 100644
--- a/src/ipa/raspberrypi/controller/rpi/contrast.cpp
+++ b/src/ipa/rpi/controller/rpi/contrast.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/contrast.h b/src/ipa/rpi/controller/rpi/contrast.h
index 9c81277a..9c81277a 100644
--- a/src/ipa/raspberrypi/controller/rpi/contrast.h
+++ b/src/ipa/rpi/controller/rpi/contrast.h
diff --git a/src/ipa/raspberrypi/controller/rpi/dpc.cpp b/src/ipa/rpi/controller/rpi/dpc.cpp
index be3871df..be3871df 100644
--- a/src/ipa/raspberrypi/controller/rpi/dpc.cpp
+++ b/src/ipa/rpi/controller/rpi/dpc.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/dpc.h b/src/ipa/rpi/controller/rpi/dpc.h
index 84a05604..84a05604 100644
--- a/src/ipa/raspberrypi/controller/rpi/dpc.h
+++ b/src/ipa/rpi/controller/rpi/dpc.h
diff --git a/src/ipa/raspberrypi/controller/rpi/focus.h b/src/ipa/rpi/controller/rpi/focus.h
index 8556039d..8556039d 100644
--- a/src/ipa/raspberrypi/controller/rpi/focus.h
+++ b/src/ipa/rpi/controller/rpi/focus.h
diff --git a/src/ipa/raspberrypi/controller/rpi/geq.cpp b/src/ipa/rpi/controller/rpi/geq.cpp
index 510870e9..510870e9 100644
--- a/src/ipa/raspberrypi/controller/rpi/geq.cpp
+++ b/src/ipa/rpi/controller/rpi/geq.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/geq.h b/src/ipa/rpi/controller/rpi/geq.h
index ee3a52ff..ee3a52ff 100644
--- a/src/ipa/raspberrypi/controller/rpi/geq.h
+++ b/src/ipa/rpi/controller/rpi/geq.h
diff --git a/src/ipa/raspberrypi/controller/rpi/lux.cpp b/src/ipa/rpi/controller/rpi/lux.cpp
index 06625f3a..06625f3a 100644
--- a/src/ipa/raspberrypi/controller/rpi/lux.cpp
+++ b/src/ipa/rpi/controller/rpi/lux.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/lux.h b/src/ipa/rpi/controller/rpi/lux.h
index 89411a54..89411a54 100644
--- a/src/ipa/raspberrypi/controller/rpi/lux.h
+++ b/src/ipa/rpi/controller/rpi/lux.h
diff --git a/src/ipa/raspberrypi/controller/rpi/noise.cpp b/src/ipa/rpi/controller/rpi/noise.cpp
index bcd8b9ed..bcd8b9ed 100644
--- a/src/ipa/raspberrypi/controller/rpi/noise.cpp
+++ b/src/ipa/rpi/controller/rpi/noise.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/noise.h b/src/ipa/rpi/controller/rpi/noise.h
index 74c31e64..74c31e64 100644
--- a/src/ipa/raspberrypi/controller/rpi/noise.h
+++ b/src/ipa/rpi/controller/rpi/noise.h
diff --git a/src/ipa/raspberrypi/controller/rpi/sdn.cpp b/src/ipa/rpi/controller/rpi/sdn.cpp
index b6b66251..b6b66251 100644
--- a/src/ipa/raspberrypi/controller/rpi/sdn.cpp
+++ b/src/ipa/rpi/controller/rpi/sdn.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/sdn.h b/src/ipa/rpi/controller/rpi/sdn.h
index 9dd73c38..9dd73c38 100644
--- a/src/ipa/raspberrypi/controller/rpi/sdn.h
+++ b/src/ipa/rpi/controller/rpi/sdn.h
diff --git a/src/ipa/raspberrypi/controller/rpi/sharpen.cpp b/src/ipa/rpi/controller/rpi/sharpen.cpp
index 4f6f020a..4f6f020a 100644
--- a/src/ipa/raspberrypi/controller/rpi/sharpen.cpp
+++ b/src/ipa/rpi/controller/rpi/sharpen.cpp
diff --git a/src/ipa/raspberrypi/controller/rpi/sharpen.h b/src/ipa/rpi/controller/rpi/sharpen.h
index 8bb7631e..8bb7631e 100644
--- a/src/ipa/raspberrypi/controller/rpi/sharpen.h
+++ b/src/ipa/rpi/controller/rpi/sharpen.h
diff --git a/src/ipa/raspberrypi/controller/sharpen_algorithm.h b/src/ipa/rpi/controller/sharpen_algorithm.h
index 3be21c32..3be21c32 100644
--- a/src/ipa/raspberrypi/controller/sharpen_algorithm.h
+++ b/src/ipa/rpi/controller/sharpen_algorithm.h
diff --git a/src/ipa/raspberrypi/controller/sharpen_status.h b/src/ipa/rpi/controller/sharpen_status.h
index 106166db..106166db 100644
--- a/src/ipa/raspberrypi/controller/sharpen_status.h
+++ b/src/ipa/rpi/controller/sharpen_status.h
diff --git a/src/ipa/raspberrypi/statistics.h b/src/ipa/rpi/controller/statistics.h
index 015d4efc..015d4efc 100644
--- a/src/ipa/raspberrypi/statistics.h
+++ b/src/ipa/rpi/controller/statistics.h
diff --git a/src/ipa/rpi/meson.build b/src/ipa/rpi/meson.build
new file mode 100644
index 00000000..7d7a61f7
--- /dev/null
+++ b/src/ipa/rpi/meson.build
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: CC0-1.0
+
+subdir('cam_helper')
+subdir('controller')
+
+foreach pipeline : pipelines
+ pipeline = pipeline.split('/')
+ if pipeline.length() < 2 or pipeline[0] != 'rpi'
+ continue
+ endif
+
+ subdir(pipeline[1])
+endforeach
diff --git a/src/ipa/raspberrypi/data/imx219.json b/src/ipa/rpi/vc4/data/imx219.json
index efe7210a..efe7210a 100644
--- a/src/ipa/raspberrypi/data/imx219.json
+++ b/src/ipa/rpi/vc4/data/imx219.json
diff --git a/src/ipa/raspberrypi/data/imx219_noir.json b/src/ipa/rpi/vc4/data/imx219_noir.json
index cfedb943..cfedb943 100644
--- a/src/ipa/raspberrypi/data/imx219_noir.json
+++ b/src/ipa/rpi/vc4/data/imx219_noir.json
diff --git a/src/ipa/raspberrypi/data/imx290.json b/src/ipa/rpi/vc4/data/imx290.json
index ace68d0e..ace68d0e 100644
--- a/src/ipa/raspberrypi/data/imx290.json
+++ b/src/ipa/rpi/vc4/data/imx290.json
diff --git a/src/ipa/raspberrypi/data/imx296.json b/src/ipa/rpi/vc4/data/imx296.json
index ae8722c4..ae8722c4 100644
--- a/src/ipa/raspberrypi/data/imx296.json
+++ b/src/ipa/rpi/vc4/data/imx296.json
diff --git a/src/ipa/raspberrypi/data/imx296_mono.json b/src/ipa/rpi/vc4/data/imx296_mono.json
index 30965b4b..30965b4b 100644
--- a/src/ipa/raspberrypi/data/imx296_mono.json
+++ b/src/ipa/rpi/vc4/data/imx296_mono.json
diff --git a/src/ipa/raspberrypi/data/imx378.json b/src/ipa/rpi/vc4/data/imx378.json
index 8b4ed225..8b4ed225 100644
--- a/src/ipa/raspberrypi/data/imx378.json
+++ b/src/ipa/rpi/vc4/data/imx378.json
diff --git a/src/ipa/raspberrypi/data/imx477.json b/src/ipa/rpi/vc4/data/imx477.json
index daffc268..daffc268 100644
--- a/src/ipa/raspberrypi/data/imx477.json
+++ b/src/ipa/rpi/vc4/data/imx477.json
diff --git a/src/ipa/raspberrypi/data/imx477_noir.json b/src/ipa/rpi/vc4/data/imx477_noir.json
index 52d7f072..52d7f072 100644
--- a/src/ipa/raspberrypi/data/imx477_noir.json
+++ b/src/ipa/rpi/vc4/data/imx477_noir.json
diff --git a/src/ipa/raspberrypi/data/imx477_scientific.json b/src/ipa/rpi/vc4/data/imx477_scientific.json
index 26c692fd..26c692fd 100644
--- a/src/ipa/raspberrypi/data/imx477_scientific.json
+++ b/src/ipa/rpi/vc4/data/imx477_scientific.json
diff --git a/src/ipa/raspberrypi/data/imx477_v1.json b/src/ipa/rpi/vc4/data/imx477_v1.json
index d6402009..d6402009 100644
--- a/src/ipa/raspberrypi/data/imx477_v1.json
+++ b/src/ipa/rpi/vc4/data/imx477_v1.json
diff --git a/src/ipa/raspberrypi/data/imx519.json b/src/ipa/rpi/vc4/data/imx519.json
index 8ccfd3a6..8ccfd3a6 100644
--- a/src/ipa/raspberrypi/data/imx519.json
+++ b/src/ipa/rpi/vc4/data/imx519.json
diff --git a/src/ipa/raspberrypi/data/imx708.json b/src/ipa/rpi/vc4/data/imx708.json
index b9830a3b..b9830a3b 100644
--- a/src/ipa/raspberrypi/data/imx708.json
+++ b/src/ipa/rpi/vc4/data/imx708.json
diff --git a/src/ipa/raspberrypi/data/imx708_noir.json b/src/ipa/rpi/vc4/data/imx708_noir.json
index 075f7035..075f7035 100644
--- a/src/ipa/raspberrypi/data/imx708_noir.json
+++ b/src/ipa/rpi/vc4/data/imx708_noir.json
diff --git a/src/ipa/raspberrypi/data/imx708_wide.json b/src/ipa/rpi/vc4/data/imx708_wide.json
index b772efee..b772efee 100644
--- a/src/ipa/raspberrypi/data/imx708_wide.json
+++ b/src/ipa/rpi/vc4/data/imx708_wide.json
diff --git a/src/ipa/raspberrypi/data/imx708_wide_noir.json b/src/ipa/rpi/vc4/data/imx708_wide_noir.json
index c5f6b53d..c5f6b53d 100644
--- a/src/ipa/raspberrypi/data/imx708_wide_noir.json
+++ b/src/ipa/rpi/vc4/data/imx708_wide_noir.json
diff --git a/src/ipa/raspberrypi/data/meson.build b/src/ipa/rpi/vc4/data/meson.build
index b163a052..bcf5658b 100644
--- a/src/ipa/raspberrypi/data/meson.build
+++ b/src/ipa/rpi/vc4/data/meson.build
@@ -23,4 +23,4 @@ conf_files = files([
])
install_data(conf_files,
- install_dir : ipa_data_dir / 'raspberrypi')
+ install_dir : ipa_data_dir / 'rpi' / 'vc4')
diff --git a/src/ipa/raspberrypi/data/ov5647.json b/src/ipa/rpi/vc4/data/ov5647.json
index d770e44f..d770e44f 100644
--- a/src/ipa/raspberrypi/data/ov5647.json
+++ b/src/ipa/rpi/vc4/data/ov5647.json
diff --git a/src/ipa/raspberrypi/data/ov5647_noir.json b/src/ipa/rpi/vc4/data/ov5647_noir.json
index a6c6722f..a6c6722f 100644
--- a/src/ipa/raspberrypi/data/ov5647_noir.json
+++ b/src/ipa/rpi/vc4/data/ov5647_noir.json
diff --git a/src/ipa/raspberrypi/data/ov9281_mono.json b/src/ipa/rpi/vc4/data/ov9281_mono.json
index 37944c63..37944c63 100644
--- a/src/ipa/raspberrypi/data/ov9281_mono.json
+++ b/src/ipa/rpi/vc4/data/ov9281_mono.json
diff --git a/src/ipa/raspberrypi/data/se327m12.json b/src/ipa/rpi/vc4/data/se327m12.json
index ee69caea..ee69caea 100644
--- a/src/ipa/raspberrypi/data/se327m12.json
+++ b/src/ipa/rpi/vc4/data/se327m12.json
diff --git a/src/ipa/raspberrypi/data/uncalibrated.json b/src/ipa/rpi/vc4/data/uncalibrated.json
index 13eb3f17..13eb3f17 100644
--- a/src/ipa/raspberrypi/data/uncalibrated.json
+++ b/src/ipa/rpi/vc4/data/uncalibrated.json
diff --git a/src/ipa/rpi/vc4/meson.build b/src/ipa/rpi/vc4/meson.build
new file mode 100644
index 00000000..df01c150
--- /dev/null
+++ b/src/ipa/rpi/vc4/meson.build
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: CC0-1.0
+
+ipa_name = 'ipa_rpi_vc4'
+
+vc4_ipa_deps = [
+ libcamera_private,
+ libatomic,
+]
+
+vc4_ipa_libs = [
+ rpi_ipa_cam_helper_lib,
+ rpi_ipa_controller_lib
+]
+
+vc4_ipa_includes = [
+ ipa_includes,
+ libipa_includes,
+]
+
+vc4_ipa_sources = files([
+ 'raspberrypi.cpp',
+])
+
+vc4_ipa_includes += include_directories('..')
+
+mod = shared_module(ipa_name,
+ [vc4_ipa_sources, libcamera_generated_ipa_headers],
+ name_prefix : '',
+ include_directories : vc4_ipa_includes,
+ dependencies : vc4_ipa_deps,
+ link_with : libipa,
+ link_whole : vc4_ipa_libs,
+ install : true,
+ install_dir : ipa_install_dir)
+
+if ipa_sign_module
+ custom_target(ipa_name + '.so.sign',
+ input : mod,
+ output : ipa_name + '.so.sign',
+ command : [ipa_sign, ipa_priv_key, '@INPUT@', '@OUTPUT@'],
+ install : false,
+ build_by_default : true)
+endif
+
+subdir('data')
+
+ipa_names += ipa_name
diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/rpi/vc4/raspberrypi.cpp
index 9c29fa9a..5d3bf4ca 100644
--- a/src/ipa/raspberrypi/raspberrypi.cpp
+++ b/src/ipa/rpi/vc4/raspberrypi.cpp
@@ -33,29 +33,29 @@
#include "libcamera/internal/mapped_framebuffer.h"
-#include "af_algorithm.h"
-#include "af_status.h"
-#include "agc_algorithm.h"
-#include "agc_status.h"
-#include "alsc_status.h"
-#include "awb_algorithm.h"
-#include "awb_status.h"
-#include "black_level_status.h"
-#include "cam_helper.h"
-#include "ccm_algorithm.h"
-#include "ccm_status.h"
-#include "contrast_algorithm.h"
-#include "contrast_status.h"
-#include "controller.h"
-#include "denoise_algorithm.h"
-#include "denoise_status.h"
-#include "dpc_status.h"
-#include "geq_status.h"
-#include "lux_status.h"
-#include "metadata.h"
-#include "sharpen_algorithm.h"
-#include "sharpen_status.h"
-#include "statistics.h"
+#include "cam_helper/cam_helper.h"
+#include "controller/af_algorithm.h"
+#include "controller/af_status.h"
+#include "controller/agc_algorithm.h"
+#include "controller/agc_status.h"
+#include "controller/alsc_status.h"
+#include "controller/awb_algorithm.h"
+#include "controller/awb_status.h"
+#include "controller/black_level_status.h"
+#include "controller/ccm_algorithm.h"
+#include "controller/ccm_status.h"
+#include "controller/contrast_algorithm.h"
+#include "controller/contrast_status.h"
+#include "controller/controller.h"
+#include "controller/denoise_algorithm.h"
+#include "controller/denoise_status.h"
+#include "controller/dpc_status.h"
+#include "controller/geq_status.h"
+#include "controller/lux_status.h"
+#include "controller/metadata.h"
+#include "controller/sharpen_algorithm.h"
+#include "controller/sharpen_status.h"
+#include "controller/statistics.h"
namespace libcamera {
@@ -1840,7 +1840,7 @@ const struct IPAModuleInfo ipaModuleInfo = {
IPA_MODULE_API_VERSION,
1,
"PipelineHandlerRPi",
- "raspberrypi",
+ "rpi/vc4",
};
IPAInterface *ipaCreate()
diff --git a/src/libcamera/pipeline/raspberrypi/delayed_controls.cpp b/src/libcamera/pipeline/rpi/common/delayed_controls.cpp
index 3db92e7d..3db92e7d 100644
--- a/src/libcamera/pipeline/raspberrypi/delayed_controls.cpp
+++ b/src/libcamera/pipeline/rpi/common/delayed_controls.cpp
diff --git a/src/libcamera/pipeline/raspberrypi/delayed_controls.h b/src/libcamera/pipeline/rpi/common/delayed_controls.h
index 61f755f0..61f755f0 100644
--- a/src/libcamera/pipeline/raspberrypi/delayed_controls.h
+++ b/src/libcamera/pipeline/rpi/common/delayed_controls.h
diff --git a/src/libcamera/pipeline/rpi/common/meson.build b/src/libcamera/pipeline/rpi/common/meson.build
new file mode 100644
index 00000000..2ad594cf
--- /dev/null
+++ b/src/libcamera/pipeline/rpi/common/meson.build
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: CC0-1.0
+
+libcamera_sources += files([
+ 'delayed_controls.cpp',
+ 'rpi_stream.cpp',
+])
diff --git a/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp b/src/libcamera/pipeline/rpi/common/rpi_stream.cpp
index 2bb10f25..2bb10f25 100644
--- a/src/libcamera/pipeline/raspberrypi/rpi_stream.cpp
+++ b/src/libcamera/pipeline/rpi/common/rpi_stream.cpp
diff --git a/src/libcamera/pipeline/raspberrypi/rpi_stream.h b/src/libcamera/pipeline/rpi/common/rpi_stream.h
index b8bd79cf..b8bd79cf 100644
--- a/src/libcamera/pipeline/raspberrypi/rpi_stream.h
+++ b/src/libcamera/pipeline/rpi/common/rpi_stream.h
diff --git a/src/libcamera/pipeline/rpi/meson.build b/src/libcamera/pipeline/rpi/meson.build
new file mode 100644
index 00000000..2391b6a9
--- /dev/null
+++ b/src/libcamera/pipeline/rpi/meson.build
@@ -0,0 +1,12 @@
+# SPDX-License-Identifier: CC0-1.0
+
+subdir('common')
+
+foreach pipeline : pipelines
+ pipeline = pipeline.split('/')
+ if pipeline.length() < 2 or pipeline[0] != 'rpi'
+ continue
+ endif
+
+ subdir(pipeline[1])
+endforeach
diff --git a/src/libcamera/pipeline/raspberrypi/data/example.yaml b/src/libcamera/pipeline/rpi/vc4/data/example.yaml
index c90f518f..c90f518f 100644
--- a/src/libcamera/pipeline/raspberrypi/data/example.yaml
+++ b/src/libcamera/pipeline/rpi/vc4/data/example.yaml
diff --git a/src/libcamera/pipeline/raspberrypi/data/meson.build b/src/libcamera/pipeline/rpi/vc4/data/meson.build
index 1c70433b..cca5e388 100644
--- a/src/libcamera/pipeline/raspberrypi/data/meson.build
+++ b/src/libcamera/pipeline/rpi/vc4/data/meson.build
@@ -5,4 +5,4 @@ conf_files = files([
])
install_data(conf_files,
- install_dir : pipeline_data_dir / 'raspberrypi')
+ install_dir : pipeline_data_dir / 'rpi' / 'vc4')
diff --git a/src/libcamera/pipeline/raspberrypi/dma_heaps.cpp b/src/libcamera/pipeline/rpi/vc4/dma_heaps.cpp
index 317b1fc1..317b1fc1 100644
--- a/src/libcamera/pipeline/raspberrypi/dma_heaps.cpp
+++ b/src/libcamera/pipeline/rpi/vc4/dma_heaps.cpp
diff --git a/src/libcamera/pipeline/raspberrypi/dma_heaps.h b/src/libcamera/pipeline/rpi/vc4/dma_heaps.h
index 0a4a8d86..0a4a8d86 100644
--- a/src/libcamera/pipeline/raspberrypi/dma_heaps.h
+++ b/src/libcamera/pipeline/rpi/vc4/dma_heaps.h
diff --git a/src/libcamera/pipeline/raspberrypi/meson.build b/src/libcamera/pipeline/rpi/vc4/meson.build
index 59e8fb18..228823f3 100644
--- a/src/libcamera/pipeline/raspberrypi/meson.build
+++ b/src/libcamera/pipeline/rpi/vc4/meson.build
@@ -1,10 +1,8 @@
# SPDX-License-Identifier: CC0-1.0
libcamera_sources += files([
- 'delayed_controls.cpp',
'dma_heaps.cpp',
'raspberrypi.cpp',
- 'rpi_stream.cpp',
])
subdir('data')
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/rpi/vc4/raspberrypi.cpp
index 00600441..af464d15 100644
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
+++ b/src/libcamera/pipeline/rpi/vc4/raspberrypi.cpp
@@ -2,7 +2,7 @@
/*
* Copyright (C) 2019-2021, Raspberry Pi Ltd
*
- * raspberrypi.cpp - Pipeline handler for Raspberry Pi devices
+ * raspberrypi.cpp - Pipeline handler for VC4-based Raspberry Pi devices
*/
#include <algorithm>
#include <assert.h>
@@ -43,9 +43,9 @@
#include "libcamera/internal/v4l2_videodevice.h"
#include "libcamera/internal/yaml_parser.h"
-#include "delayed_controls.h"
+#include "../common/delayed_controls.h"
+#include "../common/rpi_stream.h"
#include "dma_heaps.h"
-#include "rpi_stream.h"
using namespace std::chrono_literals;