Patch Detail
Show a patch.
GET /api/1.1/patches/25056/?format=api
{ "id": 25056, "url": "https://patchwork.libcamera.org/api/1.1/patches/25056/?format=api", "web_url": "https://patchwork.libcamera.org/patch/25056/", "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": "<20251114-exposure-limits-v3-4-b7c07feba026@ideasonboard.com>", "date": "2025-11-14T14:16:59", "name": "[v3,04/19] ipa: mali: Move exposure limits to sensor config", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "f08c1148988f6d6a41537463b2eae97d950addc5", "submitter": { "id": 143, "url": "https://patchwork.libcamera.org/api/1.1/people/143/?format=api", "name": "Jacopo Mondi", "email": "jacopo.mondi@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/25056/mbox/", "series": [ { "id": 5590, "url": "https://patchwork.libcamera.org/api/1.1/series/5590/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5590", "date": "2025-11-14T14:16:55", "name": "libipa: agc: Calculate exposure limits", "version": 3, "mbox": "https://patchwork.libcamera.org/series/5590/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/25056/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/25056/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 CDDD8C3241\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 14 Nov 2025 14:17:31 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 38287609DE;\n\tFri, 14 Nov 2025 15:17:24 +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 3558C60AA1\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 14 Nov 2025 15:17:19 +0100 (CET)", "from [192.168.1.101] (93-61-96-190.ip145.fastwebnet.it\n\t[93.61.96.190])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 386861440;\n\tFri, 14 Nov 2025 15:15:18 +0100 (CET)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"SgaPUwr9\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1763129718;\n\tbh=WoJb4kUq4QiCHvYm/XK3vK7Tsp/phnx111acAD/Xlk0=;\n\th=From:Date:Subject:References:In-Reply-To:To:Cc:From;\n\tb=SgaPUwr9TEQc6sFFN240GiZpfrDbK6sYc0Iky8wVeZOCbOa5pbLQ4O/EBQQx++vEa\n\tFPol98hhMnrBuLVmNUzAn8soq/joC96P4E9A/ovQf/3PJez/oOqyBDBWAsEf+oedQR\n\tzQmgu/FQ2GjKtvWf/tAeGY37FXdWS9zVA/Z9bDY0=", "From": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>", "Date": "Fri, 14 Nov 2025 15:16:59 +0100", "Subject": "[PATCH v3 04/19] ipa: mali: Move exposure limits to sensor config", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "Message-Id": "<20251114-exposure-limits-v3-4-b7c07feba026@ideasonboard.com>", "References": "<20251114-exposure-limits-v3-0-b7c07feba026@ideasonboard.com>", "In-Reply-To": "<20251114-exposure-limits-v3-0-b7c07feba026@ideasonboard.com>", "To": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>,\n\tRobert Mader <robert.mader@collabora.com>, \n\tlibcamera-devel@lists.libcamera.org", "Cc": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>", "X-Mailer": "b4 0.14.2", "X-Developer-Signature": "v=1; a=openpgp-sha256; l=4541;\n\ti=jacopo.mondi@ideasonboard.com; h=from:subject:message-id;\n\tbh=WoJb4kUq4QiCHvYm/XK3vK7Tsp/phnx111acAD/Xlk0=;\n\tb=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBpFznq4AMiYpe5zsAfK19P/qWt1crR53e12Bgor\n\tTAKivVaak2JAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCaRc56gAKCRByNAaPFqFW\n\tPPzzEACrAzGUnYjH4XKFC7aKxtVRJHOBDyn1YdLgXxCkIeEkTtbQ5FwfxcF6v4vxpjkmLkv2YLn\n\toFZuFgNsqFht6W7kqFvBNxl0FTeBV61dV4Bgof4Dl07v0tq9P4K4OO+b/NaScJuzxdRpTMNGzVq\n\tM35ZnSDCgTim0fP7I6Oqne2o+8+DeS+94DvNlglt+PDNr6IYhKyyxd3OdNP5LzwpCeeI4XbBo77\n\tmRjQMf0wJUYVF5YkXyqW+fyR8NtPJCizbbJYf0JqvZVat7BrBVtlpjXwinNXzC9SS/dJGsRTLvo\n\twhxzUudTnDqTKktJyZCFocBPA4dHSdf4CEd1rOVSqYDMvHY0l5cAmUCkOFJnzXw0gWk7pSxjHlB\n\t06mi4m8lbHOle2ufZ8zwf/plqCX/4V8PqysvwSCYIol2sS89NN7YBpS9qZizJatfAdNvFgbqE79\n\tNUse3dijYAvBtdMwj5wx1lIT8koVYy7+BDMneD47daXGOow2k/b/PUoMupB/eMQMXpRyXMIG45o\n\tDVsc0Nk3aW5jOT3YReWPCthQwPWosU/Hv77Os7WkU8oEJ6iYo1WgGc9ZT8IOXpxgOOTCx1kT16w\n\t4B25t6GzfJCV9ZBsg06IJQTLONb3QDz2ZWT4UbxnoCkWIYVL/4JXKQFAwQH8zfFD7N0PELKP1rc\n\tBbLUdiwsDGAWcmw==", "X-Developer-Key": "i=jacopo.mondi@ideasonboard.com; a=openpgp;\n\tfpr=72392EDC88144A65C701EA9BA5826A2587AD026B", "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": "Move the exposure limits (shutter time and gains) in the IPAContext\nsensor configuration and not in the 'agc' member.\n\nThis aligns the Mali IPA with the RkISP1 and will help unifying the\nhandling of sensor configuration data through a common type.\n\nSigned-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n---\n src/ipa/mali-c55/algorithms/agc.cpp | 12 ++++++------\n src/ipa/mali-c55/ipa_context.h | 8 ++++----\n src/ipa/mali-c55/mali-c55.cpp | 9 +++++----\n 3 files changed, 15 insertions(+), 14 deletions(-)", "diff": "diff --git a/src/ipa/mali-c55/algorithms/agc.cpp b/src/ipa/mali-c55/algorithms/agc.cpp\nindex f60fddac3f04fd6f09dc782e929ff1593758c29b..4fa00769d201d906be357809f5af02c71201a4f1 100644\n--- a/src/ipa/mali-c55/algorithms/agc.cpp\n+++ b/src/ipa/mali-c55/algorithms/agc.cpp\n@@ -160,20 +160,20 @@ int Agc::configure(IPAContext &context,\n \t * minimum analogue gain. AEGC is _active_ by default.\n \t */\n \tcontext.activeState.agc.autoEnabled = true;\n-\tcontext.activeState.agc.automatic.sensorGain = context.configuration.agc.minAnalogueGain;\n+\tcontext.activeState.agc.automatic.sensorGain = context.configuration.sensor.minAnalogueGain;\n \tcontext.activeState.agc.automatic.exposure = context.configuration.agc.defaultExposure;\n \tcontext.activeState.agc.automatic.ispGain = kMinDigitalGain;\n-\tcontext.activeState.agc.manual.sensorGain = context.configuration.agc.minAnalogueGain;\n+\tcontext.activeState.agc.manual.sensorGain = context.configuration.sensor.minAnalogueGain;\n \tcontext.activeState.agc.manual.exposure = context.configuration.agc.defaultExposure;\n \tcontext.activeState.agc.manual.ispGain = kMinDigitalGain;\n \tcontext.activeState.agc.constraintMode = constraintModes().begin()->first;\n \tcontext.activeState.agc.exposureMode = exposureModeHelpers().begin()->first;\n \n \t/* \\todo Run this again when FrameDurationLimits is passed in */\n-\tsetLimits(context.configuration.agc.minShutterSpeed,\n-\t\t context.configuration.agc.maxShutterSpeed,\n-\t\t context.configuration.agc.minAnalogueGain,\n-\t\t context.configuration.agc.maxAnalogueGain,\n+\tsetLimits(context.configuration.sensor.minShutterSpeed,\n+\t\t context.configuration.sensor.maxShutterSpeed,\n+\t\t context.configuration.sensor.minAnalogueGain,\n+\t\t context.configuration.sensor.maxAnalogueGain,\n \t\t {});\n \n \tresetFrameCount();\ndiff --git a/src/ipa/mali-c55/ipa_context.h b/src/ipa/mali-c55/ipa_context.h\nindex bfa805c7b93f313dda2497365e83542bbc39e291..fe75590ec93302e61a31e4832f5c497aab80cf4d 100644\n--- a/src/ipa/mali-c55/ipa_context.h\n+++ b/src/ipa/mali-c55/ipa_context.h\n@@ -21,17 +21,17 @@ namespace ipa::mali_c55 {\n \n struct IPASessionConfiguration {\n \tstruct {\n-\t\tutils::Duration minShutterSpeed;\n-\t\tutils::Duration maxShutterSpeed;\n \t\tuint32_t defaultExposure;\n-\t\tdouble minAnalogueGain;\n-\t\tdouble maxAnalogueGain;\n \t} agc;\n \n \tstruct {\n \t\tBayerFormat::Order bayerOrder;\n \t\tutils::Duration lineDuration;\n \t\tuint32_t blackLevel;\n+\t\tutils::Duration minShutterSpeed;\n+\t\tutils::Duration maxShutterSpeed;\n+\t\tdouble minAnalogueGain;\n+\t\tdouble maxAnalogueGain;\n \t} sensor;\n };\n \ndiff --git a/src/ipa/mali-c55/mali-c55.cpp b/src/ipa/mali-c55/mali-c55.cpp\nindex 0751513dc584ca84dd212bf8c1469dd4b40c053d..9375facf7ab559853986f66634d4e36b896361c8 100644\n--- a/src/ipa/mali-c55/mali-c55.cpp\n+++ b/src/ipa/mali-c55/mali-c55.cpp\n@@ -185,11 +185,12 @@ void IPAMaliC55::updateSessionConfiguration(const IPACameraSensorInfo &info,\n \t * \\todo take VBLANK into account for maximum shutter speed\n \t */\n \tcontext_.configuration.sensor.lineDuration = info.minLineLength * 1.0s / info.pixelRate;\n-\tcontext_.configuration.agc.minShutterSpeed = minExposure * context_.configuration.sensor.lineDuration;\n-\tcontext_.configuration.agc.maxShutterSpeed = maxExposure * context_.configuration.sensor.lineDuration;\n+\tcontext_.configuration.sensor.minShutterSpeed = minExposure * context_.configuration.sensor.lineDuration;\n+\tcontext_.configuration.sensor.maxShutterSpeed = maxExposure * context_.configuration.sensor.lineDuration;\n+\tcontext_.configuration.sensor.minAnalogueGain = context_.camHelper->gain(minGain);\n+\tcontext_.configuration.sensor.maxAnalogueGain = context_.camHelper->gain(maxGain);\n+\n \tcontext_.configuration.agc.defaultExposure = defExposure;\n-\tcontext_.configuration.agc.minAnalogueGain = context_.camHelper->gain(minGain);\n-\tcontext_.configuration.agc.maxAnalogueGain = context_.camHelper->gain(maxGain);\n \n \tif (context_.camHelper->blackLevel().has_value()) {\n \t\t/*\n", "prefixes": [ "v3", "04/19" ] }