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:
parent
332b04ce20
commit
841ef2b4bb
9 changed files with 2442 additions and 1 deletions
|
@ -186,7 +186,7 @@ to the libcamera build options in the top level ``meson_options.txt``.
|
||||||
|
|
||||||
option('pipelines',
|
option('pipelines',
|
||||||
type : 'array',
|
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')
|
description : 'Select which pipeline handlers to include')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -66,6 +66,7 @@ pipeline_ipa_mojom_mapping = {
|
||||||
'ipu3': 'ipu3.mojom',
|
'ipu3': 'ipu3.mojom',
|
||||||
'mali-c55': 'mali-c55.mojom',
|
'mali-c55': 'mali-c55.mojom',
|
||||||
'rkisp1': 'rkisp1.mojom',
|
'rkisp1': 'rkisp1.mojom',
|
||||||
|
'rpi/pisp': 'raspberrypi.mojom',
|
||||||
'rpi/vc4': 'raspberrypi.mojom',
|
'rpi/vc4': 'raspberrypi.mojom',
|
||||||
'simple': 'soft.mojom',
|
'simple': 'soft.mojom',
|
||||||
'vimc': 'vimc.mojom',
|
'vimc': 'vimc.mojom',
|
||||||
|
|
|
@ -37,6 +37,7 @@ controls_map = {
|
||||||
'core': 'control_ids_core.yaml',
|
'core': 'control_ids_core.yaml',
|
||||||
'debug': 'control_ids_debug.yaml',
|
'debug': 'control_ids_debug.yaml',
|
||||||
'draft': 'control_ids_draft.yaml',
|
'draft': 'control_ids_draft.yaml',
|
||||||
|
'rpi/pisp': 'control_ids_rpi.yaml',
|
||||||
'rpi/vc4': 'control_ids_rpi.yaml',
|
'rpi/vc4': 'control_ids_rpi.yaml',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -215,6 +215,7 @@ pipelines_support = {
|
||||||
'ipu3': arch_x86,
|
'ipu3': arch_x86,
|
||||||
'mali-c55': arch_arm,
|
'mali-c55': arch_arm,
|
||||||
'rkisp1': arch_arm,
|
'rkisp1': arch_arm,
|
||||||
|
'rpi/pisp': arch_arm,
|
||||||
'rpi/vc4': arch_arm,
|
'rpi/vc4': arch_arm,
|
||||||
'simple': ['any'],
|
'simple': ['any'],
|
||||||
'uvcvideo': ['any'],
|
'uvcvideo': ['any'],
|
||||||
|
|
|
@ -51,6 +51,7 @@ option('pipelines',
|
||||||
'ipu3',
|
'ipu3',
|
||||||
'mali-c55',
|
'mali-c55',
|
||||||
'rkisp1',
|
'rkisp1',
|
||||||
|
'rpi/pisp',
|
||||||
'rpi/vc4',
|
'rpi/vc4',
|
||||||
'simple',
|
'simple',
|
||||||
'uvcvideo',
|
'uvcvideo',
|
||||||
|
|
45
src/libcamera/pipeline/rpi/pisp/data/example.yaml
Normal file
45
src/libcamera/pipeline/rpi/pisp/data/example.yaml
Normal 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,
|
||||||
|
}
|
||||||
|
}
|
8
src/libcamera/pipeline/rpi/pisp/data/meson.build
Normal file
8
src/libcamera/pipeline/rpi/pisp/data/meson.build
Normal 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')
|
12
src/libcamera/pipeline/rpi/pisp/meson.build
Normal file
12
src/libcamera/pipeline/rpi/pisp/meson.build
Normal 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')
|
2372
src/libcamera/pipeline/rpi/pisp/pisp.cpp
Normal file
2372
src/libcamera/pipeline/rpi/pisp/pisp.cpp
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue