Show a cover letter.

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

{
    "id": 23583,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/23583/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/23583/",
    "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": "<20250617082956.5699-1-david.plowman@raspberrypi.com>",
    "date": "2025-06-17T08:29:48",
    "name": "[0/7] Raspberry Pi AEC/AGC update",
    "submitter": {
        "id": 42,
        "url": "https://patchwork.libcamera.org/api/1.1/people/42/?format=api",
        "name": "David Plowman",
        "email": "david.plowman@raspberrypi.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/23583/mbox/",
    "series": [
        {
            "id": 5225,
            "url": "https://patchwork.libcamera.org/api/1.1/series/5225/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5225",
            "date": "2025-06-17T08:29:48",
            "name": "Raspberry Pi AEC/AGC update",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5225/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/23583/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 E3B4EBDE6B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 17 Jun 2025 08:30:05 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E27E168DCB;\n\tTue, 17 Jun 2025 10:30:03 +0200 (CEST)",
            "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 690FD68DB4\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Jun 2025 10:30:01 +0200 (CEST)",
            "by mail-wm1-x331.google.com with SMTP id\n\t5b1f17b1804b1-450dd065828so43267575e9.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 17 Jun 2025 01:30:01 -0700 (PDT)",
            "from raspberrypi.pitowers.org\n\t([2a00:1098:3142:1f:ffc9:aff6:7f7f:893b])\n\tby smtp.gmail.com with ESMTPSA id\n\t5b1f17b1804b1-4532e259108sm166062955e9.32.2025.06.17.01.29.59\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tTue, 17 Jun 2025 01:29:59 -0700 (PDT)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"mx7WvGC3\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1750149000; x=1750753800;\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=oh8rnBTXDkhTjRbHGK7YAMTrH1bifSn/C8fKn4E14P4=;\n\tb=mx7WvGC3e+5UcBJw+LxbcVYK7SYeHGBW2BUg79MmMsfu+1b2Yb1FTbJ9TH12zb7P6k\n\tQNIVjbSeU3CX/IUA5rjYYBp3PUWP0HIf/Q+9hoJ35tRGOPcuhQ7nFWIx7o7XK/TcZsWd\n\tJsHpfs9oN5uLZtmfZk9N9e6qR/ugZ2WEDx/Hh2NSl+tSjsYBRH5LsFNqAI7JyBDP+h2v\n\tBI/VSj0QytV72DY3LYKxkoDW3dKv2hjATgI5fyYaPUM25e8jiy1L0hbn9xFBmfe2+RqF\n\tkr0aHw3VmrtaWNSyDm9r3hz359vO1joLCoacuRh7teKv/wkVM9G+k2ilI+V4lBekcrJ0\n\taHDQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1750149000; x=1750753800;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-message-state:from:to:cc:subject:date:message-id\n\t:reply-to;\n\tbh=oh8rnBTXDkhTjRbHGK7YAMTrH1bifSn/C8fKn4E14P4=;\n\tb=LVtc6GCeExvL4CiTHRkVdf9VCOFHI8PvOewp8CrjMiz1voU8/l9YacxsLHPthztsKT\n\t82dfk4yv1Qcynn+OiehaKFWediwHOUxaTNzzbSG9PhLXBNxE5dFQ9LmAK71V+skqA1Tp\n\tzBea+mG6R9+kMNPEt8JE63lP6SD2oncfUp39AJdEQonmVGreH/Itv4l4b0MDsBm0k9Xj\n\trH6wUmmfXcavmAQ8FhPnrehkzESH3S86gH7TEVd7tCCJ0Stji9icGO+D2JCCIwm0Gznr\n\tt9UOwWnDyxwNK10+EZTTS6m6PeB75uKOJyeT3s1b6ARfwuJPyRkchxnCI+cl+YnRDZmT\n\t/AVQ==",
        "X-Gm-Message-State": "AOJu0Yw6iipE5PZYH2kNibaaFlmR3wp3rUrA9GqcU4CXbP+MNNExOHTx\n\t7GqEureUNtw71bUk1nRhOseZZQOJZDkAq1po1h/unc4oFIfKtdlzSA5fFhjP3CRozykJPISoZlj\n\ta/hoi",
        "X-Gm-Gg": "ASbGnctNK6BWKtaLiT+c5W7yvJgfol+TGCZYv1pRjGqTXGceoOytZVnKa0N5QutRWqf\n\tgfrRdC2hlkWx0qL5tntFdJo0AM5hmP4yT8wWHCPlz4bQUBiDkN43o4aIktbx19ltw2zm7SRVuuS\n\tv5E76JPY2gm3UPUMU9k1hE3ZpHk2u6TqFGqCujb3YBHOg8N0UEGBVtiAScpYuvqEfNl26Ytb5DQ\n\tGcwFJ+dDD8bkJKH6aAm+A3+y38N8XFuxyOcj7OK4MzSh6aFcCX619aLPQ9C4Dculmtcdr3TnmhO\n\t8dHu6qPHN46eqbovaoxmlcVZOcNTP1NVAtrFAJuIiIrfTnxTcEvFEQD+fpvWL7NMKr5TibMmmCR\n\t+Mz9sXQ0IHlc/HHTi/A==",
        "X-Google-Smtp-Source": "AGHT+IF9K6uSPABP4+MDkHLgEO47KZaRfWOeVoxYdR66n40BC5Q6fwwGqp79nAWjJv0hPlgt4mm21g==",
        "X-Received": "by 2002:a05:600c:630f:b0:440:9b1a:cd78 with SMTP id\n\t5b1f17b1804b1-4533ca8b32fmr145007235e9.10.1750149000341; \n\tTue, 17 Jun 2025 01:30:00 -0700 (PDT)",
        "From": "David Plowman <david.plowman@raspberrypi.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "David Plowman <david.plowman@raspberrypi.com>",
        "Subject": "[PATCH 0/7] Raspberry Pi AEC/AGC update",
        "Date": "Tue, 17 Jun 2025 09:29:48 +0100",
        "Message-Id": "<20250617082956.5699-1-david.plowman@raspberrypi.com>",
        "X-Mailer": "git-send-email 2.39.5",
        "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 everyone\n\nHere's a patch set that originated way back at the end of 2023! I\nremember thinking \"oh, I'll send these patches once Pi 5 support has\nbeen merged\", thinking it would only be a few weeks. How young and\nfoolish I was!\n\nAnyway, it was so long ago now, that I felt rather like I was\nreviewing a patch set from another person - \"past David\", I suppose.\n\nThe first 3 patches are small technical or cosmetic improvements, not\nof any particularly great consequence. Each is standalone. I think I'm\nhappy that past David seemed to know what he was doing.\n\nThe remaining 4 patches are the important ones. Our AEC/AGC has always\nhad a problem because the digital gain was set in its prepare()\nmethod.  The catch is that if we're running at high framerates, we\nfrequently skip the IPAs altogether, meaning the digital gain that is\nrequired - because it's making up for a deficit in exposure - doesn't\nget applied. This causes some sometimes very obvious \"winks\".\n\nIn these 4 last patches, calculation of the digital gain is moved out\nof prepare() to process(), meaning it's always available. And the IPA\ncode is refactored slightly so that the digital gain is always\napplied, even when the rest of AEC/AGC is skipped.\n\nI hope it makes reasonable sense - there is some fiddly stuff going on\nhere. Hats off to past David!\n\nThanks!\n\nPresent-day David\n\n\nDavid Plowman (7):\n  ipa: rpi: agc: Change handling of colour gains less than 1\n  ipa: rpi: agc: Make the maximum digital gain configurable\n  ipa: rpi: agc: Rename \"analogue gain\" to \"gain\" where appropriate\n  ipa: rpi: Advance the delay context counter even when IPAs don't run\n  ipa: rpi: agc: Calculate digital gain in process()\n  ipa: rpi: Update digital gain handling in IPA base and derived classes\n  ipa: rpi: agc: Remove digital gain from AgcPrepareStatus\n\n src/ipa/rpi/common/ipa_base.cpp            |  72 ++++---\n src/ipa/rpi/common/ipa_base.h              |   6 +-\n src/ipa/rpi/controller/agc_algorithm.h     |   2 +-\n src/ipa/rpi/controller/agc_status.h        |   4 +-\n src/ipa/rpi/controller/rpi/agc.cpp         |   6 +-\n src/ipa/rpi/controller/rpi/agc.h           |   4 +-\n src/ipa/rpi/controller/rpi/agc_channel.cpp | 236 +++++++++------------\n src/ipa/rpi/controller/rpi/agc_channel.h   |   6 +-\n src/ipa/rpi/pisp/pisp.cpp                  |  81 ++++---\n src/ipa/rpi/vc4/vc4.cpp                    |  42 +++-\n 10 files changed, 248 insertions(+), 211 deletions(-)"
}