[{"id":28273,"web_url":"https://patchwork.libcamera.org/comment/28273/","msgid":"<CAEmqJPrHAS_a_CYYt-0xSz-16opnp64LhabUqu1K1qB5wyOXrg@mail.gmail.com>","date":"2023-12-07T10:43:53","subject":"Re: [libcamera-devel] [PATCH 1/2] ipa: rpi: black_level: Add an\n\tinitialValues method","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi David,\n\nThank you for your work.\n\nOn Wed, 6 Dec 2023 at 10:38, David Plowman via libcamera-devel\n<libcamera-devel@lists.libcamera.org> wrote:\n>\n> This allows the IPA to discover the correct black level values even\n> before any frames have been processed. This is important on the PiSP\n> platform where the front end black level blocks must be programmed in\n> advance.\n>\n> Signed-off-by: David Plowman <david.plowman@raspberrypi.com>\n\nLooks reasonable to me!\n\nReviewed-by: Naushir Patuck <naush@raspberrypi.com>\n\n> ---\n>  .../rpi/controller/black_level_algorithm.h    | 23 +++++++++++++++++++\n>  src/ipa/rpi/controller/rpi/black_level.cpp    | 10 +++++++-\n>  src/ipa/rpi/controller/rpi/black_level.h      |  6 +++--\n>  3 files changed, 36 insertions(+), 3 deletions(-)\n>  create mode 100644 src/ipa/rpi/controller/black_level_algorithm.h\n>\n> diff --git a/src/ipa/rpi/controller/black_level_algorithm.h b/src/ipa/rpi/controller/black_level_algorithm.h\n> new file mode 100644\n> index 00000000..c2cff2f5\n> --- /dev/null\n> +++ b/src/ipa/rpi/controller/black_level_algorithm.h\n> @@ -0,0 +1,23 @@\n> +/* SPDX-License-Identifier: BSD-2-Clause */\n> +/*\n> + * Copyright (C) 2023, Raspberry Pi Ltd\n> + *\n> + * black_level_algorithm.h - black level control algorithm interface\n> + */\n> +#pragma once\n> +\n> +#include \"algorithm.h\"\n> +\n> +namespace RPiController {\n> +\n> +class BlackLevelAlgorithm : public Algorithm\n> +{\n> +public:\n> +       BlackLevelAlgorithm(Controller *controller)\n> +               : Algorithm(controller) {}\n> +       /* A black level algorithm must provide the following: */\n> +       virtual void initialValues(uint16_t &blackLevelR, uint16_t &blackLevelG,\n> +                                  uint16_t &blackLevelB) = 0;\n> +};\n> +\n> +} /* namespace RPiController */\n> diff --git a/src/ipa/rpi/controller/rpi/black_level.cpp b/src/ipa/rpi/controller/rpi/black_level.cpp\n> index 85baec3f..2e3db51f 100644\n> --- a/src/ipa/rpi/controller/rpi/black_level.cpp\n> +++ b/src/ipa/rpi/controller/rpi/black_level.cpp\n> @@ -22,7 +22,7 @@ LOG_DEFINE_CATEGORY(RPiBlackLevel)\n>  #define NAME \"rpi.black_level\"\n>\n>  BlackLevel::BlackLevel(Controller *controller)\n> -       : Algorithm(controller)\n> +       : BlackLevelAlgorithm(controller)\n>  {\n>  }\n>\n> @@ -45,6 +45,14 @@ int BlackLevel::read(const libcamera::YamlObject &params)\n>         return 0;\n>  }\n>\n> +void BlackLevel::initialValues(uint16_t &blackLevelR, uint16_t &blackLevelG,\n> +                              uint16_t &blackLevelB)\n> +{\n> +       blackLevelR = blackLevelR_;\n> +       blackLevelG = blackLevelG_;\n> +       blackLevelB = blackLevelB_;\n> +}\n> +\n>  void BlackLevel::prepare(Metadata *imageMetadata)\n>  {\n>         /*\n> diff --git a/src/ipa/rpi/controller/rpi/black_level.h b/src/ipa/rpi/controller/rpi/black_level.h\n> index 2403f7f7..d8c41c62 100644\n> --- a/src/ipa/rpi/controller/rpi/black_level.h\n> +++ b/src/ipa/rpi/controller/rpi/black_level.h\n> @@ -6,19 +6,21 @@\n>   */\n>  #pragma once\n>\n> -#include \"../algorithm.h\"\n> +#include \"../black_level_algorithm.h\"\n>  #include \"../black_level_status.h\"\n>\n>  /* This is our implementation of the \"black level algorithm\". */\n>\n>  namespace RPiController {\n>\n> -class BlackLevel : public Algorithm\n> +class BlackLevel : public BlackLevelAlgorithm\n>  {\n>  public:\n>         BlackLevel(Controller *controller);\n>         char const *name() const override;\n>         int read(const libcamera::YamlObject &params) override;\n> +       void initialValues(uint16_t &blackLevelR, uint16_t &blackLevelG,\n> +                          uint16_t &blackLevelB) override;\n>         void prepare(Metadata *imageMetadata) override;\n>\n>  private:\n> --\n> 2.39.2\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 911E2C31E9\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  7 Dec 2023 10:44:32 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D0A1B62B2C;\n\tThu,  7 Dec 2023 11:44:31 +0100 (CET)","from mail-yw1-x112e.google.com (mail-yw1-x112e.google.com\n\t[IPv6:2607:f8b0:4864:20::112e])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A68CE629CC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  7 Dec 2023 11:44:29 +0100 (CET)","by mail-yw1-x112e.google.com with SMTP id\n\t00721157ae682-5cfc3a48ab2so5144147b3.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 07 Dec 2023 02:44:29 -0800 (PST)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1701945871;\n\tbh=IVOSIQLuTi3t47laylrMH9IVcY943IP4Ni35QPGj7fk=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:\n\tFrom;\n\tb=1JIIN6OKXKmOrRKusgJK8ltd959Now8haiw2rb2BtOBLRD5t+Uzos4rbdBuMBqqA7\n\tpVyZNfepBWKE1PVvEG/74gABStQaSv6q3upzMUTTK+RuIRmmeqmKiHGXZ8jbBM3hNM\n\te3+3A/D44UoAtVW/cOtJZ5+btUvko3hsoL8qiOMogLtDhg3zZx5xFPGyMPH2+yM2z0\n\thsfSuZ+wvVAgx6sKcYDCTnYqxrJFe+eq0QH9tYfGLMydQlpz+H5BjCM2OtAZRDwsSZ\n\t95+IKAF6JPht+P8zDPHKPogVUs8AdoDQDuVj0r3Ew9vuPh2hxg2clD/Xx9QXe5f/We\n\trVnILJ9JAqzsA==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1701945868; x=1702550668;\n\tdarn=lists.libcamera.org; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=whN0M1cgKM1V0H0ASUpz0qbCKPPgaVRFn3CPieArd+A=;\n\tb=UxfqxAtxAJG7AuRaiQGdwLBCKDv7TkXh1I6Zb585iT3EuHOAt1q2ie01Sr8qbmn0rg\n\tpbIWJ/s9pUX+rV3SeAsgJUeb7VL3ttgt7Q+OWXfDFlO7p42H5KQct5a2UpkxBBi3ab0J\n\tTFMTU2r0fa/3xvwFeq6lu/ath2PRRs5uY5UUmWBrCNEvEP+53EDdtje3AhtBuKQ2rTt2\n\tBlYk2waBtC+dr59SbgShVsub6DJZbAatlKnP/1fYY0PHJH1i6NadcRiBpJZAIq/Q2/5+\n\tCKrAhnWtY1mG1CPMuEVhZAxV6F1NOerm5tjmvHuXHXVhsZ29Q3KuKX+ydVTgVN+/oOg6\n\tNiQg=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=raspberrypi.com\n\theader.i=@raspberrypi.com\n\theader.b=\"UxfqxAtx\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1701945868; x=1702550668;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=whN0M1cgKM1V0H0ASUpz0qbCKPPgaVRFn3CPieArd+A=;\n\tb=C1p/uykbpenUwUc4ekH0DPtb8IR2nQfYlsyZwQgrzOTVIIQkUMQxtw1mPkXRX5uW1A\n\tL917bMPNhMVsXsWuyRNoYTwA5SJNt38FBLZNsMMIH5dT5Hlm1JZ5o3FyEMMNV7dONSCl\n\tzy/a8TzmZPyzZ4YuG2Nga8yYbQ/5ZIspa1oDpocLhAC6QIA6qSPcS3EPAaDTykQ1r1fy\n\tTTGXfvxX+C0VOWUaFw7C7u/jGYowI15Z90u4Uwy3946uSPZ+8rAROVr+xVGq9mbbRqsT\n\tOloAvsQSx0k3PqTqVWJZ68fRFyiTuwbIpJjx3PjSAdDJigHd4C10e97KpLudAW5NT+lh\n\thaGQ==","X-Gm-Message-State":"AOJu0YyZOo4f0Ph4RxQfmcd+HtI19nMcWT55+AFOBE8iXGbfRPytaPeC\n\tWTvW4eU2GteBiqCDYCsAzCIBAdgzsaSmFffZNCSL4cfkzVtktMvu","X-Google-Smtp-Source":"AGHT+IGRom7RC6MycKIz8cROAIyRb/JRf6+syXloTLILwOb4Tbkw4WKFu0phMKaC7JOZowkbR0EpTNWZ0WTZQf1ig0o=","X-Received":"by 2002:a81:ae26:0:b0:5d7:1941:a9a with SMTP id\n\tm38-20020a81ae26000000b005d719410a9amr2259175ywh.53.1701945868417;\n\tThu, 07 Dec 2023 02:44:28 -0800 (PST)","MIME-Version":"1.0","References":"<20231206103839.16607-1-david.plowman@raspberrypi.com>\n\t<20231206103839.16607-2-david.plowman@raspberrypi.com>","In-Reply-To":"<20231206103839.16607-2-david.plowman@raspberrypi.com>","Date":"Thu, 7 Dec 2023 10:43:53 +0000","Message-ID":"<CAEmqJPrHAS_a_CYYt-0xSz-16opnp64LhabUqu1K1qB5wyOXrg@mail.gmail.com>","To":"David Plowman <david.plowman@raspberrypi.com>","Content-Type":"text/plain; charset=\"UTF-8\"","Subject":"Re: [libcamera-devel] [PATCH 1/2] ipa: rpi: black_level: Add an\n\tinitialValues method","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>","From":"Naushir Patuck via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]