From 287726495e68adaebe85a2daf52cae9dddbd3b6d Mon Sep 17 00:00:00 2001 From: Daniel Semkowicz via libcamera-devel Date: Wed, 13 Jul 2022 10:43:16 +0200 Subject: ipa: rkisp1: af: Skip few frames after changing lens position With 30fps stream, lens movement takes more time than one frame. Skip few frames to allow lens to stabilize before calculating next contrast value. Signed-off-by: Daniel Semkowicz --- src/ipa/rkisp1/algorithms/af.cpp | 5 ++++- src/ipa/rkisp1/algorithms/af.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ipa/rkisp1/algorithms/af.cpp b/src/ipa/rkisp1/algorithms/af.cpp index cd4f0e08..a0d914e0 100644 --- a/src/ipa/rkisp1/algorithms/af.cpp +++ b/src/ipa/rkisp1/algorithms/af.cpp @@ -86,7 +86,10 @@ void Af::process(IPAContext &context, uint32_t lensPosition = processAutofocus(sharpness); - context.frameContext.af.focus = lensPosition; + if (lensPosition != context.frameContext.af.focus) { + context.frameContext.af.focus = lensPosition; + setFramesToSkip(kFLensWaitFrames); + } } void Af::setMetering(controls::AfMeteringEnum metering) diff --git a/src/ipa/rkisp1/algorithms/af.h b/src/ipa/rkisp1/algorithms/af.h index eeb806c0..36d0c9b0 100644 --- a/src/ipa/rkisp1/algorithms/af.h +++ b/src/ipa/rkisp1/algorithms/af.h @@ -36,6 +36,8 @@ private: Rectangle defaultWindow_; Rectangle userWindow_; bool updateAfwindow_ = false; + + static constexpr uint32_t kFLensWaitFrames = 2; }; } /* namespace libcamera::ipa::rkisp1::algorithms */ -- cgit v1.2.1