[libcamera-devel,v5,0/9] IPU3: Introduce modularity for algorithms
mbox series

Message ID 20210820065316.44343-1-jeanmichel.hautbois@ideasonboard.com
Headers show
Series
  • IPU3: Introduce modularity for algorithms
Related show

Message

Jean-Michel Hautbois Aug. 20, 2021, 6:53 a.m. UTC
This patch series splits the algorithms in IPU3 into a modular form.
When the Metadata class was discussed a proposal from Kieran was to have
a fully-defined structure which would be used to pass the context
between algorithms and the IPAIPU3 class, as well as between the
algorithms themselves.

The algorithms are statically emplaced in a list for the moment, and a
registration system may be used later.
In order to demonstrate how to add a new algorithm, patch 5/9
moves the contrast algorithm from AWB into its own algorithm.

Patch 6/9 and 7/9 change the AWB and AGC to use the new interface.
And the two latest patches are indeed the usage of the new modular
interface applied to AWB and AGC.

Jean-Michel Hautbois (9):
  ipa: move libipa::Algorithm to ipa/ipu3/algorithms
  ipa: ipu3: Introduce a Context structure
  ipa: ipu3: Add the functions to the Algorithm class
  ipa: ipu3: Introduce modular algorithm
  ipa: ipu3: Introduce a modular tone mapping algorithm
  ipa: ipu3: convert AWB to the new algorithm interface
  ipa: ipu3: convert AGC to the new algorithm interface
  ipa: ipu3: Move IPU3 awb into algorithms
  ipa: ipu3: Move IPU3 agc into algorithms

 .../ipu3/{ipu3_agc.cpp => algorithms/agc.cpp} |  41 ++--
 src/ipa/ipu3/{ipu3_agc.h => algorithms/agc.h} |  32 ++--
 src/ipa/ipu3/algorithms/algorithm.cpp         | 101 ++++++++++
 src/ipa/ipu3/algorithms/algorithm.h           |  32 ++++
 .../ipu3/{ipu3_awb.cpp => algorithms/awb.cpp} | 168 +++++++----------
 src/ipa/ipu3/{ipu3_awb.h => algorithms/awb.h} |  26 +--
 src/ipa/ipu3/algorithms/meson.build           |   8 +
 src/ipa/ipu3/algorithms/tone_mapping.cpp      |  60 ++++++
 src/ipa/ipu3/algorithms/tone_mapping.h        |  32 ++++
 src/ipa/ipu3/ipa_context.h                    |  54 ++++++
 src/ipa/ipu3/ipu3.cpp                         | 176 ++++++++++++++----
 src/ipa/ipu3/meson.build                      |   6 +-
 src/ipa/libipa/algorithm.cpp                  |  39 ----
 src/ipa/libipa/algorithm.h                    |  24 ---
 src/ipa/libipa/libipa.cpp                     |  22 +++
 src/ipa/libipa/meson.build                    |   5 +-
 16 files changed, 566 insertions(+), 260 deletions(-)
 rename src/ipa/ipu3/{ipu3_agc.cpp => algorithms/agc.cpp} (87%)
 rename src/ipa/ipu3/{ipu3_agc.h => algorithms/agc.h} (51%)
 create mode 100644 src/ipa/ipu3/algorithms/algorithm.cpp
 create mode 100644 src/ipa/ipu3/algorithms/algorithm.h
 rename src/ipa/ipu3/{ipu3_awb.cpp => algorithms/awb.cpp} (66%)
 rename src/ipa/ipu3/{ipu3_awb.h => algorithms/awb.h} (77%)
 create mode 100644 src/ipa/ipu3/algorithms/meson.build
 create mode 100644 src/ipa/ipu3/algorithms/tone_mapping.cpp
 create mode 100644 src/ipa/ipu3/algorithms/tone_mapping.h
 create mode 100644 src/ipa/ipu3/ipa_context.h
 delete mode 100644 src/ipa/libipa/algorithm.cpp
 delete mode 100644 src/ipa/libipa/algorithm.h
 create mode 100644 src/ipa/libipa/libipa.cpp