Patch Detail
Show a patch.
GET /api/1.1/patches/14125/?format=api
{ "id": 14125, "url": "https://patchwork.libcamera.org/api/1.1/patches/14125/?format=api", "web_url": "https://patchwork.libcamera.org/patch/14125/", "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": "<20211013154125.133419-10-jeanmichel.hautbois@ideasonboard.com>", "date": "2021-10-13T15:41:21", "name": "[libcamera-devel,09/13] ipa: ipu3: agc: Rename gains properly", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "c522cc4b9db8e5dca74544644e3379494652bb10", "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/14125/mbox/", "series": [ { "id": 2623, "url": "https://patchwork.libcamera.org/api/1.1/series/2623/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2623", "date": "2021-10-13T15:41:13", "name": "ipa: ipu3: Fix AGC bugs", "version": 1, "mbox": "https://patchwork.libcamera.org/series/2623/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/14125/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/14125/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 ADCBEC3243\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 13 Oct 2021 15:41:43 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 55A4168F66;\n\tWed, 13 Oct 2021 17:41:43 +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 89FA660501\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 13 Oct 2021 17:41:32 +0200 (CEST)", "from tatooine.ideasonboard.com (unknown\n\t[IPv6:2a01:e0a:169:7140:3857:aa01:4281:bd9f])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 11E2918FF;\n\tWed, 13 Oct 2021 17:41:32 +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=\"Wu5mkaFL\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1634139692;\n\tbh=tT+3e4I6PPVlDiKUoAVYAZdJS5Kymi2iN6FL5iK6F4M=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=Wu5mkaFL9RswjApjSaHKzsoL3c3VSblt4YkSSvMalbyoNRbk4+Jq7UbmG7Yfhfbob\n\tx5I+J11HtkIqvmUYAhnfyFdJxj52O0lSSNtKQWgqOAismVg34GdsXExFP+Y4XMSou1\n\tcI/1AYHGElZjZsiQameYA94DnfPqK6jHHfozQw7U=", "From": "Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 13 Oct 2021 17:41:21 +0200", "Message-Id": "<20211013154125.133419-10-jeanmichel.hautbois@ideasonboard.com>", "X-Mailer": "git-send-email 2.30.2", "In-Reply-To": "<20211013154125.133419-1-jeanmichel.hautbois@ideasonboard.com>", "References": "<20211013154125.133419-1-jeanmichel.hautbois@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH 09/13] 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\nMakes 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>\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 3ec1c60c..bd28998a 100644\n--- a/src/ipa/ipu3/algorithms/agc.cpp\n+++ b/src/ipa/ipu3/algorithms/agc.cpp\n@@ -123,7 +123,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@@ -135,16 +135,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\tDuration 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\tDuration maxTotalExposure = kMaxShutterSpeed * kMaxGain;\n \t\tcurrentExposure_ = std::min(currentExposure_, maxTotalExposure);\n \t\tLOG(IPU3Agc, Debug) << \"Target total exposure \" << currentExposure_\n@@ -180,7 +181,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@@ -188,9 +189,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", "09/13" ] }