From e7888073718aadd7c35a78f88792a73a4e3a8300 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 6 Dec 2021 16:24:43 +0200 Subject: libcamera: Use utils::abs_diff() Use the new utils::abs_diff() function where appropriate to replace manual implementations. While at it fix a header ordering issue in src/libcamera/pipeline/raspberrypi/raspberrypi.cpp. Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham Reviewed-by: Umang Jain --- src/ipa/ipu3/algorithms/agc.cpp | 3 ++- src/ipa/ipu3/ipu3.cpp | 4 ++-- src/ipa/rkisp1/algorithms/agc.cpp | 3 ++- src/libcamera/pipeline/ipu3/imgu.cpp | 4 ++-- src/libcamera/pipeline/raspberrypi/raspberrypi.cpp | 5 ++--- 5 files changed, 10 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp index 582f0ae1..8d6f18f6 100644 --- a/src/ipa/ipu3/algorithms/agc.cpp +++ b/src/ipa/ipu3/algorithms/agc.cpp @@ -12,6 +12,7 @@ #include #include +#include #include @@ -188,7 +189,7 @@ void Agc::computeExposure(IPAFrameContext &frameContext, double yGain, double evGain = std::max(yGain, iqMeanGain); /* Consider within 1% of the target as correctly exposed */ - if (std::abs(evGain - 1.0) < 0.01) + if (utils::abs_diff(evGain, 1.0) < 0.01) LOG(IPU3Agc, Debug) << "We are well exposed (evGain = " << evGain << ")"; diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp index 76182587..3d307708 100644 --- a/src/ipa/ipu3/ipu3.cpp +++ b/src/ipa/ipu3/ipu3.cpp @@ -354,7 +354,7 @@ void IPAIPU3::calculateBdsGrid(const Size &bdsOutputSize) kMaxGridWidth); width = width << shift; - uint32_t error = std::abs(static_cast(width - bdsOutputSize.width)); + uint32_t error = utils::abs_diff(width, bdsOutputSize.width); if (error >= minError) continue; @@ -370,7 +370,7 @@ void IPAIPU3::calculateBdsGrid(const Size &bdsOutputSize) kMaxGridHeight); height = height << shift; - uint32_t error = std::abs(static_cast(height - bdsOutputSize.height)); + uint32_t error = utils::abs_diff(height, bdsOutputSize.height); if (error >= minError) continue; diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp index d6abdc31..dd97afc0 100644 --- a/src/ipa/rkisp1/algorithms/agc.cpp +++ b/src/ipa/rkisp1/algorithms/agc.cpp @@ -12,6 +12,7 @@ #include #include +#include #include @@ -145,7 +146,7 @@ void Agc::computeExposure(IPAContext &context, double yGain) kMaxAnalogueGain); /* Consider within 1% of the target as correctly exposed. */ - if (std::abs(yGain - 1.0) < 0.01) + if (utils::abs_diff(yGain, 1.0) < 0.01) return; /* extracted from Rpi::Agc::computeTargetExposure. */ diff --git a/src/libcamera/pipeline/ipu3/imgu.cpp b/src/libcamera/pipeline/ipu3/imgu.cpp index 3ef0ef14..e5bbc382 100644 --- a/src/libcamera/pipeline/ipu3/imgu.cpp +++ b/src/libcamera/pipeline/ipu3/imgu.cpp @@ -81,7 +81,7 @@ float findScaleFactor(float sf, const std::vector &range, float bestDiff = std::numeric_limits::max(); unsigned int index = 0; for (unsigned int i = 0; i < range.size(); ++i) { - float diff = std::abs(sf - range[i]); + float diff = utils::abs_diff(sf, range[i]); if (diff < bestDiff) { bestDiff = diff; index = i; @@ -99,7 +99,7 @@ bool isSameRatio(const Size &in, const Size &out) float inRatio = static_cast(in.width) / in.height; float outRatio = static_cast(out.width) / out.height; - if (std::abs(inRatio - outRatio) > 0.1) + if (utils::abs_diff(inRatio, outRatio) > 0.1) return false; return true; diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp index 62db8f26..22c8ee68 100644 --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include @@ -25,8 +26,6 @@ #include #include -#include - #include #include #include @@ -154,7 +153,7 @@ V4L2SubdeviceFormat findBestFormat(const SensorFormats &formatsMap, const Size & score += penaltyAr * scoreFormat(reqAr, fmtAr); /* Add any penalties... this is not an exact science! */ - score += std::abs(static_cast(info.bitsPerPixel - bitDepth)) * penaltyBitDepth; + score += utils::abs_diff(info.bitsPerPixel, bitDepth) * penaltyBitDepth; if (score <= bestScore) { bestScore = score; -- cgit v1.2.1