[PATCH v2 3/9] ipa: rkisp1: Use generic Interpolator class
Paul Elder
paul.elder at ideasonboard.com
Fri Sep 13 12:19:04 CEST 2024
On Fri, Sep 13, 2024 at 09:57:21AM +0200, Stefan Klug wrote:
> Replace all occurrences of the MatrixInterpolator with the generic one.
>
> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
> ---
> src/ipa/rkisp1/algorithms/ccm.cpp | 18 ++++++------------
> src/ipa/rkisp1/algorithms/ccm.h | 6 +++---
> 2 files changed, 9 insertions(+), 15 deletions(-)
>
> diff --git a/src/ipa/rkisp1/algorithms/ccm.cpp b/src/ipa/rkisp1/algorithms/ccm.cpp
> index 1ca0e73f81ad..6b7d2e2cd5b3 100644
> --- a/src/ipa/rkisp1/algorithms/ccm.cpp
> +++ b/src/ipa/rkisp1/algorithms/ccm.cpp
> @@ -19,7 +19,7 @@
> #include "libcamera/internal/yaml_parser.h"
>
> #include "../utils.h"
> -#include "libipa/matrix_interpolator.h"
> +#include "libipa/interpolator.h"
>
> /**
> * \file ccm.h
> @@ -46,7 +46,7 @@ int Ccm::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData
> LOG(RkISP1Ccm, Warning)
> << "Failed to parse 'ccm' "
> << "parameter from tuning file; falling back to unit matrix";
> - ccm_.reset();
> + ccm_.setData({ { 0, Matrix<float, 3, 3>::identity() } });
> }
>
> ret = offsets_.readYaml(tuningData["ccms"], "ct", "offsets");
> @@ -54,14 +54,8 @@ int Ccm::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData
> LOG(RkISP1Ccm, Warning)
> << "Failed to parse 'offsets' "
> << "parameter from tuning file; falling back to zero offsets";
> - /*
> - * MatrixInterpolator::reset() resets to identity matrices
> - * while here we need zero matrices so we need to construct it
> - * ourselves.
> - */
> - Matrix<int16_t, 3, 1> m({ 0, 0, 0 });
> - std::map<unsigned int, Matrix<int16_t, 3, 1>> matrices = { { 0, m } };
> - offsets_ = MatrixInterpolator<int16_t, 3, 1>(matrices);
> +
> + offsets_.setData({ { 0, Matrix<int16_t, 3, 1>({ 0, 0, 0 }) } });
> }
>
> return 0;
> @@ -106,8 +100,8 @@ void Ccm::prepare(IPAContext &context, const uint32_t frame,
> }
>
> ct_ = ct;
> - Matrix<float, 3, 3> ccm = ccm_.get(ct);
> - Matrix<int16_t, 3, 1> offsets = offsets_.get(ct);
> + Matrix<float, 3, 3> ccm = ccm_.getInterpolated(ct);
> + Matrix<int16_t, 3, 1> offsets = offsets_.getInterpolated(ct);
>
> context.activeState.ccm.ccm = ccm;
> frameContext.ccm.ccm = ccm;
> diff --git a/src/ipa/rkisp1/algorithms/ccm.h b/src/ipa/rkisp1/algorithms/ccm.h
> index 9daadb6834b1..46a1416e6be5 100644
> --- a/src/ipa/rkisp1/algorithms/ccm.h
> +++ b/src/ipa/rkisp1/algorithms/ccm.h
> @@ -9,8 +9,8 @@
>
> #include <linux/rkisp1-config.h>
>
> +#include "libipa/interpolator.h"
> #include "libipa/matrix.h"
> -#include "libipa/matrix_interpolator.h"
>
> #include "algorithm.h"
>
> @@ -40,8 +40,8 @@ private:
> const Matrix<int16_t, 3, 1> &offsets);
>
> unsigned int ct_;
> - MatrixInterpolator<float, 3, 3> ccm_;
> - MatrixInterpolator<int16_t, 3, 1> offsets_;
> + Interpolator<Matrix<float, 3, 3>> ccm_;
> + Interpolator<Matrix<int16_t, 3, 1>> offsets_;
> };
>
> } /* namespace ipa::rkisp1::algorithms */
> --
> 2.43.0
>
More information about the libcamera-devel
mailing list