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

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

Message

Jean-Michel Hautbois Feb. 19, 2021, 5:22 p.m. UTC
This RFC is really meant to start discussions.
It demonstrates on IPU3 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 ;-).

Jean-Michel Hautbois (2):
  WIP: ipa: Add Controller and Algorithm skeleton
  WIP: ipa: ipu3: Add support for IPU3 AWB algorithm

 include/libcamera/ipa/agc_algorithm.h  |  32 ++++
 include/libcamera/ipa/awb_algorithm.h  |  27 ++++
 include/libcamera/ipa/ipa_algorithm.h  |  46 ++++++
 include/libcamera/ipa/ipa_controller.h |  39 +++++
 include/libcamera/ipa/meson.build      |   4 +
 src/ipa/ipu3/ipu3.cpp                  |  31 +++-
 src/ipa/ipu3/ipu3_agc.cpp              | 195 +++++++++++++++++++++++++
 src/ipa/ipu3/ipu3_agc.h                |  96 ++++++++++++
 src/ipa/ipu3/ipu3_awb.cpp              | 182 +++++++++++++++++++++++
 src/ipa/ipu3/ipu3_awb.h                | 130 +++++++++++++++++
 src/ipa/ipu3/meson.build               |   8 +-
 src/ipa/libipa/ipa_algorithm.cpp       |  20 +++
 src/ipa/libipa/ipa_controller.cpp      |  45 ++++++
 src/ipa/libipa/meson.build             |   2 +
 src/libcamera/pipeline/ipu3/ipu3.cpp   |   1 +
 15 files changed, 853 insertions(+), 5 deletions(-)
 create mode 100644 include/libcamera/ipa/agc_algorithm.h
 create mode 100644 include/libcamera/ipa/awb_algorithm.h
 create mode 100644 include/libcamera/ipa/ipa_algorithm.h
 create mode 100644 include/libcamera/ipa/ipa_controller.h
 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/ipa_algorithm.cpp
 create mode 100644 src/ipa/libipa/ipa_controller.cpp

Comments

Laurent Pinchart Feb. 22, 2021, 2:28 a.m. UTC | #1
Hi Jean-Michel,

On Fri, Feb 19, 2021 at 06:22:22PM +0100, Jean-Michel Hautbois wrote:
> This RFC is really meant to start discussions.

That's what RFCs are for :-) Thanks for sending it, I'll reply to the
two patches.

> It demonstrates on IPU3 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 ;-).
> 
> Jean-Michel Hautbois (2):
>   WIP: ipa: Add Controller and Algorithm skeleton
>   WIP: ipa: ipu3: Add support for IPU3 AWB algorithm
> 
>  include/libcamera/ipa/agc_algorithm.h  |  32 ++++
>  include/libcamera/ipa/awb_algorithm.h  |  27 ++++
>  include/libcamera/ipa/ipa_algorithm.h  |  46 ++++++
>  include/libcamera/ipa/ipa_controller.h |  39 +++++
>  include/libcamera/ipa/meson.build      |   4 +
>  src/ipa/ipu3/ipu3.cpp                  |  31 +++-
>  src/ipa/ipu3/ipu3_agc.cpp              | 195 +++++++++++++++++++++++++
>  src/ipa/ipu3/ipu3_agc.h                |  96 ++++++++++++
>  src/ipa/ipu3/ipu3_awb.cpp              | 182 +++++++++++++++++++++++
>  src/ipa/ipu3/ipu3_awb.h                | 130 +++++++++++++++++
>  src/ipa/ipu3/meson.build               |   8 +-
>  src/ipa/libipa/ipa_algorithm.cpp       |  20 +++
>  src/ipa/libipa/ipa_controller.cpp      |  45 ++++++
>  src/ipa/libipa/meson.build             |   2 +
>  src/libcamera/pipeline/ipu3/ipu3.cpp   |   1 +
>  15 files changed, 853 insertions(+), 5 deletions(-)
>  create mode 100644 include/libcamera/ipa/agc_algorithm.h
>  create mode 100644 include/libcamera/ipa/awb_algorithm.h
>  create mode 100644 include/libcamera/ipa/ipa_algorithm.h
>  create mode 100644 include/libcamera/ipa/ipa_controller.h
>  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/ipa_algorithm.cpp
>  create mode 100644 src/ipa/libipa/ipa_controller.cpp