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>
This commit is contained in:
Laurent Pinchart 2022-03-24 14:58:41 +02:00
parent bf5b3af88f
commit 074fa98ac4

View file

@ -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);