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

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

Message

Jean-Michel Hautbois March 30, 2021, 9:12 p.m. UTC
Here is v4 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 v4:
- removed unneeded patch setting exposure and gains
- improve documentation of Histogram class
- take review comments :-)

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 (4):
  ipa: Add a common interface for algorithm objects
  WIP: ipa: ipu3: Add an histogram class
  ipa: ipu3: Add support for IPU3 AWB algorithm
  ipa: ipu3: Add support for IPU3 AEC/AGC algorithm

 src/ipa/ipu3/ipu3.cpp                        |  96 +++++++-
 src/ipa/ipu3/ipu3_agc.cpp                    | 228 ++++++++++++++++++
 src/ipa/ipu3/ipu3_agc.h                      |  67 ++++++
 src/ipa/ipu3/ipu3_awb.cpp                    | 235 +++++++++++++++++++
 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                 | 154 ++++++++++++
 src/ipa/libipa/histogram.h                   |  40 ++++
 src/ipa/libipa/meson.build                   |   6 +-
 src/ipa/raspberrypi/controller/histogram.hpp |   9 +-
 12 files changed, 932 insertions(+), 18 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