ipa: rkisp1: Use generic Interpolator class

Replace all occurrences of the MatrixInterpolator with the generic one.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
Stefan Klug 2024-08-26 15:09:58 +02:00
parent 8ccb04a168
commit 91e6491fa0
2 changed files with 9 additions and 15 deletions

View file

@ -19,7 +19,7 @@
#include "libcamera/internal/yaml_parser.h" #include "libcamera/internal/yaml_parser.h"
#include "../utils.h" #include "../utils.h"
#include "libipa/matrix_interpolator.h" #include "libipa/interpolator.h"
/** /**
* \file ccm.h * \file ccm.h
@ -46,7 +46,7 @@ int Ccm::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData
LOG(RkISP1Ccm, Warning) LOG(RkISP1Ccm, Warning)
<< "Failed to parse 'ccm' " << "Failed to parse 'ccm' "
<< "parameter from tuning file; falling back to unit matrix"; << "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"); ret = offsets_.readYaml(tuningData["ccms"], "ct", "offsets");
@ -54,14 +54,8 @@ int Ccm::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData
LOG(RkISP1Ccm, Warning) LOG(RkISP1Ccm, Warning)
<< "Failed to parse 'offsets' " << "Failed to parse 'offsets' "
<< "parameter from tuning file; falling back to zero offsets"; << "parameter from tuning file; falling back to zero offsets";
/*
* MatrixInterpolator::reset() resets to identity matrices offsets_.setData({ { 0, Matrix<int16_t, 3, 1>({ 0, 0, 0 }) } });
* 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);
} }
return 0; return 0;
@ -106,8 +100,8 @@ void Ccm::prepare(IPAContext &context, const uint32_t frame,
} }
ct_ = ct; ct_ = ct;
Matrix<float, 3, 3> ccm = ccm_.get(ct); Matrix<float, 3, 3> ccm = ccm_.getInterpolated(ct);
Matrix<int16_t, 3, 1> offsets = offsets_.get(ct); Matrix<int16_t, 3, 1> offsets = offsets_.getInterpolated(ct);
context.activeState.ccm.ccm = ccm; context.activeState.ccm.ccm = ccm;
frameContext.ccm.ccm = ccm; frameContext.ccm.ccm = ccm;

View file

@ -9,8 +9,8 @@
#include <linux/rkisp1-config.h> #include <linux/rkisp1-config.h>
#include "libipa/interpolator.h"
#include "libipa/matrix.h" #include "libipa/matrix.h"
#include "libipa/matrix_interpolator.h"
#include "algorithm.h" #include "algorithm.h"
@ -40,8 +40,8 @@ private:
const Matrix<int16_t, 3, 1> &offsets); const Matrix<int16_t, 3, 1> &offsets);
unsigned int ct_; unsigned int ct_;
MatrixInterpolator<float, 3, 3> ccm_; Interpolator<Matrix<float, 3, 3>> ccm_;
MatrixInterpolator<int16_t, 3, 1> offsets_; Interpolator<Matrix<int16_t, 3, 1>> offsets_;
}; };
} /* namespace ipa::rkisp1::algorithms */ } /* namespace ipa::rkisp1::algorithms */