[libcamera-devel,v3,0/5] Implement IPA algorithms and demo with IPU3
mbox series

Message ID 20210329191826.77817-1-jeanmichel.hautbois@ideasonboard.com
Headers show
Series
  • Implement IPA algorithms and demo with IPU3
Related show

Message

Jean-Michel Hautbois March 29, 2021, 7:18 p.m. UTC
Here is v3 of the IPA demonstration on IPU3.
It demonstrates a conjunction of automatic exposure (AGC)
and automatic white balance (AWB).

The skeleton are extracted from RPi controller and probably subject to
modifications and discussions :
- are the mandatory methods really those ?
- how to exchange data between algorithms ?
  - metadata like RPi?
  - IPC ?
  - public methods?
  - controller API ?
- is the controller needed at all ?

The implementation in IPU3 is tested on SGo2.
It is not perfect but shows a really better behaviour than default.
Right now, the AGC algorithm is part of the RPi one, adapted to the
stats and parameters we have in IPU3.

Changes in v3:
- introduce histogram class (for AGC)
- add a patch to introduce parameter context saving
- changes in AGC to simplify it using part of RPi work
- changes in the AWB loop
- calculate the grid for the parameters using the BDS size from pipeline
  handler

In v2:
- splits AWB and AEC/AGC algorithms.
- remove unused Controller
- remove unused variables/methods
- rename most of the class members

Jean-Michel Hautbois (5):
  ipa: Add a common interface for algorithm objects
  ipa: ipu3: Add an histogram class
  ipa: ipu3: Use a local parameter object and prepare for 3A algorithms
  ipa: ipu3: Add support for IPU3 AWB algorithm
  ipa: ipu3: Add support for IPU3 AEC/AGC algorithm

 src/ipa/ipu3/ipu3.cpp        |  91 ++++++++++++--
 src/ipa/ipu3/ipu3_agc.cpp    | 229 ++++++++++++++++++++++++++++++++++
 src/ipa/ipu3/ipu3_agc.h      |  67 ++++++++++
 src/ipa/ipu3/ipu3_awb.cpp    | 233 +++++++++++++++++++++++++++++++++++
 src/ipa/ipu3/ipu3_awb.h      |  44 +++++++
 src/ipa/ipu3/meson.build     |   8 +-
 src/ipa/libipa/algorithm.cpp |  39 ++++++
 src/ipa/libipa/algorithm.h   |  24 ++++
 src/ipa/libipa/histogram.cpp | 102 +++++++++++++++
 src/ipa/libipa/histogram.h   |  62 ++++++++++
 src/ipa/libipa/meson.build   |   6 +-
 11 files changed, 896 insertions(+), 9 deletions(-)
 create mode 100644 src/ipa/ipu3/ipu3_agc.cpp
 create mode 100644 src/ipa/ipu3/ipu3_agc.h
 create mode 100644 src/ipa/ipu3/ipu3_awb.cpp
 create mode 100644 src/ipa/ipu3/ipu3_awb.h
 create mode 100644 src/ipa/libipa/algorithm.cpp
 create mode 100644 src/ipa/libipa/algorithm.h
 create mode 100644 src/ipa/libipa/histogram.cpp
 create mode 100644 src/ipa/libipa/histogram.h