mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-24 17:15:07 +03:00
Frame contexts will become the core component of IPA modules, always available to functions of the algorithms. To indicate and prepare for this, turn the frame context pointer passed to Algorithm::process() into a reference. The RkISP1 IPA module doesn't use frame contexts yet, so pass a dummy context for now. While at it, drop an unneeded [[maybe_unused]] from Agc::process() and add a missing parameter documentation for the frameContext argument to Awb::process(). Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
60 lines
1.3 KiB
C++
60 lines
1.3 KiB
C++
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2021, Ideas On Board
|
|
*
|
|
* agc.h - IPU3 AGC/AEC mean-based control algorithm
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <linux/intel-ipu3.h>
|
|
|
|
#include <libcamera/base/utils.h>
|
|
|
|
#include <libcamera/geometry.h>
|
|
|
|
#include "algorithm.h"
|
|
|
|
namespace libcamera {
|
|
|
|
struct IPACameraSensorInfo;
|
|
|
|
namespace ipa::ipu3::algorithms {
|
|
|
|
class Agc : public Algorithm
|
|
{
|
|
public:
|
|
Agc();
|
|
~Agc() = default;
|
|
|
|
int configure(IPAContext &context, const IPAConfigInfo &configInfo) override;
|
|
void process(IPAContext &context, IPAFrameContext &frameContext,
|
|
const ipu3_uapi_stats_3a *stats) override;
|
|
|
|
private:
|
|
double measureBrightness(const ipu3_uapi_stats_3a *stats,
|
|
const ipu3_uapi_grid_config &grid) const;
|
|
utils::Duration filterExposure(utils::Duration currentExposure);
|
|
void computeExposure(IPAContext &context, IPAFrameContext &frameContext,
|
|
double yGain, double iqMeanGain);
|
|
double estimateLuminance(IPAActiveState &activeState,
|
|
const ipu3_uapi_grid_config &grid,
|
|
const ipu3_uapi_stats_3a *stats,
|
|
double gain);
|
|
|
|
uint64_t frameCount_;
|
|
|
|
utils::Duration minShutterSpeed_;
|
|
utils::Duration maxShutterSpeed_;
|
|
|
|
double minAnalogueGain_;
|
|
double maxAnalogueGain_;
|
|
|
|
utils::Duration filteredExposure_;
|
|
|
|
uint32_t stride_;
|
|
};
|
|
|
|
} /* namespace ipa::ipu3::algorithms */
|
|
|
|
} /* namespace libcamera */
|