From patchwork Fri Jan 30 08:09:32 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 26050 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 23B8CC3226 for ; Fri, 30 Jan 2026 08:09:53 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id D2DA061FC6; Fri, 30 Jan 2026 09:09:52 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="dW8lDmH+"; 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 1B80661FC6 for ; Fri, 30 Jan 2026 09:09:51 +0100 (CET) Received: from neptunite.hamster-moth.ts.net (unknown [IPv6:2404:7a81:160:2100:ec11:5e0c:deb8:1e2d]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 92369122A; Fri, 30 Jan 2026 09:09:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1769760552; bh=Tj7WSS2gUoMIzfcyQsxZhS7kG2I6xoxUFF6NwosZ5e8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dW8lDmH+d9Vz08JpJZF3sbSaSAHK289ZOKBjvDUCHtuCOciWxePJBdT1Cn6D41Et3 oDzwfwP4xg5jNBxmI5INmJecLCmV/R7S/n/qOqOGx8E4i6F2pCs2IhbYbAvtdWtbxo m1h9uDz7DPcpdCWjYXHRaQXcwlrCrjyaJwld5/YM= From: Paul Elder To: libcamera-devel@lists.libcamera.org Cc: Paul Elder , david.plowman@raspberrypi.com, naush@raspberrypi.com, kieran.bingham@ideasonboard.com, stefan.klug@ideasonboard.com, Isaac Scott Subject: [PATCH v2 1/4] controls: Add SyncAdjustment and SyncInterface controls Date: Fri, 30 Jan 2026 17:09:32 +0900 Message-ID: <20260130080935.2569621-2-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20260130080935.2569621-1-paul.elder@ideasonboard.com> References: <20260130080935.2569621-1-paul.elder@ideasonboard.com> MIME-Version: 1.0 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" Add a couple of controls related to the sync algorithm. The SyncAdjustment control signals to the Camera the amount to adjust the frame duration by for a single frame. Any Camera that implements this control (and FrameDurationLimits and SensorTimestamp metadata) will be supported by the sync algorithm layer. The SyncInterface control signals to the sync layer which network interface to use for listening (on client mode) or for multicasting (on server mode). Given that enabling/disabling sync is done via control (as opposed to always being on via environment variable), choosing the network interface should be chosen in a similar manner. Signed-off-by: Paul Elder Reviewed-by: Isaac Scott --- No change in v2 --- src/libcamera/control_ids_core.yaml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/libcamera/control_ids_core.yaml b/src/libcamera/control_ids_core.yaml index f26a1b1b08bd..2f0eea24850a 100644 --- a/src/libcamera/control_ids_core.yaml +++ b/src/libcamera/control_ids_core.yaml @@ -1361,4 +1361,27 @@ controls: description: | Enable or disable the lens shading correction. + - SyncAdjustment: + type: int32_t + direction: inout + description: | + This is an adjustment value that can be either positive or negative, in + microseconds, that tells the Camera how much to adjust the frame + duration by. This is meant to be used by the Sync layer, and any camera + that implements this control (and FrameDurationLimits) will be + supported by the sync layer. When reported in metadata, this reports + any frame duration adjustment that occurred based on the control value + that was passed in. + + - SyncInterface: + type: string + direction: inout + description: | + This is the IP address of the network interface to use for the Sync + algorithm provided by the Sync layer. When set using the SyncMode + control to client mode, this will be the network interface to listen + on, and for server mode it will multicast from this network interface. + If no network interface is supplied by this control then INADDR_ANY + will be used. + ...