[libcamera-devel] [PATCH 0/6] libcamera: Raspberry Pi camera support
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon May 4 11:28:23 CEST 2020
Hello,
This patch series adds support for the Raspberry Pi cameras to
libcamera. It consists of
- A pipeline handler (patch 3/6)
- An IPA module (patch 4/6)
- A camera tuning tool (patch 5/6)
The code has been developed by Naushir Patuck, David Plowman and Dave
Stevenson from Raspberry Pi (Trading) Ltd., with help from Jacopo Mondi,
Kieran Bingham, Niklas Söderlund and myself. All the code is covered by
a BSD-2-Clause license (added in patch 1/6).
The implementation depends on kernel drivers for the Broadcom BCM283x
(and BCM2711) CSI-2 receiver and ISP that have been posted to the
linux-media mailing list ([1]). Patch 2/6 imports the kernel API header
changes from those drivers.
Extensive documentation related to camera usage and camera tuning with
libcamera for the Raspberry Pi platforms is available in [2].
In the name of the libcamera team, I would like to thank Naush, David,
Dave and all the other people from Raspberry Pi (Trading) Ltd. who made
this possible. I would also like to extend those thanks to Jacopo,
Kieran and Niklas for the countless hours they have spent grinding and
polishing libcamera to achieve this result.
[1] https://lore.kernel.org/linux-media/20200504092611.9798-1-laurent.pinchart@ideasonboard.com/
[2] https://github.com/raspberrypi/documentation/tree/master/linux/software/libcamera/README.md
Laurent Pinchart (1):
LICENSES: Add BSD-2-Clause license
Naushir Patuck (5):
include: uapi: Add header definitions for BCM2835 Unicam and ISP
blocks
libcamera: pipeline: Raspberry Pi pipeline handler
libcamera: ipa: Raspberry Pi IPA
libcamera: utils: Raspberry Pi Camera Tuning Tool
libcamera: raspberrypi: Add components to meson build
LICENSES/BSD-2-Clause.txt | 22 +
include/ipa/raspberrypi.h | 58 +
include/linux/bcm2835-isp.h | 320 ++++
include/linux/v4l2-controls.h | 4 +
include/linux/vc_sm_cma_ioctl.h | 135 ++
include/linux/videodev2.h | 2 +
meson_options.txt | 2 +-
src/ipa/meson.build | 2 +-
src/ipa/raspberrypi/README.md | 23 +
src/ipa/raspberrypi/cam_helper.cpp | 119 ++
src/ipa/raspberrypi/cam_helper.hpp | 102 ++
src/ipa/raspberrypi/cam_helper_imx219.cpp | 180 ++
src/ipa/raspberrypi/cam_helper_imx477.cpp | 162 ++
src/ipa/raspberrypi/cam_helper_ov5647.cpp | 89 +
.../raspberrypi/controller/agc_algorithm.hpp | 28 +
src/ipa/raspberrypi/controller/agc_status.h | 39 +
src/ipa/raspberrypi/controller/algorithm.cpp | 47 +
src/ipa/raspberrypi/controller/algorithm.hpp | 62 +
src/ipa/raspberrypi/controller/alsc_status.h | 27 +
.../raspberrypi/controller/awb_algorithm.hpp | 22 +
src/ipa/raspberrypi/controller/awb_status.h | 26 +
.../controller/black_level_status.h | 23 +
src/ipa/raspberrypi/controller/camera_mode.h | 40 +
.../raspberrypi/controller/ccm_algorithm.hpp | 21 +
src/ipa/raspberrypi/controller/ccm_status.h | 22 +
.../controller/contrast_algorithm.hpp | 22 +
.../raspberrypi/controller/contrast_status.h | 31 +
src/ipa/raspberrypi/controller/controller.cpp | 109 ++
src/ipa/raspberrypi/controller/controller.hpp | 54 +
.../raspberrypi/controller/device_status.h | 30 +
src/ipa/raspberrypi/controller/dpc_status.h | 21 +
src/ipa/raspberrypi/controller/geq_status.h | 22 +
src/ipa/raspberrypi/controller/histogram.cpp | 64 +
src/ipa/raspberrypi/controller/histogram.hpp | 44 +
src/ipa/raspberrypi/controller/logging.hpp | 30 +
src/ipa/raspberrypi/controller/lux_status.h | 29 +
src/ipa/raspberrypi/controller/metadata.hpp | 77 +
src/ipa/raspberrypi/controller/noise_status.h | 22 +
src/ipa/raspberrypi/controller/pwl.cpp | 216 +++
src/ipa/raspberrypi/controller/pwl.hpp | 109 ++
src/ipa/raspberrypi/controller/rpi/agc.cpp | 642 +++++++
src/ipa/raspberrypi/controller/rpi/agc.hpp | 123 ++
src/ipa/raspberrypi/controller/rpi/alsc.cpp | 705 ++++++++
src/ipa/raspberrypi/controller/rpi/alsc.hpp | 104 ++
src/ipa/raspberrypi/controller/rpi/awb.cpp | 608 +++++++
src/ipa/raspberrypi/controller/rpi/awb.hpp | 178 ++
.../controller/rpi/black_level.cpp | 56 +
.../controller/rpi/black_level.hpp | 30 +
src/ipa/raspberrypi/controller/rpi/ccm.cpp | 163 ++
src/ipa/raspberrypi/controller/rpi/ccm.hpp | 76 +
.../raspberrypi/controller/rpi/contrast.cpp | 176 ++
.../raspberrypi/controller/rpi/contrast.hpp | 51 +
src/ipa/raspberrypi/controller/rpi/dpc.cpp | 49 +
src/ipa/raspberrypi/controller/rpi/dpc.hpp | 32 +
src/ipa/raspberrypi/controller/rpi/geq.cpp | 75 +
src/ipa/raspberrypi/controller/rpi/geq.hpp | 34 +
src/ipa/raspberrypi/controller/rpi/lux.cpp | 104 ++
src/ipa/raspberrypi/controller/rpi/lux.hpp | 42 +
src/ipa/raspberrypi/controller/rpi/noise.cpp | 71 +
src/ipa/raspberrypi/controller/rpi/noise.hpp | 32 +
src/ipa/raspberrypi/controller/rpi/sdn.cpp | 63 +
src/ipa/raspberrypi/controller/rpi/sdn.hpp | 29 +
.../raspberrypi/controller/rpi/sharpen.cpp | 60 +
.../raspberrypi/controller/rpi/sharpen.hpp | 32 +
src/ipa/raspberrypi/controller/sdn_status.h | 23 +
.../raspberrypi/controller/sharpen_status.h | 26 +
src/ipa/raspberrypi/data/imx219.json | 401 +++++
src/ipa/raspberrypi/data/imx477.json | 416 +++++
src/ipa/raspberrypi/data/meson.build | 9 +
src/ipa/raspberrypi/data/ov5647.json | 398 ++++
src/ipa/raspberrypi/data/uncalibrated.json | 82 +
src/ipa/raspberrypi/md_parser.cpp | 101 ++
src/ipa/raspberrypi/md_parser.hpp | 123 ++
src/ipa/raspberrypi/md_parser_rpi.cpp | 37 +
src/ipa/raspberrypi/md_parser_rpi.hpp | 32 +
src/ipa/raspberrypi/meson.build | 59 +
src/ipa/raspberrypi/raspberrypi.cpp | 1081 +++++++++++
.../pipeline/raspberrypi/meson.build | 3 +
.../pipeline/raspberrypi/raspberrypi.cpp | 1598 +++++++++++++++++
.../pipeline/raspberrypi/staggered_ctrl.h | 236 +++
src/libcamera/pipeline/raspberrypi/vcsm.h | 144 ++
utils/raspberrypi/ctt/ctt.py | 823 +++++++++
utils/raspberrypi/ctt/ctt_alsc.py | 297 +++
utils/raspberrypi/ctt/ctt_awb.py | 374 ++++
utils/raspberrypi/ctt/ctt_ccm.py | 221 +++
utils/raspberrypi/ctt/ctt_config_example.json | 16 +
utils/raspberrypi/ctt/ctt_geq.py | 179 ++
utils/raspberrypi/ctt/ctt_image_load.py | 428 +++++
utils/raspberrypi/ctt/ctt_lux.py | 58 +
utils/raspberrypi/ctt/ctt_macbeth_locator.py | 748 ++++++++
utils/raspberrypi/ctt/ctt_noise.py | 123 ++
.../raspberrypi/ctt/ctt_pretty_print_json.py | 70 +
utils/raspberrypi/ctt/ctt_ransac.py | 69 +
utils/raspberrypi/ctt/ctt_ref.pgm | 5 +
utils/raspberrypi/ctt/ctt_tools.py | 141 ++
95 files changed, 14311 insertions(+), 2 deletions(-)
create mode 100644 LICENSES/BSD-2-Clause.txt
create mode 100644 include/ipa/raspberrypi.h
create mode 100644 include/linux/bcm2835-isp.h
create mode 100644 include/linux/vc_sm_cma_ioctl.h
create mode 100644 src/ipa/raspberrypi/README.md
create mode 100644 src/ipa/raspberrypi/cam_helper.cpp
create mode 100644 src/ipa/raspberrypi/cam_helper.hpp
create mode 100644 src/ipa/raspberrypi/cam_helper_imx219.cpp
create mode 100644 src/ipa/raspberrypi/cam_helper_imx477.cpp
create mode 100644 src/ipa/raspberrypi/cam_helper_ov5647.cpp
create mode 100644 src/ipa/raspberrypi/controller/agc_algorithm.hpp
create mode 100644 src/ipa/raspberrypi/controller/agc_status.h
create mode 100644 src/ipa/raspberrypi/controller/algorithm.cpp
create mode 100644 src/ipa/raspberrypi/controller/algorithm.hpp
create mode 100644 src/ipa/raspberrypi/controller/alsc_status.h
create mode 100644 src/ipa/raspberrypi/controller/awb_algorithm.hpp
create mode 100644 src/ipa/raspberrypi/controller/awb_status.h
create mode 100644 src/ipa/raspberrypi/controller/black_level_status.h
create mode 100644 src/ipa/raspberrypi/controller/camera_mode.h
create mode 100644 src/ipa/raspberrypi/controller/ccm_algorithm.hpp
create mode 100644 src/ipa/raspberrypi/controller/ccm_status.h
create mode 100644 src/ipa/raspberrypi/controller/contrast_algorithm.hpp
create mode 100644 src/ipa/raspberrypi/controller/contrast_status.h
create mode 100644 src/ipa/raspberrypi/controller/controller.cpp
create mode 100644 src/ipa/raspberrypi/controller/controller.hpp
create mode 100644 src/ipa/raspberrypi/controller/device_status.h
create mode 100644 src/ipa/raspberrypi/controller/dpc_status.h
create mode 100644 src/ipa/raspberrypi/controller/geq_status.h
create mode 100644 src/ipa/raspberrypi/controller/histogram.cpp
create mode 100644 src/ipa/raspberrypi/controller/histogram.hpp
create mode 100644 src/ipa/raspberrypi/controller/logging.hpp
create mode 100644 src/ipa/raspberrypi/controller/lux_status.h
create mode 100644 src/ipa/raspberrypi/controller/metadata.hpp
create mode 100644 src/ipa/raspberrypi/controller/noise_status.h
create mode 100644 src/ipa/raspberrypi/controller/pwl.cpp
create mode 100644 src/ipa/raspberrypi/controller/pwl.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/agc.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/agc.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/alsc.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/alsc.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/awb.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/awb.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/black_level.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/black_level.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/ccm.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/ccm.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/contrast.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/contrast.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/dpc.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/dpc.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/geq.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/geq.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/lux.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/lux.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/noise.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/noise.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/sdn.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/sdn.hpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/sharpen.cpp
create mode 100644 src/ipa/raspberrypi/controller/rpi/sharpen.hpp
create mode 100644 src/ipa/raspberrypi/controller/sdn_status.h
create mode 100644 src/ipa/raspberrypi/controller/sharpen_status.h
create mode 100644 src/ipa/raspberrypi/data/imx219.json
create mode 100644 src/ipa/raspberrypi/data/imx477.json
create mode 100644 src/ipa/raspberrypi/data/meson.build
create mode 100644 src/ipa/raspberrypi/data/ov5647.json
create mode 100644 src/ipa/raspberrypi/data/uncalibrated.json
create mode 100644 src/ipa/raspberrypi/md_parser.cpp
create mode 100644 src/ipa/raspberrypi/md_parser.hpp
create mode 100644 src/ipa/raspberrypi/md_parser_rpi.cpp
create mode 100644 src/ipa/raspberrypi/md_parser_rpi.hpp
create mode 100644 src/ipa/raspberrypi/meson.build
create mode 100644 src/ipa/raspberrypi/raspberrypi.cpp
create mode 100644 src/libcamera/pipeline/raspberrypi/meson.build
create mode 100644 src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
create mode 100644 src/libcamera/pipeline/raspberrypi/staggered_ctrl.h
create mode 100644 src/libcamera/pipeline/raspberrypi/vcsm.h
create mode 100755 utils/raspberrypi/ctt/ctt.py
create mode 100644 utils/raspberrypi/ctt/ctt_alsc.py
create mode 100644 utils/raspberrypi/ctt/ctt_awb.py
create mode 100644 utils/raspberrypi/ctt/ctt_ccm.py
create mode 100644 utils/raspberrypi/ctt/ctt_config_example.json
create mode 100644 utils/raspberrypi/ctt/ctt_geq.py
create mode 100644 utils/raspberrypi/ctt/ctt_image_load.py
create mode 100644 utils/raspberrypi/ctt/ctt_lux.py
create mode 100644 utils/raspberrypi/ctt/ctt_macbeth_locator.py
create mode 100644 utils/raspberrypi/ctt/ctt_noise.py
create mode 100644 utils/raspberrypi/ctt/ctt_pretty_print_json.py
create mode 100644 utils/raspberrypi/ctt/ctt_ransac.py
create mode 100644 utils/raspberrypi/ctt/ctt_ref.pgm
create mode 100644 utils/raspberrypi/ctt/ctt_tools.py
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list