[libcamera-devel,00/11] libcamera: ipu3: Attach to an skeleton IPA
mbox series

Message ID 20201105001546.1690179-1-niklas.soderlund@ragnatech.se
Headers show
Series
  • libcamera: ipu3: Attach to an skeleton IPA
Related show

Message

Niklas Söderlund Nov. 5, 2020, 12:15 a.m. UTC
Hello,

This series adds an IPA skeleton for the IPU3 pipeline. The IPA itself 
supports mapping of parameter and statistic buffers as well as pushing 
V4L2 controls to the camera sensor. It does however not read or write 
anything into the buffers given to it during the capture process. It 
also adds all the plumbing inside IPU3 pipeline to function with an IPA 
while of of course retaining all the different capture setups previously 
supported.

The idea is to prepare for adding algorithms in the IPA on-top without 
having to worry about all the plumbing inside the pipeline handler. This 
will likely happen in two steps. A first where fake algorithms are added 
to generate metadata to be used in further development of cam and the 
Android HAL. Then a follow up step where the fake ones are replaced with 
real ones.

This series depends on [1].

1. [PATCH 0/9] libcamera: Add helper for controls that take effect with a delay

Niklas Söderlund (11):
  libcamera: pipeline_handler: Remove Camera argument from request
    handling
  include: linux: Add ipu3 kernel header and format definitions
  libcamera: ipu3: imgu: Configure the stat video device as part of
    configure()
  libcamera: ipu3: imgu: Add parameters video device
  libcamera: ipu3: cio2: Return the FrameBuffer pointer used
  libcamera: ipu3: cio2: Generate start of frame event
  libcamera: ipa: ipu3: Add an IPA skeleton for the IPU3 pipeline
  libcamera: ipu3: Attach to an IPA and allow it to set sensor controls
  libcamera: ipu3: Add helper for parameter and statistic buffers
  libcamera: ipu3: imgu: Allocate buffers for stats and param
  libcamera: ipu3: Share parameter and statistic buffers with IPA

 include/libcamera/internal/pipeline_handler.h |    7 +-
 include/libcamera/ipa/ipu3.h                  |   22 +
 include/linux/intel-ipu3.h                    | 2785 +++++++++++++++++
 src/ipa/ipu3/ipu3.cpp                         |  237 ++
 src/ipa/ipu3/meson.build                      |   21 +
 src/ipa/meson.build                           |    2 +-
 src/libcamera/camera.cpp                      |    2 +-
 src/libcamera/pipeline/ipu3/cio2.cpp          |   28 +-
 src/libcamera/pipeline/ipu3/cio2.h            |    5 +-
 src/libcamera/pipeline/ipu3/frames.cpp        |  164 +
 src/libcamera/pipeline/ipu3/frames.h          |   68 +
 src/libcamera/pipeline/ipu3/imgu.cpp          |   57 +-
 src/libcamera/pipeline/ipu3/imgu.h            |   13 +-
 src/libcamera/pipeline/ipu3/ipu3.cpp          |  208 +-
 src/libcamera/pipeline/ipu3/meson.build       |    1 +
 .../pipeline/raspberrypi/raspberrypi.cpp      |    8 +-
 src/libcamera/pipeline/rkisp1/rkisp1.cpp      |    5 +-
 src/libcamera/pipeline/simple/simple.cpp      |   12 +-
 src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  |    4 +-
 src/libcamera/pipeline/vimc/vimc.cpp          |    4 +-
 src/libcamera/pipeline_handler.cpp            |   14 +-
 21 files changed, 3589 insertions(+), 78 deletions(-)
 create mode 100644 include/libcamera/ipa/ipu3.h
 create mode 100644 include/linux/intel-ipu3.h
 create mode 100644 src/ipa/ipu3/ipu3.cpp
 create mode 100644 src/ipa/ipu3/meson.build
 create mode 100644 src/libcamera/pipeline/ipu3/frames.cpp
 create mode 100644 src/libcamera/pipeline/ipu3/frames.h