[{"id":39683,"web_url":"https://patchwork.libcamera.org/comment/39683/","msgid":"<178395398270.3603632.11912506104395824307@localhost>","date":"2026-07-13T14:46:22","subject":"Re: [PATCH v5 21/36] ipa: libipa: lsc: Introduce lsc::ActiveState","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/people/184/","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"content":"Hi Jacopo,\n\nQuoting Jacopo Mondi (2026-07-08 17:51:03)\n> Introduce the lsc.h and lsc.cpp files with the definition of the\n> Lsc algorithm active state.\n> \n> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n\nThis could maybe merged with the next patch.\n\nAs you prefer.\n\nReviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>\n\nBest regards,\nStefan\n\n\n> ---\n>  src/ipa/libipa/lsc.cpp     | 33 +++++++++++++++++++++++++++++++++\n>  src/ipa/libipa/lsc.h       | 24 ++++++++++++++++++++++++\n>  src/ipa/libipa/meson.build |  2 ++\n>  3 files changed, 59 insertions(+)\n> \n> diff --git a/src/ipa/libipa/lsc.cpp b/src/ipa/libipa/lsc.cpp\n> new file mode 100644\n> index 000000000000..437666855354\n> --- /dev/null\n> +++ b/src/ipa/libipa/lsc.cpp\n> @@ -0,0 +1,33 @@\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2026 Ideas on Board Oy\n> + *\n> + * libIPA Lsc algorithms\n> + */\n> +\n> +#include \"lsc.h\"\n> +\n> +/**\n> + * \\file lsc.h\n> + * \\brief libipa LSC algorithm\n> + */\n> +\n> +namespace libcamera {\n> +\n> +namespace ipa {\n> +\n> +namespace lsc {\n> +\n> +/**\n> + * \\struct ActiveState\n> + * \\brief The LSC active state\n> + *\n> + * \\var ActiveState::enabled\n> + * \\brief Boolean flag for the LscAlgorithm enable status\n> + */\n> +\n> +} /* namespace lsc */\n> +\n> +} /* namespace ipa */\n> +\n> +} /* namespace libcamera */\n> diff --git a/src/ipa/libipa/lsc.h b/src/ipa/libipa/lsc.h\n> new file mode 100644\n> index 000000000000..18c9fa25e53a\n> --- /dev/null\n> +++ b/src/ipa/libipa/lsc.h\n> @@ -0,0 +1,24 @@\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2026 Ideas on Board Oy\n> + *\n> + * libIPA Lsc algorithm\n> + */\n> +\n> +#pragma once\n> +\n> +namespace libcamera {\n> +\n> +namespace ipa {\n> +\n> +namespace lsc {\n> +\n> +struct ActiveState {\n> +       bool enabled;\n> +};\n> +\n> +} /* namespace lsc */\n> +\n> +} /* namespace ipa */\n> +\n> +} /* namespace libcamera */\n> diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build\n> index 95d398d99fd6..42f89d9820fa 100644\n> --- a/src/ipa/libipa/meson.build\n> +++ b/src/ipa/libipa/meson.build\n> @@ -14,6 +14,7 @@ libipa_headers = files([\n>      'fixedpoint.h',\n>      'histogram.h',\n>      'interpolator.h',\n> +    'lsc.h',\n>      'lsc_base.h',\n>      'lsc_polynomial.h',\n>      'lsc_table.h',\n> @@ -38,6 +39,7 @@ libipa_sources = files([\n>      'fixedpoint.cpp',\n>      'histogram.cpp',\n>      'interpolator.cpp',\n> +    'lsc.cpp',\n>      'lsc_base.cpp',\n>      'lsc_polynomial.cpp',\n>      'lsc_table.cpp',\n> \n> -- \n> 2.54.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 63182C3264\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 13 Jul 2026 14:46:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 4622A6611C;\n\tMon, 13 Jul 2026 16:46:27 +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 E09B36604D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 Jul 2026 16:46:25 +0200 (CEST)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:6c1f:355d:1c19:aba6])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3CD351049;\n\tMon, 13 Jul 2026 16:45: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=\"mNFFuXdV\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1783953932;\n\tbh=QeN+WTEB1MoSxXVOjeHwGfZFtxTnw/WzpM2R8FqiYlM=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=mNFFuXdVRfBb4sk/r721/m2ehDe9tPkok4ZwxFeapdefJfLQ6IeahEJUJ+xMGzVk0\n\tyGNXY4sA5xWM4slneXZEXgxqRYZQTr/loH0XFTpn4yLpJ6XrcPimgOFqejyWJEwnNt\n\tZYtZfvIVkchNTG/8SlfgcWzfSF4EYKfO7ltviYlM=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20260708-libipa-algorithms-v5-21-0759d0359f52@ideasonboard.com>","References":"<20260708-libipa-algorithms-v5-0-0759d0359f52@ideasonboard.com>\n\t<20260708-libipa-algorithms-v5-21-0759d0359f52@ideasonboard.com>","Subject":"Re: [PATCH v5 21/36] ipa: libipa: lsc: Introduce lsc::ActiveState","From":"Stefan Klug <stefan.klug@ideasonboard.com>","Cc":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Mon, 13 Jul 2026 16:46:22 +0200","Message-ID":"<178395398270.3603632.11912506104395824307@localhost>","User-Agent":"alot/0.12.dev43+g2cacc0d03","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":39698,"web_url":"https://patchwork.libcamera.org/comment/39698/","msgid":"<178404806366.3931061.8402268384814115426@ping.linuxembedded.co.uk>","date":"2026-07-14T16:54:23","subject":"Re: [PATCH v5 21/36] ipa: libipa: lsc: Introduce lsc::ActiveState","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Stefan Klug (2026-07-13 15:46:22)\n> Hi Jacopo,\n> \n> Quoting Jacopo Mondi (2026-07-08 17:51:03)\n> > Introduce the lsc.h and lsc.cpp files with the definition of the\n> > Lsc algorithm active state.\n> > \n> > Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n> \n> This could maybe merged with the next patch.\n\nOh and this one too, but I'd roll both of them into the implementation\nin patch 23.\n\nBut either way if you wish:\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> \n> As you prefer.\n> \n> Reviewed-by: Stefan Klug <stefan.klug@ideasonboard.com>\n> \n> Best regards,\n> Stefan\n> \n> \n> > ---\n> >  src/ipa/libipa/lsc.cpp     | 33 +++++++++++++++++++++++++++++++++\n> >  src/ipa/libipa/lsc.h       | 24 ++++++++++++++++++++++++\n> >  src/ipa/libipa/meson.build |  2 ++\n> >  3 files changed, 59 insertions(+)\n> > \n> > diff --git a/src/ipa/libipa/lsc.cpp b/src/ipa/libipa/lsc.cpp\n> > new file mode 100644\n> > index 000000000000..437666855354\n> > --- /dev/null\n> > +++ b/src/ipa/libipa/lsc.cpp\n> > @@ -0,0 +1,33 @@\n> > +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > +/*\n> > + * Copyright (C) 2026 Ideas on Board Oy\n> > + *\n> > + * libIPA Lsc algorithms\n> > + */\n> > +\n> > +#include \"lsc.h\"\n> > +\n> > +/**\n> > + * \\file lsc.h\n> > + * \\brief libipa LSC algorithm\n> > + */\n> > +\n> > +namespace libcamera {\n> > +\n> > +namespace ipa {\n> > +\n> > +namespace lsc {\n> > +\n> > +/**\n> > + * \\struct ActiveState\n> > + * \\brief The LSC active state\n> > + *\n> > + * \\var ActiveState::enabled\n> > + * \\brief Boolean flag for the LscAlgorithm enable status\n> > + */\n> > +\n> > +} /* namespace lsc */\n> > +\n> > +} /* namespace ipa */\n> > +\n> > +} /* namespace libcamera */\n> > diff --git a/src/ipa/libipa/lsc.h b/src/ipa/libipa/lsc.h\n> > new file mode 100644\n> > index 000000000000..18c9fa25e53a\n> > --- /dev/null\n> > +++ b/src/ipa/libipa/lsc.h\n> > @@ -0,0 +1,24 @@\n> > +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> > +/*\n> > + * Copyright (C) 2026 Ideas on Board Oy\n> > + *\n> > + * libIPA Lsc algorithm\n> > + */\n> > +\n> > +#pragma once\n> > +\n> > +namespace libcamera {\n> > +\n> > +namespace ipa {\n> > +\n> > +namespace lsc {\n> > +\n> > +struct ActiveState {\n> > +       bool enabled;\n> > +};\n> > +\n> > +} /* namespace lsc */\n> > +\n> > +} /* namespace ipa */\n> > +\n> > +} /* namespace libcamera */\n> > diff --git a/src/ipa/libipa/meson.build b/src/ipa/libipa/meson.build\n> > index 95d398d99fd6..42f89d9820fa 100644\n> > --- a/src/ipa/libipa/meson.build\n> > +++ b/src/ipa/libipa/meson.build\n> > @@ -14,6 +14,7 @@ libipa_headers = files([\n> >      'fixedpoint.h',\n> >      'histogram.h',\n> >      'interpolator.h',\n> > +    'lsc.h',\n> >      'lsc_base.h',\n> >      'lsc_polynomial.h',\n> >      'lsc_table.h',\n> > @@ -38,6 +39,7 @@ libipa_sources = files([\n> >      'fixedpoint.cpp',\n> >      'histogram.cpp',\n> >      'interpolator.cpp',\n> > +    'lsc.cpp',\n> >      'lsc_base.cpp',\n> >      'lsc_polynomial.cpp',\n> >      'lsc_table.cpp',\n> > \n> > -- \n> > 2.54.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 6319CC32CE\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 14 Jul 2026 16:54:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 1515066144;\n\tTue, 14 Jul 2026 18:54:28 +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 A057866137\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 14 Jul 2026 18:54:26 +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 61EF9103F;\n\tTue, 14 Jul 2026 18: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=\"MebvFgbu\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1784048012;\n\tbh=OX4Zvkem3FQ9kgzABKxz/Bnekjrm17tfyv2SLfYUWkA=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=MebvFgbuT87B2Np4uqw5UP0XITS1Z2HUDP+GMxdYbDpVu5XPm2We6srEW5J5wozy0\n\tBaa+gpj5JqWcGZThwbxjiiJhsR+d6bTivwsI3v7IdFnfUAHBm2ubQB4Qz9njTjx1eQ\n\tJASxzUl0MxtVVpMOF941r8ENaJh4R1iss/6rFuOk=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<178395398270.3603632.11912506104395824307@localhost>","References":"<20260708-libipa-algorithms-v5-0-0759d0359f52@ideasonboard.com>\n\t<20260708-libipa-algorithms-v5-21-0759d0359f52@ideasonboard.com>\n\t<178395398270.3603632.11912506104395824307@localhost>","Subject":"Re: [PATCH v5 21/36] ipa: libipa: lsc: Introduce lsc::ActiveState","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>","To":"Jacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tStefan Klug <stefan.klug@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","Date":"Tue, 14 Jul 2026 17:54:23 +0100","Message-ID":"<178404806366.3931061.8402268384814115426@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>"}}]