[PATCH v2 0/8] libcamera: Add swstats_cpu::processFrame() and atomisp pipeline handler

Hans de Goede hdegoede at redhat.com
Sat May 10 16:12:12 CEST 2025


Hi All,

Here is v2 of my patch series adding support to the swstats_cpu code
to process a whole frame in one go (also useful for the GPU-ISP work)
and adding a new pipeline handler for the atomisp.

Original v1 series:
https://patchwork.libcamera.org/cover/21798/

Later rebased resend of just the swstats_cpu::processFrame() changes:
https://patchwork.libcamera.org/cover/22186/

Changes in v2:
- Rebase on top of latest master
- Fix the lack of doxygen documentation
- Reworked "[PATCH v2 7/8] libcamera: ipa_manager: createIPA: Allow
  matching by IPA name instead of by pipeline" this probably is the most
  controversial change in this series
- Modify atomisp pipeline handler to also work with sensors where there
  is an ISP on the sensor which the driver registers as a separate
  v4l2-subdev like the MT9M114 sensor driver

Patches 1-4 have already been reviewed by both Kieran and Milan.

Please review patches 5-8.

This has already successfully passed the CI, see:
https://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/atomisp-v2/

Regards,

Hans


Hans de Goede (8):
  libcamera: swstats_cpu: Update statsProcessFn() / processLine0()
    documentation
  libcamera: swstats_cpu: Drop patternSize_ documentation
  libcamera: swstats_cpu: Move header to libcamera/internal/software_isp
  libcamera: software_isp: Move benchmark code to its own class
  libcamera: swstats_cpu: Add processFrame() method
  libcamera: swstats_cpu: Add support for YUV420
  libcamera: ipa_manager: createIPA: Allow matching by IPA name instead
    of by pipeline
  libcamera: Add new atomisp pipeline handler

 include/libcamera/internal/ipa_manager.h      |   7 +-
 include/libcamera/internal/ipa_module.h       |   4 +-
 .../internal/software_isp/benchmark.h         |  36 +
 .../internal/software_isp/meson.build         |   2 +
 .../internal}/software_isp/swstats_cpu.h      |  18 +
 meson.build                                   |   1 +
 meson_options.txt                             |   1 +
 src/ipa/simple/data/uncalibrated_atomisp.yaml |   7 +
 src/libcamera/ipa_manager.cpp                 |   6 +-
 src/libcamera/ipa_module.cpp                  |  19 +-
 src/libcamera/pipeline/atomisp/atomisp.cpp    | 636 ++++++++++++++++++
 src/libcamera/pipeline/atomisp/meson.build    |   5 +
 src/libcamera/software_isp/benchmark.cpp      |  93 +++
 src/libcamera/software_isp/debayer_cpu.cpp    |  36 +-
 src/libcamera/software_isp/debayer_cpu.h      |   9 +-
 src/libcamera/software_isp/meson.build        |   3 +-
 src/libcamera/software_isp/swstats_cpu.cpp    | 178 ++++-
 17 files changed, 985 insertions(+), 76 deletions(-)
 create mode 100644 include/libcamera/internal/software_isp/benchmark.h
 rename {src/libcamera => include/libcamera/internal}/software_isp/swstats_cpu.h (79%)
 create mode 100644 src/ipa/simple/data/uncalibrated_atomisp.yaml
 create mode 100644 src/libcamera/pipeline/atomisp/atomisp.cpp
 create mode 100644 src/libcamera/pipeline/atomisp/meson.build
 create mode 100644 src/libcamera/software_isp/benchmark.cpp

-- 
2.49.0



More information about the libcamera-devel mailing list