/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2022, Theobroma Systems * * af.h - RkISP1 AF hill climbing based control algorithm */ #pragma once #include #include "libipa/algorithms/af_hill_climbing.h" #include "module.h" namespace libcamera::ipa::rkisp1::algorithms { class Af : public ipa::common::algorithms::AfHillClimbing { public: Af() = default; ~Af() = default; int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override; void prepare(IPAContext &context, rkisp1_params_cfg *params) override; void process(IPAContext &context, IPAFrameContext *frameCtx, const rkisp1_stat_buffer *stats) override; void setMetering(controls::AfMeteringEnum metering) override; void setWindows(Span windows) override; private: void updateCurrentWindow(const Rectangle &window); controls::AfMeteringEnum meteringMode_ = controls::AfMeteringAuto; Rectangle currentWindow_; Rectangle defaultWindow_; Rectangle userWindow_; bool updateAfwindow_ = false; static constexpr uint32_t kFLensWaitFrames = 2; static constexpr uint32_t kWindowWaitFrames = 1; }; } /* namespace libcamera::ipa::rkisp1::algorithms */