Patch Detail
Show a patch.
GET /api/patches/24809/?format=api
{ "id": 24809, "url": "https://patchwork.libcamera.org/api/patches/24809/?format=api", "web_url": "https://patchwork.libcamera.org/patch/24809/", "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": "<20251024151058.1523308-2-julien.vuillaumier@nxp.com>", "date": "2025-10-24T15:10:57", "name": "[RFC,v1,1/2] libcamera: camera_sensor: Enable routes to query stream formats", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "34861ca70002656a7b2baf146b746e062c629e2c", "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/24809/mbox/", "series": [ { "id": 5527, "url": "https://patchwork.libcamera.org/api/series/5527/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5527", "date": "2025-10-24T15:10:56", "name": "libcamera: camera_sensor: Add support for an additional image stream", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5527/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/24809/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/24809/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 B0B87BE080\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 24 Oct 2025 15:11:54 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 7A3AC6099A;\n\tFri, 24 Oct 2025 17:11:54 +0200 (CEST)", "from DU2PR03CU002.outbound.protection.outlook.com\n\t(mail-northeuropeazlp170110003.outbound.protection.outlook.com\n\t[IPv6:2a01:111:f403:c200::3])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 13DE26097E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 24 Oct 2025 17:11:53 +0200 (CEST)", "from AM9PR04MB8147.eurprd04.prod.outlook.com\n\t(2603:10a6:20b:3e0::22)\n\tby VI0PR04MB11784.eurprd04.prod.outlook.com (2603:10a6:800:2ea::12)\n\twith Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9253.13;\n\tFri, 24 Oct 2025 15:11:51 +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.9253.011;\n\tFri, 24 Oct 2025 15:11:51 +0000" ], "Authentication-Results": [ "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=nxp.com header.i=@nxp.com header.b=\"RcZSC1MV\";\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=o368siMqi7r/7URWbuBnJqF3hQM4gIZlb/QrPkyDD7+wpFIAcCsxiNLAvxdkPiApbqF8acTildNyc3z+zvtxcFnhYAX08ZKoxGhMD59QFfWqcS+fF84hvKCdKdFWnV2f3LdkMqbSaFcrbZr2JnTCRV6DSzk1MAoZ7yQehd0Wu9uKGVih0MAyemKHTyNJUrNvLee3sCYMrWhMxg8rDFA05Tfuf/e5tOaA9fLjXlc6WGVWKhzL3u8mHvvkKZzCcc+9vQdatLNSbKKjsg/++qO9yehw/EQNrrsKi6OTdAsGx8wRu2T0a6buATQBJyk5dhSXI9J2tWO68XF3DzPREaDo4g==", "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=mczsg+3/T/YNuRuNP3YmjbENhbzZovqQFt8XLjBqGOc=;\n\tb=dPV1nCMqqgcwcqq+0J4D2X3oIXZT0nYw4qq6rBV3OYZXS/OQ2BoF4lyvH1ji0PY22ZgsKt4w+W8xbARkaOMMfhB/lnGsA2hSzWOhFNaBUuHxZjz+lljO+hR5mwjwu6sFmj6RAwokkIXGGaEJPDqVqEx5vYTJhZerxw/ENZkmMyznoQOzvdCzOQ5YHbZ62BOeWP3yCJWXr2/EPEV2Dus9oyjZt/2qQQiHBZWmIlr1IEQlNokvNpEfq3QKVPB1djNOc+Gbubea5sRdtZv+qReU7Wc5aFK40KgRWO6pPv8aGsfXv9IUVN77XpgrGlfQYnxw5BW4QT1shznowpg2bKD//g==", "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=mczsg+3/T/YNuRuNP3YmjbENhbzZovqQFt8XLjBqGOc=;\n\tb=RcZSC1MV8fUP47IGeHTvJ7XFdrpLHLAkBSKW5JCoHcR1PPRee2rRcAcqRgjnkNyVA5hQbYRcN9RAXUC1FNRDTfmyJhOCXKqW4gHigQhWZl7YQcPHQLzM+bfHanD3nFlTi+MHyUNGDnMs1iFlov7Wn4PkV1IDsBP77h8tZGE+BNjGhK4NzvJfYFm4cNRujchMfdxKYeQcUBmpjY9rfuz830FBY9GrRwTl9yiX/C7syzz4Rz+1lpMPaVzqPz7Fg53oO09ZMsNgVRdOO5dwgFp9RCGJFRLMohz7spxbGyh5hm3TIsNYIZXzL2W6V15/RKi6l6LjDduFlLCg6/C5G4x1Zw==", "From": "Julien Vuillaumier <julien.vuillaumier@nxp.com>", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Julien Vuillaumier <julien.vuillaumier@nxp.com>", "Subject": "[RFC PATCH v1 1/2] libcamera: camera_sensor: Enable routes to query\n\tstream formats", "Date": "Fri, 24 Oct 2025 17:10:57 +0200", "Message-Id": "<20251024151058.1523308-2-julien.vuillaumier@nxp.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20251024151058.1523308-1-julien.vuillaumier@nxp.com>", "References": "<20251024151058.1523308-1-julien.vuillaumier@nxp.com>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "AM8P189CA0019.EURP189.PROD.OUTLOOK.COM\n\t(2603:10a6:20b:218::24) 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_|VI0PR04MB11784:EE_", "X-MS-Office365-Filtering-Correlation-Id": "1cb577a2-d184-49f7-e080-08de130fa8ce", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;\n\tARA:13230040|19092799006|52116014|376014|366016|1800799024|38350700014;", "X-Microsoft-Antispam-Message-Info": "6gwDfILNBmMDgifFHD+6k8P5hvWNH6tHVA2vTtxM29g7Hg+6ebCVgCDQyKfgURrnxBjBpXGVJxeLxYhcLDPm63mIBQueXZsiZPBx+Cv8jjMYkeRPkvjNxOkmMYJcU86IUO/4wZF4rN3WOVphbd4piRevVaKl+YysuR+eZblM+m4yZGLB0DsoBAE+73nN+pUfOVfCZEIdiFUnaodCeGLYBqOZi8HVZTL7VTyvlSZdznnnl/bIjJpFkCDYBhEhfECIDgu8nbxoUvsDm9yXdR1ojjygTllv5zRCXbk0Ywni8eczeIHt2TMMGvjlpFluXJU39y503Ew3cwXYDCDCF8ASeLe3jAaOsrX+eQuYqcBAEchkQIr/DjPapVB12NhsiKK3dIGUTEwYEYakN/1SjJmsh94vuECsP2wKYXEYWyUMnhhrTILhAGkft3n54gXaYQiMqSaai0qjr6UxYRdodsP5xsrh8ZpHsnnN+7kohq32rF4iIsf88+pExvrvQF7cl0kkjHbjaXnt+cefpxReCSeDAHjIjhClMcERW4hZSXF5JDjaOJgVMNxdGm5hiz302/B+jpcUeqQhTkpBlOYzXxIJ/F3iATOnegmeRYQDdA+bQ99xpYGGQ/ha2yJmShyfvn85L5XD+vw0nLzaPNLtdpG0bH8NDfw8+OnJcdMkIAcdG0MJM/nITG5/+/M29ltJIr2SoYqocGAsDaJMg/rjQ2SGbylwBzS/oeadHleAWLMyzpPOY6cL41nHtKBo4Lsd0iw0t2+Ykq1SvCXK9KBjj5Q9MCbZQUxIJxi9GejrlJTbzSimdq73FhFbLer+VwcD77cKVdFjk2t7uBz4dY/EMoIscuEvyiYasbw6vlI+mLFznyJGFM4f+nTiCu9hqSoap+O0ojvKN7acGxTE34xvB3P4Xizoz59qz7uSARIsbfjH7rXeBosPuzjiWRMMcl8kEOZA7ouMagM8SccIPkCDtMS8iIDvYvotodyovTdI8SHHOi2Wd9T6ByA2YPhJ/3IUgEvwYlyRRMX/2SVPaWImZ/w62EN1tH0l191rgJIdwqAz9ZwiZQtDgi7EFS1jkOTIbUYn0lbYun8AbMo6Cp5b19DzJfJ4FbzmBNnq7mLuhtuz9ESrBMnfd4fo1su93+rjLTF/1AFB3V3I9DY2dm/OCtarGB5Y8LktXPa174+T7I6C4VKdBOVjnBhKio7qoSjZJpZ4kbK4mTrdhnj5rN6vs+YZFYf6xd3z349adDOvb4tfk+XVoQIrJRMJwfg7TcLd03yEzvOie2RX96pQ0W3F5/wIVHtmMmAbylXR7rnEVgYtdfjD2aP9GoSoVZD7BQzlAEloDN7/U559p3PKpX2WslYzIPiLD/RvQ0o2T6KxEqpkUHg4G3wWwXuUp7j+q1EO8kU3SNk3fld6Gk0JKVEWXB/Xitzfva5fYt8CFZW5iGHdWgez1jCMjafgeQqHYtWwFtUNkg2Ia4rl4GxbCjzGI7JQ1AfXLGk0IXkHpF+MR3ATYCsZC923PdBIucaARcnC55kS", "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)(19092799006)(52116014)(376014)(366016)(1800799024)(38350700014);\n\tDIR:OUT; SFP:1101; ", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "bwg2rOIulO8Ptrif4FfHhrpD9qKVcyq5oT7+X4yuzDFt9oVksfxLvrwKuXGSbnyacTPT1TBCujgSgJWOiJHflu+sJiCXORuqmoPaMdvb6KvUBm85+O6b/RhLjj+4+B63NxiP3MCyIauHYqUvJCcqAbycKYujyl+7Xag4/lbNPurgTor6Hb00MIXKlkR1gNFzOuFbjAJtQkMQSZRF1per+ZTMy7Q6wYrYL2qoc0UUUbjgBzGgBz5B3BvshxsDmnWFqK5kmWLUXuHp5DvQPtdjGrmmFjOUayx7kD04nV59yjN/SObupGzKfcNNhGu4eq7+br5hhrN8jKhn9ThncmHrIlH4VAJvL0i7Tv1flIk2xIycvd9cPKfpnF0xrXIwmILX0XI4esSnn/9WI/mDlDNzuBIMHsIbbqeBKzampR8afngLQJgIF8VQbumpK+zik85Jxpa30tZK57evwIlY0eTKoK8VVr/q+3ba6YlYFtkL4pzsuOzdvufTlR3FuTAXECK6N5jxiSHQGYuYUKDoNA0/uxdCzmH8RoxexebRIvZkYkGoChNqV2vWbT1UQ5RH06VVZrp5R46zJqC3a12NgOLT/aaQPkSKwURkW2/G9DlUl3u91QjO/crfxrk0itmCF4XE2hyFK6P2I1sGJvUn3NCaVYUjHE51HX+84alsDnEH9geMLklb+5W48DTEsF+3tV6bXvn7J3LEmJPE2ynJ1x2mH2pVWnCfKr9p7C3F4Mjre6m4K+f2AeWR9cSGNo93gpR6LeaQQwL2Yvv0nEyXhS7x14hDBXTlfscYVriwafdGSWFT4l3Cjyr43YLTp3X1TyrUoYN1dm7K2Ai4JxV+/GZVacE7AJwInwllsSUiUVuFDqpcHoPJ1+v63D8C//aajHBAFbDaYV/SBW/F9OprBqAT0G0PYYupupUY7h7dnu5GTTEzoVKSYqrEhOzDRJfsBlIyFT75H3+3qzdwtIL+FL1xKvT+wP4D7Wi+iQJfLdgLiHnRVquAmP9E5vxssf+PrEjnDgBlpBeOZ7S/FVQ5QlacGfqm3d6LQPeYaWt+gm5OG/uiAlIvohoib0SOg/EXm5eurwafJyURA9885/fm4+kxVFIpwkXSBYRITcn/tSlLPTcMzwx4GHS6FIi9xUQ/NQXVFnGE6Ra8uDpQuXZ/6svgj9O0Oz3QQl0DeVRaz+ab0DI7tfzuS+1RcvvKIb6Xj1D45eYNPlSZbljedIq3NXO2U9UzKAc5S6LxjQrCsdNqC200mmABXWS8F8jyomxrjhJBI8r15yV7B1mRBwVaW/xtdTnCq7uutqPk7RLtRYrce3NLhzmHo7CCV/l0Q/S1uKTtkWOR1bSHvgIjrHwEyVU8qyNY7rCFCgE+V1VQjtgOsQ73ZrDvFou35B8PwAgPvkmrhXArtSzMIbxTcL/xV5cdqiXZvHZG6BH38cHJDCvyYs+ypFMAdDfM7Ni7W7bZU7Gacx6VEmgJR6JEz+/lpEu/epkIWW9IGzkcOWI5g0s1g92nK6m6SKOt0jbLMDohFWdIBlFtU2rBNQgsyNCX+wv7QcsCK9fW1epF1GynDh+iIf02l40ascFs+56wIWmKRXXpgCFq3O0oTrccpnhyxU1fow==", "X-OriginatorOrg": "nxp.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "1cb577a2-d184-49f7-e080-08de130fa8ce", "X-MS-Exchange-CrossTenant-AuthSource": "AM9PR04MB8147.eurprd04.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "24 Oct 2025 15:11:51.2935\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": "vsMI02ZrGELZsVXSlg0Qd9Xolz9zwUey0KQDXvjgsPdzNQprh1TrAT75yVLG2ulZlNqCsvlOrb6n/qf8Q/yBYN5zm1EoHhabueu9wjENza0=", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "VI0PR04MB11784", "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": "When a V4L2 device supports streams, the route activating a stream\nneeds to be active so that this stream format can be queried.\nFor a raw camera sensor, an internal route may be inactive by default\nwhen it is mutable.\n\nImplementation of CameraSensorRaw::init() probes at startup time the\nformat of the pads/streams attached to the internal routes of a camera\nsubdevice, in order to identify the streams it exposes and their type.\nTo make sure the format of the streams can be retrieved, activate the\ninternal routes of the subdevice before querying, and restore the\ninitial route states when finished.\n\nSigned-off-by: Julien Vuillaumier <julien.vuillaumier@nxp.com>\n---\n src/libcamera/sensor/camera_sensor_raw.cpp | 22 ++++++++++++++++++++++\n 1 file changed, 22 insertions(+)", "diff": "diff --git a/src/libcamera/sensor/camera_sensor_raw.cpp b/src/libcamera/sensor/camera_sensor_raw.cpp\nindex 8ea44236..ad4a94ad 100644\n--- a/src/libcamera/sensor/camera_sensor_raw.cpp\n+++ b/src/libcamera/sensor/camera_sensor_raw.cpp\n@@ -261,6 +261,21 @@ std::optional<int> CameraSensorRaw::init()\n \tif (ret)\n \t\treturn { ret };\n \n+\t/* Activate all routes to query pads formats */\n+\tV4L2Subdevice::Routing routingActive = routing;\n+\tfor (V4L2Subdevice::Route &route : routingActive) {\n+\t\tif (route.source.pad != sourcePad) {\n+\t\t\tLOG(CameraSensor, Error) << \"Invalid route \" << route;\n+\t\t\treturn { -EINVAL };\n+\t\t}\n+\t\troute.flags = V4L2_SUBDEV_ROUTE_FL_ACTIVE;\n+\t}\n+\tret = subdev_->setRouting(&routingActive);\n+\tif (ret) {\n+\t\tLOG(CameraSensor, Error) << \"Could not set routes to active\";\n+\t\treturn { -EINVAL };\n+\t}\n+\n \tbool imageStreamFound = false;\n \n \tfor (const V4L2Subdevice::Route &route : routing) {\n@@ -348,6 +363,13 @@ std::optional<int> CameraSensorRaw::init()\n \t\t\t<< \"Found embedded data stream \" << streams_.edata->sink\n \t\t\t<< \" -> \" << streams_.edata->source;\n \n+\t/* Restore the routes to their initial state */\n+\tret = subdev_->setRouting(&routing);\n+\tif (ret) {\n+\t\tLOG(CameraSensor, Error) << \"Could not restore routes state\";\n+\t\treturn { -EINVAL };\n+\t}\n+\n \t/*\n \t * 2. Enumerate and cache the media bus codes, sizes and colour filter\n \t * array order for the image stream.\n", "prefixes": [ "RFC", "v1", "1/2" ] }