Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/25030/?format=api
{ "id": 25030, "url": "https://patchwork.libcamera.org/api/1.1/covers/25030/?format=api", "web_url": "https://patchwork.libcamera.org/cover/25030/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20251114005428.90024-1-kieran.bingham@ideasonboard.com>", "date": "2025-11-14T00:54:04", "name": "[v4,00/21] libipa: Introduce a Quantized type", "submitter": { "id": 4, "url": "https://patchwork.libcamera.org/api/1.1/people/4/?format=api", "name": "Kieran Bingham", "email": "kieran.bingham@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/cover/25030/mbox/", "series": [ { "id": 5589, "url": "https://patchwork.libcamera.org/api/1.1/series/5589/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5589", "date": "2025-11-14T00:54:04", "name": "libipa: Introduce a Quantized type", "version": 4, "mbox": "https://patchwork.libcamera.org/series/5589/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/25030/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 DD20DC3263\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 14 Nov 2025 00:54:50 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id F070160A86;\n\tFri, 14 Nov 2025 01:54:49 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 4925C6069A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 14 Nov 2025 01:54:48 +0100 (CET)", "from charm.hippo-penny.ts.net\n\t(cpc89244-aztw30-2-0-cust6594.18-1.cable.virginm.net [86.31.185.195])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id A35C78FA;\n\tFri, 14 Nov 2025 01:52:47 +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=\"DGY61z2o\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1763081567;\n\tbh=/SpqH0BL2wfZ7DfNfG3SOTDSao5blbG0N9+MqwsBh/Y=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=DGY61z2oyTe8jDJ/4uH0ETCM1XHCRh3Q0/Cyxjse/sA5w3X0RKhdz/vyq6TJULcts\n\tPKJTILwd9z94gLhUy46M1Es1USwsLGJg5TT8765MF6+jVomkckl7uzHFpci9dxh7aQ\n\tOY6O3Z4CR7Z1eafABBC+94KhuWXYPgLmK81DfiOY=", "From": "Kieran Bingham <kieran.bingham@ideasonboard.com>", "To": "libcamera devel <libcamera-devel@lists.libcamera.org>", "Cc": "Kieran Bingham <kieran.bingham@ideasonboard.com>", "Subject": "[PATCH v4 00/21] libipa: Introduce a Quantized type", "Date": "Fri, 14 Nov 2025 00:54:04 +0000", "Message-ID": "<20251114005428.90024-1-kieran.bingham@ideasonboard.com>", "X-Mailer": "git-send-email 2.51.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "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": "This series superceeds [0] \"rkisp1: cproc - Metadata and Hue\ndevelopments\" by introducing a new base type for libipa to be able to\nmaintain values which are quantized for hardware.\n\nThese data values often need to be converted, perhaps to a fixed-point\nformat for configuration of hardware, but also then back to a floating\npoint for returning as metadata.\n\nIn particular this series builds to solve the review comment that\nblocked the original series at [1]\n\nThe Quantized type provides a storage mechanism to make both of these\nstorage representations visible to code that wishes to utilise the\nspecific values.\n\nThe series then re-introduces the proposed updates to cproc using the\nnew Q types by supplying Fixed Point types and a scaled fixed point type\nfor the Hue control.\n\nAdditional FixedPoint traits are added for the existing users of fixed\npoint helpers, and those users are converted to the new FixedPoint\nQuantized type.\n\nThis in cases such as the Mali-C55 AWB Gains means that we now report\naccurate gains as used by the hardware in the metadata.\n\nFinally - with all users converted, the helpers are inlined, and legacy\ntests removed.\n\nThis then allows us to clean up a workaround which was managing the\nusage of unsigned integers to represent signed floats.\n\nTests and documentation are provided throughout.\n\n[0] https://patchwork.libcamera.org/project/libcamera/list/?series=5245\n[1] https://patchwork.libcamera.org/patch/23645/#34626\n\n\nThis series has been run through gitlab CI and succeeded [2]\n\n[2] https://gitlab.freedesktop.org/camera/libcamera/-/pipelines/1546924\n\nRunning the tests directly shows the following output (all passing)\n\n./build/gcc/test/ipa/libipa/quantized\nQuantised tests passed successfully.\n./build/gcc/test/ipa/libipa/fixedpoint\n\nQ1_7(-1 .. 0.992188) Min: [0x80:-1] -- Max: [0x7f:0.992188] Step:0.0078125\n Checking -1 == [0x80:-1]\n Checking -0.992 == [0x81:-0.992188]\n Checking -0.006 == [0xff:-0.0078125]\n Checking 0 == [0x00:0]\n Checking 0.008 == [0x01:0.0078125]\n Checking 0.992 == [0x7f:0.992188]\n\nUQ1_7(0 .. 1.99219) Min: [0x00:0] -- Max: [0xff:1.99219] Step:0.0078125\n Checking 0 == [0x00:0]\n Checking 1 == [0x80:1]\n Checking 1.992 == [0xff:1.99219]\n\nQ4_7(-8 .. 7.99219) Min: [0x0400:-8] -- Max: [0x03ff:7.99219] Step:0.0078125\n Checking -8 == [0x0400:-8]\n Checking -0.008 == [0x07ff:-0.0078125]\n Checking 0 == [0x0000:0]\n Checking 0.008 == [0x0001:0.0078125]\n Checking 7.992 == [0x03ff:7.99219]\n Checking 0.2 == [0x001a:0.203125]\n Checking -0.2 == [0x07e6:-0.203125]\n Checking -0.8 == [0x079a:-0.796875]\n Checking -0.4 == [0x07cd:-0.398438]\n Checking -1.4 == [0x074d:-1.39844]\n\nUQ4_8(0 .. 15.9961) Min: [0x0000:0] -- Max: [0x0fff:15.9961] Step:0.00390625\n Checking 0 == [0x0000:0]\n Checking 16 == [0x0fff:15.9961]\n\nQ5_4(-16 .. 15.9375) Min: [0x0100:-16] -- Max: [0x00ff:15.9375] Step:0.0625\n Checking -16 == [0x0100:-16]\n Checking 15.94 == [0x00ff:15.9375]\n\nUQ5_8(0 .. 31.9961) Min: [0x0000:0] -- Max: [0x1fff:31.9961] Step:0.00390625\n Checking 0 == [0x0000:0]\n Checking 32 == [0x1fff:31.9961]\n\nQ12_4(-2048 .. 2047.94) Min: [0x8000:-2048] -- Max: [0x7fff:2047.94] Step:0.0625\n Checking 0 == [0x0000:0]\n Checking 7.5 == [0x0078:7.5]\n\nUQ12_4(0 .. 4095.94) Min: [0x0000:0] -- Max: [0xffff:4095.94] Step:0.0625\n Checking 0 == [0x0000:0]\n Checking 7.5 == [0x0078:7.5]\n\nRange validation:\n Checking -100 == [0x80:-1]\n Checking 100 == [0x7f:0.992188]\n Checking -100 == [0x00:0]\n Checking 100 == [0xff:1.99219]\n\n\nScaled Fixed-Point Quantizer tests:\n\nHueQ (Scaled Q1_7 * 90) (-90 .. 89.2969) Min: [0x80:-90] -- Max: [0x7f:89.2969] Step:0.703125\n Checking -90 == [0x80:-90]\n Checking -45 == [0xc0:-45]\n Checking 0 == [0x00:0]\n Checking 45 == [0x40:45]\n Checking 90 == [0x7f:89.2969]\n Checking -99 == [0x80:-90]\n Checking 99 == [0x7f:89.2969]\n\n\nKieran Bingham (20):\n ipa: libipa: Provide a Quantized data type support\n test: libipa: Add tests for Quantized types\n ipa: libipa: Provide fixed point quantized traits\n test: libipa: Provide FixedPoint Quantized tests\n ipa: libipa: fixedpoint: Fix unsigned usage\n test: libipa: Add Q4.7 type and tests to match existing use case tests\n ipa: libipa: Provide Q5.4 FixedPoint support\n ipa: libipa: Provide Q5.8 FixedPoint support\n ipa: libipa: Provide Q4.8 FixedPoint support\n ipa: libipa: fixedpoint: Provide a ScaledFixedPoint type\n test: libipa: Provide ScaledFixedPoint tests\n ipa: rkisp1: cproc: Convert to use Quantized types\n ipa: rkisp1: cproc: Report metadata\n ipa: rkisp1: cproc: Provide a Hue control\n ipa: rkisp1: ccm: Use Q4_7 format directly\n ipa: mali-c55: Convert AWB to UQ4_8 usage\n ipa: mali-c55: agc: Quantise the ISP Digital Gain\n test: libipa: Remove legacy fixed point conversion test\n ipa: libipa: fixedpoint: Move float conversion inline\n ipa: libipa: fixedpoint: Remove unsigned workaround\n\nvan Veen, Stephan (1):\n libcamera: controls: Define a new core Hue control\n\n src/ipa/libipa/fixedpoint.cpp | 217 +++++++++++++++++++++++++--\n src/ipa/libipa/fixedpoint.h | 124 +++++++++++-----\n src/ipa/libipa/meson.build | 2 +\n src/ipa/libipa/quantized.cpp | 134 +++++++++++++++++\n src/ipa/libipa/quantized.h | 78 ++++++++++\n src/ipa/mali-c55/algorithms/agc.cpp | 20 +--\n src/ipa/mali-c55/algorithms/awb.cpp | 44 +++---\n src/ipa/mali-c55/ipa_context.h | 16 +-\n src/ipa/rkisp1/algorithms/ccm.cpp | 5 +-\n src/ipa/rkisp1/algorithms/cproc.cpp | 66 +++++---\n src/ipa/rkisp1/algorithms/cproc.h | 4 +\n src/ipa/rkisp1/ipa_context.h | 22 ++-\n src/libcamera/control_ids_core.yaml | 13 ++\n test/ipa/libipa/fixedpoint.cpp | 223 ++++++++++++++++++++--------\n test/ipa/libipa/meson.build | 1 +\n test/ipa/libipa/quantized.cpp | 130 ++++++++++++++++\n 16 files changed, 910 insertions(+), 189 deletions(-)\n create mode 100644 src/ipa/libipa/quantized.cpp\n create mode 100644 src/ipa/libipa/quantized.h\n create mode 100644 test/ipa/libipa/quantized.cpp" }