Show a cover letter.

GET /api/1.1/covers/15603/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 15603,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/15603/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/15603/",
    "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": "<20220401000616.12976-1-Rauch.Christian@gmx.de>",
    "date": "2022-04-01T00:06:11",
    "name": "[libcamera-devel,0/5] generate and use fixed-sized Span Control types",
    "submitter": {
        "id": 111,
        "url": "https://patchwork.libcamera.org/api/1.1/people/111/?format=api",
        "name": "Christian Rauch",
        "email": "Rauch.Christian@gmx.de"
    },
    "mbox": "https://patchwork.libcamera.org/cover/15603/mbox/",
    "series": [
        {
            "id": 3022,
            "url": "https://patchwork.libcamera.org/api/1.1/series/3022/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3022",
            "date": "2022-04-01T00:06:11",
            "name": "generate and use fixed-sized Span Control types",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/3022/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/15603/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 52BD3C0F1B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  1 Apr 2022 00:06:34 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 85DC165633;\n\tFri,  1 Apr 2022 02:06:33 +0200 (CEST)",
            "from mout.gmx.net (mout.gmx.net [212.227.15.15])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E7DA160135\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  1 Apr 2022 02:06:31 +0200 (CEST)",
            "from localhost.localdomain ([92.10.251.63]) by mail.gmx.net\n\t(mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id\n\t1MIMbO-1nmER11sgu-00EIYK; Fri, 01 Apr 2022 02:06:31 +0200"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1648771593;\n\tbh=l/tZWxQ1Somu1FPOzMlLIrfe4No3CI/birou7jckx48=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=wINShdzL73FleeS1Vzi/3xDTB1j0SdHnGdejhtmnuKexs57u93Wo00k2dcjAPMOcz\n\t7Yap2Wu+aCSQ+sPty+sI6LWg+nM3dntoSlwVno3Vsg19nQhgPukpgQy9acqpyfC/Oe\n\tlhk5vNF69HoNmfH0mMNMxgb0uhth/lLb7opemmOCtjVUxF99uwVW5TooqFVUO2LbtG\n\tDuuNfR0/VpT3gqn2XxDBTiMwVBTapC0y2wkCsrUEyVXxEOXnwitU0mpmlMITx2OjaU\n\t72kxaKEdlLaeZVFDaW1IpVjgttd10I9mXVL17YLairP0NblZX1YPyXjcyFNtb+2Kq/\n\tFM9aC2crMVlsg==",
            "v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net;\n\ts=badeba3b8450; t=1648771591;\n\tbh=l/tZWxQ1Somu1FPOzMlLIrfe4No3CI/birou7jckx48=;\n\th=X-UI-Sender-Class:From:To:Cc:Subject:Date;\n\tb=Aj5xEIsfEWyW7k0sXXL85Puhoa+6yhgtfdPST7jTJhz4SmHeg9rfgmzCDfk5MOh2s\n\t7WIzxZVUpMlXIGVHQX4Y+c+EhZ5aY11ASDpoIFgJ/2lo6qc0a1ardwTGCFbfY0fmNO\n\t9u+V7BHQNG748EqCMFvxUiM0KxrOeibb7zkmiaQQ="
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=gmx.net header.i=@gmx.net\n\theader.b=\"Aj5xEIsf\"; dkim-atps=neutral",
        "X-UI-Sender-Class": "01bb95c1-4bf8-414a-932a-4f6e2808ef9c",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Fri,  1 Apr 2022 01:06:11 +0100",
        "Message-Id": "<20220401000616.12976-1-Rauch.Christian@gmx.de>",
        "X-Mailer": "git-send-email 2.25.1",
        "MIME-Version": "1.0",
        "X-Provags-ID": "V03:K1:OVnlV5mIycrJpRVVSFmjLdCZWOIb7AUKMAN36QrhEl4xen62VFh\n\trlLHaVd0Q0WVUxskGgkmgkPJFWT+CLYdLDUJKJYCBdOgQLx/P7EZIch5qSs5Wa3jOMc+gKc\n\tKMP9PZM5JMqZ0aTe3IRSTfeZd+5Ks0YMlsOy2Uksk09/rHnYKG00RtTv1bCWvZFtEFHFECk\n\thAjWXwLslCXQNHibEop3w==",
        "X-Spam-Flag": "NO",
        "X-UI-Out-Filterresults": "notjunk:1; V03:K0:+LKxQE8IhXs=:6wmyk0DHWfWabbH0wHXhI+\n\tO+t46riB81orcfLFDUWedqZCntYpwftm1f887CqFaVpAq2wdQvpvUoCQh7GAAtYkubkaLzgK8\n\tD9hQRdL3r7//KRI5BnIdjQqXk63ZUgxkBRkjZ3UYtAFVgscPXNqeGnzfqIHGyWHS2aacIoirA\n\tpfiw8kkPl15AJfqO8M/eomN4p5tVN4/tEgcFdPOFpn+1FL06uPjbWtTBeDEjQxFV+IgWhXD/H\n\tcISryqIG9RlMzE2JYcDC//rxfLMj2fPPN5XD+rqiK5SBHdgMu7j0MWdSm4LTnQoEyAeAbYalT\n\tVYfYClaugocsiNXAoNtHxAcddo+pPfLeSejZqFzkGXMjMue8jIDtd78A39BBw2IYEtbfZKCjk\n\tJlu115cPV9ytRMDMRtBCxIBzDtdGVvAGW4QwkNl7zSH8ugVnB4szbvVTilEmojyko9FgWASAv\n\tHEbf6hwTgBpNBn/bWH3EBZ4OxCZtpsZXF7mB99+D3T8oAq5vsguD192OLThK4XY4ytLyMDShL\n\tTp5rS6sBP9kjr7YukQncaDlqMh+64gWnJtm+xO7PawsDz7GlVaBWeCrL2oAOli+bm299heyjb\n\teQH3z3SgT+/YPMTPXvC/7hGF6ParceldacewMQFXJTbU3MNtiVTYG8RUBTxamvtI4UqasDhdP\n\tr07IuAKtqCq0BK8jd3qRz22pDEO1yYumXL8RsoFPunlHtdx6VEgRmyP1hhhQxwdFwFMO5Cl/b\n\tdbV3CZXtlXJS28tF9Kl2PQBX7RUsbENHeWoOCN2rP0HWrDzEXdCysGB0w6SZJisnlESV2wW9b\n\tbQl1AzEcBjCF3au8m9XDwl3rxZJjFwk0qv36LbZeE8attbTUHCj68vt8PedHGcRY1YuEKE1zR\n\tOInD7qqgsvaDNGCDFcY4IFXSD2IcDDvsfKQ/l3zSqMWWW9cFXf0hWf10kenlqsQdr/1idgsKR\n\thR5n4ReH2wHvzyMibBuY+f7DtYbR84DfzRizyZSWzPmLPWgeot/oiSFCYzeHmxiFKQlLnGNDJ\n\tKQxinXtl6VuiNKbLvrAnhkWiyvtVQMqMBeXfCbikfuxiYFUripzIPBE1Q8lhQAnHe/Eavk+5i\n\tbU+X54G4PCRLDk=",
        "Subject": "[libcamera-devel] [PATCH 0/5] generate and use fixed-sized Span\n\tControl types",
        "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>",
        "From": "Christian Rauch via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>",
        "Reply-To": "Christian Rauch <Rauch.Christian@gmx.de>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Hello,\n\nThis series of patches explicitely defines Spans of Control as either fixed-\nor variable- sized. The control and property definitions in \"control_ids.yaml\"\nand \"property_ids.yaml\", respectively, already specify the size of array-typed\nControls. The \"gen-controls.py\" script, which generates source and header files\nfrom those definitions, currently ignores the provided \"size\" value and\ntranslates any \"size\" into a variable-sized Span<T>.\n\nThe motivation for this is to carry the dimensionaltiy of a Control from its\noriginal definition within the source into the public API, in order to provide\ninformation about the dimension of the settings that a camera is expecting.\nCurrently, this information is not available via the public API.\n\nThis patch series implements the fixed-sized Span<T,N> generation in three steps:\n1. The format of the \"size\" property in the definitions is now interpreted as a\n   shape array, where an array of size greater than 1 (e.g. [3,3]) defines the\n   shape of a multi-dimensional array (a.k.a. tensor), and an empty size (e.g. [])\n   defines a variable-sized array.\n2. When a Control is deifned with a size in the yaml (e.g. \"size: [2]\"), the\n   \"gen-controls.py\" script now translates this into a fixed-sized Span<T,N>\n   (e.g. with N=2). This requires a default contructor for fixed-sized Spans and\n   the removal of 0-fixed-sized Spans (i.e. Span<T,0>).\n2. Where applicable, the old variable-sized Span<T> types are replaced by the new\n   fixed-sized Span<T,N> types, in some cases by explicit casts.\n\nThis patch set is submitted in conjunction with my set of patches that fully define\nthe ControlInfo of Span Controls, but can be applied seperately without a change in\nthe default behaviour.\n\nBest,\nChristian\n\n\nChristian Rauch (5):\n  define Span size as shape vector\n  generate fixed- and variable-sized Span Controls\n  provide a default fixed-sized Span constructor\n  apply clang-format style\n  apply explicit fixed-sized Span type casts\n\n include/libcamera/base/span.h                 |  50 +++---\n include/libcamera/controls.h                  |   2 +-\n src/ipa/raspberrypi/raspberrypi.cpp           |  21 +--\n src/libcamera/control_ids.yaml                |   2 +-\n .../pipeline/raspberrypi/raspberrypi.cpp      |  36 +++--\n src/libcamera/property_ids.yaml               |   4 +-\n src/qcam/dng_writer.cpp                       | 142 +++++++++---------\n test/span.cpp                                 |   6 +-\n utils/gen-controls.py                         |  33 ++--\n 9 files changed, 160 insertions(+), 136 deletions(-)\n\n--\n2.25.1"
}