Patch Detail
Show a patch.
GET /api/patches/14535/?format=api
{ "id": 14535, "url": "https://patchwork.libcamera.org/api/patches/14535/?format=api", "web_url": "https://patchwork.libcamera.org/patch/14535/", "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": "<20211110195901.85597-9-jeanmichel.hautbois@ideasonboard.com>", "date": "2021-11-10T19:58:55", "name": "[libcamera-devel,v2,08/14] ipa: ipu3: agc: Update previous exposure value", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "cb35788f339100694ab6b5a8d2b03380f0bd39a8", "submitter": { "id": 75, "url": "https://patchwork.libcamera.org/api/people/75/?format=api", "name": "Jean-Michel Hautbois", "email": "jeanmichel.hautbois@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/14535/mbox/", "series": [ { "id": 2708, "url": "https://patchwork.libcamera.org/api/series/2708/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2708", "date": "2021-11-10T19:58:47", "name": "IPA: IPU3: Introduce per-frame controls", "version": 2, "mbox": "https://patchwork.libcamera.org/series/2708/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/14535/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/14535/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 93641C3250\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 10 Nov 2021 19:59:16 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 2347D6036B;\n\tWed, 10 Nov 2021 20:59:16 +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 A11696036C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 10 Nov 2021 20:59:07 +0100 (CET)", "from tatooine.ideasonboard.com (unknown\n\t[IPv6:2a01:e0a:169:7140:7713:3465:89e6:c5cd])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 5B1C59FF;\n\tWed, 10 Nov 2021 20:59:07 +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=\"bpxwb1O/\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1636574347;\n\tbh=35XmsoZ3Aln9poVfgpV5vjAvkAYCJ2IXBJjbUbUxgrg=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=bpxwb1O/jNwVr6C0V/Y2dachHIGOsGKwQ9Z79cEIKJ1RBLEKaXvK9yMRCltWaMwNa\n\twJrA88TJA4MIYwVGo3XYCNERKjnu5PI1uEkpFlegM9G4syFEpaRV8nMf3nue8aaXQ0\n\tsylEfxa2Tn6UCNiPxRPhCTj0EV1KRsCKpk1AmBVo=", "From": "Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Wed, 10 Nov 2021 20:58:55 +0100", "Message-Id": "<20211110195901.85597-9-jeanmichel.hautbois@ideasonboard.com>", "X-Mailer": "git-send-email 2.32.0", "In-Reply-To": "<20211110195901.85597-1-jeanmichel.hautbois@ideasonboard.com>", "References": "<20211110195901.85597-1-jeanmichel.hautbois@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH v2 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\nSigned-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>\n---\n src/ipa/ipu3/algorithms/agc.cpp | 32 +++++++++++---------------------\n src/ipa/ipu3/algorithms/agc.h | 2 +-\n 2 files changed, 12 insertions(+), 22 deletions(-)", "diff": "diff --git a/src/ipa/ipu3/algorithms/agc.cpp b/src/ipa/ipu3/algorithms/agc.cpp\nindex ee37a9d5..38667e61 100644\n--- a/src/ipa/ipu3/algorithms/agc.cpp\n+++ b/src/ipa/ipu3/algorithms/agc.cpp\n@@ -73,7 +73,7 @@ static constexpr uint32_t kMaxLuminance = 255;\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 effectiveExposureValue_(0s)\n {\n }\n \n@@ -104,9 +104,9 @@ 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+\teffectiveExposureValue_ = context.frameContext.agc.gain\n+\t\t\t\t* context.frameContext.agc.exposure\n+\t\t\t\t* lineDuration_;\n \n \treturn 0;\n }\n@@ -201,16 +201,16 @@ void Agc::computeExposure(uint32_t &exposure, double &analogueGain, double curre\n \t */\n \tdouble evGain = kEvGainTarget * knumHistogramBins / iqMean_;\n \n-\tif (std::abs(evGain - 1.0) < 0.01) {\n-\t\tLOG(IPU3Agc, Debug) << \"We are well exposed (iqMean = \"\n-\t\t\t\t << iqMean_ << \")\";\n-\t\treturn;\n-\t}\n-\n \t/* extracted from Rpi::Agc::computeTargetExposure */\n \n \t/* Calculate the shutter time in seconds */\n \tutils::Duration currentShutter = exposure * lineDuration_;\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+\teffectiveExposureValue_ = 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@@ -228,7 +228,7 @@ void Agc::computeExposure(uint32_t &exposure, double &analogueGain, double curre\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@@ -259,16 +259,6 @@ void Agc::computeExposure(uint32_t &exposure, double &analogueGain, double curre\n \n \texposure = shutterTime / lineDuration_;\n \tanalogueGain = 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 0a9152a9..51174639 100644\n--- a/src/ipa/ipu3/algorithms/agc.h\n+++ b/src/ipa/ipu3/algorithms/agc.h\n@@ -54,7 +54,7 @@ private:\n \n \tutils::Duration filteredExposure_;\n \tutils::Duration currentExposure_;\n-\tutils::Duration prevExposureValue_;\n+\tutils::Duration effectiveExposureValue_;\n \n \tuint32_t stride_;\n };\n", "prefixes": [ "libcamera-devel", "v2", "08/14" ] }