Show a cover letter.

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

{
    "id": 25958,
    "url": "https://patchwork.libcamera.org/api/covers/25958/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/25958/",
    "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": "<20260126104256.119697-1-rick.w.ten.wolde@gmail.com>",
    "date": "2026-01-26T10:42:48",
    "name": "[0/7] LSC for SoftISP simple pipeline",
    "submitter": {
        "id": 257,
        "url": "https://patchwork.libcamera.org/api/people/257/?format=api",
        "name": "Rick ten Wolde",
        "email": "rick.w.ten.wolde@gmail.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/25958/mbox/",
    "series": [
        {
            "id": 5739,
            "url": "https://patchwork.libcamera.org/api/series/5739/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5739",
            "date": "2026-01-26T10:42:48",
            "name": "LSC for SoftISP simple pipeline",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5739/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/25958/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 749E3C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 26 Jan 2026 10:48:08 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2A71A61FD9;\n\tMon, 26 Jan 2026 11:48:07 +0100 (CET)",
            "from mail-ej1-x633.google.com (mail-ej1-x633.google.com\n\t[IPv6:2a00:1450:4864:20::633])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E42DF61A35\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 26 Jan 2026 11:43:02 +0100 (CET)",
            "by mail-ej1-x633.google.com with SMTP id\n\ta640c23a62f3a-b885e8c6700so504143466b.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 26 Jan 2026 02:43:02 -0800 (PST)",
            "from castortop.wolde.loc (195-240-110-192.fixed.kpn.net.\n\t[195.240.110.192]) by smtp.gmail.com with ESMTPSA id\n\ta640c23a62f3a-b885b7661f7sm599220366b.54.2026.01.26.02.43.00\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tMon, 26 Jan 2026 02:43:01 -0800 (PST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"hcOXDS6E\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20230601; t=1769424182; x=1770028982;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=wt8wFcqQpdezmh62fqUPfgm0pFUVCM5UUbZZp+VcTtE=;\n\tb=hcOXDS6E8QPC3pQvNr0uhp6lkPdmd4nYnFlLkFOAXpX0SeI19O/aIr8eCdf7lfrkDu\n\tuA7oUkTPoS8G20jzVCPUP592ZoZyVxv5eQ8w/JNaJSPXFC2+/R7HuLpifY1q8ycDgDn9\n\tvCC/0CH7DpgQOPKn42TYbO9NC3nmtgOSz6mGDYNHKq/xSPvDXH/iNwoAIaZlFjTMs7fU\n\tbtVm1P7+FrWQNrCpk0BIaVCot2NlNbXbrqnyH2KEuLZROiOKBZUNrw+PrKWERPsWZcpZ\n\t8lB2nzRcOla+3AZAZ1MKt/7KY6eeCFft6sK3X7c+i/MQx45mtj3oXyKC8WKJn6coOPsA\n\tS72g==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1769424182; x=1770028982;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=wt8wFcqQpdezmh62fqUPfgm0pFUVCM5UUbZZp+VcTtE=;\n\tb=nKkcQbYmVEO1/xLleFzQmQUrC2faW7+6e4ri79vgfjUPCLz4iNHdefdSXkdsJS5KSi\n\t5bbK5bIfUu7iSUo+WYDocWrZxeqvUy1g/kyQL3Lj7+hKKbHqONNiQA1k+91Bz/N9Qyqs\n\toxBdr9PajIt2r9D7FP9uh0o09IoBZZBjH4e2hnhxONTjgl5XPzijXIirNGSUmWccfJ2j\n\tTaPC37vSHZDze5SxGYgPy8O6uqUIBGr1BdVVLU/PLYn4p+bRrZ7wyiQqT1xGIQIbpjcb\n\tqsEzLiZ5nEyGI3rSIVdbDLo6RDQt9EQPj9NMTCymLp8SerQzlqhH35mCi1zy6KuyJjMt\n\tBEEg==",
        "X-Gm-Message-State": "AOJu0YwBRXbeGzd6JUWwbrLnPAzd/gSOl3Tq6UUfBrqVkvOsr4ZO2h+E\n\t6BcyU/aAp0OCHIEEno2LtMCHEQV/HOrtsLYTgACTvq4Lopy6wMqkBDigBFxHEA==",
        "X-Gm-Gg": "AZuq6aKdVw+zgtY0LWVJtwD9xIyWosVFf1U7RHbxsIK7ubO7DhVH3fSUDTfwNn3yy+H\n\tUMM2DaniiGxJy24SYMD4deqr8OUBAYWzYuQji3w7BZnEUKZcn87ikH9P3aSJ2FrZ6IpsAiHYCC4\n\t8cWfhxnrg65GRnUYg9cei6pVufJMSm+cMROIlZfude1cl0pPerrC9MzZHTAVwLd379ePZJgEnyN\n\tPCjBRBI6076W6zSZ0mMb4cx5DxOnsctjhAJgQ3zcw4P5aAO2pduVdvY6ey+5yzqZ3lAqEMQ7Adh\n\tpuqpr65YjAK+EdI+d/J1/5kOrWHFc3cy128dD9Z756RbBwXo/r4jkrMtRup9a2PW4jZXQfQxOal\n\t5QybCnZdS1W5TMTRI50nkJ/ODb9LfRYWqWVcUFiKBD2mwO3Y0s2ujNvmFfYlL2rPWkL8DwI6njv\n\tkUzKaoUkP0AA9suWmXDDsUQeKhPPEjjgAx/MP0JhYqSDXhYKtVxo0ECDZ2nQgqVhI=",
        "X-Received": "by 2002:a17:907:d1b:b0:b88:5b35:914a with SMTP id\n\ta640c23a62f3a-b8d2e8368d9mr296653266b.57.1769424181691; \n\tMon, 26 Jan 2026 02:43:01 -0800 (PST)",
        "From": "Rick ten Wolde <rick.w.ten.wolde@gmail.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "xander.c.pronk@gmail.com, derekgielen@outlook.com,\n\t22012540@student.hhs.nl, \n\trick.w.ten.wolde@gmail.com, johannes.goede@oss.qualcomm.com",
        "Subject": "[PATCH 0/7] LSC for SoftISP simple pipeline",
        "Date": "Mon, 26 Jan 2026 11:42:48 +0100",
        "Message-ID": "<20260126104256.119697-1-rick.w.ten.wolde@gmail.com>",
        "X-Mailer": "git-send-email 2.51.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-Mailman-Approved-At": "Mon, 26 Jan 2026 11:48:05 +0100",
        "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\n\nRegards,\nXander Pronk,\nRick ten Wolde,\nDerek Gielen,\nAron Dosti.\n\n\nDerek Gielen (1):\n  utils/tuning: Add LSC scripts\n\nXander Pronk (6):\n  libcamera: software_isp: egl: Add gl_scale_param to 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  HACK: Add test LSC to src/ipa/simple/data/uncalibrated.yaml\n\n include/libcamera/internal/egl.h              |   2 +-\n .../internal/software_isp/debayer_params.h    |   6 +\n src/ipa/simple/algorithms/lsc.cpp             |  69 +++++++\n src/ipa/simple/algorithms/lsc.h               |  49 +++++\n src/ipa/simple/algorithms/meson.build         |   1 +\n src/ipa/simple/data/uncalibrated.yaml         | 183 +++++++++++++++++-\n src/libcamera/egl.cpp                         |   7 +-\n src/libcamera/shaders/bayer_1x_packed.frag    |  10 +\n src/libcamera/shaders/bayer_unpacked.frag     |  10 +\n src/libcamera/software_isp/debayer.cpp        |  18 ++\n src/libcamera/software_isp/debayer_egl.cpp    |  21 ++\n src/libcamera/software_isp/debayer_egl.h      |   9 +\n utils/tuning/exportTuningToLscShader.py       | 120 ++++++++++++\n utils/tuning/generate_lsc_map_plot.py         |  76 ++++++++\n 14 files changed, 573 insertions(+), 8 deletions(-)\n create mode 100644 src/ipa/simple/algorithms/lsc.cpp\n create mode 100644 src/ipa/simple/algorithms/lsc.h\n create mode 100644 utils/tuning/exportTuningToLscShader.py\n create mode 100644 utils/tuning/generate_lsc_map_plot.py"
}