Show a cover letter.

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

{
    "id": 17867,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/17867/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/17867/",
    "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": "<20221124113550.2182342-1-paul.elder@ideasonboard.com>",
    "date": "2022-11-24T11:35:38",
    "name": "[libcamera-devel,v4,00/12] utils: tuning: Add a new tuning infrastructure",
    "submitter": {
        "id": 17,
        "url": "https://patchwork.libcamera.org/api/1.1/people/17/?format=api",
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/17867/mbox/",
    "series": [
        {
            "id": 3636,
            "url": "https://patchwork.libcamera.org/api/1.1/series/3636/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=3636",
            "date": "2022-11-24T11:35:38",
            "name": "utils: tuning: Add a new tuning infrastructure",
            "version": 4,
            "mbox": "https://patchwork.libcamera.org/series/3636/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/17867/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 2FD4ABDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 24 Nov 2022 11:36:04 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 97F216331A;\n\tThu, 24 Nov 2022 12:36:03 +0100 (CET)",
            "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 F0EF6632EA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 24 Nov 2022 12:36:01 +0100 (CET)",
            "from pyrite.tail37cf.ts.net (h175-177-042-159.catv02.itscom.jp\n\t[175.177.42.159])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 7B630496;\n\tThu, 24 Nov 2022 12:36:00 +0100 (CET)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1669289763;\n\tbh=fHurnCMbzcStEKGykH5upEThLGj24CLlPryxaPDKOYI=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:From;\n\tb=EtNEXFYkLNzcdUpq4EHGG65rYyaSW/gm/358ZlmYCweXz/SCkKBNCSY8PJcWcrnTF\n\tpHxg5GDKu8MTM3ViVseet4j3+76X6eTvzMPVqOli175oU4B+7IqsF8aGYCuzSd3Jgx\n\t+moeB/W41QDyiugAuM5GDNIh1hpZOKWuASjGBf5Bne8h+O9/Zfy/jaCRCrSeRP4fro\n\t1YsfGw/I+Lq3kBBlDUliq4sbEjCfQwIou7oI2NbxTBCIuRxKkcHUaoC6JoWeR61ems\n\t+MkJiLOWO8tXOATXgSnVze6qH595I3+YbmgidetijJ2L1bH3bZ1gF/47P3Z0BffyqQ\n\tBVEORhxnanq6w==",
            "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1669289761;\n\tbh=fHurnCMbzcStEKGykH5upEThLGj24CLlPryxaPDKOYI=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=OFo9UPYfzaZmHIl6Mf2Txvgi/HhHWwcO1haDz8/vS5GWFM4RXQR4JZcad94Oov8zV\n\tsmr1aFKFksuQurU/v1JwVheJ2WjG43L0QDZgpohnjwNxk7fJw34DQx4jtVKpRWAsiZ\n\toChP2MEBg95v3OudlqdHD7ZyankuRWtoX92bCk0s="
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"OFo9UPYf\"; dkim-atps=neutral",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Thu, 24 Nov 2022 20:35:38 +0900",
        "Message-Id": "<20221124113550.2182342-1-paul.elder@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.35.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v4 00/12] utils: tuning: Add a new tuning\n\tinfrastructure",
        "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": "Paul Elder via libcamera-devel <libcamera-devel@lists.libcamera.org>",
        "Reply-To": "Paul Elder <paul.elder@ideasonboard.com>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "This patch series adds a new tuning infrastructure called libtuning,\ninspired by ctt.\n\nThe new changes in v4 are fairly minor. One notable change is that the\nless-accurate rounding copied from ctt was replaced with simple\nrounding, so the output no longer matches *exactly* what ctt outputs.\n\nMain non-cosmetic changes in v3:\n- remove full raspberry pi tuning script\n- split core libtuning implementation into three patches\n\nThe design modularizes common components of tuning tools such that\nnew tuning scripts for new platforms can be created easily, as show in\npatches 11/12 to 12/12 (v3: the full Raspberry Pi tuning script was\nremoved because it is DNI and clearly incomplete).\n\nThe common \"core\" components include file management, argument\nparsing, image loading and validation, and macbeth chart detection, as\nwell as miscellaneous (but tedious) math utilities. It connects\neverything together such that a platform's tuning script can very easily\ncustomize tuning modules in a variety of ways, even including the format\nof the input configuration file and the output tuning file. These are\nall implemented in patches 1/12 to 3/12 (split from one to three patches\nas of v3).\n\nThe input configuration file and output tuning file could have different\nformats as well, hence why these have their own classes. As of v1, only\nthe raspberrypi's formats were implemented, in patches 7/12 and 8/12\nrespectively. As of v2, output for yaml was added in patch 10/12. A\nskeleton for yaml input is added as well in patch 9/12, though it is not\nimplemented yet as there is no specification for the yaml input\nconfiguration format, and the only existing user of it doesn't actually\nneed a configuration file.\n\nAs of v2, it became apparent that it was infeasible to create an ALSC\nmodule (that's what we're starting with) that could completely support\ndifferent platforms with configuration options alone. So, the ALSC\nmodule was split into a base one (patch 4/12), with variations for\nraspberrypi and rkisp1 implemented on top of it in patches 5/12 and 6/12\nrespectively. I think they came out quite nice, and they are still more\nmanageable than an entirely new tuning module per platform.\n\nv2:\nI have also since managed to get test images and so this entire thing\nruns! Even though the rkisp1 tuning script (patch 12/12) says \"WIP\", it\ndoes run and outputs a valid tuning file. I haven't tried using the\ntuning file with libcamera though, as it is missng the /other/ algorithm\ntuning results.\n\nThe output from the libtuning-based alsc-only raspberrypi tuning script\n(patch 11/12) has been confirmed to be character-for-character exactly\nthe same as the output from ctt's alsc-only tuning script.\n\n\nPaul Elder (12):\n  utils: tuning: libtuning: Implement the core of libtuning\n  utils: tuning: libtuning: Implement math helpers\n  utils: tuning: libtuning: Implement extensible components of libtuning\n  utils: libtuning: modules: Add base LSC module\n  utils: libtuning: modules: alsc: Add raspberrypi ALSC module\n  utils: libtuning: modules: alsc: Add rkisp1 LSC module\n  utils: libtuning: parsers: Add raspberrypi parser\n  utils: libtuning: generators: Add raspberrypi output\n  utils: libtuning: parsers: Add yaml parser\n  utils: libtuning: generators: Add yaml output\n  utils: tuning: Add alsc-only libtuning raspberrypi tuning script\n  utils: tuning: Add tuning script for rkisp1\n\n utils/tuning/README.rst                       |  11 +\n utils/tuning/libtuning/__init__.py            |  13 +\n utils/tuning/libtuning/average.py             |  21 +\n utils/tuning/libtuning/generators/__init__.py |   6 +\n .../tuning/libtuning/generators/generator.py  |  15 +\n .../generators/raspberrypi_output.py          | 114 ++++\n .../libtuning/generators/yaml_output.py       | 123 +++++\n utils/tuning/libtuning/gradient.py            |  75 +++\n utils/tuning/libtuning/image.py               | 136 +++++\n utils/tuning/libtuning/libtuning.py           | 208 +++++++\n utils/tuning/libtuning/macbeth.py             | 516 ++++++++++++++++++\n utils/tuning/libtuning/macbeth_ref.pgm        |   6 +\n utils/tuning/libtuning/modules/__init__.py    |   0\n .../tuning/libtuning/modules/lsc/__init__.py  |   7 +\n utils/tuning/libtuning/modules/lsc/lsc.py     |  72 +++\n .../libtuning/modules/lsc/raspberrypi.py      | 246 +++++++++\n utils/tuning/libtuning/modules/lsc/rkisp1.py  | 112 ++++\n utils/tuning/libtuning/modules/module.py      |  32 ++\n utils/tuning/libtuning/parsers/__init__.py    |   6 +\n utils/tuning/libtuning/parsers/parser.py      |  21 +\n .../libtuning/parsers/raspberrypi_parser.py   |  93 ++++\n utils/tuning/libtuning/parsers/yaml_parser.py |  17 +\n utils/tuning/libtuning/smoothing.py           |  24 +\n utils/tuning/libtuning/utils.py               | 125 +++++\n utils/tuning/raspberrypi/__init__.py          |   0\n utils/tuning/raspberrypi/alsc.py              |  19 +\n utils/tuning/raspberrypi_alsc_only.py         |  23 +\n utils/tuning/rkisp1.py                        |  40 ++\n 28 files changed, 2081 insertions(+)\n create mode 100644 utils/tuning/README.rst\n create mode 100644 utils/tuning/libtuning/__init__.py\n create mode 100644 utils/tuning/libtuning/average.py\n create mode 100644 utils/tuning/libtuning/generators/__init__.py\n create mode 100644 utils/tuning/libtuning/generators/generator.py\n create mode 100644 utils/tuning/libtuning/generators/raspberrypi_output.py\n create mode 100644 utils/tuning/libtuning/generators/yaml_output.py\n create mode 100644 utils/tuning/libtuning/gradient.py\n create mode 100644 utils/tuning/libtuning/image.py\n create mode 100644 utils/tuning/libtuning/libtuning.py\n create mode 100644 utils/tuning/libtuning/macbeth.py\n create mode 100644 utils/tuning/libtuning/macbeth_ref.pgm\n create mode 100644 utils/tuning/libtuning/modules/__init__.py\n create mode 100644 utils/tuning/libtuning/modules/lsc/__init__.py\n create mode 100644 utils/tuning/libtuning/modules/lsc/lsc.py\n create mode 100644 utils/tuning/libtuning/modules/lsc/raspberrypi.py\n create mode 100644 utils/tuning/libtuning/modules/lsc/rkisp1.py\n create mode 100644 utils/tuning/libtuning/modules/module.py\n create mode 100644 utils/tuning/libtuning/parsers/__init__.py\n create mode 100644 utils/tuning/libtuning/parsers/parser.py\n create mode 100644 utils/tuning/libtuning/parsers/raspberrypi_parser.py\n create mode 100644 utils/tuning/libtuning/parsers/yaml_parser.py\n create mode 100644 utils/tuning/libtuning/smoothing.py\n create mode 100644 utils/tuning/libtuning/utils.py\n create mode 100644 utils/tuning/raspberrypi/__init__.py\n create mode 100644 utils/tuning/raspberrypi/alsc.py\n create mode 100755 utils/tuning/raspberrypi_alsc_only.py\n create mode 100755 utils/tuning/rkisp1.py"
}