Show a patch.

GET /api/patches/24260/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 24260,
    "url": "https://patchwork.libcamera.org/api/patches/24260/?format=api",
    "web_url": "https://patchwork.libcamera.org/patch/24260/",
    "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": "<20250829091011.2628954-2-paul.elder@ideasonboard.com>",
    "date": "2025-08-29T09:10:07",
    "name": "[1/4] controls: Add SyncAdjustment and SyncInterface controls",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": false,
    "hash": "0ea8d309ce05974bd86e709b0b1a5c53689a9ed5",
    "submitter": {
        "id": 17,
        "url": "https://patchwork.libcamera.org/api/people/17/?format=api",
        "name": "Paul Elder",
        "email": "paul.elder@ideasonboard.com"
    },
    "delegate": null,
    "mbox": "https://patchwork.libcamera.org/patch/24260/mbox/",
    "series": [
        {
            "id": 5412,
            "url": "https://patchwork.libcamera.org/api/series/5412/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5412",
            "date": "2025-08-29T09:10:06",
            "name": "Add Sync Layer",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5412/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/patches/24260/comments/",
    "check": "pending",
    "checks": "https://patchwork.libcamera.org/api/patches/24260/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 89A31BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 29 Aug 2025 09:10:32 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3D7E66931A;\n\tFri, 29 Aug 2025 11:10:32 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 0961C6931F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 29 Aug 2025 11:10:30 +0200 (CEST)",
            "from neptunite.hamster-moth.ts.net (unknown\n\t[IPv6:2404:7a81:160:2100:af44:1f54:23d7:1088])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 924274B31;\n\tFri, 29 Aug 2025 11:09:22 +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=\"XgdSaJNS\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1756458564;\n\tbh=iidtMOML//b3GZb3MKcCtuSa9v5eXv0IixEihlaMFsY=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=XgdSaJNS7WGJqQ1R3fwlOu1MM3Zn7dLzRu67mAh2Be5V+NGV0+GGyEBgiintYsE4P\n\tjMxF7IgfQjFcDDt5/B3w5En4Q2Jtx4kAdnzpiQ6lHuDmIWNSXxiTxhg/WDBi/AbErc\n\t6e9RwHHSuBarp3zZEMVWSc6N4hKAQEJ/YaPvbjCY=",
        "From": "Paul Elder <paul.elder@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Paul Elder <paul.elder@ideasonboard.com>, david.plowman@raspberrypi.com, \n\tnaush@raspberrypi.com, kieran.bingham@ideasonboard.com,\n\tstefan.klug@ideasonboard.com",
        "Subject": "[PATCH 1/4] controls: Add SyncAdjustment and SyncInterface controls",
        "Date": "Fri, 29 Aug 2025 18:10:07 +0900",
        "Message-ID": "<20250829091011.2628954-2-paul.elder@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.47.2",
        "In-Reply-To": "<20250829091011.2628954-1-paul.elder@ideasonboard.com>",
        "References": "<20250829091011.2628954-1-paul.elder@ideasonboard.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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": "Add a couple of controls related to the sync algorithm.\n\nThe SyncAdjustment control signals to the Camera the amount to adjust\nthe frame duration by for a single frame. Any Camera that implements\nthis control (and FrameDurationLimits and SensorTimestamp metadata) will\nbe supported by the sync algorithm layer.\n\nThe SyncInterface control signals to the sync layer which network\ninterface to use for listening (on client mode) or for multicasting (on\nserver mode). Given that enabling/disabling sync is done via control (as\nopposed to always being on via environment variable), choosing the\nnetwork interface should be chosen in a similar manner.\n\nSigned-off-by: Paul Elder <paul.elder@ideasonboard.com>\n---\n src/libcamera/control_ids_core.yaml | 23 +++++++++++++++++++++++\n 1 file changed, 23 insertions(+)",
    "diff": "diff --git a/src/libcamera/control_ids_core.yaml b/src/libcamera/control_ids_core.yaml\nindex eec4b4f937ee..8721b5e80e97 100644\n--- a/src/libcamera/control_ids_core.yaml\n+++ b/src/libcamera/control_ids_core.yaml\n@@ -1284,4 +1284,27 @@ controls:\n \n         The FrameWallClock control can only be returned in metadata.\n \n+  - SyncAdjustment:\n+      type: int32_t\n+      direction: inout\n+      description: |\n+        This is an adjustment value that can be either positive or negative, in\n+        microseconds, that tells the Camera how much to adjust the frame\n+        duration by. This is meant to be used by the Sync layer, and any camera\n+        that implements this control (and FrameDurationLimits) will be\n+        supported by the sync layer. When reported in metadata, this reports\n+        any frame duration adjustment that occurred based on the control value\n+        that was passed in.\n+\n+  - SyncInterface:\n+      type: string\n+      direction: inout\n+      description: |\n+        This is the IP address of the network interface to use for the Sync\n+        algorithm provided by the Sync layer. When set using the SyncMode\n+        control to client mode, this will be the network interface to listen\n+        on, and for server mode it will multicast from this network interface.\n+        If no network interface is supplied by this control then INADDR_ANY\n+        will be used.\n+\n ...\n",
    "prefixes": [
        "1/4"
    ]
}