From patchwork Tue Nov 4 07:56:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Antoine Bouyer X-Patchwork-Id: 24963 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 A8344C3241 for ; Tue, 4 Nov 2025 07:54:53 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 6C0FC60A86; Tue, 4 Nov 2025 08:54:53 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="Cx6FSBgg"; dkim-atps=neutral Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazlp170130007.outbound.protection.outlook.com [IPv6:2a01:111:f403:c20a::7]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 7A43E606E6 for ; Tue, 4 Nov 2025 08:54:51 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tuqmwDFlW2FQ3ztsdonSyIiZe3K67GsSYAsVKnD+0ccCyHYTrAmTsvDUYn8nAbuAchQLv3x2VWBKSAdEDO6lTGXqMOyyQFbdz1zYn9+liFYlKFz2jC58xJ1AwpdcFt2VU9zoUNYu1cL/4P89OSHiuCgX9VlVsKRc5o0mAD1CgQJ+MFy7IZRdHGfEcuf66KdsK7hdbJWO6yczS5e0unUaSkysb2TR0yhtfJFeweUvCS7+tdA3GDyTXLDQTFCeMJlM6DmVsczra7Ahg68QBrd874BWAO+YQCAyH3mF0D9W2TRdYNR2dCowInGsnRWUFUKcWkzaKO3hZM+iBXD0uAVhLw== 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=z1eHOI41+8hbpCxIEVC0i1vAxB1l4Cbrzi5gnyIH/yo=; b=x9KJ3NDjNQioTK09LIFqfZqxihdj2bzgL42Nx6g82dVvGEHu5zhDCViSYQ00V5nm+6Q6DQ2qN3/RldHMWJqnX3iAIW3nBwzE0Lza7D0DQHD/AQehh8HxMcgRJ3sq4Z4+F4wP1HQqc2xyp3VukyR/0sTsqHytCVAim3Wv/nrBm2LguhZCLGPh5lXgSU596g06THQpdUXLFdzP2emaUnPU955oMJ/1kNhULBT3nnJwM4MMCqUBSy0pHe+SBumgdnmZL2amC7Samr23yAwe+LLfHeqK+qBF//SAOORPIyC3yRpU34XhrNuQ5yiVVWIPEIdD5y9Yrrwe38h9TqzbRbCIMg== 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=z1eHOI41+8hbpCxIEVC0i1vAxB1l4Cbrzi5gnyIH/yo=; b=Cx6FSBggRyf9UJAlnhdgsrK5tSNclCYXFFFoUb4kIWszhJiDaqs9yIs7SppVeCplHEOImngOr5dm4suBsvV76BRidD7MXZFKaWCXwpCAAAs0SbvnXpfOek19hNJeurFPoxoMJl9aCKyCrOuY+JQbRL3V4LL5mxziVoN6E+6BhjYwfYUWt1XT88CeKozkYvPpQxd3Z7DJ3fm860+qHaCtZvJCB1LT6BNSZjLDknyVFDzd0LgG7woLQ62wMWuEgRjzLMu9vDqRrC1wtVyDtdkUL6fXH9Q5Kfy8eApVQvdsaPbGRFg5E0IuNLuLhN1yuyNMZ/rVvu5BzykmqpWW5T+gOA== 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 DBAPR04MB7448.eurprd04.prod.outlook.com (2603:10a6:10:1a6::6) 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 07:54:49 +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 07:54:49 +0000 From: Antoine Bouyer To: libcamera-devel@lists.libcamera.org Cc: julien.vuillaumier@nxp.com, Antoine Bouyer , Kieran Bingham Subject: [PATCH v5 1/2] libcamera: pipeline_handler: Add accessor for useCount_ Date: Tue, 4 Nov 2025 08:56:08 +0100 Message-Id: <20251104075609.94310-2-antoine.bouyer@nxp.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251104075609.94310-1-antoine.bouyer@nxp.com> References: <20251104075609.94310-1-antoine.bouyer@nxp.com> X-ClientProxiedBy: CH5PR02CA0015.namprd02.prod.outlook.com (2603:10b6:610:1ed::9) To GVXPR04MB9831.eurprd04.prod.outlook.com (2603:10a6:150:11c::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GVXPR04MB9831:EE_|DBAPR04MB7448:EE_ X-MS-Office365-Filtering-Correlation-Id: b7d5ee4e-4de7-4aa2-42b8-08de1b776d96 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|366016|1800799024|19092799006|38350700014; X-Microsoft-Antispam-Message-Info: RNAYq2z6SQpCCSxoA8YdHWjOsOgGnykHYDC95AOp4RLI4MTt3NpcM52d07j0JDm7W6WUWiJnKzZcS7UpUZByCs6HJIRjKd59dZ7qjJbIy9thRW1i02c1IJY80nDHZ8/dTodwnHkX5mgEYFNbaVw98eBZ8RaqV4zJcSaH44WU8TD6vhLmeNq4lPRkW7tC03QGM+LVQ611HgtE+VAQwoWagQbl5+HkYlDqdft56uhtiCb/Z+AWMiSBAzu6Q7flpI2hGyKDpDdW58iT/8u13X3TC8MWtKnPqR/gDo60isNSbrtWyOzEGf8pc09hn2c11/XjPjM7/gHDi7qMRGGscsucDrnpEn/g+VWX5CnhWfnZw3rYNg42EGZH4XCSm7W+E+jnNOYXx+w7/1bE/lrVJ9nricOKaKXD4kQQQaX2CgA97oDIcKHN8MQuw1MrYmq39FLTMrysG4xQsfaqoweqb2YPuKL477lvfNXaSMb0YuzXmsgvTq5+2dUJmeq56JUO7nol0lxYEFTAhXiuWxwDb1RpyyO0VMzG31KRUUaj+HHMF8XEqPJXyRUbekvjHohIwwL9nK56QYO6j3avgeUYohRcD7t5Xi111zp4cyWvHrQFG9/1NRJYvZXvFTJXf6iqOXwrK9r+iWKys0elzCmixMraptipKg92ilKcjEsU8uVBNn+vT/1KgnZ3EtZmClAqpXj3+RZc8lAe6tyT4WZ7lFFe1D5eU+575oBAUsz/IzXrHlksf7kiOnirMpRyiJO7yY7Z/jQcgZ2bor4df2hjREV34TTX+q0nfeYfrGYQCWnhnWJ9KSunI5IjDd4DXaNGc+QIi1r4BD8bElMkzui23sSAhABcu5zNCZIRZkTiQEmq/LnZUUgtua1wy9NdOKJh7FUoOK2iaLG/tdUV8RosgB25AAD6BsyrhUBGzbuAWjEfoibUDAzS1jwHlvw9U+J+sXySl45HyuH35JrrmwS78gC/GWTRbYLQSV6xycVyJr+YvNIMQPt1MAM20rR/KafvcJomlViNoz12E1BDrzN5MXJAQVROU2E8nqHEjYWlL0Dl8TY1r06P7aQZqMvDFEj3qeyjVdc24zUT0t3RcjwYaA1cYtJ/hvkvI8ruxSkW9Il+EwuXIaulo/Z3OQfh1/4U9juxA3mgyWc5Aaa9hng88kULCtsdic79gCto3f6qyqaKbH8hG5iOYc1AjDkFDci3hAp7wKOo6GDf5DtsRAZWrOOReUlpEjeMz6gp1PMr6Gvr43UrIQmoeaZMJ53L3RSTO53g7eRCm/SqvcC7QlI4MsOlY3sCbhCfB4feG9gu9Qd/s63SreAYmLuDtPYvT8jm6LQ97qMlsORVVc+ZaGHUX/kmR19jQgVMPD31L0FbdcnJf0IF0zcC9cApmjG3M53GdGRJS/28CjvSnn66gc6nTwHSDiFRtbkVDiCX7urZW3HqTd2STNE2EyrYXvXI+kQ8BuvPUyww+A/ZT42ZCN6Hxra0+ZjWvRZieaUzJmqUfnwX5P+CZihoBwC/SBeHLcwAteG3 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)(376014)(52116014)(366016)(1800799024)(19092799006)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: c1rwpGNGPDrVhJUSI+LvT0vpNBuLT/Xc03XwuQSVVOoS8JIZYgiuk8pJ6NUMcO45LWz/AYfKbCBwEycfOrkmT0+/ZOVNnd9iQXrYEBKfBJEnSefIdCI4LrCmGSIjSA5F/l2uut/zEbb/fsYfR+uGlLk9Heyeb3HcjCqgkdKncuTEzYLy72q3xitpuDrhyUL9TkACo5RInbigKaWMniu2b0B/vPx1gYxmI42vQhxfzhm54OSg9cILK0Y9Ug0vL/Dzqbx9pK2nszhV6yX/IC09Qlo8P2Mkvos7+6Rc33Zi4fdWCggOwbmZBdsIyjbbeshUcQW+skVG/46hcwX9u8EAcB5janP5WcBzBKxL2Q6s3g/rGLwEjDE/nEavktgAvKy42aoR9cpe6CBZqKHhC6BpFRMZVjpAQ5TKCkWdbFNrBnpxsZAHsYXMyiiklWjfyqSHj1K1dFmB0zi6lmMeKePQ0Ej5Uv/iR/OMvKVLnFlsPGHdVtevlGTDHYfrqSHAJYdl6cLl4QpO7JLzpej8U5tGwy99vF3g88Cmv+xBmvNeRsho4wa38BgFyH7rqLg/cwSTnH6ok++YE8nca6PgZolYOrN3MJbLbsH9Qh1YjD+CKRWy938NP8m8NHnoc92TSu0y/LXDFOs227lH55kfGTsxMNefwFSk4qZF3dysdCFmwdeQpYaGGtLFurwL+AkJ3iSnZlDTtUjjRcFipzMNsdjOSeDtbmGh6Bb+uoXY0wIfat/ViQ5opQuyudlwA5y4Lkaoq8sT1l2Bw7DmTJcwRpdjnFrTGyu4vqQHJEHlvMZPz/r8vKf1X0ONB5n19tbsnuF5u679d26plqKnZm56VMitTVvZSLiYJUPoenVYVCy5bcTqPURR8C5R6QyeIaSCIh1b3i95FX/akAsnJDU5pV42dr+u17ivx3ZQVnozHjxnkwltfWxji1VSx8QAf3f1/Ebhmmrf4mApO+pg7CDnjsH3mGrEC2emA35S0quZBMiMF22u4tZqYWAn1slz4CoilzRjwQvLK162kFycY3ui/IjtHMYmyd9ONx6UOqGOp6oWRX/xgq3Z6/AvBMqI43WiixRpEDZFOFubmVR/m6BxA/yIdMtgReccCMeSfKcIF6cHRepZv51J78ukoQbru/shnQj11LEQ6dzxFgkjdBRNvZlzZItNrRDy6Pn2RnMe1MR/4WeLFiZKqpw+w8YX6qNp+IWXiiSr4Ka16DVKGeWZ7slu9zZuP1i9CbyVZ1X0sWW57PKW5su5zpROemdvlnIMG3vQKmt0GFjICZUil5Zl7zslJCGhuHdR+sbi5Axdwsl6e882PdoRR2L0bNbevyIP7VXtir+UwnWhBwXyiUaN7SPxbLOraDZIBGtK/ZjV0aedhqjEf9btex+fYNqMZAF2p3w9wpf9c6l3UmRW63HXw0OhWOYM8ubf02kFaC5R80SoD+Q/F9wTHYJFg+Gg/qnWdnw0HvDH7/XnvZ0hCte4IwUSX3YoOukMv6o++FuOZ6m/s+WfZ9kciJLRwtMGxZM8QIWlgiK+DbEBGggg7a4umqf1C1sNwH0Sti/zEbV1I3wlYwrxTIJkt+AjLJGi4PuVmI2nz4slpsRUPgGrulRYl54ypQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b7d5ee4e-4de7-4aa2-42b8-08de1b776d96 X-MS-Exchange-CrossTenant-AuthSource: GVXPR04MB9831.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2025 07:54:49.1470 (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: qqcVxtsxR796a7jJf0BUaBL+hGMnEHvIcvhWxk6rb6TKDZjIdZqNaAOyLupqqYTKTKl3QMaBMfgWr50NzOYmFw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR04MB7448 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 | 14 ++++++++++++++ 2 files changed, 15 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..0279c21b691b 100644 --- a/src/libcamera/pipeline_handler.cpp +++ b/src/libcamera/pipeline_handler.cpp @@ -168,6 +168,10 @@ MediaDevice *PipelineHandler::acquireMediaDevice(DeviceEnumerator *enumerator, */ bool PipelineHandler::acquire(Camera *camera) { + LOG(Pipeline, Debug) + << "Acquire camera " << camera->id() + << " useCount " << useCount_; + if (useCount_ == 0) { for (std::shared_ptr &media : mediaDevices_) { if (!media->lock()) { @@ -214,6 +218,10 @@ void PipelineHandler::release(Camera *camera) unlockMediaDevices(); --useCount_; + + LOG(Pipeline, Debug) + << "release camera " << camera->id() + << " useCount " << useCount_; } /** @@ -811,6 +819,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