Show a cover letter.

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

{
    "id": 13218,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/13218/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/13218/",
    "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": "<20210805175848.24188-1-laurent.pinchart@ideasonboard.com>",
    "date": "2021-08-05T17:58:37",
    "name": "[libcamera-devel,v2,00/11] libcamera: Replace CameraData with Camera::Private",
    "submitter": {
        "id": 2,
        "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api",
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/13218/mbox/",
    "series": [
        {
            "id": 2312,
            "url": "https://patchwork.libcamera.org/api/1.1/series/2312/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2312",
            "date": "2021-08-05T17:58:37",
            "name": "libcamera: Replace CameraData with Camera::Private",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/2312/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/13218/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 73ECFC3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  5 Aug 2021 17:59:07 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 6B22A6884E;\n\tThu,  5 Aug 2021 19:59:06 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 26EE86026D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  5 Aug 2021 19:59:05 +0200 (CEST)",
            "from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9AA9CE04\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  5 Aug 2021 19:59:04 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"qa/4gi71\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1628186344;\n\tbh=kDfJ6iBlGaJnYsHsFY34Km6FLU6d9GLOfBcEvI3cMic=;\n\th=From:To:Subject:Date:From;\n\tb=qa/4gi71w9ohz0xw6S0Tf0YJjNpLfKYQCDlfG7npnwi4eU2Z9umvRbNqQlGa9Q97X\n\tilrDBXfAPBZDA+CQgpnW+AD2ujhOgrjzYSB2jmCF47GcSLp9iNXIrGSa9wTsdpXKvS\n\t8H4CN3pRM+gV1JXICCr6tYMlR2Y6OizhJrbckP7s=",
        "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Thu,  5 Aug 2021 20:58:37 +0300",
        "Message-Id": "<20210805175848.24188-1-laurent.pinchart@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.31.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v2 00/11] libcamera: Replace CameraData\n\twith Camera::Private",
        "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": "Hello,\n\nThis patch series reworks the libcamera core and pipeline handlers to\ndrop the CameraData class, replacing it with Camera::Private.\n\nThe Camera::Private class implements the d-pointer design pattern for\nthe Camera class, and stores internal camera data that shouldn't be\nvisible through the public API. The CameraData class is a container used\nby pipeline handlers to store per-camera private data. The two classes\nthus overlap in their purpose.\n\nThis series cleans up this situation by merging CameraData into\nCamera::Private. Pipeline handlers then subclass Camera::Private instead\nof CameraData, and pass the private data directly to the Camera\nconstructor.\n\nThe first 7 patches from the previous RFC version, preparing for this\nchange, have been merged already. This version starts, in 01/11, by\npassing the pointer to the private data to the Camera constructor, to\nallow subclassing Camera::Private in pipeline handlers. An alternative\nwould be to force pipeline handlers to subclass the Camera class, which\nI believe should be doable (I haven't tried it though) but would be\na more intrusive change in the pipeline handlers. Decoupling the\ninstantiation of the public and private classes doesn't seem to result\nin awful code, but it requires the public class constructor to manually\ninitialize the private class instance (at least in some cases). I'm not\nentirely sure if this is a slipery slope or not.\n\nAfter that, changes are fairly straightforward. Patch 09/11 moves the\nmembers of the existing CameraData class to Camera::Private. Patches\n02/11 to 08/11 update pipeline handlers individually to migrate to\nCamera::Private. Patch 09/11 then cleans up by dropping the CameraData\nclass, and patch 10/11 updates the pipeline handler guide accordingly.\n\nFinally, patch 11/11 is a cleanup (suggested by Jacopo) that drops the\nindirection in the implementation of Camera::controls() and\nCamera::properties(). It looks quite neat in my opinion, and worth the\neffort.\n\nAll pipeline handlers have been compile-tested, and I've runtime-tested\nuvcvideo and vimc. Once the approach gets approved (or rejected, and the\nseries rewritten to subclass Camera instead), I'll test the other\npipeline handlers.\n\nLaurent Pinchart (11):\n  libcamera: camera: Pass Private pointer to Camera constructor\n  libcamera: pipeline_handler: Move CameraData members to\n    Camera::Private\n  libcamera: pipeline: simple: Migrate to Camera::Private\n  libcamera: pipeline: uvcvideo: Migrate to Camera::Private\n  libcamera: pipeline: vimc: Migrate to Camera::Private\n  libcamera: pipeline: rkisp1: Migrate to Camera::Private\n  libcamera: pipeline: raspberrypi: Migrate to Camera::Private\n  libcamera: pipeline: ipu3: Migrate to Camera::Private\n  libcamera: pipeline_handler: Drop CameraData class\n  Documentation: guides: pipeline-handler: Migrate to Camera::Private\n  libcamera: pipeline_handler: Drop controls() and properties()\n    functions\n\n Documentation/Doxyfile.in                     |   1 -\n Documentation/guides/pipeline-handler.rst     |  67 ++++-----\n include/libcamera/camera.h                    |   5 +-\n include/libcamera/internal/camera.h           |  11 +-\n include/libcamera/internal/pipeline_handler.h |  32 +---\n src/libcamera/camera.cpp                      |  89 +++++++++--\n src/libcamera/pipeline/ipu3/ipu3.cpp          |  38 ++---\n .../pipeline/raspberrypi/raspberrypi.cpp      |  24 +--\n src/libcamera/pipeline/rkisp1/rkisp1.cpp      |  26 ++--\n src/libcamera/pipeline/simple/simple.cpp      |  25 ++--\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  |  19 +--\n src/libcamera/pipeline/vimc/vimc.cpp          |  19 +--\n src/libcamera/pipeline_handler.cpp            | 138 +-----------------\n 13 files changed, 210 insertions(+), 284 deletions(-)"
}