12#include <linux/intel-ipu3.h>
22namespace ipa::ipu3::algorithms {
25static constexpr uint32_t kAwbStatsSizeX = 16;
26static constexpr uint32_t kAwbStatsSizeY = 12;
37class Awb :
public Algorithm
46 ipu3_uapi_params *params)
override;
49 const ipu3_uapi_stats_3a *stats,
61 void calculateWBGains(
const ipu3_uapi_stats_3a *stats);
63 void generateAwbStats(
const ipu3_uapi_stats_3a *stats);
66 static constexpr uint16_t threshold(
float value);
67 static constexpr uint16_t gainValue(
double gain);
69 std::vector<RGB<double>> zones_;
70 Accumulator awbStats_[kAwbStatsSizeX * kAwbStatsSizeY];
71 AwbStatus asyncResults_;
74 uint32_t cellsPerZoneX_;
75 uint32_t cellsPerZoneY_;
76 uint32_t cellsPerZoneThreshold_;
Associate a list of ControlId with their values for an object.
Definition controls.h:411
int configure(IPAContext &context, const IPAConfigInfo &configInfo) override
Configure the Algorithm given an IPAConfigInfo.
Definition awb.cpp:203
void prepare(IPAContext &context, const uint32_t frame, IPAFrameContext &frameContext, ipu3_uapi_params *params) override
Fill the params buffer with ISP processing parameters for a frame.
Definition awb.cpp:249
void process(IPAContext &context, const uint32_t frame, IPAFrameContext &frameContext, const ipu3_uapi_stats_3a *stats, ControlList &metadata) override
Process ISP statistics, and run algorithm operations.
Definition awb.cpp:450
Data structures related to geometric objects.
Top-level libcamera namespace.
Definition backtrace.h:17
Global IPA context data shared between all algorithms.
Definition ipa_context.h:86
IPU3-specific FrameContext.
Definition ipa_context.h:79
RGB statistics for a given zone.
Definition awb.h:28
struct libcamera::ipa::ipu3::algorithms::Accumulator::@046015366141165261174332173113205110321337047250 sum
A structure containing the average red, green and blue sums.
uint64_t red
Sum of the average red values of each unsaturated cell in the zone.
Definition awb.h:31
uint64_t blue
Sum of the average blue values of each unsaturated cell in the zone.
Definition awb.h:33
unsigned int counted
Number of unsaturated cells used to calculate the sums.
Definition awb.h:29
uint64_t green
Sum of the average green values of each unsaturated cell in the zone.
Definition awb.h:32