[libcamera-devel,00/10] ipa: raspberrypi: Introduce an autofocus algorithm
mbox series

Message ID 20220613142853.98484-1-jeanmichel.hautbois@ideasonboard.com
Headers show
Series
  • ipa: raspberrypi: Introduce an autofocus algorithm
Related show

Message

Jean-Michel Hautbois June 13, 2022, 2:28 p.m. UTC
Hello,

This series introduces a contrast based algorithm, already used in the
IPU3, with some of the recently merged AF controls.

I have not included the LensPosition control, as we don't have, yet, a
way to know the hyperfocale, and so, we can't really give the user a
proper position.
I also have not included the AfLensRange control, for a similar reason,
but the basic mechanism is introduced in patch 9/10.

Patch 10/10 is, for now, more a reference file than anything else, I
used it in combination with the new capture script support in cam to
test the AF state machine. It will certainly be part of lc-compliance in
a near future, but right now, we miss some features (we can't pass
span<> and we can't read back the values in the same format).

Thanks for the comments,
JM

Jean-Michel Hautbois (10):
  ipa: raspberrypi: Introduce an autofocus algorithm
  libcamera: raspberrypi: Control the lens from pipeline
  ipa: raspberrypi: Control the lens position
  ipa: raspberrypi: Send the AF status back
  ipa: raspberrypi: Af: Add AfState
  ipa: raspberrypi: Add AfMode control
  ipa: raspberrypi: Introduce AfPause and AfPauseState
  ipa: raspberrypi: Introduce AfTrigger control
  ipa: raspberrypi: Set a constrained range
  test: af: Introduce a capture script test file

 include/libcamera/ipa/raspberrypi.h           |   7 +-
 include/libcamera/ipa/raspberrypi.mojom       |   1 +
 .../raspberrypi/controller/af_algorithm.hpp   |  37 +++
 src/ipa/raspberrypi/controller/af_status.h    |  23 ++
 src/ipa/raspberrypi/controller/iob/af.cpp     | 254 ++++++++++++++++++
 src/ipa/raspberrypi/controller/iob/af.h       |  67 +++++
 src/ipa/raspberrypi/meson.build               |   1 +
 src/ipa/raspberrypi/raspberrypi.cpp           |  87 +++++-
 .../pipeline/raspberrypi/raspberrypi.cpp      |  17 ++
 test/af/af-state-machine.yaml                 |  46 ++++
 10 files changed, 538 insertions(+), 2 deletions(-)
 create mode 100644 src/ipa/raspberrypi/controller/af_algorithm.hpp
 create mode 100644 src/ipa/raspberrypi/controller/af_status.h
 create mode 100644 src/ipa/raspberrypi/controller/iob/af.cpp
 create mode 100644 src/ipa/raspberrypi/controller/iob/af.h
 create mode 100644 test/af/af-state-machine.yaml