libcamera: ipu3: Use std::max() instead of expandTo() to get the max resolution
Using Size::expandTo() to find the max resolution might generate a non-existent resolution. For example, when application request streams for 1920x1080 and 1600x1200, the max resolution will be wrongly 1920x1200 and fails the configuration. Bug: https://bugs.libcamera.org/show_bug.cgi?id=139 Signed-off-by: Han-Lin Chen <hanlinchen@chromium.org> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
parent
45c198da63
commit
ba72e4202f
1 changed files with 12 additions and 10 deletions
|
@ -243,6 +243,7 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()
|
|||
*/
|
||||
unsigned int rawCount = 0;
|
||||
unsigned int yuvCount = 0;
|
||||
Size rawRequirement;
|
||||
Size maxYuvSize;
|
||||
Size rawSize;
|
||||
|
||||
|
@ -251,10 +252,11 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()
|
|||
|
||||
if (info.colourEncoding == PixelFormatInfo::ColourEncodingRAW) {
|
||||
rawCount++;
|
||||
rawSize.expandTo(cfg.size);
|
||||
rawSize = std::max(rawSize, cfg.size);
|
||||
} else {
|
||||
yuvCount++;
|
||||
maxYuvSize.expandTo(cfg.size);
|
||||
maxYuvSize = std::max(maxYuvSize, cfg.size);
|
||||
rawRequirement.expandTo(cfg.size);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -283,13 +285,13 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate()
|
|||
* The output YUV streams will be limited in size to the maximum frame
|
||||
* size requested for the RAW stream, if present.
|
||||
*
|
||||
* If no raw stream is requested generate a size as large as the maximum
|
||||
* requested YUV size aligned to the ImgU constraints and bound by the
|
||||
* sensor's maximum resolution. See
|
||||
* If no raw stream is requested, generate a size from the largest YUV
|
||||
* stream, aligned to the ImgU constraints and bound
|
||||
* by the sensor's maximum resolution. See
|
||||
* https://bugs.libcamera.org/show_bug.cgi?id=32
|
||||
*/
|
||||
if (rawSize.isNull())
|
||||
rawSize = maxYuvSize.expandedTo({ ImgUDevice::kIFMaxCropWidth,
|
||||
rawSize = rawRequirement.expandedTo({ ImgUDevice::kIFMaxCropWidth,
|
||||
ImgUDevice::kIFMaxCropHeight })
|
||||
.grownBy({ ImgUDevice::kOutputMarginWidth,
|
||||
ImgUDevice::kOutputMarginHeight })
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue