[libcamera-devel] [PATCH 0/8] ipa: rkisp1: Add autofocus algorithm

Daniel Semkowicz dse at thaumatec.com
Thu Jun 30 16:35:35 CEST 2022


Hello,

The following set of patches introduces an autofocus algorithm for
rkisp1 platforms. As there are common parts of code in the IPU3, RPi and
now they would be repeated in rkisp1, I tried to separate the main
control part of the AF algorithm in the new AfHillClimbing class.

These changes make use of the freshly introduced algorithm registration
mechanism. As there was a missing part for the easy way to get the
specific algorithm from the dynamically loaded list, I added 
getAlgorithm<AlgoType>() method to the Module class that. It was
implemented in the fastest way to get it working, but I think we should
improve it later. Maybe it would be good to extend algorithm creation
and store also the name of corresponding algorithm to allow calling it
by name instead of type. Especially that algorithms are loaded from
tuning file by name.

I am not sure if the directory structure I have chosen for the common
code is a good place, so please correct me if I should place it
somewhere else.

Doxygen documentation part should be, for sure, more detailed, but I
firstly want to wait for your comments about the code, just in case if
there were any changes to the design.

These changes depend on the "libcamera: rkisp1: Add lens control"
changes that are still in the review process.
Link: https://patchwork.libcamera.org/project/libcamera/list/?series=3228

I am waiting for your comments :)

Best regards
Daniel Semkowicz

Daniel Semkowicz (8):
  ipa: Add base class defining AF algorithm interface
  ipa: Add class that implements base AF control algorithm
  ipa: rkisp1: Add AF algorithm basing on common AfHillClimbing class
  pipeline: rkisp1: Add basic AF controls to the supported controls list
  ipa: module: Add getAlgorithm() method
  ipa: rkisp1: Pass requests setting AF controls to the AF algorithm
  ipa: rkisp1: Add OV5675 tuning file
  ipa: rkisp1: Add "Windows" Metering mode to auto focus algorithm

 src/ipa/libipa/algorithms/af_algorithm.cpp    |  77 ++++++
 src/ipa/libipa/algorithms/af_algorithm.h      |  39 +++
 .../libipa/algorithms/af_hill_climbing.cpp    |  89 +++++++
 src/ipa/libipa/algorithms/af_hill_climbing.h  | 251 ++++++++++++++++++
 src/ipa/libipa/algorithms/meson.build         |  11 +
 src/ipa/libipa/meson.build                    |   6 +
 src/ipa/libipa/module.cpp                     |   7 +
 src/ipa/libipa/module.h                       |  17 ++
 src/ipa/rkisp1/algorithms/af.cpp              | 132 +++++++++
 src/ipa/rkisp1/algorithms/af.h                |  41 +++
 src/ipa/rkisp1/algorithms/meson.build         |   1 +
 src/ipa/rkisp1/data/meson.build               |   1 +
 src/ipa/rkisp1/data/ov5675.yaml               |  12 +
 src/ipa/rkisp1/rkisp1.cpp                     |  72 ++++-
 src/libcamera/pipeline/rkisp1/rkisp1.cpp      |  12 +-
 15 files changed, 762 insertions(+), 6 deletions(-)
 create mode 100644 src/ipa/libipa/algorithms/af_algorithm.cpp
 create mode 100644 src/ipa/libipa/algorithms/af_algorithm.h
 create mode 100644 src/ipa/libipa/algorithms/af_hill_climbing.cpp
 create mode 100644 src/ipa/libipa/algorithms/af_hill_climbing.h
 create mode 100644 src/ipa/libipa/algorithms/meson.build
 create mode 100644 src/ipa/rkisp1/algorithms/af.cpp
 create mode 100644 src/ipa/rkisp1/algorithms/af.h
 create mode 100644 src/ipa/rkisp1/data/ov5675.yaml

-- 
2.34.1



More information about the libcamera-devel mailing list