[libcamera-devel,v4,00/10] ipa: rkisp1: Add autofocus algorithm
mbox series

Message ID 20230314144834.85193-1-dse@thaumatec.com
Headers show
Series
  • ipa: rkisp1: Add autofocus algorithm
Related show

Message

Daniel Semkowicz March 14, 2023, 2:48 p.m. UTC
Hi!

This is the updated version of the common contrast based Auto Focus algorithm
implementation and it's usage for RkISP1 AF implementation.

Main changes:
- class hierarchy changed to composition,
- lens limits are now read from controls instead of being defined in the tuning
  file,
- improved documentation
- controls parsing was moved to the queueRequest() in the interface class as it
  should be reused by AF implementations.
- `windows` metering mode control was moved from the rkisp1 platform-specific
  class to the AfHillClimbing, because it can be reused.

Best regards
Daniel Semkowicz

Daniel Semkowicz (10):
  rkisp1: Add camera lens to PH and expose it to the IPA
  ipa: rkisp1: Add lens limits to the session config
  ipa: Add base class defining AF algorithm interface
  ipa: Add common contrast based AF implementation
  ipa: af_hill_climbing: Add "Windows" metering mode
  ipa: rkisp1: Add AF algorithm basing on AfHillClimbing
  ipa: rkisp1: af: Add "Windows" Metering mode
  ipa: rkisp1: Add AF controls to the RkISP1 IPA
  rkisp1: Control camera lens position from IPA
  ipa: rkisp1: Add OV5675 tuning file

 include/libcamera/ipa/rkisp1.mojom            |   2 +
 src/ipa/libipa/algorithms/af.cpp              | 155 +++++++
 src/ipa/libipa/algorithms/af.h                |  41 ++
 .../libipa/algorithms/af_hill_climbing.cpp    | 400 ++++++++++++++++++
 src/ipa/libipa/algorithms/af_hill_climbing.h  | 103 +++++
 src/ipa/libipa/algorithms/meson.build         |  11 +
 src/ipa/libipa/meson.build                    |   6 +
 src/ipa/rkisp1/algorithms/af.cpp              | 168 ++++++++
 src/ipa/rkisp1/algorithms/af.h                |  50 +++
 src/ipa/rkisp1/algorithms/meson.build         |   1 +
 src/ipa/rkisp1/data/meson.build               |   1 +
 src/ipa/rkisp1/data/ov5675.yaml               |  18 +
 src/ipa/rkisp1/ipa_context.cpp                |  25 ++
 src/ipa/rkisp1/ipa_context.h                  |  10 +
 src/ipa/rkisp1/rkisp1.cpp                     |  30 ++
 src/libcamera/pipeline/rkisp1/rkisp1.cpp      |  22 +
 16 files changed, 1043 insertions(+)
 create mode 100644 src/ipa/libipa/algorithms/af.cpp
 create mode 100644 src/ipa/libipa/algorithms/af.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