Show a cover letter.

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

{
    "id": 17411,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/17411/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/17411/",
    "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": "<20220927023642.12341-1-laurent.pinchart@ideasonboard.com>",
    "date": "2022-09-27T02:36:09",
    "name": "[libcamera-devel,v5,00/33] 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/17411/mbox/",
    "series": [
        {
            "id": 3506,
            "url": "https://patchwork.libcamera.org/api/1.1/series/3506/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3506",
            "date": "2022-09-27T02:36:09",
            "name": "ipa: Frame context queue, IPU3 & RkISP consolidation, and RkISP1 improvements",
            "version": 5,
            "mbox": "https://patchwork.libcamera.org/series/3506/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/17411/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 22771C0DA4\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Sep 2022 02:37:03 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3AFA662262;\n\tTue, 27 Sep 2022 04:37:02 +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 2E22061F79\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Sep 2022 04:37:00 +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 7648747C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Sep 2022 04:36:59 +0200 (CEST)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1664246222;\n\tbh=fjqaNsWAWStNtmIo7Jn1JdOW3/gkF+Lrv512r6lSPZ8=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=K5DQwsBPlCdw7sXsBNxbhOR+8LXicNoNWh87YPPnS/QAf7Ep/goN9jiSf3YykAePD\n\tdj9+ulrmCXmPsHIUcjeOhNdG4p3IcPtYeMAxzPDFevU67FRAckJCw/iCQ5aZVUuFvV\n\tVT1XufKedbA1ZTYMVG6gjjQXz9kM1Aux5z+WVEPtXh2sPfzg5SamIaCqnZJ+fzmjlL\n\tf5lVhbNS0+vGW1C/wRQlNNT7HQTmcahU550rdFmzEY7cIOu6BWEwyxybh/Bry3hSMg\n\t0KPlIHRRewxqOmGAPsZt/ih7WZtf3PZ85reMARMplFtxNL7p2TZ8VjTBIJUymwgIuI\n\tWkJhgJU5lzeCA==",
            "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1664246219;\n\tbh=fjqaNsWAWStNtmIo7Jn1JdOW3/gkF+Lrv512r6lSPZ8=;\n\th=From:To:Subject:Date:From;\n\tb=k7XAvaecO1LV2rr9mSAUgrKvsZbieG6XUy+S7Md5SovyaBTG1eLw+niMYRgFRJ8Vv\n\t4c7WvUplCViVh3zZ90cKDRPD4jDmp0JZhreG6lr1kKu8iJwVutijgqiwV+YRgw50L8\n\toqUFwFlaL+m69bqRQ4Krr2XLeyCz0hwhXOJyZvz4="
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"k7XAvaec\"; dkim-atps=neutral",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Tue, 27 Sep 2022 05:36:09 +0300",
        "Message-Id": "<20220927023642.12341-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 v5 00/33] 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\nHere's the v5 of the \"frame context queue\" series. It looks very much\nlike v4, with review comments taken into account, and a few additional\nchanges:\n\n- The rename of IPAFrameContext to IPU3FrameContext and\n  RkISP1FrameContext got dropped. I'm not convinced it's a good idea,\n  and while I could change my mind, I think we should then rename all\n  the other structures accordingly in one go.\n- Patches 17/33 and 18/33 have been added. They integrate review\n  comments from v4, and I've kept them separate to ease review and\n  discussions.\n\nPatches 01/33 and 02/33 are small preliminary drive-by cleanups. The\ngist of the frame context queue introduction is in patches 03/33 to\n08/33 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/33 to 11/33, 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/33 to 16/33 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\nAs mentioned above, the next two patches are new in v5. Patch 17/33\npasses the FCQueue size as a template argument instead of a constructor\nargument. I've kept it separate as I'm not entirely sure it's the right\noption, I have a feeling we may have use cases for computing the queue\nsize at runtime instead of compile time, and using a template argument\ndoesn't bring that much as far as I can tell. Patch 18/33 disables\ncopy-construction of the frame contexts, which shouldn't be\ncontroversial.\n\nThe next 7 patches, from 19/33 to 25/34, port the RkISP1 algorithms to\nthe frame context API. 19/33 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, 25/33, documents the scheme used here.\n\nFinally, patches 26/33 to 33/33 improve the AWB implementation of the\nRkISP1 IPA module. Patch 26/33 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/33 to 18/33 to introduce and use the frame context\nqueue, 19/33 to 25/33 to showcase its usage in the RkISP1 IPA module,\nand 26/33 to 33/33 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 how\nthe FCQueue alloc() and get() functions handle underruns, and actually\nhow the whole underrun mechanism will be implemented. We need to\nexperiment on top of this series to figure it out.\n\nJacopo Mondi (1):\n  ipa: rkisp1: Remove unused class member\n\nKieran Bingham (6):\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\nLaurent Pinchart (24):\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: libipa: Pass FCQueue size as template argument\n  ipa: Disable copy-construction of IPAContext\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             |  37 +---\n src/ipa/ipu3/ipa_context.h               |  25 +--\n src/ipa/ipu3/ipu3.cpp                    |  37 ++--\n src/ipa/libipa/algorithm.cpp             |   4 +\n src/ipa/libipa/algorithm.h               |   7 +-\n src/ipa/libipa/fc_queue.cpp              | 140 ++++++++++++\n src/ipa/libipa/fc_queue.h                | 117 ++++++++++\n src/ipa/libipa/meson.build               |   2 +\n src/ipa/rkisp1/algorithms/agc.cpp        |  46 ++--\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        |  33 +--\n src/ipa/rkisp1/algorithms/dpf.h          |   5 +-\n src/ipa/rkisp1/algorithms/filter.cpp     |  49 +++--\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           | 219 +++++++++++++-----\n src/ipa/rkisp1/ipa_context.h             |  64 +++++-\n src/ipa/rkisp1/rkisp1.cpp                |  55 +++--\n 39 files changed, 998 insertions(+), 345 deletions(-)\n create mode 100644 src/ipa/libipa/fc_queue.cpp\n create mode 100644 src/ipa/libipa/fc_queue.h"
}