[v1,09/12] ipa: rkisp1: lsc: Pass crop rectangle as parameter
diff mbox series

Message ID 20251014075252.2876485-10-stefan.klug@ideasonboard.com
State New
Headers show
Series
  • Add resampling support for polynomial LSC data
Related show

Commit Message

Stefan Klug Oct. 14, 2025, 7:52 a.m. UTC
In preparation for the upcoming rework, pass the crop rectangle as
parameter to samplePolynomial(). This patch contains no functional
change.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
---
 src/ipa/rkisp1/algorithms/lsc.cpp | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

Comments

Barnabás Pőcze Oct. 14, 2025, 8:48 a.m. UTC | #1
2025. 10. 14. 9:52 keltezéssel, Stefan Klug írta:
> In preparation for the upcoming rework, pass the crop rectangle as
> parameter to samplePolynomial(). This patch contains no functional
> change.
> 
> Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
> ---

Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>


>   src/ipa/rkisp1/algorithms/lsc.cpp | 22 ++++++++++++----------
>   1 file changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/src/ipa/rkisp1/algorithms/lsc.cpp b/src/ipa/rkisp1/algorithms/lsc.cpp
> index 2fbc8bd1b242..29cd7efd83ef 100644
> --- a/src/ipa/rkisp1/algorithms/lsc.cpp
> +++ b/src/ipa/rkisp1/algorithms/lsc.cpp
> @@ -91,7 +91,8 @@ private:
>   	std::vector<double> sizesListToPositions(const std::vector<double> &sizes);
>   	std::vector<uint16_t> samplePolynomial(const LscPolynomial &poly,
>   					       const std::vector<double> &xPositions,
> -					       const std::vector<double> &yPositions);
> +					       const std::vector<double> &yPositions,
> +					       const Rectangle &cropRectangle);
>   
>   	Size sensorSize_;
>   	Rectangle cropRectangle_;
> @@ -134,10 +135,10 @@ int LscPolynomialLoader::parseLscData(const YamlObject &yamlSets,
>   
>   		std::vector<double> xPos(sizesListToPositions(xSizes_));
>   		std::vector<double> yPos(sizesListToPositions(ySizes_));
> -		set.r = samplePolynomial(*pr, xPos, yPos);
> -		set.gr = samplePolynomial(*pgr, xPos, yPos);
> -		set.gb = samplePolynomial(*pgb, xPos, yPos);
> -		set.b = samplePolynomial(*pb, xPos, yPos);
> +		set.r = samplePolynomial(*pr, xPos, yPos, cropRectangle_);
> +		set.gr = samplePolynomial(*pgr, xPos, yPos, cropRectangle_);
> +		set.gb = samplePolynomial(*pgb, xPos, yPos, cropRectangle_);
> +		set.b = samplePolynomial(*pb, xPos, yPos, cropRectangle_);
>   	}
>   
>   	if (lscData.empty()) {
> @@ -176,13 +177,14 @@ std::vector<double> LscPolynomialLoader::sizesListToPositions(const std::vector<
>   
>   std::vector<uint16_t> LscPolynomialLoader::samplePolynomial(const LscPolynomial &poly,
>   							    const std::vector<double> &xPositions,
> -							    const std::vector<double> &yPositions)
> +							    const std::vector<double> &yPositions,
> +							    const Rectangle &cropRectangle)
>   {
>   	double m = poly.getM();
> -	double x0 = cropRectangle_.x / m;
> -	double y0 = cropRectangle_.y / m;
> -	double w = cropRectangle_.width / m;
> -	double h = cropRectangle_.height / m;
> +	double x0 = cropRectangle.x / m;
> +	double y0 = cropRectangle.y / m;
> +	double w = cropRectangle.width / m;
> +	double h = cropRectangle.height / m;
>   	std::vector<uint16_t> samples;
>   
>   	samples.reserve(xPositions.size() * yPositions.size());

Patch
diff mbox series

diff --git a/src/ipa/rkisp1/algorithms/lsc.cpp b/src/ipa/rkisp1/algorithms/lsc.cpp
index 2fbc8bd1b242..29cd7efd83ef 100644
--- a/src/ipa/rkisp1/algorithms/lsc.cpp
+++ b/src/ipa/rkisp1/algorithms/lsc.cpp
@@ -91,7 +91,8 @@  private:
 	std::vector<double> sizesListToPositions(const std::vector<double> &sizes);
 	std::vector<uint16_t> samplePolynomial(const LscPolynomial &poly,
 					       const std::vector<double> &xPositions,
-					       const std::vector<double> &yPositions);
+					       const std::vector<double> &yPositions,
+					       const Rectangle &cropRectangle);
 
 	Size sensorSize_;
 	Rectangle cropRectangle_;
@@ -134,10 +135,10 @@  int LscPolynomialLoader::parseLscData(const YamlObject &yamlSets,
 
 		std::vector<double> xPos(sizesListToPositions(xSizes_));
 		std::vector<double> yPos(sizesListToPositions(ySizes_));
-		set.r = samplePolynomial(*pr, xPos, yPos);
-		set.gr = samplePolynomial(*pgr, xPos, yPos);
-		set.gb = samplePolynomial(*pgb, xPos, yPos);
-		set.b = samplePolynomial(*pb, xPos, yPos);
+		set.r = samplePolynomial(*pr, xPos, yPos, cropRectangle_);
+		set.gr = samplePolynomial(*pgr, xPos, yPos, cropRectangle_);
+		set.gb = samplePolynomial(*pgb, xPos, yPos, cropRectangle_);
+		set.b = samplePolynomial(*pb, xPos, yPos, cropRectangle_);
 	}
 
 	if (lscData.empty()) {
@@ -176,13 +177,14 @@  std::vector<double> LscPolynomialLoader::sizesListToPositions(const std::vector<
 
 std::vector<uint16_t> LscPolynomialLoader::samplePolynomial(const LscPolynomial &poly,
 							    const std::vector<double> &xPositions,
-							    const std::vector<double> &yPositions)
+							    const std::vector<double> &yPositions,
+							    const Rectangle &cropRectangle)
 {
 	double m = poly.getM();
-	double x0 = cropRectangle_.x / m;
-	double y0 = cropRectangle_.y / m;
-	double w = cropRectangle_.width / m;
-	double h = cropRectangle_.height / m;
+	double x0 = cropRectangle.x / m;
+	double y0 = cropRectangle.y / m;
+	double w = cropRectangle.width / m;
+	double h = cropRectangle.height / m;
 	std::vector<uint16_t> samples;
 
 	samples.reserve(xPositions.size() * yPositions.size());