summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-03-24 14:58:41 +0200
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2022-03-25 11:44:54 +0200
commit074fa98ac4ea903049ba9d7386cdb2f050ea3b48 (patch)
tree6a084c1390fc5d8128a1814bd792ab6a31c8a2a4 /src
parentbf5b3af88f555fcae4d9dba1ea7725c37fb290d0 (diff)
pipeline: rkisp1: Match sensor aspect ratio when generating configurations
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@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Diffstat (limited to 'src')
-rw-r--r--src/libcamera/pipeline/rkisp1/rkisp1_path.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp
index f8d47120..f195f91e 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);