[libcamera-devel,00/13] libcamera: ipa: Add basic IPA support
mbox series

Message ID 20190828011710.32128-1-niklas.soderlund@ragnatech.se
Headers show
Series
  • libcamera: ipa: Add basic IPA support
Related show

Message

Niklas Söderlund Aug. 28, 2019, 1:16 a.m. UTC
Hi,

This series adds basic support for Image Processing Algorithms (IPA). It 
extends the pipeline handler framework to optionally allow an IPA plugin 
to prepare a parameters buffer and examine a statistics buffer as well 
as applying V4L2 controls on a sensor. It's not mandatory for a pipeline 
to have an IPA component, but if a pipeline handler supports an IPA it 
becomes mandatory, if an IPA component can't be found that pipeline will 
not register any cameras.

This series adds an Auto Exposure control and extends the rkisp1 
pipeline with and IPA that implements a very basic control loop for 
exposure time and gain.

The series lack support for exposing the status of control loops running 
inside an IPA to the pipeline handler and users of libcamera. This is 
something that is planed to be added on top of this series.

Other bits missing which are also planed for the near future is 
serialization of data being transferred between pipeline handler and IPA 
to allow process isolation.

Niklas Söderlund (13):
  libcamera: pipeline: vimc: Increase version of dummy IPA
  libcamera: pipeline: Move IPA from pipeline to camera data
  libcamera: pipeline: Add method to prepare buffer for IPA
  libcamera: pipeline: Add initialization hook for CameraData
  libcamera: controls: Add AeEnable
  libcamera: controls: Allow read only access to control values
  libcamera: request: Add RequestData
  libcamera: request: Allow read only access to controls
  libcamera: ipa: meson: Allow access to internal libcamera headers
  libcamera: ipa: Extend to support IPA interactions
  include: linux: Add rkisp1-config.h kernel header
  libcamera: ipa: rkisp1: Add basic control of auto exposure
  libcamera: pipeline: rkisp1: Attach to an IPA

 include/libcamera/control_ids.h          |   1 +
 include/libcamera/controls.h             |   1 +
 include/libcamera/ipa/ipa_interface.h    |  17 +-
 include/libcamera/request.h              |   6 +
 include/linux/rkisp1-config.h            | 798 +++++++++++++++++++++++
 include/linux/videodev2.h                |   4 +
 src/ipa/ipa_dummy.cpp                    |  13 +-
 src/ipa/ipa_dummy_isolate.cpp            |  11 +-
 src/ipa/ipa_rkisp1.cpp                   | 165 +++++
 src/ipa/meson.build                      |   3 +-
 src/libcamera/controls.cpp               |  41 ++
 src/libcamera/include/pipeline_handler.h |  16 +-
 src/libcamera/ipa_interface.cpp          |  72 +-
 src/libcamera/pipeline/rkisp1/rkisp1.cpp | 263 +++++++-
 src/libcamera/pipeline/vimc.cpp          |  10 +-
 src/libcamera/pipeline_handler.cpp       |  69 +-
 src/libcamera/proxy/ipa_proxy_linux.cpp  |  12 +-
 src/libcamera/request.cpp                |  15 +-
 18 files changed, 1466 insertions(+), 51 deletions(-)
 create mode 100644 include/linux/rkisp1-config.h
 create mode 100644 src/ipa/ipa_rkisp1.cpp