[PATCH v3 00/11] Add Amlogic C3 ISP pipeline handler and IPA

Keke Li keke.li at amlogic.com
Thu Feb 27 11:57:22 CET 2025


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

-- 
2.48.1



More information about the libcamera-devel mailing list