[PATCH 08/12] ipa: rkisp1: agc: Simplify predivider calculation
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sun Jun 16 18:39:06 CEST 2024
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>
---
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