Patch Detail
Show a patch.
GET /api/1.1/patches/14598/?format=api
{ "id": 14598, "url": "https://patchwork.libcamera.org/api/1.1/patches/14598/?format=api", "web_url": "https://patchwork.libcamera.org/patch/14598/", "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": "<20211113084947.21892-9-jeanmichel.hautbois@ideasonboard.com>", "date": "2021-11-13T08:49:41", "name": "[libcamera-devel,v5,08/14] ipa: ipu3: agc: Update previous exposure value", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "c58375cdad2d1d9899950b254fa27731998f83d5", "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/14598/mbox/", "series": [ { "id": 2717, "url": "https://patchwork.libcamera.org/api/1.1/series/2717/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2717", "date": "2021-11-13T08:49:33", "name": "IPA: IPU3: Introduce per-frame controls", "version": 5, "mbox": "https://patchwork.libcamera.org/series/2717/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/14598/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/14598/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 006ECC324E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 13 Nov 2021 08:50:01 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 21CF96038B;\n\tSat, 13 Nov 2021 09:50:01 +0100 (CET)", "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 6FF7760361\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 13 Nov 2021 09:49:52 +0100 (CET)", "from tatooine.ideasonboard.com (unknown\n\t[IPv6:2a01:e0a:169:7140:4d35:9445:6881:4ffd])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 23C3AA59;\n\tSat, 13 Nov 2021 09:49:52 +0100 (CET)" ], "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=\"uS2dylEp\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1636793392;\n\tbh=m6GOjqFnfCd7ScEQMjXEwqvnr4QEjrc3f7fYRteZFSo=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=uS2dylEpfuDqUwmVYX/M1N003oE5EXM//ihR0HIw8NwnSqvt1RPnKBT25TO0AxzFa\n\tRsJI423gfCH4lnVbFHL6wjNrvjYHSgMLoairfiOHDqPT+OilDAnxgb2F/zk7fnUCnK\n\tj5N8EiSBXdV6czLeRnLgiGkJ40tWNlFIvipAfp1k=", "From": "Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Sat, 13 Nov 2021 09:49:41 +0100", "Message-Id": "<20211113084947.21892-9-jeanmichel.hautbois@ideasonboard.com>", "X-Mailer": "git-send-email 2.32.0", "In-Reply-To": "<20211113084947.21892-1-jeanmichel.hautbois@ideasonboard.com>", "References": "<20211113084947.21892-1-jeanmichel.hautbois@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v5 08/14] ipa: ipu3: agc: Update previous\n\texposure value", "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": "Previously, the exposure value was calculated based on the estimated\nshutter time and gain applied. Now that we have the real values for the\ncurrent frame, use those before estimating the next one and rename the\nvariable accordingly.\n\nAs the exposure value is updated in the beginning of the computation,\nthere is no need to initialize effectiveExposureValue anymore in the\nconfigure call, and it can be a local variable and not a class variable\nanymore.\n\nSigned-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\nReviewed-by: Umang Jain <umang.jain@ideasonboard.com>\nReviewed-by: Paul Elder <paul.elder@ideasonboard.com>\n---\n src/ipa/ipu3/algorithms/agc.cpp | 26 +++++++++-----------------\n src/ipa/ipu3/algorithms/agc.h | 1 -\n 2 files changed, 9 insertions(+), 18 deletions(-)", "diff": "diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp\nindex a9f9244b..4d2450fc 100644\n--- a/src/ipa/ipu3/algorithms/agc.cpp\n+++ b/src/ipa/ipu3/algorithms/agc.cpp\n@@ -80,8 +80,7 @@ static constexpr double kNormalizedLumaTarget = 0.16;\n \n Agc::Agc()\n \t: frameCount_(0), iqMean_(0.0), lineDuration_(0s), minExposureLines_(0),\n-\t maxExposureLines_(0), filteredExposure_(0s), currentExposure_(0s),\n-\t prevExposureValue_(0s)\n+\t maxExposureLines_(0), filteredExposure_(0s), currentExposure_(0s)\n {\n }\n \n@@ -112,10 +111,6 @@ int Agc::configure(IPAContext &context, const IPAConfigInfo &configInfo)\n \tcontext.frameContext.agc.gain = minAnalogueGain_;\n \tcontext.frameContext.agc.exposure = minExposureLines_;\n \n-\tprevExposureValue_ = context.frameContext.agc.gain\n-\t\t\t * context.frameContext.agc.exposure\n-\t\t\t * lineDuration_;\n-\n \treturn 0;\n }\n \n@@ -224,6 +219,13 @@ void Agc::computeExposure(IPAFrameContext &frameContext, double currentYGain)\n \n \t/* Calculate the shutter time in seconds */\n \tutils::Duration currentShutter = exposure * lineDuration_;\n+\n+\t/*\n+\t * Update the exposure value for the next computation using the values\n+\t * of exposure and gain really used by the sensor.\n+\t */\n+\tutils::Duration effectiveExposureValue = currentShutter * analogueGain;\n+\n \tLOG(IPU3Agc, Debug) << \"Actual total exposure \" << currentShutter * analogueGain\n \t\t\t << \" Shutter speed \" << currentShutter\n \t\t\t << \" Gain \" << analogueGain\n@@ -233,7 +235,7 @@ void Agc::computeExposure(IPAFrameContext &frameContext, double currentYGain)\n \t * Calculate the current exposure value for the scene as the latest\n \t * exposure value applied multiplied by the new estimated gain.\n \t */\n-\tcurrentExposure_ = prevExposureValue_ * evGain;\n+\tcurrentExposure_ = effectiveExposureValue * evGain;\n \tutils::Duration minShutterSpeed = minExposureLines_ * lineDuration_;\n \tutils::Duration maxShutterSpeed = maxExposureLines_ * lineDuration_;\n \n@@ -265,16 +267,6 @@ void Agc::computeExposure(IPAFrameContext &frameContext, double currentYGain)\n \t/* Update the estimated exposure and gain. */\n \tframeContext.agc.exposure = shutterTime / lineDuration_;\n \tframeContext.agc.gain = stepGain;\n-\n-\t/*\n-\t * Update the exposure value for the next process call.\n-\t *\n-\t * \\todo Obtain the values of the exposure time and analog gain\n-\t * that were actually used by the sensor, either from embedded\n-\t * data when available, or from the delayed controls\n-\t * infrastructure in case a slow down caused a mismatch.\n-\t */\n-\tprevExposureValue_ = shutterTime * analogueGain;\n }\n \n /**\ndiff --git a/src/ipa/ipu3/algorithms/agc.h b/src/ipa/ipu3/algorithms/agc.h\nindex 79736283..1d085b40 100644\n--- a/src/ipa/ipu3/algorithms/agc.h\n+++ b/src/ipa/ipu3/algorithms/agc.h\n@@ -54,7 +54,6 @@ private:\n \n \tutils::Duration filteredExposure_;\n \tutils::Duration currentExposure_;\n-\tutils::Duration prevExposureValue_;\n \n \tuint32_t stride_;\n };\n", "prefixes": [ "libcamera-devel", "v5", "08/14" ] }