Show a patch.

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

{
    "id": 14246,
    "url": "https://patchwork.libcamera.org/api/1.1/patches/14246/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/14246/",
    "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": "<20211022073249.35084-11-jeanmichel.hautbois@ideasonboard.com>",
    "date": "2021-10-22T07:32:45",
    "name": "[libcamera-devel,v4,10/14] ipa: ipu3: agc: Rename gains properly",
    "commit_ref": "fd5a82ea880908f2dc99e730e91cbe2cc6ce0327",
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "fa67f943579df4b32e8409d9fa474f9e670bff66",
    "submitter": {
        "id": 75,
        "url": "https://patchwork.libcamera.org/api/1.1/people/75/?format=api",
        "name": "Jean-Michel Hautbois",
        "email": "jeanmichel.hautbois@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/14246/mbox/",
    "series": [
        {
            "id": 2647,
            "url": "https://patchwork.libcamera.org/api/1.1/series/2647/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2647",
            "date": "2021-10-22T07:32:35",
            "name": "ipa: ipu3: Fix AGC bugs",
            "version": 4,
            "mbox": "https://patchwork.libcamera.org/series/2647/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/14246/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/14246/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 22694BF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 22 Oct 2021 07:33:08 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9A4C268F81;\n\tFri, 22 Oct 2021 09:33:07 +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 4237468F63\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 22 Oct 2021 09:32:56 +0200 (CEST)",
            "from tatooine.ideasonboard.com (unknown\n\t[IPv6:2a01:e0a:169:7140:22cc:3af6:5ccb:8367])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id D5C341908;\n\tFri, 22 Oct 2021 09:32:55 +0200 (CEST)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"gQNbafr6\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1634887975;\n\tbh=95b+8gHG7d1Chs0ugj5CAFjD02nbkB4j+53yWcB6gEg=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=gQNbafr6LHVDCDEehJ9lvMclRD4MWlTP4iDaTnyh20lQHD/uP7PE2PUeFlG5sjUkT\n\tYTTcF9ZXvkFranKBaxofJTh61cYaCqSf25vwIfkQzYww0Fvxq8ws/WV1PeEbR4Ouyx\n\tGHfQ8Ncx8dY4xOKmzzNn5U8Leh8wOYJA4+Ki1r4A=",
        "From": "Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Date": "Fri, 22 Oct 2021 09:32:45 +0200",
        "Message-Id": "<20211022073249.35084-11-jeanmichel.hautbois@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.32.0",
        "In-Reply-To": "<20211022073249.35084-1-jeanmichel.hautbois@ideasonboard.com>",
        "References": "<20211022073249.35084-1-jeanmichel.hautbois@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[libcamera-devel] [PATCH v4 10/14] ipa: ipu3: agc: Rename gains\n\tproperly",
        "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": "We have mixed terms between gain, analogue gain and the exposure value\ngain.\n\nMake it clear when we are using the analogue gain from the sensor, and\nwhen we are using the calculated gain to be applied to the exposure\nvalue to reach the target.\n\nSigned-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/ipa/ipu3/algorithms/agc.cpp | 17 +++++++++--------\n 1 file changed, 9 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp\nindex 6f5b6a45..e7c59f3d 100644\n--- a/src/ipa/ipu3/algorithms/agc.cpp\n+++ b/src/ipa/ipu3/algorithms/agc.cpp\n@@ -125,7 +125,7 @@ void Agc::filterExposure()\n \tLOG(IPU3Agc, Debug) << \"After filtering, total_exposure \" << filteredExposure_;\n }\n \n-void Agc::lockExposureGain(uint32_t &exposure, double &gain)\n+void Agc::lockExposureGain(uint32_t &exposure, double &analogueGain)\n {\n \t/* Algorithm initialization should wait for first valid frames */\n \t/* \\todo - have a number of frames given by DelayedControls ?\n@@ -137,16 +137,17 @@ void Agc::lockExposureGain(uint32_t &exposure, double &gain)\n \tif (std::abs(iqMean_ - kEvGainTarget * knumHistogramBins) <= 1) {\n \t\tLOG(IPU3Agc, Debug) << \"!!! Good exposure with iqMean = \" << iqMean_;\n \t} else {\n-\t\tdouble newGain = kEvGainTarget * knumHistogramBins / iqMean_;\n+\t\tdouble evGain = kEvGainTarget * knumHistogramBins / iqMean_;\n \n \t\t/* extracted from Rpi::Agc::computeTargetExposure */\n \t\tutils::Duration currentShutter = exposure * lineDuration_;\n-\t\tcurrentExposureNoDg_ = currentShutter * gain;\n+\t\tcurrentExposureNoDg_ = currentShutter * analogueGain;\n \t\tLOG(IPU3Agc, Debug) << \"Actual total exposure \" << currentExposureNoDg_\n \t\t\t\t    << \" Shutter speed \" << currentShutter\n-\t\t\t\t    << \" Gain \" << gain;\n+\t\t\t\t    << \" Gain \" << analogueGain\n+\t\t\t\t    << \" Needed ev gain \" << evGain;\n \n-\t\tcurrentExposure_ = currentExposureNoDg_ * newGain;\n+\t\tcurrentExposure_ = currentExposureNoDg_ * evGain;\n \t\tutils::Duration minShutterSpeed = minExposureLines_ * lineDuration_;\n \t\tutils::Duration maxShutterSpeed = maxExposureLines_ * lineDuration_;\n \n@@ -174,7 +175,7 @@ void Agc::lockExposureGain(uint32_t &exposure, double &gain)\n \t\t\t\t    << stepGain;\n \n \t\texposure = shutterTime / lineDuration_;\n-\t\tgain = stepGain;\n+\t\tanalogueGain = stepGain;\n \t}\n \tlastFrame_ = frameCount_;\n }\n@@ -182,9 +183,9 @@ void Agc::lockExposureGain(uint32_t &exposure, double &gain)\n void Agc::process(IPAContext &context, const ipu3_uapi_stats_3a *stats)\n {\n \tuint32_t &exposure = context.frameContext.agc.exposure;\n-\tdouble &gain = context.frameContext.agc.gain;\n+\tdouble &analogueGain = context.frameContext.agc.gain;\n \tprocessBrightness(stats, context.configuration.grid.bdsGrid);\n-\tlockExposureGain(exposure, gain);\n+\tlockExposureGain(exposure, analogueGain);\n \tframeCount_++;\n }\n \n",
    "prefixes": [
        "libcamera-devel",
        "v4",
        "10/14"
    ]
}