summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilan Zamazal <mzamazal@redhat.com>2025-03-27 19:59:43 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2025-03-28 02:09:15 +0200
commit1375b07edea987856f2cb5cb4cdf4e705411777a (patch)
tree651b20f85ccd12b3ee5ba3e447ca767cadf83849
parent8a4c2682beb3de4951b02147407c290480e36cc2 (diff)
ipa: simple: Report contrast in metadata
Provide the requested contrast value, if any, in the metadata to add to the completed requests. Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Milan Zamazal <mzamazal@redhat.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/ipa/simple/algorithms/lut.cpp15
-rw-r--r--src/ipa/simple/algorithms/lut.h5
-rw-r--r--src/ipa/simple/ipa_context.h1
3 files changed, 20 insertions, 1 deletions
diff --git a/src/ipa/simple/algorithms/lut.cpp b/src/ipa/simple/algorithms/lut.cpp
index a06cdeba..e8638f27 100644
--- a/src/ipa/simple/algorithms/lut.cpp
+++ b/src/ipa/simple/algorithms/lut.cpp
@@ -87,9 +87,11 @@ int16_t Lut::ccmValue(unsigned int i, float ccm) const
void Lut::prepare(IPAContext &context,
[[maybe_unused]] const uint32_t frame,
- [[maybe_unused]] IPAFrameContext &frameContext,
+ IPAFrameContext &frameContext,
DebayerParams *params)
{
+ frameContext.contrast = context.activeState.knobs.contrast;
+
/*
* Update the gamma table if needed. This means if black level changes
* and since the black level gets updated only if a lower value is
@@ -139,6 +141,17 @@ void Lut::prepare(IPAContext &context,
}
}
+void Lut::process([[maybe_unused]] IPAContext &context,
+ [[maybe_unused]] const uint32_t frame,
+ [[maybe_unused]] IPAFrameContext &frameContext,
+ [[maybe_unused]] const SwIspStats *stats,
+ ControlList &metadata)
+{
+ const auto &contrast = frameContext.contrast;
+ if (contrast)
+ metadata.set(controls::Contrast, contrast.value());
+}
+
REGISTER_IPA_ALGORITHM(Lut, "Lut")
} /* namespace ipa::soft::algorithms */
diff --git a/src/ipa/simple/algorithms/lut.h b/src/ipa/simple/algorithms/lut.h
index 77324800..ba8b9021 100644
--- a/src/ipa/simple/algorithms/lut.h
+++ b/src/ipa/simple/algorithms/lut.h
@@ -30,6 +30,11 @@ public:
const uint32_t frame,
IPAFrameContext &frameContext,
DebayerParams *params) override;
+ void process(IPAContext &context,
+ const uint32_t frame,
+ IPAFrameContext &frameContext,
+ const SwIspStats *stats,
+ ControlList &metadata) override;
private:
void updateGammaTable(IPAContext &context);
diff --git a/src/ipa/simple/ipa_context.h b/src/ipa/simple/ipa_context.h
index bfac835b..10d539f5 100644
--- a/src/ipa/simple/ipa_context.h
+++ b/src/ipa/simple/ipa_context.h
@@ -74,6 +74,7 @@ struct IPAFrameContext : public FrameContext {
double red;
double blue;
} gains;
+ std::optional<double> contrast;
};
struct IPAContext {