[{"id":36781,"web_url":"https://patchwork.libcamera.org/comment/36781/","msgid":"<176294086415.567526.3819241629974173682@ping.linuxembedded.co.uk>","date":"2025-11-12T09:47:44","subject":"Re: [RFC PATCH 4/7] libcamera: ipa: simple: Rename \"ccm\" identifiers\n\tnot specific to CCM","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Quoting Milan Zamazal (2025-11-12 08:27:12)\n> Let's rename the identifiers that are related to general colour\n> corrections applied by matrix operations, rather than directly to the\n> sensor colour correction matrix.\n\nThis seems reasonable. But now I'm trying to think about what the terms\nare defined as.\n\n\nsrc/libcamera/control_ids_core.yaml:\n  - ColourCorrectionMatrix:\n      type: float\n      direction: inout\n      description: |\n        The 3x3 matrix that converts camera RGB to sRGB within the imaging\n        pipeline.\n\n        This should describe the matrix that is used after pixels have been\n        white-balanced, but before any gamma transformation. The 3x3 matrix is\n        stored in conventional reading order in an array of 9 floating point\n        values.\n\n        ColourCorrectionMatrix can only be applied in a Request when the AWB is\n        disabled.\n\n        \\sa AwbEnable\n        \\sa ColourTemperature\n      size: [3,3]\n\nAre we reporting/referencing this correctly?\n\n\n\n> Signed-off-by: Milan Zamazal <mzamazal@redhat.com>\n> ---\n>  src/ipa/simple/algorithms/lut.cpp | 28 ++++++++++++++--------------\n>  src/ipa/simple/algorithms/lut.h   |  2 +-\n>  2 files changed, 15 insertions(+), 15 deletions(-)\n> \n> diff --git a/src/ipa/simple/algorithms/lut.cpp b/src/ipa/simple/algorithms/lut.cpp\n> index dead55f34..b27491042 100644\n> --- a/src/ipa/simple/algorithms/lut.cpp\n> +++ b/src/ipa/simple/algorithms/lut.cpp\n> @@ -80,7 +80,7 @@ void Lut::updateGammaTable(IPAContext &context)\n>         context.activeState.gamma.contrast = contrast;\n>  }\n>  \n> -int16_t Lut::ccmValue(unsigned int i, float ccm) const\n> +int16_t Lut::matrixValue(unsigned int i, float ccm) const\n>  {\n>         return std::round(i * ccm);\n>  }\n> @@ -120,23 +120,23 @@ void Lut::prepare(IPAContext &context,\n>                 }\n>  \n>         } else if (context.activeState.matrixChanged || gammaUpdateNeeded) {\n> -               Matrix<float, 3, 3> gainCcm = { { gains.r(), 0, 0,\n> -                                                 0, gains.g(), 0,\n> -                                                 0, 0, gains.b() } };\n> -               auto ccm = context.activeState.ccm * gainCcm;\n> +               Matrix<float, 3, 3> gainMatrix = { { gains.r(), 0, 0,\n> +                                                    0, gains.g(), 0,\n> +                                                    0, 0, gains.b() } };\n> +               auto matrix = context.activeState.ccm * gainMatrix;\n>                 auto &red = params->redCcm;\n>                 auto &green = params->greenCcm;\n>                 auto &blue = params->blueCcm;\n>                 for (unsigned int i = 0; i < DebayerParams::kRGBLookupSize; i++) {\n> -                       red[i].r = ccmValue(i, ccm[0][0]);\n> -                       red[i].g = ccmValue(i, ccm[1][0]);\n> -                       red[i].b = ccmValue(i, ccm[2][0]);\n> -                       green[i].r = ccmValue(i, ccm[0][1]);\n> -                       green[i].g = ccmValue(i, ccm[1][1]);\n> -                       green[i].b = ccmValue(i, ccm[2][1]);\n> -                       blue[i].r = ccmValue(i, ccm[0][2]);\n> -                       blue[i].g = ccmValue(i, ccm[1][2]);\n> -                       blue[i].b = ccmValue(i, ccm[2][2]);\n> +                       red[i].r = matrixValue(i, matrix[0][0]);\n> +                       red[i].g = matrixValue(i, matrix[1][0]);\n> +                       red[i].b = matrixValue(i, matrix[2][0]);\n> +                       green[i].r = matrixValue(i, matrix[0][1]);\n> +                       green[i].g = matrixValue(i, matrix[1][1]);\n> +                       green[i].b = matrixValue(i, matrix[2][1]);\n> +                       blue[i].r = matrixValue(i, matrix[0][2]);\n> +                       blue[i].g = matrixValue(i, matrix[1][2]);\n> +                       blue[i].b = matrixValue(i, matrix[2][2]);\n>                         params->gammaLut[i] = gammaTable[i / div];\n>                 }\n>                 context.activeState.matrixChanged = false;\n> diff --git a/src/ipa/simple/algorithms/lut.h b/src/ipa/simple/algorithms/lut.h\n> index ba8b9021b..0eafd0695 100644\n> --- a/src/ipa/simple/algorithms/lut.h\n> +++ b/src/ipa/simple/algorithms/lut.h\n> @@ -38,7 +38,7 @@ public:\n>  \n>  private:\n>         void updateGammaTable(IPAContext &context);\n> -       int16_t ccmValue(unsigned int i, float ccm) const;\n> +       int16_t matrixValue(unsigned int i, float ccm) const;\n>  };\n>  \n>  } /* namespace ipa::soft::algorithms */\n> -- \n> 2.51.1\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 AD92EC3241\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 12 Nov 2025 09:47:49 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E5BD2609D8;\n\tWed, 12 Nov 2025 10:47:48 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id D9C74606E6\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 12 Nov 2025 10:47:46 +0100 (CET)","from pendragon.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 84AC282E;\n\tWed, 12 Nov 2025 10:45:47 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"DbjgJVfs\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1762940747;\n\tbh=cAYmCoLjA8CY4GWHB9LhdiT51G/fmI/2IV8q1xyBF1s=;\n\th=In-Reply-To:References:Subject:From:Cc:To:Date:From;\n\tb=DbjgJVfs562MTCdCeG2WCUJ62pLUsbZjzEXyBDq9YzfdJqLulXIpW73rO1qtF85+X\n\tGLp6OCdgmUt/Ty4CZ/Ta51Nn6h0vA5k4FJC8ufYcylx6H89iz5+nrXSMJShmUduZnh\n\tSUK8r2tDoOI7SSJLiKpUaa7ZdFMJyJ4yR6ztTtM4=","Content-Type":"text/plain; charset=\"utf-8\"","MIME-Version":"1.0","Content-Transfer-Encoding":"quoted-printable","In-Reply-To":"<20251112082715.17823-5-mzamazal@redhat.com>","References":"<20251112082715.17823-1-mzamazal@redhat.com>\n\t<20251112082715.17823-5-mzamazal@redhat.com>","Subject":"Re: [RFC PATCH 4/7] libcamera: ipa: simple: Rename \"ccm\" identifiers\n\tnot specific to CCM","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"Milan Zamazal <mzamazal@redhat.com>","To":"Milan Zamazal <mzamazal@redhat.com>, libcamera-devel@lists.libcamera.org","Date":"Wed, 12 Nov 2025 09:47:44 +0000","Message-ID":"<176294086415.567526.3819241629974173682@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>"}}]