[libcamera-devel,0/8] Add IPAManager and IPAInterface
mbox series

Message ID 20190527223540.21855-1-paul.elder@ideasonboard.com
Headers show
Series
  • Add IPAManager and IPAInterface
Related show

Message

Paul Elder May 27, 2019, 10:35 p.m. UTC
Pipeline handlers need a way to acquire an IPA module. To achieve this,
we use an IPA manager, that loads many IPA modules, after which a
pipeline handler can ask the IPA manager for an IPA module that matches
it. Each IPA can only be used with one pipeline handler, but a pipeline
handler may work with many IPAs (not simultaneously).
The pipeline handlers also need names and versions (previously only the
factory had a name) to be matched with an IPA module.

Each IPA module, in a shared object, implements an IPAInterface class,
which defines the interface between a pipeline hander and an IPA
implementation, hence the name.

Paul Elder (8):
  libcamera: ipa_interface: add header
  libcamera: pipeline: add name, major version, and minor version
  libcamera: ipa_module_info: update struct to allow IPA matching
  libcamera: ipa_module: allow instantiation of IPAInterface
  libcamera: ipa_manager: implement class for managing IPA modules
  libcamera: ipa: add dummy IPA implementation
  libcamera: test: remove test IPA and use dummy IPA instead
  libcamera: pipeline: vimc: add dummy IPA

 Documentation/Doxyfile.in                |   7 +-
 include/libcamera/ipa/ipa_interface.h    |  22 ++++
 include/libcamera/ipa/ipa_module_info.h  |  11 +-
 include/libcamera/meson.build            |   1 +
 src/ipa/ipa_dummy.cpp                    |  38 +++++++
 src/ipa/meson.build                      |  10 ++
 src/libcamera/include/ipa_manager.h      |  40 +++++++
 src/libcamera/include/ipa_module.h       |  15 ++-
 src/libcamera/include/pipeline_handler.h |  20 +++-
 src/libcamera/ipa_interface.cpp          |  27 +++++
 src/libcamera/ipa_manager.cpp            | 129 +++++++++++++++++++++++
 src/libcamera/ipa_module.cpp             | 128 ++++++++++++++++++++--
 src/libcamera/meson.build                |   6 +-
 src/libcamera/pipeline/ipu3/ipu3.cpp     |   6 +-
 src/libcamera/pipeline/rkisp1/rkisp1.cpp |   6 +-
 src/libcamera/pipeline/uvcvideo.cpp      |   6 +-
 src/libcamera/pipeline/vimc.cpp          |  16 ++-
 src/libcamera/pipeline_handler.cpp       |  20 ++++
 src/meson.build                          |   1 +
 test/ipa/ipa_test.cpp                    |  51 ++++++---
 test/ipa/meson.build                     |  11 --
 test/ipa/shared_test.c                   |   6 --
 test/ipa/shared_test.cpp                 |   4 +-
 23 files changed, 527 insertions(+), 54 deletions(-)
 create mode 100644 include/libcamera/ipa/ipa_interface.h
 create mode 100644 src/ipa/ipa_dummy.cpp
 create mode 100644 src/ipa/meson.build
 create mode 100644 src/libcamera/include/ipa_manager.h
 create mode 100644 src/libcamera/ipa_interface.cpp
 create mode 100644 src/libcamera/ipa_manager.cpp
 delete mode 100644 test/ipa/shared_test.c