[PATCH 08/12] ipa: rkisp1: agc: Simplify predivider calculation
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon Jun 17 15:06:27 CEST 2024
Quoting Laurent Pinchart (2024-06-16 17:39:06)
> The condition
>
> if (std::pow(std::floor(root), 2) < factor)
> predivider = static_cast<uint8_t>(std::ceil(root));
> else
> predivider = static_cast<uint8_t>(std::floor(root));
>
> can only be false when the factor's root is an integer. In that case,
> std::ceil(root) and std::floor(root) will be equal. The computation can
> thus be simplified by always rounding up.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
This sounds fine to me. I hesitated as I wasn't sure if this was
papering over some floating point issue ... but without conjouring up a
full test suite to prove this ... I'm just going to say:
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/ipa/rkisp1/algorithms/agc.cpp | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
> diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp
> index 9f3b59b45f95..a61201bb05c9 100644
> --- a/src/ipa/rkisp1/algorithms/agc.cpp
> +++ b/src/ipa/rkisp1/algorithms/agc.cpp
> @@ -115,12 +115,7 @@ uint8_t Agc::computeHistogramPredivider(const Size &size,
> int count = mode == RKISP1_CIF_ISP_HISTOGRAM_MODE_RGB_COMBINED ? 3 : 1;
> double factor = size.width * size.height * count / 65536.0;
> double root = std::sqrt(factor);
> - uint8_t predivider;
> -
> - if (std::pow(std::floor(root), 2) < factor)
> - predivider = static_cast<uint8_t>(std::ceil(root));
> - else
> - predivider = static_cast<uint8_t>(std::floor(root));
> + uint8_t predivider = static_cast<uint8_t>(std::ceil(root));
>
> return std::clamp<uint8_t>(predivider, 3, 127);
> }
> --
> Regards,
>
> Laurent Pinchart
>
More information about the libcamera-devel
mailing list