@@ -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)
@@ -36,6 +36,8 @@ private:
Rectangle defaultWindow_;
Rectangle userWindow_;
bool updateAfwindow_ = false;
+
+ static constexpr uint32_t kFLensWaitFrames = 2;
};
} /* namespace libcamera::ipa::rkisp1::algorithms */
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 <dse@thaumatec.com> --- src/ipa/rkisp1/algorithms/af.cpp | 5 ++++- src/ipa/rkisp1/algorithms/af.h | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-)