[PATCH v5 5/6] ipa: simple: Report contrast in metadata
Kieran Bingham
kieran.bingham at ideasonboard.com
Wed Mar 26 22:29:42 CET 2025
Quoting Milan Zamazal (2025-03-26 12:48:54)
> Provide the requested contrast value, if any, in the metadata to add to
> the completed requests.
>
> Signed-off-by: Milan Zamazal <mzamazal at redhat.com>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/ipa/simple/algorithms/lut.cpp | 15 ++++++++++++++-
> src/ipa/simple/algorithms/lut.h | 5 +++++
> src/ipa/simple/ipa_context.h | 1 +
> 3 files changed, 20 insertions(+), 1 deletion(-)
>
> 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 {
> --
> 2.49.0
>
More information about the libcamera-devel
mailing list