Show a cover letter.

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

{
    "id": 17309,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/17309/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/17309/",
    "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": "<20220908014200.28728-1-laurent.pinchart@ideasonboard.com>",
    "date": "2022-09-08T01:41:28",
    "name": "[libcamera-devel,v4,00/32] ipa: Frame context queue, IPU3 & RkISP consolidation, and RkISP1 improvements",
    "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/17309/mbox/",
    "series": [
        {
            "id": 3476,
            "url": "https://patchwork.libcamera.org/api/1.1/series/3476/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3476",
            "date": "2022-09-08T01:41:28",
            "name": "ipa: Frame context queue, IPU3 & RkISP consolidation, and RkISP1 improvements",
            "version": 4,
            "mbox": "https://patchwork.libcamera.org/series/3476/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/17309/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 62A79C3272\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  8 Sep 2022 01:42:20 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8913862093;\n\tThu,  8 Sep 2022 03:42:19 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8CDD861FB8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  8 Sep 2022 03:42:17 +0200 (CEST)",
            "from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id DE33F6CC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  8 Sep 2022 03:42:16 +0200 (CEST)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1662601339;\n\tbh=I13RnWDgq6Jmi4C51Te6s7Dnod9yFpwhgl3ZBNcL09k=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=qqmJnI6dL9DcvyDA1/9gy3O2OReYrngUW4fGDIfmjWB/13qA52Ppfs/+phNN+ctDA\n\t7DuapL8Cf95OxLOkFoaKOQE7ePooz34NxXFrzLzShZNomf/gE6GDVS8EQtcAt+IJg3\n\t5Lqp7vpKp94/NlapuS7M+zGaYJlciM3LG11sDawyc4yQfTpZNHWvEz00StKwmOvZFH\n\tocK9WnXXMBNDe3ICRTD29b/4HQnZ7dE6532lChDa2seBJwWftMpF1alTp7sM2v9SiY\n\t09fMnjAYMhTR8S7f/3eOUTOTGyR0D9PQyMo4rtLrozFd00Go7ohTlbXQFnuH+bUtik\n\tbmN/PdV0evPvA==",
            "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1662601337;\n\tbh=I13RnWDgq6Jmi4C51Te6s7Dnod9yFpwhgl3ZBNcL09k=;\n\th=From:To:Subject:Date:From;\n\tb=XjYOb5ldtbXbuZ2mU1KSXOQu6bvjreYjnyLCwLsvwxuIWFvf+rR3MgbG2utQTJJub\n\tOos9ureLDcNENGAe3yR82Lzk03gET/wE2YeZOZ19PdhMBpOEMfsdF/f/7gWz6OFjS8\n\t8wh3Fovd2gk/frguD3ydwJXIiHAPrDB8OBzf4Lb8="
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"XjYOb5ld\"; dkim-atps=neutral",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Thu,  8 Sep 2022 04:41:28 +0300",
        "Message-Id": "<20220908014200.28728-1-laurent.pinchart@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.35.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v4 00/32] ipa: Frame context queue,\n\tIPU3 & RkISP consolidation, and RkISP1 improvements",
        "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>",
        "From": "Laurent Pinchart via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>",
        "Reply-To": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Hello,\n\nAfter lots of reshuffling of the \"[PATCH v3 00/17] libcamera: Align IPU3\nand RKISP1 interfaces\" series, here's a v4 that has grown quite a bit on\nthe RkISP1 side.\n\nI've taken over the previous version of the series as I thought it would\nbe easier and faster to provide review as fixup commits. I ended up\nreshuffling modifications around, splitting and combining commits, not\nso much in an attempt to clean or fix the history, but out of a desire\nto make sure I correctly understood the changes. The result should\nhopefully be easy to follow.\n\nPatches 01/32 and 02/32 are small preliminary drive-by cleanups. The\ngist of the frame context queue introduction is in patches 03/32 to\n08/32 that also update the IPA algorithm operations to pass the new\nobjects around. There shouldn't be anything really new there, small\nchanges are listed in individual changelogs.\n\nThe next patches, from 09/32 to 11/32, port the IPU3 IPA module to the\nFCQueue class. They should be similar to the implementation in v3 that\nwas spread within the patches that updated the IPA algorithm operations.\nI have dropped the other changes to the IPU3 IPA module, not because\nthey were wrong, but because the series was growing big already. I will\nrebase them on top of this v4 and submit them separately (unless someone\nbeats me to it).\n\nPatches 12/32 to 16/32 then performs the same for the RkISP1 IPA module.\nI have also dropped the lens-related patches from v3, as I wanted to\nfocus on the frame context queue first. Those patches will also be\nrebased on top, they're not lost.\n\nPatch 17/32 then renames the IPAFrameContext structures to\nIPU3FrameContext and RkISP1FrameContext. This was part of v3, and I'm\nnot too fond of it to be honest, as the other structures don't have the\nsame naming scheme. I would prefer dropping this from the series and\nthen discussing the naming scheme of IPA structures globally.\n\nThe next 7 patches, from 18/32 to 24/32, port the RkISP1 algorithms to\nthe frame context API. 18/32 starts by dropping the frameCount member\nvariable of the active state as we can now use the frame number passed\nto the algorithm operations, and the next patches port the algorithms\none by one, showcasing how data can be split between the active state\nand frame context. Different schemes may be possible, maybe with less\nduplication of member variables between the active state and frame\ncontext. I'm particularly interested in feedback on this. The last patch\nof this group, 24/32, documents the scheme used here.\n\nFinally, patches 25/32 to 32/32 improve the AWB implementation of the\nRkISP1 IPA module. Patch 25/32 in particular shows how the frame context\nallows fixing a defect of the current implementation. The rest are\nimprovements that are detailed in the individual commit messages.\n\nWe don't need to merge this series in one go. It is organized as three\nsets of patches (01/32 to 17/32 to introduce and use the frame context\nqueue, 18/32 to 24/32 to showcase its usage in the RkISP1 IPA module,\nand 25/32 to 32/32 to improve the RkISP1 AWB). Each set is quite\nself-contained, but they are based on each other in that order.\n\nThere is still work to do, in particular in the documentation, but I\ndidn't want to spend more time on it before getting an approval of the\ngeneral approach. Another point I'm not completely happy about is the\nnaming of the FCQueue functions, and in particular the init() function\n(alloc() would already be better in my opinion, and I'd like to find an\neven better name) but that could also possibly be fixed on top.\n\nJacopo Mondi (1):\n  ipa: rkisp1: Remove unused class member\n\nKieran Bingham (7):\n  ipa: libipa: Provide a common base for frame contexts\n  ipa: libipa: algorithm: prepare(): Pass frame and frame Context\n  ipa: libipa: algorithm: process(): Pass frame number\n  ipa: libipa: algorithm: queueRequest(): Pass frame context\n  ipa: rkisp1: Rename frameContext to activeState\n  ipa: rkisp1: Convert to use the FCQueue\n  ipa: Rename IPAFrameContext structures\n\nLaurent Pinchart (22):\n  ipa: ipu3: Fix style of Doxygen comment blocks\n  ipa: ipu3: af: Pass context reference to afIsOutOfFocus()\n  ipa: libipa: Pass a reference instead of pointer to\n    Algorithm::process()\n  ipa: ipu3: Use base FrameContext class\n  ipa: ipu3: Use the FCQueue\n  ipa: ipu3: Pass controls to algorithm's queueRequest() handler\n  ipa: rkisp1: Sort documentation of the IPA context\n  ipa: rkisp1: Use base FrameContext class\n  ipa: rkisp1: Use frame number passed to Algorithm::prepare()\n  ipa: rkisp1: agc: Store per-frame information in frame context\n  ipa: rkisp1: awb: Store per-frame information in frame context\n  ipa: rkisp1: cproc: Store per-frame information in frame context\n  ipa: rkisp1: dpf: Store per-frame information in frame context\n  ipa: rkisp1: filter: Store per-frame information in frame context\n  ipa: rkisp1: Document the active state and frame context\n  ipa: rkisp1: awb: Use frame context to fix gains calculations\n  ipa: rkisp1: awb: Store color temperature as an integer\n  ipa: rkisp1: awb: Log means, gains and temperature in debug message\n  ipa: rkisp1: awb: Prevent RGB means from being negative\n  ipa: rkisp1: awb: Clamp gains to prevent divisions by zero\n  ipa: rkisp1: awb: Freeze AWB when means are too small\n  ipa: rkisp1: awb: Remove bias from gain calculation\n\nQuentin Schulz (1):\n  ipa: rkisp1: awb: Add support for RGB means\n\nUmang Jain (1):\n  ipa: libipa: Introduce FrameContextQueue\n\n src/ipa/ipu3/algorithms/af.cpp           |  34 +--\n src/ipa/ipu3/algorithms/af.h             |   9 +-\n src/ipa/ipu3/algorithms/agc.cpp          |  10 +-\n src/ipa/ipu3/algorithms/agc.h            |   5 +-\n src/ipa/ipu3/algorithms/awb.cpp          |   8 +-\n src/ipa/ipu3/algorithms/awb.h            |   7 +-\n src/ipa/ipu3/algorithms/blc.cpp          |  10 +-\n src/ipa/ipu3/algorithms/blc.h            |   4 +-\n src/ipa/ipu3/algorithms/tone_mapping.cpp |  18 +-\n src/ipa/ipu3/algorithms/tone_mapping.h   |   6 +-\n src/ipa/ipu3/ipa_context.cpp             |  45 +---\n src/ipa/ipu3/ipa_context.h               |  18 +-\n src/ipa/ipu3/ipu3.cpp                    |  39 +++-\n src/ipa/ipu3/module.h                    |   2 +-\n src/ipa/libipa/algorithm.cpp             |   4 +\n src/ipa/libipa/algorithm.h               |   7 +-\n src/ipa/libipa/fc_queue.cpp              | 135 ++++++++++++\n src/ipa/libipa/fc_queue.h                | 118 ++++++++++\n src/ipa/libipa/meson.build               |   2 +\n src/ipa/rkisp1/algorithms/agc.cpp        |  36 +--\n src/ipa/rkisp1/algorithms/agc.h          |  10 +-\n src/ipa/rkisp1/algorithms/awb.cpp        | 269 ++++++++++++++++-------\n src/ipa/rkisp1/algorithms/awb.h          |  12 +-\n src/ipa/rkisp1/algorithms/blc.cpp        |   6 +-\n src/ipa/rkisp1/algorithms/blc.h          |   4 +-\n src/ipa/rkisp1/algorithms/cproc.cpp      |  52 +++--\n src/ipa/rkisp1/algorithms/cproc.h        |   5 +-\n src/ipa/rkisp1/algorithms/dpcc.cpp       |   6 +-\n src/ipa/rkisp1/algorithms/dpcc.h         |   4 +-\n src/ipa/rkisp1/algorithms/dpf.cpp        |  25 ++-\n src/ipa/rkisp1/algorithms/dpf.h          |   5 +-\n src/ipa/rkisp1/algorithms/filter.cpp     |  32 +--\n src/ipa/rkisp1/algorithms/filter.h       |   5 +-\n src/ipa/rkisp1/algorithms/gsl.cpp        |   6 +-\n src/ipa/rkisp1/algorithms/gsl.h          |   4 +-\n src/ipa/rkisp1/algorithms/lsc.cpp        |   5 +-\n src/ipa/rkisp1/algorithms/lsc.h          |   4 +-\n src/ipa/rkisp1/ipa_context.cpp           | 265 ++++++++++++++++------\n src/ipa/rkisp1/ipa_context.h             |  58 ++++-\n src/ipa/rkisp1/module.h                  |   2 +-\n src/ipa/rkisp1/rkisp1.cpp                |  52 +++--\n 41 files changed, 982 insertions(+), 366 deletions(-)\n create mode 100644 src/ipa/libipa/fc_queue.cpp\n create mode 100644 src/ipa/libipa/fc_queue.h"
}