{"id":25690,"url":"https://patchwork.libcamera.org/api/covers/25690/?format=json","web_url":"https://patchwork.libcamera.org/cover/25690/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260108-sklug-lsc-resampling-v2-dev-v2-0-e682ec4b9893@ideasonboard.com>","date":"2026-01-08T16:05:43","name":"[v2,00/15] Add resampling support for polynomial LSC data","submitter":{"id":184,"url":"https://patchwork.libcamera.org/api/people/184/?format=json","name":"Stefan Klug","email":"stefan.klug@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/25690/mbox/","series":[{"id":5697,"url":"https://patchwork.libcamera.org/api/series/5697/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5697","date":"2026-01-08T16:05:43","name":"Add resampling support for polynomial LSC data","version":2,"mbox":"https://patchwork.libcamera.org/series/5697/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/25690/comments/","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 CB1D5BE08B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  8 Jan 2026 16:06:27 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 190C061FA0;\n\tThu,  8 Jan 2026 17:06:27 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8C3F7615B2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  8 Jan 2026 17:06:25 +0100 (CET)","from ideasonboard.com (unknown\n\t[IPv6:2a00:6020:448c:6c00:90af:8957:b721:10d4])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id D7523192C; \n\tThu,  8 Jan 2026 17:06:02 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"gNGH9M+I\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1767888362;\n\tbh=y9mwLGsvQJ/9a9h2yLm04/CngSsUplnNo+YRim05XaM=;\n\th=From:Subject:Date:To:Cc:From;\n\tb=gNGH9M+IHVm+03JzTT4sxHKgku855DB8zg7dypiv9mBYF69ll26vnBX0cD86EjYCk\n\t67wF2kN1f/JlixTxUihCmQKpPNnxYRSlB5hk9laqFAneg4h8eLsAiR8taRXm2jdkCZ\n\toLG9R4r4WkAMIO+IlbzYIj6l3beZ8SwQ4rZ4FNps=","From":"Stefan Klug <stefan.klug@ideasonboard.com>","Subject":"[PATCH v2 00/15] Add resampling support for polynomial LSC data","Date":"Thu, 08 Jan 2026 17:05:43 +0100","Message-Id":"<20260108-sklug-lsc-resampling-v2-dev-v2-0-e682ec4b9893@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","X-B4-Tracking":"v=1; b=H4sIANfVX2kC/x3MQQqAIBAAwK/EnlswqYS+Eh0qN1syC5ckiP6ed\n\tJzLPCAUmQS64oFIiYWPkKHLAuZ1DI6QbTZopVtVKYOy+cuhlxkjybifnoPDpNFSQmtMU6upMq0\n\tlyMMZaeH73/vhfT+uSY8dbQAAAA==","X-Change-ID":"20260107-sklug-lsc-resampling-v2-dev-d77540b176de","To":"libcamera-devel@lists.libcamera.org","Cc":"Stefan Klug <stefan.klug@ideasonboard.com>, =?utf-8?q?Barnab=C3=A1s_P?=\n\t=?utf-8?b?xZFjemU=?= <barnabas.pocze@ideasonboard.com>,\n\tRui Wang <rui.wang@ideasonboard.com>, Laurent Pinchart\n\t<laurent.pinchart@ideasonboard.com>,  Jacopo Mondi <jacopo@jmondi.org>","X-Mailer":"b4 0.14.2","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>"},"content":"In [1] support for polynomial lens shading tables was implement up to\nthe same feature level of grid based lens shading tables. However\nresampling the LSC table for a given analog crop rectangle was never\nimplemented.\n\nThis series partially fixes that by implementing resampling for\npolynomial LSC data. Resampling for tabular LSC data is left open for\nimplementation if need arises.\n\nPatches 1-7 apply some code cleanup that got mentioned on the last\nseries after it was merged.\n\nPatches 8-10 apply further cleanup and are new in v2 of the series.\n\nPatches 11-13 implement the actual resampling.\n\nPatches 14-15 implement a LensShadingCorrectionEnable control that is\nnecessary to assess the effect of LSC in practice. Patch 14 resurrects\nan old patch from Jacopo [2]. These last two patches could be stripped\noff the series if needed.\n\nBest regards,\nStefan\n\n[1] https://patchwork.libcamera.org/project/libcamera/list/?series=4609&archive=both&state=*\n[2] https://patchwork.libcamera.org/project/libcamera/list/?series=3795&archive=both&state=*\n\nSigned-off-by: Stefan Klug <stefan.klug@ideasonboard.com>\n---\nChanges in v2:\n- Collected tags\n- Applied small fixes from review\n- Additional cleanup by patches 8-10 to improve the prepare() function\n- A bit more rework on the resampling patches due to preceding changes\n\n---\nStefan Klug (15):\n      ipa: rkisp1: lsc: Drop unused member variable\n      ipa: rkisp1: lsc: Drop unused function declaration\n      ipa: rkisp1: lsc: Replace assert with ASSERT\n      ipa: rkisp1: lsc: Rename res to positions\n      ipa: rkisp1: lsc: Rename res to ret\n      ipa: rkisp1: lsc: Rename res to samples\n      ipa: rksip1: lsc: Move function definitions out of class\n      ipa: rkisp1: lsc: Move local types into anonymous namespace\n      ipa: rkisp1: lsc: Handle quantization locally\n      ipa: libipa: interpolator: Drop key quantization\n      ipa: rkisp1: lsc: Pass sampling positions into samplePolynomial\n      ipa: rkisp1: lsc: Pass crop rectangle as parameter\n      ipa: rkisp1: lsc: Resample polynomial lens shading tables at configure time\n      libcamera: control_ids: Introduce LensShadingCorrectionEnable\n      ipa: rkisp1: Implement LensShadingCorrectionEnable control\n\n src/android/camera_capabilities.cpp  |  11 +-\n src/ipa/libipa/interpolator.cpp      |  25 +-\n src/ipa/libipa/interpolator.h        |  14 +-\n src/ipa/rkisp1/algorithms/dpf.cpp    |   2 +-\n src/ipa/rkisp1/algorithms/lsc.cpp    | 491 ++++++++++++++++++++++-------------\n src/ipa/rkisp1/algorithms/lsc.h      |  20 +-\n src/ipa/rkisp1/ipa_context.h         |  13 +-\n src/libcamera/control_ids_core.yaml  |   9 +\n src/libcamera/control_ids_draft.yaml |  14 -\n test/ipa/libipa/interpolator.cpp     |   7 -\n 10 files changed, 346 insertions(+), 260 deletions(-)\n---\nbase-commit: c63f2c72cd7b278584dcc70b8294063e89b01ca1\nchange-id: 20260107-sklug-lsc-resampling-v2-dev-d77540b176de\n\nBest regards,"}