[{"id":19288,"web_url":"https://patchwork.libcamera.org/comment/19288/","msgid":"<88e8186c-49f1-b60a-2c30-5cf2a3268550@ideasonboard.com>","date":"2021-09-02T12:42:27","subject":"Re: [libcamera-devel] [PATCH 4/4] ipa: ipu3: Change Accumulator\n\tstructure layout","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"On 02/09/2021 09:32, Jean-Michel Hautbois wrote:\n> The red, green and blue sums should follow the same philosophy as the\n> IPAFrameContext::awb structure.\n\n\"\"\"\nThe pixel component sums for the Accumulator are inconsistent with other\nsimilar structures such as the IPAFrameContext::awb::gains.\n\"\"\"\n\n> Change the red, green and blue sums to\n> uint64_t which is better as it does not depend on the architecture.\n\"\"\"\nGroup the red, green, and blue sums together in a struct and store them\nas uint64_t to reduce potential architectural differences.\n\"\"\"\n\nTake anything you prefer.\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\n> Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n> ---\n>  src/ipa/ipu3/algorithms/awb.cpp | 24 ++++++++++++------------\n>  src/ipa/ipu3/algorithms/awb.h   |  8 +++++---\n>  2 files changed, 17 insertions(+), 15 deletions(-)\n> \n> diff --git a/src/ipa/ipu3/algorithms/awb.cpp b/src/ipa/ipu3/algorithms/awb.cpp\n> index 9b2cbba7..ea567f96 100644\n> --- a/src/ipa/ipu3/algorithms/awb.cpp\n> +++ b/src/ipa/ipu3/algorithms/awb.cpp\n> @@ -41,13 +41,13 @@ static constexpr uint32_t kMinGreenLevelInZone = 32;\n>   * \\var Accumulator::total\n>   * \\brief Total number of regions in the zone\n>   *\n> - * \\var Accumulator::rSum\n> + * \\var Accumulator::sum::red\n>   * \\brief Sum of the red values in the zone\n>   *\n> - * \\var Accumulator::gSum\n> + * \\var Accumulator::sum::green\n>   * \\brief Sum of the green values in the zone\n>   *\n> - * \\var Accumulator::bSum\n> + * \\var Accumulator::sum::blue\n>   * \\brief Sum of the blue values in the zone\n>   */\n>  \n> @@ -172,10 +172,10 @@ void Awb::generateZones(std::vector<RGB> &zones)\n>  \t\tRGB zone;\n>  \t\tdouble counted = awbStats_[i].counted;\n>  \t\tif (counted >= kMinZonesCounted) {\n> -\t\t\tzone.G = awbStats_[i].gSum / counted;\n> +\t\t\tzone.G = awbStats_[i].sum.green / counted;\n>  \t\t\tif (zone.G >= kMinGreenLevelInZone) {\n> -\t\t\t\tzone.R = awbStats_[i].rSum / counted;\n> -\t\t\t\tzone.B = awbStats_[i].bSum / counted;\n> +\t\t\t\tzone.R = awbStats_[i].sum.red / counted;\n> +\t\t\t\tzone.B = awbStats_[i].sum.blue / counted;\n>  \t\t\t\tzones.push_back(zone);\n>  \t\t\t}\n>  \t\t}\n> @@ -212,9 +212,9 @@ void Awb::generateAwbStats(const ipu3_uapi_stats_3a *stats,\n>  \t\t\t\t/* The cell is not saturated, use the current cell */\n>  \t\t\t\tawbStats_[awbRegionPosition].counted++;\n>  \t\t\t\tuint32_t greenValue = currentCell->greenRedAvg + currentCell->greenBlueAvg;\n> -\t\t\t\tawbStats_[awbRegionPosition].gSum += greenValue / 2;\n> -\t\t\t\tawbStats_[awbRegionPosition].rSum += currentCell->redAvg;\n> -\t\t\t\tawbStats_[awbRegionPosition].bSum += currentCell->blueAvg;\n> +\t\t\t\tawbStats_[awbRegionPosition].sum.green += greenValue / 2;\n> +\t\t\t\tawbStats_[awbRegionPosition].sum.red += currentCell->redAvg;\n> +\t\t\t\tawbStats_[awbRegionPosition].sum.blue += currentCell->blueAvg;\n>  \t\t\t}\n>  \t\t}\n>  \t}\n> @@ -223,9 +223,9 @@ void Awb::generateAwbStats(const ipu3_uapi_stats_3a *stats,\n>  void Awb::clearAwbStats()\n>  {\n>  \tfor (unsigned int i = 0; i < kAwbStatsSizeX * kAwbStatsSizeY; i++) {\n> -\t\tawbStats_[i].bSum = 0;\n> -\t\tawbStats_[i].rSum = 0;\n> -\t\tawbStats_[i].gSum = 0;\n> +\t\tawbStats_[i].sum.blue = 0;\n> +\t\tawbStats_[i].sum.red = 0;\n> +\t\tawbStats_[i].sum.green = 0;\n>  \t\tawbStats_[i].counted = 0;\n>  \t\tawbStats_[i].total = 0;\n>  \t}\n> diff --git a/src/ipa/ipu3/algorithms/awb.h b/src/ipa/ipu3/algorithms/awb.h\n> index 13490b07..23f3e872 100644\n> --- a/src/ipa/ipu3/algorithms/awb.h\n> +++ b/src/ipa/ipu3/algorithms/awb.h\n> @@ -36,9 +36,11 @@ struct Ipu3AwbCell {\n>  struct Accumulator {\n>  \tunsigned int counted;\n>  \tunsigned int total;\n> -\tunsigned long long rSum;\n> -\tunsigned long long gSum;\n> -\tunsigned long long bSum;\n> +\tstruct {\n> +\t\tuint64_t red;\n> +\t\tuint64_t green;\n> +\t\tuint64_t blue;\n> +\t} sum;\n>  };\n>  \n>  class Awb : public Algorithm\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 EFFE1BDC71\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  2 Sep 2021 12:42:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 70DFD69166;\n\tThu,  2 Sep 2021 14:42:32 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 61EFF60255\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  2 Sep 2021 14:42:30 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net [86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DEA37317;\n\tThu,  2 Sep 2021 14:42: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=\"QTeHiqgD\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1630586550;\n\tbh=sxrQPfr1YH2zWm8mqoe64zpOE+4OlbGrNtHdgHDfS1k=;\n\th=To:References:From:Subject:Date:In-Reply-To:From;\n\tb=QTeHiqgDQsgaN3THziecQ9ribALRc6LfNOKPGz/MFDYZxtr/UN+hNhwAmLw4Ak+FT\n\t+ZGzkUYyebp+zvrFGM10IDdbRYBWZ0AUk5p37ieeRugKwlXDaZR0nEBtneLcAc//WY\n\ter3r8DnV5ssnvonyi51RcSCCz0HgWMZai8/mK0rI=","To":"Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20210902083207.33976-1-jeanmichel.hautbois@ideasonboard.com>\n\t<20210902083207.33976-5-jeanmichel.hautbois@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<88e8186c-49f1-b60a-2c30-5cf2a3268550@ideasonboard.com>","Date":"Thu, 2 Sep 2021 13:42:27 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101\n\tThunderbird/78.11.0","MIME-Version":"1.0","In-Reply-To":"<20210902083207.33976-5-jeanmichel.hautbois@ideasonboard.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH 4/4] ipa: ipu3: Change Accumulator\n\tstructure layout","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>"}}]