From f2734ff3ab09d3ab78321daf61d18cb628da2b98 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Sat, 22 Aug 2020 17:23:37 +0300 Subject: libcamera: Replace utils::clamp() with std::clamp() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now that libcamera uses C++17, the C++ standard library provides std::clamp(). Drop our custom utils::clamp() function. Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham Reviewed-by: Niklas Söderlund --- include/libcamera/internal/utils.h | 7 ------- src/ipa/rkisp1/rkisp1.cpp | 11 +++++------ src/libcamera/pipeline/ipu3/imgu.cpp | 3 ++- src/libcamera/pipeline/ipu3/ipu3.cpp | 12 ++++++------ src/libcamera/pipeline/vimc/vimc.cpp | 2 +- src/libcamera/utils.cpp | 8 -------- 6 files changed, 14 insertions(+), 29 deletions(-) diff --git a/include/libcamera/internal/utils.h b/include/libcamera/internal/utils.h index 45cd6f12..a1b644b0 100644 --- a/include/libcamera/internal/utils.h +++ b/include/libcamera/internal/utils.h @@ -65,13 +65,6 @@ unsigned int set_overlap(InputIt1 first1, InputIt1 last1, return count; } -/* C++11 doesn't provide std::clamp */ -template -const T& clamp(const T& v, const T& lo, const T& hi) -{ - return std::max(lo, std::min(v, hi)); -} - using clock = std::chrono::steady_clock; using duration = std::chrono::steady_clock::duration; using time_point = std::chrono::steady_clock::time_point; diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp index 4bb16273..3a1c50c4 100644 --- a/src/ipa/rkisp1/rkisp1.cpp +++ b/src/ipa/rkisp1/rkisp1.cpp @@ -24,7 +24,6 @@ #include #include "libcamera/internal/log.h" -#include "libcamera/internal/utils.h" namespace libcamera { @@ -234,13 +233,13 @@ void IPARkISP1::updateStatistics(unsigned int frame, double exposure; exposure = factor * exposure_ * gain_ / minGain_; - exposure_ = utils::clamp((uint64_t)exposure, - minExposure_, - maxExposure_); + exposure_ = std::clamp((uint64_t)exposure, + minExposure_, + maxExposure_); exposure = exposure / exposure_ * minGain_; - gain_ = utils::clamp((uint64_t)exposure, - minGain_, maxGain_); + gain_ = std::clamp((uint64_t)exposure, + minGain_, maxGain_); setControls(frame + 1); } diff --git a/src/libcamera/pipeline/ipu3/imgu.cpp b/src/libcamera/pipeline/ipu3/imgu.cpp index eb829e09..a4d74a62 100644 --- a/src/libcamera/pipeline/ipu3/imgu.cpp +++ b/src/libcamera/pipeline/ipu3/imgu.cpp @@ -7,6 +7,7 @@ #include "imgu.h" +#include #include #include @@ -129,7 +130,7 @@ void calculateBDSHeight(ImgUDevice::Pipe *pipe, const Size &iif, const Size &gdc if (!isSameRatio(pipe->input, gdc)) { float estIFHeight = (iif.width * gdc.height) / static_cast(gdc.width); - estIFHeight = utils::clamp(estIFHeight, minIFHeight, iif.height); + estIFHeight = std::clamp(estIFHeight, minIFHeight, iif.height); bool found = false; ifHeight = utils::alignUp(estIFHeight, IF_ALIGN_H); diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp index 019e50b8..2d881fe2 100644 --- a/src/libcamera/pipeline/ipu3/ipu3.cpp +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp @@ -240,15 +240,15 @@ CameraConfiguration::Status IPU3CameraConfiguration::validate() unsigned int limit; limit = utils::alignDown(cio2Configuration_.size.width - 1, IMGU_OUTPUT_WIDTH_MARGIN); - cfg->size.width = utils::clamp(cfg->size.width, - IMGU_OUTPUT_MIN_SIZE.width, - limit); + cfg->size.width = std::clamp(cfg->size.width, + IMGU_OUTPUT_MIN_SIZE.width, + limit); limit = utils::alignDown(cio2Configuration_.size.height - 1, IMGU_OUTPUT_HEIGHT_MARGIN); - cfg->size.height = utils::clamp(cfg->size.height, - IMGU_OUTPUT_MIN_SIZE.height, - limit); + cfg->size.height = std::clamp(cfg->size.height, + IMGU_OUTPUT_MIN_SIZE.height, + limit); cfg->size.alignDownTo(IMGU_OUTPUT_WIDTH_ALIGN, IMGU_OUTPUT_HEIGHT_ALIGN); diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp index cf244f11..7e237650 100644 --- a/src/libcamera/pipeline/vimc/vimc.cpp +++ b/src/libcamera/pipeline/vimc/vimc.cpp @@ -360,7 +360,7 @@ int PipelineHandlerVimc::processControls(VimcCameraData *data, Request *request) } int32_t value = lroundf(it.second.get() * 128 + offset); - controls.set(cid, utils::clamp(value, 0, 255)); + controls.set(cid, std::clamp(value, 0, 255)); } for (const auto &ctrl : controls) diff --git a/src/libcamera/utils.cpp b/src/libcamera/utils.cpp index 615df46a..a5232902 100644 --- a/src/libcamera/utils.cpp +++ b/src/libcamera/utils.cpp @@ -146,14 +146,6 @@ std::string dirname(const std::string &path) * \return The number of elements in the intersection of the two ranges */ -/** - * \fn libcamera::utils::clamp(const T& v, const T& lo, const T& hi) - * \param[in] v The value to clamp - * \param[in] lo The lower boundary to clamp v to - * \param[in] hi The higher boundary to clamp v to - * \return lo if v is less than lo, hi if v is greater than hi, otherwise v - */ - /** * \typedef clock * \brief The libcamera clock (monotonic) -- cgit v1.2.1