Show a cover letter.

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

{
    "id": 24478,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/24478/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/24478/",
    "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": "<20250927180004.84620-1-hansg@kernel.org>",
    "date": "2025-09-27T17:59:58",
    "name": "[v3,0/6] ipa: software_isp: AGC: Fox AGC oscillation bug",
    "submitter": {
        "id": 239,
        "url": "https://patchwork.libcamera.org/api/1.1/people/239/?format=api",
        "name": "Hans de Goede",
        "email": "hansg@kernel.org"
    },
    "mbox": "https://patchwork.libcamera.org/cover/24478/mbox/",
    "series": [
        {
            "id": 5462,
            "url": "https://patchwork.libcamera.org/api/1.1/series/5462/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5462",
            "date": "2025-09-27T17:59:58",
            "name": "ipa: software_isp: AGC: Fox AGC oscillation bug",
            "version": 3,
            "mbox": "https://patchwork.libcamera.org/series/5462/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/24478/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 72FFEBDB1C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 27 Sep 2025 18:00:13 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 66C9E6B5F8;\n\tSat, 27 Sep 2025 20:00:11 +0200 (CEST)",
            "from sea.source.kernel.org (sea.source.kernel.org\n\t[IPv6:2600:3c0a:e001:78e:0:1991:8:25])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6B6476B5A2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 27 Sep 2025 20:00:09 +0200 (CEST)",
            "from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])\n\tby sea.source.kernel.org (Postfix) with ESMTP id 6B60F44A46\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 27 Sep 2025 18:00:07 +0000 (UTC)",
            "by smtp.kernel.org (Postfix) with ESMTPSA id 8EEF2C4CEE7;\n\tSat, 27 Sep 2025 18:00:06 +0000 (UTC)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=kernel.org header.i=@kernel.org\n\theader.b=\"X+9jgfCK\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1758996007;\n\tbh=LdbUu4Ki/VD7Ep3GwBtC1+QMAZE7/xYTKhtt1nxcOuc=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=X+9jgfCKxFhELlsGlWYvr1YuO7uOcKcTA00tLgPNOSPzxZZv9uX3BglAnvQAccgHd\n\tK1T0XBaH6sVnFYt4jXPNIiMBB1CLTaJUKSEiUcJ124TNFzT0v8pIECHZ7gbclFegsW\n\tpLGvML9/lS5n7e/FBWYjN7YJ+H0Z/xykSJ77d5iAt9Uy714+D/IVCruSe8yVML4ShG\n\t6uKL2RUXFOttyNBI0snHegNUw4P44LLCukPqNcImpP+nT+QcrVdiE6NbGOCLuwzVLY\n\tnrrtL1nejQ3PYKQ+6edprr3YwVp+Zf6fJgCLhXHu2Ln6DhwRzHmZRDvn1WvLuRdLsS\n\tSCeYAz5qYPFkw==",
        "From": "Hans de Goede <hansg@kernel.org>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Hans de Goede <hansg@kernel.org>",
        "Subject": "[PATCH v3 0/6] ipa: software_isp: AGC: Fox AGC oscillation bug",
        "Date": "Sat, 27 Sep 2025 19:59:58 +0200",
        "Message-ID": "<20250927180004.84620-1-hansg@kernel.org>",
        "X-Mailer": "git-send-email 2.51.0",
        "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 All,\n\nDue to a combination of not having correct control-delay information for\nvarious sensors as well as the generic nature of the simple-pipeline +\nsoftware-ISP meaning that any pipeline delays are unknown it is impossible\nto get reliable control-delay values.\n\nWrong control-delay values can lead to pretty bad oscilation. See the v1\ncover-letter for more details.\n\nThis series fixes some unrelated issues in the softIPA AGC algorithm and\nin the last 2 patches addresses the oscillation issue. Note v2 and later\ntake a new approach to fixing the oscilation by only generating statistics\nfor every 4th frame and having the IPA only run its algorithms when there\nactually are statistics. This saves CPU time, while at the same time\navoiding the oscillation issue.\n\nv3 has successfully passed CI, see:\nhttps://gitlab.freedesktop.org/camera/libcamera-softisp/-/commit/76f37231527d10399bc123a546f8e252faaa8310/pipelines?ref=softisp-agc-oscillation-fixes-v3\n\nChanges in v3:\n- Drop if (!stats_->valid) early exit from IPASoftSimple::processStats()\n- Save last AGC calculated new gain and exposure values and re-use these\n  for frames without statistics, this avoids delayedCtrl history underruns\n- Improve SwIspStats.valid documentation\n\nChanges in v2:\n- Skip running IPA algorithms when there are no statistics\n- Only generate statistics for every 4th frame\n\nNote the speed of the AGC algorithm converges on the desired brightness\nlevel is unchanged compared to v1 since in v1 the AGC algorithm would\nskip 3 frames after every gain/exposure change.\n\nRegards,\n\nHans\n\n\n\nHans de Goede (6):\n  ipa: software_isp: Fix context_.configuration.agc.againMin init\n  ipa: software_isp: AGC: Do not lower gain below 1.0\n  ipa: software_isp: AGC: Raise exposure or gain not both at the same\n    time\n  ipa: software_isp: AGC: Only use integers for exposure calculations\n  libcamera: software_isp: Add valid flag to struct SwIspStats\n  libcamera: software_isp: Run sw-statistics once every 4th frame\n\n .../internal/software_isp/swisp_stats.h       |  5 ++++\n src/ipa/simple/algorithms/agc.cpp             | 26 ++++++++++---------\n src/ipa/simple/algorithms/awb.cpp             |  3 +++\n src/ipa/simple/algorithms/blc.cpp             |  3 +++\n src/ipa/simple/ipa_context.h                  |  2 +-\n src/ipa/simple/soft_simple.cpp                |  7 ++++-\n src/libcamera/software_isp/debayer_cpu.cpp    | 25 +++++++++++-------\n src/libcamera/software_isp/debayer_cpu.h      |  4 +--\n src/libcamera/software_isp/swstats_cpu.cpp    |  9 ++++++-\n src/libcamera/software_isp/swstats_cpu.h      |  5 +++-\n 10 files changed, 61 insertions(+), 28 deletions(-)"
}