Message ID | 20200822200037.20892-3-laurent.pinchart@ideasonboard.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
Hi Laurent, On 22/08/2020 21:00, Laurent Pinchart wrote: > Now that libcamera uses C++17, the C++ standard library provides > std::clamp(). Drop our custom utils::clamp() function. > This one makes me happy. The less code we have to duplicate from standard libraries the better ;-) > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> > --- > 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 45cd6f120c51..a1b644b0345b 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 <typename T> > -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 4bb1627342fd..3a1c50c4add0 100644 > --- a/src/ipa/rkisp1/rkisp1.cpp > +++ b/src/ipa/rkisp1/rkisp1.cpp > @@ -24,7 +24,6 @@ > #include <libipa/ipa_interface_wrapper.h> > > #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>((uint64_t)exposure, > - minExposure_, > - maxExposure_); > + exposure_ = std::clamp<uint64_t>((uint64_t)exposure, > + minExposure_, > + maxExposure_); > > exposure = exposure / exposure_ * minGain_; > - gain_ = utils::clamp<uint64_t>((uint64_t)exposure, > - minGain_, maxGain_); > + gain_ = std::clamp<uint64_t>((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 eb829e096561..a4d74a62f69a 100644 > --- a/src/libcamera/pipeline/ipu3/imgu.cpp > +++ b/src/libcamera/pipeline/ipu3/imgu.cpp > @@ -7,6 +7,7 @@ > > #include "imgu.h" > > +#include <algorithm> > #include <cmath> > #include <limits> > > @@ -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<float>(gdc.width); > - estIFHeight = utils::clamp<float>(estIFHeight, minIFHeight, iif.height); > + estIFHeight = std::clamp<float>(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 019e50b8f444..2d881fe28f98 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 cf244f11f242..7e237650b448 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<float>() * 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 615df46ac142..a5232902191e 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) >
Hi Laurent, Thanks for your work. On 2020-08-22 23:00:34 +0300, Laurent Pinchart wrote: > Now that libcamera uses C++17, the C++ standard library provides > std::clamp(). Drop our custom utils::clamp() function. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> > --- > 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 45cd6f120c51..a1b644b0345b 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 <typename T> > -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 4bb1627342fd..3a1c50c4add0 100644 > --- a/src/ipa/rkisp1/rkisp1.cpp > +++ b/src/ipa/rkisp1/rkisp1.cpp > @@ -24,7 +24,6 @@ > #include <libipa/ipa_interface_wrapper.h> > > #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>((uint64_t)exposure, > - minExposure_, > - maxExposure_); > + exposure_ = std::clamp<uint64_t>((uint64_t)exposure, > + minExposure_, > + maxExposure_); > > exposure = exposure / exposure_ * minGain_; > - gain_ = utils::clamp<uint64_t>((uint64_t)exposure, > - minGain_, maxGain_); > + gain_ = std::clamp<uint64_t>((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 eb829e096561..a4d74a62f69a 100644 > --- a/src/libcamera/pipeline/ipu3/imgu.cpp > +++ b/src/libcamera/pipeline/ipu3/imgu.cpp > @@ -7,6 +7,7 @@ > > #include "imgu.h" > > +#include <algorithm> > #include <cmath> > #include <limits> > > @@ -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<float>(gdc.width); > - estIFHeight = utils::clamp<float>(estIFHeight, minIFHeight, iif.height); > + estIFHeight = std::clamp<float>(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 019e50b8f444..2d881fe28f98 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 cf244f11f242..7e237650b448 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<float>() * 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 615df46ac142..a5232902191e 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) > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
diff --git a/include/libcamera/internal/utils.h b/include/libcamera/internal/utils.h index 45cd6f120c51..a1b644b0345b 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 <typename T> -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 4bb1627342fd..3a1c50c4add0 100644 --- a/src/ipa/rkisp1/rkisp1.cpp +++ b/src/ipa/rkisp1/rkisp1.cpp @@ -24,7 +24,6 @@ #include <libipa/ipa_interface_wrapper.h> #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>((uint64_t)exposure, - minExposure_, - maxExposure_); + exposure_ = std::clamp<uint64_t>((uint64_t)exposure, + minExposure_, + maxExposure_); exposure = exposure / exposure_ * minGain_; - gain_ = utils::clamp<uint64_t>((uint64_t)exposure, - minGain_, maxGain_); + gain_ = std::clamp<uint64_t>((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 eb829e096561..a4d74a62f69a 100644 --- a/src/libcamera/pipeline/ipu3/imgu.cpp +++ b/src/libcamera/pipeline/ipu3/imgu.cpp @@ -7,6 +7,7 @@ #include "imgu.h" +#include <algorithm> #include <cmath> #include <limits> @@ -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<float>(gdc.width); - estIFHeight = utils::clamp<float>(estIFHeight, minIFHeight, iif.height); + estIFHeight = std::clamp<float>(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 019e50b8f444..2d881fe28f98 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 cf244f11f242..7e237650b448 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<float>() * 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 615df46ac142..a5232902191e 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)
Now that libcamera uses C++17, the C++ standard library provides std::clamp(). Drop our custom utils::clamp() function. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- 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(-)