Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/3682/?format=api
{ "id": 3682, "url": "https://patchwork.libcamera.org/api/1.1/covers/3682/?format=api", "web_url": "https://patchwork.libcamera.org/cover/3682/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20200504092829.10099-1-laurent.pinchart@ideasonboard.com>", "date": "2020-05-04T09:28:23", "name": "[libcamera-devel,0/6] libcamera: Raspberry Pi camera support", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/cover/3682/mbox/", "series": [ { "id": 880, "url": "https://patchwork.libcamera.org/api/1.1/series/880/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=880", "date": "2020-05-04T09:28:23", "name": "libcamera: Raspberry Pi camera support", "version": 1, "mbox": "https://patchwork.libcamera.org/series/880/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/3682/comments/", "headers": { "Return-Path": "<laurent.pinchart@ideasonboard.com>", "Received": [ "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id EADB6603F2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 4 May 2020 11:28:37 +0200 (CEST)", "from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 49E95304;\n\tMon, 4 May 2020 11:28:37 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"wlssm1+H\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1588584517;\n\tbh=Cv2hOkPIv9IR2CpAMqP3++GV+3nRJTfl2b7BfgdbJsw=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=wlssm1+HGLqo5st2OK6tBJJQlKNZfRNbTZE75xabqW96XI2P7cbcpTJ1YbIob/+xw\n\t4H+sYrlVTycfi07uLvXLTG1Qn0nrT6QmtOfxuki+XqhcsJ+Tm4GX3hSCcqYgYz9Ydb\n\tfixdEbqUeJRjN+qV6hOPTGByXNS149K0rbprnWx0=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Mon, 4 May 2020 12:28:23 +0300", "Message-Id": "<20200504092829.10099-1-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.26.2", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 0/6] libcamera: Raspberry Pi camera support", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "X-List-Received-Date": "Mon, 04 May 2020 09:28:38 -0000" }, "content": "Hello,\n\nThis patch series adds support for the Raspberry Pi cameras to\nlibcamera. It consists of\n\n- A pipeline handler (patch 3/6)\n- An IPA module (patch 4/6)\n- A camera tuning tool (patch 5/6)\n\nThe code has been developed by Naushir Patuck, David Plowman and Dave\nStevenson from Raspberry Pi (Trading) Ltd., with help from Jacopo Mondi,\nKieran Bingham, Niklas Söderlund and myself. All the code is covered by\na BSD-2-Clause license (added in patch 1/6).\n\nThe implementation depends on kernel drivers for the Broadcom BCM283x\n(and BCM2711) CSI-2 receiver and ISP that have been posted to the\nlinux-media mailing list ([1]). Patch 2/6 imports the kernel API header\nchanges from those drivers.\n\nExtensive documentation related to camera usage and camera tuning with\nlibcamera for the Raspberry Pi platforms is available in [2].\n\nIn the name of the libcamera team, I would like to thank Naush, David,\nDave and all the other people from Raspberry Pi (Trading) Ltd. who made\nthis possible. I would also like to extend those thanks to Jacopo,\nKieran and Niklas for the countless hours they have spent grinding and\npolishing libcamera to achieve this result.\n\n[1] https://lore.kernel.org/linux-media/20200504092611.9798-1-laurent.pinchart@ideasonboard.com/\n[2] https://github.com/raspberrypi/documentation/tree/master/linux/software/libcamera/README.md\n\nLaurent Pinchart (1):\n LICENSES: Add BSD-2-Clause license\n\nNaushir Patuck (5):\n include: uapi: Add header definitions for BCM2835 Unicam and ISP\n blocks\n libcamera: pipeline: Raspberry Pi pipeline handler\n libcamera: ipa: Raspberry Pi IPA\n libcamera: utils: Raspberry Pi Camera Tuning Tool\n libcamera: raspberrypi: Add components to meson build\n\n LICENSES/BSD-2-Clause.txt | 22 +\n include/ipa/raspberrypi.h | 58 +\n include/linux/bcm2835-isp.h | 320 ++++\n include/linux/v4l2-controls.h | 4 +\n include/linux/vc_sm_cma_ioctl.h | 135 ++\n include/linux/videodev2.h | 2 +\n meson_options.txt | 2 +-\n src/ipa/meson.build | 2 +-\n src/ipa/raspberrypi/README.md | 23 +\n src/ipa/raspberrypi/cam_helper.cpp | 119 ++\n src/ipa/raspberrypi/cam_helper.hpp | 102 ++\n src/ipa/raspberrypi/cam_helper_imx219.cpp | 180 ++\n src/ipa/raspberrypi/cam_helper_imx477.cpp | 162 ++\n src/ipa/raspberrypi/cam_helper_ov5647.cpp | 89 +\n .../raspberrypi/controller/agc_algorithm.hpp | 28 +\n src/ipa/raspberrypi/controller/agc_status.h | 39 +\n src/ipa/raspberrypi/controller/algorithm.cpp | 47 +\n src/ipa/raspberrypi/controller/algorithm.hpp | 62 +\n src/ipa/raspberrypi/controller/alsc_status.h | 27 +\n .../raspberrypi/controller/awb_algorithm.hpp | 22 +\n src/ipa/raspberrypi/controller/awb_status.h | 26 +\n .../controller/black_level_status.h | 23 +\n src/ipa/raspberrypi/controller/camera_mode.h | 40 +\n .../raspberrypi/controller/ccm_algorithm.hpp | 21 +\n src/ipa/raspberrypi/controller/ccm_status.h | 22 +\n .../controller/contrast_algorithm.hpp | 22 +\n .../raspberrypi/controller/contrast_status.h | 31 +\n src/ipa/raspberrypi/controller/controller.cpp | 109 ++\n src/ipa/raspberrypi/controller/controller.hpp | 54 +\n .../raspberrypi/controller/device_status.h | 30 +\n src/ipa/raspberrypi/controller/dpc_status.h | 21 +\n src/ipa/raspberrypi/controller/geq_status.h | 22 +\n src/ipa/raspberrypi/controller/histogram.cpp | 64 +\n src/ipa/raspberrypi/controller/histogram.hpp | 44 +\n src/ipa/raspberrypi/controller/logging.hpp | 30 +\n src/ipa/raspberrypi/controller/lux_status.h | 29 +\n src/ipa/raspberrypi/controller/metadata.hpp | 77 +\n src/ipa/raspberrypi/controller/noise_status.h | 22 +\n src/ipa/raspberrypi/controller/pwl.cpp | 216 +++\n src/ipa/raspberrypi/controller/pwl.hpp | 109 ++\n src/ipa/raspberrypi/controller/rpi/agc.cpp | 642 +++++++\n src/ipa/raspberrypi/controller/rpi/agc.hpp | 123 ++\n src/ipa/raspberrypi/controller/rpi/alsc.cpp | 705 ++++++++\n src/ipa/raspberrypi/controller/rpi/alsc.hpp | 104 ++\n src/ipa/raspberrypi/controller/rpi/awb.cpp | 608 +++++++\n src/ipa/raspberrypi/controller/rpi/awb.hpp | 178 ++\n .../controller/rpi/black_level.cpp | 56 +\n .../controller/rpi/black_level.hpp | 30 +\n src/ipa/raspberrypi/controller/rpi/ccm.cpp | 163 ++\n src/ipa/raspberrypi/controller/rpi/ccm.hpp | 76 +\n .../raspberrypi/controller/rpi/contrast.cpp | 176 ++\n .../raspberrypi/controller/rpi/contrast.hpp | 51 +\n src/ipa/raspberrypi/controller/rpi/dpc.cpp | 49 +\n src/ipa/raspberrypi/controller/rpi/dpc.hpp | 32 +\n src/ipa/raspberrypi/controller/rpi/geq.cpp | 75 +\n src/ipa/raspberrypi/controller/rpi/geq.hpp | 34 +\n src/ipa/raspberrypi/controller/rpi/lux.cpp | 104 ++\n src/ipa/raspberrypi/controller/rpi/lux.hpp | 42 +\n src/ipa/raspberrypi/controller/rpi/noise.cpp | 71 +\n src/ipa/raspberrypi/controller/rpi/noise.hpp | 32 +\n src/ipa/raspberrypi/controller/rpi/sdn.cpp | 63 +\n src/ipa/raspberrypi/controller/rpi/sdn.hpp | 29 +\n .../raspberrypi/controller/rpi/sharpen.cpp | 60 +\n .../raspberrypi/controller/rpi/sharpen.hpp | 32 +\n src/ipa/raspberrypi/controller/sdn_status.h | 23 +\n .../raspberrypi/controller/sharpen_status.h | 26 +\n src/ipa/raspberrypi/data/imx219.json | 401 +++++\n src/ipa/raspberrypi/data/imx477.json | 416 +++++\n src/ipa/raspberrypi/data/meson.build | 9 +\n src/ipa/raspberrypi/data/ov5647.json | 398 ++++\n src/ipa/raspberrypi/data/uncalibrated.json | 82 +\n src/ipa/raspberrypi/md_parser.cpp | 101 ++\n src/ipa/raspberrypi/md_parser.hpp | 123 ++\n src/ipa/raspberrypi/md_parser_rpi.cpp | 37 +\n src/ipa/raspberrypi/md_parser_rpi.hpp | 32 +\n src/ipa/raspberrypi/meson.build | 59 +\n src/ipa/raspberrypi/raspberrypi.cpp | 1081 +++++++++++\n .../pipeline/raspberrypi/meson.build | 3 +\n .../pipeline/raspberrypi/raspberrypi.cpp | 1598 +++++++++++++++++\n .../pipeline/raspberrypi/staggered_ctrl.h | 236 +++\n src/libcamera/pipeline/raspberrypi/vcsm.h | 144 ++\n utils/raspberrypi/ctt/ctt.py | 823 +++++++++\n utils/raspberrypi/ctt/ctt_alsc.py | 297 +++\n utils/raspberrypi/ctt/ctt_awb.py | 374 ++++\n utils/raspberrypi/ctt/ctt_ccm.py | 221 +++\n utils/raspberrypi/ctt/ctt_config_example.json | 16 +\n utils/raspberrypi/ctt/ctt_geq.py | 179 ++\n utils/raspberrypi/ctt/ctt_image_load.py | 428 +++++\n utils/raspberrypi/ctt/ctt_lux.py | 58 +\n utils/raspberrypi/ctt/ctt_macbeth_locator.py | 748 ++++++++\n utils/raspberrypi/ctt/ctt_noise.py | 123 ++\n .../raspberrypi/ctt/ctt_pretty_print_json.py | 70 +\n utils/raspberrypi/ctt/ctt_ransac.py | 69 +\n utils/raspberrypi/ctt/ctt_ref.pgm | 5 +\n utils/raspberrypi/ctt/ctt_tools.py | 141 ++\n 95 files changed, 14311 insertions(+), 2 deletions(-)\n create mode 100644 LICENSES/BSD-2-Clause.txt\n create mode 100644 include/ipa/raspberrypi.h\n create mode 100644 include/linux/bcm2835-isp.h\n create mode 100644 include/linux/vc_sm_cma_ioctl.h\n create mode 100644 src/ipa/raspberrypi/README.md\n create mode 100644 src/ipa/raspberrypi/cam_helper.cpp\n create mode 100644 src/ipa/raspberrypi/cam_helper.hpp\n create mode 100644 src/ipa/raspberrypi/cam_helper_imx219.cpp\n create mode 100644 src/ipa/raspberrypi/cam_helper_imx477.cpp\n create mode 100644 src/ipa/raspberrypi/cam_helper_ov5647.cpp\n create mode 100644 src/ipa/raspberrypi/controller/agc_algorithm.hpp\n create mode 100644 src/ipa/raspberrypi/controller/agc_status.h\n create mode 100644 src/ipa/raspberrypi/controller/algorithm.cpp\n create mode 100644 src/ipa/raspberrypi/controller/algorithm.hpp\n create mode 100644 src/ipa/raspberrypi/controller/alsc_status.h\n create mode 100644 src/ipa/raspberrypi/controller/awb_algorithm.hpp\n create mode 100644 src/ipa/raspberrypi/controller/awb_status.h\n create mode 100644 src/ipa/raspberrypi/controller/black_level_status.h\n create mode 100644 src/ipa/raspberrypi/controller/camera_mode.h\n create mode 100644 src/ipa/raspberrypi/controller/ccm_algorithm.hpp\n create mode 100644 src/ipa/raspberrypi/controller/ccm_status.h\n create mode 100644 src/ipa/raspberrypi/controller/contrast_algorithm.hpp\n create mode 100644 src/ipa/raspberrypi/controller/contrast_status.h\n create mode 100644 src/ipa/raspberrypi/controller/controller.cpp\n create mode 100644 src/ipa/raspberrypi/controller/controller.hpp\n create mode 100644 src/ipa/raspberrypi/controller/device_status.h\n create mode 100644 src/ipa/raspberrypi/controller/dpc_status.h\n create mode 100644 src/ipa/raspberrypi/controller/geq_status.h\n create mode 100644 src/ipa/raspberrypi/controller/histogram.cpp\n create mode 100644 src/ipa/raspberrypi/controller/histogram.hpp\n create mode 100644 src/ipa/raspberrypi/controller/logging.hpp\n create mode 100644 src/ipa/raspberrypi/controller/lux_status.h\n create mode 100644 src/ipa/raspberrypi/controller/metadata.hpp\n create mode 100644 src/ipa/raspberrypi/controller/noise_status.h\n create mode 100644 src/ipa/raspberrypi/controller/pwl.cpp\n create mode 100644 src/ipa/raspberrypi/controller/pwl.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/agc.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/agc.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/alsc.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/alsc.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/awb.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/awb.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/black_level.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/black_level.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/ccm.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/ccm.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/contrast.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/contrast.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/dpc.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/dpc.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/geq.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/geq.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/lux.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/lux.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/noise.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/noise.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/sdn.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/sdn.hpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/sharpen.cpp\n create mode 100644 src/ipa/raspberrypi/controller/rpi/sharpen.hpp\n create mode 100644 src/ipa/raspberrypi/controller/sdn_status.h\n create mode 100644 src/ipa/raspberrypi/controller/sharpen_status.h\n create mode 100644 src/ipa/raspberrypi/data/imx219.json\n create mode 100644 src/ipa/raspberrypi/data/imx477.json\n create mode 100644 src/ipa/raspberrypi/data/meson.build\n create mode 100644 src/ipa/raspberrypi/data/ov5647.json\n create mode 100644 src/ipa/raspberrypi/data/uncalibrated.json\n create mode 100644 src/ipa/raspberrypi/md_parser.cpp\n create mode 100644 src/ipa/raspberrypi/md_parser.hpp\n create mode 100644 src/ipa/raspberrypi/md_parser_rpi.cpp\n create mode 100644 src/ipa/raspberrypi/md_parser_rpi.hpp\n create mode 100644 src/ipa/raspberrypi/meson.build\n create mode 100644 src/ipa/raspberrypi/raspberrypi.cpp\n create mode 100644 src/libcamera/pipeline/raspberrypi/meson.build\n create mode 100644 src/libcamera/pipeline/raspberrypi/raspberrypi.cpp\n create mode 100644 src/libcamera/pipeline/raspberrypi/staggered_ctrl.h\n create mode 100644 src/libcamera/pipeline/raspberrypi/vcsm.h\n create mode 100755 utils/raspberrypi/ctt/ctt.py\n create mode 100644 utils/raspberrypi/ctt/ctt_alsc.py\n create mode 100644 utils/raspberrypi/ctt/ctt_awb.py\n create mode 100644 utils/raspberrypi/ctt/ctt_ccm.py\n create mode 100644 utils/raspberrypi/ctt/ctt_config_example.json\n create mode 100644 utils/raspberrypi/ctt/ctt_geq.py\n create mode 100644 utils/raspberrypi/ctt/ctt_image_load.py\n create mode 100644 utils/raspberrypi/ctt/ctt_lux.py\n create mode 100644 utils/raspberrypi/ctt/ctt_macbeth_locator.py\n create mode 100644 utils/raspberrypi/ctt/ctt_noise.py\n create mode 100644 utils/raspberrypi/ctt/ctt_pretty_print_json.py\n create mode 100644 utils/raspberrypi/ctt/ctt_ransac.py\n create mode 100644 utils/raspberrypi/ctt/ctt_ref.pgm\n create mode 100644 utils/raspberrypi/ctt/ctt_tools.py" }