Show a cover letter.

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

{
    "id": 9426,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/9426/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/9426/",
    "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": "<20200829115429.30010-1-david.plowman@raspberrypi.com>",
    "date": "2020-08-29T11:54:21",
    "name": "[libcamera-devel,v5,0/8] 2D transforms",
    "submitter": {
        "id": 42,
        "url": "https://patchwork.libcamera.org/api/1.1/people/42/?format=api",
        "name": "David Plowman",
        "email": "david.plowman@raspberrypi.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/9426/mbox/",
    "series": [
        {
            "id": 1252,
            "url": "https://patchwork.libcamera.org/api/1.1/series/1252/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1252",
            "date": "2020-08-29T11:54:21",
            "name": "2D transforms",
            "version": 5,
            "mbox": "https://patchwork.libcamera.org/series/1252/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/9426/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 06074BF019\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 29 Aug 2020 11:54:37 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3ACE66291E;\n\tSat, 29 Aug 2020 13:54:36 +0200 (CEST)",
            "from mail-wm1-x336.google.com (mail-wm1-x336.google.com\n\t[IPv6:2a00:1450:4864:20::336])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AF09B6037D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 29 Aug 2020 13:54:34 +0200 (CEST)",
            "by mail-wm1-x336.google.com with SMTP id b79so1411217wmb.4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 29 Aug 2020 04:54:34 -0700 (PDT)",
            "from pi4-davidp.lan (plowpeople3.plus.com. [80.229.223.72])\n\tby smtp.gmail.com with ESMTPSA id\n\tv16sm3071523wmj.14.2020.08.29.04.54.33\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tSat, 29 Aug 2020 04:54:33 -0700 (PDT)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"dsSzwafQ\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=qiIWPkAx0NYImiTCgW4Wdl46j3TJq2a5xgBl8YF1ES8=;\n\tb=dsSzwafQCdX7fSsm5hGdFGdFzE+D0Hrrbiyp1LvWqTqnrCYAnquTfPJKaXkIrrym2H\n\tsvBWMQy1QIRPb6I1R7FSFtKfO816uJztu3T9sIBfgfonTRk0rU6SMyqlQOiqUd3tFQjN\n\tU12TSyN9hgesp4yvDXDGKfOEfVPbVrr3oS+b4pYBZP6FFYGNCfizL46Iv1D7qYKhGvdn\n\t0hv3Af2+MUSs1caJ6r9ZXCN8tdp5cAok8/WWRhKD4V47rhd30AeMcte/4w8EyCBzhPej\n\tLQ95tF33VDF+/ak/905SHdcjDlTfQbr4yff4LYqLSUi0rsFuPFiweEpv36x/4k3QciPL\n\txauw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=qiIWPkAx0NYImiTCgW4Wdl46j3TJq2a5xgBl8YF1ES8=;\n\tb=jDz8g7c33pmZw2B4YVfH7rNAj3h4WEeb9NC6dv+333zmsu8QGwn38Gd1Dr796kuCmB\n\tRUZdlDpFvAMulzjJ6Fg/w1dArR7JklCh3WMzmVAS8QQUwcNRZFJyMuzx6N4ugZoTPZlX\n\tyW+QxCeGXbKJJjhGWtO4kheUlEIJv7R+1a0k8Tu5kRx25qXZuNJlmWdq2p1s1RVqNrg6\n\tm71qHlUnA/MW8ub7jgVvhF7mpFr0VCH3zpndBdkqn5dUnvZqwyRWU+6iP1JUZfB8CScA\n\tmX8Ofc1woWY7eWtKPoCgEplJ0r2EmnNBx5BVOySfKWJlpwib9BUqFvYMcC25gN94lubs\n\tgI5A==",
        "X-Gm-Message-State": "AOAM533eItaNn3zgD0EvOvZaIkfYE/PgIvDnInOSN2Mv/2pnRFCirBWC\n\t1lq7A5n2XMPMH1CoI/XzpM8hPGB3mrKu/Q==",
        "X-Google-Smtp-Source": "ABdhPJx2xg98aHBt0yrlC05IvwVSbiYU8uxxdYpEFNG83lW3YHgV5Ob7sVuTws20RxCxRcU6nSxnXQ==",
        "X-Received": "by 2002:a7b:c084:: with SMTP id r4mr2915147wmh.20.1598702073975; \n\tSat, 29 Aug 2020 04:54:33 -0700 (PDT)",
        "From": "David Plowman <david.plowman@raspberrypi.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Sat, 29 Aug 2020 12:54:21 +0100",
        "Message-Id": "<20200829115429.30010-1-david.plowman@raspberrypi.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "MIME-Version": "1.0",
        "Subject": "[libcamera-devel] [PATCH v5 0/8] 2D transforms",
        "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>",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Hi everyone\n\nHere's another version of 2D transforms, after the previous version\nslightly set the cat among the pigeons! Of course, the basic way in\nwhich transforms work is unchanged, but we now avoid touching the\nsensor until the configure() method. The number of separate commits\nhas gone up to eight, let me walk through them:\n\n1. This reverts that same patch as we did previously.\n\n(Note that there was previously a commit here that moved the sensor\nH/VFLIP manipulation into validate(), but this one has been dropped,\nleaving it in configure().)\n\n2. This is a new commit that gives pipeline handlers access to the\nv4l2_query_ext_ctrl structure for a V4L2 control. The V4L2Device has\nalready retrieved this information, but doesn't make it publicly\navailable. I went with a simple extra queryCtrl function as it seemed\nsimplest and touches least stuff, but I did wonder about other ways of\ndoing it. Perhaps the flags could be stored also in the\nV4L2ControlInfo structure and made available from there? But currently\nthe V4L2Device appears to give out ControlInfos, not\nV4L2ControlInfos... anyway, there's perhaps a bit of a discussion to\nhave here.\n\n3. The third commit adds the transform enum and is unchanged.\n\n4. This is also a new commit, and adds a transform method to the\nV4L2PixelFormat class that operates only on Bayer formats. I thought\nit was worth adding this function in a place where it would be helpful\nto other pipeline handlers, rather than burying it in the RPi one. I'm\nafraid I don't have a more elegant implementation of it other than by\nusing tables.\n\n5. Adds the transform field to the CameraConfiguration. Unchanged.\n\n6. This is where we handle the transforms properly in the RPi pipeline\nhandler. validate() now works out what the Bayer order of any raw\nstreams _will_ be, given the transform. The actual updating of the\nflip bits in the sensor is still in configure(), as it was a couple of\nversions ago!\n\n7 and 8. Both unchanged.\n\nI think that's everything.\n\nThanks and best regards\nDavid\n\nDavid Plowman (8):\n  libcamera: pipeline: raspberrypi: Revert \"Set sensor default\n    orientation before configure()\"\n  libcamera: Allow access to v4l2_query_ext_ctrl structure for a V4L2\n    control\n  libcamera: Add Transform enum to represent 2D plane transforms.\n  libcamera: Allow Bayer pixel formats to be transformed\n  libcamera: Add user Transform to CameraConfiguration\n  libcamera: raspberrypi: Set camera flips correctly from user transform\n  libcamera: raspberrypi: Plumb user transform through to IPA\n  libcamera: ipa: raspberrypi: ALSC: Handle user transform\n\n include/libcamera/camera.h                    |   3 +\n include/libcamera/internal/v4l2_device.h      |   2 +\n include/libcamera/internal/v4l2_pixelformat.h |   3 +\n include/libcamera/meson.build                 |   1 +\n include/libcamera/transform.h                 |  73 ++++\n src/ipa/raspberrypi/controller/camera_mode.h  |   4 +\n src/ipa/raspberrypi/controller/rpi/alsc.cpp   |  13 +-\n src/ipa/raspberrypi/raspberrypi.cpp           |  48 +--\n src/libcamera/camera.cpp                      |  16 +-\n src/libcamera/meson.build                     |   1 +\n src/libcamera/pipeline/ipu3/ipu3.cpp          |   5 +\n .../pipeline/raspberrypi/raspberrypi.cpp      |  96 +++++-\n src/libcamera/pipeline/rkisp1/rkisp1.cpp      |   5 +\n src/libcamera/pipeline/simple/simple.cpp      |   5 +\n src/libcamera/pipeline/uvcvideo/uvcvideo.cpp  |   5 +\n src/libcamera/pipeline/vimc/vimc.cpp          |   5 +\n src/libcamera/transform.cpp                   | 312 ++++++++++++++++++\n src/libcamera/v4l2_device.cpp                 |  15 +\n src/libcamera/v4l2_pixelformat.cpp            |  94 +++++-\n 19 files changed, 668 insertions(+), 38 deletions(-)\n create mode 100644 include/libcamera/transform.h\n create mode 100644 src/libcamera/transform.cpp"
}