[libcamera-devel] [RFC PATCH v4 00/21] Preliminary FULL plumbing

Paul Elder paul.elder at ideasonboard.com
Fri Jul 16 12:56:10 CEST 2021


This series depends on "android: Drive-by cleanups".

This patch series adds controls and plumbing necessary for 5 controls to
satisfy FULL requirements:
- AeLock
- AeEnable (AE_MODE)
- AwbLock
- AwbMode
- MaxLatency (SYNC_MAX_LATENCY)

New in v3, 1/21 adds a constructor for ControlInfo that takes boolean
values. In v4, this has been upgraded so that it actually works.

New in v4, 2/21 adds convenience functions to CameraMetadata, and 3/21
fixes some templates in CameraMetadata.

Patch 5/21 has the plumbing for capability detection. New in v4, at the
end we tally up all the requirements to enable capabilities, instead of
turning them off as we set the static metadata. This cleans up the code
a lot

New in v3, patch 6/21 adds helpers for setting android metadata for
libcamera controls, to help keep the HAL capability tracking cleaner.

New in v4, patch 7/21 moves static and request and result keys into a
set and member variable of CameraCapabilities, to ease adding new
controls later.

New in v4, patch 8/21 adds skeletal manual and still request templates.

Patches 9/21 to 12/21 add the necessary controls.

Patches 9/21 and 13/21 to 16/21 plumb the controls into the HAL. They all
plumb into the static metadata, and only a few into the result metadata.
In v4, they are also plumbed into processControls and result metadata,
though not yet to the manual and still templates.

Patches 17/21 to 21/21 plumb the controls into the IPU3 pipeline
handler.

I want review focused on the first half, patches 1/21 to 8/21, because
that is the foundation that the rest is built on top of. I'm hoping to
merge them before the other half.


Paul Elder (21):
  controls: Add boolean constructor for ControlInfo
  android: metadata: Add hasEntry and entryContains
  android: metadata: Fix addEntry template type
  android: jpeg: get ISO from SENSOR_SENSITIVITY
  android: Add infrastructure for determining capabilities and hardware
    level
  android: Add helpers for setting android metadata from libcamera
    controls
  android: capabilities: Make keys list into set and member variable
  android: Add skeletal still and manual request templates
  android, controls: Add and plumb MaxLatency control
  controls: Replace AeLocked with AeState, and add AeLock
  controls: Replace AwbEnable with AwbMode
  controls: Replace AwbLocked with AwbState, and add AwbLock
  android: Plumb AeEnable control
  android: Plumb AeLock control
  android: Plumb AwbMode control
  android: Plumb AwbLock control
  pipeline: ipu3: Set MaxLatency ControlInfo
  pipeline: ipu3: Set AeEnable ControlInfo
  pipeline: ipu3: Set AeLock ControlInfo
  pipeline: ipu3: Set AwbMode ControlInfo
  pipeline: ipu3: Set AwbLock ControlInfo

 include/libcamera/controls.h             |   2 +
 include/libcamera/ipa/raspberrypi.h      |   1 -
 src/android/camera_capabilities.cpp      | 642 +++++++++++++++++------
 src/android/camera_capabilities.h        |  20 +
 src/android/camera_device.cpp            |  43 +-
 src/android/camera_metadata.cpp          |  21 +
 src/android/camera_metadata.h            |   7 +-
 src/android/jpeg/post_processor_jpeg.cpp |   5 +-
 src/ipa/raspberrypi/raspberrypi.cpp      |  32 +-
 src/ipa/rkisp1/rkisp1.cpp                |  13 +-
 src/libcamera/control_ids.yaml           | 220 +++++---
 src/libcamera/controls.cpp               |  28 +
 src/libcamera/pipeline/ipu3/ipu3.cpp     |   5 +
 test/controls/control_info.cpp           |  33 ++
 test/controls/control_list.cpp           |   6 +-
 15 files changed, 786 insertions(+), 292 deletions(-)

-- 
2.27.0



More information about the libcamera-devel mailing list