diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-03-24 14:58:41 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-03-25 11:44:54 +0200 |
commit | 074fa98ac4ea903049ba9d7386cdb2f050ea3b48 (patch) | |
tree | 6a084c1390fc5d8128a1814bd792ab6a31c8a2a4 | |
parent | bf5b3af88f555fcae4d9dba1ea7725c37fb290d0 (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>
-rw-r--r-- | src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 7 |
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); |