Show a cover letter.

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

{
    "id": 19315,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/19315/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/19315/",
    "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": "<20231214121350.206015-1-hdegoede@redhat.com>",
    "date": "2023-12-14T12:13:38",
    "name": "[libcamera-devel,00/11] libcamera: introduce Software ISP and Software IPA",
    "submitter": {
        "id": 102,
        "url": "https://patchwork.libcamera.org/api/1.1/people/102/?format=api",
        "name": "Hans de Goede",
        "email": "hdegoede@redhat.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/19315/mbox/",
    "series": [
        {
            "id": 4117,
            "url": "https://patchwork.libcamera.org/api/1.1/series/4117/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4117",
            "date": "2023-12-14T12:13:38",
            "name": "libcamera: introduce Software ISP and Software IPA",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/4117/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/19315/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 D9C46BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 14 Dec 2023 12:13:57 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 22CBD62B2A;\n\tThu, 14 Dec 2023 13:13:57 +0100 (CET)",
            "from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.133.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0A81361D97\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 14 Dec 2023 13:13:54 +0100 (CET)",
            "from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com\n\t[66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS\n\t(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n\tus-mta-596-_MyYIk1yObanPj0HlgPUQQ-1; Thu, 14 Dec 2023 07:13:52 -0500",
            "from smtp.corp.redhat.com\n\t(int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\tkey-exchange X25519 server-signature RSA-PSS (2048 bits)\n\tserver-digest SHA256) (No client certificate requested)\n\tby mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1DDF0101A555;\n\tThu, 14 Dec 2023 12:13:52 +0000 (UTC)",
            "from shalem.redhat.com (unknown [10.39.194.72])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id B0FEA1121306;\n\tThu, 14 Dec 2023 12:13:50 +0000 (UTC)"
        ],
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1702556037;\n\tbh=jVKe7ndTsbo/tOm45KL9yYek36xMo4Uchd5JUSeokOw=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\tList-Help:List-Subscribe:From:Reply-To:Cc:From;\n\tb=vyBeVNeYQeJ8rBxpkP924eRhmp7wu5PmlSi62skZGggTgZyMtmK7nDng0uGbtkfgF\n\t9IyAwX7sGlRy07ho/dZmXyQtK66+jXM4hSj2lqrSWJV3Ip3l++mwrsLA1O/gim8Jkk\n\tonb+0szE3OO1mnYBrMP95BsAyCJNcmrJoD03gRhvDvpV1ltxHaJ/Dzkvuyc4Kv3p5n\n\tE3nXOaxSZIs8KId4kw59XogaM+IqzR+QGYPnoFk+auAxWUZx8rvpnMejOaQbaAZIMu\n\tGdbiRv7eGmPkDeYyVvNuN3xVxMxz5NN2n0p3V8/nVm9xd1GiaJljJ3ouoDA5g0MBK+\n\t53b5MsU4oXYtg==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1702556033;\n\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n\tto:to:cc:cc:mime-version:mime-version:content-type:content-type:\n\tcontent-transfer-encoding:content-transfer-encoding;\n\tbh=s1GvCQmRcvqRjWqOavfejeN2wqbdnwZkaDtFd1lAJe0=;\n\tb=b3liFGbkSotRIF+hbu0n6f4NVf7HT8Umw01frrcVGgGgh/Dm2ZbQShLWyfUGNZS/UBT+1o\n\tE5DQlhT4i8iuZ3msZqp0qo5byv2otS4sLQD7fL/35CXCdJIdwXx3Smh22goEW3r55FEc2H\n\tnMFjSAaaKvapFzth5d+ErR1TX4/LU5k="
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=redhat.com\n\theader.i=@redhat.com header.b=\"b3liFGbk\"; \n\tdkim-atps=neutral",
        "X-MC-Unique": "_MyYIk1yObanPj0HlgPUQQ-1",
        "To": "libcamera-devel@lists.libcamera.org,\n\tAndrey Konovalov <andrey.konovalov@linaro.org>",
        "Date": "Thu, 14 Dec 2023 13:13:38 +0100",
        "Message-ID": "<20231214121350.206015-1-hdegoede@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 3.4.1 on 10.11.54.3",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain; charset=\"US-ASCII\"; x-default=true",
        "Subject": "[libcamera-devel] [PATCH 00/11] libcamera: introduce Software ISP\n\tand Software IPA",
        "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": "Hans de Goede via libcamera-devel <libcamera-devel@lists.libcamera.org>",
        "Reply-To": "Hans de Goede <hdegoede@redhat.com>",
        "Cc": "Maxime Ripard <mripard@redhat.com>, g.martti@gmail.com,\n\tt.langendam@gmail.com, srinivas.kandagatla@linaro.org,\n\tBryan O'Donoghue <bryan.odonoghue@linaro.org>, admin@dennisbonke.com",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Hi All,\n\nHere is a new, now non RFC because believed to be mostly ready\nfor merging, version of the Software ISP work.\n\nFirst of all apologies for sending this out so soon after RFC v2.\nWhile Andrey was working on the general SoftwareIsp framework\nI have been focussing on optimizing the code for gathering\nstatistics and doing the debayering. I ended up splitting out\nthe swstats and debayer code into separate classes and this\nfirst non RFC posting integrates the best of Andrey's and my\nwork. And it seemed better to post a new version integrating\nour work soon, so that review efforts can be focussed on\nthe new combined work.\n\nChanges in v1 vs RFC-v2:\n- Add and use SwStats[Cpu] and Debayer[Cpu] classes\n- Rename linaro soft-IPA and soft-ISP implementations to simple following\n  the simple pipeline hander\n- Integrate Pavel's swstats and debayer improvements\n\nKnown open items:\n- The AWB red/blue gain calculations needs to be moved to the IPA\n  and IPA then needs to pass a DebayerParams struct back to the\n  SwIsp\n- Properly document all methods / attributed for doxygen\n\ngit branch for this v1 patch set:\nhttps://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/SoftwareISP-v04\n\nRFC-v2 cover-letter with small updates:\n\nHere is an implementation of Software ISP and Software IPA\nwhich provide debayering and implementation of image processing\nalgorithms for systems without a hardware ISP, or in cases when\nthere are no public drivers for the hardware ISP present in the\nsystem.\n\nThe implementation of the Software ISP is a reference one.\nA naive AWB alorithm is implemented as part of a function which\ndoes debayering and statistics calculations - the algorithm part\nis to be moved to the IPA in the next version of the patch set.\nAnd for debayering itself there is already a more efficient\nimplementation by Hans de Goede. This patch set is currently using\nthe earlier debayering implementation as it is less lines of code\nand is OK for the initial discussion.\nOnly RAW10P format from the sensor is currently supported, but\nother debayering functions can be easily added (which of them to\ncall is decided based on the input format).\n\nThe Software IPA has only auto exposure and AGC. For the AGC\nthe analogue gain control of the camera sensor is used (if\navailable). The algorithm is very much simplified, and is\nmostly included as a reference code.\n\nThe 6th patch renames some variables in the simple pipeline\nhandler for the Software ISP to use the same buffer handling\ncode as the Converter currently does. This lets one to\navoid adding extra code to the pipeline handler, but also\nmakes the Software ISP and the Converter mutually exclusive.\n\nThe Software ISP / IPA are intended to be used with the simple\npipeline handler. The pipeline handler doesn't interact with\nthe Software IPA directly - the Software IPA is hidden behind\nthe Software ISP interface. To use the Software ISP the build\nmust be configured with\n  -Dpipelines=simple/simple -Dipas=simple/simple\nand the Converter must not be used (the latter is hardcoded\nin the simple pipeline handler).\nIf the build is configured with just\n  -Dpipelines=simple\nthe Software ISP / IPA are not used, and the simple pipeline\nhandler works in the same way as without this patchset.\n\n\"simple\" in the\n  -Dpipelines=simple/simple -Dipas=simple/simple\nis the name of the Software ISP / IPA implementation.\n  -Dpipelines=simple/<something else> -Dipas=simple/<something else>\nshould work too if another implementation were added. What\nimplementation to use is the build time choice, only one\nimplementation is included into the build.\n\nThis patch set uses SharedMemObject class used by the RPi pipeline\nhandler - the second patch in the series moves the header file\nto a common directory.\n\nThis patch set has been tested on Qualcomm RB5 board with\na mezzanine board equipped with RPi camera v2 (not the\nstandard RB5 camera mezzanine).\n\ngit branch for the RFC-v2 patch set:\nhttps://gitlab.freedesktop.org/camera/libcamera-softisp/-/commits/SoftwareISP-v03\n\nRFC-v1 of the patch set:\nhttps://patchwork.libcamera.org/cover/19262/\n\nChanges in v2 vs v1:\n- patches are restructured and reordered\n- the Software IPA is hidden behind the Software ISP interface. The\n  pipeline handler doesn't interact with the Software IPA directly\n- instantiation of the Software ISP / IPA is configurable (at build\n  time)\n- comment explaining the implementation limitations is added to\n  SwIspLinaro::IspWorker::debayerRaw10P()\n\nRegards,\n\nHans\n\n\nAndrey Konovalov (7):\n  libcamera: introduce SoftwareIsp class\n  libcamera: internal: Move SharedMemObject class to a common directory\n  libcamera: ipa: add Soft IPA common files\n  libcamera: ipa: Soft IPA: add a Simple Soft IPA implementation\n  libcamera: software_isp: add Simple SoftwareIsp implementation\n  libcamera: pipeline: simple: rename converterBuffers_ and related vars\n  libcamera: pipeline: simple: enable use of Soft ISP and Soft IPA\n\nHans de Goede (4):\n  libcamera: software_isp: Add SwStats base class\n  libcamera: software_isp: Add SwStatsCpu class\n  libcamera: software_isp: Add Debayer base class\n  libcamera: software_isp: Add DebayerCpu class\n\n include/libcamera/internal/meson.build        |   3 +\n .../libcamera/internal}/shared_mem_object.h   |   4 -\n include/libcamera/internal/software_isp.h     | 109 +++++\n .../libcamera/internal/software_isp/debayer.h |  90 ++++\n .../internal/software_isp/debayer_cpu.h       | 104 +++++\n .../internal/software_isp/debayer_params.h    |  24 +\n .../internal/software_isp/meson.build         |  11 +\n .../internal/software_isp/swisp_simple.h      |  67 +++\n .../internal/software_isp/swisp_stats.h       |  21 +\n .../libcamera/internal/software_isp/swstats.h | 150 ++++++\n .../internal/software_isp/swstats_cpu.h       |  46 ++\n include/libcamera/ipa/meson.build             |   1 +\n include/libcamera/ipa/soft.mojom              |  27 ++\n meson_options.txt                             |   3 +-\n src/ipa/simple/common/meson.build             |  17 +\n src/ipa/simple/common/soft_base.cpp           |  66 +++\n src/ipa/simple/common/soft_base.h             |  47 ++\n src/ipa/simple/meson.build                    |  12 +\n src/ipa/simple/simple/data/meson.build        |   9 +\n src/ipa/simple/simple/data/soft.conf          |   3 +\n src/ipa/simple/simple/meson.build             |  26 ++\n src/ipa/simple/simple/soft_simple.cpp         | 210 +++++++++\n src/libcamera/meson.build                     |   2 +\n src/libcamera/pipeline/simple/simple.cpp      | 164 +++++--\n src/libcamera/software_isp.cpp                |  62 +++\n src/libcamera/software_isp/debayer.cpp        |  22 +\n src/libcamera/software_isp/debayer_cpu.cpp    | 440 ++++++++++++++++++\n src/libcamera/software_isp/meson.build        |  27 ++\n src/libcamera/software_isp/swisp_simple.cpp   | 219 +++++++++\n src/libcamera/software_isp/swstats.cpp        |  65 +++\n src/libcamera/software_isp/swstats_cpu.cpp    | 169 +++++++\n 31 files changed, 2164 insertions(+), 56 deletions(-)\n rename {src/libcamera/pipeline/rpi/common => include/libcamera/internal}/shared_mem_object.h (98%)\n create mode 100644 include/libcamera/internal/software_isp.h\n create mode 100644 include/libcamera/internal/software_isp/debayer.h\n create mode 100644 include/libcamera/internal/software_isp/debayer_cpu.h\n create mode 100644 include/libcamera/internal/software_isp/debayer_params.h\n create mode 100644 include/libcamera/internal/software_isp/meson.build\n create mode 100644 include/libcamera/internal/software_isp/swisp_simple.h\n create mode 100644 include/libcamera/internal/software_isp/swisp_stats.h\n create mode 100644 include/libcamera/internal/software_isp/swstats.h\n create mode 100644 include/libcamera/internal/software_isp/swstats_cpu.h\n create mode 100644 include/libcamera/ipa/soft.mojom\n create mode 100644 src/ipa/simple/common/meson.build\n create mode 100644 src/ipa/simple/common/soft_base.cpp\n create mode 100644 src/ipa/simple/common/soft_base.h\n create mode 100644 src/ipa/simple/meson.build\n create mode 100644 src/ipa/simple/simple/data/meson.build\n create mode 100644 src/ipa/simple/simple/data/soft.conf\n create mode 100644 src/ipa/simple/simple/meson.build\n create mode 100644 src/ipa/simple/simple/soft_simple.cpp\n create mode 100644 src/libcamera/software_isp.cpp\n create mode 100644 src/libcamera/software_isp/debayer.cpp\n create mode 100644 src/libcamera/software_isp/debayer_cpu.cpp\n create mode 100644 src/libcamera/software_isp/meson.build\n create mode 100644 src/libcamera/software_isp/swisp_simple.cpp\n create mode 100644 src/libcamera/software_isp/swstats.cpp\n create mode 100644 src/libcamera/software_isp/swstats_cpu.cpp"
}