pipeline: rpi: Add support for Raspberry Pi 5

Add the Raspberry Pi 5 ISP (PiSP) pipeline handler to libcamera. To
include this pipeline handler in the build, set the following meson
option:

meson configure -Dpipelines=rpi/pisp

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Naushir Patuck 2025-01-13 09:24:46 +00:00 committed by Kieran Bingham
parent 332b04ce20
commit 841ef2b4bb
9 changed files with 2442 additions and 1 deletions

View file

@ -186,7 +186,7 @@ to the libcamera build options in the top level ``meson_options.txt``.
option('pipelines',
type : 'array',
choices : ['ipu3', 'rkisp1', 'rpi/vc4', 'simple', 'uvcvideo', 'vimc', 'vivid'],
choices : ['ipu3', 'rkisp1', 'rpi/pisp', 'rpi/vc4', 'simple', 'uvcvideo', 'vimc', 'vivid'],
description : 'Select which pipeline handlers to include')

View file

@ -66,6 +66,7 @@ pipeline_ipa_mojom_mapping = {
'ipu3': 'ipu3.mojom',
'mali-c55': 'mali-c55.mojom',
'rkisp1': 'rkisp1.mojom',
'rpi/pisp': 'raspberrypi.mojom',
'rpi/vc4': 'raspberrypi.mojom',
'simple': 'soft.mojom',
'vimc': 'vimc.mojom',

View file

@ -37,6 +37,7 @@ controls_map = {
'core': 'control_ids_core.yaml',
'debug': 'control_ids_debug.yaml',
'draft': 'control_ids_draft.yaml',
'rpi/pisp': 'control_ids_rpi.yaml',
'rpi/vc4': 'control_ids_rpi.yaml',
},

View file

@ -215,6 +215,7 @@ pipelines_support = {
'ipu3': arch_x86,
'mali-c55': arch_arm,
'rkisp1': arch_arm,
'rpi/pisp': arch_arm,
'rpi/vc4': arch_arm,
'simple': ['any'],
'uvcvideo': ['any'],

View file

@ -51,6 +51,7 @@ option('pipelines',
'ipu3',
'mali-c55',
'rkisp1',
'rpi/pisp',
'rpi/vc4',
'simple',
'uvcvideo',

View file

@ -0,0 +1,45 @@
{
"version": 1.0,
"target": "pisp",
"pipeline_handler":
{
# Number of CFE config and stats buffers to allocate and use. A
# larger number minimises the possibility of dropping frames,
# but increases the latency for updating the HW configuration.
#
# "num_cfe_config_stats_buffers": 12,
# Number of jobs to queue ahead to the CFE on startup. A larger
# number will increase latency for 3A changes, but may reduce
# avoidable frame drops.
#
# "num_cfe_config_queue": 2,
# Override any request from the IPA to drop a number of startup
# frames.
#
# "disable_startup_frame_drops": false,
# Custom timeout value (in ms) for camera to use. This overrides
# the value computed by the pipeline handler based on frame
# durations.
#
# Set this value to 0 to use the pipeline handler computed
# timeout value.
#
# "camera_timeout_value_ms": 0,
# Disables temporal denoise functionality in the ISP pipeline.
# Disabling temporal denoise avoids allocating 2 additional
# Bayer framebuffers required for its operation.
#
# "disable_tdn": false,
# Disables multiframe HDR functionality in the ISP pipeline.
# Disabling multiframe HDR avoids allocating 2 additional Bayer
# framebuffers required for its operation.
#
# "disable_hdr": false,
}
}

View file

@ -0,0 +1,8 @@
# SPDX-License-Identifier: CC0-1.0
conf_files = files([
'example.yaml',
])
install_data(conf_files,
install_dir : pipeline_data_dir / 'rpi' / 'pisp')

View file

@ -0,0 +1,12 @@
# SPDX-License-Identifier: CC0-1.0
libcamera_internal_sources += files([
'pisp.cpp',
])
librt = cc.find_library('rt', required : true)
libpisp_dep = dependency('libpisp', fallback : ['libpisp', 'libpisp_dep'])
libcamera_deps += [libpisp_dep, librt]
subdir('data')

File diff suppressed because it is too large Load diff