Patch Detail
Show a patch.
GET /api/patches/24692/?format=api
{ "id": 24692, "url": "https://patchwork.libcamera.org/api/patches/24692/?format=api", "web_url": "https://patchwork.libcamera.org/patch/24692/", "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": "<20251016152738.2708250-1-julien.vuillaumier@nxp.com>", "date": "2025-10-16T15:27:38", "name": "[v1] libcamera: camera_sensor: Fix imageStream() for CameraSensorLegacy class", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "7c7e602ce193479f0ec97210f2cf2416ea19f8b5", "submitter": { "id": 190, "url": "https://patchwork.libcamera.org/api/people/190/?format=api", "name": "Julien Vuillaumier", "email": "julien.vuillaumier@nxp.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/24692/mbox/", "series": [ { "id": 5507, "url": "https://patchwork.libcamera.org/api/series/5507/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5507", "date": "2025-10-16T15:27:38", "name": "[v1] libcamera: camera_sensor: Fix imageStream() for CameraSensorLegacy class", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5507/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/24692/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/24692/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 0B62BC3259\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 16 Oct 2025 15:28:19 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3AE486068E;\n\tThu, 16 Oct 2025 17:28:18 +0200 (CEST)", "from AS8PR04CU009.outbound.protection.outlook.com\n\t(mail-westeuropeazlp170110003.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:c201::3])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C9264605D7\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 16 Oct 2025 17:28:16 +0200 (CEST)", "from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)\n\tby PAWPR04MB11571.eurprd04.prod.outlook.com (2603:10a6:102:50f::17)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9228.11;\n\tThu, 16 Oct 2025 15:28:15 +0000", "from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::b387:72c6:e33c:8656]) by\n\tAM9PR04MB8147.eurprd04.prod.outlook.com\n\t([fe80::b387:72c6:e33c:8656%7]) with mapi id 15.20.9228.010;\n\tThu, 16 Oct 2025 15:28:15 +0000" ], "Authentication-Results": [ "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"VzYGchJR\";\n\tdkim-atps=neutral", "dkim=none (message not signed)\n\theader.d=none;dmarc=none action=none header.from=nxp.com;" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n\tb=hAOEnUk6MXKK9lqzW//P5D5qt3E0UxnBxVYk4Yhmg/k4S+cj2VH/irrTHYHrqL8ytL4Zs2lBimWfQkZK4iJfCphGatbq4c9hoGXBbeXB5DEjzeXE78Wkjt4jucZr5zuIdDzu54uDkU1Yb3N8fY/jDvNOyv8rUxBCszGmrIn4NWvp7pi9+OqpkfKv/zxaEu/d6PDMlcQLgS1jv/oV3bdmbPNwKkBHHAgF8TvpA4ilhj1Kabp7xcfSq6hyL+IDOU4zQf61nliksURxuZ3IbuRSHTZQHqGNdgwIKO8KIzlbPzIEuOgi7fVDBdFgyPOWy+Fxv1kOFcAOK7N7zuib4PGvAA==", "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n\ts=arcselector10001;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n\tbh=zsFhprl10FUpit/bAQ6cx1+t/euZ6HnfSYGhief6Mn0=;\n\tb=FoEFiPK4ZhsREOYFiZO/RbkaLiEXs2xPwAkQRWhpz7rxidOGyfAC8DLmxTWGLWW6TVUJTG3CHcllsYk1Tlt+PkaD5ONfg6Ws8crz8yX8fc1ZVD9jUcGC3Os27NyWAYatG/pJUzoYHebYyTwvx1VwteC0Fl+Cuu99EcKVyzud2YXrd0sdIB6NGDPj6MufRxTYuPLD4ymzB167Yk4E80dCUoThL2nqCZqxPzfsP4W6fPFBClvQOp/g+d3bCa+hWvGbzzqvYdw7xiocaaokocHzg8dBw+nIoH2kG35kdRG4Z5VL+XNZSF3FPHymqlnuyV1F/VSAIGt22JgKQfLl9+0kJQ==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n\tsmtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com;\n\tdkim=pass header.d=nxp.com; arc=none", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=zsFhprl10FUpit/bAQ6cx1+t/euZ6HnfSYGhief6Mn0=;\n\tb=VzYGchJRVL7U22Fr7SEPiBcIAWYcVkOb6yY5F/+vkvFyV2F+D4ljgnchVtFnxL/iHt1qtgQDUcNBYdcAAKE0kbBThCdnHghJkyCaQe/ncym1MHEf1bfRTweonj07tpXlXi4JZB7qAyhT3m78q1yyBD0Rd+JWibxCaZsTOblMmWUHBvmn7/+IZLWdnRQS7PZuWkWvBD/8g7BIr4fV6C67A4+0KpAy9p/zTy6+qMrje6+Vbq0jNPslQcDqEUGC0zX31+tXO/loqMLx5g/rf6114V/VbJuyHTY4CvWbacx5HMHtgstpiT8m/ip13wFfrY7ZxhpxxYnQUb4hqgp+4ynMeg==", "From": "Julien Vuillaumier <julien.vuillaumier@nxp.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Julien Vuillaumier <julien.vuillaumier@nxp.com>", "Subject": "[PATCH v1] libcamera: camera_sensor: Fix imageStream() for\n\tCameraSensorLegacy class", "Date": "Thu, 16 Oct 2025 17:27:38 +0200", "Message-Id": "<20251016152738.2708250-1-julien.vuillaumier@nxp.com>", "X-Mailer": "git-send-email 2.34.1", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "AS4P191CA0033.EURP191.PROD.OUTLOOK.COM\n\t(2603:10a6:20b:657::20) To AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "AM9PR04MB8147:EE_|PAWPR04MB11571:EE_", "X-MS-Office365-Filtering-Correlation-Id": "0ecc2430-0161-484a-6127-08de0cc89ffc", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;\n\tARA:13230040|1800799024|19092799006|376014|52116014|366016|38350700014;", "X-Microsoft-Antispam-Message-Info": "p2EYhuZVN0vDC23W/UYy5kZYWEfTwc4SEK2feRf7ffzjHIsbJtrzbtpgIt3P8q8lupbzK6U55/V6oZCQXD/9g5PheaiBkounjP8BEdJK/wCrF6yA+uGVTaE5Qzj2Ps+sw9qPz6Fpd2RPu5+TcmWZdrFYt3blKagTT8JjA0ej21mvywO8/fnmTU3jwW3nIHvNKL7hYuCsLyytNQ55tjqoN67kgwAIQD9uxEVOXMWPdAYsIvo0CmMa016o2cpJeK9jc4pSIiZB6LMr4/lj8Q0TyYplwXWnWO4JRRI7Ncr4drcvZEAe2VGlcTMsMizVtWUzCJHVxpa5/m5FfhtfPVuUaOlgnSG4bQxfvNpxMopgoSBIl+36IRb7Vk9Yp+fZAsZrsjIn/o4j1tr0NhoZ9SnJlEpb8fzsFVQMUeAwMVOfY722+5oVxVu4oAheNxO7eoGF6O8ccqw9DIjkTcuFe2defgNyxdkVObhBOvDmIaPN8ASkg1lfxivUdRS/iPYDtRSxJ4yxmyiw7Bd+rXgs6nX9ro2s1iUVH62LQk2gLrl2NJO29fVSCoDQy4CDB9aaMmkYGBMeFAlWQbEryp0747ImwLlcdaQc+KYJ9ZC4/LK+HITyegT+bA4vu1z0qTo0M51swZr15JXKGS8H5Q8tvMxHafB3/re5EBMkSwvikA3L7rQ3P9XHi4iVfkKsRhCmXYdYWgxV/dpmQ2QHQYbW6xEsjUgqcWnFl79XFehSEdcYYNLW1ZdB00LU5DLxkGhVn7bRPfTmXuu+AzRm718AVfsBw3eKV48wY0h/wHHtgc/AVmmZzrS4qAofXR+tJ1pVFAkmGljkDcmH8PDn81+jnTw8NCZPp8WNY9VSt5qcaUrb1sxdcYUHDVNYcAkXLstx5PC6v31+bwUIDISUfcAC5jWmifxHBxf7kwsWTxXnaMN0q95tpmONTRuSWe2pkGJyxXfxHwy1TOUqCewKu0YTcg8Jg+9yQ7+mUyeQuZknAqjURxUP4+0l01lih14811wstfQePFje9u7TUBODxUXHRWV43/sw/0mnQpRQzAik1jTlsI3KfnXrFLIH3dlOIR08byD5JyHyMSqihYq1PV5rv5syntuPapDX1PbsFvCAGSJGWfA9v1ISWMJy1TFHdneCYVPcmtevZJ4JiOV/g5KvNfIZvL7V1gwMqyjGk9mSUSnORuy9iZOtmMNw3OxH7xbmj1EQGCsPza//Fh1iYYU9H6uZHn019x8ZUzzgUMFF7Wh8sdKzVrfWhxy2QXKAGBxXaXraNsKXGcaI1foMpUwNTkgZZkJJQyo58djdrVKIEmmVM9GuZnG0xZIr5m4f8kYZ1kHKP3NKg/Ymf6ilQCcqDPRl220aKZfoquu58voyhuNae9Ok2J/liWAvfo/v8ptQf6BbIKPr6jHe8ccHwPJchjcfrDaS2IPUERtGL7pDu3A0Pztnk4iNVpWnnHbREw3Kp9eRPDmtWcp3u7ccW/ck0DiOFHlAuTQDgZTu7RY+WGsoPGUxJMcgLDXfMqGGA65B9S1B", "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n\tIPV:NLI; SFV:NSPM; H:AM9PR04MB8147.eurprd04.prod.outlook.com; PTR:;\n\tCAT:NONE; \n\tSFS:(13230040)(1800799024)(19092799006)(376014)(52116014)(366016)(38350700014);\n\tDIR:OUT; SFP:1101; ", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "EZ04Dym2EFFTySd5IY1KOba5Z/BL5r+qUcbL4xPSq8HrUHhOpBu7qk/Q2dsKrZHAmoaIdaNNO+qF4rnvJjh/BRnvAFJhQTo/amsEkpOKw7hEITi4FsYDycShyDRgWGYsd4aj19ohBRebEJg7qq8qv6WxyK/gKUqViPCm/+kV+gGvMDHD4Ts366YQkPbp4BXFcZbROzYztyFTiMGBori59vO1d6vZTAl+119oA5oeXJ8aWBU1Rpwyi+rfCEyi8R0D6CHRwSOz5AY9wVt3a2Lb5KPHrbsLzAnpnOojdSbeB6nwTMMtIFaDB4r2qnUAi713IgkqN54EiC6cbOg0DdXrLE5i7/SHDRvsuaCogvxgZWLZ0CpuUVlCWK1KdEnDhtznZdfCwLbnsclTjstvXwLOcqxDyzW6l2B76T/2h+AmVnAMrzrHnTN2BE74GOpW7ZVA8F+jwtzZUcLuf4EYGtIwP2f0SLHJymzoAgQinVhBh3QvrP750dp6wTYXomE+eDQBx2GTBBqbIyetikUhBjptBvj1PvYzEgUIPfvVjuaUE56hlUo5scYbc09XmDGGw+6U7abrqNdCotpOhXDosoMAwCDxkrtbW1usEJzkW9bSI80ombo2eLML14c3l4uuEnZttJJqxUdRvzUoNcyXULT8C4Ve6LIygED5/3HEcwxefgrNsVsbsUDb3A01lYrwF708k2qpvtga0CUVw3tvFhy4WAfIchIgHV3SUw375Nf5Kr3K4M+k+YzrWeCdHXy4nlSLRNk4Iiy3T+0LX8Hn1njdqToY9n09+F3qIfSHExTBP193AOLmL5VqT0gmrZ1MQLiKjVobQOxqjwEiCR4fsUnsJbCRSaV1wdugTQYvTL+VPVl3SDU4xqnhbkkyML6GMoohrht1GGnp5iEuQWcGjITPCCcQHL7u0vyupx7/dlqWtQ2okIYpKdf/+gOwVpOuWA3eOhCKpjkHz9oiGVTnsnD1YKu6iZSIrVqy8ENYxk+CxOtLL0x8HkgKaUm05LS+ohh/89HGuLm51naOhFOBO3RcRWiaMEvBVQssFJ/vDgNCEH6JSoK4AQ0Xth1/7yZUqg7brB0pmNqcZ1nCcarnUUWytHJN6e6ATF2nRiKIb38FAVYwnsIPZAGT2knvUXGYfN+yEjSZNSvE2peMNg/JEwEp2PgW7a0adgxiGFz2XGpGpe/Yx4U3cpCfXbCjyRjAK6b0FNdAmwqoEPcD78H/UA78PWrCJWJfIm0SdkwyDsIZAabAYnckrGV363i4viZDu4753fPzdGPQY+PaTRQNx1oIPuHR/axiCeJ0SokiV3TLGhnb86taAoEt1cEnFFic3v7GcYl2cHKPbQc+KT991eft6z1hHJH+cW1vhZzQjk07L0xXY+R61aw0MC942lm1moIP458R4Lm6keTnlavaAonHyKZ+ltOW1X0zt0coWyhMM5GemXZ2V49od/vV5Z1varKaHa/Ncytp17pMjwmvEsdOM9bmnk/gNflztQpvDCtfYmh0cJ2UN5Vjpd7pJBAScEIMqJD4FBKrIjY7axU00ei+bQs7eAuao8JGZjgCF/m7vxytEwdAT59hWqsEWYhOMuY+tb6qpqfX9wBYUmtShIIYsg==", "X-OriginatorOrg": "nxp.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "0ecc2430-0161-484a-6127-08de0cc89ffc", "X-MS-Exchange-CrossTenant-AuthSource": "AM9PR04MB8147.eurprd04.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "16 Oct 2025 15:28:15.1766\n\t(UTC)", "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted", "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635", "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED", "X-MS-Exchange-CrossTenant-UserPrincipalName": "akZWg5LNueQnnh4lrS6IjcP5/2beY9CNREkFSJ0DlEzWJBznxxgLAPNpmhjNrlDWlvyQFGH8w92SB43T/8jZxM0rGDMi8Vk7PVTv9NxsqD4=", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "PAWPR04MB11571", "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": "The CameraSensor::imageStream() function has a default implementation\nin the base class that returns {0, 0} as {pad, stream}, assuming that\nthe image pad is located on the pad index 0.\nThis assumption is correct most of the time, but not in some other\ncases, for instance when an external ISP entity acts as the sensor.\nSuch entity would typically have sink pad(s) connected to the actual\nsensor and source pad(s) connected to the downstream graph. Associated\npad indexes would likely be different from zero.\n\nCameraSensorLegacy subclass correctly handles this case in its\nfunctions, using the pad_ variable discovered at init() time to access\nthe source pad index, instead of using a hardcoded zero value.\nException is imageStream() that is not overriden in the\nCameraSensorLegacy definition so keeps the default implementation of\nthe parent class, hardcoding the returned source pad index to zero.\n\nThis change declares CameraSensor::imageStream() as a pure virtual to\nlet the subclasses provide an implementation. Implementation for\nCameraSensorLegacy is added, based on pad_ variable usage.\n\nSigned-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n---\n include/libcamera/internal/camera_sensor.h | 2 +-\n src/libcamera/sensor/camera_sensor.cpp | 4 ----\n src/libcamera/sensor/camera_sensor_legacy.cpp | 6 ++++++\n 3 files changed, 7 insertions(+), 5 deletions(-)", "diff": "diff --git a/include/libcamera/internal/camera_sensor.h b/include/libcamera/internal/camera_sensor.h\nindex f6ef4df1..eed919a1 100644\n--- a/include/libcamera/internal/camera_sensor.h\n+++ b/include/libcamera/internal/camera_sensor.h\n@@ -64,7 +64,7 @@ public:\n \t\t\t\t Transform transform = Transform::Identity,\n \t\t\t\t V4L2SubdeviceFormat *sensorFormat = nullptr) = 0;\n \n-\tvirtual V4L2Subdevice::Stream imageStream() const;\n+\tvirtual V4L2Subdevice::Stream imageStream() const = 0;\n \tvirtual std::optional<V4L2Subdevice::Stream> embeddedDataStream() const;\n \tvirtual V4L2SubdeviceFormat embeddedDataFormat() const;\n \tvirtual int setEmbeddedDataEnabled(bool enable);\ndiff --git a/src/libcamera/sensor/camera_sensor.cpp b/src/libcamera/sensor/camera_sensor.cpp\nindex 4f2fd269..50f2b98d 100644\n--- a/src/libcamera/sensor/camera_sensor.cpp\n+++ b/src/libcamera/sensor/camera_sensor.cpp\n@@ -209,10 +209,6 @@ CameraSensor::~CameraSensor() = default;\n *\n * \\return The image source stream\n */\n-V4L2Subdevice::Stream CameraSensor::imageStream() const\n-{\n-\treturn { 0, 0 };\n-}\n \n /**\n * \\brief Retrieve the embedded data source stream\ndiff --git a/src/libcamera/sensor/camera_sensor_legacy.cpp b/src/libcamera/sensor/camera_sensor_legacy.cpp\nindex f9e685a9..a75c8457 100644\n--- a/src/libcamera/sensor/camera_sensor_legacy.cpp\n+++ b/src/libcamera/sensor/camera_sensor_legacy.cpp\n@@ -84,6 +84,7 @@ public:\n \t\t\t Transform transform = Transform::Identity,\n \t\t\t V4L2SubdeviceFormat *sensorFormat = nullptr) override;\n \n+\tV4L2Subdevice::Stream imageStream() const override;\n \tconst ControlList &properties() const override { return properties_; }\n \tint sensorInfo(IPACameraSensorInfo *info) const override;\n \tTransform computeTransform(Orientation *orientation) const override;\n@@ -855,6 +856,11 @@ int CameraSensorLegacy::applyConfiguration(const SensorConfiguration &config,\n \treturn 0;\n }\n \n+V4L2Subdevice::Stream CameraSensorLegacy::imageStream() const\n+{\n+\treturn { pad_, 0 };\n+}\n+\n int CameraSensorLegacy::sensorInfo(IPACameraSensorInfo *info) const\n {\n \tif (!bayerFormat_)\n", "prefixes": [ "v1" ] }