libcamera/src/ipa/rkisp1/algorithms/awb.h
Stefan Klug b60bd37b1a ipa: rkisp1: Move calculation of RGB means into own function
Move the calculation of the RGB means into an own function for better
code clarity. This commit doesn't contain any functional changes.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
2025-02-21 17:35:03 +01:00

50 lines
1.3 KiB
C++

/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
* Copyright (C) 2021-2022, Ideas On Board
*
* AWB control algorithm
*/
#pragma once
#include <optional>
#include "libcamera/internal/vector.h"
#include "libipa/interpolator.h"
#include "algorithm.h"
namespace libcamera {
namespace ipa::rkisp1::algorithms {
class Awb : public Algorithm
{
public:
Awb();
~Awb() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
void queueRequest(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
const ControlList &controls) override;
void prepare(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
RkISP1Params *params) override;
void process(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
const rkisp1_stat_buffer *stats,
ControlList &metadata) override;
private:
RGB<double> calculateRgbMeans(const IPAFrameContext &frameContext,
const rkisp1_cif_isp_awb_stat *awb) const;
std::optional<Interpolator<Vector<double, 2>>> colourGainCurve_;
bool rgbMode_;
};
} /* namespace ipa::rkisp1::algorithms */
} /* namespace libcamera */