[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