| Message ID | 20261026061628.87001-1-georg.martius@web.de |
|---|---|
| State | New |
| Headers | show
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 [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id F1DE2C324C for <parsemail@patchwork.libcamera.org>; Mon, 26 Oct 2026 06:31:31 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 738BE68FBD; Mon, 26 Oct 2026 07:31:30 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=web.de header.i=georg.martius@web.de header.b="BRkWDWpa"; dkim-atps=neutral Received: from mout.web.de (mout.web.de [212.227.15.3]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 8106868ECB for <libcamera-devel@lists.libcamera.org>; Mon, 26 Oct 2026 07:18:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=web.de; s=s29768273; t=1792995485; x=1793600285; i=georg.martius@web.de; bh=Dn3uB/n+RVbK90cRQ5OmG0yLiP/0j83fqpb+wmQFvgc=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-ID: MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=BRkWDWpasYfNaXiZu9hwbguC0KcDF+X6ZDYakwOKSRrqSRu7xF8oX6mXy6UjxTpA 8YM5dz114bpRxu3k8u00sMb/May/qOH9JuvGoc8XUgxbox8Ysahbn0z0f98P1bQ3p J9Xk49clDQLo0O78rJi22Tq0bhqSP/rv1qhkN9jR4zLUZDv3LLzlamp3mhhDH3DUX 6w2SN++RZLNaALlwZVfFS5lOk5NZubi1HD6rz4TnqL/EZtnybcjvatypguWhURRXc X5q1HYOMUCwqTOKr4MA7CToN8VwBw+r8fV7J2Ob4Ef+gaNmmiErRxCiW+d8WV3brA 5zh2eA9qjHis0/rweg== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Received: from client.hidden.invalid by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MQ8Wa-1wz8ns40IK-00M6G4; Mon, 26 Oct 2026 07:18:05 +0100 From: Georg Martius <georg.martius@web.de> To: libcamera-devel@lists.libcamera.org Cc: Georg Martius <georg.martius@web.de> Subject: [PATCH] libcamera: sensor: ov2740: Add sensor delays to CameraSensorProperties Date: Mon, 26 Oct 2026 07:16:28 +0100 Message-ID: <20261026061628.87001-1-georg.martius@web.de> X-Mailer: git-send-email 2.53.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:UwDOrVNSlNVPo2ZjakEVA68IUbhED+X95NtpZZmgKP9fpU3xEU2 VNzVKkY0BghdY6bt8CkS8F7CsCargnXQyxns9JMK+p+JBXY05/GecVgimaX3XM4IJWO/DT+ R6+rjldxqFsnVxUvWPed0P2G1G7IHu+waUlQnEJ0vknjXXthVtjHrD7GDeTmW4KEeRSYPsQ vqlGvbjq7Cxz3g/DHRqYw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1; M01:P0:hJofFOHz4F0=; zgNHEE58wWcOOK/hOOQsFdRHJqU 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 HUAmP2VA== X-Mailman-Approved-At: Mon, 26 Oct 2026 07:31:29 +0100 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>, <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>, <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> |
| Series |
|
| Related |
show
|
diff --git a/src/libcamera/sensor/camera_sensor_properties.cpp b/src/libcamera/sensor/camera_sensor_properties.cpp index 20cfd0bc..8d0f6f5f 100644 --- a/src/libcamera/sensor/camera_sensor_properties.cpp +++ b/src/libcamera/sensor/camera_sensor_properties.cpp @@ -424,7 +424,12 @@ const CameraSensorProperties *CameraSensorProperties::get(const std::string &sen { controls::draft::TestPatternModeOff, 0 }, { controls::draft::TestPatternModeColorBars, 1}, }, - .sensorDelays = { }, + .sensorDelays = { + .exposureDelay = 2, + .gainDelay = 2, + .vblankDelay = 2, + .hblankDelay = 2 + }, } }, { "ov4689", { .unitCellSize = { 2000, 2000 },
The sensor delays for the OV2740 are missing from the CameraSensorProperties table, so the defaults (exposure 2, gain 1) are used. On the OV2740 the analogue gain is however latched together with the exposure time. This was measured on a ThinkPad X1 Yoga Gen 8 (IPU6, simple pipeline with software ISP) by streaming raw frames and writing exposure and gain in a single VIDIOC_S_EXT_CTRLS call, toggling between pairs with the same exposure * gain product (exposure halved, gain doubled). The per-frame mean stays flat across all toggles, while a gain-only toggle shows a clean step, so both controls take effect on the same frame. With the default gain delay of 1, DelayedControls reports the gain of the wrong frame to the software ISP AGC. Its per-update steps then form two interleaved chains, and after a large brightness change (e.g. a hand in front of the lens) each chain only sees frames produced by the other chain's gain. The AGC then locks into a permanent oscillation between the minimum and maximum analogue gain until the stream is restarted. With a gain delay of 2 the AGC converges again after such disturbances. Set the exposure and gain delays to 2. The vblank and hblank delays have not been characterised; use 2 as for other OmniVision sensors. Signed-off-by: Georg Martius <georg.martius@web.de> --- Tested on a Lenovo ThinkPad X1 Yoga Gen 8 (Raptor Lake IPU6, ov2740, simple pipeline + GPU soft ISP), Ubuntu 26.04, libcamera 0.7.0 with this change applied. Without the patch, covering and uncovering the lens a few times makes the AGC log (IPASoftExposure:DEBUG) alternate between two sequences, e.g. exposureMSV 3.87 again 1 exposureMSV 1.12 again 15.4922 exposureMSV 3.87 again 1 exposureMSV 1.12 again 15.4922 and the image pumps between dark and bright with a period of 8 frames until the stream is restarted. With the patch, the AGC settles within a few seconds after the same disturbance and stays there. The latency measurement bypasses libcamera: raw SGRBG10 capture on the ISYS video node, with exposure/gain pairs (800, 2x) <-> (400, 4x) written in one VIDIOC_S_EXT_CTRLS while streaming. No transient frame at any toggle; gain-only toggles (2x <-> 4x) show a clean step. The debugging, the latency measurement and this patch were done with the help of an AI assistant (Claude, Anthropic); I have reviewed and tested the change myself. src/libcamera/sensor/camera_sensor_properties.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)