Show a cover letter.

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

{
    "id": 26723,
    "url": "https://patchwork.libcamera.org/api/covers/26723/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/26723/",
    "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": "<20260512123619.120068-1-mzamazal@redhat.com>",
    "date": "2026-05-12T12:36:04",
    "name": "[RFC,v5,00/10] LSC for SoftISP simple pipeline",
    "submitter": {
        "id": 177,
        "url": "https://patchwork.libcamera.org/api/people/177/?format=api",
        "name": "Milan Zamazal",
        "email": "mzamazal@redhat.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/26723/mbox/",
    "series": [
        {
            "id": 5936,
            "url": "https://patchwork.libcamera.org/api/series/5936/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5936",
            "date": "2026-05-12T12:36:04",
            "name": "LSC for SoftISP simple pipeline",
            "version": 5,
            "mbox": "https://patchwork.libcamera.org/series/5936/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/26723/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 7CB07BDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 12 May 2026 12:36:35 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7A28463029;\n\tTue, 12 May 2026 14:36:34 +0200 (CEST)",
            "from us-smtp-delivery-124.mimecast.com\n\t(us-smtp-delivery-124.mimecast.com [170.10.129.124])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2AF516271A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 12 May 2026 14:36:33 +0200 (CEST)",
            "from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com\n\t(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97])\n\tby relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n\tcipher=TLS_AES_256_GCM_SHA384) id us-mta-67-sSy6GuqvNX-ZzlIkKWaJMQ-1;\n\tTue, 12 May 2026 08:36:30 -0400",
            "from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n\t(mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n\t[10.30.177.17])\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 mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTPS id 0817C18002FC; Tue, 12 May 2026 12:36:29 +0000 (UTC)",
            "from mzamazal-thinkpadp1gen7.tpbc.com (unknown [10.44.50.44])\n\tby mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix)\n\twith ESMTP id 2C6191955D84; Tue, 12 May 2026 12:36:25 +0000 (UTC)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=redhat.com header.i=@redhat.com\n\theader.b=\"S7FvYwwD\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n\ts=mimecast20190719; t=1778589391;\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=HtpqEl8Wf1Ihvpqfbcx96nygTg2smdA2b5YYDjVAxYk=;\n\tb=S7FvYwwDCXuKz5bO/AqhRxwlmkkMUvOADolfOnrvZ5HBOLXH+ib3IE2YxDHn3BuhJ4Nrr7\n\tTsXhH/GgoeTue+5AM9T+0u4DW9iBdaGqE3iFPdKXkJ5j66q7RwGFj5Jh0S8jt4+sUnKLH7\n\tM32RFkGfUsDFGVDIw3Wu9dBhlNBt9qw=",
        "X-MC-Unique": "sSy6GuqvNX-ZzlIkKWaJMQ-1",
        "X-Mimecast-MFC-AGG-ID": "sSy6GuqvNX-ZzlIkKWaJMQ_1778589389",
        "From": "Milan Zamazal <mzamazal@redhat.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Milan Zamazal <mzamazal@redhat.com>, Bryan O'Donoghue <bod.linux@nxsw.ie>,\n\tHans de Goede <johannes.goede@oss.qualcomm.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>",
        "Subject": "[RFC PATCH v5 00/10] LSC for SoftISP simple pipeline",
        "Date": "Tue, 12 May 2026 14:36:04 +0200",
        "Message-ID": "<20260512123619.120068-1-mzamazal@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.17",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-MFC-PROC-ID": "u6sZiQow32HBFUjZSdcYXmCQjUofP-mRrPI7Ghf0fl8_1778589389",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "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\nOver the last few months we (students from THUAS) have been working on adding LSC support to\nthe SoftISP simple pipline. These patches are the result of those\nefforts. The project was under the supervision of Hans de Goede.\n\nThere are patches to both the GpuISP and some scrips for generating the\ncorrections tables.\n\nThe changes to the GpuISP are integrated as an algorithm, including\nautomatically choosing a correction table based on the measured colour\ntemperature.\n\nThe current version of the LSC textures make use of the type GLubyte instead of float. This is because we could not get floating points values to play nice with the shader. The result is that the LSC factors ranging from 1.0 to 4.0 are maped to 0 to 255.\n\nThe last patch (HACK: Add test LSC to src/ipa/simple/data/uncalibrated.yaml) adds sample data to uncalibrated.yaml file for testing, and is a reference of how the tables should (currently) be structured.\n\nRegards,\nXander Pronk,\nRick ten Wolde,\nDerek Gielen,\nAron Dosti.\n\nTaken over by Milan Zamazal:\n\nChanges in v5:\n- ‘grids’ tuning file item renamed to ‘sets’ for consistency with rkisp1.\n- Underscores appended to Lsc::lsc* names.\n- Other minor stylistic changes.\n- Proof-of-concept polynomial LSC implemented.\n\nChanges in v4:\n- glFilterParam -> param\n- Indentation changes in the shaders.\n- A commit message part about temperature reworded.\n- Updated for YamlObject -> ValueNode.\n- New constant kLscValuesPerCell to distinguish between the constants\n  for the params array size (values) and for the stride (bytes).\n- The lookup array switched to floats and the texture to half-floats.\n\nChanges in v3:\n- LSC scripts patch dropped due to missing licences.\n- DO_LSC -> APPLY_LSC\n- textureUniformLsc_ is assigned unconditionally now.\n- New constant DebayerParams::kLscBytesPerCell.\n- LSC values in the tuning file are floats now and converted to bytes internally.\n- Source code comments added to clarify the usage of the byte LUTs.\n\nChanges in v2:\n- Remaining issues from the reviews (hopefully) addressed.\n- Especially there is only a single texture now and LSC is fully\n  conditional.\n- Major cleanup, hacks removed or replaced, typo fixes, cosmetic\n  changes, making linters happy, etc.\n- See\n  https://lists.libcamera.org/pipermail/libcamera-devel/2026-January/056883.html\n  for an example how to add the grid data.\n\nIt’s posted as RFC because:\n\n- It’s not yet completely tested although it seems to be working in my\n  environment.\n- The GPU ISP is going to be changed to multipass soon, which may\n  require changes in this patch series; similarly with the libipa effort.\n\nMilan Zamazal (5):\n  ipa: simple: Introduce default temperature value\n  libcamera: software_isp: Pass LSC availability to debayering\n  ipa: simple: Add LSC type\n  libcamera: software_isp: Use LSC type instead of LSC enabled\n  libcamera: software_isp: Add polynomial LSC\n\nXander Pronk (5):\n  libcamera: software_isp: egl: Add filter parameter to\n    createTexture2D()\n  libcamera: software_isp: Add LSC data to DebayerParams\n  ipa: simple: Add LSC algorithm\n  libcamera: shaders: Add LSC support\n  libcamera: software_isp: debayer_egl: Add LSC support\n\n include/libcamera/internal/egl.h              |   9 +-\n .../internal/software_isp/debayer_params.h    |  18 +++\n .../internal/software_isp/software_isp.h      |   1 +\n include/libcamera/ipa/soft.mojom              |   4 +-\n src/ipa/simple/algorithms/awb.cpp             |   4 +-\n src/ipa/simple/algorithms/awb.h               |   4 +-\n src/ipa/simple/algorithms/ccm.cpp             |   5 +-\n src/ipa/simple/algorithms/lsc.cpp             | 103 ++++++++++++++++++\n src/ipa/simple/algorithms/lsc.h               |  46 ++++++++\n src/ipa/simple/algorithms/meson.build         |   1 +\n src/ipa/simple/ipa_context.h                  |   4 +-\n src/ipa/simple/soft_simple.cpp                |   7 +-\n src/libcamera/egl.cpp                         |  22 +++-\n src/libcamera/shaders/bayer_1x_packed.frag    |  17 +++\n src/libcamera/shaders/bayer_unpacked.frag     |  17 +++\n src/libcamera/software_isp/debayer.cpp        |  59 ++++++++++\n src/libcamera/software_isp/debayer.h          |   3 +-\n src/libcamera/software_isp/debayer_cpu.cpp    |   3 +-\n src/libcamera/software_isp/debayer_cpu.h      |   3 +-\n src/libcamera/software_isp/debayer_egl.cpp    |  70 +++++++++++-\n src/libcamera/software_isp/debayer_egl.h      |  13 ++-\n src/libcamera/software_isp/software_isp.cpp   |   5 +-\n 22 files changed, 394 insertions(+), 24 deletions(-)\n create mode 100644 src/ipa/simple/algorithms/lsc.cpp\n create mode 100644 src/ipa/simple/algorithms/lsc.h"
}