[PATCH v2 3/9] ipa: rkisp1: Use generic Interpolator class

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Sep 13 11:13:38 CEST 2024


Quoting Stefan Klug (2024-09-13 08:57:21)
> Replace all occurrences of the MatrixInterpolator with the generic one.
> 
> Signed-off-by: Stefan Klug <stefan.klug 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_;

I like this.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

>  };
>  
>  } /* namespace ipa::rkisp1::algorithms */
> -- 
> 2.43.0
>


More information about the libcamera-devel mailing list