Show a cover letter.

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

{
    "id": 20766,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/20766/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/20766/",
    "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": "<20240805100038.11972-1-jaslo@ziska.de>",
    "date": "2024-08-05T09:28:35",
    "name": "[0/3] gstreamer: Generate controls from control_ids_*.yaml files",
    "submitter": {
        "id": 173,
        "url": "https://patchwork.libcamera.org/api/1.1/people/173/?format=api",
        "name": "Jaslo Ziska",
        "email": "jaslo@ziska.de"
    },
    "mbox": "https://patchwork.libcamera.org/cover/20766/mbox/",
    "series": [
        {
            "id": 4485,
            "url": "https://patchwork.libcamera.org/api/1.1/series/4485/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4485",
            "date": "2024-08-05T09:28:35",
            "name": "gstreamer: Generate controls from control_ids_*.yaml files",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/4485/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/20766/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 612B1C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  5 Aug 2024 10:01:28 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 02EE663381;\n\tMon,  5 Aug 2024 12:01:28 +0200 (CEST)",
            "from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de\n\t[81.169.146.220])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0A26D6195D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  5 Aug 2024 12:01:25 +0200 (CEST)",
            "from archlinux.fritz.box by smtp.strato.de (RZmta 51.1.0 AUTH)\n\twith ESMTPSA id zb9f0a075A1Pvk8\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits))\n\t(Client did not present a certificate);\n\tMon, 5 Aug 2024 12:01:25 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ziska.de header.i=@ziska.de header.b=\"oRdu1bpQ\";\n\tdkim=permerror (0-bit key) header.d=ziska.de header.i=@ziska.de\n\theader.b=\"3YkZL12b\"; dkim-atps=neutral",
        "ARC-Seal": "i=1; a=rsa-sha256; t=1722852085; cv=none;\n\td=strato.com; s=strato-dkim-0002;\n\tb=b+5CmOBwXQSyhTGBXWaVwYgI3kCtZ/ucjf9X96VAI5oIrt4qrpepUu8CoYve7rKRQx\n\thGNi3N0pV5J6QFpyqOclun2ca76XoZLM96gX67JkQRY3ch+S7+OO4vfHrHdH6KCD0jNp\n\tGYZ2HL+Aun3+0hu/nzALcP1z/IwUgrvxTSavYIH/O6IN2p7QPuD/HGLXtzpuB5yfCnTL\n\tpRIez7VBXnR6j8JQiAinV5iPskqp8LgZ3VgoUxzo1XmJvfcmLyoS4uHWZFX5GWEyDCp/\n\tqSA6hiF08IX5QZ4eeRwBMp3EIej89His0JM58TCJJp07YdtaQ4BDFxEaIxM6lIK/WAbe\n\tz/AQ==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; t=1722852085;\n\ts=strato-dkim-0002; d=strato.com;\n\th=Message-ID:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender;\n\tbh=24DLTWZXo9MM+0T8TFbDm12aSRixjW86qmFpVnU+fiA=;\n\tb=e/Ii7FznGI5vZqNPttvXCryQlF93tZIXs4ab+Awx8B7zDAU5FSNzs7M1I1CxGsuSmN\n\te/l8U1mvb5hyK05V/NEavXMaRt6IVwlKygdRMcI9AgzyXWsajhT4WujhaCtWDk14mUZj\n\tpBdeUPpOUO+nMDx98y30hJO6i0kp8X019ELobLveRfreDt6izr6Cuy2At+E+lGuhInFN\n\tAYiL1pQpBnnhcBBgMHLTpmeNyznmit6U4n5ly6+vuKKFFMltFU3wW9ck64IyNI0qhDOv\n\tfj99PEIvA5zDrSin8829kXpZpEtEVbnZMmD67Sl6Tg29EMzPEcHVH0WhKXlPs9KWNHfE\n\tV1jg==",
        "ARC-Authentication-Results": "i=1; strato.com;\n    arc=none;\n    dkim=none",
        "X-RZG-CLASS-ID": "mo00",
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; t=1722852085;\n\ts=strato-dkim-0002; d=ziska.de;\n\th=Message-ID:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender;\n\tbh=24DLTWZXo9MM+0T8TFbDm12aSRixjW86qmFpVnU+fiA=;\n\tb=oRdu1bpQmXZB1qFOPbzV6Lk91GEvf04bX767Nw6LLesNSxUOtWI344YnLjlTUn0iS8\n\tffVtFyeyincy11oI1eX8GMZwXzJPmBz5yhQcQP/ZaDQ6WDMI3RjFF1ZgFZYJ0LJchS7Z\n\thPzZ4Y/Or2CPD5L5dOL3TlhTIc6igpHiUSFMofQZ5vGn/uHII+nwiWEMC8Hqp+m/9aE1\n\t718GjmAcUOCl35G0tMi8qdD9prY38c8LnXrzi2dpQNXTey5ZPQUyYkyGQ0aLgPE+t8No\n\tnHVLVyu+LyG5x0HdRh83o9+oQDMTqlimpg0iXSpElRiwhREF2AkE55nw8VhZ1W8iwlPk\n\tIUtQ==",
            "v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1722852085;\n\ts=strato-dkim-0003; d=ziska.de;\n\th=Message-ID:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender;\n\tbh=24DLTWZXo9MM+0T8TFbDm12aSRixjW86qmFpVnU+fiA=;\n\tb=3YkZL12blxs7eQM0sxbGj5h4ddUHtD4+Tx4nVfJiS7zICA9syLD10KRyHAc47BRqVJ\n\tkoJXTObPVrMKuVpYRABQ=="
        ],
        "X-RZG-AUTH": "\":Jm0XeU+IYfb0x77LHmrjN5Wlb7TBwusDqIM6Hizy8VdfzvKi4yoFC9cCg4qxBvJaP2L5sFjJoIK+3CsR3+pCW/FVb/tK\"",
        "From": "Jaslo Ziska <jaslo@ziska.de>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Jaslo Ziska <jaslo@ziska.de>",
        "Subject": "[PATCH 0/3] gstreamer: Generate controls from control_ids_*.yaml\n\tfiles",
        "Date": "Mon,  5 Aug 2024 11:28:35 +0200",
        "Message-ID": "<20240805100038.11972-1-jaslo@ziska.de>",
        "X-Mailer": "git-send-email 2.46.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "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": "Hi everyone,\n\nin this patchset I implemented libcamerasrc properties which are generated from\nthe control_ids_*.yaml files.\n\nThe first commit removes the auto-focus-mode property which was already\nimplemented (it is added again in the next commit).\nThe second commit adds a Python script to generate C++ code capable of\ninteracting with the controls and adds the controls to libcamerasrc.\nThe third commit is just a small fix for the missing closing \"greater than\"\nsymbol in the author string I noticed.\n\nThe gstlibcamera-controls.h file is taken from Nicolas' branch with the change\nthat I removed the enum with the control names from the class. Instead the enum\nvariants from libcamera::controls:: are now used directly.\nThe structure of the gstlibcamera-controls.cpp.in file is also taken from\nNicolas. The only change is that its content now gets generated by\ngen-gst-controls.py\n\nThe boilerplate of gen-gst-controls.py is mostly copied from gen-controls.py.\nThis is also where I have some questions:\n\nThe definition of the ControlEnum and Control Python classes (and some helper\nfunctions) is now duplicate code. Should this be handled differently somehow to\navoid the code duplication?\n\nI haven't added a copyright to gen-gst-controls.py yet as I am not sure because\nI copied much of it from gen-controls.py.\n\nAnother small issue is that I haven't implemented the Rectangle type yet and\nthus the controls using it won't show up. The reason for this is that there\nis the AfWindows control which is an array of Rectangles. As the gstreamer\nproperties can only be glib types I wasn't sure what to do here: For a\nsingle Rectangle you could use an array and make the entries (x, y, w, h)\nbut what about an array of Rectangles? Should it use an array with 4 * N\nentries, so (x, y, w, h) for each value?\n\nAt the moment the gstreamer properties all have zero (or the first enum value)\nas a default and the minimum and maximum numeric values as minimum and maximum\nvalues for numbers. Also all controls are defined as readable and writeable.\nBecause of this (maybe as a discussion) I have a small wish list of things I'd\nlike to see added in the control_ids_*.yaml files which would greatly improve\nthe gstreamer properties:\nFor enum and bool controls: the default value if available.\nFor numeric controls: the minimum, maximum and default value.\nAnd for all controls: whether it is read-only, write-only or read-write.\n\nBest regards,\n\nJaslo\n\nJaslo Ziska (3):\n  gstreamer: Remove auto-focus-mode property\n  gstreamer: Generate controls from control_ids_*.yaml files\n  gstreamer: Fix missing \"greater than\" symbol in author string\n\n src/gstreamer/gstlibcamera-controls.cpp.in |  46 +++\n src/gstreamer/gstlibcamera-controls.h      |  36 ++\n src/gstreamer/gstlibcamerasrc.cpp          |  47 +--\n src/gstreamer/meson.build                  |  14 +\n utils/gen-gst-controls.py                  | 398 +++++++++++++++++++++\n utils/meson.build                          |   1 +\n 6 files changed, 510 insertions(+), 32 deletions(-)\n create mode 100644 src/gstreamer/gstlibcamera-controls.cpp.in\n create mode 100644 src/gstreamer/gstlibcamera-controls.h\n create mode 100755 utils/gen-gst-controls.py\n\n--\n2.46.0"
}