Show a cover letter.

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

{
    "id": 15090,
    "url": "https://patchwork.libcamera.org/api/covers/15090/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/15090/",
    "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": "<20211209101245.6187-1-david.plowman@raspberrypi.com>",
    "date": "2021-12-09T10:12:37",
    "name": "[libcamera-devel,v10,0/8] Colour spaces",
    "submitter": {
        "id": 42,
        "url": "https://patchwork.libcamera.org/api/people/42/?format=api",
        "name": "David Plowman",
        "email": "david.plowman@raspberrypi.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/15090/mbox/",
    "series": [
        {
            "id": 2830,
            "url": "https://patchwork.libcamera.org/api/series/2830/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2830",
            "date": "2021-12-09T10:12:37",
            "name": "Colour spaces",
            "version": 10,
            "mbox": "https://patchwork.libcamera.org/series/2830/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/15090/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 5393EBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  9 Dec 2021 10:13:33 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id A5A9160876;\n\tThu,  9 Dec 2021 11:13:32 +0100 (CET)",
            "from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com\n\t[IPv6:2a00:1450:4864:20::32e])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 01F6E60224\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  9 Dec 2021 11:13:30 +0100 (CET)",
            "by mail-wm1-x32e.google.com with SMTP id\n\tk37-20020a05600c1ca500b00330cb84834fso6147895wms.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 09 Dec 2021 02:13:30 -0800 (PST)",
            "from pi4-davidp.pitowers.org\n\t([2a00:1098:3142:14:e4a2:3070:eea4:e434])\n\tby smtp.gmail.com with ESMTPSA id\n\tj8sm5079449wrh.16.2021.12.09.02.13.29\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 09 Dec 2021 02:13:29 -0800 (PST)"
        ],
        "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=\"Wop+9SrC\"; 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=DJhqL6zxRGmwohsCMajmPh6+F/ia3WjN1h8z2LN4OQw=;\n\tb=Wop+9SrCvHBjHBwDRSMLsZbseKnkcCPCyB44oLhMb3kdCR//CAx7Mg0pwCXgtllsrS\n\tZqLxCSSjNYlECZnZRjdracoVZZ1Bh78jbdAMFAkHrmpm/lwFY59q0X6YcZOiYIv1dkB2\n\t/j5uaVa2Pka9cjbYlxhS74l5NWZigwh1jjpJBXvFXZVxZ7Z/VnN6pLyJnqidsVg2RUR0\n\tZjfNMEH63pZbdX7LTywQkgSsli+DKNXNOjR0iSMsEtJh94SQ6o0/2vLrc5CORPKGLFIJ\n\teZQ6h5AMKSwMTrNygG7sSDD1rTiheODhuGPrCnVCGfehTgW5wKP7z+aOcMObDolKlPT9\n\trGug==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version\n\t:content-transfer-encoding;\n\tbh=DJhqL6zxRGmwohsCMajmPh6+F/ia3WjN1h8z2LN4OQw=;\n\tb=MPvVMHUEMPij7AaYsQWcydeGsCULGPrcYdRfYO2bZ2WXTTrEchQaRXkOuR4lrlPB+j\n\tzjzfgDtFkn1+gXB46q4rsFDQIZxVpgrfNsCkkLKricUul4NcRt7cy6V3kl/g8KG0/JrE\n\tpXhSU4s7ldsBy9bpScCVFyziAlZEJ2m7forDn8lMgIDp7fRi8gIbdpcN68Ucdgdi3aIw\n\t8xSpxtzock91GjArF+8HEKUpOJmSZ1HLROZcjdYOR6pe2JgOcLz4WBW/FSngQkvjM3Sx\n\t2WO8ZK8G7ZNsKnzIomElONI3LXPfSClx5uW2O80RKwn3xXMBIa1JwCOD+0V5fc7iIgDw\n\ttNeA==",
        "X-Gm-Message-State": "AOAM531k5WRcwIg7LzFK5UDsVfQ4GurD4f3wWL2nvcj3VX0+cNhLHckS\n\t62we3licL4Pd2IHAeKGHZ5N6TEGlb8c+pbW6",
        "X-Google-Smtp-Source": "ABdhPJxMo2M9iYhuoJGpddugCgyRiiJwcewfEyxZLQGLohBpWg1PC2I54H1qmEJW+YmNOBQ/qxxAow==",
        "X-Received": "by 2002:a05:600c:2297:: with SMTP id\n\t23mr5738684wmf.73.1639044810261; \n\tThu, 09 Dec 2021 02:13:30 -0800 (PST)",
        "From": "David Plowman <david.plowman@raspberrypi.com>",
        "To": "libcamera-devel@lists.libcamera.org,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>,\n\tHans Verkuil <hverkuil-cisco@xs4all.nl>, Tomasz Figa <tfiga@google.com>, \n\tJacopo Mondi <jacopo@jmondi.org>, Naushir Patuck <naush@raspberrypi.com>",
        "Date": "Thu,  9 Dec 2021 10:12:37 +0000",
        "Message-Id": "<20211209101245.6187-1-david.plowman@raspberrypi.com>",
        "X-Mailer": "git-send-email 2.30.2",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v10 0/8] Colour spaces",
        "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\nWe're on to version 10 now! Thanks for all the latest round of\nreviews, that's much appreciated. I've adopted pretty much all of\nthose suggestions, but I'll try and round up the handful of discussion\npoints into this cover note.\n\n1. Should we have a \"None\" Y'CbCr encoding?\n\nI have added one as it bothered me to have \"Rec601\" in ColorSpace::Raw\notherwise. I wonder slightly what you should do if a device returns\nV4L2_COLORSPACE_RAW and a non-default YCbCr encoding. What would that\nmean? Should we turn it into ColorSpace::Raw regardless, or take it at\nface value and let a pipeline handler complain (if it cares)?\n\nFor now I've taken the second approach, I suspect that in reality no\none is really going to care, but we could change that.\n\n2. std::array in place of std::vector in color_space.cpp\n\nUnfortunately I still can't make the std::array constexpr, because the\nnamed ColorSpaces within them aren't. And they can't be because\nthey're static class members which would have to be initialised within\nthe class, only you can't initialise the objects of the class from\nwithin the declaration...\n\nBut I have changed it to std::array anyway (just a const one), aren't\nthey in theory marginally cheaper than std::vectors?\n\n3. Error messages in v4l2_videodevice.cpp etc.\n\nShould these be in to/fromColorSpace instead? I've left them where\nthey are because I can still imagine a pipeline handler calling these\nfunctions to check the results for themselves, at which point\nfunctions that spit out messages are just annoying.\n\nBut I don't feel very strongly about this given that currently no one\nelse is calling them, so would be happy enough to change it!\n\n4. Why should the largest output stream determine the color space?\n\nBecause it's the biggest, therefore it's the most important. :)\n\nThough to be fair sometimes we use our low resolution output stream\nfor image analysis that users never see, so the colour space there\nprobably is less important. But in the end we have to pick one of\nthem and it doesn't really matter that much which.\n\n5. Warnings in the RPi pipeline handler...\n\nI've removed one bunch of warnings on the assurance that validate()\nhas been called... Some others I've left in because they really\nshouldn't happen and I am completely paranoid about colour spaces. If\nI could be less anxious about them that would be nice...\n\n6. Where to call validateColorSpaces?\n\nI've left this where it is. The one thing we're never going to do is\nchange raw pixel formats to non-raw ones, and vice versa. And mostly I\nthink pixel formats have little to do with colour spaces. There are\nsome exceptions (e.g. raw formats imply \"raw\" colour spaces), and YUV\ntype outputs imply using the Y'CbCr encoding matrix which is sort of\nrelated, but apart from that I think they're mostly distinct.\n(Everyone will now list more exceptions...)\n\nAnyway, thanks again for all the effort that has gone into the many\nreviews!\n\nBest regards\n\nDavid\n\nDavid Plowman (8):\n  libcamera: Add ColorSpace class\n  libcamera: stream: Add ColorSpace fields to StreamConfiguration\n  libcamera: video_device: Convert between ColorSpace class and V4L2\n    formats\n  libcamera: video_device: Support passing ColorSpaces to V4L2 video\n    devices\n  libcamera: v4l2_subdevice: Add colorSpace field to V4L2SubdeviceFormat\n  libcamera: v4l2_subdevice: Support passing ColorSpaces to V4L2\n    subdevices\n  libcamera: Add validateColorSpaces to CameraConfiguration class\n  libcamera: pipeline: raspberrypi: Support color spaces\n\n include/libcamera/camera.h                    |  10 +\n include/libcamera/color_space.h               |  70 ++++\n include/libcamera/internal/v4l2_device.h      |   8 +\n include/libcamera/internal/v4l2_subdevice.h   |   3 +\n include/libcamera/internal/v4l2_videodevice.h |   3 +\n include/libcamera/meson.build                 |   1 +\n include/libcamera/stream.h                    |   3 +\n src/libcamera/camera.cpp                      |  84 +++++\n src/libcamera/camera_sensor.cpp               |   1 +\n src/libcamera/color_space.cpp                 | 318 ++++++++++++++++++\n src/libcamera/meson.build                     |   1 +\n src/libcamera/pipeline/ipu3/cio2.cpp          |   7 +-\n .../pipeline/raspberrypi/raspberrypi.cpp      |  40 +++\n src/libcamera/pipeline/simple/simple.cpp      |   8 +-\n src/libcamera/stream.cpp                      |  20 ++\n src/libcamera/v4l2_device.cpp                 | 194 +++++++++++\n src/libcamera/v4l2_subdevice.cpp              |  25 +-\n src/libcamera/v4l2_videodevice.cpp            |  32 ++\n 18 files changed, 821 insertions(+), 7 deletions(-)\n create mode 100644 include/libcamera/color_space.h\n create mode 100644 src/libcamera/color_space.cpp"
}