[libcamera-devel] [PATCH] pipeline: rkisp1: Match sensor aspect ratio when generating configurations

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Mar 24 14:05:06 CET 2022


The RkISP1Path::generateConfiguration() function limits the maximum
resolution to the sensor resolution, to avoid upscaling. It however
doesn't take the sensor aspect ratio into account, which leads to a
maximum (and default) resolution of 1920x1920 when using the self path
with a sensor that has a higher resolution.

Fix it by constraining the minimum and maximum resolutions to match the
sensor's aspect ratio.

Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp
index f8d471204d2e..f195f91ead1f 100644
--- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp
+++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp
@@ -50,12 +50,13 @@ bool RkISP1Path::init(MediaDevice *media)
 
 StreamConfiguration RkISP1Path::generateConfiguration(const Size &resolution)
 {
-	Size maxResolution = resolution;
-	maxResolution.boundTo(maxResolution_);
+	Size maxResolution = maxResolution_.boundedToAspectRatio(resolution)
+					   .boundedTo(resolution);
+	Size minResolution = minResolution_.expandedToAspectRatio(resolution);
 
 	std::map<PixelFormat, std::vector<SizeRange>> streamFormats;
 	for (const PixelFormat &format : formats_)
-		streamFormats[format] = { { minResolution_, maxResolution } };
+		streamFormats[format] = { { minResolution, maxResolution } };
 
 	StreamFormats formats(streamFormats);
 	StreamConfiguration cfg(formats);
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list