Show a cover letter.

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

{
    "id": 25489,
    "url": "https://patchwork.libcamera.org/api/covers/25489/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/25489/",
    "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": "<20251211142824.26635-1-david.plowman@raspberrypi.com>",
    "date": "2025-12-11T14:25:56",
    "name": "[v2,0/4] Raspberry Pi AWB using neural networks",
    "submitter": {
        "id": 42,
        "url": "https://patchwork.libcamera.org/api/people/42/?format=api",
        "name": "David Plowman",
        "email": "david.plowman@raspberrypi.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/25489/mbox/",
    "series": [
        {
            "id": 5655,
            "url": "https://patchwork.libcamera.org/api/series/5655/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5655",
            "date": "2025-12-11T14:25:56",
            "name": "Raspberry Pi AWB using neural networks",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/5655/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/25489/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 3A7C3C3257\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 11 Dec 2025 14:28:33 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 8730A61604;\n\tThu, 11 Dec 2025 15:28:32 +0100 (CET)",
            "from mail-wm1-x331.google.com (mail-wm1-x331.google.com\n\t[IPv6:2a00:1450:4864:20::331])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 08E5D609D8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 11 Dec 2025 15:28:30 +0100 (CET)",
            "by mail-wm1-x331.google.com with SMTP id\n\t5b1f17b1804b1-47790b080e4so909875e9.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 11 Dec 2025 06:28:29 -0800 (PST)",
            "from davidp-pi5.pitowers.org\n\t([2a00:1098:3142:1f:88ea:c658:5b20:5e46])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-47a89da4756sm39999505e9.6.2025.12.11.06.28.27\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 11 Dec 2025 06:28:27 -0800 (PST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"kM+kO7qq\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1765463309; x=1766068109;\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=zzEO/jU62eEXeIAWdru8AgO4qN8JNfAd67RhdfVgyF0=;\n\tb=kM+kO7qqJajhuLRyxTAObU+6xXdxMfl4xiot5OZ9VKAvxQsmNkrMnB9BEJr/6kMHv0\n\tTPfchSCZXXwcgP/n4brbsUXsxdEMBxXwVulnWTO/lK/G2gPQK2vbInXAdV2xOlQv4zjx\n\t0H8DhOlJEKWW7YkmtoOhCOES2z11SsiJHx+cDRUy6OUJRpeFDMjmaeF8ir4XwenDhbZB\n\trEGoA9WZeayLWWsMvAvjzUGC3aSQIFoqHm3CDSthiqM/iTj0Wn7iiYwLHfzgHJFc50a6\n\thq+tW3H59u8ZpL6xMgDsMSHWDRmonSRAPt7lgCvVkmZSdbeUvbVUWMxGel8wQDqs1Ax0\n\t/A8g==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1765463309; x=1766068109;\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=zzEO/jU62eEXeIAWdru8AgO4qN8JNfAd67RhdfVgyF0=;\n\tb=kfgGsloiQgdL72H3TE7EKq3NAJ/ShxSGXFlEEi69WcAZxPos8oFLEPVBhcfLX8rxqW\n\t4LURPfXKpa6KCdABwr2ZdzPXCR/Nw7tkf3ubRGfcghBpj0yRPsrOF8NXJmf44p0NTIZF\n\ttkLTTLCUaMoiW0fbz+Lndx8jyI8GO71i1+AvpYCaChwGjK5yAWjB6SiKu8darZQiWqey\n\tAOGo3FjFgl9muCFe9cJK5YPZtjPFtb83aPfEhXFHtvKssugZvZ2LFPwyeD+93Z+5HgTL\n\thKHTjSDg4Gyuy4CBaQh9wWKLtx0mI8ZiFnGtDiLmBJgeYjPwjk79xsAJawhPF7RhgMub\n\tztTg==",
        "X-Gm-Message-State": "AOJu0YyaMFcxICU3cTZqVzD+x21PZsTDbc6cx31z1KfoIyhv5uPzi3IE\n\ttr0ZuFAN9zfi6MmbCcdY1aU+vY1PxX/aoLRIUhwbLGtdRO7xJOsf0G/CgKj7REgNkN2jowfiktb\n\tPfhb6",
        "X-Gm-Gg": "AY/fxX5Jj/p3vy1661PMi5h3j6PQATbO1TsJBI9imo5ceSba53psb5svEt8wEybPbbu\n\tJL7G5x4h2+YnaC2ahqGa6rfJxwb9I9yy5ZNrUxm9+5PuRxVzjTlhBpS8UTMFo/wepxA4p+BXOFS\n\tg51iERy4qysfXdcIV80LG0qJLEIxufUaaMgH5cWMYgvCSXS1D9iqkwxY1C0o+rqbHGIrFRUR+CU\n\tyZb90HrKtoGZmux+q/Ts7kCibqCVEOhONfNDtBJcMI07939o5X1YVhzQSza1Ws0VawIoOZayUZZ\n\tWy6r+rQ3K1xGGMSepfK2n5Y/vnsIaxhkM9FMXBuhuZ4JkfL4uaX+YoKIAsiaV5urur7zS4Ej3qq\n\tRsk0fa91C2Ubs6iLadq7tE8hKBBdzv0UvQ/gT2UMiMHeG0CQfvqMeOWG918BVvxKQrC3mB/ifWz\n\tlrvb2uT29LCVPZZdqB7Y2XwecwwwKcRKvH/cGUbZOo1dwmzgYTBPbA20i6EvM0JxHJ1m5WuX7ax\n\taDln1pyhWJZ8TSrsnnOA14zGASQQg==",
        "X-Google-Smtp-Source": "AGHT+IGkj+2S/znDDvxHsVisDJWD6WyXcQe0K9k3WN3KnH6IDUV3T1e/fARpRJE5NhJkCxn5HFv4uw==",
        "X-Received": "by 2002:a05:600c:681b:b0:477:632a:fd67 with SMTP id\n\t5b1f17b1804b1-47a838040e1mr68380325e9.12.1765463308547; \n\tThu, 11 Dec 2025 06:28:28 -0800 (PST)",
        "From": "David Plowman <david.plowman@raspberrypi.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "David Plowman <david.plowman@raspberrypi.com>",
        "Subject": "[PATCH v2 0/4] Raspberry Pi AWB using neural networks",
        "Date": "Thu, 11 Dec 2025 14:25:56 +0000",
        "Message-ID": "<20251211142824.26635-1-david.plowman@raspberrypi.com>",
        "X-Mailer": "git-send-email 2.47.3",
        "MIME-Version": "1.0",
        "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 again\n\nThanks for the various review comments, here's version 2 of the set. I\nthink I've applied changes for all the comments that were made:\n\n* A few cosmetic things.\n\n* I've removed the .tflite neural network files from these\n  commits. They'll come from our software repos.\n\n* I've added a meson option \"rpi-awb-nn\" to enable/disable the new\n  algorithm explicitly. Default is auto, which builds it if\n  libtensorflow-lite is available.\n\n* I went with an explicit \"enabled\" field in our algos as per\n  Barnabas' suggestion, which can be set to false to disable them.\n\nThe only other small change I made was to make the code fail if, for\nexample, it tries to load and run two AWB algorithms at the same\ntime. You just know someone will do this by mistake, and nothing good\nwill come of it!\n\nThanks again to everyone\n\nDavid\n\nPeter Bailey (4):\n  ipa: rpi: controller: awb: Separate Bayesian AWB into AwbBayes\n  ipa: rpi: controller: awb: Add Neural Network AWB\n  ipa: rpi: controller: Ignore algorithms that are not enabled\n  ipa: rpi: pisp: vc4: Update tuning files for new AWB\n\n meson_options.txt                            |   5 +\n src/ipa/rpi/controller/controller.cpp        |  18 +\n src/ipa/rpi/controller/meson.build           |  10 +\n src/ipa/rpi/controller/rpi/awb.cpp           | 409 ++---------------\n src/ipa/rpi/controller/rpi/awb.h             |  99 ++--\n src/ipa/rpi/controller/rpi/awb_bayes.cpp     | 444 ++++++++++++++++++\n src/ipa/rpi/controller/rpi/awb_nn.cpp        | 446 +++++++++++++++++++\n src/ipa/rpi/pisp/data/imx219.json            |  67 ++-\n src/ipa/rpi/pisp/data/imx296.json            |  66 ++-\n src/ipa/rpi/pisp/data/imx296_16mm.json       |  66 ++-\n src/ipa/rpi/pisp/data/imx296_6mm.json        |  66 ++-\n src/ipa/rpi/pisp/data/imx477.json            |  65 +++\n src/ipa/rpi/pisp/data/imx477_16mm.json       |  67 ++-\n src/ipa/rpi/pisp/data/imx477_6mm.json        |  67 ++-\n src/ipa/rpi/pisp/data/imx477_scientific.json |  81 +++-\n src/ipa/rpi/pisp/data/imx500.json            |  69 +++\n src/ipa/rpi/pisp/data/imx708.json            |  66 ++-\n src/ipa/rpi/pisp/data/imx708_wide.json       |  64 +++\n src/ipa/rpi/pisp/data/ov5647.json            |  65 +++\n src/ipa/rpi/vc4/data/imx219.json             |  66 +++\n src/ipa/rpi/vc4/data/imx296.json             |  66 +++\n src/ipa/rpi/vc4/data/imx477.json             |  71 +++\n src/ipa/rpi/vc4/data/imx500.json             |  69 +++\n src/ipa/rpi/vc4/data/imx708.json             |  74 +++\n src/ipa/rpi/vc4/data/imx708_wide.json        |  64 +++\n src/ipa/rpi/vc4/data/ov5647.json             |  66 +++\n 26 files changed, 2288 insertions(+), 428 deletions(-)\n create mode 100644 src/ipa/rpi/controller/rpi/awb_bayes.cpp\n create mode 100644 src/ipa/rpi/controller/rpi/awb_nn.cpp"
}