Cover Letter Detail
Show a cover letter.
GET /api/1.1/covers/24060/?format=api
{ "id": 24060, "url": "https://patchwork.libcamera.org/api/1.1/covers/24060/?format=api", "web_url": "https://patchwork.libcamera.org/cover/24060/", "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": "<20250806-control_storage-v1-0-2ec8424f6f7d@ideasonboard.com>", "date": "2025-08-06T12:30:44", "name": "[0/3] libcamera: Make ControlValue a view", "submitter": { "id": 143, "url": "https://patchwork.libcamera.org/api/1.1/people/143/?format=api", "name": "Jacopo Mondi", "email": "jacopo.mondi@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/cover/24060/mbox/", "series": [ { "id": 5358, "url": "https://patchwork.libcamera.org/api/1.1/series/5358/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5358", "date": "2025-08-06T12:30:44", "name": "libcamera: Make ControlValue a view", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5358/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/24060/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 A45D9BDCC1\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 6 Aug 2025 12:31:02 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 744F969221;\n\tWed, 6 Aug 2025 14:31:01 +0200 (CEST)", "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 CB591691F5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 6 Aug 2025 14:30:59 +0200 (CEST)", "from [192.168.0.172] (mob-5-90-59-79.net.vodafone.it [5.90.59.79])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 173C5CF;\n\tWed, 6 Aug 2025 14:30:11 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"PlOTvPDe\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1754483411;\n\tbh=ZhGSD9hEnzM6hENxXGWbIrGCg1rbky63iKVG9Z0tnO8=;\n\th=From:Subject:Date:To:Cc:From;\n\tb=PlOTvPDeLrlmTRabWlN7v61n8LXwgrKM1QVSCxq+Na0wIewd+pc0kxIveYkvAFzS/\n\tpRqBDYn38memQwS/hayq7jiar6KmSXaABecyoV4OUnnzQMkQ/TVeOjC3LKkbSECQr1\n\t8QPrhYMDHcE64q1Mgv1jsRgA85LHTTcZcbW7BYvU=", "From": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>", "Subject": "[PATCH 0/3] libcamera: Make ControlValue a view", "Date": "Wed, 06 Aug 2025 14:30:44 +0200", "Message-Id": "<20250806-control_storage-v1-0-2ec8424f6f7d@ideasonboard.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "8bit", "X-B4-Tracking": "v=1; b=H4sIAPRKk2gC/x2MQQqAIBAAvyJ7TjBDsr4SEaFrLYTGGhFIf086D\n\tsNMgYxMmGEUBRhvypRihbYR4PY1bijJVwattFFWddKleHE6lnwlXqu2Q69NZwJ6E6BWJ2Og5z9\n\tO8/t+2qQtH2EAAAA=", "X-Change-ID": "20250803-control_storage-8972535fed5f", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>, =?utf-8?b?QmFybmFiw6Fz?=\n\t=?utf-8?q?_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>", "X-Mailer": "b4 0.14.2", "X-Developer-Signature": "v=1; a=openpgp-sha256; l=3898;\n\ti=jacopo.mondi@ideasonboard.com; h=from:subject:message-id;\n\tbh=ZhGSD9hEnzM6hENxXGWbIrGCg1rbky63iKVG9Z0tnO8=;\n\tb=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBok0sC6XRTtLnIbFDRbl0CYgmXZ3OIvFTBt5dEy\n\tk7B78eq/2GJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCaJNLAgAKCRByNAaPFqFW\n\tPHp3EAC0Cuo9522N0W6y+yUsVdiwsvwNAWRG1AkAKwbS2P9tTz6VlZFpRHHDZT1ShH4VniZTlFI\n\t+qroGs7euqWlrD2DLiVxiQ74EGhc7wJOs37JH3UGSvjLgRiFgBU9uupYBKkBm9dCgbF6QKgsWgn\n\tNM6Q08wXExxsguDTwMN5OXhHE93gsqco1M3h8PY39ystUTri4C0bwoXe102fOZdJB/68oPvpRh7\n\tEizqlKoKW4WMQxOQ6MVuTzsWFjtfYZ3Fw11s42gFP5EojbHhUJS1pAiB5QzAYraH33CqtPhjsi1\n\toiFuuMOWn+Ko8UKWXEsVfxeBtR4ED4isKhFHWU37lo++bPHbrGy9Y9RAxYxknKfPbX0LUkWPIXO\n\t+yo6fItKASnbl+ngwati2Apl/oqklgx6h3pgwxmq2zkGrDeSSag3aGY9FUg7Ij4MdH6J+Oj8CaN\n\tDFyENwaeUb2Go1Uc2yb8zu27BOQ4FfTZGI2Mi8hQw1TfgzMlNAgeU+SeXjtOH5+WGduhOFqUjx2\n\tdCcSrg0rsnfnKkfU0cOKbsMaok4nAuLiu7ewDjDB5eGchSlJRREcv0MsQiwHRup/Yu/gFcTg83V\n\tTOji9/3YRPFQYNHY1of5VZHWqpM430Y6X2ivfoppJ46INcwEULwQbDWnfD4yY3TkqvKbcdLjzqb\n\tEdGcv8yy/D4WGNA==", "X-Developer-Key": "i=jacopo.mondi@ideasonboard.com; a=openpgp;\n\tfpr=72392EDC88144A65C701EA9BA5826A2587AD026B", "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 picks Barnabas patch\n\n[PATCH RFC 1/3] libcamera: controls: Add `ControlValueView`\n\nand on top of that one it makes the existing ControlValue a view\nre-naming it to ControlStorage.\n\nThe final goal is to prepare for the introduction of MetadataList and\nmake sure it expose the same types to applications as ControlList does.\n\nMetadataList stores control values in a serialized buffer of binary\ndata, while ControlList at the moment stores controls in a map of <id,\nControlValue>\n\nFor this reason MetadataList, not storing values in a map of\nControlValue, cannot use ControlValue in their interface but instead\nexpose a view-like interface which gives to application a read-only\naccess to the underlying storage. I think that's desirable for\nControlList as well, even more now that we're preparing to get towards a\nC ABI.\n\nOn top of this series, it would be possible to apply Barnabas\nhttps://patchwork.libcamera.org/project/libcamera/list/?series=5135\nthat gives to ControlValue (now ControlStorage) a move interface.\n\nI would even consider going further and make it a move-only type, so\nthat a time there is a single storage for a ControlValue.\n\nSending as RFC to collect opinions, as this certainly is an ABI breaking\nchange.\n\nSigned-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n---\nBarnabás Pőcze (1):\n libcamera: controls: Add `ControlValueView`\n\nJacopo Mondi (2):\n libcamera: Rename ControlValue to ControlStorage\n libcamera: Make ControlValue a view\n\n include/libcamera/control_ids.h.in | 2 +-\n include/libcamera/controls.h | 133 +++++--\n include/libcamera/internal/control_serializer.h | 2 +-\n include/libcamera/internal/debug_controls.h | 2 +-\n include/libcamera/internal/delayed_controls.h | 6 +-\n src/apps/cam/capture_script.cpp | 16 +-\n src/apps/cam/capture_script.h | 8 +-\n src/ipa/libipa/agc_mean_luminance.cpp | 4 +-\n src/ipa/libipa/awb.cpp | 4 +-\n src/ipa/libipa/awb.h | 2 +-\n src/ipa/rkisp1/algorithms/agc.cpp | 16 +-\n src/ipa/rkisp1/algorithms/ccm.cpp | 6 +-\n src/ipa/rpi/common/ipa_base.cpp | 18 +-\n src/ipa/rpi/pisp/pisp.cpp | 2 +-\n src/ipa/rpi/vc4/vc4.cpp | 20 +-\n src/libcamera/control_ids.cpp.in | 2 +-\n src/libcamera/control_serializer.cpp | 14 +-\n src/libcamera/controls.cpp | 399 ++++++++++++++-------\n src/libcamera/debug_controls.cpp | 4 +-\n src/libcamera/ipa_controls.cpp | 2 +-\n src/libcamera/pipeline/ipu3/ipu3.cpp | 4 +-\n .../pipeline/rpi/common/delayed_controls.h | 6 +-\n .../pipeline/rpi/common/pipeline_base.cpp | 2 +-\n src/libcamera/pipeline/rpi/vc4/vc4.cpp | 4 +-\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 10 +-\n src/libcamera/pipeline/virtual/config_parser.cpp | 2 +-\n src/libcamera/sensor/camera_sensor_legacy.cpp | 2 +-\n src/libcamera/sensor/camera_sensor_raw.cpp | 2 +-\n src/libcamera/v4l2_device.cpp | 14 +-\n src/py/libcamera/py_helpers.cpp | 18 +-\n src/py/libcamera/py_helpers.h | 2 +-\n test/controls/control_value.cpp | 8 +-\n test/serialization/serialization_test.cpp | 12 +-\n test/v4l2_videodevice/controls.cpp | 4 +-\n 34 files changed, 478 insertions(+), 274 deletions(-)\n---\nbase-commit: 7a42f3c3d88926aa05b07d9c6a783bdbbfb73610\nchange-id: 20250803-control_storage-8972535fed5f\n\nBest regards," }