[libcamera-devel] [PATCH] pipeline: rkisp1: Match sensor aspect ratio when generating configurations
paul.elder at ideasonboard.com
paul.elder at ideasonboard.com
Fri Mar 25 06:29:40 CET 2022
Hi Laurent,
On Thu, Mar 24, 2022 at 03:05:06PM +0200, Laurent Pinchart wrote:
> 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>
Reviewed-by: Paul Elder <paul.elder 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