[libcamera-devel,00/15] Internal controls, sensor delays and IPA init/configure rework
mbox series

Message ID 20220627162732.33160-1-jacopo@jmondi.org
Headers show
Series
  • Internal controls, sensor delays and IPA init/configure rework
Related show

Message

Jacopo Mondi June 27, 2022, 4:27 p.m. UTC
Hello,
   this series collects one on top of the others three developments, which
should ideally continue in the direction of removing V4L2 controls from the
PH/IPA interaction.

Patches 1 to 3 introduce internal controls. The patches have already been sent
and reviewed by Jean-Michel. I have however fixed a bug in 1/15 and dropped the
tag.

Patches 4 5 and 6 introduce a map of delays associated to the newly introduced
internal control to replace the hardcoded delays in use in IPU3. The PH
still interfaces with delayed controls, which reasons in V4L2 terms, so delays
are translated from libcamera::internal to V4L2.

On top of this development starts the reworking of the IPA interface to remove
V4L2 controls. The patches here included remove V4L2 control from init and
configure, as those function do not require to interface with delayed controls.

Along the way a few fixes/rework of the IPA code, specifically:
- Use the actual VBLANK value and not the control's default
- Re-calculate the line length as it's now fixed at init time
- Store all session variables in the context instead of mixing class members
  and context
- Rework the operation flow slightly to assign a more logical order.

I assume the last part of the series is not the most urgent to be merged, as it
won't however remove V4L2 controls from IPA until we don't rework delayed
controls, but I would appreciate feedback already, especially from IPA developers.

Thanks

Jacopo Mondi (15):
  libcamera: control_ids: Add 'internal' argument
  libcamera: control_ids: Separate the id numerical space
  libcamera: Introduce internal controls
  libcamera: camera_sensor_properties: Add sensor delays
  libcamera: camera_sensor: Retrieve sensor delays
  libcamera: ipu3: Initialize DelayedControls with camera properties
  libcamera: camera_sensor: Rename the control interface
  libcamera: camera_sensor: Initialize controls
  libcamera: control_serializer: Support internal controls
  libcamera: ipu3: Initialize Camera controls in the PH
  libcamera: IPACameraSensorInfo: Add VBLANK
  libcamera: ipa: Use the current VBLANK value
  libcamera: ipu3: ipa: Use an updated lineDuration
  ipa: ipu3: Configure IPA with libcamera controls
  ipa: ipu3: Rework IPAIPU3::processStatsBuffer()

 include/libcamera/control_ids.h.in            |   6 +-
 include/libcamera/internal/camera_sensor.h    |  13 +-
 .../internal/camera_sensor_properties.h       |   2 +
 include/libcamera/internal/meson.build        |  15 ++
 include/libcamera/ipa/core.mojom              |   6 +
 include/libcamera/ipa/ipa_controls.h          |   1 +
 include/libcamera/ipa/ipu3.mojom              |   8 +-
 src/ipa/ipu3/ipa_context.cpp                  |  14 +-
 src/ipa/ipu3/ipa_context.h                    |   9 +-
 src/ipa/ipu3/ipu3.cpp                         | 229 ++++++------------
 src/libcamera/camera_sensor.cpp               | 134 +++++++++-
 src/libcamera/camera_sensor_properties.cpp    |  32 +++
 src/libcamera/control_ids.cpp.in              |  12 +-
 src/libcamera/control_serializer.cpp          |   6 +
 src/libcamera/internal_control_ids.yaml       |  64 +++++
 src/libcamera/meson.build                     |  17 ++
 src/libcamera/pipeline/ipu3/ipu3.cpp          |  78 +++---
 .../pipeline/raspberrypi/raspberrypi.cpp      |  14 +-
 src/libcamera/pipeline/rkisp1/rkisp1.cpp      |   2 +-
 src/libcamera/pipeline/vimc/vimc.cpp          |   8 +-
 utils/gen-controls.py                         |  24 +-
 21 files changed, 469 insertions(+), 225 deletions(-)
 create mode 100644 src/libcamera/internal_control_ids.yaml

--
2.36.1