[00/19] Software ISP refactoring
mbox series

Message ID 20240626072100.55497-1-mzamazal@redhat.com
Headers show
Series
  • Software ISP refactoring
Related show

Message

Milan Zamazal June 26, 2024, 7:20 a.m. UTC
The purpose of this patch series is to bring software ISP code
structuring closer to the hardware pipelines.  Most notably, the API
around algorithm.h is used now.  This should make software ISP easier to
understand, extend, maintain, and code-share with the other pipelines.

What is omitted in the patch series:

- Any bigger or unrelated functional changes.  The purpose of this
  series is code restructuring, which is enough already.
- Stats and params buffers are still used in the original way.  Making
  their handling closer to the hardware pipelines will be a subject of
  followup patches.  This series is a preparation step for that.
- Any IPA code sharing with hardware pipelines.  If there is an
  opportunity for this, it can be addressed in followup patches.

Milan Zamazal (19):
  libcamera: software_isp: Remove superfluous includes
  libcamera: software_isp: Move BlackLevel to libcamera::ipa::soft
  libcamera: simple: Fix a typo in a doc string
  libcamera: software_isp: Define skeletons for IPA refactoring
  libcamera: software_isp: Let IPASoftSimple inherit Module
  libcamera: software_isp: Make stats frame and buffer aware
  libcamera: software_isp: Remove dots in Debayer::process docstring
  libcamera: software_isp: Track and pass frame ids
  libcamera: software_isp: Create algorithms
  libcamera: software_isp: Call Algorithm::process
  libcamera: software_isp: Call Algorithm::prepare
  libcamera: software_isp: Call Algorithm::queueRequest
  libcamera: software_isp: Call Algorithm::configure
  libcamera: software_isp: Move black level to an algorithm module
  libcamera: software_isp: Move color handling to an algorithm module
  libcamera: software_isp: Use floating point for color parameters
  libcamera: software_isp: Use DelayedControls
  libcamera: software_isp: Move exposure+gain to an algorithm module
  libcamera: software_isp: Update black level only on exposure changes

 .../internal/software_isp/software_isp.h      |  15 +-
 include/libcamera/ipa/soft.mojom              |  10 +-
 src/ipa/simple/algorithms/agc.cpp             | 139 +++++++++
 src/ipa/simple/algorithms/agc.h               |  36 +++
 src/ipa/simple/algorithms/algorithm.h         |  22 ++
 src/ipa/simple/algorithms/blc.cpp             |  84 ++++++
 src/ipa/simple/algorithms/blc.h               |  41 +++
 src/ipa/simple/algorithms/colors.cpp          | 121 ++++++++
 src/ipa/simple/algorithms/colors.h            |  46 +++
 src/ipa/simple/algorithms/meson.build         |   7 +
 src/ipa/simple/black_level.cpp                |  88 ------
 src/ipa/simple/black_level.h                  |  29 --
 src/ipa/simple/data/uncalibrated.yaml         |   4 +
 src/ipa/simple/ipa_context.h                  |  62 ++++
 src/ipa/simple/meson.build                    |   8 +-
 src/ipa/simple/module.h                       |  31 ++
 src/ipa/simple/soft_simple.cpp                | 283 ++++++------------
 src/libcamera/pipeline/simple/simple.cpp      |  41 ++-
 src/libcamera/software_isp/TODO               |  39 ---
 src/libcamera/software_isp/debayer.cpp        |  11 +-
 src/libcamera/software_isp/debayer.h          |   2 +-
 src/libcamera/software_isp/debayer_cpu.cpp    |   9 +-
 src/libcamera/software_isp/debayer_cpu.h      |   2 +-
 src/libcamera/software_isp/software_isp.cpp   |  42 ++-
 src/libcamera/software_isp/swstats_cpu.cpp    |   4 +-
 src/libcamera/software_isp/swstats_cpu.h      |   4 +-
 26 files changed, 778 insertions(+), 402 deletions(-)
 create mode 100644 src/ipa/simple/algorithms/agc.cpp
 create mode 100644 src/ipa/simple/algorithms/agc.h
 create mode 100644 src/ipa/simple/algorithms/algorithm.h
 create mode 100644 src/ipa/simple/algorithms/blc.cpp
 create mode 100644 src/ipa/simple/algorithms/blc.h
 create mode 100644 src/ipa/simple/algorithms/colors.cpp
 create mode 100644 src/ipa/simple/algorithms/colors.h
 create mode 100644 src/ipa/simple/algorithms/meson.build
 delete mode 100644 src/ipa/simple/black_level.cpp
 delete mode 100644 src/ipa/simple/black_level.h
 create mode 100644 src/ipa/simple/ipa_context.h
 create mode 100644 src/ipa/simple/module.h