Show a cover letter.

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

{
    "id": 2161,
    "url": "https://patchwork.libcamera.org/api/covers/2161/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/2161/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/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": "<20191012184407.31684-1-laurent.pinchart@ideasonboard.com>",
    "date": "2019-10-12T18:43:53",
    "name": "[libcamera-devel,v2,00/14] Use ControlList for both libcamera and V4L2 controls",
    "submitter": {
        "id": 2,
        "url": "https://patchwork.libcamera.org/api/people/2/?format=api",
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/2161/mbox/",
    "series": [
        {
            "id": 531,
            "url": "https://patchwork.libcamera.org/api/series/531/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=531",
            "date": "2019-10-12T18:43:53",
            "name": "Use ControlList for both libcamera and V4L2 controls",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/531/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/2161/comments/",
    "headers": {
        "Return-Path": "<laurent.pinchart@ideasonboard.com>",
        "Received": [
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B5A0A61563\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 12 Oct 2019 20:44:14 +0200 (CEST)",
            "from pendragon.bb.dnainternet.fi\n\t(dfj612yhrgyx302h3jwwy-3.rev.dnainternet.fi\n\t[IPv6:2001:14ba:21f5:5b00:ce28:277f:58d7:3ca4])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 168EB33A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 12 Oct 2019 20:44:14 +0200 (CEST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1570905854;\n\tbh=1amVpazAjhJYjxR/S0JnT7Y9Z4altdL2wXXvNzdesP0=;\n\th=From:To:Subject:Date:From;\n\tb=KUwvp1ChBNvIjQUflj9lPYgQUz5OhtVlkbDNroFiwOmUMZxJIl1lPwNN9b3Hjk+CX\n\tSzLkjIzM+qnxkY6EfyJei344xM//FymS02JyF3vqTLifVPgt6YC5o5Shkr6Ruytcyq\n\tKw8cMtGdkriBIxpVTY1du5rLEpZbiXQO8haC1vv4=",
        "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Sat, 12 Oct 2019 21:43:53 +0300",
        "Message-Id": "<20191012184407.31684-1-laurent.pinchart@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.21.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v2 00/14] Use ControlList for both\n\tlibcamera and V4L2 controls",
        "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>",
        "X-List-Received-Date": "Sat, 12 Oct 2019 18:44:14 -0000"
    },
    "content": "Hello,\n\nThis patch series generalises usage of ControlList for all controls,\nboth libcamera and V4L2.\n\nThe rationale is that using a single container to store controls allows\nbetter sharing of code, especially when we will implement serialisation\nand deserialisation. Additionally, a single container type simplifies\nthe IPA API.\n\nCompared to v1, the series has been rebased on top of the IPA API, which\nunveiled issues I hadn't foreseen. Large parts of the code have thus\nbeen rewritten.\n\nPatches 01/14 and 02/14 are small cleanups and fixes, and patch 03/14\nrestores the global list of libcamera controls that used to be\nauto-generated. While this wasn't strictly required in v1, this version\nnow depends on it.\n\nThe next three patches are also small enhancements to simplify usage of\nControlValue, ControlList and ControlId (04/14 to 06/14).\n\nPatch 07/14 is the first large change, and extends the ControlLis API to\nsupport accessing controls by numerical ID. This was previously\nimplemented in the V4L2ControlList class and got moved to ControlList as\nthis API will likely be used for deserialisation. As a result, the\nControlList now needs to be constructed with a reference to a\nControlIdMap to support mapping numerical IDs to ControlId instances.\n\nPatch 08/14 adds a new test for V4L2 controls, based on the vivid\ndriver. The test uses the existing V4L2ControlList API, and gets\nmigrated to ControlList further down in the series, to ensure that the\nAPI switch doesn't create regressions.\n\nPatch 09/14 is another small enhancement, after which patch 10/14 starts\nthe migration of V4L2 controls by using ControlId in V4L2ControlInfo. To\ndo so, a new V4L2ControlId class is introduced that simply wraps\nControlId with a convenience constructor. Patch 11/14 then removes the\nV4L2ControlInfo::type field that duplicates ControlId::type, and patch\n12/14 turns V4L2ControlInfoMap into a real class in preparation for\nextending it.\n\nPatch 13/14 is the bulk of the work, and by far the largest in the\nseries (but with a nice net removal of 168 lines of code). It moves\nV4L2ControlList to become an optional thin convenience wrapper around\nControlList, and ControlList can be used directly for V4L2 controls if\ndesired.\n\nFinally patch 14/14 merges the control and v4l2controls fields in\nIPAOperationData, simplifying the IPA API.\n\nMore code sharing between V4L2 and libcamera controls may still be\npossible, especially around V4L2ControlInfo and V4L2ControlInfoMap. I\nbelieve it can be built on top of this series.\n\nThe series is based on top of the master branch, patches have been\ncompiled and tested individually with gcc 5.4.0, and the whole series\nhas been compiled with gcc 5 to 9 and clang 6 to 8. Niklas, would you be\nable to run your manual rkisp1 IPA tests ?\n\nLaurent Pinchart (14):\n  libcamera: pipeline: rkisp1: Avoid copy assignment of V4L2 control map\n  libcamera: control_ids: Fix documentation for controls namespace\n  libcamera: control_ids: Generate map of all supported controls\n  libcamera: controls: Add comparison operators for ControlValue\n  libcamera: controls: Default ControlList validator argument to nullptr\n  libcamera: controls: Store control name in ControlId\n  libcamera: controls: Support accessing controls by numerical ID\n  test: v4l2_videodevice: Add V4L2 control test\n  libcamera: v4l2_device: Avoid copy of V4L2ControlInfo\n  libcamera: v4l2_controls: Add V4L2ControlId\n  libcamera: v4l2_controls: Remove V4L2ControlInfo type field\n  libcamera: v4l2_controls: Turn V4L2ControlInfoMap into a class\n  libcamera: v4l2_device: Replace V4L2ControlList with ControlList\n  libcamera: ipa: Merge controls and v4l2controls in IPAOperationData\n\n include/ipa/ipa_interface.h              |   1 -\n include/libcamera/control_ids.h.in       |   2 +\n include/libcamera/controls.h             |  30 ++-\n src/ipa/rkisp1/rkisp1.cpp                |  22 +-\n src/libcamera/camera_sensor.cpp          |   4 +-\n src/libcamera/control_ids.cpp.in         |  20 +-\n src/libcamera/controls.cpp               | 181 ++++++++++++---\n src/libcamera/gen-controls.py            |  21 +-\n src/libcamera/include/camera_sensor.h    |   7 +-\n src/libcamera/include/v4l2_controls.h    |  74 +++---\n src/libcamera/include/v4l2_device.h      |   6 +-\n src/libcamera/ipa_interface.cpp          |   8 -\n src/libcamera/pipeline/ipu3/ipu3.cpp     |   9 +-\n src/libcamera/pipeline/rkisp1/rkisp1.cpp |   8 +-\n src/libcamera/pipeline/uvcvideo.cpp      |  24 +-\n src/libcamera/pipeline/vimc.cpp          |  25 +--\n src/libcamera/request.cpp                |   5 +-\n src/libcamera/v4l2_controls.cpp          | 273 ++++++++---------------\n src/libcamera/v4l2_device.cpp            |  71 +++---\n test/controls/control_list.cpp           |   2 +-\n test/v4l2_videodevice/controls.cpp       |  98 ++++++++\n test/v4l2_videodevice/meson.build        |   1 +\n 22 files changed, 526 insertions(+), 366 deletions(-)\n create mode 100644 test/v4l2_videodevice/controls.cpp"
}