ipa: simple: Report the ColourGains in metadata
Provide the determined colour gains back into the metadata to add to completed requests. Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Milan Zamazal <mzamazal@redhat.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
fb99081586
commit
a0b97475b1
3 changed files with 29 additions and 2 deletions
|
@ -17,6 +17,8 @@
|
|||
#include "libipa/colours.h"
|
||||
#include "simple/ipa_context.h"
|
||||
|
||||
#include "control_ids.h"
|
||||
|
||||
namespace libcamera {
|
||||
|
||||
LOG_DEFINE_CATEGORY(IPASoftAwb)
|
||||
|
@ -32,15 +34,32 @@ int Awb::configure(IPAContext &context,
|
|||
return 0;
|
||||
}
|
||||
|
||||
void Awb::prepare(IPAContext &context,
|
||||
[[maybe_unused]] const uint32_t frame,
|
||||
IPAFrameContext &frameContext,
|
||||
[[maybe_unused]] DebayerParams *params)
|
||||
{
|
||||
auto &gains = context.activeState.awb.gains;
|
||||
frameContext.gains.red = gains.r();
|
||||
frameContext.gains.blue = gains.b();
|
||||
}
|
||||
|
||||
void Awb::process(IPAContext &context,
|
||||
[[maybe_unused]] const uint32_t frame,
|
||||
[[maybe_unused]] IPAFrameContext &frameContext,
|
||||
IPAFrameContext &frameContext,
|
||||
const SwIspStats *stats,
|
||||
ControlList &metadata)
|
||||
{
|
||||
const SwIspStats::Histogram &histogram = stats->yHistogram;
|
||||
const uint8_t blackLevel = context.activeState.blc.level;
|
||||
|
||||
const float maxGain = 1024.0;
|
||||
const float mdGains[] = {
|
||||
static_cast<float>(frameContext.gains.red / maxGain),
|
||||
static_cast<float>(frameContext.gains.blue / maxGain)
|
||||
};
|
||||
metadata.set(controls::ColourGains, mdGains);
|
||||
|
||||
/*
|
||||
* Black level must be subtracted to get the correct AWB ratios, they
|
||||
* would be off if they were computed from the whole brightness range
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
/*
|
||||
* Copyright (C) 2024, Red Hat Inc.
|
||||
* Copyright (C) 2024-2025 Red Hat Inc.
|
||||
*
|
||||
* Auto white balance
|
||||
*/
|
||||
|
@ -20,6 +20,10 @@ public:
|
|||
~Awb() = default;
|
||||
|
||||
int configure(IPAContext &context, const IPAConfigInfo &configInfo) override;
|
||||
void prepare(IPAContext &context,
|
||||
const uint32_t frame,
|
||||
IPAFrameContext &frameContext,
|
||||
DebayerParams *params) override;
|
||||
void process(IPAContext &context,
|
||||
const uint32_t frame,
|
||||
IPAFrameContext &frameContext,
|
||||
|
|
|
@ -70,6 +70,10 @@ struct IPAFrameContext : public FrameContext {
|
|||
int32_t exposure;
|
||||
double gain;
|
||||
} sensor;
|
||||
struct {
|
||||
double red;
|
||||
double blue;
|
||||
} gains;
|
||||
};
|
||||
|
||||
struct IPAContext {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue