Show a patch.

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

{
    "id": 19906,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/19906/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/19906/",
    "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": "<20240418124632.652163-3-dan.scally@ideasonboard.com>",
    "date": "2024-04-18T12:46:31",
    "name": "[2/3] ipa: rkisp1: Refer to integration time rather than shutter speed",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "59c97f4295bdabd9f908375573f32265a195bf5c",
    "submitter": {
        "id": 156,
        "url": "https://patchwork.libcamera.org/api/1.1/people/156/?format=api",
        "name": "Dan Scally",
        "email": "dan.scally@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/19906/mbox/",
    "series": [
        {
            "id": 4262,
            "url": "https://patchwork.libcamera.org/api/1.1/series/4262/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4262",
            "date": "2024-04-18T12:46:29",
            "name": "Minor AGC fixes",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/4262/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/19906/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/19906/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 AF406C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 18 Apr 2024 12:46:50 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5ED62633F9;\n\tThu, 18 Apr 2024 14:46:46 +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 42574633EE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 18 Apr 2024 14:46:43 +0200 (CEST)",
            "from mail.ideasonboard.com\n\t(cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net [86.13.91.161])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 88A68802;\n\tThu, 18 Apr 2024 14:45:55 +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=\"Mqgvn4c4\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1713444355;\n\tbh=xX1X5JPvnzYyK5irf8neEPA3/Vdh8aMQLc3EHp32H+8=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=Mqgvn4c4rCdVP3swH5ZYW4uEfZZlTAZpR4TxCSk33DLbVyalgFEs1XX80gE+S38EO\n\tYY+50UCUexk3iXxJf20InU5O93mkADeajnFFLCEz4FYg/Ym67eC8NJDUxD0Tznh00+\n\tW1LNxDMOSgnSYQsnfDtboVvnyPO+z19R0pi7s0XM=",
        "From": "Daniel Scally <dan.scally@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Daniel Scally <dan.scally@ideasonboard.com>",
        "Subject": "[PATCH 2/3] ipa: rkisp1: Refer to integration time rather than\n\tshutter speed",
        "Date": "Thu, 18 Apr 2024 13:46:31 +0100",
        "Message-Id": "<20240418124632.652163-3-dan.scally@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20240418124632.652163-1-dan.scally@ideasonboard.com>",
        "References": "<20240418124632.652163-1-dan.scally@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": "Multiple variables referencing shutter speed in the RkISP1 IPA module\nare in fact calculated and used as integration time. The discrepancy\nis problematic given the minimum shutter speed would produce the max\nintegration time.\n\nReplace references to shutter speed with integration time.\n\nSigned-off-by: Daniel Scally <dan.scally@ideasonboard.com>\n---\n src/ipa/rkisp1/algorithms/agc.cpp | 4 ++--\n src/ipa/rkisp1/ipa_context.cpp    | 8 ++++----\n src/ipa/rkisp1/ipa_context.h      | 4 ++--\n src/ipa/rkisp1/rkisp1.cpp         | 8 ++++----\n 4 files changed, 12 insertions(+), 12 deletions(-)",
    "diff": "diff --git a/src/ipa/rkisp1/algorithms/agc.cpp b/src/ipa/rkisp1/algorithms/agc.cpp\nindex 27b6f2c1..13f54398 100644\n--- a/src/ipa/rkisp1/algorithms/agc.cpp\n+++ b/src/ipa/rkisp1/algorithms/agc.cpp\n@@ -95,8 +95,8 @@ int Agc::configure(IPAContext &context, const IPACameraSensorInfo &configInfo)\n \tcontext.configuration.agc.measureWindow.v_size = 3 * configInfo.outputSize.height / 4;\n \n \t/* \\todo Run this again when FrameDurationLimits is passed in */\n-\tconfigureExposureModeHelpers(context.configuration.sensor.minShutterSpeed,\n-\t\t\t\t     context.configuration.sensor.maxShutterSpeed,\n+\tconfigureExposureModeHelpers(context.configuration.sensor.minIntegrationTime,\n+\t\t\t\t     context.configuration.sensor.maxIntegrationTime,\n \t\t\t\t     context.configuration.sensor.minAnalogueGain,\n \t\t\t\t     context.configuration.sensor.maxAnalogueGain);\n \ndiff --git a/src/ipa/rkisp1/ipa_context.cpp b/src/ipa/rkisp1/ipa_context.cpp\nindex 070834fa..991ca1c2 100644\n--- a/src/ipa/rkisp1/ipa_context.cpp\n+++ b/src/ipa/rkisp1/ipa_context.cpp\n@@ -78,11 +78,11 @@ namespace libcamera::ipa::rkisp1 {\n  * \\var IPASessionConfiguration::sensor\n  * \\brief Sensor-specific configuration of the IPA\n  *\n- * \\var IPASessionConfiguration::sensor.minShutterSpeed\n- * \\brief Minimum shutter speed supported with the sensor\n+ * \\var IPASessionConfiguration::sensor.minIntegrationTime\n+ * \\brief Minimum integration time supported with the sensor\n  *\n- * \\var IPASessionConfiguration::sensor.maxShutterSpeed\n- * \\brief Maximum shutter speed supported with the sensor\n+ * \\var IPASessionConfiguration::sensor.maxIntegrationTime\n+ * \\brief Maximum integration time supported with the sensor\n  *\n  * \\var IPASessionConfiguration::sensor.minAnalogueGain\n  * \\brief Minimum analogue gain supported with the sensor\ndiff --git a/src/ipa/rkisp1/ipa_context.h b/src/ipa/rkisp1/ipa_context.h\nindex 256b75eb..3405a260 100644\n--- a/src/ipa/rkisp1/ipa_context.h\n+++ b/src/ipa/rkisp1/ipa_context.h\n@@ -43,8 +43,8 @@ struct IPASessionConfiguration {\n \t} lsc;\n \n \tstruct {\n-\t\tutils::Duration minShutterSpeed;\n-\t\tutils::Duration maxShutterSpeed;\n+\t\tutils::Duration minIntegrationTime;\n+\t\tutils::Duration maxIntegrationTime;\n \t\tdouble minAnalogueGain;\n \t\tdouble maxAnalogueGain;\n \ndiff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp\nindex d8610095..15919d3f 100644\n--- a/src/ipa/rkisp1/rkisp1.cpp\n+++ b/src/ipa/rkisp1/rkisp1.cpp\n@@ -245,14 +245,14 @@ int IPARkISP1::configure(const IPAConfigInfo &ipaConfig,\n \n \t/*\n \t * When the AGC computes the new exposure values for a frame, it needs\n-\t * to know the limits for shutter speed and analogue gain.\n+\t * to know the limits for integration time and analogue gain.\n \t * As it depends on the sensor, update it with the controls.\n \t *\n-\t * \\todo take VBLANK into account for maximum shutter speed\n+\t * \\todo take VBLANK into account for maximum integration time\n \t */\n-\tcontext_.configuration.sensor.minShutterSpeed =\n+\tcontext_.configuration.sensor.minIntegrationTime =\n \t\tminExposure * context_.configuration.sensor.lineDuration;\n-\tcontext_.configuration.sensor.maxShutterSpeed =\n+\tcontext_.configuration.sensor.maxIntegrationTime =\n \t\tmaxExposure * context_.configuration.sensor.lineDuration;\n \tcontext_.configuration.sensor.minAnalogueGain = camHelper_->gain(minGain);\n \tcontext_.configuration.sensor.maxAnalogueGain = camHelper_->gain(maxGain);\n",
    "prefixes": [
        "2/3"
    ]
}