Cover Letter Detail
Show a cover letter.
GET /api/covers/24693/?format=api
{ "id": 24693, "url": "https://patchwork.libcamera.org/api/covers/24693/?format=api", "web_url": "https://patchwork.libcamera.org/cover/24693/", "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": "<20251017-exposure-limits-v1-0-6288cd86e719@ideasonboard.com>", "date": "2025-10-17T09:00:04", "name": "[0/3] rkisp1: Update exposure limits on vblank change", "submitter": { "id": 143, "url": "https://patchwork.libcamera.org/api/people/143/?format=api", "name": "Jacopo Mondi", "email": "jacopo.mondi@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/cover/24693/mbox/", "series": [ { "id": 5508, "url": "https://patchwork.libcamera.org/api/series/5508/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5508", "date": "2025-10-17T09:00:04", "name": "rkisp1: Update exposure limits on vblank change", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5508/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/24693/comments/", "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 21FB1BE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 17 Oct 2025 09:00:18 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 65CA5606A6;\n\tFri, 17 Oct 2025 11:00:17 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CE1226069D\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 17 Oct 2025 11:00:15 +0200 (CEST)", "from [192.168.1.182] (93-46-82-201.ip106.fastwebnet.it\n\t[93.46.82.201])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 58610F52;\n\tFri, 17 Oct 2025 10:58:35 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"T1HFoDWk\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1760691515;\n\tbh=79xYYXqOMRja/UNui1e9e4sMSzKzHYpbAOYHikCOTII=;\n\th=From:Subject:Date:To:Cc:From;\n\tb=T1HFoDWkfUDqOehOr+k2eCGbTV08z4n2iHAJN/3oyvTV/S1iVInSuB15pi7KE+K/W\n\tcYvcC2O1NLmXeGR3ryaprc3H+HYKYyXSZWhAdyL4gccZ7O3M86TFvHN5qbXX/cWhNC\n\tcE0IE7WuY7O/i7QK8y6Ab4Ue53a3qlOEGG6IaY+I=", "From": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>", "Subject": "[PATCH 0/3] rkisp1: Update exposure limits on vblank change", "Date": "Fri, 17 Oct 2025 11:00:04 +0200", "Message-Id": "<20251017-exposure-limits-v1-0-6288cd86e719@ideasonboard.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "X-B4-Tracking": "v=1; b=H4sIAJQF8mgC/x3MQQqAIBBA0avIrBNSkqSrRIuosQYqxakQxLsnL\n\td/i/wyMkZBhEBkivsTkrwrVCFj2+dpQ0loNutVGtaqXmILnJ6I86KSbpVk6q412aDoLtQoRHaX\n\t/OE6lfDHyUOFhAAAA", "X-Change-ID": "20251017-exposure-limits-5c48252fe548", "To": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>,\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=2793;\n\ti=jacopo.mondi@ideasonboard.com; h=from:subject:message-id;\n\tbh=79xYYXqOMRja/UNui1e9e4sMSzKzHYpbAOYHikCOTII=;\n\tb=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBo8gWekMHr4GKJVgbcN/tgJoeFcNf7UmPtMSWjo\n\tDU3q3Jcdl2JAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCaPIFngAKCRByNAaPFqFW\n\tPKDCD/49h3rG5n573mCqe4W+Aunp7r1cPWJsJ0DxF/tG3H0O1iyiHCFk87rWq2H4my56EDx6GX/\n\tgsmcB16WbcQyL6UmzxJL/EI3bvz0O3SAsn9NrgBMqKmCbESam88+IF0SVk9zzm4UCAPX6iZdshI\n\tHcUmsZSsQfruBCeTwGLh7259/Y5wmTMp7dIY/JoKtZziiqzsszsHmDYfCckaESt026KjT7gATqg\n\tv/KYFQCkWMv8A7Jn1TvzkEzipLKowllsoat5m9hmk+Wpd5ToW4goEGiXY76FCwtQo+ivl/NWyqg\n\tiI2qGA4kTbDfNfKCW+q+cfXOFTsc66TonNmTIMrJ0V2ly7GpRCz77MRFD0TxXmoJaYlGn86AWnm\n\tfu1r5abJ0I/ED9dIC4StWTSJnssAgiDdpexcxvfjxwc1HoteMUETtxMOkY0qFwLGmqfZRmoWs1E\n\tEYBr9LIrazs+mMdyOTPbxkXxiWMvCG26Gu1uPNWfcfYC0F6wz5midZJ8Bj+PNhBpfJErW3HMf/W\n\t6gFkbP8QLHNOqO8btMCq5CmH6/uuug/iBNf7PbDhMA61RfS7B4qmPxq7OMgK5qqOfthMFhWSuC7\n\t3JXQZQraPe8LGgsuFCAMBa4XF/x7Bz63GOeByNerXXXThuhEZQ5gVHyBpYbPOUZ/E1HAlwovfkx\n\tFwqkgvKvW/h3ppQ==", "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": "By definition, the exposure time that can be programmed on a sensor is\nlimited by the frame duration and whenever the frame duration is\nupdated, the exposure time limits should be updated as well.\n\nThis is not the case in the RkISP1 IPA, where the exposure limits\nare computed at configure() time and never updated.\n\nThis has two implications:\n1) The AGC algorithms will always operate with an exposure time bound to\n the frame duration programmed at startup time\n2) The Camera::controls() limits are not updated to reflect the new\n constraints\n\nThis series addresses the above issues with 2 patches.\n\nThe first one for the IPA simply updates the exposure limts whenever the\nVBLANK changes in response to a FrameDurationLimits change.\n\nThe second one for the IPA/pipeline introduces a new operation in the\nIPA interface which the pipeline handler calls to have the limits of the\ncontrols registered by the IPA updated.\n\nThe timing of these two operations is critical.\n\nThe IPA limits should be updated whenever a new VBLANK is computed. The\nactual blanking value on the sensor will be changed with a few\nframes of latency by DelayedControls, but for the IPA this is not\nrelevant as all the computations for the 'next' frames will be delayed\nby the same latency and should use the new limits.\n\nThe Camera::controls() limits should instead be updated when the Request\nwith the updated FrameDurationLimits completes. For this reason the new\n'updateControlsLimits()' IPA operation is called before completing a\nRequest on the pipeline handler side.\n\nFinally, the last patch, not meant for inclusion, validates that the\nCamera::controls() limits are updated correctly. The IPA limits update\nhas been visually validated with camshark by tuning the\nFrameDurationLimits control and verifying the AGC algorithm limits are\nupdated accordingly.\n\nSigned-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n---\nJacopo Mondi (3):\n ipa: rkisp1: Update exposure limits on vblank change\n libcamera: rkisp1: Update camera::controls() on limit changes\n DNI: cam: Test Camera::controls() update with capture script\n\n change-frame-duration.yaml | 4 +++\n include/libcamera/ipa/rkisp1.mojom | 2 ++\n src/apps/cam/camera_session.cpp | 21 ++++++++++++\n src/ipa/rkisp1/algorithms/agc.cpp | 3 ++\n src/ipa/rkisp1/ipa_context.h | 5 ++-\n src/ipa/rkisp1/rkisp1.cpp | 57 ++++++++++++++++++++++++++++++--\n src/libcamera/pipeline/rkisp1/rkisp1.cpp | 3 ++\n 7 files changed, 91 insertions(+), 4 deletions(-)\n---\nbase-commit: b9fa6e0e61d3ea605fe4b1201ede5745cd5800e5\nchange-id: 20251017-exposure-limits-5c48252fe548\n\nBest regards," }