From patchwork Fri Nov 14 14:17:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 25064 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 309A0C32DC for ; Fri, 14 Nov 2025 14:17:40 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 8CE8C60AB8; Fri, 14 Nov 2025 15:17:37 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="NQjgSpPb"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 63E7F60AAD for ; Fri, 14 Nov 2025 15:17:22 +0100 (CET) Received: from [192.168.1.101] (93-61-96-190.ip145.fastwebnet.it [93.61.96.190]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 65CB01D1C; Fri, 14 Nov 2025 15:15:21 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1763129721; bh=lQmnDDamLSikk20qIZdtHOhjYACIlSPUtQ790iq2k5Q=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NQjgSpPb2X5Lx5LeIRm6kIQYOZEV2GnkWLHTIqZD4Dl2xAe/B8BHAIytT6fzzgbR3 eQcBiRBtKTew6OFxzLTuqqYHa6+N3Ffcc6xbzCUy39WbDe1Re539qInnIbWdXw/dNE jua0F/QruUyJ5Zfzo6Sz53NKjk4FUG3wcUS7IX4M= From: Jacopo Mondi Date: Fri, 14 Nov 2025 15:17:07 +0100 Subject: [PATCH v3 12/19] ipa: libipa: agc: Compute max shutter time with frame duration MIME-Version: 1.0 Message-Id: <20251114-exposure-limits-v3-12-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?= , Robert Mader , libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1973; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=lQmnDDamLSikk20qIZdtHOhjYACIlSPUtQ790iq2k5Q=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBpFznrRVYLC7tg859E8weKoLqE5vsMtFGC1IYrv bqDtqVvYamJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCaRc56wAKCRByNAaPFqFW PK2aD/9MP47aDnjjwEUilItmYTvs3kvGKeaegtqoyzKDgcj27PBvVCVcd4MNE1OB3eaS0ERJzFw E0UyyW3Pwzei2+x05EE8pOF+//d5Jx9nbL4/j9hji6HHsVkxrOrWSbtoFxXjnXbjNAQlXHkoISm 9FMH/T6t8PSz/c1/1mkjAbMbt6+HnXFVhNRDGpW7vX5d6VBMJutYPmwDSZNnL3lvC9SQVP68vGg mdsYexQyL4CHF9rNHFXw3ZVNxYoqnJ+e8eifU58mxzpms8Bp0uP+1LdDDvyJi5MjrCfMVhDzf8L 9IOuCwLLvte2ITBj94Vq2ysqlZEpA0QQYIB3uxxdMl71Z4ixSnMDITfLbHR0cVlCQxiYjZZgqvJ GbjY3PGnHUvKCPKYXJubeK2W/DurPI2Hc0CxjjDf6WuGBL2FsefGFE4TKWQVewosQ46bk/c2qjz MKkvqPD6wQArvzX3CIoAI/eZPzlfYqs6iqXjjC5JG+3PDjugfGKz2TW1t47JCbLpSnflQUwHcd7 oKi1lxOTXhrpE+doC7Be6Gn9QcR8vvzPiadPU1fSgfJG24Iktw2vU/c4SWc/9CvuhEoLOP0DEcR NgVSQIwS/+s7qd+0TLk9vsPd1gmhhfpRUdLze/T6+zBXmB2HD+ezkujSR7CXGS0zGOk4oU64uk0 up6oDNv55URlb1Q== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The maximum shutter time the AGC algorithm can achieve is, by definition, limited by the maximum programmed frame duration. When configuring the AGC algorithm, use the frame duration to calculate the maximum shutter time by using the CameraSensorHelper::maxShutterTime() function, unless the IPA has asked for a fixed exposure by setting min == max. Signed-off-by: Jacopo Mondi --- src/ipa/libipa/exposure_mode_helper.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/ipa/libipa/exposure_mode_helper.cpp b/src/ipa/libipa/exposure_mode_helper.cpp index f771b10a28eead2976c0000cf099ba5cfbe78e0f..45f51f9088170c983bb0de2c18714627514c5641 100644 --- a/src/ipa/libipa/exposure_mode_helper.cpp +++ b/src/ipa/libipa/exposure_mode_helper.cpp @@ -127,14 +127,30 @@ ExposureModeHelper::ExposureModeHelper(const SpanmaxShutterTime(sensorConfig.maxFrameDuration_, + sensorConfig.lineDuration_) + : minExposureTime_; } /**