[libcamera-devel,v3,00/23] Internal controls, sensor delays and IPA rework
mbox series

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

Message

Jacopo Mondi June 30, 2022, 1:38 p.m. UTC
Based on the previous v2, this new version reworks slightly the first part
of the series and on top, removes usage of V4L2 controls from the IPA.

The logical sequence of patches is:

- Introduce internal controls
- Create src/libcamera/camera_sensor
- Introduce sensor control delays
- Move delayed controls in CameraSensor
- Make the CameraSensor control interface use libcamera controls
- Make the IPA module use libcamera controls
- Similar adjustments to the CameraLens class

This work is only performed on IPU3, RkISP1 should be similarly reworked after
the work here has been validated.

Jacopo Mondi (23):
  libcamera: control_ids: Add 'internal' argument
  libcamera: control_ids: Separate the id numerical space
  libcamera: Introduce internal controls
  libcamera: control_serializer: Support internal controls
  libcamera: Add src/libcamera/camera_sensor directory
  libcamera: camera_sensor: Copy CameraSensorHelper
  libcamera: camera_sensor: Rename the control interface
  libcamera: camera_sensor: Initialize controls
  libcamera: camera_sensor_properties: Add sensor delays
  libcamera: camera_sensor: Initialize delayed controls
  libcamera: camera_sensor: Expose DelayedControls interface
  libcamera: ipu3: Drop DelayedControls
  libcamera: camera_sensor: Cache the sensor configuration
  libcamera: camera_sensor: Translate libcamera/V4L2 controls
  libcamera: ipu3: Initialize controls in the pipeline
  libcamera: IPACameraSensorInfo: Add VBLANK
  ipa: ipu3: Configure IPA with libcamera controls
  ipa: ipu3: Use an up to date lineDuration
  ipa: ipu3: Rework IPAIPU3::processStatsBuffer()
  ipa: ipu3: Make algorithms use libcamera controls
  ipa: ipu3: Add and use LensFocusAbsolute control
  libcamera: camera_lens: Expose libcamera control limits
  libcamera: Move camera_lens.cpp in src/libcamera/camera_sensor

 include/libcamera/control_ids.h.in            |   6 +-
 include/libcamera/internal/camera_lens.h      |   5 +-
 include/libcamera/internal/camera_sensor.h    |  25 +-
 .../libcamera/internal/camera_sensor_helper.h |  93 ++++
 .../internal/camera_sensor_properties.h       |   4 +
 include/libcamera/internal/meson.build        |  16 +
 include/libcamera/ipa/core.mojom              |   6 +
 include/libcamera/ipa/ipa_controls.h          |   1 +
 include/libcamera/ipa/ipu3.mojom              |  11 +-
 src/ipa/ipu3/algorithms/agc.cpp               |  12 +-
 src/ipa/ipu3/ipa_context.cpp                  |  14 +-
 src/ipa/ipu3/ipa_context.h                    |   9 +-
 src/ipa/ipu3/ipu3.cpp                         | 236 +++------
 .../{ => camera_sensor}/camera_lens.cpp       |  33 +-
 .../{ => camera_sensor}/camera_sensor.cpp     | 283 +++++++++-
 .../camera_sensor/camera_sensor_helper.cpp    | 487 ++++++++++++++++++
 .../camera_sensor_properties.cpp              |  40 ++
 src/libcamera/camera_sensor/meson.build       |   8 +
 src/libcamera/control_ids.cpp.in              |  12 +-
 src/libcamera/control_serializer.cpp          |   6 +
 src/libcamera/internal_control_ids.yaml       |  40 ++
 src/libcamera/meson.build                     |  21 +-
 src/libcamera/pipeline/ipu3/ipu3.cpp          |  73 ++-
 .../pipeline/raspberrypi/raspberrypi.cpp      |  14 +-
 src/libcamera/pipeline/rkisp1/rkisp1.cpp      |   2 +-
 src/libcamera/pipeline/vimc/vimc.cpp          |   8 +-
 utils/gen-controls.py                         |  24 +-
 27 files changed, 1195 insertions(+), 294 deletions(-)
 create mode 100644 include/libcamera/internal/camera_sensor_helper.h
 rename src/libcamera/{ => camera_sensor}/camera_lens.cpp (81%)
 rename src/libcamera/{ => camera_sensor}/camera_sensor.cpp (75%)
 create mode 100644 src/libcamera/camera_sensor/camera_sensor_helper.cpp
 rename src/libcamera/{ => camera_sensor}/camera_sensor_properties.cpp (81%)
 create mode 100644 src/libcamera/camera_sensor/meson.build
 create mode 100644 src/libcamera/internal_control_ids.yaml

--
2.36.1