[PATCH v3 17/17] ipa: rkisp1: awb: Expand comment

Milan Zamazal mzamazal at redhat.com
Tue Nov 19 11:40:35 CET 2024


Hi Laurent,

thank you for the patch, such a clarification is always good.

Laurent Pinchart <laurent.pinchart at ideasonboard.com> writes:

> The RGB to YCbCr conversion matrix mentioned in a comment, coming from
> the hardware documentation, does not match any of the canonical matrices
> specified by any standard. While researching where the values came from,
> it became apparent they are likely Bt.601 limited range coefficients
> rounded to 6 bits of decimal precision. Record this in comments.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Milan Zamazal <mzamazal at redhat.com>

> ---
>  src/ipa/rkisp1/algorithms/awb.cpp | 13 +++++++++----
>  1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp
> index 26d7b8138f17..4bb4f5b88375 100644
> --- a/src/ipa/rkisp1/algorithms/awb.cpp
> +++ b/src/ipa/rkisp1/algorithms/awb.cpp
> @@ -210,13 +210,18 @@ void Awb::process(IPAContext &context,
>  		});
>  
>  		/*
> -		 * Convert from YCbCr to RGB.
> -		 * The hardware uses the following formulas:
> -		 * Y = 16 + 0.2500 R + 0.5000 G + 0.1094 B
> +		 * Convert from YCbCr to RGB. The hardware uses the following
> +		 * formulas:
> +		 *
> +		 * Y  =  16 + 0.2500 R + 0.5000 G + 0.1094 B
>  		 * Cb = 128 - 0.1406 R - 0.2969 G + 0.4375 B
>  		 * Cr = 128 + 0.4375 R - 0.3750 G - 0.0625 B
>  		 *
> -		 * The inverse matrix is thus:
> +		 * This seems to be based on limited range BT.601 with Q1.6
> +		 * precision.
> +		 *
> +		 * The inverse matrix is:
> +		 *
>  		 * [[1,1636, -0,0623,  1,6008]
>  		 *  [1,1636, -0,4045, -0,7949]
>  		 *  [1,1636,  1,9912, -0,0250]]



More information about the libcamera-devel mailing list