From patchwork Tue Nov 4 13:49:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Antoine Bouyer X-Patchwork-Id: 24966 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 71EDCC3241 for ; Tue, 4 Nov 2025 13:47:50 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 0A93960A7B; Tue, 4 Nov 2025 14:47:48 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="SyQk4h6s"; dkim-atps=neutral Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazlp170110003.outbound.protection.outlook.com [IPv6:2a01:111:f403:c200::3]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C541D60856 for ; Tue, 4 Nov 2025 14:47:44 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FiT+Ow60hirm5ZUiuKxwAfjLAz9plqSjdUM+rfDe1UlWdnN1HWBSJTGvRs+XJCN7CfdExAeCUiq8bwyZ6VIV1BZGkZVIz7SWtMDBMKrZjCLz8LOXcP5QoxBgY6LuYg44VyiB1bXi3Q8nkrCT+/ImAaz+m6/BlDKom29Seie/xvoOBisMbzxy9Tw0EnAlI+wq/sXnuTNMZH6TJLFDLI2KlGJJPp1Ekeez5P2D/iCtbKzLHUdBoLbyhGJ7ROrkIOHb9ZjdvHzufVFL25kkIU2ah5FpoNV10g8J8rbITWIHiWBxUmSAPKSlhOV5NicF/DOdAx/CVidy7gT+eUZaWYc8ow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=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; bh=QeWqTcZPC9HXrL45LMB2b4qKvCzMIf0NDV7/kLTDfsE=; b=paUJHloppTS+rodGEPGEiXcbJEuzUUO+DKdHaNmxIHFjPY+JKKSkb1lFe9iqyp321JbKuUTkAgY2Fs3LT15JqY5EmVcvinb9Zz+P4w+PSFXLSwvj2yIy2KHC/Gm+jDYtuBOCYRnceznZLzX96PtHMxTDGnTMDqWH4lwahokzlzAbAmT/Ikzlxg1Hmq66Jm0J76fMx7VvyQNdV3cEN7NNYQTm+ppAPsUs+fTtz6cP+B0cv6iUFy3wFGs7+RPg12fp9hjdVX7Ch6ZlRJ1nY2p98hAU6PAnE/uDh88f0xMVqUpnz7xwpNbaa9Oa/F/JXUQ681ZBCww/w5MAaSIEk7XGoQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QeWqTcZPC9HXrL45LMB2b4qKvCzMIf0NDV7/kLTDfsE=; b=SyQk4h6s47zRQjHB4UJDz58THyEsA0YUN6I/+e88G3SeufVM2kp2Ru+ioz6R+ElA0AdtoPwAJviuiFz0YGmFIR5qIlePl9vMbeel1eGO/iUPcTJzxkPYK+T6sqMw4R4CtvxlN03B7IItRw12QmkXBC4VuZkL4TPKlqFXYc6rTrnDEMpPSQZgEi6Su04QKEGZS2rK7jcAPhWJzPFgfqI0gMGRB70lAt+gT9oZwNs3DzhcJH0B3x/flq4+/UwRGFbusxj8nc1ZqD+neMiyE5XfsJjxXxNmlhCvQjf+Av9gQp6P3M1ky2uKQrEDzAlKnmJgXUNoWj3YhprL+u0hQkjUVg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GVXPR04MB9831.eurprd04.prod.outlook.com (2603:10a6:150:11c::8) by AM8PR04MB8020.eurprd04.prod.outlook.com (2603:10a6:20b:244::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Tue, 4 Nov 2025 13:47:43 +0000 Received: from GVXPR04MB9831.eurprd04.prod.outlook.com ([fe80::4634:3d9c:c4a:641a]) by GVXPR04MB9831.eurprd04.prod.outlook.com ([fe80::4634:3d9c:c4a:641a%6]) with mapi id 15.20.9298.006; Tue, 4 Nov 2025 13:47:43 +0000 From: Antoine Bouyer To: libcamera-devel@lists.libcamera.org Cc: julien.vuillaumier@nxp.com, Antoine Bouyer , Kieran Bingham , =?utf-8?q?Barnab?= =?utf-8?b?w6FzIFDFkWN6ZQ==?= Subject: [PATCH v6 1/2] libcamera: pipeline_handler: Add accessor for useCount_ Date: Tue, 4 Nov 2025 14:49:26 +0100 Message-Id: <20251104134927.318841-2-antoine.bouyer@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251104134927.318841-1-antoine.bouyer@nxp.com> References: <20251104134927.318841-1-antoine.bouyer@nxp.com> X-ClientProxiedBy: AS4P251CA0019.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:5d3::7) To GVXPR04MB9831.eurprd04.prod.outlook.com (2603:10a6:150:11c::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB9831:EE_|AM8PR04MB8020:EE_ X-MS-Office365-Filtering-Correlation-Id: ab7fb17d-bdc7-414d-e29b-08de1ba8baa7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|52116014|376014|19092799006|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?HBEHdoWasbGBRhpA2FEIiXMYKvAZ?= =?utf-8?q?8qDdFn4yKUYknbc8l7aNCOxH/eRX6Rplx3A6MmKizGJlDvfdIcSzZPfl?= =?utf-8?q?6NJpve/uQuqJQ1X8ELJhGlQxcdw9Z+hgpCBhjEuzwtqzvlDVj0x7y4wi?= =?utf-8?q?JUyByCwG2D9b4jbgxKoXktTBnQHChGsKIdXETBdx1QVGJ7NS2htS+lmA?= =?utf-8?q?TltstdOo2wcdL3O/Ej0L4lw/nYRKgXpmZRc70kTmywQQNHOI81xr1eBK?= =?utf-8?q?K+NDKMM8HNBRGqDGSAf9H5KvJFNZEqCAmeVDzArzqKKRT+b86tSQjyTh?= =?utf-8?q?nSEQ94Qes6YqmTmxxUdvjwSLVulCLWEM+pTfoRnXgs/eDrgcGad97Xyu?= =?utf-8?q?/pXV1HeCIuOIXYKPZyrpSMgB6t27MSeiMc6aNjbU3u8GtS69Zrx4Q0Fm?= =?utf-8?q?kIpkEeFCtOHF4KAoPLI3a7aow0Yg4UAFV8MW/RoLW9XRnEWm5gZ7GE/H?= =?utf-8?q?l1vQkKTTCk8P0D77yDMW+s6c2lj9DIkKOezQyz0bT9/m/4n/56inwUmE?= =?utf-8?q?eeq+XMhKBvgoC8AJ+f0groiGmRHcuEzs3/5/SJCE+sfiPO9CMn/72Y17?= =?utf-8?q?l3M7SCbolvwWls0z1muY7dLY+sy0dsySKMvuGSdEAyPtWPtAl7kc8CHw?= =?utf-8?q?PSSI1j9ha0qa9YXrIIqHvQ4YjXOxekfAXFBeKLur/O2oNXxBcKSbrjr1?= =?utf-8?q?RUg3z0gpJBidXV9xo2D5KfF4aOl330DqZXE2XK4Um2QhZZI0FFk6Hkf2?= =?utf-8?q?QTuBzilCqKEcrNvBvxVRWICS7aaLDTU2IGgQJM9a9/aRM8QWNYnKHcgH?= =?utf-8?q?GLA08ejfY6+p9oQCsJMbl9h4Ta2/hOwA6ZFsu6Tt9EvydNTtv3HCJOXb?= =?utf-8?q?ozzTjgfBNom+TGH1wf3xgu28iGpHAI0nOoqBzuXbPI487EI671QFT9jG?= =?utf-8?q?TJZkNPERepu61Tq5nthkDzRyy+cUxQJ8m/4ZYvzDJ4kINPt+fX3hLSGN?= =?utf-8?q?7Are1ErDcgmScugoKs8jHX1k51mEsDqNLXtWvR+RmsBZm4tFahT4mAhw?= =?utf-8?q?nKMOGlHPGHaaaG6BR4exYYTqThvEJMzyIlmqEtorTK0Sxubgtr3uPSuC?= =?utf-8?q?TREpcM8vxHx/Q4hultlTDnFnMAVs3/geu2+Njat0VJmpn10R8ZZpaquI?= =?utf-8?q?qtuac9VbB4+0Nyz+rsZZdLGR7Pnh+BoxvFc3tU/S3KIuTDdf0csbXjoq?= =?utf-8?q?Dte+mS0Ml+ih58f6+xrwdXXsYOCIpuJd1yxO2T0iMjpz6m2YB0CvruTc?= =?utf-8?q?3hH4MKGZQWSjROhDWNxGyri/ddsQMa+P+oI04geUVggDOW8biFzkEJCo?= =?utf-8?q?hTlOzeC0zOEcZJ4FOwFFg0yzo3uB9z3hJ39rgEXotqqzreV1UD6EA1yC?= =?utf-8?q?kx3jwhiYNwP443DCFruTrFecN9dxaBA2FxIERyvscuJKrf5PE14xWStX?= =?utf-8?q?tcDOA9gvxPYfNXk7nsyHFujomoT3AnYNqLJHImTIGYn5LBhS+UftxHiN?= =?utf-8?q?VRG76zY9uHtty5WSBUoknsxFN++bY9YWNTlzzx+ZZq20CAxH2ydp?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:GVXPR04MB9831.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(52116014)(376014)(19092799006)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?D0GppWSymOOYp1fFspesMI6qW?= =?utf-8?q?B7qd1X+lL/QngbSFBZhU1joQsyvNNeZ2hh2DxryaN5cXca2vAx9YFRI1?= =?utf-8?q?CI9zKIbDY+N20+tjjA/fPRMsFNFrdbinZfqtsOH1eymq/W+kQlVPdeCl?= =?utf-8?q?MqSgdNvgu09TSwQx4fpn/QUnhpocl8EiMqS61mpXpmHrgbZZNjWERQxa?= =?utf-8?q?KMML/kbk9AyEyY2Bye5fmfoaiPxCBDiN9bKCnwdVa1ReQXQTd9IX+HJC?= =?utf-8?q?ehSyoUVTiwuD6aKfLddCRiwadi3CXRREMN7ffeirTPMnbOsRaktgWJ/d?= =?utf-8?q?HRYUePkq6d0nbcEq0eOnn3Kky3uY/mRoibyeEe7cweRoWVuG2ac7ahin?= =?utf-8?q?c90JRasE7SZA/UDELCwgW8TMJDFzhsf+HSjtw1J54Li6vsWAE/bK+oCf?= =?utf-8?q?Wdlgy1JeOrzEcrH05Ru3/855R6tnWAKbf5pFrh0yY21fNVEcbHKr1XSY?= =?utf-8?q?6AHvhlfjoIJoumTrqibXQa53WW8YKzzkekGbqXalSn9rLfNpDF22BTtg?= =?utf-8?q?RiEQ86ChKNIf3ZhKkIQItlp0HpyRyJtYAKJrrWgHhhjHGrnGhICqvCLX?= =?utf-8?q?+pLE4fRJ7d/rlRQ7N+aLb2qyCRmQidJA53sh+3xwUZXaDm5UTW/bYIE8?= =?utf-8?q?Y4pIu/A9XGPAYhxCyd/9WSOP2VEYBiC4ov9LZzR2ahrSZEPsPGDeMlGx?= =?utf-8?q?x/i/mtZcDGX8iC6Jse2/uFbOIfbSmza5BQ3UV6apabGvsibGlnZabctY?= =?utf-8?q?0pDgvAxHwo+rd1zX8KiV0b3heJPJMf15ciJ2rDaBXN7for64NUZUBzRt?= =?utf-8?q?6yNAQRO2/lvOP5fV/r3Shahk/Cxg8bCBxpZmJpiCx/bISvvvR8Oq3FA6?= =?utf-8?q?5WeOGNMV0f2CdM6Ax62vo+Rp/gCMUFjfViSHAltF+gddAXu9p3py44Oc?= =?utf-8?q?35PdImnXfO76jpwdR2WbIud/OEongQqcIzQzjWDEw0CW50vwXssqADP9?= =?utf-8?q?8pFKekbJ5itbSL4WxKsQ1D6WOp/uKQTCmNrYL9eI3hoTAXM8E4veWSNv?= =?utf-8?q?iFX58GG71xgSX78/G14AU/IyGCseVr/4BcPxzScbd1hDrJEUiAb6UNfG?= =?utf-8?q?YyMXRFPkNmxitpoIoi9Mt/xIaOheevJkkxXBhlSXbSW8/O+5sXDx9bvR?= =?utf-8?q?2bX2GdLi3gRxyQ7yrwEFkXkVrFi54OVaHhbEUy73fqQ/mou4T5W4733Z?= =?utf-8?q?127sFBt/YfBFI2xOWl9PplYiTYYe363+9EEZn0ljvTfbj8tkDnumz9L/?= =?utf-8?q?4cFMSk8WyrWSm8hCtjawHbRhyUPn08u6EVOCcPyQfMpnsqvcoENYDA/z?= =?utf-8?q?S/xYNe5opRa3Tam32yYKohj1vCozBN7HB2bzhDiHee4BLcj5aqtsYlJk?= =?utf-8?q?4XRTPApdbZK630ccUcAHTMKabk6d/UtcUiOQFXVD6bBoLOo583GptS92?= =?utf-8?q?NmFIbvZuuIRLhJfyMigj0UGCoRLDpx7BntZ7v43MfC7BA4LqUTCgw7WX?= =?utf-8?q?f/0dUPM2dFuTIM7wekgjq7cZZbZUk93EE3fTzFDXa8hNbgUHoChwkWwB?= =?utf-8?q?CVemLhHDh7Vlg1BGWUT+dygZZ9t+FnP+4qH7N90CwQocEakvW4vgCUPJ?= =?utf-8?q?S7d6RaZ5SWacAdjW6+uH+AMpSN9jA=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ab7fb17d-bdc7-414d-e29b-08de1ba8baa7 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB9831.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2025 13:47:43.5799 (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: XJEkr1w5ZYVHfoJKQTL+JFFE8oGJMmciDUFNUCtMK2pcVqtmnZdQZIWY0e7p/AfYPotcN7Yy7X2hMNrdKqOFXQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB8020 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 an accessor for useCount_ parameter, so that PipelineHandler child classes can access it to verify whether the media device is already locked or not. Signed-off-by: Antoine Bouyer Reviewed-by: Kieran Bingham Reviewed-by: Barnabás Pőcze --- include/libcamera/internal/pipeline_handler.h | 1 + src/libcamera/pipeline_handler.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h index e89d6a33e398..2ca210d0ae4f 100644 --- a/include/libcamera/internal/pipeline_handler.h +++ b/include/libcamera/internal/pipeline_handler.h @@ -73,6 +73,7 @@ public: protected: void registerCamera(std::shared_ptr camera); void hotplugMediaDevice(MediaDevice *media); + unsigned int useCount() const { return useCount_; }; virtual int queueRequestDevice(Camera *camera, Request *request) = 0; virtual void stopDevice(Camera *camera) = 0; diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp index e5f9e55c9783..15fb32566543 100644 --- a/src/libcamera/pipeline_handler.cpp +++ b/src/libcamera/pipeline_handler.cpp @@ -811,6 +811,12 @@ void PipelineHandler::disconnect() * \return The pipeline handler name */ +/** + * \fn PipelineHandler::useCount() + * \brief Retrieve the pipeline handler's used camera count + * \return The number of acquired cameras of the pipeline handler + */ + /** * \fn PipelineHandler::cameraManager() const * \brief Retrieve the CameraManager that this pipeline handler belongs to From patchwork Tue Nov 4 13:49:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Antoine Bouyer X-Patchwork-Id: 24967 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 A3A25C3241 for ; Tue, 4 Nov 2025 13:47:51 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id B287560A9D; Tue, 4 Nov 2025 14:47:48 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="lmLbKbxT"; dkim-atps=neutral Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazlp170100001.outbound.protection.outlook.com [IPv6:2a01:111:f403:c201::1]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id F185F60856 for ; Tue, 4 Nov 2025 14:47:45 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=BaTq+U87rhdY7owvFf14twKWoW3Z19+bfTy1DXl1EnFOap1B9WUPOUrrDv5expLwTNBiiP4bbT0PEgmDWEUdlzcFpEjFWvKCM8I5OKOtwCu9GpHGntRLxjIgnbLbjTi5bVQ7MjuwFPoqkXHvemrTgk+wrS4/696y4g2oecOG1GUseLfOsrjLy9tf+rwKRTp7jzYZLq7+7Upg3P10O9rmry5vtHKgfcgPFU9lmwICTRgJHJjBoe9JQ2l7qAq9ONsdeEGWdlAsiWPUGIJSC3MGRFxpe8cqdIkszBYcw8SOPh6F/CAmAPuVYdxicpZ4bhMHeujfz/S4lL67cRqv+QP4lA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=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; bh=vyxzQ342y1YH/nGSsGBDzH3kZabWUf6pa0jaceziF7M=; b=h4bjR/V2CJWDJhUQA6FirTZNJCilUMlkLMISij0LiVQXFzQ+E4pzJ3g3h3pJ2fD09Z4/virtno2WNAYSiCI/6g1Up7sObFDR+KUa6AHz7Y7qA4Qce/dzM4CK02ud62CZD1m0E/bgHYqDzYOt0KQBEKctUHYU2BCM0HgfeYcHbrD8HUGtM4BDy2ohOE+ZKjmk4u9dnO+Dpg2zT3HBOb6RTKMpeVzdBlDJ40qNci6PiW619Pl0CvPBFLI+OzkwkVzVYDeSDhkFJcPyhc9Vrt5GO/4jB+ScZJhW6GOsPe4QQ3a9IVUEVkssx2IXGAL9jd342NIEPhwVQP20UCOV17nXRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vyxzQ342y1YH/nGSsGBDzH3kZabWUf6pa0jaceziF7M=; b=lmLbKbxTnAU2UO3MXbk+7+4wO83NGNwP/fz/IL1oYiuemZQumOi/XXY1w2ASOiayd6KpRyRXAHDdgdgRo+kE5SKVh/KULUPYYJslIVOIBFAD2wbLe2j6sEDUVEuWlE+3qfzcR3AiLGoxzHF1u9rs9dHTvCctv88GldpXxhxfmw+HOKLHrpxcE7XE/usWdMWuqQQROXCqPeIoXrPvYdUm2Y8T9+wTMqGzpd6Q+T6OA0QAlM+LjTaPUvBkyCfyJpqYmp9L8FlNjWgsbqmgshzJrzkQOkhMBHKsgNJlk1Usw5HAUeoUHxnNQ3uQTFdr/AtIxetxGsujQqOYYo3MmVBtvQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GVXPR04MB9831.eurprd04.prod.outlook.com (2603:10a6:150:11c::8) by AM8PR04MB8020.eurprd04.prod.outlook.com (2603:10a6:20b:244::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9275.16; Tue, 4 Nov 2025 13:47:44 +0000 Received: from GVXPR04MB9831.eurprd04.prod.outlook.com ([fe80::4634:3d9c:c4a:641a]) by GVXPR04MB9831.eurprd04.prod.outlook.com ([fe80::4634:3d9c:c4a:641a%6]) with mapi id 15.20.9298.006; Tue, 4 Nov 2025 13:47:44 +0000 From: Antoine Bouyer To: libcamera-devel@lists.libcamera.org Cc: julien.vuillaumier@nxp.com, Andrei Gansari , Antoine Bouyer , Kieran Bingham , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= Subject: [PATCH v6 2/2] pipeline: imx8-isi: Delay ISI routes config to acquire() time Date: Tue, 4 Nov 2025 14:49:27 +0100 Message-Id: <20251104134927.318841-3-antoine.bouyer@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251104134927.318841-1-antoine.bouyer@nxp.com> References: <20251104134927.318841-1-antoine.bouyer@nxp.com> X-ClientProxiedBy: AS4P251CA0019.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:5d3::7) To GVXPR04MB9831.eurprd04.prod.outlook.com (2603:10a6:150:11c::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB9831:EE_|AM8PR04MB8020:EE_ X-MS-Office365-Filtering-Correlation-Id: 298aca99-b8d9-4fdc-8b06-08de1ba8bb2f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|52116014|376014|19092799006|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?8dyDjAwaUaUtdX5pweWLBUte7a7+?= =?utf-8?q?ax8hwx388vcvOsQPenUG0QfZUnHHkrQVAfXaDHkaTzBpgjFSxlDM4ygg?= =?utf-8?q?npZ4I540bMJPb1KhGAALL5tkmUHeT+wZxCj50OsRPLkFvq/iZL3qyAfS?= =?utf-8?q?i/7+/Zph7LGTMlQuE6P3/oFfmGXlcBjHvWW7pTGx8fjVzhuZksGaKPbz?= =?utf-8?q?gPLctBkh8Z7LZ8eLoh6qziqWK20oDKbT8fvKRpuf9ErzoIiYsXW8veds?= =?utf-8?q?FgOqaxqF/2fPsUAq3HMdT4MWHDPAXybaomXO4Fn87Zwgg4jp49eCnlGe?= =?utf-8?q?HFZSDKmI1RSpdbWwHgOUKiW6g4SxKrT4rbx6qBbzSVfAL102kJDXnlQr?= =?utf-8?q?T34Y4cwbt1W51qP5p3MJDRA9hBYkAnnvN5se9jpzMpmZtcV8pDY0jlEy?= =?utf-8?q?0Y4A5ZnSix7zWVg8tQNYaXtBQfN/gUozveH4r6/3u/dBEuIIYrI3slq5?= =?utf-8?q?JSonktOzuVY+pESizmqf38gm8M7rL4L/HLsHAHqKW3u6z0RfxxM42lw6?= =?utf-8?q?Ol6pdZyzIVS/AYbbAGYficmLUycfWzLHNxlU2Xy3tuHGl0xUhFno5MsK?= =?utf-8?q?BD/7yy1/uSc86BX/zXNlmBeWnIGgwB+HJRdx1d8FqIzkLRB5ABHoJiFh?= =?utf-8?q?etVe4CeX1w0WeD3tDVyaEA102+5RPm+TaljQvlvyaKxf0ub6C9R3dG8n?= =?utf-8?q?LWCl1Y5wKKP66BzPF8NPAVuns1HU9iRpfFvPR/AsL70J5L9Co8nvUDps?= =?utf-8?q?XIDWeFTdWEGxNTUP6jJW+CQaj3+YHH09QKp/lc+9QLaeZ/SeVE6v0EQF?= =?utf-8?q?hEK++bDpdnzmJjK6dJwgGVmpgIhabVuMQPqScj1ft8YEUKxBvwRqUd6v?= =?utf-8?q?wWTZdVoZV71KbN8oaU6tm9h0fSwMhZewhpm+mdaBXf181p9TGSCAvctz?= =?utf-8?q?7t1Fs6ROU+g+l3GgtIuVsga6r1hfyDXYHY1HKoi5XU6s01x4bRxZHhTw?= =?utf-8?q?H7YAe99Ki6wxlOwpqNG/W8MnhUJI8828BijUGgOfBtspqBrC6b/6v4Go?= =?utf-8?q?7PhjpwSPIKxREU8A2KFuwrzU7YEWV0K5U/m5AkX+xfI0jwRnqYrDUclU?= =?utf-8?q?uVzIPOfP/pM5RNogDvVC+5PTZBLoXnjUwFZErRbID/ylh+Hue3yLpnMR?= =?utf-8?q?23RfxMrYxDl+oHybFSu1Al7aLi4SlEsTEgPFMLWihmWKLvcI+oA0KLY/?= =?utf-8?q?/NwRgoHxR/qokKEd8U0bRAEJ4bxgC4apvlyD2mzKI10hY1c1jw4JEmzM?= =?utf-8?q?rVhAMt/fNAEioFvq3AYAbs11VWD5vyaXPhJmAaoSuVVSfHGQpLbxn17m?= =?utf-8?q?pf9nVMWg8b8pj5nTZ1EQflySJYo2KFmrUtffXNYCsAZV5Frmjt88fKdr?= =?utf-8?q?66rLrRXQFmg63EThqFrpQnKz06B2XM+PUI7DMRH2kmHyAhhAhkrLerFm?= =?utf-8?q?EPkg/RvAdSwz1s/LDdr4qwyE+y+mqoGtqAYRy9LwuIzMkSeeR3eHprnY?= =?utf-8?q?7hcZGE851gUtsqY2U21UiZldKrMzxO+w6MSD5+N48EUiH46pnD7D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:GVXPR04MB9831.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(52116014)(376014)(19092799006)(1800799024)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?tQ4xfL2G0NxOo4cF8UyzqSreC?= =?utf-8?q?h2FZYrbLZlh5DzCbuoQRLKqrFel9W/1j7fUu6X4Z//O9mCZ3Cmx6yaqg?= =?utf-8?q?ODG5WGwHYnSBD1QlumHBfsfZjpzkoRSk71ZAyJFSQ7+8Kz0pth6suzBq?= =?utf-8?q?2wRD+lq5l3BRAAFALi3c9dnWsBh+uartBBySP6ZasSHa7lJbJiX8FmUo?= =?utf-8?q?oDqOFm3OqqI9XFj/2sFV+IBJ9RsMO2giT+MoTit0R4ko2J8jmaYEuSCr?= =?utf-8?q?lY6HCryjCF6zL5KfBvA8z/7XkygrtfZeMBFk25b5HTP6wIX36maTa8KR?= =?utf-8?q?pkWd6+IzYLHGC+/4aAwiXvFzak7PnMXQv1+vDELThUZAQysTWQvRmR0+?= =?utf-8?q?7A63/IiqHs0boSQT2K4n14pxPqTkhT3jda2FL1pXFU1UdqPn0QGsNsxE?= =?utf-8?q?CFMUf8b+k43Umoz3MyBbtRAzF/GYfHqZepRn5XbFnHyB38yC1pDkpjpn?= =?utf-8?q?x4faET3R0cI0M61fb7k8vt1+NBwHluDTNwdl979hcSjzgAVCgrypNOl7?= =?utf-8?q?rzw15v9OMSVcMjW1B1f3MRXCTAdlgoiRGfZG4g5dC8dM0sXB9ugMZYBE?= =?utf-8?q?rVH3f+8PXA7cH4uT4muZi4JwlT98LZsRGshmfIBc5ovtjN4/Pz1wXG+V?= =?utf-8?q?2++E284vOk4DG13HhJb686NOSSgp148Kx4dwjE6BYNouhHJ85HA1tEwc?= =?utf-8?q?8BQCuAPwHv7QOylZ82BfXAQttUknVeFBcvsJfuAYmUQ/X+d3PA0jPQv8?= =?utf-8?q?CQbL3F9WYSseBUaEOrsB15tGs9jdzl+VhBJH2AHVmp+l78JSuGVSxHaY?= =?utf-8?q?bmnXp3ANO/X3JJZ8CdZrh1f5DhAnSswtDFW32YUxn6uC3S7bKvMzeubU?= =?utf-8?q?1zoFxAu9JG8pE/4pMnLlgXveDR/cI4GSWw0+aytCQX85S4mi7+/y6xuB?= =?utf-8?q?QiWofTiceXDEgb2w8sPAdiLuVXFFzX4EPyHkQjg01aiIqIN4SllJi5oh?= =?utf-8?q?9fYFAzkJydbCCGRlef3y5WMjtDKqwEgoKWVlHktxS2OIepm75AFinWGb?= =?utf-8?q?b2XJHoPcnvg5Ingmmp8+4X6SLKKFg8JcZxNsj+twacrm16fVK41Vpeh8?= =?utf-8?q?p5NGLTNNdBZHbowx2M3bNqxLRMkXMMEudtowsYgxlURu/Z2mrT7JUJ3Y?= =?utf-8?q?h5dfNsX5JrAB0dXLV7OxHN2P9cHZHyzaAo+VM/0E/f5L/cBta706Mtlp?= =?utf-8?q?n/7unjAIDJqDm/ArsMjsvP6BbA69s2DXPqdg/+g9Fl53yV5xVcqFEm1e?= =?utf-8?q?PVSzNZn7qZe6HrbkXYjiipWsgY01YItM5Fii2evZbEYGVYYp1eozkL8H?= =?utf-8?q?7zipDUOK9sIbi6pbIBmoKS59d/esZEo15duhuEZEEp1iRIp47k49enjl?= =?utf-8?q?58kqgs+czBKqOA8XpV64aUIlwku9Zo8fNcl0k2b6Y3khqrO6ScDZNNPV?= =?utf-8?q?JIbS0cGnFNeNl70tFBwmzEtL+TLAkZ3rJiaHlQJguGQ54HlrAyANNOKZ?= =?utf-8?q?eDyinZ4sigBY2SRKuC49D6tAkgpezjFhK51Ft2pLFPW0bNtfPZtjInm8?= =?utf-8?q?uIMNmDcMmOnwLdQVnBp3xfuhtnIN2E5wMUSUTvYNwbkPaJSRiZpqk0Cm?= =?utf-8?q?RjNCTZ61GW4/EhuHyPQAx8WBjLKmg=3D=3D?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 298aca99-b8d9-4fdc-8b06-08de1ba8bb2f X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB9831.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2025 13:47:44.5637 (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: iPy4iSAAOlq4O83uPtLWSSvtGuoRf0AtxH1VctJesD7hjR8UEysYzeGQo6mEbO5o1E6UnvgYyOsTZwjsgS/0xQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB8020 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" From: Andrei Gansari Fixes behavior when calling 'cam -l' during a live stream from a camera in another process. Issue is that multiple process should be able to list (match procedure) the camera supported. But only the unique process that lock the media devices in order to be able to configure then start the pipeline should setup the routes, graphs, etc. Thus, the setRouting() is to be moved to a PipelineHandlerISI::acquireDevice() implementation to override the default Pipeline::acquireDevice() function. Fixes: 92df79112fb2 ("pipeline: imx8-isi: Add multicamera support") Signed-off-by: Andrei Gansari Signed-off-by: Antoine Bouyer Reviewed-by: Kieran Bingham Reviewed-by: Barnabás Pőcze --- src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 24 +++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp index de09431cb9b9..9550f54600c4 100644 --- a/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp +++ b/src/libcamera/pipeline/imx8-isi/imx8-isi.cpp @@ -117,6 +117,8 @@ protected: int queueRequestDevice(Camera *camera, Request *request) override; + bool acquireDevice(Camera *camera) override; + private: static constexpr Size kPreviewSize = { 1920, 1080 }; static constexpr Size kMinISISize = { 1, 1 }; @@ -143,6 +145,8 @@ private: std::unique_ptr crossbar_; std::vector pipes_; + + V4L2Subdevice::Routing routing_ = {}; }; /* ----------------------------------------------------------------------------- @@ -950,6 +954,19 @@ int PipelineHandlerISI::queueRequestDevice(Camera *camera, Request *request) return 0; } +bool PipelineHandlerISI::acquireDevice([[maybe_unused]] Camera *camera) +{ + if (useCount() > 0) + return true; + + /* Enable routing for all available sensors once */ + int ret = crossbar_->setRouting(&routing_, V4L2Subdevice::ActiveFormat); + if (ret) + return false; + + return true; +} + bool PipelineHandlerISI::match(DeviceEnumerator *enumerator) { DeviceMatch dm("mxc-isi"); @@ -1034,7 +1051,6 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator) unsigned int numSinks = 0; const unsigned int xbarFirstSource = crossbar_->entity()->pads().size() - pipes_.size(); const unsigned int maxStreams = pipes_.size() / cameraCount; - V4L2Subdevice::Routing routing = {}; for (MediaPad *pad : crossbar_->entity()->pads()) { unsigned int sink = numSinks; @@ -1104,7 +1120,7 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator) /* Add routes to the crossbar switch routing table. */ for (unsigned i = 0; i < data->streams_.size(); i++) { unsigned int sourcePad = xbarFirstSource + data->xbarSourceOffset_ + i; - routing.emplace_back(V4L2Subdevice::Stream{ data->xbarSink_, 0 }, + routing_.emplace_back(V4L2Subdevice::Stream{ data->xbarSink_, 0 }, V4L2Subdevice::Stream{ sourcePad, 0 }, V4L2_SUBDEV_ROUTE_FL_ACTIVE); } @@ -1116,10 +1132,6 @@ bool PipelineHandlerISI::match(DeviceEnumerator *enumerator) numCameras++; } - ret = crossbar_->setRouting(&routing, V4L2Subdevice::ActiveFormat); - if (ret) - return false; - return numCameras > 0; }