[PATCH v4 04/20] pipeline: rkisp1: Split inputCrop and outputCrop

Stefan Klug stefan.klug at ideasonboard.com
Mon Dec 16 16:40:44 CET 2024


One Rectangle instance is used to calculate the inputCrop and the
outputCrop of the ISP in the rkisp1 pipeline. Split that into two
distinct variables, because both values will be needed in the upcoming
patches. This patch does not contain any functional changes.

Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder at ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>

---
Changes in v2:
- Moved declaration of outputCrop after setSelection(inputCrop) to get
  the potentially updated inputCrop
- Collected tags
---
 src/libcamera/pipeline/rkisp1/rkisp1.cpp | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
index 698fe9ff57a4..6ac14cd15c8f 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp
@@ -795,15 +795,16 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)
 	if (ret < 0)
 		return ret;
 
-	Rectangle rect(0, 0, format.size);
-	ret = isp_->setSelection(0, V4L2_SEL_TGT_CROP, &rect);
+	Rectangle inputCrop(0, 0, format.size);
+	ret = isp_->setSelection(0, V4L2_SEL_TGT_CROP, &inputCrop);
 	if (ret < 0)
 		return ret;
 
 	LOG(RkISP1, Debug)
 		<< "ISP input pad configured with " << format
-		<< " crop " << rect;
+		<< " crop " << inputCrop;
 
+	Rectangle outputCrop = inputCrop;
 	const PixelFormat &streamFormat = config->at(0).pixelFormat;
 	const PixelFormatInfo &info = PixelFormatInfo::info(streamFormat);
 	isRaw_ = info.colourEncoding == PixelFormatInfo::ColourEncodingRAW;
@@ -821,15 +822,15 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)
 		const auto &cfg = config->at(0);
 		Size ispCrop = format.size.boundedToAspectRatio(cfg.size)
 					  .alignedUpTo(2, 2);
-		rect = ispCrop.centeredTo(Rectangle(format.size).center());
+		outputCrop = ispCrop.centeredTo(Rectangle(format.size).center());
 		format.size = ispCrop;
 	}
 
 	LOG(RkISP1, Debug)
 		<< "Configuring ISP output pad with " << format
-		<< " crop " << rect;
+		<< " crop " << outputCrop;
 
-	ret = isp_->setSelection(2, V4L2_SEL_TGT_CROP, &rect);
+	ret = isp_->setSelection(2, V4L2_SEL_TGT_CROP, &outputCrop);
 	if (ret < 0)
 		return ret;
 
@@ -840,7 +841,7 @@ int PipelineHandlerRkISP1::configure(Camera *camera, CameraConfiguration *c)
 
 	LOG(RkISP1, Debug)
 		<< "ISP output pad configured with " << format
-		<< " crop " << rect;
+		<< " crop " << outputCrop;
 
 	std::map<unsigned int, IPAStream> streamConfig;
 	std::vector<std::reference_wrapper<StreamConfiguration>> outputCfgs;
-- 
2.43.0



More information about the libcamera-devel mailing list