ipa: rkisp1: awb: Load white balance gains from tuning file
For the implementation of a manual colour temperature setting, it is necessary to read predefined colour gains per colour temperature from the tuning file. Implement this in a backwards compatible way. If no gains are contained in the tuning file, loading just continues as before. Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
4d2618fb10
commit
886e0328c3
2 changed files with 25 additions and 0 deletions
|
@ -41,6 +41,24 @@ Awb::Awb()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \copydoc libcamera::ipa::Algorithm::init
|
||||||
|
*/
|
||||||
|
int Awb::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData)
|
||||||
|
{
|
||||||
|
Interpolator<Vector<double, 2>> gainCurve;
|
||||||
|
int ret = gainCurve.readYaml(tuningData["colourGains"], "ct", "gains");
|
||||||
|
if (ret < 0)
|
||||||
|
LOG(RkISP1Awb, Warning)
|
||||||
|
<< "Failed to parse 'colourGains' "
|
||||||
|
<< "parameter from tuning file; "
|
||||||
|
<< "manual colour temperature will not work properly";
|
||||||
|
else
|
||||||
|
colourGainCurve_ = gainCurve;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \copydoc libcamera::ipa::Algorithm::configure
|
* \copydoc libcamera::ipa::Algorithm::configure
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -7,6 +7,11 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
|
#include "libipa/interpolator.h"
|
||||||
|
#include "libipa/vector.h"
|
||||||
|
|
||||||
#include "algorithm.h"
|
#include "algorithm.h"
|
||||||
|
|
||||||
namespace libcamera {
|
namespace libcamera {
|
||||||
|
@ -19,6 +24,7 @@ public:
|
||||||
Awb();
|
Awb();
|
||||||
~Awb() = default;
|
~Awb() = default;
|
||||||
|
|
||||||
|
int init(IPAContext &context, const YamlObject &tuningData) override;
|
||||||
int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
|
int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
|
||||||
void queueRequest(IPAContext &context, const uint32_t frame,
|
void queueRequest(IPAContext &context, const uint32_t frame,
|
||||||
IPAFrameContext &frameContext,
|
IPAFrameContext &frameContext,
|
||||||
|
@ -32,6 +38,7 @@ public:
|
||||||
ControlList &metadata) override;
|
ControlList &metadata) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
std::optional<Interpolator<Vector<double, 2>>> colourGainCurve_;
|
||||||
bool rgbMode_;
|
bool rgbMode_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue