From patchwork Wed Jan 14 11:57:53 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Klug X-Patchwork-Id: 25780 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 A9A5AC3226 for ; Wed, 14 Jan 2026 11:58:02 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id C7FB561FC3; Wed, 14 Jan 2026 12:58:01 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Xl5IXGu4"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 0409A61F9F for ; Wed, 14 Jan 2026 12:58:01 +0100 (CET) Received: from ideasonboard.com (unknown [IPv6:2a00:6020:448c:6c00:b781:dff2:957:7831]) by perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id D7A03316; Wed, 14 Jan 2026 12:57:33 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1768391854; bh=9RuYG+W7hsqSc4C1hwcZUXJ73nBIwNdmVYnUjbhppCA=; h=From:Subject:Date:To:Cc:From; b=Xl5IXGu417OHJNBBygIs/1a+UcWJMVQXSE5txzrBmv2M5pSNnccSs545jmZhJAmux uoMh8MoaldKwmDTt+QUwYJ1WTcXFcIqiXsDZLRbajZmztYATPgwXTDuKAeZ8iy6TP3 QXNjAqt+I3m18FVPtdhmz5WUOKu1jAremi8YW5kw= From: Stefan Klug Subject: [PATCH v3 00/15] Add resampling support for polynomial LSC data Date: Wed, 14 Jan 2026 12:57:53 +0100 Message-Id: <20260114-sklug-lsc-resampling-v2-dev-v3-0-80cd24f4dd61@ideasonboard.com> MIME-Version: 1.0 X-B4-Tracking: v=1; b=H4sIAMGEZ2kC/33NQQ6CMBCF4auQrh1TClJw5T0MC2hHmAgt6WijI dzdSuLW1eSfxfdWwRgIWZyzVQSMxORdiuKQCTN2bkAgm1ooqSqZSw18n54DTGwgIHfzMpEbICq wGMFqfSpln+vKokjCEvBGr12/tqlH4ocP730squ/359Z/3XQkYFUrNGXf1E1xIYsde9f7Ltij8 bNot237AA2JmPTNAAAA X-Change-ID: 20260107-sklug-lsc-resampling-v2-dev-d77540b176de To: libcamera-devel@lists.libcamera.org Cc: Stefan Klug , =?utf-8?q?Barnab=C3=A1s_P?= =?utf-8?b?xZFjemU=?= , Rui Wang , Laurent Pinchart , Kieran Bingham , Jacopo Mondi X-Mailer: b4 0.14.2 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" In [1] support for polynomial lens shading tables was implement up to the same feature level of grid based lens shading tables. However resampling the LSC table for a given analog crop rectangle was never implemented. This series partially fixes that by implementing resampling for polynomial LSC data. Resampling for tabular LSC data is left open for implementation if need arises. Patches 1-7 apply some code cleanup that got mentioned on the last series after it was merged. Patches 8-10 apply further cleanup and are new in v2 of the series. Patches 11-13 implement the actual resampling. Patches 14-15 implement a LensShadingCorrectionEnable control that is necessary to assess the effect of LSC in practice. Patch 14 resurrects an old patch from Jacopo [2]. These last two patches could be stripped off the series if needed. Best regards, Stefan [1] https://patchwork.libcamera.org/project/libcamera/list/?series=4609&archive=both&state=* [2] https://patchwork.libcamera.org/project/libcamera/list/?series=3795&archive=both&state=* Signed-off-by: Stefan Klug --- Changes in v3: - Added LensShadingCorrectionEnable to metadata - Improved colour temperature quantization code - Tiny fixes (see local changelogs) - Link to v2: https://patchwork.libcamera.org/project/libcamera/list/?series=5697 Changes in v2: - Collected tags - Applied small fixes from review - Additional cleanup by patches 8-10 to improve the prepare() function - A bit more rework on the resampling patches due to preceding changes --- Stefan Klug (15): ipa: rkisp1: lsc: Drop unused member variable ipa: rkisp1: lsc: Drop unused function declaration ipa: rkisp1: lsc: Replace assert with ASSERT ipa: rkisp1: lsc: Rename res to positions ipa: rkisp1: lsc: Rename res to ret ipa: rkisp1: lsc: Rename res to samples ipa: rksip1: lsc: Move function definitions out of class ipa: rkisp1: lsc: Move local types into anonymous namespace ipa: rkisp1: lsc: Handle quantization locally ipa: libipa: interpolator: Drop key quantization ipa: rkisp1: lsc: Pass sampling positions into samplePolynomial ipa: rkisp1: lsc: Pass crop rectangle as parameter ipa: rkisp1: lsc: Resample polynomial lens shading tables at configure time libcamera: control_ids: Introduce LensShadingCorrectionEnable ipa: rkisp1: Implement LensShadingCorrectionEnable control src/android/camera_capabilities.cpp | 11 +- src/ipa/libipa/interpolator.cpp | 25 +- src/ipa/libipa/interpolator.h | 14 +- src/ipa/rkisp1/algorithms/dpf.cpp | 2 +- src/ipa/rkisp1/algorithms/lsc.cpp | 506 ++++++++++++++++++++++------------- src/ipa/rkisp1/algorithms/lsc.h | 24 +- src/ipa/rkisp1/ipa_context.h | 13 +- src/libcamera/control_ids_core.yaml | 9 + src/libcamera/control_ids_draft.yaml | 14 - test/ipa/libipa/interpolator.cpp | 7 - 10 files changed, 365 insertions(+), 260 deletions(-) --- base-commit: c63f2c72cd7b278584dcc70b8294063e89b01ca1 change-id: 20260107-sklug-lsc-resampling-v2-dev-d77540b176de Best regards,