{"id":24823,"url":"https://patchwork.libcamera.org/api/covers/24823/?format=json","web_url":"https://patchwork.libcamera.org/cover/24823/","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":"<20251026233048.175689-1-kieran.bingham@ideasonboard.com>","date":"2025-10-26T23:30:37","name":"[0/6] libipa: Introduce a Quantized type","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/24823/mbox/","series":[{"id":5532,"url":"https://patchwork.libcamera.org/api/series/5532/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=5532","date":"2025-10-26T23:30:37","name":"libipa: Introduce a Quantized type","version":1,"mbox":"https://patchwork.libcamera.org/series/5532/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/24823/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 EAC2EBE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 26 Oct 2025 23:30:56 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E5C2D60712;\n\tMon, 27 Oct 2025 00:30:55 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AB930606CE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 27 Oct 2025 00:30:53 +0100 (CET)","from charm.hippo-penny.ts.net (unknown [209.38.108.23])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id E56DFE1F;\n\tMon, 27 Oct 2025 00:29:05 +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=\"r/Y4O7W/\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1761521346;\n\tbh=ekUwKJCvQ+/BKz2K4P1qGhzcV5UD9Agu+CQDsi3Kp5Q=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=r/Y4O7W/m/vlEaoAYWom8m8iWGKysFP++gGjD5tIwm3ZReMOWeVCSqbWJyNLbVxC6\n\tSXbYTMmnjmoeabBAwrAe4QBbyjq+lGvLeqCHBH4XpMOhE0HFWnHhFO9YVQFR8JMJM1\n\tfBQHGgGF67fTMNNygRqAY92lf+qwR4/zcwWQzhsY=","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Cc":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Subject":"[PATCH 0/6] libipa: Introduce a Quantized type","Date":"Sun, 26 Oct 2025 23:30:37 +0000","Message-ID":"<20251026233048.175689-1-kieran.bingham@ideasonboard.com>","X-Mailer":"git-send-email 2.51.0","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 protected storage mechanism to make both\nof these storage representations visible to code that wishes to utilise\nthe specific values, but only through read only accessors.\n\nAny write access must be performed through a Quantizer ... a derived\ntype which introduces the mechanism to update the data store, always\nensuring to update both values at the same time.\n\nThe series then re-introduces the proposed updates to cproc using the\nnew mechanisms.\n\n[0] https://patchwork.libcamera.org/project/libcamera/list/?series=5245\n[1] https://patchwork.libcamera.org/patch/23645/#34626\n\nIf this new base Quantized type can be accepted, I believe a good next\nstep is to provide a FixedPointQuantizer and extend the tests of the\ncurrent fixed point helpers, allowing fixed point conversions to be\nsimplified through out.\n\n\nKieran Bingham (5):\n  libipa: Provide a Quantized type and Quantizer support\n  test: libipa: Add tests for Quantizers\n  ipa: rkisp1: cproc: Convert to use Quantized types\n  ipa: rkisp1: cproc: Report metadata\n  ipa: rkisp1: cproc: Provide a Hue control\n\nvan Veen, Stephan (1):\n  libcamera: controls: Define a new core Hue control\n\n src/ipa/libipa/meson.build          |   2 +\n src/ipa/libipa/quantized.cpp        | 167 ++++++++++++++++++++++++++++\n src/ipa/libipa/quantized.h          |  90 +++++++++++++++\n src/ipa/rkisp1/algorithms/cproc.cpp | 117 ++++++++++++++++---\n src/ipa/rkisp1/algorithms/cproc.h   |   4 +\n src/ipa/rkisp1/ipa_context.h        |  15 ++-\n src/libcamera/control_ids_core.yaml |  13 +++\n test/ipa/libipa/meson.build         |   1 +\n test/ipa/libipa/quantized.cpp       | 149 +++++++++++++++++++++++++\n 9 files changed, 534 insertions(+), 24 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"}