From patchwork Thu Feb 27 10:57:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Keke Li X-Patchwork-Id: 22883 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 33A6DBF415 for ; Thu, 27 Feb 2025 10:57:43 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id ADF8C68749; Thu, 27 Feb 2025 11:57:41 +0100 (CET) Received: from mail-sh.amlogic.com (unknown [58.32.228.46]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id AAC21686E7 for ; Thu, 27 Feb 2025 11:57:39 +0100 (CET) Received: from droid10.amlogic.com (10.18.11.213) by mail-sh.amlogic.com (10.18.11.5) with Microsoft SMTP Server id 15.1.2507.39; Thu, 27 Feb 2025 18:57:35 +0800 From: Keke Li To: CC: , , , Keke Li Subject: [PATCH v3 00/11] Add Amlogic C3 ISP pipeline handler and IPA Date: Thu, 27 Feb 2025 18:57:22 +0800 Message-ID: <20250227105733.187611-1-keke.li@amlogic.com> X-Mailer: git-send-email 2.29.0 MIME-Version: 1.0 X-Originating-IP: [10.18.11.213] X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The Amlogic C3 platform integrates an ISP capable of supporting multi-camera, multi-exposure high dynamic range (HDR) imaging with up to 14-bit raw RGB Bayer data. The C3 ISP pipeline handler supports 3-channel image output, 1-channel 3A statistics ouput and 1-channel parameters input. Link to the C3 ISP driver patch v6: https://lore.kernel.org/linux-media/20250227-c3isp-v6-0-f72e19084d0d@amlogic.com/ Changes in v3: - Separate commits for "Add C3 ISP pipeline handler" - Separate commits for "Add C3 ISP IPA" - Support Raw stream in the C3 ISP pipeline handler - Rename some interfaces in c3-isp.mojom - Use the camHelper's blacklevel in blc.cpp Changes in v2: - Align struct c3_isp_params_xxx to 8 bytes in c3-isp-config.h - Modify c3_isp_stats_buffer to c3_isp_stats_info in c3-isp-config.h Keke Li (11): include: linux: Add C3 ISP Stats and Params V4L2 format libcamera: pipeline: Add c3-isp pipeline handler include: linux: Add c3-isp-config.h ipa: c3-isp: Add C3 ISP IPA module ipa: c3-isp: Add Agc algorithm ipa: c3-isp: Add Awb algorithm ipa: c3-isp: Add BLC Algorithm ipa: c3-isp: Add CCM Algorithm ipa: c3-isp: Add CSC Algorithm ipa: c3-isp: Add Post Gamma Algorithm ipa: c3-isp: Add IMX290 tuning data file Documentation/Doxyfile-common.in | 1 + include/libcamera/ipa/c3-isp.mojom | 34 + include/libcamera/ipa/meson.build | 1 + include/linux/c3-isp-config.h | 564 +++++++++ include/linux/videodev2.h | 4 + meson_options.txt | 3 +- src/ipa/c3-isp/algorithms/agc.cpp | 310 +++++ src/ipa/c3-isp/algorithms/agc.h | 51 + src/ipa/c3-isp/algorithms/algorithm.h | 28 + src/ipa/c3-isp/algorithms/awb.cpp | 200 ++++ src/ipa/c3-isp/algorithms/awb.h | 39 + src/ipa/c3-isp/algorithms/blc.cpp | 151 +++ src/ipa/c3-isp/algorithms/blc.h | 45 + src/ipa/c3-isp/algorithms/ccm.cpp | 92 ++ src/ipa/c3-isp/algorithms/ccm.h | 36 + src/ipa/c3-isp/algorithms/csc.cpp | 66 ++ src/ipa/c3-isp/algorithms/csc.h | 32 + src/ipa/c3-isp/algorithms/meson.build | 10 + src/ipa/c3-isp/algorithms/post_gamma.cpp | 65 + src/ipa/c3-isp/algorithms/post_gamma.h | 33 + src/ipa/c3-isp/c3-isp.cpp | 370 ++++++ src/ipa/c3-isp/data/imx290.yaml | 30 + src/ipa/c3-isp/data/meson.build | 9 + src/ipa/c3-isp/data/uncalibrated.yaml | 7 + src/ipa/c3-isp/ipa_context.cpp | 101 ++ src/ipa/c3-isp/ipa_context.h | 87 ++ src/ipa/c3-isp/meson.build | 32 + src/ipa/c3-isp/module.h | 28 + src/ipa/c3-isp/params.cpp | 127 ++ src/ipa/c3-isp/params.h | 133 +++ src/libcamera/pipeline/c3-isp/c3-isp.cpp | 1313 +++++++++++++++++++++ src/libcamera/pipeline/c3-isp/meson.build | 5 + 32 files changed, 4006 insertions(+), 1 deletion(-) create mode 100644 include/libcamera/ipa/c3-isp.mojom create mode 100644 include/linux/c3-isp-config.h create mode 100644 src/ipa/c3-isp/algorithms/agc.cpp create mode 100644 src/ipa/c3-isp/algorithms/agc.h create mode 100644 src/ipa/c3-isp/algorithms/algorithm.h create mode 100644 src/ipa/c3-isp/algorithms/awb.cpp create mode 100644 src/ipa/c3-isp/algorithms/awb.h create mode 100644 src/ipa/c3-isp/algorithms/blc.cpp create mode 100644 src/ipa/c3-isp/algorithms/blc.h create mode 100644 src/ipa/c3-isp/algorithms/ccm.cpp create mode 100644 src/ipa/c3-isp/algorithms/ccm.h create mode 100644 src/ipa/c3-isp/algorithms/csc.cpp create mode 100644 src/ipa/c3-isp/algorithms/csc.h create mode 100644 src/ipa/c3-isp/algorithms/meson.build create mode 100644 src/ipa/c3-isp/algorithms/post_gamma.cpp create mode 100644 src/ipa/c3-isp/algorithms/post_gamma.h create mode 100644 src/ipa/c3-isp/c3-isp.cpp create mode 100644 src/ipa/c3-isp/data/imx290.yaml create mode 100644 src/ipa/c3-isp/data/meson.build create mode 100644 src/ipa/c3-isp/data/uncalibrated.yaml create mode 100644 src/ipa/c3-isp/ipa_context.cpp create mode 100644 src/ipa/c3-isp/ipa_context.h create mode 100644 src/ipa/c3-isp/meson.build create mode 100644 src/ipa/c3-isp/module.h create mode 100644 src/ipa/c3-isp/params.cpp create mode 100644 src/ipa/c3-isp/params.h create mode 100644 src/libcamera/pipeline/c3-isp/c3-isp.cpp create mode 100644 src/libcamera/pipeline/c3-isp/meson.build