From patchwork Tue Sep 22 15:50:34 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= X-Patchwork-Id: 28363 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 52AA4C32BB for ; Tue, 22 Sep 2026 15:51:05 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 2C650688BA; Tue, 22 Sep 2026 17:51:04 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="ZWEjux3C"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 108A16876E for ; Tue, 22 Sep 2026 17:51:02 +0200 (CEST) Received: from pb-laptop.local (185.221.142.0.nat.pool.zt.hu [185.221.142.0]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id E90AFC25 for ; Tue, 22 Sep 2026 17:49:12 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1790092156; bh=jQzy5L7AcvcL8R0tmbRvI1kUMp6FSmrKUtY9bJ2f0sA=; h=From:To:Subject:Date:From; b=ZWEjux3CA2MSOJ+JYQcxuXFF2dAvqUBF4F2n9VbhGJ5Ogdh3RZ/0O9COWbYZ39Xda 6E+ByJ8RUezEPP3NtYaN9iXUEeqfhGEtpBpqnjXWjNOp5JwHPJ5mwqI/5xCWBYNPUz r00aaWm899ZNRe3bfIbZ4qlX5lbR/hxZVuUYXAfQ= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Subject: [PATCH v1 1/2] ipa: libipa: lsc: interpolateComponents(): Avoid copy Date: Tue, 22 Sep 2026 17:50:34 +0200 Message-ID: <20260922155035.235817-1-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.55.0 MIME-Version: 1.0 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: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Return the reference directly that is returned by the interpolator. Signed-off-by: Barnabás Pőcze --- src/ipa/libipa/lsc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ipa/libipa/lsc.h b/src/ipa/libipa/lsc.h index 17d5a4a141..ad378cc6ce 100644 --- a/src/ipa/libipa/lsc.h +++ b/src/ipa/libipa/lsc.h @@ -118,7 +118,7 @@ public: return 0; } - const Components interpolateComponents(unsigned int ct) + const Components &interpolateComponents(unsigned int ct) { return sets_.getInterpolated(ct); } From patchwork Tue Sep 22 15:50:35 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= X-Patchwork-Id: 28364 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 62A02C32BB for ; Tue, 22 Sep 2026 15:51:09 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 1469D68837; Tue, 22 Sep 2026 17:51:09 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Hv2WMyCl"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id D1BCE687C3 for ; Tue, 22 Sep 2026 17:51:07 +0200 (CEST) Received: from pb-laptop.local (185.221.142.0.nat.pool.zt.hu [185.221.142.0]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 28C97C25 for ; Tue, 22 Sep 2026 17:49:16 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1790092162; bh=E5FX7znQia9/B0OL7sUzN/TvQ18FxLHl0HUYwrpoKMU=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Hv2WMyCl9Zsm5LTVQcKrthUvvBmqmqEWsgG6Rnwg7ETSDmvD3nA1mMox2NyrRMm6Y CjcUSFzMrTk2biBm2legiv23pjP0Jz7KE0idrf3NS019GCt6DMZsu10vu9xF4a05H0 MYWaQL7kJoItT/ozTQjCe0kiit2FA5w3SOI9TyLQ= From: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= To: libcamera-devel@lists.libcamera.org Subject: [PATCH v1 2/2] ipa: libipa: lsc: configure(): Take positions in a span Date: Tue, 22 Sep 2026 17:50:35 +0200 Message-ID: <20260922155035.235817-2-barnabas.pocze@ideasonboard.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260922155035.235817-1-barnabas.pocze@ideasonboard.com> References: <20260922155035.235817-1-barnabas.pocze@ideasonboard.com> MIME-Version: 1.0 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: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" `LscPolynomial` already uses spans internally, and there is no reason to require a `std::vector`, so use `std::span`. Signed-off-by: Barnabás Pőcze --- src/ipa/libipa/lsc.h | 5 +++-- src/ipa/libipa/lsc_base.h | 3 ++- src/ipa/libipa/lsc_polynomial.cpp | 2 +- src/ipa/libipa/lsc_polynomial.h | 2 +- src/ipa/libipa/lsc_table.h | 4 ++-- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/ipa/libipa/lsc.h b/src/ipa/libipa/lsc.h index ad378cc6ce..cb9c582d9e 100644 --- a/src/ipa/libipa/lsc.h +++ b/src/ipa/libipa/lsc.h @@ -8,6 +8,7 @@ #pragma once #include +#include #include #include @@ -85,8 +86,8 @@ public: LscAlgorithm() = default; int configure(lsc::ActiveState &state, const Rectangle &analogCrop, - const std::vector &xPos, - const std::vector &yPos) + std::span xPos, + std::span yPos) { LscImplementation::ComponentsMap data = impl_->sampleForCrop(analogCrop, xPos, yPos); diff --git a/src/ipa/libipa/lsc_base.h b/src/ipa/libipa/lsc_base.h index 0f417f5b92..2442bce135 100644 --- a/src/ipa/libipa/lsc_base.h +++ b/src/ipa/libipa/lsc_base.h @@ -8,6 +8,7 @@ #pragma once #include +#include #include #include #include @@ -42,7 +43,7 @@ public: virtual ComponentsMap sampleForCrop(const Rectangle &cropRectangle, - std::vector xPos, std::vector yPos) = 0; + std::span xPos, std::span yPos) = 0; }; } /* namespace ipa */ diff --git a/src/ipa/libipa/lsc_polynomial.cpp b/src/ipa/libipa/lsc_polynomial.cpp index da1659c759..1a9deb947a 100644 --- a/src/ipa/libipa/lsc_polynomial.cpp +++ b/src/ipa/libipa/lsc_polynomial.cpp @@ -196,7 +196,7 @@ int LscPolynomial::parseLscData(const ValueNode &sets, */ LscImplementation::ComponentsMap LscPolynomial::sampleForCrop(const Rectangle &cropRectangle, - std::vector xPos, std::vector yPos) + std::span xPos, std::span yPos) { LscImplementation::ComponentsMap components; diff --git a/src/ipa/libipa/lsc_polynomial.h b/src/ipa/libipa/lsc_polynomial.h index 72d874f45c..12031b9509 100644 --- a/src/ipa/libipa/lsc_polynomial.h +++ b/src/ipa/libipa/lsc_polynomial.h @@ -61,7 +61,7 @@ public: LscImplementation::ComponentsMap sampleForCrop(const Rectangle &cropRectangle, - std::vector xPos, std::vector yPos) override; + std::span xPos, std::span yPos) override; private: std::vector samplePolynomial(const lsc::Polynomial &poly, diff --git a/src/ipa/libipa/lsc_table.h b/src/ipa/libipa/lsc_table.h index 5af6eec137..49959dca32 100644 --- a/src/ipa/libipa/lsc_table.h +++ b/src/ipa/libipa/lsc_table.h @@ -30,8 +30,8 @@ public: LscImplementation::ComponentsMap sampleForCrop([[maybe_unused]] const Rectangle &cropRectangle, - [[maybe_unused]] std::vector xPos, - [[maybe_unused]] std::vector yPos) override + [[maybe_unused]] std::span xPos, + [[maybe_unused]] std::span yPos) override { LOG(LscTable, Warning) << "Tabular LSC data doesn't support resampling";