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 <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
This commit is contained in:
parent
f413f944d7
commit
e788807371
5 changed files with 10 additions and 9 deletions
|
@ -12,6 +12,7 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include <libcamera/base/log.h>
|
#include <libcamera/base/log.h>
|
||||||
|
#include <libcamera/base/utils.h>
|
||||||
|
|
||||||
#include <libcamera/ipa/core_ipa_interface.h>
|
#include <libcamera/ipa/core_ipa_interface.h>
|
||||||
|
|
||||||
|
@ -188,7 +189,7 @@ void Agc::computeExposure(IPAFrameContext &frameContext, double yGain,
|
||||||
double evGain = std::max(yGain, iqMeanGain);
|
double evGain = std::max(yGain, iqMeanGain);
|
||||||
|
|
||||||
/* Consider within 1% of the target as correctly exposed */
|
/* 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 = "
|
LOG(IPU3Agc, Debug) << "We are well exposed (evGain = "
|
||||||
<< evGain << ")";
|
<< evGain << ")";
|
||||||
|
|
||||||
|
|
|
@ -354,7 +354,7 @@ void IPAIPU3::calculateBdsGrid(const Size &bdsOutputSize)
|
||||||
kMaxGridWidth);
|
kMaxGridWidth);
|
||||||
|
|
||||||
width = width << shift;
|
width = width << shift;
|
||||||
uint32_t error = std::abs(static_cast<int>(width - bdsOutputSize.width));
|
uint32_t error = utils::abs_diff(width, bdsOutputSize.width);
|
||||||
if (error >= minError)
|
if (error >= minError)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -370,7 +370,7 @@ void IPAIPU3::calculateBdsGrid(const Size &bdsOutputSize)
|
||||||
kMaxGridHeight);
|
kMaxGridHeight);
|
||||||
|
|
||||||
height = height << shift;
|
height = height << shift;
|
||||||
uint32_t error = std::abs(static_cast<int>(height - bdsOutputSize.height));
|
uint32_t error = utils::abs_diff(height, bdsOutputSize.height);
|
||||||
if (error >= minError)
|
if (error >= minError)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include <libcamera/base/log.h>
|
#include <libcamera/base/log.h>
|
||||||
|
#include <libcamera/base/utils.h>
|
||||||
|
|
||||||
#include <libcamera/ipa/core_ipa_interface.h>
|
#include <libcamera/ipa/core_ipa_interface.h>
|
||||||
|
|
||||||
|
@ -145,7 +146,7 @@ void Agc::computeExposure(IPAContext &context, double yGain)
|
||||||
kMaxAnalogueGain);
|
kMaxAnalogueGain);
|
||||||
|
|
||||||
/* Consider within 1% of the target as correctly exposed. */
|
/* 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;
|
return;
|
||||||
|
|
||||||
/* extracted from Rpi::Agc::computeTargetExposure. */
|
/* extracted from Rpi::Agc::computeTargetExposure. */
|
||||||
|
|
|
@ -81,7 +81,7 @@ float findScaleFactor(float sf, const std::vector<float> &range,
|
||||||
float bestDiff = std::numeric_limits<float>::max();
|
float bestDiff = std::numeric_limits<float>::max();
|
||||||
unsigned int index = 0;
|
unsigned int index = 0;
|
||||||
for (unsigned int i = 0; i < range.size(); ++i) {
|
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) {
|
if (diff < bestDiff) {
|
||||||
bestDiff = diff;
|
bestDiff = diff;
|
||||||
index = i;
|
index = i;
|
||||||
|
@ -99,7 +99,7 @@ bool isSameRatio(const Size &in, const Size &out)
|
||||||
float inRatio = static_cast<float>(in.width) / in.height;
|
float inRatio = static_cast<float>(in.width) / in.height;
|
||||||
float outRatio = static_cast<float>(out.width) / out.height;
|
float outRatio = static_cast<float>(out.width) / out.height;
|
||||||
|
|
||||||
if (std::abs(inRatio - outRatio) > 0.1)
|
if (utils::abs_diff(inRatio, outRatio) > 0.1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
|
|
||||||
#include <libcamera/base/shared_fd.h>
|
#include <libcamera/base/shared_fd.h>
|
||||||
|
#include <libcamera/base/utils.h>
|
||||||
|
|
||||||
#include <libcamera/camera.h>
|
#include <libcamera/camera.h>
|
||||||
#include <libcamera/control_ids.h>
|
#include <libcamera/control_ids.h>
|
||||||
|
@ -25,8 +26,6 @@
|
||||||
#include <libcamera/property_ids.h>
|
#include <libcamera/property_ids.h>
|
||||||
#include <libcamera/request.h>
|
#include <libcamera/request.h>
|
||||||
|
|
||||||
#include <libcamera/base/utils.h>
|
|
||||||
|
|
||||||
#include <linux/bcm2835-isp.h>
|
#include <linux/bcm2835-isp.h>
|
||||||
#include <linux/media-bus-format.h>
|
#include <linux/media-bus-format.h>
|
||||||
#include <linux/videodev2.h>
|
#include <linux/videodev2.h>
|
||||||
|
@ -154,7 +153,7 @@ V4L2SubdeviceFormat findBestFormat(const SensorFormats &formatsMap, const Size &
|
||||||
score += penaltyAr * scoreFormat(reqAr, fmtAr);
|
score += penaltyAr * scoreFormat(reqAr, fmtAr);
|
||||||
|
|
||||||
/* Add any penalties... this is not an exact science! */
|
/* Add any penalties... this is not an exact science! */
|
||||||
score += std::abs(static_cast<int>(info.bitsPerPixel - bitDepth)) * penaltyBitDepth;
|
score += utils::abs_diff(info.bitsPerPixel, bitDepth) * penaltyBitDepth;
|
||||||
|
|
||||||
if (score <= bestScore) {
|
if (score <= bestScore) {
|
||||||
bestScore = score;
|
bestScore = score;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue