Show a patch.

GET /api/patches/27574/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 27574,
    "url": "https://patchwork.libcamera.org/api/patches/27574/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/27574/",
    "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": "<20260803131435.153927-28-barnabas.pocze@ideasonboard.com>",
    "date": "2026-08-03T13:14:12",
    "name": "[RFC,v3,27/50] ipa: libipa: agc: Use minimum line length",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "5d81107aecdd9b4b69317bfb56789d739400f14c",
    "submitter": {
        "id": 216,
        "url": "https://patchwork.libcamera.org/api/people/216/?format=api",
        "name": "Barnabás Pőcze",
        "email": "barnabas.pocze@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/27574/mbox/",
    "series": [
        {
            "id": 6103,
            "url": "https://patchwork.libcamera.org/api/series/6103/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=6103",
            "date": "2026-08-03T13:13:45",
            "name": "ipa: libipa: agc rework",
            "version": 3,
            "mbox": "https://patchwork.libcamera.org/series/6103/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/27574/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/27574/checks/",
    "tags": {},
    "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 29C54C333B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon,  3 Aug 2026 13:15:15 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 74DCD680A7;\n\tMon,  3 Aug 2026 15:15:06 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 08B7A6809B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  3 Aug 2026 15:14:45 +0200 (CEST)",
            "from pb-laptop.local (185.221.141.208.nat.pool.zt.hu\n\t[185.221.141.208])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 249435B3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  3 Aug 2026 15:13:36 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"ckvrRZgk\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1785762816;\n\tbh=QGU7SH5jLslYQ2ZvW3px3dppTJ8XOHsiwgoDXuP6T0Y=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=ckvrRZgkiPO1YJz2xSTN/sT8SUqDW/2yY+O8N6jYdZpaVOCKbU11knL0VcO45/Bjn\n\t/O7gZ0vC5YN5f/aSPfPWG+r3cg/qPiyqV/JFdT9v7t9Hawxal5PgyY1PA7UBPm1ERU\n\tSs2hsFT9Xs8ptPSjrp1WjNkaZVWucz0d+XHbaI88=",
        "From": "=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Subject": "[RFC PATCH v3 27/50] ipa: libipa: agc: Use minimum line length",
        "Date": "Mon,  3 Aug 2026 15:14:12 +0200",
        "Message-ID": "<20260803131435.153927-28-barnabas.pocze@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.55.0",
        "In-Reply-To": "<20260803131435.153927-1-barnabas.pocze@ideasonboard.com>",
        "References": "<20260803131435.153927-1-barnabas.pocze@ideasonboard.com>",
        "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": "`IPACameraSensorInfo::minLineLength` already contains the minimum\nline length, taking the output format and minimum horizontal blanking\ninto account.\n\nFurthermore, the `CameraSensor` implementations already set the horizontal\nblanking to the minimum when initializing the sensor.\n\nAnd finally the line duration is already calculated with the minimum\nline length.\n\nSo use the minimum for the frame duration calculations as well.\n---\n src/ipa/libipa/agc.cpp | 8 +++-----\n 1 file changed, 3 insertions(+), 5 deletions(-)",
    "diff": "diff --git a/src/ipa/libipa/agc.cpp b/src/ipa/libipa/agc.cpp\nindex e9055ddd7b..0f787925cb 100644\n--- a/src/ipa/libipa/agc.cpp\n+++ b/src/ipa/libipa/agc.cpp\n@@ -250,10 +250,11 @@ int AgcAlgorithm::init(const ValueNode &tuningData)\n int AgcAlgorithm::configure(agc::Session &session, agc::ActiveState &state,\n \t\t\t    const ConfigurationParams &config)\n {\n+\tconst auto lineLength = config.sensorInfo.minLineLength;\n+\n \tsession = {};\n \tsession.autoAllowed = config.autoAllowed;\n-\tsession.lineDuration =\n-\t\tconfig.sensorInfo.minLineLength * 1.0s / config.sensorInfo.pixelRate;\n+\tsession.lineDuration = lineLength * 1.0s / config.sensorInfo.pixelRate;\n \tsession.sensor.outputSize = config.sensorInfo.outputSize;\n \n \tconst double lineDurationUs = session.lineDuration.get<std::micro>();\n@@ -286,9 +287,6 @@ int AgcAlgorithm::configure(agc::Session &session, agc::ActiveState &state,\n \t * The frame length is computed assuming a fixed line length combined\n \t * with the vertical frame sizes.\n \t */\n-\tconst ControlInfo &v4l2HBlank = config.sensorControls.find(V4L2_CID_HBLANK)->second;\n-\tuint32_t hblank = v4l2HBlank.def().get<int32_t>();\n-\tuint32_t lineLength = config.sensorInfo.outputSize.width + hblank;\n \n \tconst ControlInfo &v4l2VBlank = config.sensorControls.find(V4L2_CID_VBLANK)->second;\n \tstd::array<uint32_t, 3> frameHeights{\n",
    "prefixes": [
        "RFC",
        "v3",
        "27/50"
    ]
}