From patchwork Thu Jun 16 08:07:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Sylvestre X-Patchwork-Id: 16227 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id DC4D6C3273 for ; Thu, 16 Jun 2022 08:07:54 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 4EF0F65639; Thu, 16 Jun 2022 10:07:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1655366873; bh=euV/yF39BpOuZjaJiVY+D+yithOOLhpNiqE2vnFqKmk=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=wpUeRqrWZwYTPBeY2SJmERPr3VbEPjSIqznbMtoBzlAf+cM5SaxAoENtWIbGteZd0 0fGlTW1vgNH/6xm64bx4v3QePslBRd0Kex3CREM3qlKdQqihv/I9JYifGm2oe+hHdq Ry87tolIpTWIRw975zLuEV6kPZItLwa+Qrl/GVvtmrvwugdg3jv66XpD/r7GPt55+1 cYAaUtnJKC1d64TXu6KNQNAXzob+/w+9fxH54bY0osRXNT86NiaWisbgVXvNDjTKPg BSGlCvq79Z0QjC6LslAdbuqEvGud8idheCNxXqpfkVvI2sKFgTL7kzwE7rgqoTDX1S 9vkyZCh1nG5TA== Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 3983165631 for ; Thu, 16 Jun 2022 10:07:52 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=baylibre-com.20210112.gappssmtp.com header.i=@baylibre-com.20210112.gappssmtp.com header.b="nYFHuv26"; dkim-atps=neutral Received: by mail-wr1-x42c.google.com with SMTP id o16so793691wra.4 for ; Thu, 16 Jun 2022 01:07:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CICC5cmHc9FKneMsR0VtXcUkA4dvYwBf2I3BKGorhfM=; b=nYFHuv26jQFLi7bRzFs4GsgMfm8WqnCPud8PKSW7o+LWztaitV1/l+jMazNQ57so+M e+jHtaqG/FJcqo5gytJEo1whDR7zqfFBVMUrxBGqpt/dQxu26fSSpxU8VeaJLIXwYb7v 9fdOuFz3kgZjN+64b5OZfVdHrfAXuxA+HQOEvmk3fe/waf/WVYZobrgPNO5QfTIakonp sa92cN8qn4ZnFkeJZHdrHYrQBqLLrE72AC3Gdk772f2TlzQ9LPegH/bJp9oJwLSoq8UL iUJJHYBqFYL5uwyI0LySzSTXDqP7S0HZeKpQM2tOpajqewcC7IPcLbG4rCnVfm2/nVOc QbvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CICC5cmHc9FKneMsR0VtXcUkA4dvYwBf2I3BKGorhfM=; b=glampjfant9CGUyQORgXr3nZw5h6R96P1oT29hPU6awMN3bdqErWXaB6RJM/W0ypry Z2PJ7qN7V3W6WPcA7USKYPC/ovllqlZl2dvZAHZM5yWbxd2d3zlnwhDmRDemr/HJ9xLB 0M+PLxLPjumBWZEoiMz7gHPvO9WQNfBD1yOBX/IklPw6QyTSwhgjwaP72e8qahI0PyYG vzHfry59XsUJwLlcU3qab0vRJadRa6FZOS9KsJlx0dOQNJ1VL8w5qyyeujPM6fPZe8bH hUShCFJMtQ7tem8imd+vlQH7UAh7kN92j0U4dmLjydhT2iVKZ6lX8oLp8mwnhKUhMykX wJ9Q== X-Gm-Message-State: AJIora8o4wPbGnuSGyIlopeSVJArPL7GOzrgn2WAwtp1vypoZShXjwpC c4Gb+tQxfhfEXsN+CViW91SaMIg82PW2HA== X-Google-Smtp-Source: AGRyM1uxt2lpJVZ8JDd3fLpYHvLI/hPw7BNor+bFkLo+P1gMtAJSPbY7/NdxMGbwsFulmI0ar+LVrw== X-Received: by 2002:a5d:6608:0:b0:21a:374d:786a with SMTP id n8-20020a5d6608000000b0021a374d786amr1298994wru.418.1655366871456; Thu, 16 Jun 2022 01:07:51 -0700 (PDT) Received: from localhost.localdomain (lfbn-nic-1-76-188.w2-15.abo.wanadoo.fr. [2.15.166.188]) by smtp.gmail.com with ESMTPSA id r15-20020adff70f000000b002185d79dc7fsm1098868wrp.75.2022.06.16.01.07.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jun 2022 01:07:50 -0700 (PDT) To: libcamera-devel@lists.libcamera.org Date: Thu, 16 Jun 2022 10:07:40 +0200 Message-Id: <20220616080744.548995-2-fsylvestre@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220616080744.548995-1-fsylvestre@baylibre.com> References: <20220616080744.548995-1-fsylvestre@baylibre.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 1/5] pipeline: rkisp1: Support IPA tuning file X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Sylvestre via libcamera-devel From: Florian Sylvestre Reply-To: Florian Sylvestre Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Allow the usage of a Yaml IPA tuning file that is either defined by the sensor name (sensor_name.yaml) or defined by LIBCAMERA_RKISP1_TUNING_FILE environment variable. Signed-off-by: Florian Sylvestre Reviewed-by: Laurent Pinchart Reviewed-by: Paul Elder --- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index 4b3d2cf7..96bf09e3 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -322,7 +322,18 @@ int RkISP1CameraData::loadIPA(unsigned int hwRevision) ipa_->paramsBufferReady.connect(this, &RkISP1CameraData::paramFilled); ipa_->metadataReady.connect(this, &RkISP1CameraData::metadataReady); - int ret = ipa_->init(IPASettings{ "", sensor_->model() }, hwRevision); + /* + * The API tuning file is made from the sensor name unless + * the environment variable overrides it. + */ + std::string IPATunigFile; + char const *configFromEnv = utils::secure_getenv("LIBCAMERA_RKISP1_TUNING_FILE"); + if (!configFromEnv || *configFromEnv == '\0') + IPATunigFile = ipa_->configurationFile(sensor_->model() + ".yaml"); + else + IPATunigFile = std::string(configFromEnv); + + int ret = ipa_->init({ IPATunigFile, sensor_->model() }, hwRevision); if (ret < 0) { LOG(RkISP1, Error) << "IPA initialization failure"; return ret; From patchwork Thu Jun 16 08:07:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Sylvestre X-Patchwork-Id: 16228 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 4B094C3274 for ; Thu, 16 Jun 2022 08:07:56 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id E0F416563D; Thu, 16 Jun 2022 10:07:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1655366875; bh=mKpHoFfV64VGexcpLK0gb5z1fIXoctrjxcICAwg8FU8=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=AYmM+YAgnVqDi2vkFpLljky/wURET8b/znppXrV7XRgDoYO/6TySRn0YPmqTwrSUD /tufSedTNGJ3Dd0IUtYh0oQp2uuqwe1IFmaSgN7tWtkS7/OtKyH2gSG2ziFQZ2zE2R JJxWWIJRrvEXjB1+1DWAEYLZcBm7UrUCH9qamsCKcI9fmVflowItAqYRwOepBI5vYh nAl/TPwK1eQLgfh+6q/0lN1hyMKhvT9Vssmwt84EiCBd41J1EuSchM8cCors4LQOBz NQFIO/caSNg4I1fxUyXUnuRCIPYgu4cfNZ0rGivtlW87IwBuHKF8JTHJD4oRvn/ftw 11ZOWIdAsEBVQ== Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 28A2A65633 for ; Thu, 16 Jun 2022 10:07:53 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=baylibre-com.20210112.gappssmtp.com header.i=@baylibre-com.20210112.gappssmtp.com header.b="fjrIeahP"; dkim-atps=neutral Received: by mail-wr1-x42f.google.com with SMTP id x17so786586wrg.6 for ; Thu, 16 Jun 2022 01:07:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ru/NqCJop3F1vdmAQuOmH9+eNXjRCb0fqLfgUpvBwiY=; b=fjrIeahPeLVqqi63z6nfczKPr32IHo85F7xp8EdSQHkX0tpGVDxbR6HYi9RUqQ7quO hMlOf0ou365VWQXCj6/omVbnyOTX2ovncoxC+jMU6nlLzjfV+s8t/WB/diY79/OxHyNO OLCkg4rkS4jSNapb8tNMzhK8OLx1Np3Ouqz99oFGHf8fECPi90eePdPFACRJtc70Ajho 4dcVGwq2J0ejvgaQLObWN6y53gStsmXj9gQg+z9mSmNgePS5TglIaFxlE4qROOYoA8Pm 2r/0k/IE+pSPxQpoQbasTIfmNdXfe9Vx62g/G2c6shqRlDXZcjGHGRsTpYeq7KlfBQ+Z Yj4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ru/NqCJop3F1vdmAQuOmH9+eNXjRCb0fqLfgUpvBwiY=; b=VtzKzB3lHKrlSN+KFyBtGayYAGz210Gr8b+WTGErTigrZGFv8AVJOgXOXhC2gu1oE9 yLjBUcbiqOFzJJVcqmA9P/8QBL/lQMfehwaGLug55rfKlQhLBydHH4I/XIUP7Edt/qRK +SN3nRt5IOVNL+mU7HNBXXGrXrp1309P0OHnxkLaAXVroizCfc3y1k7Vhx7ZMBZGiucM RYTxuf+wyKALC380ZgddP26HTkxxb08Y9oOgOJjuRUmzvxePq83SVA7BQ3G1PsGNDh1i PKtvisHqZtX2bUoA126GoGmXGzxE4B6xl8sGcJGwDVgk5/FQIwoQNKEX4T0+tEbKKiSB b8HA== X-Gm-Message-State: AJIora/hQZAAEg138CIazsHqXhd9BMdGpyXeGWFWdmqxnKvpeEUVuW7c 4V8atUzlxsR5xZQ8BTWKnzizH0CCAzCY/A== X-Google-Smtp-Source: AGRyM1sN6flOP+sYmvU45y9RUnWlB9wOUrv8kMC47k3diwlJeqy8dL/xo07Y2Z8GJsBOdn5XaNPpYw== X-Received: by 2002:a5d:5243:0:b0:216:ca0:58e9 with SMTP id k3-20020a5d5243000000b002160ca058e9mr3425539wrc.318.1655366872488; Thu, 16 Jun 2022 01:07:52 -0700 (PDT) Received: from localhost.localdomain (lfbn-nic-1-76-188.w2-15.abo.wanadoo.fr. [2.15.166.188]) by smtp.gmail.com with ESMTPSA id r15-20020adff70f000000b002185d79dc7fsm1098868wrp.75.2022.06.16.01.07.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jun 2022 01:07:51 -0700 (PDT) To: libcamera-devel@lists.libcamera.org Date: Thu, 16 Jun 2022 10:07:41 +0200 Message-Id: <20220616080744.548995-3-fsylvestre@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220616080744.548995-1-fsylvestre@baylibre.com> References: <20220616080744.548995-1-fsylvestre@baylibre.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 2/5] ipa: libipa: Add init() function to the Algorithm class X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Sylvestre via libcamera-devel From: Florian Sylvestre Reply-To: Florian Sylvestre Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Add the init() function that will be called during algorithm initialization to provide each algorithm the list of algorithms tuning data. Each algorithm will be responsible to grab their corresponding parameters. Signed-off-by: Florian Sylvestre Reviewed-by: Laurent Pinchart --- src/ipa/ipu3/algorithms/algorithm.h | 4 +++- src/ipa/libipa/algorithm.cpp | 16 ++++++++++++++++ src/ipa/libipa/algorithm.h | 10 +++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/ipa/ipu3/algorithms/algorithm.h b/src/ipa/ipu3/algorithms/algorithm.h index d2eecc78..32cdfe52 100644 --- a/src/ipa/ipu3/algorithms/algorithm.h +++ b/src/ipa/ipu3/algorithms/algorithm.h @@ -15,9 +15,11 @@ namespace libcamera { +class YamlObject; + namespace ipa::ipu3 { -using Algorithm = libcamera::ipa::Algorithm; +using Algorithm = libcamera::ipa::Algorithm; } /* namespace ipa::ipu3 */ diff --git a/src/ipa/libipa/algorithm.cpp b/src/ipa/libipa/algorithm.cpp index 398d5372..3424610b 100644 --- a/src/ipa/libipa/algorithm.cpp +++ b/src/ipa/libipa/algorithm.cpp @@ -29,6 +29,22 @@ namespace ipa { * to manage algorithms regardless of their specific type. */ +/** + * \fn Algorithm::init() + * \brief Configure the Algorithm with default parameters + * \param[in] context The shared IPA context + * \param[in] params The initial parameters used to tune algorithms + * + * This function is called once before the camera is running to get default + * algorithm parameters. + * This function is called once, when the IPA module is initialized, to + * initialize the algorithm. The \a params YamlObject contains IPA module + * parameters, typically tuning data for all algorithms. The Algorithm is + * responsible for reading the parameters relevant to its configuration. + * + * \return 0 if successful, an error code otherwise + */ + /** * \fn Algorithm::configure() * \brief Configure the Algorithm given an IPAConfigInfo diff --git a/src/ipa/libipa/algorithm.h b/src/ipa/libipa/algorithm.h index 766aee5d..f5be1caf 100644 --- a/src/ipa/libipa/algorithm.h +++ b/src/ipa/libipa/algorithm.h @@ -10,12 +10,20 @@ namespace libcamera { namespace ipa { -template +template + class Algorithm { public: virtual ~Algorithm() {} + virtual int init([[maybe_unused]] Context &context, + [[maybe_unused]] const TuningData *params) + { + return 0; + } + virtual int configure([[maybe_unused]] Context &context, [[maybe_unused]] const Config &configInfo) { From patchwork Thu Jun 16 08:07:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Sylvestre X-Patchwork-Id: 16229 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id CA542C3275 for ; Thu, 16 Jun 2022 08:07:57 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id DF62565645; Thu, 16 Jun 2022 10:07:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1655366877; bh=vnYSNDQHOKIhU1gElZNiSQ2r48X1go8FWIhaImWyeXM=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=FnnaBRUrJ+DpqfgmEwouj6HevVf7wVhX7ghc1EXJPhOt5CQOz3ee5w8gIhG0YIzfk 2pdZ8hPRSACm/cPqZZUsL9X/UfZJr0pN2u0F1kvaZ1FMnKIi3ZivlV19Rhf0XnPDku OmqiMiTrrWkoE9lxD/KLeomkwim2rRHCmdRPxe9qqIiH7vHZ4G7aXA0bt2WYj0sbuQ P9HFq0Otjht/DvpUck0HXN/2IaaFu9Oe7tAj8HnoYCCmed8NAusufDTSwh3Joa/+Gl GmGgajyZleKyI3wv306KYL/eFsC9khlwsq3jVoO0pTyOBOUQD2VXTXeaoVbaoavWMb ZONHlbmPaEmIA== Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 595B665637 for ; Thu, 16 Jun 2022 10:07:54 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=baylibre-com.20210112.gappssmtp.com header.i=@baylibre-com.20210112.gappssmtp.com header.b="JLpjcah7"; dkim-atps=neutral Received: by mail-wr1-x42d.google.com with SMTP id o8so800585wro.3 for ; Thu, 16 Jun 2022 01:07:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vgEEmymPeEjD8DAld95kVyKLl/rN6osiT4A3Ym5kvPg=; b=JLpjcah7lc0/BMKcX9A82ydQega8AY9LMafcoZR9ba8kwC/+bMb0SAYcTM8vz1jzSw OoCbSCpCGPtQa7dkhDRD46kVo4jQpDTVU4utbyfnydgpTdrKR6XtHITM6YYH0Tbp1xBu +iHS1Xk0fFfku77y65GW4lQLsFJDik0baEtUfHhRnJUFMDz0e2Ch/8jsKDWY6gdRnSY3 f1yH3f/aBxl9NTPHI9uobdTJdgX/zTAROTIfX36D3U7s22IztxOAqklfgAs0na4JzDyv bFNw9W26V85IxDMDm+2cXxekuHP4cMEIe+VSzqLN9m7GJR0/iEgPi8Rz8msEQAKSgXQo iZVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vgEEmymPeEjD8DAld95kVyKLl/rN6osiT4A3Ym5kvPg=; b=xPKfuRZ6gbivHHKWLqkRDHwb34wR8c1Gmucr5UWMygCr7Y/POkBlhdI2puDL/tZ7W/ Tkrq9i9dF2mgrBgd0t0q/hYv0RLIVY0qKdY/UelIiAFKxOJkLKXKp4ge8lYr+JT/mgG3 ND7u3x4rTXzCrRdTvMXcxp8FAAxkFRJ+1AjmxZZCmg9EDurBkot25VXL+4XeeqckgOpG IZrCrHcZyyTReDgWz5DV0YR/ajZwwVUcPy2+hvUwB2XnnkucFj1BanV1zrhm6tzp0ANJ ynhCVWuKcS8yIYEJ1jroQp+UZumCRWK1CUcPVzglcb3nGnp4vS7pu1Lw732QZzugpzek ytZw== X-Gm-Message-State: AJIora+thXc8pF7UXehe4xZIda9Al1TlGnUHgSjzHCBkqZ/kY3PvrOf2 alv4X3oZALexJco06y/eaISGap2wY5oWNg== X-Google-Smtp-Source: AGRyM1s6mSD0TqUVqoCTT502rF4JGbwahkXxLXWFAU2sHyIFbX0NKQOgHkg783HyzzfM0qEwKC2D3w== X-Received: by 2002:a05:6000:184f:b0:218:555e:6b69 with SMTP id c15-20020a056000184f00b00218555e6b69mr3459055wri.562.1655366873653; Thu, 16 Jun 2022 01:07:53 -0700 (PDT) Received: from localhost.localdomain (lfbn-nic-1-76-188.w2-15.abo.wanadoo.fr. [2.15.166.188]) by smtp.gmail.com with ESMTPSA id r15-20020adff70f000000b002185d79dc7fsm1098868wrp.75.2022.06.16.01.07.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jun 2022 01:07:53 -0700 (PDT) To: libcamera-devel@lists.libcamera.org Date: Thu, 16 Jun 2022 10:07:42 +0200 Message-Id: <20220616080744.548995-4-fsylvestre@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220616080744.548995-1-fsylvestre@baylibre.com> References: <20220616080744.548995-1-fsylvestre@baylibre.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 3/5] ipa: rkisp1: Add Yaml tuning file support X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Sylvestre via libcamera-devel From: Florian Sylvestre Reply-To: Florian Sylvestre Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Retrieve root node in Yaml tuning file and provide to each algorithm this YamlObject to allow them to grab their default parameters by calling init() function. Signed-off-by: Florian Sylvestre --- src/ipa/rkisp1/algorithms/algorithm.h | 4 ++- src/ipa/rkisp1/rkisp1.cpp | 35 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/ipa/rkisp1/algorithms/algorithm.h b/src/ipa/rkisp1/algorithms/algorithm.h index d46c3188..5b95fd30 100644 --- a/src/ipa/rkisp1/algorithms/algorithm.h +++ b/src/ipa/rkisp1/algorithms/algorithm.h @@ -17,9 +17,11 @@ namespace libcamera { +class YamlObject; + namespace ipa::rkisp1 { -using Algorithm = libcamera::ipa::Algorithm; +using Algorithm = libcamera::ipa::Algorithm; } /* namespace ipa::rkisp1 */ diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp index 23cb95b5..6cc501a9 100644 --- a/src/ipa/rkisp1/rkisp1.cpp +++ b/src/ipa/rkisp1/rkisp1.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include @@ -24,6 +25,7 @@ #include #include +#include #include "algorithms/agc.h" #include "algorithms/algorithm.h" @@ -61,6 +63,7 @@ public: private: void setControls(unsigned int frame); void prepareMetadata(unsigned int frame, unsigned int aeState); + int parseConfigurationFile(File &file); std::map buffers_; std::map mappedBuffers_; @@ -126,6 +129,38 @@ int IPARkISP1::init(const IPASettings &settings, unsigned int hwRevision) algorithms_.push_back(std::make_unique()); algorithms_.push_back(std::make_unique()); + /* Load the tuning file for this sensor. */ + File file(settings.configurationFile.c_str()); + if (!file.open(File::OpenModeFlag::ReadOnly)) { + int ret = file.error(); + LOG(IPARkISP1, Error) << "Failed to open configuration file " + << settings.configurationFile << ": " << strerror(-ret); + return ret; + } + + int ret = parseConfigurationFile(file); + if (ret) + return -EINVAL; + + return 0; +} + +int IPARkISP1::parseConfigurationFile(File &file) +{ + std::unique_ptr root = YamlParser::parse(file); + if (!root) + return -EINVAL; + + if (!root->isDictionary()) + return -EINVAL; + + /* Allow each algo to get parameters from configuration file. */ + for (auto const &algo : algorithms_) { + int ret = algo->init(context_, root.get()); + if (ret) + return ret; + } + return 0; } From patchwork Thu Jun 16 08:07:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Sylvestre X-Patchwork-Id: 16230 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 6740CC3276 for ; Thu, 16 Jun 2022 08:07:59 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id C9CA265641; Thu, 16 Jun 2022 10:07:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1655366878; bh=A30TSfEQWAvmMgeWpCg8k0fmAFMQVfN919s2hep5/tA=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=Kw18CTTtTBZvE44Di5fUsbRv+YvtxzRxK9qhZ/L6jrcpAzB7WOPvU//lIxn8+DZ37 ssEnLFiFIvUT50jYPFryLn9GnwzBHI1tqlIs1m2Fe0rU0wEu1qv4C/E6t47ac9HoqR vRTSHmoRTdGqYZY45drbt5Y5XMZCweqnbEew6XmR9ohOPs7zuXGzgrC+3206udI3CZ 3trH8mfKO2hmM439ugkQ8qm/ahPF09qQzjEGMWDbRj/2I+mJ1HUkTLNjyheW55MY4C AqHigXlWHSfkR6677qFBSYKpTGnJXl9bcqMHU5wwF/uu01Q4vwKSzkk7dBljqwEK69 CwQ1q2e1vffQQ== Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 6CA6565635 for ; Thu, 16 Jun 2022 10:07:55 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=baylibre-com.20210112.gappssmtp.com header.i=@baylibre-com.20210112.gappssmtp.com header.b="Tz2oWBhR"; dkim-atps=neutral Received: by mail-wr1-x42a.google.com with SMTP id c21so804560wrb.1 for ; Thu, 16 Jun 2022 01:07:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lJfZdZg2a8ZwVKJYUOeGes9Vy/2r6KIGjKy4QIP7/ko=; b=Tz2oWBhRLtsLPuPZwYPvOI8KTjwxGKt5Dh67wNLqDFye0IGqF4xwffssRqWguBUTu9 I8CnwpIQJjo/isZuR2TrdM4T/dMlROzJiN6EmFCLqctMHHfz4NAXOpv5cGgiVdEEBQ0u nWg8WzjxoQoew8Ez9HEg7EiLzBnQQoS8N+cL6dNq9kkpRjTuvW5R9B9Rk8iOz7voH6FD BjfZ8UmCCrOjSFMUGF9GcQdnhlRGEyRO49rRbREQ6dNtFm++NCfR6RcZa4bd9DrKzPtv 9tE5zPi4WvD463a6A8z7XM70nRRkL/R0x6JL5Z20fYnmIQB2TGXDI5wXuAkmFPtrV6MH hH0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lJfZdZg2a8ZwVKJYUOeGes9Vy/2r6KIGjKy4QIP7/ko=; b=X1s2ACDtsxuFWUWj4wWombkCTj21Y1nNgu6OwdWI37bcyRBR2L8FGytatPDoRNlkxw C6hdBxSnfbXU3K3Gw64z5jE0VXVRWHKZXatta3dRbKnSS2HgTuewd9y97jXDCdviQr/x l0/Bm5/+szWPKDJBlhu1+/HV9531Of49Id/vV55Xm4VU4iH5uvmgRNMzPJO7n0MjT6PC Mem+jbQRl9JDCBCKvJMRFqsGZES+IZhfMEi/v91FKFKPk+RI6CI0k7uX/FJQSn37xqkP YHJVmovKdyOYUVHd6KUj0DKapbBibtYTiKcXZohN0EXOsen3nHbGXL+mjc3IV6+qRtJG sKKw== X-Gm-Message-State: AJIora8julmXGKq+NYS9rTGWV3y4YgRD3/Tkb242fvNEE9a+oYR75bki ayptOMULdE9l4d66RHz0QQ+sd8ZP8M+Ytw== X-Google-Smtp-Source: AGRyM1uemHO1JxCwLUlVopERMgozf7LQph3xBk2l8ImETq8ooDaA4LL+oHycCdd2SggrSNFTRTVc8w== X-Received: by 2002:adf:eac4:0:b0:217:737b:e77a with SMTP id o4-20020adfeac4000000b00217737be77amr3367611wrn.121.1655366874786; Thu, 16 Jun 2022 01:07:54 -0700 (PDT) Received: from localhost.localdomain (lfbn-nic-1-76-188.w2-15.abo.wanadoo.fr. [2.15.166.188]) by smtp.gmail.com with ESMTPSA id r15-20020adff70f000000b002185d79dc7fsm1098868wrp.75.2022.06.16.01.07.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jun 2022 01:07:54 -0700 (PDT) To: libcamera-devel@lists.libcamera.org Date: Thu, 16 Jun 2022 10:07:43 +0200 Message-Id: <20220616080744.548995-5-fsylvestre@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220616080744.548995-1-fsylvestre@baylibre.com> References: <20220616080744.548995-1-fsylvestre@baylibre.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 4/5] ipa: rkisp1: Add ov5640 tuning file X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Sylvestre via libcamera-devel From: Florian Sylvestre Reply-To: Florian Sylvestre Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Add the ov5640 tuning file containing default values for 'black level correction' algorithm. Signed-off-by: Florian Sylvestre --- src/ipa/rkisp1/data/meson.build | 8 ++++++++ src/ipa/rkisp1/data/ov5640.yaml | 8 ++++++++ src/ipa/rkisp1/meson.build | 1 + 3 files changed, 17 insertions(+) create mode 100644 src/ipa/rkisp1/data/meson.build create mode 100644 src/ipa/rkisp1/data/ov5640.yaml diff --git a/src/ipa/rkisp1/data/meson.build b/src/ipa/rkisp1/data/meson.build new file mode 100644 index 00000000..2656bb2e --- /dev/null +++ b/src/ipa/rkisp1/data/meson.build @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: CC0-1.0 + +conf_files = files([ + 'ov5640.yaml', +]) + +install_data(conf_files, + install_dir : ipa_data_dir / 'rkisp1') diff --git a/src/ipa/rkisp1/data/ov5640.yaml b/src/ipa/rkisp1/data/ov5640.yaml new file mode 100644 index 00000000..d8e56463 --- /dev/null +++ b/src/ipa/rkisp1/data/ov5640.yaml @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: CC0-1.0 +--- +BlackLevelCorrection: + R: 256 + Gr: 256 + Gb: 256 + B: 256 +... diff --git a/src/ipa/rkisp1/meson.build b/src/ipa/rkisp1/meson.build index 8c822fbb..ccb84b27 100644 --- a/src/ipa/rkisp1/meson.build +++ b/src/ipa/rkisp1/meson.build @@ -1,6 +1,7 @@ # SPDX-License-Identifier: CC0-1.0 subdir('algorithms') +subdir('data') ipa_name = 'ipa_rkisp1' From patchwork Thu Jun 16 08:07:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Sylvestre X-Patchwork-Id: 16231 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id CF960C3277 for ; Thu, 16 Jun 2022 08:07:59 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 5A83165642; Thu, 16 Jun 2022 10:07:59 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1655366879; bh=29OqngR+0TO3qrFkT47JPsBOnydwJ/KGahKrNy0CWmw=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=cUEubEix50VQPErWsIN4oziDplLDDtbAuooUia9crCWNpZihXGge52/Q7aCVvmOaZ 09+Kd/3UlKL1WhJ0VcIuRmIZrMEnMarX/wfF0bepT7nO/eMj5zk1Q2GJVNoCydYx0O a53iIRIVicOZ7bivbrt0RiO5jMIta0yeUIaZKd8ZD7/ZxOzQvshjqyNQIrJSHPGCYd wC9LO6m4SZhRUNauavH4nk/1grAYf3uPpnr1z6F9afYDojdt2DdqHu70NljbcjbuLe kJB1k9uM8sGpE5IrMulzDUoUvFNyi874v+4ViVnZ77EqOmFuu9M0pboX9g6QZltV7i +Crqj1gYm6PRg== Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A58DD65643 for ; Thu, 16 Jun 2022 10:07:56 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=baylibre-com.20210112.gappssmtp.com header.i=@baylibre-com.20210112.gappssmtp.com header.b="mRX5MbLM"; dkim-atps=neutral Received: by mail-wm1-x331.google.com with SMTP id r123-20020a1c2b81000000b0039c1439c33cso421786wmr.5 for ; Thu, 16 Jun 2022 01:07:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TzkRnFHPJooBIanc97YPUDjaXPXID3iQdPHXvHFZbqg=; b=mRX5MbLMGB1yMSvCn3HcXVME1fI/gYy0JC63xxG2i4gJC+//nt17VKzhowwfIEoU62 Lxk5xYNx2iFrhZVSpyHgzYk4nyEkq4vmj3cO3awsks9yEG8yufCFmJUDV/eof8iN/twk Rbj4nhOSs6DLky2Me2Y6mWtLV6PeNYe5MtqG6oGlS2fTmgobzkwTsyNONKGlWINScxHx RZ919y+Q1b3GcQO1WVWpIVALRVKFTSb/njE7/vU2LSw09mcTWYRten2Vl3j4f3eCORNL d/1+GOay+Uv1ZdXmEl94W/j5irGS0nja/9/+vgCD2TG2CdDuQh9aUpt03krrm58SEGh5 A7NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TzkRnFHPJooBIanc97YPUDjaXPXID3iQdPHXvHFZbqg=; b=PqxTou0hrTUU+sW1wL2EKeaMe8EFPOwUi+lkCzWfdb1onfqfJF/AUK8FKPJALoivMw wlvNvY5Xk9Fe3CaNWtDh/XX9t4czgadvoYyIP0GzbpVETeQ4/WQASlTBOUmsfMKZ1Spg XQ0UXhwNC6Qcq+u8fy+k49+ob7UOXBysZVIyTzTT+JI33lz7pykEGv92uB3pLTkZh9UY m/QQoFJeskYl3Dbrg/V5E1zgnNHv1/YGTMpeA6fwLe6v/wT0BVH6BnY7H08ZFrgVYQ6o q6//KGxrtKt1Ca1bjGbuhtHlZ4xAbJzyShja8XBjf4QqPmrgFQMmEYwUMh8R7lgNYWqX Butg== X-Gm-Message-State: AOAM533s6xUxDSu7RbYOPShsEA0jNMdUO3iyojEpfOpqGWN4GCLXqJcG UbWGWQ5ZyGqOvma+EdLQn4QF2xN9dpM0gQ== X-Google-Smtp-Source: ABdhPJzxkHTeTDte46ppRiVrcozP+HelYOv8ONWMZUvyBbeYnvfSgyBpQzgo5RL0nMeTLQeHFijWCg== X-Received: by 2002:a05:600c:2847:b0:39c:4f07:e31f with SMTP id r7-20020a05600c284700b0039c4f07e31fmr14474815wmb.53.1655366875875; Thu, 16 Jun 2022 01:07:55 -0700 (PDT) Received: from localhost.localdomain (lfbn-nic-1-76-188.w2-15.abo.wanadoo.fr. [2.15.166.188]) by smtp.gmail.com with ESMTPSA id r15-20020adff70f000000b002185d79dc7fsm1098868wrp.75.2022.06.16.01.07.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jun 2022 01:07:55 -0700 (PDT) To: libcamera-devel@lists.libcamera.org Date: Thu, 16 Jun 2022 10:07:44 +0200 Message-Id: <20220616080744.548995-6-fsylvestre@baylibre.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220616080744.548995-1-fsylvestre@baylibre.com> References: <20220616080744.548995-1-fsylvestre@baylibre.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 5/5] ipa: rkisp1: add support of Black Level Correction default values X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Sylvestre via libcamera-devel From: Florian Sylvestre Reply-To: Florian Sylvestre Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Get default values for Black Level Correction algorithm form Yaml tuning file. Signed-off-by: Florian Sylvestre --- src/ipa/rkisp1/algorithms/blc.cpp | 71 +++++++++++++++++++++++++------ src/ipa/rkisp1/algorithms/blc.h | 8 ++++ 2 files changed, 66 insertions(+), 13 deletions(-) diff --git a/src/ipa/rkisp1/algorithms/blc.cpp b/src/ipa/rkisp1/algorithms/blc.cpp index 0c5948ff..d11160d3 100644 --- a/src/ipa/rkisp1/algorithms/blc.cpp +++ b/src/ipa/rkisp1/algorithms/blc.cpp @@ -7,6 +7,10 @@ #include "blc.h" +#include + +#include "libcamera/internal/yaml_parser.h" + /** * \file blc.h */ @@ -29,6 +33,45 @@ namespace ipa::rkisp1::algorithms { * isn't currently supported. */ +LOG_DEFINE_CATEGORY(RkISP1Blc) + +/** + * \copydoc libcamera::ipa::Algorithm::init + */ +int BlackLevelCorrection::init(IPAContext &, + const YamlObject *params) +{ + tuningParameters_ = false; + + /* Parse property "BlackLevelCorrection". */ + if (!params->contains("BlackLevelCorrection")) { + LOG(RkISP1Blc, Debug) << "No tuning parameters found for BlackLevelCorrection"; + return 0; + } + + const YamlObject &blcObject = (*params)["BlackLevelCorrection"]; + + if (!blcObject.isDictionary()) { + LOG(RkISP1Blc, Error) << "'BlackLevelCorrection' in tuning file is not a dictionnary"; + return -EINVAL; + } + + blackLevelRed_ = blcObject["R"].get(256); + blackLevelGreenR_ = blcObject["Gr"].get(256); + blackLevelGreenB_ = blcObject["Gb"].get(256); + blackLevelBlue_ = blcObject["B"].get(256); + + tuningParameters_ = true; + + LOG(RkISP1Blc, Debug) + << " Read black levels red " << blackLevelRed_ + << " green (red) " << blackLevelGreenR_ + << " green (blue) " << blackLevelGreenB_ + << " blue " << blackLevelBlue_; + + return 0; +} + /** * \copydoc libcamera::ipa::Algorithm::prepare */ @@ -37,19 +80,21 @@ void BlackLevelCorrection::prepare(IPAContext &context, { if (context.frameContext.frameCount > 0) return; - /* - * Substract fixed values taken from imx219 tuning file. - * \todo Use a configuration file for it ? - */ - params->others.bls_config.enable_auto = 0; - params->others.bls_config.fixed_val.r = 256; - params->others.bls_config.fixed_val.gr = 256; - params->others.bls_config.fixed_val.gb = 256; - params->others.bls_config.fixed_val.b = 256; - - params->module_en_update |= RKISP1_CIF_ISP_MODULE_BLS; - params->module_ens |= RKISP1_CIF_ISP_MODULE_BLS; - params->module_cfg_update |= RKISP1_CIF_ISP_MODULE_BLS; + + if (tuningParameters_) { + /* + * Substract fixed values taken from imx219 tuning file. + */ + params->others.bls_config.enable_auto = 0; + params->others.bls_config.fixed_val.r = blackLevelRed_; + params->others.bls_config.fixed_val.gr = blackLevelGreenR_; + params->others.bls_config.fixed_val.gb = blackLevelGreenB_; + params->others.bls_config.fixed_val.b = blackLevelBlue_; + + params->module_en_update |= RKISP1_CIF_ISP_MODULE_BLS; + params->module_ens |= RKISP1_CIF_ISP_MODULE_BLS; + params->module_cfg_update |= RKISP1_CIF_ISP_MODULE_BLS; + } } } /* namespace ipa::rkisp1::algorithms */ diff --git a/src/ipa/rkisp1/algorithms/blc.h b/src/ipa/rkisp1/algorithms/blc.h index 69874d8f..ed2e8ed9 100644 --- a/src/ipa/rkisp1/algorithms/blc.h +++ b/src/ipa/rkisp1/algorithms/blc.h @@ -23,7 +23,15 @@ public: BlackLevelCorrection() = default; ~BlackLevelCorrection() = default; + int init(IPAContext &context, const YamlObject *params) override; void prepare(IPAContext &context, rkisp1_params_cfg *params) override; + +private: + bool tuningParameters_; + int16_t blackLevelRed_; + int16_t blackLevelGreenR_; + int16_t blackLevelGreenB_; + int16_t blackLevelBlue_; }; } /* namespace ipa::rkisp1::algorithms */