[{"id":39208,"web_url":"https://patchwork.libcamera.org/comment/39208/","msgid":"<178204440385.1686300.2336340105348569469@ping.linuxembedded.co.uk>","date":"2026-06-21T12:20:03","subject":"Re: [PATCH 4/4] libcamera: vector: Add clamp() member function","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Laurent Pinchart (2026-06-21 01:23:05)\n> From: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> Provide a member function that performs a std::clamp() given a scalar\n> high and low values to clamp to.\n> \n> Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n> Changes since Kieran's version:\n> \n> - Use apply()\n> - Fix typos in commit message\n> ---\n>  include/libcamera/internal/vector.h | 7 +++++++\n>  src/libcamera/vector.cpp            | 8 ++++++++\n>  test/vector.cpp                     | 1 +\n>  3 files changed, 16 insertions(+)\n> \n> diff --git a/include/libcamera/internal/vector.h b/include/libcamera/internal/vector.h\n> index 7c90d6542352..0270651a0ef7 100644\n> --- a/include/libcamera/internal/vector.h\n> +++ b/include/libcamera/internal/vector.h\n> @@ -185,6 +185,13 @@ public:\n>                 return apply(*this, [](T a, T b) -> T { return std::max(a, b); }, scalar);\n>         }\n>  \n> +       constexpr Vector clamp(T low, T high) const\n> +       {\n> +               return apply(*this,\n> +                            [](T v, T lo, T hi) -> T { return std::clamp(v, lo, hi); },\n> +                            low, high);\n\nErm ... reviewed-by/approved-by of the changes to my patch?\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> +       }\n> +\n>         constexpr T dot(const Vector<T, Rows> &other) const\n>         {\n>                 T ret = 0;\n> diff --git a/src/libcamera/vector.cpp b/src/libcamera/vector.cpp\n> index 47b3d1af36d9..a135ab498e17 100644\n> --- a/src/libcamera/vector.cpp\n> +++ b/src/libcamera/vector.cpp\n> @@ -224,6 +224,14 @@ LOG_DEFINE_CATEGORY(Vector)\n>   * \\return The element-wise maximum of this vector and \\a scalar\n>   */\n>  \n> +/**\n> + * \\fn Vector::clamp(T low, T high) const\n> + * \\brief Clamp the vector element-wise between \\a low and \\a high\n> + * \\param[in] low The lower limit\n> + * \\param[in] high The upper limit\n> + * \\return A vector with each element clamped between \\a low and \\a high\n> + */\n> +\n>  /**\n>   * \\fn Vector::dot(const Vector<T, Rows> &other) const\n>   * \\brief Compute the dot product\n> diff --git a/test/vector.cpp b/test/vector.cpp\n> index 4ff908e8f682..2f3d97d93dcc 100644\n> --- a/test/vector.cpp\n> +++ b/test/vector.cpp\n> @@ -72,6 +72,7 @@ protected:\n>                 ASSERT_EQ(v2.min(4.0), (Vector<double, 3>{{ 1.0, 4.0, 4.0 }}));\n>                 ASSERT_EQ(v2.max(v3), (Vector<double, 3>{{ 4.0, 4.0, 8.0 }}));\n>                 ASSERT_EQ(v2.max(4.0), (Vector<double, 3>{{ 4.0, 4.0, 8.0 }}));\n> +               ASSERT_EQ(v2.clamp(2.0, 6.0), (Vector<double, 3>{{ 2.0, 4.0, 6.0 }}));\n>  \n>                 ASSERT_EQ(v2.dot(v3), 52.0);\n>  \n> -- \n> Regards,\n> \n> Laurent Pinchart\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id ECE52C3261\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 21 Jun 2026 12:20:08 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A706E656F8;\n\tSun, 21 Jun 2026 14:20:08 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id EDE52656EE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 21 Jun 2026 14:20:06 +0200 (CEST)","from monstersaurus.ideasonboard.com\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id CD518236;\n\tSun, 21 Jun 2026 14:19:29 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Yi7wI0oh\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1782044369;\n\tbh=+iukWuUhNw3WeTumqrI4RzV5PO/+nBehj/qhvkob2aM=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=Yi7wI0ohae2a9x52zkFBNTMbZtFHUj0iQRSrkvwAOYbpiSBWtvsy7fVKDTAEnRMPt\n\tUTAYxw1IxOq/+zQzbz3afUozXMBJpHEPLkYkpA14+P9NMH4guF6BGAN3CBd/8PepOp\n\tptZCIjSmpuif44Zp+A0OE+Dk0tMbFx6K8fohY6Os=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20260621002305.3763752-5-laurent.pinchart@ideasonboard.com>","References":"<20260621002305.3763752-1-laurent.pinchart@ideasonboard.com>\n\t<20260621002305.3763752-5-laurent.pinchart@ideasonboard.com>","Subject":"Re: [PATCH 4/4] libcamera: vector: Add clamp() member function","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Sun, 21 Jun 2026 13:20:03 +0100","Message-ID":"<178204440385.1686300.2336340105348569469@ping.linuxembedded.co.uk>","User-Agent":"alot/0.9.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":39215,"web_url":"https://patchwork.libcamera.org/comment/39215/","msgid":"<3937b0c9-fe12-417c-8842-3e29c793a8d9@ideasonboard.com>","date":"2026-06-22T07:54:09","subject":"Re: [PATCH 4/4] libcamera: vector: Add clamp() member function","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 06. 21. 2:23 keltezéssel, Laurent Pinchart írta:\n> From: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> Provide a member function that performs a std::clamp() given a scalar\n> high and low values to clamp to.\n> \n> Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n> Changes since Kieran's version:\n> \n> - Use apply()\n> - Fix typos in commit message\n> ---\n>   include/libcamera/internal/vector.h | 7 +++++++\n>   src/libcamera/vector.cpp            | 8 ++++++++\n>   test/vector.cpp                     | 1 +\n>   3 files changed, 16 insertions(+)\n> \n> diff --git a/include/libcamera/internal/vector.h b/include/libcamera/internal/vector.h\n> index 7c90d6542352..0270651a0ef7 100644\n> --- a/include/libcamera/internal/vector.h\n> +++ b/include/libcamera/internal/vector.h\n> @@ -185,6 +185,13 @@ public:\n>   \t\treturn apply(*this, [](T a, T b) -> T { return std::max(a, b); }, scalar);\n>   \t}\n>   \n> +\tconstexpr Vector clamp(T low, T high) const\n> +\t{\n> +\t\treturn apply(*this,\n> +\t\t\t     [](T v, T lo, T hi) -> T { return std::clamp(v, lo, hi); },\n\nAn alternative approach would be to capture the extra arguments in the lambda,\nand then there is no need for supporting *any* scalar arguments. I guess it\nmainly depends on how important it is to be able to use the same operations for\nboth the scalar and vector operations. On a related note, I'm wondering why\n`operator{+,-,/,*}=` do not use `std::{plus,minus,...}` ?\n\nReviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n\n\n> +\t\t\t     low, high);\n> +\t}\n> +\n>   \tconstexpr T dot(const Vector<T, Rows> &other) const\n>   \t{\n>   \t\tT ret = 0;\n> diff --git a/src/libcamera/vector.cpp b/src/libcamera/vector.cpp\n> index 47b3d1af36d9..a135ab498e17 100644\n> --- a/src/libcamera/vector.cpp\n> +++ b/src/libcamera/vector.cpp\n> @@ -224,6 +224,14 @@ LOG_DEFINE_CATEGORY(Vector)\n>    * \\return The element-wise maximum of this vector and \\a scalar\n>    */\n>   \n> +/**\n> + * \\fn Vector::clamp(T low, T high) const\n> + * \\brief Clamp the vector element-wise between \\a low and \\a high\n> + * \\param[in] low The lower limit\n> + * \\param[in] high The upper limit\n> + * \\return A vector with each element clamped between \\a low and \\a high\n> + */\n> +\n>   /**\n>    * \\fn Vector::dot(const Vector<T, Rows> &other) const\n>    * \\brief Compute the dot product\n> diff --git a/test/vector.cpp b/test/vector.cpp\n> index 4ff908e8f682..2f3d97d93dcc 100644\n> --- a/test/vector.cpp\n> +++ b/test/vector.cpp\n> @@ -72,6 +72,7 @@ protected:\n>   \t\tASSERT_EQ(v2.min(4.0), (Vector<double, 3>{{ 1.0, 4.0, 4.0 }}));\n>   \t\tASSERT_EQ(v2.max(v3), (Vector<double, 3>{{ 4.0, 4.0, 8.0 }}));\n>   \t\tASSERT_EQ(v2.max(4.0), (Vector<double, 3>{{ 4.0, 4.0, 8.0 }}));\n> +\t\tASSERT_EQ(v2.clamp(2.0, 6.0), (Vector<double, 3>{{ 2.0, 4.0, 6.0 }}));\n>   \n>   \t\tASSERT_EQ(v2.dot(v3), 52.0);\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id BEDBBC3303\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Jun 2026 07:54:11 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 787996570E;\n\tMon, 22 Jun 2026 09:54:11 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A8D7865706\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jun 2026 09:54:10 +0200 (CEST)","from [192.168.33.39] (185.221.141.133.nat.pool.zt.hu\n\t[185.221.141.133])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A82231E6;\n\tMon, 22 Jun 2026 09:53:32 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"wN2HX2U6\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1782114813;\n\tbh=DjnE6YSSbO/bC5WCY2BPDQI1S6Fw+iTx7khOcEu/O6s=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=wN2HX2U6GWjKx+rN75UtFAqAkkN4AFh7qMG19UJCQwmp7LRkQPYLybAweTWZxPb1e\n\tTr1Y7hKT+l0JId9XZ69/eMLbvMa1fayrJRuao4tVgKX7FXbKK92ue92wy4fqiiASYg\n\toKa7y1RoMvfBOVetdwGcwdtIsPOawr+fn5iYOZpg=","Message-ID":"<3937b0c9-fe12-417c-8842-3e29c793a8d9@ideasonboard.com>","Date":"Mon, 22 Jun 2026 09:54:09 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH 4/4] libcamera: vector: Add clamp() member function","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>","References":"<20260621002305.3763752-1-laurent.pinchart@ideasonboard.com>\n\t<20260621002305.3763752-5-laurent.pinchart@ideasonboard.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<20260621002305.3763752-5-laurent.pinchart@ideasonboard.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":39226,"web_url":"https://patchwork.libcamera.org/comment/39226/","msgid":"<20260622091710.GM3552167@killaraus.ideasonboard.com>","date":"2026-06-22T09:17:10","subject":"Re: [PATCH 4/4] libcamera: vector: Add clamp() member function","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"On Mon, Jun 22, 2026 at 09:54:09AM +0200, Barnabás Pőcze wrote:\n> 2026. 06. 21. 2:23 keltezéssel, Laurent Pinchart írta:\n> > From: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > \n> > Provide a member function that performs a std::clamp() given a scalar\n> > high and low values to clamp to.\n> > \n> > Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> > Changes since Kieran's version:\n> > \n> > - Use apply()\n> > - Fix typos in commit message\n> > ---\n> >   include/libcamera/internal/vector.h | 7 +++++++\n> >   src/libcamera/vector.cpp            | 8 ++++++++\n> >   test/vector.cpp                     | 1 +\n> >   3 files changed, 16 insertions(+)\n> > \n> > diff --git a/include/libcamera/internal/vector.h b/include/libcamera/internal/vector.h\n> > index 7c90d6542352..0270651a0ef7 100644\n> > --- a/include/libcamera/internal/vector.h\n> > +++ b/include/libcamera/internal/vector.h\n> > @@ -185,6 +185,13 @@ public:\n> >   \t\treturn apply(*this, [](T a, T b) -> T { return std::max(a, b); }, scalar);\n> >   \t}\n> >   \n> > +\tconstexpr Vector clamp(T low, T high) const\n> > +\t{\n> > +\t\treturn apply(*this,\n> > +\t\t\t     [](T v, T lo, T hi) -> T { return std::clamp(v, lo, hi); },\n> \n> An alternative approach would be to capture the extra arguments in the lambda,\n> and then there is no need for supporting *any* scalar arguments. I guess it\n> mainly depends on how important it is to be able to use the same operations for\n> both the scalar and vector operations.\n\nTrue, we could have done that, but then we won't be able to used\nstd::plus and the other similar objects provided by the standard\nlibrary.\n\nI don't mind much personally, I don't think it makes a big difference\nfor now, but I'll try to keep it in mind for future work on the Vector\nclass.\n\n> On a related note, I'm wondering why\n> `operator{+,-,/,*}=` do not use `std::{plus,minus,...}` ?\n\nI don't think there's a specific reason. I'll send a patch.\n\n> Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>\n> \n> > +\t\t\t     low, high);\n> > +\t}\n> > +\n> >   \tconstexpr T dot(const Vector<T, Rows> &other) const\n> >   \t{\n> >   \t\tT ret = 0;\n> > diff --git a/src/libcamera/vector.cpp b/src/libcamera/vector.cpp\n> > index 47b3d1af36d9..a135ab498e17 100644\n> > --- a/src/libcamera/vector.cpp\n> > +++ b/src/libcamera/vector.cpp\n> > @@ -224,6 +224,14 @@ LOG_DEFINE_CATEGORY(Vector)\n> >    * \\return The element-wise maximum of this vector and \\a scalar\n> >    */\n> >   \n> > +/**\n> > + * \\fn Vector::clamp(T low, T high) const\n> > + * \\brief Clamp the vector element-wise between \\a low and \\a high\n> > + * \\param[in] low The lower limit\n> > + * \\param[in] high The upper limit\n> > + * \\return A vector with each element clamped between \\a low and \\a high\n> > + */\n> > +\n> >   /**\n> >    * \\fn Vector::dot(const Vector<T, Rows> &other) const\n> >    * \\brief Compute the dot product\n> > diff --git a/test/vector.cpp b/test/vector.cpp\n> > index 4ff908e8f682..2f3d97d93dcc 100644\n> > --- a/test/vector.cpp\n> > +++ b/test/vector.cpp\n> > @@ -72,6 +72,7 @@ protected:\n> >   \t\tASSERT_EQ(v2.min(4.0), (Vector<double, 3>{{ 1.0, 4.0, 4.0 }}));\n> >   \t\tASSERT_EQ(v2.max(v3), (Vector<double, 3>{{ 4.0, 4.0, 8.0 }}));\n> >   \t\tASSERT_EQ(v2.max(4.0), (Vector<double, 3>{{ 4.0, 4.0, 8.0 }}));\n> > +\t\tASSERT_EQ(v2.clamp(2.0, 6.0), (Vector<double, 3>{{ 2.0, 4.0, 6.0 }}));\n> >   \n> >   \t\tASSERT_EQ(v2.dot(v3), 52.0);\n> >","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 5A4CFBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 22 Jun 2026 09:17:12 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0BA5B65719;\n\tMon, 22 Jun 2026 11:17:12 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 47D5B6570B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 22 Jun 2026 11:17:11 +0200 (CEST)","from killaraus.ideasonboard.com\n\t(2001-14ba-70f3-e800--a06.rev.dnainternet.fi\n\t[IPv6:2001:14ba:70f3:e800::a06])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 612287CA;\n\tMon, 22 Jun 2026 11:16:33 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"UDMN6Tj4\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1782119793;\n\tbh=R8OeZ92o3YqrxVDPnXr1Aa6Yw/83i1+RbylSg3HwGAI=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=UDMN6Tj4cES+Fj6RhYubcKdwZTUaGuaj9UIyd8qHsJdqNidMeqoa2AbYtvjiTrP6K\n\tUk54lhHQKzOXjOTKw3IqV98eN7Y4AF2ejuZXq1vX7hiINwXAG7TVdcLOpc3Rg+hfxp\n\t0N2GfEDcYgsaUujdDq0y2HL1iNdjG4hH8RpIfXbQ=","Date":"Mon, 22 Jun 2026 12:17:10 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>","Subject":"Re: [PATCH 4/4] libcamera: vector: Add clamp() member function","Message-ID":"<20260622091710.GM3552167@killaraus.ideasonboard.com>","References":"<20260621002305.3763752-1-laurent.pinchart@ideasonboard.com>\n\t<20260621002305.3763752-5-laurent.pinchart@ideasonboard.com>\n\t<3937b0c9-fe12-417c-8842-3e29c793a8d9@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<3937b0c9-fe12-417c-8842-3e29c793a8d9@ideasonboard.com>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]