libcamera: ipa: simple: Use float type for adjustment controls

control_ids.h defines the contrast type as float, let's use the same in
simple IPA, instead of double.  Saturation and gamma already use float,
except for the knobs initializers, let's use float for the knobs too.

Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Robert Mader <robert.mader@collabora.com>
Signed-off-by: Milan Zamazal <mzamazal@redhat.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Milan Zamazal
2026-01-28 15:20:33 +00:00
committed by Kieran Bingham
parent da0926bc4b
commit 14d340a27b
4 changed files with 8 additions and 8 deletions
@@ -59,7 +59,7 @@ struct DebayerParams {
Matrix<float, 3, 3> ccm;
RGB<float> blackLevel;
float gamma;
double contrastExp;
float contrastExp;
};
} /* namespace libcamera */
+2 -2
View File
@@ -34,8 +34,8 @@ int Adjust::configure(IPAContext &context,
[[maybe_unused]] const IPAConfigInfo &configInfo)
{
context.activeState.knobs.gamma = kDefaultGamma;
context.activeState.knobs.contrast = std::optional<double>();
context.activeState.knobs.saturation = std::optional<double>();
context.activeState.knobs.contrast = std::optional<float>();
context.activeState.knobs.saturation = std::optional<float>();
return 0;
}
+1 -1
View File
@@ -40,7 +40,7 @@ void Lut::updateGammaTable(IPAContext &context)
const auto gamma = 1.0 / context.activeState.knobs.gamma;
const auto contrast = context.activeState.knobs.contrast.value_or(1.0);
/* Convert 0..2 to 0..infinity; avoid actual inifinity at tan(pi/2) */
double contrastExp = tan(std::clamp(contrast * M_PI_4, 0.0, M_PI_2 - 0.00001));
float contrastExp = tan(std::clamp(contrast * M_PI_4, 0.0, M_PI_2 - 0.00001));
if (!context.gpuIspEnabled) {
auto &gammaTable = context.activeState.gamma.gammaTable;
+4 -4
View File
@@ -58,8 +58,8 @@ struct IPAActiveState {
std::array<double, kGammaLookupSize> gammaTable;
uint8_t blackLevel;
float gamma;
double contrast;
double contrastExp;
float contrast;
float contrastExp;
} gamma;
Matrix<float, 3, 3> combinedMatrix;
@@ -68,7 +68,7 @@ struct IPAActiveState {
struct {
float gamma;
/* 0..2 range, 1.0 = normal */
std::optional<double> contrast;
std::optional<float> contrast;
std::optional<float> saturation;
} knobs;
};
@@ -87,7 +87,7 @@ struct IPAFrameContext : public FrameContext {
} gains;
float gamma;
std::optional<double> contrast;
std::optional<float> contrast;
std::optional<float> saturation;
};