[libcamera-devel] [PATCH 7/7] libcamera: ipu3: imgu: Change IF_CROP_MAX to 40

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Apr 13 01:53:38 CEST 2021


Hi Jacopo,

Thank you for the patch.

On Thu, Mar 18, 2021 at 11:39:41AM +0100, Jacopo Mondi wrote:
> From: Dave Olsthoorn <dave at bewaar.me>
> 
> The value of IF_CROP_MAX seems to be a typo. A resolution of 40x540 seems
> unlikely and excludes camera's with a 640x480 resolution, like the OV7251
> in several Microsoft Surface products, from working.

IF_CROP_MAX_H seems to be the maximum cropping that can be applied
vertically, and is used to limit the search space. I'm not sure if
that's a device limitation or a software limitation, but in any case,
it's not a minimum vertical size as this commit message seems to imply,
and I don't see why it would excluse a 640x480 input.

Could the problem be instead caused by

	unsigned int minIFHeight = iif.height - IF_CROP_MAX_H;

in calculateBDSHeight() that will be a very large positive value if
iif.height < IF_CROP_MAX_H ?

> This patch corrects the value to 40 since a minimal resolution of 40x40
> seems more logical.
> 
> Signed-off-by: Dave Olsthoorn <dave at bewaar.me>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
>  src/libcamera/pipeline/ipu3/imgu.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/pipeline/ipu3/imgu.cpp b/src/libcamera/pipeline/ipu3/imgu.cpp
> index b6a1fe34494e..dd7d2e947141 100644
> --- a/src/libcamera/pipeline/ipu3/imgu.cpp
> +++ b/src/libcamera/pipeline/ipu3/imgu.cpp
> @@ -44,7 +44,7 @@ static constexpr unsigned int BDS_ALIGN_W = 2;
>  static constexpr unsigned int BDS_ALIGN_H = 4;
>  
>  static constexpr unsigned int IF_CROP_MAX_W = 40;
> -static constexpr unsigned int IF_CROP_MAX_H = 540;
> +static constexpr unsigned int IF_CROP_MAX_H = 40;
>  
>  static constexpr float BDS_SF_MAX = 2.5;
>  static constexpr float BDS_SF_MIN = 1.0;

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list