From patchwork Mon Aug 17 13:40:35 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 27827 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 E5530C3264 for ; Mon, 17 Aug 2026 13:40:53 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id B01096826F; Mon, 17 Aug 2026 15:40:51 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="f7K6x3lB"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="JNcu8iDZ"; dkim-atps=neutral Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A3F1768215 for ; Mon, 17 Aug 2026 15:40:48 +0200 (CEST) Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67HD6JMc2431665 for ; Mon, 17 Aug 2026 13:40:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= LpVaJ8XyDdY3Z4NU4YyIFIuQGALht3poswTPE/FwpFY=; b=f7K6x3lB0C1z9ZZK INXqRAokgzo9KnvQv6Tdd8oCetnDb05fMcS0TJJMsNhYo4Pzc8VBC+QCogNtIopz aRKHXEDykhFMvqGwc0uEp4btxXddzixMxgJC7CNYPtbSvop2VxV6l8NupNQboKnZ DCZ7Tww7e9iEAoqTuIYGHRtnWm/jHaX5E9XiKkUvk1aq9EkdhQdgU6+7zeHimHa9 7CzocnSTg5/eA73DcwNYgkujydIuM18jJ8QWpo3fhStGhkBQ6HxFe47U2QCNhkY5 2StFcp9DRKu5a9VquIJ1O5O97bsQd1A+yyRE4f6/jPBzjE7ve0G3XNA8QLLeQg5n QmsYSA== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g3wrehfdr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 17 Aug 2026 13:40:47 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-936d067836eso346975085a.0 for ; Mon, 17 Aug 2026 06:40:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786974047; x=1787578847; darn=lists.libcamera.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=LpVaJ8XyDdY3Z4NU4YyIFIuQGALht3poswTPE/FwpFY=; b=JNcu8iDZt3+t3BZt/5JDpqFcPiLVyPSBrWauBKMd05j9/oZuv0SYPAorFZ3k1oylpc SfDl11CKQMonYozDKuWHSuvgdjDnkSvGg6p2vwqDCCR8deiED8BTRlWxaOMqEEp/KwCQ nqXoX1shmd7WV/RqiO6eQ5ICbMYp7Y7Z48IWVJxGMIqv0IHcv4mUzKKpTo8wLU93SYWD NRSBgbRiXE4VHnQOEPLde4K1WDoPVH/3bWatmxvOHwfA/jmx36HTFu8Zy0STKzUSftii ZRdMtt/UNgMvyR0wpEobspTU84wD6kGqWfhvjGbEOU5RBA3amFKifwn24OWyqwLBw0dG WQfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786974047; x=1787578847; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=LpVaJ8XyDdY3Z4NU4YyIFIuQGALht3poswTPE/FwpFY=; b=V+JLTbkjCA8bER8WhiukIBZn4lXcCH6tcaumXnlOodHcTYW4iBSFTGRs1sUV7+F7vB bCS+Qs7KhqLlb5K1StW6Vmodqla+VF8l6cYA2xvHQfDff4QZh76rWnVGHKJ/BRaAFQbu wp0tRH23FkzLS/WFV+Chx8IuwsWZXZcFMUZp0+Sw4b59edbbeO4ryVZT7Cm2Kb48HCfI 0jvmfMa7qKkwJ7fW6mH/5Sn4pBldW4o8h9/O4LLYXDXKH7P/dcUnCjQ2BKrNmgTOu1LA qdKNEMd8V8+PYAHrmXsrX/7Mfy+ZM3LZJc4ygJH3eDv0QFMbLt7CGpgmX6gqUCIQhCIL xsKQ== X-Gm-Message-State: AOJu0YzZQ6AzRI0IiDKsuyDDS29Et40QgSKyVafPRZVW4MyJQvh75eWW 9KNl62FIP+m9nOInS2ygWDBtZLSQECsZOtPIZH5SSNRGZ4GfKuh8Swx1qABgvGWni/w9x6K87Ao JdBtSev7BF0zAZksAhZSdcvbyobrhuDEoMmI6qxxCxSfzt+75mE3BCS5bTNxQ7dgr6dOlGT225L gk/NxvzrjO X-Gm-Gg: AR+sD137wR6GBcAg1K1M3xyW5IxVdVrpx7otyNdwzTVsgaQuoE3jZKbqpPFjYgW8MfV uYJPg+HKxIgTFp0YKgjN1DKDabZPRatjhmZHSiRiggwJdyWST6oSy8vbvAxDiOD1R4mL5feDniN I9JgPPjQEtG9de8LEkyPNebakIYwzcVV7Mdpx9oSN79DcOWqc/wlHEOtZYycMyts/iWUadQ+oiL 0HrI8rVdsqOa2TDHc7d/huVvzyrj7u2Ru4TNqBmArbMjvHnObFrSfvWcOLrIlbF+idcfcpt3vD1 z3PCkCtCi7chWKApImo4f0IL/8RNcr9qnC1UEqkmt7z59CRO1tozRXRfpb8IZkhecQkXslsrhQT 4kjprGP1MxLWub53l+KP6cFP1XyB0 X-Received: by 2002:a05:620a:414c:b0:92e:94a7:16e8 with SMTP id af79cd13be357-936d2287b14mr2407692485a.15.1786974046425; Mon, 17 Aug 2026 06:40:46 -0700 (PDT) X-Received: by 2002:a05:620a:414c:b0:92e:94a7:16e8 with SMTP id af79cd13be357-936d2287b14mr2407684885a.15.1786974045725; Mon, 17 Aug 2026 06:40:45 -0700 (PDT) Received: from t14s.vakwerkhuis.com ([78.108.130.194]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a3d8517181sm772179a12.1.2026.08.17.06.40.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 06:40:44 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , =?utf-8?q?Niklas_S=C3=B6?= =?utf-8?q?derlund?= , Loic Poulain , Hans de Goede , Kieran Bingham Subject: [PATCH v8 1/8] libcamera: Create IPA by name Date: Mon, 17 Aug 2026 15:40:35 +0200 Message-ID: <20260817134042.277168-2-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> References: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Authority-Analysis: v=2.4 cv=FqI1OWrq c=1 sm=1 tr=0 ts=6a830f5f cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=rrvG0T/C2D967D07Ol03YQ==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=P1BnusSwAAAA:8 a=EUspDBNiAAAA:8 a=rl81jYYfPRFGC34jM1YA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-ORIG-GUID: 46XqesBpyc8A1KmSzozV9Oluq305vC85 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfXw7hBJkBNHngS UeBAF6R5eBFi+g2duKudHq+3sNJWGol0W5TIqLrXXilpYFpTtjQUQUZpBopT58crtwZ3uO9hVIA EekY2rqjEFQtnJW9RlnPaFliCts1GYXxhen9zKnSvWmcMAs3flX0qA3/UGRSi1hPH9whlWadvBJ kx57hMtjbw65+/Ur1vMBkLyl+e8sBS/HXZ6lcRnMQS/EjEVQ1hLe2j3d9EBmDmIttEL1IPRrSna BTskHmA28iljQYRLCRTb2u2yuP+ZjQaSR79EgOg8kWCiEYfc7CKkVx9BhhE4XWANSWmmRBTovfx irH2XoEviy+kkL3LvRd6cW5PtjZPriO20DWq/lSNtM51/aKeO2Rxfr3cAORnKy4uBMBRCh+mRbi RjdytDpCS5zBS/VVeSLgHttFXw2WDRuiN0nprKtvENxoNOLM4OC/cYmkHqBTj9fsiig2hB4cnIw BuinD4pYGTjdETe2uLA== X-Proofpoint-GUID: 46XqesBpyc8A1KmSzozV9Oluq305vC85 X-Proofpoint-Spam-Info: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX2lEIuz0Mlzh/ LzkFZZz/4fsxaF/L9KZnypDl4vHhc86bhnqMmA32209b61B3YpiTz2zOGt+Mcm/DDs1AQYNt06N dr4LgEMlkbKi9RnlXaTx8Cmi/mdMLoE= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1176, Hydra:6.1.134, FMLib:17.12.100.49 definitions=2026-08-17_01,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 adultscore=0 priorityscore=1501 bulkscore=0 suspectscore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608170104 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" Currently createIPA() / IPAManager::module() assume that there is a 1:1 relationship between pipeline handlers and IPAs and IPA matching is done based on matching the pipe to ipaModuleInfo.pipelineName[]. One way to allow using a single IPA with multiple pipelines would be to allow the IPA to declare itself compatible with more than one pipeline, turning ipaModuleInfo.pipelineName[] into e.g. a vector. But the way ipaModuleInfo is loaded as an ELF symbol requires it to be a simple flat C-struct. Instead, move the IPA creation procedure to be name-based, introducing a PipelineHandler::createIPA(name, minVer, maxVer) overload that allows to specify the name of the IPA module to match. Pipeline handlers that wants to use their name as matching criteria can continue doing so using the already existing PipelineHandler::createIPA(minVer, maxVer) overload. Reviewed-by: Kieran Bingham Tested-by: Niklas Söderlund Signed-off-by: Jacopo Mondi Signed-off-by: Hans de Goede --- Changes in v5: - Rebase on top of db998e618aaa ("libcamera: pipeline_handler: Add createIPA() function") which moved the createIPA() wrapper for pipeline-handlers into the PipelineHandler class Changes in v4: - Rebase, change author to Hans' new email address Changes in v1 from Hans' original patch: - Slightly different approach addressing the review comments on Hans' v1 by creating an overload for PipelineHandler::createIPA() that allows pipelines to specify the IPA module name. --- include/libcamera/internal/ipa_manager.h | 6 ++--- include/libcamera/internal/ipa_module.h | 4 +-- include/libcamera/internal/pipeline_handler.h | 9 ++++++- src/libcamera/ipa_manager.cpp | 8 +++--- src/libcamera/ipa_module.cpp | 14 +++++------ src/libcamera/pipeline_handler.cpp | 25 +++++++++++++++++-- test/ipa/ipa_interface_test.cpp | 2 +- 7 files changed, 48 insertions(+), 20 deletions(-) diff --git a/include/libcamera/internal/ipa_manager.h b/include/libcamera/internal/ipa_manager.h index aaa3ca37c..7ab193112 100644 --- a/include/libcamera/internal/ipa_manager.h +++ b/include/libcamera/internal/ipa_manager.h @@ -34,10 +34,10 @@ public: ~IPAManager(); template - std::unique_ptr createIPA(PipelineHandler *pipe, uint32_t minVersion, + std::unique_ptr createIPA(const char *name, uint32_t minVersion, uint32_t maxVersion) { - IPAModule *m = module(pipe, minVersion, maxVersion); + IPAModule *m = module(name, minVersion, maxVersion); if (!m) return nullptr; @@ -68,7 +68,7 @@ private: std::vector &files); unsigned int addDir(const char *libDir, unsigned int maxDepth = 0); - IPAModule *module(PipelineHandler *pipe, uint32_t minVersion, + IPAModule *module(const char *name, uint32_t minVersion, uint32_t maxVersion); bool isSignatureValid(IPAModule *ipa) const; diff --git a/include/libcamera/internal/ipa_module.h b/include/libcamera/internal/ipa_module.h index 15f19492c..a0a53764e 100644 --- a/include/libcamera/internal/ipa_module.h +++ b/include/libcamera/internal/ipa_module.h @@ -36,8 +36,8 @@ public: IPAInterface *createInterface(); - bool match(PipelineHandler *pipe, - uint32_t minVersion, uint32_t maxVersion) const; + bool match(const char *name, uint32_t minVersion, + uint32_t maxVersion) const; protected: std::string logPrefix() const override; diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h index 6922ce18e..b60c07b13 100644 --- a/include/libcamera/internal/pipeline_handler.h +++ b/include/libcamera/internal/pipeline_handler.h @@ -76,7 +76,14 @@ public: std::unique_ptr createIPA(uint32_t minVersion, uint32_t maxVersion) { IPAManager *ipaManager = manager_->_d()->ipaManager(); - return ipaManager->createIPA(this, minVersion, maxVersion); + return ipaManager->createIPA(name_, minVersion, maxVersion); + } + + template + std::unique_ptr createIPA(const char *ipaName, uint32_t minVersion, uint32_t maxVersion) + { + IPAManager *ipaManager = manager_->_d()->ipaManager(); + return ipaManager->createIPA(ipaName, minVersion, maxVersion); } protected: diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp index 41918e4c2..b709a024e 100644 --- a/src/libcamera/ipa_manager.cpp +++ b/src/libcamera/ipa_manager.cpp @@ -248,15 +248,15 @@ unsigned int IPAManager::addDir(const char *libDir, unsigned int maxDepth) /** * \brief Retrieve an IPA module that matches a given pipeline handler - * \param[in] pipe The pipeline handler + * \param[in] name The IPA module string identifier * \param[in] minVersion Minimum acceptable version of IPA module * \param[in] maxVersion Maximum acceptable version of IPA module */ -IPAModule *IPAManager::module(PipelineHandler *pipe, uint32_t minVersion, +IPAModule *IPAManager::module(const char *name, uint32_t minVersion, uint32_t maxVersion) { for (const auto &module : modules_) { - if (module->match(pipe, minVersion, maxVersion)) + if (module->match(name, minVersion, maxVersion)) return module.get(); } @@ -266,7 +266,7 @@ IPAModule *IPAManager::module(PipelineHandler *pipe, uint32_t minVersion, /** * \fn IPAManager::createIPA() * \brief Create an IPA proxy that matches a given pipeline handler - * \param[in] pipe The pipeline handler that wants a matching IPA proxy + * \param[in] name The IPA module name * \param[in] minVersion Minimum acceptable version of IPA module * \param[in] maxVersion Maximum acceptable version of IPA module * diff --git a/src/libcamera/ipa_module.cpp b/src/libcamera/ipa_module.cpp index e6ea61e44..c89887954 100644 --- a/src/libcamera/ipa_module.cpp +++ b/src/libcamera/ipa_module.cpp @@ -462,22 +462,22 @@ IPAInterface *IPAModule::createInterface() } /** - * \brief Verify if the IPA module matches a given pipeline handler - * \param[in] pipe Pipeline handler to match with + * \brief Verify if the IPA module matches a given name + * \param[in] name The IPA module name * \param[in] minVersion Minimum acceptable version of IPA module * \param[in] maxVersion Maximum acceptable version of IPA module * - * This function checks if this IPA module matches the \a pipe pipeline handler, + * This function checks if this IPA module matches the requested \a name * and the input version range. * - * \return True if the pipeline handler matches the IPA module, or false otherwise + * \return True if the IPA module matches, or false otherwise */ -bool IPAModule::match(PipelineHandler *pipe, - uint32_t minVersion, uint32_t maxVersion) const +bool IPAModule::match(const char *name, uint32_t minVersion, + uint32_t maxVersion) const { return info_.pipelineVersion >= minVersion && info_.pipelineVersion <= maxVersion && - !strcmp(info_.pipelineName, pipe->name()); + !strcmp(info_.name, name); } std::string IPAModule::logPrefix() const diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp index e7145c1d4..25fc11989 100644 --- a/src/libcamera/pipeline_handler.cpp +++ b/src/libcamera/pipeline_handler.cpp @@ -836,11 +836,32 @@ void PipelineHandler::disconnect() */ /** - * \fn PipelineHandler::createIPA() - * \brief Create an IPA proxy that matches this pipeline handler + * \fn PipelineHandler::createIPA(const char *ipaName, uint32_t minVersion, uint32_t maxVersion) + * \brief Create an IPA proxy that matches the requested name and version + * \param[in] ipaName The IPA module name * \param[in] minVersion Minimum acceptable version of IPA module * \param[in] maxVersion Maximum acceptable version of IPA module * + * Create an IPA module using \a ipaName as the matching identifier. This + * overload allows pipeline handlers to create an IPA module by specifying its + * name instead of relying on the fact that the IPA module matches the pipeline + * handler's one. + * + * \return A newly created IPA proxy, or nullptr if no matching IPA module is + * found or if the IPA proxy fails to initialize + */ + +/** + * \fn PipelineHandler::createIPA(uint32_t minVersion, uint32_t maxVersion) + * \brief Create an IPA proxy that matches the pipeline handler name and the + * requested version + * \param[in] minVersion Minimum acceptable version of IPA module + * \param[in] maxVersion Maximum acceptable version of IPA module + * + * Create an IPA module using the pipeline handler name as the matching + * identifier. This overload allows pipeline handler to create an IPA module + * whose name matches the pipeline handler one. + * * \return A newly created IPA proxy, or nullptr if no matching IPA module is * found or if the IPA proxy fails to initialize */ diff --git a/test/ipa/ipa_interface_test.cpp b/test/ipa/ipa_interface_test.cpp index 271c4e2c9..0b01a396e 100644 --- a/test/ipa/ipa_interface_test.cpp +++ b/test/ipa/ipa_interface_test.cpp @@ -99,7 +99,7 @@ protected: EventDispatcher *dispatcher = thread()->eventDispatcher(); Timer timer; - ipa_ = ipaManager_->createIPA(pipe_.get(), 0, 0); + ipa_ = ipaManager_->createIPA(pipe_->name(), 0, 0); if (!ipa_) { cerr << "Failed to create VIMC IPA interface" << endl; return TestFail; From patchwork Mon Aug 17 13:40:36 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 27828 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 B9F94C3264 for ; Mon, 17 Aug 2026 13:40:55 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id E18096828F; Mon, 17 Aug 2026 15:40:54 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="bQvx+PrN"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WaxayJB+"; dkim-atps=neutral Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 58CDD68254 for ; Mon, 17 Aug 2026 15:40:50 +0200 (CEST) Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67HD6DMC1193726 for ; Mon, 17 Aug 2026 13:40:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= XF4Z5r1ndQnMtmFBq1N2e98ElZtjBKzKDKMicoKapmU=; b=bQvx+PrNXGBl1ziQ 4r6hd/R2PmGTi7qgk0wXv59imh/7WiQwN7sv1xbK/AMxuRQCJBBXO43J2mbmJ2Pj yRL4fLl+ztHOY+pdhsMMNjhlVWaS0ft6g8p+GxeEtkczlsPpd4h19WO5Kg0RPkSC gJtpA/ymZkaJz0rjzw2m7E6UNvZmI7E0J5UI9Jtd1P3nfdFDLuAvrjiOs+y1C/LH KK14F8eF2NNmj9FcaK3HmshPr7bpFbI9RriAB/hVWl+nt/zzfJeQCav3F+85hUBP bKCF4knd2K1pTWkRDqd/OWDlw+XyTZtS3MO2fR6YDdVuCEf4LTn8zZR06z84jVtT 5+70/A== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g3wke1gxy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 17 Aug 2026 13:40:48 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-92e62e3459fso315009185a.0 for ; Mon, 17 Aug 2026 06:40:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786974048; x=1787578848; darn=lists.libcamera.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=XF4Z5r1ndQnMtmFBq1N2e98ElZtjBKzKDKMicoKapmU=; b=WaxayJB+FpbjA/tZBHeK9YFtSIrf1dj+wDQ3yL/aKFgzghrWnE/cNuJFdYsClnOiWa g92kj2XUW9qiI+Z8fAie538ta3WcERthmSguu8pGIytseUQIsonitQKJ9IusA/ZCJ4Ed k05PSv1xpzP5AjNaJbh2+c7JYHLjzD15iCKp0N7aCCO95U0Iy7LpYHzriVOzffrsa3Av iqBn4562s3bUoBDVVNT+t6kBpxRKGYNNjf95JJKVkkHuJ8A81F6Sta8mmCeXnwVV5vuK p6JZkMwGS/WsCFzvoBoW455gC2QpoH4gnsltEd088fZLq5X7SLP5TZqAeorIUzyyQQP4 CvXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786974048; x=1787578848; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=XF4Z5r1ndQnMtmFBq1N2e98ElZtjBKzKDKMicoKapmU=; b=AsbbXV9iV2j/Rtost92+YUtoQp0H3Pi0coaUcPq1NrF+vrmIRHD57vzHkwMukMCycM qmWvda4eH/Rt4/v+T6dZJzsHB+ZlkZuPOM/s/vOAOb/ze9+ff1rPVnYwSogVrb9i7Ie8 DAajihsEepOsoPl4bq+tmNFfQVqTPYZtArjnyK8Qw6zcBid5OW2pMu+X7UAl7c7y7Tii t7WhF5Up1e/MSrZeDIF37pWUX3X3Mh5lytgr07WBc5r2Ed4aVvj5EYJFSJpJu63ytoer hb2wzpIHSGRNNzSlIV88YDIA6EQtovn7VNuRoO65TvWCypduJeMDrVZW2dJRyKYhC18X ZvXw== X-Gm-Message-State: AOJu0YziqyNMmgoAE8w+b9b9tcqyOQB5cFFC6pN+C13p9FgjrxpTAeMl N1ZubsPGjRwoGi/hs08QKVvVrLDY92jsiqITff45EX4sdVM8EN3Dlydj4LaH7NeTvI/eiRpIIlJ sx/xmKd+o4rzdDsDNyBQF8h7LAN9jWSRqWAIUJH/Cvk5JsIIqwOwn3OFYNSpJmI33Yjnfw1Z1t+ BuWuY47wak X-Gm-Gg: AR+sD13GpB+cI4jzpJudT/UY2csK69KSHtd6fFlR6mJS9gBrqa2Fm3fv8fSB+GYusMy w4giPUhjOBWtbu/Emcz+UwozuaKIA61KVwujP6jmfJUts9Qu3+oT85Q6MgOIHeeUxCEBOCpdr+4 t2PgRuctlQMW5ve/SYHWtR8mzENchPUZnN7AYkGSEvi2RH6Z22uo3pB4SpdrQyP8Jd5DFzlRYQv An8nxg9AKuWcf81sh9XhWJS4ah2yiB9tOXfPkzt56HDn6B41lfooCNybVmM9o7kMoEc+PCys5yi Norck6gTSkze+LNcgdVR561qWpcc3B2pUE6AIOaAl+f6dBPHV1Xyrebkp9HMY/dwLI/sNtKWX8X sdYiJCvvuRipqvkQsVMwS8K2XqxtS X-Received: by 2002:a05:620a:40c2:b0:936:ea40:6ca2 with SMTP id af79cd13be357-936ea407327mr1313073785a.39.1786974047802; Mon, 17 Aug 2026 06:40:47 -0700 (PDT) X-Received: by 2002:a05:620a:40c2:b0:936:ea40:6ca2 with SMTP id af79cd13be357-936ea407327mr1313068385a.39.1786974047329; Mon, 17 Aug 2026 06:40:47 -0700 (PDT) Received: from t14s.vakwerkhuis.com ([78.108.130.194]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a3d8517181sm772179a12.1.2026.08.17.06.40.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 06:40:46 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , =?utf-8?q?Niklas_S=C3=B6?= =?utf-8?q?derlund?= , Loic Poulain , Hans de Goede , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Kieran Bingham Subject: [PATCH v8 2/8] ipa: ipa_module: Remove pipelineName Date: Mon, 17 Aug 2026 15:40:36 +0200 Message-ID: <20260817134042.277168-3-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> References: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX7D+6EtIlkjm7 fUQLRB0ZZpmbioUBDViZ5bK03QYTE+JrvvS/jx8QCayvLfdI/dtgKh2g6lfUk34ukLpNzJxPXYS fRflg5We63nVrpZPQGzyP7paYhDZo3borrm3hPt9x+Er3N3u9/bEAgtUf/+vLb4/AXfOmWee4fg 2ZfzriMNGGWTE6iobX7lhZNcQ58w6lnxgGm+Y4FAqq4yP0YirUb7FKRGjuBSRg6byjitZgmdQn0 3fIqfXZqg+cDQ3/BcrAjfpKDkB3NRglAaCaR+Hb9t6SQBN5KRC1gjdPT/y/BIGnYv3Y98P5Wpk9 ZmEv+ps/4S3oGJLQgmQ1ftuSGsur6C2jDA2w33ZbiZM6DjyD8xa3kC9AqYtfa8a4O8S2z5wh4QQ 9SVh8Ah8Zkbnhkiog6xK3Qcga0aWAMoW80571ORcvodpuSXxGdQQp+dqg+wdrIQc5G/vPFyn2xz qQdqc8UMUMgKI0RUu2A== X-Authority-Analysis: v=2.4 cv=QetWeMbv c=1 sm=1 tr=0 ts=6a830f60 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=rrvG0T/C2D967D07Ol03YQ==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=P1BnusSwAAAA:8 a=EUspDBNiAAAA:8 a=lvZftHTMWe99GEGio_gA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-ORIG-GUID: ey9TYFo-uPchF4NeQ1AclcBJYljKiL1K X-Proofpoint-GUID: ey9TYFo-uPchF4NeQ1AclcBJYljKiL1K X-Proofpoint-Spam-Info: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX8S5GUEu6bctb 79Mbm1SdvKzEx50mPPRNZsrfb/O0ANDSNVMl/ffqOepPbqrgIRLXQc/vgujEWWL3IK8FlThYiSA jC58WohJFB23t0c3jscPfyaizwytrno= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1176, Hydra:6.1.134, FMLib:17.12.100.49 definitions=2026-08-17_01,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 adultscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 spamscore=0 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608170104 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: Jacopo Mondi All the IPA modules declare a pipelineName that is identical to their name. As we now support creating IPAs by name (either explicitly provided by the pipeline handlers or by using the pipeline name), the duplicated information in IPAModuleInfo is redundant. Remove it. Reviewed-by: Barnabás Pőcze Reviewed-by: Kieran Bingham Reviewed-by: Hans de Goede Tested-by: Niklas Söderlund Signed-off-by: Jacopo Mondi Signed-off-by: Hans de Goede --- include/libcamera/ipa/ipa_module_info.h | 1 - src/ipa/ipu3/ipu3.cpp | 1 - src/ipa/mali-c55/mali-c55.cpp | 1 - src/ipa/rkisp1/rkisp1.cpp | 1 - src/ipa/rpi/pisp/pisp.cpp | 1 - src/ipa/rpi/vc4/vc4.cpp | 1 - src/ipa/simple/soft_simple.cpp | 1 - src/ipa/vimc/vimc.cpp | 1 - src/libcamera/ipa_module.cpp | 15 ++++++--------- test/ipa/ipa_module_test.cpp | 3 --- 10 files changed, 6 insertions(+), 20 deletions(-) diff --git a/include/libcamera/ipa/ipa_module_info.h b/include/libcamera/ipa/ipa_module_info.h index 3507a6d76..436ec82d7 100644 --- a/include/libcamera/ipa/ipa_module_info.h +++ b/include/libcamera/ipa/ipa_module_info.h @@ -16,7 +16,6 @@ namespace libcamera { struct IPAModuleInfo { int moduleAPIVersion; uint32_t pipelineVersion; - char pipelineName[256]; char name[256]; } __attribute__((packed)); diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp index 4bdc4b767..42d475ecc 100644 --- a/src/ipa/ipu3/ipu3.cpp +++ b/src/ipa/ipu3/ipu3.cpp @@ -672,7 +672,6 @@ const struct IPAModuleInfo ipaModuleInfo = { IPA_MODULE_API_VERSION, 1, "ipu3", - "ipu3", }; /** diff --git a/src/ipa/mali-c55/mali-c55.cpp b/src/ipa/mali-c55/mali-c55.cpp index da0dbe4b3..37350eb28 100644 --- a/src/ipa/mali-c55/mali-c55.cpp +++ b/src/ipa/mali-c55/mali-c55.cpp @@ -382,7 +382,6 @@ const struct IPAModuleInfo ipaModuleInfo = { IPA_MODULE_API_VERSION, 1, "mali-c55", - "mali-c55", }; IPAInterface *ipaCreate() diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp index 58ef163d8..e0dde542c 100644 --- a/src/ipa/rkisp1/rkisp1.cpp +++ b/src/ipa/rkisp1/rkisp1.cpp @@ -481,7 +481,6 @@ const struct IPAModuleInfo ipaModuleInfo = { IPA_MODULE_API_VERSION, 1, "rkisp1", - "rkisp1", }; IPAInterface *ipaCreate() diff --git a/src/ipa/rpi/pisp/pisp.cpp b/src/ipa/rpi/pisp/pisp.cpp index fd28fc385..88deccfd1 100644 --- a/src/ipa/rpi/pisp/pisp.cpp +++ b/src/ipa/rpi/pisp/pisp.cpp @@ -1147,7 +1147,6 @@ const IPAModuleInfo ipaModuleInfo = { IPA_MODULE_API_VERSION, 1, "rpi/pisp", - "rpi/pisp", }; IPAInterface *ipaCreate() diff --git a/src/ipa/rpi/vc4/vc4.cpp b/src/ipa/rpi/vc4/vc4.cpp index b6ca44e7a..f30eee7ff 100644 --- a/src/ipa/rpi/vc4/vc4.cpp +++ b/src/ipa/rpi/vc4/vc4.cpp @@ -633,7 +633,6 @@ const struct IPAModuleInfo ipaModuleInfo = { IPA_MODULE_API_VERSION, 1, "rpi/vc4", - "rpi/vc4", }; IPAInterface *ipaCreate() diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/simple/soft_simple.cpp index 629e1a32d..d4ab91e30 100644 --- a/src/ipa/simple/soft_simple.cpp +++ b/src/ipa/simple/soft_simple.cpp @@ -343,7 +343,6 @@ const struct IPAModuleInfo ipaModuleInfo = { IPA_MODULE_API_VERSION, 0, "simple", - "simple", }; IPAInterface *ipaCreate() diff --git a/src/ipa/vimc/vimc.cpp b/src/ipa/vimc/vimc.cpp index 4162b848f..bae48ea90 100644 --- a/src/ipa/vimc/vimc.cpp +++ b/src/ipa/vimc/vimc.cpp @@ -183,7 +183,6 @@ const struct IPAModuleInfo ipaModuleInfo = { IPA_MODULE_API_VERSION, 0, "vimc", - "vimc", }; IPAInterface *ipaCreate() diff --git a/src/libcamera/ipa_module.cpp b/src/libcamera/ipa_module.cpp index c89887954..6e8513d0e 100644 --- a/src/libcamera/ipa_module.cpp +++ b/src/libcamera/ipa_module.cpp @@ -215,18 +215,15 @@ Span elfLoadSymbol(Span elf, const char *symbol) * \var IPAModuleInfo::pipelineVersion * \brief The pipeline handler version that the IPA module is for * - * \var IPAModuleInfo::pipelineName - * \brief The name of the pipeline handler that the IPA module is for - * - * This name is used to match a pipeline handler with the module. - * * \var IPAModuleInfo::name * \brief The name of the IPA module * - * The name may be used to build file system paths to IPA-specific resources. - * It shall only contain printable characters, and may not contain '*', '?' or - * '\'. For IPA modules included in libcamera, it shall match the directory of - * the IPA module in the source tree. + * This name is used to match the IPA module. + * + * The name may also be used to build file system paths to IPA-specific + * resources. It shall only contain printable characters, and may not contain + * '*', '?' or '\'. For IPA modules included in libcamera, it shall match the + * directory of the IPA module in the source tree. * * \todo Allow user to choose to isolate open source IPAs */ diff --git a/test/ipa/ipa_module_test.cpp b/test/ipa/ipa_module_test.cpp index 1c97da324..af71c3285 100644 --- a/test/ipa/ipa_module_test.cpp +++ b/test/ipa/ipa_module_test.cpp @@ -37,12 +37,10 @@ protected: cerr << "IPA module information mismatch: expected:" << endl << "moduleAPIVersion = " << testInfo.moduleAPIVersion << endl << "pipelineVersion = " << testInfo.pipelineVersion << endl - << "pipelineName = " << testInfo.pipelineName << endl << "name = " << testInfo.name << "got: " << endl << "moduleAPIVersion = " << info.moduleAPIVersion << endl << "pipelineVersion = " << info.pipelineVersion << endl - << "pipelineName = " << info.pipelineName << endl << "name = " << info.name << endl; } @@ -58,7 +56,6 @@ protected: IPA_MODULE_API_VERSION, 0, "vimc", - "vimc", }; count += runTest("src/ipa/vimc/ipa_vimc.so", testInfo); From patchwork Mon Aug 17 13:40:37 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 27829 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 C7B45C3264 for ; Mon, 17 Aug 2026 13:40:57 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 496686829C; Mon, 17 Aug 2026 15:40:57 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="chNitq7p"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YWzamWDq"; dkim-atps=neutral Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 7AF0368244 for ; Mon, 17 Aug 2026 15:40:51 +0200 (CEST) Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67HD5oB82238690 for ; Mon, 17 Aug 2026 13:40:50 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=EQ1XZRbZGRy B3as4gr3aCKmf2sK+9RMxmTWtjPgyi3Q=; b=chNitq7pOhGhu7aOjd4D4rcR+iO gwUGry/YMhnWyCIpa2bO3vFf+7Ogf9HG4JPyHvOLWynLeipJZEUcHn9Y5SeFjeF9 PGSfRv8TyFuO/WIkHIZUd3E6+KyJVqXP3GcNvqzbwP+TuQQwzm2Umh+v2ZuyW5cw Uc7HCkMHkJDo+MqQT4nQmBXWm1qfB77O8YTj4LUWf0ATUucYsNyrbJ6FXsa+qFEV mXjqc3x6tHRTGiX6rehtIAGxbFG8+aiMBiscL2/BH9c9H0pIEOaV3nonTTWC58mw 7tTegIJxfp66OSiMH2fKoRObiKcxNhZesEhue2HK5YUMprRL2cw8k6xCd1g== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g3xyk95cc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 17 Aug 2026 13:40:49 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-92e695a3b28so449115685a.1 for ; Mon, 17 Aug 2026 06:40:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786974049; x=1787578849; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=EQ1XZRbZGRyB3as4gr3aCKmf2sK+9RMxmTWtjPgyi3Q=; b=YWzamWDq/7ilznQ5ttCyzV+BmWJhb/sD3aocZIkSFRSbxJ7OUzfI7Qd1JwI0XxwEwi cQXk5+3vqWGsHsMtVFjMI9vsaURSUzAxaOWvCNcB7dxBgq7v7Rb162a8HgLN87qZ/yUR TufVL9yT8/sumR+yrYEIjVdhv5ChcG3qhDFzY1wUe+ouInsAXm72JW422lb2wwHTiUoS 8Z8gvrkfofBKKo4qO3LWy9Kxe6kvRkGpsY/j01xutIq4F3Q0oqU/WzssAnA17hbIhUNc c9I9aXsGCz/73W1ZrvOrG3MKPijzhzA0y+SGJ7X8s62T9Ic8Hor17Qhez48IWEAv0Jcx ob3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786974049; x=1787578849; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=EQ1XZRbZGRyB3as4gr3aCKmf2sK+9RMxmTWtjPgyi3Q=; b=kyppuBS7WwzDKnKVEj35yF2h9/ug+2Cc/i/lb6rQ1ST5VTQwEk/f3q2Sfekcbx3WUi HQJqMSvO6juWm0Eu9L5M0jtrLkpjtMD+4p5bM28iwWjLVB18FVj8Y5QOFtHf2TLyzNrd VNsxh5POA+04WDOwJtjqTE/+8cHX2CtscI8+nZCw9LzUJFNI8kGzYMJZ8nI5N+s2mSyW GdfYhZrgjaOTEIsy/INXekWwV4qG8tmuBxFKPh0D1mBRRKYpnAn0+SiPjNmUCCi4Q1oX 7cPkiKei9d50O0IqRHPkbVdGRPjLMBBzvBipPfBiiSqAdUZ56agl0kBs01ZO8h7rHb9O 7DBA== X-Gm-Message-State: AOJu0YykC6OOC4CYqLgPGkamj9hRYFYKR4StkVtNSZ4rtZCUHYJKtRW9 VGbihLP40RwUzpHCUxz50+OG5HBaDQrv8/9x+sQMJ1xdy01HxX2++qzSyeCmOAYI8CSwKZr5wOO 1hH8pCikBpv/UIxJT3Vzesrr+NcCc6ZXYbIt6yP1XrmE3uNfxo+CqXuMbAd6ebaIj9Ngfb3jzSz iUDik5Nbjk X-Gm-Gg: AR+sD12/c/BrO+IXMjE/20eybtyTFZzF+gpJ2Bnt2xLwmqWdQ3i6ovx9yGQVfgZs17+ fgV8zDLrSyU+pYmR2bee1QpEUN1NNI1B3Xbl3sAlOjDq78DjwabQhlXpDZ7EU5dgWAqla2zijuP pqoOpHegrW4cDHVBK69fje/Q+zNmcVYuiIHPGDOSFCDWKW4fAPDAxwSkf5x/kl7jDpzGKLrXvqj bwm88e0Jd6wDoPiu2fmDT8yxMJwSTY8NSwu+7CjI93XSOSfRwnXLNiW/L1Phf1sqoyZbUDVYLfZ PJRp/ZAcZSdJHyxKO41FRdsdSvDogx03VWWZqXC42HbIs5YVxgUMMG4AHfYbYIkkJB1mBhD/Pan sCVQmDEk+AneD/ae4JcLpoTiKo7Uv X-Received: by 2002:a05:620a:4442:b0:936:a8a0:cdf0 with SMTP id af79cd13be357-936c07231e8mr3117152985a.15.1786974049118; Mon, 17 Aug 2026 06:40:49 -0700 (PDT) X-Received: by 2002:a05:620a:4442:b0:936:a8a0:cdf0 with SMTP id af79cd13be357-936c07231e8mr3117147985a.15.1786974048671; Mon, 17 Aug 2026 06:40:48 -0700 (PDT) Received: from t14s.vakwerkhuis.com ([78.108.130.194]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a3d8517181sm772179a12.1.2026.08.17.06.40.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 06:40:47 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , =?utf-8?q?Niklas_S=C3=B6?= =?utf-8?q?derlund?= , Loic Poulain , Hans de Goede Subject: [PATCH v8 3/8] ipa: Allow pipelines to have differently named IPA Date: Mon, 17 Aug 2026 15:40:37 +0200 Message-ID: <20260817134042.277168-4-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> References: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: APheuCPD_K_rgHmqy11pk40QMPShy5Ae X-Proofpoint-ORIG-GUID: APheuCPD_K_rgHmqy11pk40QMPShy5Ae X-Authority-Analysis: v=2.4 cv=dLaWXuZb c=1 sm=1 tr=0 ts=6a830f61 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=rrvG0T/C2D967D07Ol03YQ==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=P1BnusSwAAAA:8 a=EUspDBNiAAAA:8 a=c6ydndUcIca2Pb-fbGsA:9 a=IoWCM6iH3mJn3m4BftBB:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfXzb+4WyI2uhbj JE13AZxb+zTIAKyt8Lh+tHuPMQJUNUjeuUoPd+lEmXb58BGfTioBXyAaOe6SgWA1jxW0Pq1wVH6 QSJrdZG+QjW+5sI0vPtX1D0G3Oes03uqLnMyOTkTchRu0wq4zpkJh9lqyGajU4djlV3cOKNmeAf 8UIDQNwurOwblhecHtZZJkuj7C91qsd4C3Ldxiqoqcq1RQkDtpH0bGXrOULQp/8kInaW+U6FSjH UJT4V+r0LW2RvGGQWicHCxJjH+52wtkBT3Kk99Mw9tnE6nQ9WU2jKj7rctd07TZ13LRhz9JbDO4 e3XbrdsP2XrRdwgPJfj3Y+1f4Lig94V4f45/jfcc+1w0+ZVydu4V77YqYfps6Ftol3qhBYTf5nW lsfYKKeyNmozT0xu3V+XqW7YmUUg8bcMwtwUB5RehB0/X99FFSYdge7s45g+WUphovvNk/Vf6RB mNSCt9YcmjzmgirDt4A== X-Proofpoint-Spam-Info: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX+Kf0hk1yNVkj eU7jC7FLphnHVVtyByAgWEVFOED4gAZgG6WT2QgpCrw+R4ss/YlwYNUoP4vNA8Sc+MPJOlHP/j2 +m3qrUNmq4M9r0mi4kwfr/SH9QQYx9w= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1176, Hydra:6.1.134, FMLib:17.12.100.49 definitions=2026-08-17_01,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 suspectscore=0 adultscore=0 malwarescore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608170104 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: Jacopo Mondi Right now the build system assumes a 1-to-1 matching between a pipeline handler name and an IPA module. This, as also acknowledged by a \todo comment, is quite a rigid requirement and only allows a 1-to-1 matching between pipeline and IPA names. The more platforms libcamera supports, the more it is likely that a pipeline handler could re-use an IPA module. This is particularly relevant for the softISP IPA module which could theoretically be plugged to any pipeline. When building IPAs, the build system iterates the list of enabled pipeline handlers and for each of them tries to verify if the 'ipas' list contains a corresponding entry for it. The 'ipas' meson options is an array option and, as no default value is specified for it, it contains by default all its possible choices. In this way if no value is specified for the 'ipas' option, compiling the pipeline handlers ['X','Y', 'Z'] will compile the ['X', 'Y', 'Z'] IPAs. If instead the user specifies '-Dipas=X' during the configuration then only IPA module ['X'] will be built, regardless of which pipeline is enabled. Building an IPA module will anyway require to build a corresponding pipeline with the same name. Relax the 1-to-1 'pipeline'-'IPA' naming requirement by introducing a dictionary that associates pipelines with IPA modules. For each enabled pipeline: 1) Make sure an IPA module exists for it 2) Make sure the IPA module is enabled by the 'ipas' option 3) Make sure the IPA is compiled once only This will require every new pipeline to add an entry to the dictionary and specify which IPA module they would like to use. Reviewed-by: Hans de Goede Signed-off-by: Jacopo Mondi Signed-off-by: Hans de Goede --- Changes in v7: - Drop R-Car Gen4 mention from commit message Changes in v3: - New patch in v3 of this patch-series --- src/ipa/meson.build | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/src/ipa/meson.build b/src/ipa/meson.build index eb7846e47..c583c7efd 100644 --- a/src/ipa/meson.build +++ b/src/ipa/meson.build @@ -24,6 +24,16 @@ subdir('libipa') ipa_sign = files('ipa-sign.sh') +supported_ipas = { + 'ipu3': 'ipu3', + 'mali-c55': 'mali-c55', + 'rkisp1': 'rkisp1', + 'rpi/pisp': 'rpi/pisp', + 'rpi/vc4': 'rpi/vc4', + 'simple': 'simple', + 'vimc': 'vimc' +} + ipa_modules = get_option('ipas') # Tests require the vimc IPA, similar to vimc pipline-handler for their @@ -39,24 +49,34 @@ ipa_names = [] subdirs = [] foreach pipeline : pipelines - # The current implementation expects the IPA module name to match the - # pipeline name. - # \todo Make the IPA naming scheme more flexible. - if not ipa_modules.contains(pipeline) + # Make sure an IPA exists for the pipeline + if not supported_ipas.has_key(pipeline) continue endif - enabled_ipa_names += pipeline + + ipa = supported_ipas.get(pipeline) + + # Only build IPAs specified with '-Dipas' + if not ipa_modules.contains(ipa) + continue + endif + + # If enabled already do not add it twice + if enabled_ipa_names.contains(ipa) + continue + endif + enabled_ipa_names += ipa # Allow multi-level directory structuring for the IPAs if needed. - pipeline = pipeline.split('/')[0] - if pipeline in subdirs + ipa = ipa.split('/')[0] + if ipa in subdirs continue endif - subdirs += pipeline - subdir(pipeline) + subdirs += ipa + subdir(ipa) - # Don't reuse the pipeline variable below, the subdirectory may have + # Don't reuse the ipa variable below, the subdirectory may have # overwritten it. endforeach From patchwork Mon Aug 17 13:40:38 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 27830 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 B9094C3264 for ; Mon, 17 Aug 2026 13:40:59 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 52BD16829F; Mon, 17 Aug 2026 15:40:59 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="KbFfmrKO"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jlenJGw/"; dkim-atps=neutral Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 8272B6828D for ; Mon, 17 Aug 2026 15:40:52 +0200 (CEST) Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67HD5rW72008348 for ; Mon, 17 Aug 2026 13:40:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=tALQ4WPF1H+ xoBX9ywuRNg2hINLBVBQkINtnqbyHhYA=; b=KbFfmrKONv2/5avn4U4xmGUX66q d0A7rwnxxQFECTTo+zctYvZP5CRVGizg+a0fVJEtee8plzj8Qmmamn34ZvgzYVUT bUrUcisLqEAj7KffWwBTwItdA+x6uW7rg9+rG89WfSf/BD4IJMuH9ABvc2UpnD1j PhTGAr/LdPnGpHt7VjCdI8RhxZQh+YhEU6i6onhaaheF7mBqnC4ARmsnGQXT04PZ fKgi9Q8c8Q8oCNyIT8pL/we/zTVPlqlV9Jn1nSM9kXHPEwnJ93av27ZjZ9R3i6V/ 79OGpgnQ49XQ+2RWuB68mvOh9kUEYC4hG/oh8zCVoLBvMcqZm9K9eQuuPYw== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g3xw8h55k-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 17 Aug 2026 13:40:51 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-92e52306621so327943985a.1 for ; Mon, 17 Aug 2026 06:40:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786974050; x=1787578850; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=tALQ4WPF1H+xoBX9ywuRNg2hINLBVBQkINtnqbyHhYA=; b=jlenJGw/w2WqtmyOoJ7JXJTI1J+8asBOUrQudjbSN+cpG9HIYMiXjIQ9+/yuDDzMgH whoYcYyAq4PD8sbTh984whuI8+PV5YokSgvQIe+anZXjDHRvj8tCHnu5MB2pYPb0GMiA JC67j694aCOANtwUSSqfpZ1oq2Pxp0UJVRJyb0FoxPLdVq35tB2oF7ZVIOJzHSuMr4O7 SThf+6JjU8LzDeYos/8yo8S8Aop+EmNQR7Rnui58n5Uk7QO1WVY9FZ8tV+OQTAfWgpSk An7Pftf/5b23YiNcT42cwAXiJy0/OjWxpSSmMUj9IkCQx7WxHZkRUebnmmMNImFkqS/O W+YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786974050; x=1787578850; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=tALQ4WPF1H+xoBX9ywuRNg2hINLBVBQkINtnqbyHhYA=; b=rs+XfoPuOIoHpuducuPty61+wi8YGZGNFAt2Un1V4JzxafS0RVuTAsWk73EiI6diAb YFQJsE1ACNgBBCQfZjhwY+w3ynAuFk8oF0m3A3D27LQ76GttVnzDnnBM6u5osW1FcIvZ NbtJCUXXtyqXv/HYs8EI2896XLDD0cPYCiEFdwbPOskfcZ7s102aJe45VmwrDCTP3n6b azA4Mye9YWIbixhtbAgi7JR7H5U45P6m2UYRSObKrN7O4htxVhGr3365vo6MhpPcQ+6Y smKF95gFTKhfOQuxJmcgTsZSisHK2zyHsTBckF5mHfALpsSW5Hb7qrmnG0ZkfFX7CVaR 7ttw== X-Gm-Message-State: AOJu0YywqZJfIRY9nlFarcbiouXua14a5LuiLs0QT3u6TS7DHUVeZOdN ZYCV3bjj0JCWhLhVCa1T8JnpvglRTxNZ2xh5bLmojCJ7dS8B19KRVc0R+0FKjBcV95D1LMhXfQg PdL6Kae2SsJAKyu4j08znoVrCqfcpTNUAtoKy1wo8V0NzXCZx5mBdQW9ro2BvQX9dmt/sbBD8O6 k+HxyNWgLV X-Gm-Gg: AR+sD11Pw0ZGYeky0kRAn3ZIsgCe96KQT62Zpd1c6+kA12i+NEBdfR9ca92+jDVV5RO /1FmeDWIAexJmEQcVIGtas5x8y5eCizw8sInFb7HiVrFjpbi/a5U5jhtsiGKUBlQzweuUfcnA8l +eR8BVbzma6yXvMhx+7Yc0LKZRAw+Acv37l7vM5Cc9Oy/Z/M1SWXGL22JWpsw27aO9WDLaJzthm xcWtABPvpknOBtWG+LBU7t/p0hb3/9+583PizQf4VQky7bFF4ODTefYuzWT39dLySVTomKZ3rsA LjeAtrTP+NGS0sSxQI2XPp3rtMHuNu0bTmE+4mWqK/ayvnCrZHNodkqkgNQwIh/GAzEEndQGkgX sEj177gx5dlLR85cCI8YFvbaS9w3D X-Received: by 2002:a05:620a:4514:b0:92e:4859:49dd with SMTP id af79cd13be357-93704b7d482mr56432185a.26.1786974050504; Mon, 17 Aug 2026 06:40:50 -0700 (PDT) X-Received: by 2002:a05:620a:4514:b0:92e:4859:49dd with SMTP id af79cd13be357-93704b7d482mr56427085a.26.1786974049998; Mon, 17 Aug 2026 06:40:49 -0700 (PDT) Received: from t14s.vakwerkhuis.com ([78.108.130.194]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a3d8517181sm772179a12.1.2026.08.17.06.40.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 06:40:49 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , =?utf-8?q?Niklas_S=C3=B6?= =?utf-8?q?derlund?= , Loic Poulain , Hans de Goede Subject: [PATCH v8 4/8] pipeline: rpi: Explictly pass pipe()->name() when creating IPA Date: Mon, 17 Aug 2026 15:40:38 +0200 Message-ID: <20260817134042.277168-5-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> References: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: E9QPPBE7PdKkUGgcRH9Hz323XY0841cp X-Proofpoint-Spam-Info: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX0dIvWKKL+HJg kWX1BwW5apIWid7bHNeMvi0+QOJ7FeCIMeahINGymaPE/u07yyiWcR02pWe3DPeh8dhyj/IAPaY wW7KRpbYXbU1am03Q0LNjWa3lVnSCN0= X-Authority-Analysis: v=2.4 cv=SuCgLvO0 c=1 sm=1 tr=0 ts=6a830f63 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=rrvG0T/C2D967D07Ol03YQ==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=P1BnusSwAAAA:8 a=EUspDBNiAAAA:8 a=PI23gj2s8gul_AyujO4A:9 a=IoWCM6iH3mJn3m4BftBB:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-ORIG-GUID: E9QPPBE7PdKkUGgcRH9Hz323XY0841cp X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX2WRiO9nFmKJ0 I08RMxZa5bWHF7N0DeuUaF2iEG3MvqQLZBnAbT0OV0fX7XqjP0C/unaoHadjLkze7Aq8PTHDk9j TM3iAdfZDvx4PPsGCO5DKNLDCmMuKwt13B6ajOOCPgNxshACd2VLauu5KYzdI+x+bY+6eJMKc3P jRaZ9/fDPboZz9TJs/EqNqdPLccF/z5woXHpHlqBpIrc126qle3X2naNpPfsHOUBAUfNEyT4DNJ lDgrn5l2fmgoaDCmxwbHS58BnMBZVOn+XrrN5RZR5tAFRiPd+Wcmg79qZYMYD/d+K/iCjueAD93 kncl8iUKDoqNegftPlWc6/fYLM+Q5f3lAb/+1u+he2134M6O6u9vVYKOYxcxDIxfICow0Xi702l h2jDVdJQdlPby8VCiLsJ0J9u5kE7jDiWfna+9mKnj/n0q1kFqUcWc5TmpuApNOObAYPWE74OtZY HIIlQTsZhpYdBjC85rg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1176, Hydra:6.1.134, FMLib:17.12.100.49 definitions=2026-08-17_01,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 spamscore=0 priorityscore=1501 phishscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608170104 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" Switch to explicitly specifying the pipeline-name as the name of the IPA to create. This is a preparation patch for switching the default IPA creation to matching IPA by IPA proxy type, which does not work for rpi because the same IPAProxyRPi type is used for both the rpi/vc4 and rpi/pisp pipeline handlers. Reviewed-by: Jacopo Mondi Signed-off-by: Hans de Goede --- Changes in v7: - Add a comment explaining why pipe()->name() is used when creating the IPA Changes in v6: - New patch in v6 of this patch-series --- src/libcamera/pipeline/rpi/common/pipeline_base.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp index 5a5acf6a1..802b2b3c7 100644 --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp @@ -1165,7 +1165,13 @@ int CameraData::loadIPA(ipa::RPi::InitResult *result) { int ret; - ipa_ = pipe()->createIPA(1, 1); + /* + * Explicitly pass pipe()->name() to select the IPA to create. + * The default behavior of creating the IPA by the IPA proxy type name + * does not work because the same IPAProxyRPi type is used for both + * the rpi/vc4 and rpi/pisp pipeline handlers. + */ + ipa_ = pipe()->createIPA(pipe()->name(), 1, 1); if (!ipa_) return -ENOENT; From patchwork Mon Aug 17 13:40:39 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 27831 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 9DE97C3264 for ; Mon, 17 Aug 2026 13:41:01 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 4C16E6828A; Mon, 17 Aug 2026 15:41:01 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="jbhMnvTM"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cEVIZFMR"; dkim-atps=neutral Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 78E0468265 for ; Mon, 17 Aug 2026 15:40:54 +0200 (CEST) Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67HD61wG2748515 for ; Mon, 17 Aug 2026 13:40:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=xiVnaMxfFws UMwwnoH8mECjsfVc/ZUm2HqA7Kd91+6I=; b=jbhMnvTMSgXbHRsBj8k91RnZSGP Ra+Vmd1Oela8c/skteTdjBl0Wh73Q/zbIKGqf4T2o+gcnxIT4Od5rr/kY/oX9Swn mxbOBoLkjKVPh5IKC9IH8xWYOyhpVvUVYpbvdHyorDg6f9JWwRNnkT4eo6DwSM8u 6/3a0OzwA8Cr0qvQDfQplVE6MnvD0bP4FeKhlPHZ0FgfzSx54aIjajC4s+m6SwSD 9PiJgjJWqDsfCD9TSYcOS2FMDSaTpwG9gWPQ6l95CTK99ePB7HxSanhUtqFquq0B xcYMMsnIL2w91ZeVd6nMeSewY/dIalaOK5MOZioKiu7aG0VeMKfYramrggQ== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g3y779324-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 17 Aug 2026 13:40:53 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-92e9a2b95b5so600934485a.2 for ; Mon, 17 Aug 2026 06:40:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786974052; x=1787578852; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xiVnaMxfFwsUMwwnoH8mECjsfVc/ZUm2HqA7Kd91+6I=; b=cEVIZFMRXbCMmcxIS33lYO4YIIOqAWB3as/BN/09+LWqLgRM0NR055yuIB2ePaRtor KotSu97nw/B0DMf8NOu7Jy3Yz4etBHzTiptrPlzb+2l8P1mrq6S7eV5/LWfAYSFvYF/Y /yxuKzEuBEZ1kifNnLEyut/sbamJQjHqCMahR2B/ejnKFHxeWAtCI2kcAqekxPeH5btd gEH/M8Xr55fNjdLLZWBacl7SaY1dha3LKLFBqL5a2jz/x6dUU8AGsN9JCDXsJdYVt8Wg rnidWbaR3x08Xh2E+UYVTYI5xA7KLGPQV30CvS5y3xs2z8ZGJgNMeWnRoxzNAETvRy/h 6I+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786974052; x=1787578852; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=xiVnaMxfFwsUMwwnoH8mECjsfVc/ZUm2HqA7Kd91+6I=; b=aJLpJK/VF2qDIWu+Cs9+i6vUahEQaDA30eX6q0F5V/JHu5EH5YviJ9aN/98iNmVE4a U5jNdU+XVmmZIe3w5WHHlPb4JhQ+2R2uZMMCUA0Kh4L6jDHi/UXEiOYcw5UFISXCXDA0 bxn2VhODVWikpA8B/LMG+9WmegxxAIEy/bn+8gEMsVPUqkdAZPAws5bl73C/wxnHrWAg ZpsOXe+n4ew+Zh6axJwdjOlU4pdRi7mwpIzq8GRl5WpZwnxQNnm+9Ce6cY/3XE0go47y owv/extqpFDMpQHQ94dToaVaGUEbZfkHfuoX16EuktmpPdJqxVkOGts/p8ry/IZO9jXz gLqA== X-Gm-Message-State: AOJu0YxlT0guBMG+9Ii9Hi9HnLqp9ZW+A21fsFYQMCAcFBOCMRNxziZV KLNJqE9AIHQmDDfiJAjdDe918baHBwQO5t7Fyya+PjdYcoLef+AE/LQkZb+TMl+YaOd5z1en28E eFt1p1gKLYqqxgjH9jteIvGKZzPhJAnIg0vk2/2ubzPojy2uQCvNfETwMAWjGc73tlfiL2zxABD opAsMzHtM4 X-Gm-Gg: AR+sD12GLOWAnizyiKoFQ32JrguwRzGBTcM8JgO7YV1gofvDlCXgcy7t8xl7L5L/1uI bwMrMkMs5tOYOg+jm7a9D1JKEojXHDBqHsnxtt7Sd4Zb/CKUAXwCVX5RINhYEi5sFlyaUZJY+Wr 7ElnuhfJa6d4LE65HtA6I67ZDtDGd9HxTAUHUarhRhWhwn+/pho1yCKc2M7AvO6jAxGvEUnQNr3 wuiwGToo9qNoSoehexghuXsap/nKa25GNQXcIYaRu8mg02Btf76ebPIgZHyfeh241ctoLLvkwGF w73SBoMF23tjyk8S6KN7YI1l8RTGb9f3jqhJmU2rpkqc0LOn4EwUfUY2sUbtflvVGZraHxsc1a4 CTo07qbkzHCYusXtLApRHg26rrLis X-Received: by 2002:a05:620a:7018:b0:936:9f46:cec8 with SMTP id af79cd13be357-936d224aa40mr2446401385a.20.1786974052052; Mon, 17 Aug 2026 06:40:52 -0700 (PDT) X-Received: by 2002:a05:620a:7018:b0:936:9f46:cec8 with SMTP id af79cd13be357-936d224aa40mr2446393185a.20.1786974051357; Mon, 17 Aug 2026 06:40:51 -0700 (PDT) Received: from t14s.vakwerkhuis.com ([78.108.130.194]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a3d8517181sm772179a12.1.2026.08.17.06.40.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 06:40:50 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , =?utf-8?q?Niklas_S=C3=B6?= =?utf-8?q?derlund?= , Loic Poulain , Hans de Goede Subject: [PATCH v8 5/8] libcamera: Create IPA by IPA proxy type name Date: Mon, 17 Aug 2026 15:40:39 +0200 Message-ID: <20260817134042.277168-6-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> References: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX5JcgrkLMdH0e GXqC6HZGq5IrMr41cBMqKSF+WUb4c1GV3cCjnVjwmBx12TirvMhXuqn7GNITMqpcIAoZ5GpTdCJ ICj8LbCG4cmWV4uDc4wzrttfPOZgws3KEW0I8MWXtJP1YBCtyXXKAR4Fp4lIBh5PCzpoEzf7Wdg NKEAfk2goq5iYGm9E7a5WXWPdp3OnqmRVGs6YgnugShKfj1HY2RIT0YTPLH8OR51tkERyWwWhRy SyD/Vza2+zBHH/GAiVhJPXGRw4UVUaxFrNY3aWLztxRFeSWvLCSkoo3Sby1xaP4c5TbNu0Y30N2 yLMGup7um6sOfKoj3hM60xKzicXhqfNcMUIOrwcj/8JlU8R1X7d8AXrh9+oZLN5FpKAvjDEzkqE z+XpAqklqt9x5r5GWL/nx2Ogh7QsVMJFU+FyhsP4p9u91Ct0criu8chJYYQMibM5u7hupADlhiK XxD8RgjnpKabXjrQXeQ== X-Proofpoint-ORIG-GUID: nqsCR1SRKVDgRqYn2imRkbOTNcf8dIls X-Proofpoint-Spam-Info: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX5zJfaSP5Djzx v2t1vtiqLJ7Q0mXBUodHoOsf6yYyRy1WhGcIN15QAeZ506mxwVyP4NySVU4vTBLvepa1oKtS7WA DSCjLcQGqeci3Vp9bKLTrONAHK1avQc= X-Proofpoint-GUID: nqsCR1SRKVDgRqYn2imRkbOTNcf8dIls X-Authority-Analysis: v=2.4 cv=WNhPmHsR c=1 sm=1 tr=0 ts=6a830f65 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=rrvG0T/C2D967D07Ol03YQ==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=P1BnusSwAAAA:8 a=EUspDBNiAAAA:8 a=SXN59QJeJGJC3baiLVEA:9 a=IoWCM6iH3mJn3m4BftBB:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1176, Hydra:6.1.134, FMLib:17.12.100.49 definitions=2026-08-17_01,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 phishscore=0 impostorscore=0 adultscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 bulkscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608170104 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" Currently createIPA() / IPAManager::module() assume that there is a 1:1 relationship between pipeline handlers and IPAs and IPA matching is done based on matching the pipe's name to ipaModuleInfo.name[]. This coupling between pipeline name and which IPA to create is undesirable and makes it impossible to for example use the softISP as a fallback in other pipeline handlers than the simple pipeline handler. The actual API contract between the IPA and the pipeline handler is given by the IPA proxy type. Add a static IPAProxyXXX::name() to the generated IPAProxyXXX classes and use this in PipelineHandler::createIPA() instead of using PipelineHandler::name(). This requires changing the name, as well as the subdirectory of the softISP IPA from "simple" to "softisp", which is the more sensible name anyway. Note: this means that softISP IPA config files will now be looked for under /usr/share/libcamera/ipa/softisp instead of /usr/share/libcamera/ipa/simple! Reviewed-by: Jacopo Mondi Signed-off-by: Hans de Goede --- Changes in v8: - Fix CI failure caused by extra trailing ';' Changes in v7: - Rename the softISP IPA from "simple" to "softisp" instead of "soft" - Mark PipelineHandler::createIPA() overload with an explicit IPA name argument as deprecated Changes in v6: - New patch in v6 of this patch-series --- Documentation/Doxyfile-internal.in | 2 +- include/libcamera/internal/pipeline_handler.h | 2 +- include/libcamera/internal/software_isp/software_isp.h | 4 ++-- include/libcamera/ipa/meson.build | 2 +- include/libcamera/ipa/{soft.mojom => softisp.mojom} | 0 meson_options.txt | 4 ++-- src/ipa/meson.build | 2 +- src/ipa/{simple => softisp}/algorithms/adjust.cpp | 0 src/ipa/{simple => softisp}/algorithms/adjust.h | 0 src/ipa/{simple => softisp}/algorithms/agc.cpp | 0 src/ipa/{simple => softisp}/algorithms/agc.h | 0 src/ipa/{simple => softisp}/algorithms/algorithm.h | 0 src/ipa/{simple => softisp}/algorithms/awb.cpp | 0 src/ipa/{simple => softisp}/algorithms/awb.h | 2 +- src/ipa/{simple => softisp}/algorithms/blc.cpp | 0 src/ipa/{simple => softisp}/algorithms/blc.h | 0 src/ipa/{simple => softisp}/algorithms/ccm.cpp | 0 src/ipa/{simple => softisp}/algorithms/ccm.h | 0 src/ipa/{simple => softisp}/algorithms/meson.build | 0 src/ipa/{simple => softisp}/data/meson.build | 2 +- src/ipa/{simple => softisp}/data/uncalibrated.yaml | 0 src/ipa/{simple => softisp}/ipa_context.cpp | 0 src/ipa/{simple => softisp}/ipa_context.h | 0 src/ipa/{simple => softisp}/meson.build | 0 src/ipa/{simple => softisp}/module.h | 2 +- src/ipa/{simple => softisp}/soft_simple.cpp | 4 ++-- src/libcamera/pipeline_handler.cpp | 8 +++++--- .../libcamera_templates/module_ipa_proxy.h.tmpl | 2 ++ 28 files changed, 20 insertions(+), 16 deletions(-) rename include/libcamera/ipa/{soft.mojom => softisp.mojom} (100%) rename src/ipa/{simple => softisp}/algorithms/adjust.cpp (100%) rename src/ipa/{simple => softisp}/algorithms/adjust.h (100%) rename src/ipa/{simple => softisp}/algorithms/agc.cpp (100%) rename src/ipa/{simple => softisp}/algorithms/agc.h (100%) rename src/ipa/{simple => softisp}/algorithms/algorithm.h (100%) rename src/ipa/{simple => softisp}/algorithms/awb.cpp (100%) rename src/ipa/{simple => softisp}/algorithms/awb.h (97%) rename src/ipa/{simple => softisp}/algorithms/blc.cpp (100%) rename src/ipa/{simple => softisp}/algorithms/blc.h (100%) rename src/ipa/{simple => softisp}/algorithms/ccm.cpp (100%) rename src/ipa/{simple => softisp}/algorithms/ccm.h (100%) rename src/ipa/{simple => softisp}/algorithms/meson.build (100%) rename src/ipa/{simple => softisp}/data/meson.build (79%) rename src/ipa/{simple => softisp}/data/uncalibrated.yaml (100%) rename src/ipa/{simple => softisp}/ipa_context.cpp (100%) rename src/ipa/{simple => softisp}/ipa_context.h (100%) rename src/ipa/{simple => softisp}/meson.build (100%) rename src/ipa/{simple => softisp}/module.h (91%) rename src/ipa/{simple => softisp}/soft_simple.cpp (99%) diff --git a/Documentation/Doxyfile-internal.in b/Documentation/Doxyfile-internal.in index b64b6a6fe..70b7e7ef1 100644 --- a/Documentation/Doxyfile-internal.in +++ b/Documentation/Doxyfile-internal.in @@ -28,7 +28,7 @@ EXCLUDE = @TOP_SRCDIR@/include/libcamera/base/span.h \ @TOP_SRCDIR@/src/libcamera/sensor/camera_sensor_raw.cpp \ @TOP_SRCDIR@/src/libcamera/tracepoints.cpp \ @TOP_BUILDDIR@/include/libcamera/internal/tracepoints.h \ - @TOP_BUILDDIR@/include/libcamera/ipa/soft_ipa_interface.h \ + @TOP_BUILDDIR@/include/libcamera/ipa/softisp_ipa_interface.h \ @TOP_BUILDDIR@/src/libcamera/proxy/ HTML_OUTPUT = internal-api diff --git a/include/libcamera/internal/pipeline_handler.h b/include/libcamera/internal/pipeline_handler.h index b60c07b13..2a2ba95a4 100644 --- a/include/libcamera/internal/pipeline_handler.h +++ b/include/libcamera/internal/pipeline_handler.h @@ -76,7 +76,7 @@ public: std::unique_ptr createIPA(uint32_t minVersion, uint32_t maxVersion) { IPAManager *ipaManager = manager_->_d()->ipaManager(); - return ipaManager->createIPA(name_, minVersion, maxVersion); + return ipaManager->createIPA(T::name(), minVersion, maxVersion); } template diff --git a/include/libcamera/internal/software_isp/software_isp.h b/include/libcamera/internal/software_isp/software_isp.h index 4f72dce9b..3205a2e14 100644 --- a/include/libcamera/internal/software_isp/software_isp.h +++ b/include/libcamera/internal/software_isp/software_isp.h @@ -25,8 +25,8 @@ #include #include -#include -#include +#include +#include #include "libcamera/internal/camera_sensor.h" #include "libcamera/internal/dma_buf_allocator.h" diff --git a/include/libcamera/ipa/meson.build b/include/libcamera/ipa/meson.build index 3ee3ada30..fb518526a 100644 --- a/include/libcamera/ipa/meson.build +++ b/include/libcamera/ipa/meson.build @@ -68,7 +68,7 @@ pipeline_ipa_mojom_mapping = { 'rkisp1': 'rkisp1.mojom', 'rpi/pisp': 'raspberrypi.mojom', 'rpi/vc4': 'raspberrypi.mojom', - 'simple': 'soft.mojom', + 'simple': 'softisp.mojom', 'vimc': 'vimc.mojom', } diff --git a/include/libcamera/ipa/soft.mojom b/include/libcamera/ipa/softisp.mojom similarity index 100% rename from include/libcamera/ipa/soft.mojom rename to include/libcamera/ipa/softisp.mojom diff --git a/meson_options.txt b/meson_options.txt index 20baacc4f..e829ebe60 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -48,8 +48,8 @@ option('gstreamer', option('ipas', type : 'array', - choices : ['ipu3', 'mali-c55', 'rkisp1', 'rpi/pisp', 'rpi/vc4', 'simple', - 'vimc'], + choices : ['ipu3', 'mali-c55', 'rkisp1', 'rpi/pisp', 'rpi/vc4', + 'softisp', 'vimc'], description : 'Select which IPA modules to build') option('lc-compliance', diff --git a/src/ipa/meson.build b/src/ipa/meson.build index c583c7efd..ab4a1897f 100644 --- a/src/ipa/meson.build +++ b/src/ipa/meson.build @@ -30,7 +30,7 @@ supported_ipas = { 'rkisp1': 'rkisp1', 'rpi/pisp': 'rpi/pisp', 'rpi/vc4': 'rpi/vc4', - 'simple': 'simple', + 'simple': 'softisp', 'vimc': 'vimc' } diff --git a/src/ipa/simple/algorithms/adjust.cpp b/src/ipa/softisp/algorithms/adjust.cpp similarity index 100% rename from src/ipa/simple/algorithms/adjust.cpp rename to src/ipa/softisp/algorithms/adjust.cpp diff --git a/src/ipa/simple/algorithms/adjust.h b/src/ipa/softisp/algorithms/adjust.h similarity index 100% rename from src/ipa/simple/algorithms/adjust.h rename to src/ipa/softisp/algorithms/adjust.h diff --git a/src/ipa/simple/algorithms/agc.cpp b/src/ipa/softisp/algorithms/agc.cpp similarity index 100% rename from src/ipa/simple/algorithms/agc.cpp rename to src/ipa/softisp/algorithms/agc.cpp diff --git a/src/ipa/simple/algorithms/agc.h b/src/ipa/softisp/algorithms/agc.h similarity index 100% rename from src/ipa/simple/algorithms/agc.h rename to src/ipa/softisp/algorithms/agc.h diff --git a/src/ipa/simple/algorithms/algorithm.h b/src/ipa/softisp/algorithms/algorithm.h similarity index 100% rename from src/ipa/simple/algorithms/algorithm.h rename to src/ipa/softisp/algorithms/algorithm.h diff --git a/src/ipa/simple/algorithms/awb.cpp b/src/ipa/softisp/algorithms/awb.cpp similarity index 100% rename from src/ipa/simple/algorithms/awb.cpp rename to src/ipa/softisp/algorithms/awb.cpp diff --git a/src/ipa/simple/algorithms/awb.h b/src/ipa/softisp/algorithms/awb.h similarity index 97% rename from src/ipa/simple/algorithms/awb.h rename to src/ipa/softisp/algorithms/awb.h index ff0a7a28e..59ab6fd79 100644 --- a/src/ipa/simple/algorithms/awb.h +++ b/src/ipa/softisp/algorithms/awb.h @@ -14,7 +14,7 @@ #include "libipa/awb.h" #include "libipa/fixedpoint.h" -#include "simple/ipa_context.h" +#include "softisp/ipa_context.h" #include "algorithm.h" diff --git a/src/ipa/simple/algorithms/blc.cpp b/src/ipa/softisp/algorithms/blc.cpp similarity index 100% rename from src/ipa/simple/algorithms/blc.cpp rename to src/ipa/softisp/algorithms/blc.cpp diff --git a/src/ipa/simple/algorithms/blc.h b/src/ipa/softisp/algorithms/blc.h similarity index 100% rename from src/ipa/simple/algorithms/blc.h rename to src/ipa/softisp/algorithms/blc.h diff --git a/src/ipa/simple/algorithms/ccm.cpp b/src/ipa/softisp/algorithms/ccm.cpp similarity index 100% rename from src/ipa/simple/algorithms/ccm.cpp rename to src/ipa/softisp/algorithms/ccm.cpp diff --git a/src/ipa/simple/algorithms/ccm.h b/src/ipa/softisp/algorithms/ccm.h similarity index 100% rename from src/ipa/simple/algorithms/ccm.h rename to src/ipa/softisp/algorithms/ccm.h diff --git a/src/ipa/simple/algorithms/meson.build b/src/ipa/softisp/algorithms/meson.build similarity index 100% rename from src/ipa/simple/algorithms/meson.build rename to src/ipa/softisp/algorithms/meson.build diff --git a/src/ipa/simple/data/meson.build b/src/ipa/softisp/data/meson.build similarity index 79% rename from src/ipa/simple/data/meson.build rename to src/ipa/softisp/data/meson.build index 92795ee4c..fd9aa0fab 100644 --- a/src/ipa/simple/data/meson.build +++ b/src/ipa/softisp/data/meson.build @@ -6,5 +6,5 @@ conf_files = files([ # The install_dir must match the name from the IPAModuleInfo install_data(conf_files, - install_dir : ipa_data_dir / 'simple', + install_dir : ipa_data_dir / 'softisp', install_tag : 'runtime') diff --git a/src/ipa/simple/data/uncalibrated.yaml b/src/ipa/softisp/data/uncalibrated.yaml similarity index 100% rename from src/ipa/simple/data/uncalibrated.yaml rename to src/ipa/softisp/data/uncalibrated.yaml diff --git a/src/ipa/simple/ipa_context.cpp b/src/ipa/softisp/ipa_context.cpp similarity index 100% rename from src/ipa/simple/ipa_context.cpp rename to src/ipa/softisp/ipa_context.cpp diff --git a/src/ipa/simple/ipa_context.h b/src/ipa/softisp/ipa_context.h similarity index 100% rename from src/ipa/simple/ipa_context.h rename to src/ipa/softisp/ipa_context.h diff --git a/src/ipa/simple/meson.build b/src/ipa/softisp/meson.build similarity index 100% rename from src/ipa/simple/meson.build rename to src/ipa/softisp/meson.build diff --git a/src/ipa/simple/module.h b/src/ipa/softisp/module.h similarity index 91% rename from src/ipa/simple/module.h rename to src/ipa/softisp/module.h index 8d4d53fb2..b5d99ba08 100644 --- a/src/ipa/simple/module.h +++ b/src/ipa/softisp/module.h @@ -9,7 +9,7 @@ #include -#include +#include #include "libcamera/internal/software_isp/debayer_params.h" #include "libcamera/internal/software_isp/swisp_stats.h" diff --git a/src/ipa/simple/soft_simple.cpp b/src/ipa/softisp/soft_simple.cpp similarity index 99% rename from src/ipa/simple/soft_simple.cpp rename to src/ipa/softisp/soft_simple.cpp index d4ab91e30..e84feeea7 100644 --- a/src/ipa/simple/soft_simple.cpp +++ b/src/ipa/softisp/soft_simple.cpp @@ -20,7 +20,7 @@ #include #include -#include +#include #include "libcamera/internal/software_isp/debayer_params.h" #include "libcamera/internal/software_isp/swisp_stats.h" @@ -342,7 +342,7 @@ extern "C" { const struct IPAModuleInfo ipaModuleInfo = { IPA_MODULE_API_VERSION, 0, - "simple", + "softisp", }; IPAInterface *ipaCreate() diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp index 25fc11989..a803f6208 100644 --- a/src/libcamera/pipeline_handler.cpp +++ b/src/libcamera/pipeline_handler.cpp @@ -844,8 +844,10 @@ void PipelineHandler::disconnect() * * Create an IPA module using \a ipaName as the matching identifier. This * overload allows pipeline handlers to create an IPA module by specifying its - * name instead of relying on the fact that the IPA module matches the pipeline - * handler's one. + * name instead of relying on the fact that the IPA module matches the IPA + * proxy's type name. + * + * \deprecated This method is deprecated and *MUST* not be used in new code. * * \return A newly created IPA proxy, or nullptr if no matching IPA module is * found or if the IPA proxy fails to initialize @@ -858,7 +860,7 @@ void PipelineHandler::disconnect() * \param[in] minVersion Minimum acceptable version of IPA module * \param[in] maxVersion Maximum acceptable version of IPA module * - * Create an IPA module using the pipeline handler name as the matching + * Create an IPA module using the IPA proxy's type name as the matching * identifier. This overload allows pipeline handler to create an IPA module * whose name matches the pipeline handler one. * diff --git a/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl index d48b90dcf..259ed47c3 100644 --- a/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl +++ b/utils/codegen/ipc/generators/libcamera_templates/module_ipa_proxy.h.tmpl @@ -40,6 +40,8 @@ class {{proxy_name}}Isolated; class {{proxy_name}} : public IPAProxy, public {{interface_name}}, public Object { public: + static constexpr const char *name() { return "{{module_name}}"; } + using Threaded = {{proxy_name}}Threaded; using Isolated = {{proxy_name}}Isolated; From patchwork Mon Aug 17 13:40:40 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 27832 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 EBE4DC3264 for ; Mon, 17 Aug 2026 13:41:04 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 78C19682AC; Mon, 17 Aug 2026 15:41:04 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="eCZIXOta"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fFIywvwR"; dkim-atps=neutral Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 2A1F168256 for ; Mon, 17 Aug 2026 15:40:56 +0200 (CEST) Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67HD62iO2329861 for ; Mon, 17 Aug 2026 13:40:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=NmvTy+3kYGj 2XuEradt72mdgEMtvezApmbnXkLn95o4=; b=eCZIXOtaFsv/54nkHgy0HnI3mP/ /lCGfVstR/RH/C0OQzNL4ZM84ujDFr62rvY0Yywgf/PIjYQg4+plCLSb0lN0mujA yIUdvUm3qae7V4OSEb4uGo29Ivo/7bVitQqJezjgbq6ia97Pns6QcPkuNIqPGaRM SyexgroAee/AJEHMXJHmFYitkutVO/HkrN+IO9bZeNZeNbv5a91u9LOqU0h9B6Vs qoDI/gPj0lcAqbcJ8wRKdXH5ACCGfXMfZPUqKI43dhXE9uay6On/KpJWSL4mPfSS DMhWdTOszcTiDAHD92TmLYAQSFNUI9JF3wAL7GzZ7EUkXZhp2PsI7TjRl5Q== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g3vghsvd7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 17 Aug 2026 13:40:54 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-9368b4c5964so279133285a.1 for ; Mon, 17 Aug 2026 06:40:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786974054; x=1787578854; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=NmvTy+3kYGj2XuEradt72mdgEMtvezApmbnXkLn95o4=; b=fFIywvwRbvP6n47mLzFieusqQHz+WKIYiyzaT88kKyoWp1tJxt5lMPpgbqLtY8Hjp+ 8XZ8E8oHaVY3TPi+RlJ2fUPxjcA7iAeMPrHXev2JikL3/UjoOiejwdQZ/Mlfgfxb8B9o JQjJgTRyOUGjqo6K9EGyNmAD4y4c0kqi7tbroaBGntaxLRq7fE/2WBtoSbTuhel6WrTr gn+TtrtNCUHSK0kc0jwT68Ml+6y8EsXDBd305SHvTAUw6a/3vQq5nj4LZ7i6GnLn65N1 o4lh0ng4FuMMEvbY80Il1kPWJLSskjapfENQIN9kPz7nkkSDMmlF9aIeEYBCY55LkRFZ hlKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786974054; x=1787578854; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=NmvTy+3kYGj2XuEradt72mdgEMtvezApmbnXkLn95o4=; b=NUppj8YkxgZSxnPS17nHdTRnxw0aQXwd0uhblGS28xt0Q5TmXWAiwEL8NWSVbF2lrM jo0cykMbXUg4RA02ijANXfxcYz/M4ytDKYFiokMS9+ErIuym93Ff40FSFqo30mLLMKAZ mMu8cJ2xTsCaGxXm0wugingg/OiGlhFV5AiWcAJlYyIMSRojZhe0RnHkKLZyedflS7HE BFicgj+SGIYCwcjn8bFNySVBgx/7IaQz53CiahTA8FIXXns8zn9fp3fsyGUsQdsSpzO+ zxg/K4Mp+jKCuVRdKeVRhpD9/Ww5i0yKI2a17PwcDkX1Lts6LdrfmnUeR0coRIJD/UJK dc9Q== X-Gm-Message-State: AOJu0Yz3AQblw/WTtckQ6rzPXApvz5OP41u9oQxa+I5EXrf6WArBh1m2 H5/IPyQPoRm+030EHw+0/KN6up8s4Se07XFAWhE8N3rnykl9nk3LLbzYTql2AQdxI+Pzu8Xkjf5 u1X8nNPHJhyDu8wo8Ga2ogdgoEOCCag/jeYuzv9+t1E1FYikpTBcLEM4sy4Q3CElwRZBuqYn4Q9 mdUSjiXeR7 X-Gm-Gg: AR+sD12YIkQDA+bdhgPzdLDrjq6CicfqkanZD2BMjYyn1WpdOCcqhTz9cLzFqxxbq1m I6gWxqe7slbF5SufhoKW8XvxF1iuA9RN769i66IZGlKiWmbEqV2qPADhRfv7TlZ7s34rGmp6dHv utvKmEtQEGJWEkCs02gEO/y689MSiSk/tVaRl7TsOy8ESHCfJKmdKfMbg85EjmJc+XcrUi6N2wa gKTDKUWFfszLFDn6CzfSdE2sAF+fNkYoaJhmiEvkF+iM2ybRdM2b+VzzsqSO6XXCEvQQMArqzhK eJUA3YMEjbxC1ySDQ4ZgIE/zcdrTguo6t1ahpUPkjLbkxKxG6rvSfDJ6v9lEKww1WzlqgxRVGox KB5LE72/J/aX+nC8mz2V1n2lkrtk4 X-Received: by 2002:a05:620a:2984:b0:92e:7733:e3ac with SMTP id af79cd13be357-93704b37d04mr67097385a.20.1786974053323; Mon, 17 Aug 2026 06:40:53 -0700 (PDT) X-Received: by 2002:a05:620a:2984:b0:92e:7733:e3ac with SMTP id af79cd13be357-93704b37d04mr67088985a.20.1786974052687; Mon, 17 Aug 2026 06:40:52 -0700 (PDT) Received: from t14s.vakwerkhuis.com ([78.108.130.194]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a3d8517181sm772179a12.1.2026.08.17.06.40.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 06:40:51 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , =?utf-8?q?Niklas_S=C3=B6?= =?utf-8?q?derlund?= , Loic Poulain , Hans de Goede Subject: [PATCH v8 6/8] ipa: softisp: Rename IPASoftSimple to IPASoftIsp Date: Mon, 17 Aug 2026 15:40:40 +0200 Message-ID: <20260817134042.277168-7-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> References: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Authority-Analysis: v=2.4 cv=P9gKQCAu c=1 sm=1 tr=0 ts=6a830f66 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=rrvG0T/C2D967D07Ol03YQ==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=P1BnusSwAAAA:8 a=EUspDBNiAAAA:8 a=ITOby1vZJKKE0CwQNbMA:9 a=bTQJ7kPSJx9SKPbeHEYW:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX2xiqjD6FSlMK /VxIhg4B9rqQfx37NxjbKA5D6c1ZYZJJl0pXCEKS63sSimfnys/0ETYI/6DRo+F1F+y4IV3S5Ph MvA9yLI+pW0CyYdILlSH8JEtyBtCQHM= X-Proofpoint-ORIG-GUID: sgHFf6a0Mrhhiovx4j2RHbNz5uvHMzw6 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX5toeTMUQwIjz HV+L8StxU+qJjDYtz7xR9+jQlBNpZPWbHQRF59V2yPF6OlDaPAMCnjvTv4AU7chlVo1lENemh2x R5vxvJDGW2e1IO4Q6bHSdsERqeOllhW0YNbmXAzmUWZ2W2Y4vQ32d1W/buL3785X+uKyZUI49fm 9i+zBSZXS2hFaaUH1bk2vyhhWSpEhbjEmC/kp7jYghMH6v6GljA3wJ7H8y0tX8w9kN8ivfK5T7S lHQH9E2btO2tlzNBubm9wiEravQuvQA5cWp2JTXIe/3CAs9mssxkIlTV25k30IxQGcQJjppc50F tT8RxjFBltHBJP7021bTXiAQhczzAhEeoa+f8qePww0eCP+QqYZk+6uYnf8RnQBAJJjohW0rnUp t0iT6/QEQHraRxX2R+Li05sYeGwbFLXK+cLIuGxaopZF/Ewmx1ja7NgTg0RyiiADfW5aQbiqaC1 qT+hfUBshihgJ9t9keg== X-Proofpoint-GUID: sgHFf6a0Mrhhiovx4j2RHbNz5uvHMzw6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1176, Hydra:6.1.134, FMLib:17.12.100.49 definitions=2026-08-17_01,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 impostorscore=0 malwarescore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 spamscore=0 phishscore=0 bulkscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608170104 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" The simple_soft IPA is the IPA for the software ISP and the software ISP may be plugged into any pipeline, drop the Simple part from the class names and replace Soft with SoftIsp. Also rename the IPA.so file from soft_simple to softisp. Reviewed-by: Jacopo Mondi Signed-off-by: Hans de Goede --- Changes in v7: - New patch in v7 of this patch-series --- .../internal/software_isp/software_isp.h | 2 +- include/libcamera/ipa/softisp.mojom | 4 +- src/ipa/softisp/algorithms/adjust.cpp | 8 +- src/ipa/softisp/algorithms/agc.cpp | 8 +- src/ipa/softisp/algorithms/awb.cpp | 16 ++-- src/ipa/softisp/algorithms/awb.h | 6 +- src/ipa/softisp/algorithms/blc.cpp | 6 +- src/ipa/softisp/algorithms/ccm.cpp | 2 +- src/ipa/softisp/algorithms/meson.build | 2 +- src/ipa/softisp/ipa_context.h | 2 +- src/ipa/softisp/meson.build | 10 +-- .../softisp/{soft_simple.cpp => softisp.cpp} | 74 +++++++++---------- src/libcamera/software_isp/software_isp.cpp | 2 +- 13 files changed, 71 insertions(+), 71 deletions(-) rename src/ipa/softisp/{soft_simple.cpp => softisp.cpp} (83%) diff --git a/include/libcamera/internal/software_isp/software_isp.h b/include/libcamera/internal/software_isp/software_isp.h index 3205a2e14..2363a91c8 100644 --- a/include/libcamera/internal/software_isp/software_isp.h +++ b/include/libcamera/internal/software_isp/software_isp.h @@ -101,7 +101,7 @@ private: DmaBufAllocator dmaHeap_; bool ccmEnabled_; - std::unique_ptr ipa_; + std::unique_ptr ipa_; std::deque queuedInputBuffers_; std::deque queuedOutputBuffers_; }; diff --git a/include/libcamera/ipa/softisp.mojom b/include/libcamera/ipa/softisp.mojom index 77328c5fd..66cf311b3 100644 --- a/include/libcamera/ipa/softisp.mojom +++ b/include/libcamera/ipa/softisp.mojom @@ -12,7 +12,7 @@ struct IPAConfigInfo { libcamera.ControlInfoMap sensorControls; }; -interface IPASoftInterface { +interface IPASoftIspInterface { init(libcamera.IPASettings settings, libcamera.SharedFD fdStats, libcamera.SharedFD fdParams, @@ -31,7 +31,7 @@ interface IPASoftInterface { libcamera.ControlList sensorControls); }; -interface IPASoftEventInterface { +interface IPASoftIspEventInterface { setSensorControls(libcamera.ControlList sensorControls); setIspParams(); metadataReady(uint32 frame, libcamera.ControlList metadata); diff --git a/src/ipa/softisp/algorithms/adjust.cpp b/src/ipa/softisp/algorithms/adjust.cpp index 8bf39c4c8..52eb81d76 100644 --- a/src/ipa/softisp/algorithms/adjust.cpp +++ b/src/ipa/softisp/algorithms/adjust.cpp @@ -22,7 +22,7 @@ namespace ipa::soft::algorithms { constexpr float kDefaultContrast = 1.0f; constexpr float kDefaultSaturation = 1.0f; -LOG_DEFINE_CATEGORY(IPASoftAdjust) +LOG_DEFINE_CATEGORY(IPASoftIspAdjust) int Adjust::init(IPAContext &context, [[maybe_unused]] const ValueNode &tuningData) { @@ -54,19 +54,19 @@ void Adjust::queueRequest(typename Module::Context &context, const auto &gamma = controls.get(controls::Gamma); if (gamma.has_value()) { context.activeState.knobs.gamma = gamma.value(); - LOG(IPASoftAdjust, Debug) << "Setting gamma to " << gamma.value(); + LOG(IPASoftIspAdjust, Debug) << "Setting gamma to " << gamma.value(); } const auto &contrast = controls.get(controls::Contrast); if (contrast.has_value()) { context.activeState.knobs.contrast = contrast; - LOG(IPASoftAdjust, Debug) << "Setting contrast to " << contrast.value(); + LOG(IPASoftIspAdjust, Debug) << "Setting contrast to " << contrast.value(); } const auto &saturation = controls.get(controls::Saturation); if (saturation.has_value()) { context.activeState.knobs.saturation = saturation; - LOG(IPASoftAdjust, Debug) << "Setting saturation to " << saturation.value(); + LOG(IPASoftIspAdjust, Debug) << "Setting saturation to " << saturation.value(); } } diff --git a/src/ipa/softisp/algorithms/agc.cpp b/src/ipa/softisp/algorithms/agc.cpp index a13a75528..72f000628 100644 --- a/src/ipa/softisp/algorithms/agc.cpp +++ b/src/ipa/softisp/algorithms/agc.cpp @@ -17,7 +17,7 @@ namespace libcamera { -LOG_DEFINE_CATEGORY(IPASoftExposure) +LOG_DEFINE_CATEGORY(IPASoftIspExposure) namespace ipa::soft::algorithms { @@ -118,7 +118,7 @@ void Agc::updateExposure(IPAContext &context, IPAFrameContext &frameContext, dou context.activeState.agc.exposure = exposure; context.activeState.agc.again = again; - LOG(IPASoftExposure, Debug) + LOG(IPASoftIspExposure, Debug) << "exposureMSV " << exposureMSV << " error " << error << " factor " << factor << " exp " << exposure << " again " << again; @@ -172,7 +172,7 @@ void Agc::process(IPAContext &context, unsigned int num = 0; if (yHistValsPerBin == 0) { - LOG(IPASoftExposure, Debug) + LOG(IPASoftIspExposure, Debug) << "Not adjusting exposure due to insufficient histogram data"; return; } @@ -183,7 +183,7 @@ void Agc::process(IPAContext &context, } for (unsigned int i = 0; i < kExposureBinsCount; i++) { - LOG(IPASoftExposure, Debug) << i << ": " << exposureBins[i]; + LOG(IPASoftIspExposure, Debug) << i << ": " << exposureBins[i]; denom += exposureBins[i]; num += exposureBins[i] * (i + 1); } diff --git a/src/ipa/softisp/algorithms/awb.cpp b/src/ipa/softisp/algorithms/awb.cpp index 0bd6b66ce..84f01b832 100644 --- a/src/ipa/softisp/algorithms/awb.cpp +++ b/src/ipa/softisp/algorithms/awb.cpp @@ -16,7 +16,7 @@ namespace libcamera { -LOG_DEFINE_CATEGORY(IPASoftAwb) +LOG_DEFINE_CATEGORY(IPASoftIspAwb) namespace ipa::soft::algorithms { @@ -25,12 +25,12 @@ namespace ipa::soft::algorithms { */ static constexpr unsigned int kDefaultLux = 500; -class SimpleAwbStats final : public AwbStats +class SoftIspAwbStats final : public AwbStats { public: - SimpleAwbStats() = default; + SoftIspAwbStats() = default; - SimpleAwbStats(const RGB &rgbMeans) + SoftIspAwbStats(const RGB &rgbMeans) { rgbMeans_ = rgbMeans; @@ -112,8 +112,8 @@ void Awb::prepare(IPAContext &context, params->gains = frameContext.awb.gains; } -SimpleAwbStats Awb::calculateRgbMeans(IPAContext &context, - const SwIspStats *stats) const +SoftIspAwbStats Awb::calculateRgbMeans(IPAContext &context, + const SwIspStats *stats) const { if (!stats->valid) return {}; @@ -141,7 +141,7 @@ SimpleAwbStats Awb::calculateRgbMeans(IPAContext &context, static_cast(sum.g()) / nPixels, static_cast(sum.b()) / nPixels } }; - return SimpleAwbStats(rgbMeans); + return SoftIspAwbStats(rgbMeans); } /** @@ -151,7 +151,7 @@ void Awb::process(IPAContext &context, [[maybe_unused]] const uint32_t frame, IPAFrameContext &frameContext, const SwIspStats *stats, ControlList &metadata) { - SimpleAwbStats awbStats = calculateRgbMeans(context, stats); + SoftIspAwbStats awbStats = calculateRgbMeans(context, stats); awbAlgo_.process(context.activeState.awb, frameContext.awb, awbStats, kDefaultLux, metadata); diff --git a/src/ipa/softisp/algorithms/awb.h b/src/ipa/softisp/algorithms/awb.h index 59ab6fd79..37893932b 100644 --- a/src/ipa/softisp/algorithms/awb.h +++ b/src/ipa/softisp/algorithms/awb.h @@ -22,7 +22,7 @@ namespace libcamera { namespace ipa::soft::algorithms { -class SimpleAwbStats; +class SoftIspAwbStats; class Awb : public Algorithm { @@ -48,8 +48,8 @@ public: ControlList &metadata) override; private: - SimpleAwbStats calculateRgbMeans(IPAContext &context, - const SwIspStats *stats) const; + SoftIspAwbStats calculateRgbMeans(IPAContext &context, + const SwIspStats *stats) const; /* * There actually is no Q register format for SoftISP, but allow the diff --git a/src/ipa/softisp/algorithms/blc.cpp b/src/ipa/softisp/algorithms/blc.cpp index e45a913cd..fca76f442 100644 --- a/src/ipa/softisp/algorithms/blc.cpp +++ b/src/ipa/softisp/algorithms/blc.cpp @@ -17,7 +17,7 @@ namespace libcamera { namespace ipa::soft::algorithms { -LOG_DEFINE_CATEGORY(IPASoftBL) +LOG_DEFINE_CATEGORY(IPASoftIspBL) BlackLevel::BlackLevel() { @@ -90,7 +90,7 @@ void BlackLevel::process(IPAContext &context, const unsigned int total = std::accumulate(begin(histogram), end(histogram), 0); if (total == 0) { - LOG(IPASoftBL, Debug) << "Not guessing black level, histogram is empty"; + LOG(IPASoftIspBL, Debug) << "Not guessing black level, histogram is empty"; return; } @@ -107,7 +107,7 @@ void BlackLevel::process(IPAContext &context, context.activeState.blc.level = i * histogramRatio; context.activeState.blc.lastExposure = frameContext.sensor.exposure; context.activeState.blc.lastGain = frameContext.sensor.gain; - LOG(IPASoftBL, Debug) + LOG(IPASoftIspBL, Debug) << "Auto-set black level: " << i << "/" << SwIspStats::kYHistogramSize << " (" << 100 * (seen - histogram[i]) / total << "% below, " diff --git a/src/ipa/softisp/algorithms/ccm.cpp b/src/ipa/softisp/algorithms/ccm.cpp index 8b6da543a..58e17bbeb 100644 --- a/src/ipa/softisp/algorithms/ccm.cpp +++ b/src/ipa/softisp/algorithms/ccm.cpp @@ -14,7 +14,7 @@ namespace libcamera { namespace ipa::soft::algorithms { -LOG_DEFINE_CATEGORY(IPASoftCcm) +LOG_DEFINE_CATEGORY(IPASoftIspCcm) /** * \copydoc libcamera::ipa::Algorithm::init diff --git a/src/ipa/softisp/algorithms/meson.build b/src/ipa/softisp/algorithms/meson.build index 73c637220..d240409e5 100644 --- a/src/ipa/softisp/algorithms/meson.build +++ b/src/ipa/softisp/algorithms/meson.build @@ -1,6 +1,6 @@ # SPDX-License-Identifier: CC0-1.0 -soft_simple_ipa_algorithms = files([ +softisp_ipa_algorithms = files([ 'adjust.cpp', 'awb.cpp', 'agc.cpp', diff --git a/src/ipa/softisp/ipa_context.h b/src/ipa/softisp/ipa_context.h index ff312ae8f..bccf95775 100644 --- a/src/ipa/softisp/ipa_context.h +++ b/src/ipa/softisp/ipa_context.h @@ -2,7 +2,7 @@ /* * Copyright (C) 2024-2026 Red Hat, Inc. * - * Simple pipeline IPA Context + * Software ISP IPA Context */ #pragma once diff --git a/src/ipa/softisp/meson.build b/src/ipa/softisp/meson.build index 2f9f15f4a..755b7eaab 100644 --- a/src/ipa/softisp/meson.build +++ b/src/ipa/softisp/meson.build @@ -3,16 +3,16 @@ subdir('algorithms') subdir('data') -ipa_name = 'ipa_soft_simple' +ipa_name = 'ipa_softisp' -soft_simple_sources = files([ +softisp_sources = files([ 'ipa_context.cpp', - 'soft_simple.cpp', + 'softisp.cpp', ]) -soft_simple_sources += soft_simple_ipa_algorithms +softisp_sources += softisp_ipa_algorithms -mod = shared_module(ipa_name, soft_simple_sources, +mod = shared_module(ipa_name, softisp_sources, name_prefix : '', include_directories : [ipa_includes], dependencies : [libcamera_private, libipa_dep], diff --git a/src/ipa/softisp/soft_simple.cpp b/src/ipa/softisp/softisp.cpp similarity index 83% rename from src/ipa/softisp/soft_simple.cpp rename to src/ipa/softisp/softisp.cpp index e84feeea7..111325d7d 100644 --- a/src/ipa/softisp/soft_simple.cpp +++ b/src/ipa/softisp/softisp.cpp @@ -2,7 +2,7 @@ /* * Copyright (C) 2023, Linaro Ltd * - * Simple Software Image Processing Algorithm module + * Software ISP Image Processing Algorithm module */ #include @@ -32,7 +32,7 @@ #include "module.h" namespace libcamera { -LOG_DEFINE_CATEGORY(IPASoft) +LOG_DEFINE_CATEGORY(IPASoftIsp) using namespace std::literals::chrono_literals; @@ -41,15 +41,15 @@ namespace ipa::soft { /* Maximum number of frame contexts to be held */ static constexpr uint32_t kMaxFrameContexts = 16; -class IPASoftSimple : public ipa::soft::IPASoftInterface, public Module +class IPASoftIsp : public ipa::soft::IPASoftIspInterface, public Module { public: - IPASoftSimple() + IPASoftIsp() : context_(kMaxFrameContexts) { } - ~IPASoftSimple(); + ~IPASoftIsp(); int init(const IPASettings &settings, const SharedFD &fdStats, @@ -83,7 +83,7 @@ private: struct IPAContext context_; }; -IPASoftSimple::~IPASoftSimple() +IPASoftIsp::~IPASoftIsp() { if (stats_) munmap(stats_, sizeof(SwIspStats)); @@ -91,17 +91,17 @@ IPASoftSimple::~IPASoftSimple() munmap(params_, sizeof(DebayerParams)); } -int IPASoftSimple::init(const IPASettings &settings, - const SharedFD &fdStats, - const SharedFD &fdParams, - const IPACameraSensorInfo &sensorInfo, - const ControlInfoMap &sensorControls, - ControlInfoMap *ipaControls, - bool *ccmEnabled) +int IPASoftIsp::init(const IPASettings &settings, + const SharedFD &fdStats, + const SharedFD &fdParams, + const IPACameraSensorInfo &sensorInfo, + const ControlInfoMap &sensorControls, + ControlInfoMap *ipaControls, + bool *ccmEnabled) { camHelper_ = CameraSensorHelperFactoryBase::create(settings.sensorModel); if (!camHelper_) { - LOG(IPASoft, Warning) + LOG(IPASoftIsp, Warning) << "Failed to create camera sensor helper for " << settings.sensorModel; } @@ -112,7 +112,7 @@ int IPASoftSimple::init(const IPASettings &settings, File file(settings.configurationFile); if (!file.open(File::OpenModeFlag::ReadOnly)) { int ret = file.error(); - LOG(IPASoft, Error) + LOG(IPASoftIsp, Error) << "Failed to open configuration file " << settings.configurationFile << ": " << strerror(-ret); return ret; @@ -124,10 +124,10 @@ int IPASoftSimple::init(const IPASettings &settings, /* \todo Use the IPA configuration file for real. */ unsigned int version = (*data)["version"].get(0); - LOG(IPASoft, Debug) << "Tuning file version " << version; + LOG(IPASoftIsp, Debug) << "Tuning file version " << version; if (!data->contains("algorithms")) { - LOG(IPASoft, Error) << "Tuning file doesn't contain algorithms"; + LOG(IPASoftIsp, Error) << "Tuning file doesn't contain algorithms"; return -EINVAL; } @@ -141,12 +141,12 @@ int IPASoftSimple::init(const IPASettings &settings, stats_ = nullptr; if (!fdStats.isValid()) { - LOG(IPASoft, Error) << "Invalid Statistics handle"; + LOG(IPASoftIsp, Error) << "Invalid Statistics handle"; return -ENODEV; } if (!fdParams.isValid()) { - LOG(IPASoft, Error) << "Invalid Parameters handle"; + LOG(IPASoftIsp, Error) << "Invalid Parameters handle"; return -ENODEV; } @@ -154,7 +154,7 @@ int IPASoftSimple::init(const IPASettings &settings, void *mem = mmap(nullptr, sizeof(DebayerParams), PROT_WRITE, MAP_SHARED, fdParams.get(), 0); if (mem == MAP_FAILED) { - LOG(IPASoft, Error) << "Unable to map Parameters"; + LOG(IPASoftIsp, Error) << "Unable to map Parameters"; return -errno; } @@ -170,7 +170,7 @@ int IPASoftSimple::init(const IPASettings &settings, void *mem = mmap(nullptr, sizeof(SwIspStats), PROT_READ, MAP_SHARED, fdStats.get(), 0); if (mem == MAP_FAILED) { - LOG(IPASoft, Error) << "Unable to map Statistics"; + LOG(IPASoftIsp, Error) << "Unable to map Statistics"; return -errno; } @@ -187,19 +187,19 @@ int IPASoftSimple::init(const IPASettings &settings, * for V4L2_CID_EXPOSURE depend on the configured sensor resolution. */ if (sensorControls.find(V4L2_CID_EXPOSURE) == sensorControls.end()) { - LOG(IPASoft, Error) << "Don't have exposure control"; + LOG(IPASoftIsp, Error) << "Don't have exposure control"; return -EINVAL; } if (sensorControls.find(V4L2_CID_ANALOGUE_GAIN) == sensorControls.end()) { - LOG(IPASoft, Error) << "Don't have gain control"; + LOG(IPASoftIsp, Error) << "Don't have gain control"; return -EINVAL; } return 0; } -int IPASoftSimple::configure(const IPAConfigInfo &configInfo) +int IPASoftIsp::configure(const IPAConfigInfo &configInfo) { sensorInfoMap_ = configInfo.sensorControls; @@ -216,7 +216,7 @@ int IPASoftSimple::configure(const IPAConfigInfo &configInfo) context_.configuration.agc.exposureMin = exposureInfo.min().get(); context_.configuration.agc.exposureMax = exposureInfo.max().get(); if (!context_.configuration.agc.exposureMin) { - LOG(IPASoft, Warning) << "Minimum exposure is zero, that can't be linear"; + LOG(IPASoftIsp, Warning) << "Minimum exposure is zero, that can't be linear"; context_.configuration.agc.exposureMin = 1; } @@ -255,7 +255,7 @@ int IPASoftSimple::configure(const IPAConfigInfo &configInfo) return ret; } - LOG(IPASoft, Info) + LOG(IPASoftIsp, Info) << "Exposure " << context_.configuration.agc.exposureMin << "-" << context_.configuration.agc.exposureMax << ", gain " << context_.configuration.agc.againMin << "-" @@ -265,17 +265,17 @@ int IPASoftSimple::configure(const IPAConfigInfo &configInfo) return 0; } -int IPASoftSimple::start() +int IPASoftIsp::start() { return 0; } -void IPASoftSimple::stop() +void IPASoftIsp::stop() { context_.frameContexts.clear(); } -void IPASoftSimple::queueRequest(const uint32_t frame, const ControlList &controls) +void IPASoftIsp::queueRequest(const uint32_t frame, const ControlList &controls) { IPAFrameContext &frameContext = context_.frameContexts.alloc(frame); @@ -283,7 +283,7 @@ void IPASoftSimple::queueRequest(const uint32_t frame, const ControlList &contro algo->queueRequest(context_, frame, frameContext, controls); } -void IPASoftSimple::computeParams(const uint32_t frame) +void IPASoftIsp::computeParams(const uint32_t frame) { context_.activeState.combinedMatrix = Matrix::identity(); @@ -295,9 +295,9 @@ void IPASoftSimple::computeParams(const uint32_t frame) setIspParams.emit(); } -void IPASoftSimple::processStats(const uint32_t frame, - [[maybe_unused]] const uint32_t bufferId, - const ControlList &sensorControls) +void IPASoftIsp::processStats(const uint32_t frame, + [[maybe_unused]] const uint32_t bufferId, + const ControlList &sensorControls) { IPAFrameContext &frameContext = context_.frameContexts.get(frame); @@ -314,7 +314,7 @@ void IPASoftSimple::processStats(const uint32_t frame, /* Sanity check */ if (!sensorControls.contains(V4L2_CID_EXPOSURE) || !sensorControls.contains(V4L2_CID_ANALOGUE_GAIN)) { - LOG(IPASoft, Error) << "Control(s) missing"; + LOG(IPASoftIsp, Error) << "Control(s) missing"; return; } @@ -328,9 +328,9 @@ void IPASoftSimple::processStats(const uint32_t frame, setSensorControls.emit(ctrls); } -std::string IPASoftSimple::logPrefix() const +std::string IPASoftIsp::logPrefix() const { - return "IPASoft"; + return "IPASoftIsp"; } } /* namespace ipa::soft */ @@ -347,7 +347,7 @@ const struct IPAModuleInfo ipaModuleInfo = { IPAInterface *ipaCreate() { - return new ipa::soft::IPASoftSimple(); + return new ipa::soft::IPASoftIsp(); } } /* extern "C" */ diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp index c7165771c..d1fe02a2e 100644 --- a/src/libcamera/software_isp/software_isp.cpp +++ b/src/libcamera/software_isp/software_isp.cpp @@ -136,7 +136,7 @@ SoftwareIsp::SoftwareIsp(PipelineHandler *pipe, const CameraSensor *sensor, debayer_->inputBufferReady.connect(this, &SoftwareIsp::inputReady); debayer_->outputBufferReady.connect(this, &SoftwareIsp::outputReady); - ipa_ = pipe->createIPA(0, 0); + ipa_ = pipe->createIPA(0, 0); if (!ipa_) { LOG(SoftwareIsp, Error) << "Creating IPA for software ISP failed"; From patchwork Mon Aug 17 13:40:41 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 27833 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 20585C3301 for ; Mon, 17 Aug 2026 13:41:06 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id A5D426827B; Mon, 17 Aug 2026 15:41:05 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="YRWe3eWX"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="M2NJLNLU"; dkim-atps=neutral Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id DE1886828A for ; Mon, 17 Aug 2026 15:40:56 +0200 (CEST) Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67HD64b32238938 for ; Mon, 17 Aug 2026 13:40:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=svKD2n0AWJc 7sc0Ku9wMADkvDuzwi27J4gaFFbr0pfA=; b=YRWe3eWXRcHVl7jMt3Sb9Kx/yWd a1FffU3q2HRd8kdprnrYGR8iuzBssdmK99WMuoieu0l7xtyEQ1TSX8VJLmUkmZS5 WmTWCNM9jAGxtEKa8ZqssSPHWuqFhxqf5ag0aRUvuQDF9Xm961np1BhZXdTSHHy1 RKEkopQahBfkrKhk6V5blIe03kiSXSIPTdNbSAJQjnvfoS4402Rf0yfReVHLGay1 nCmXJl5yFfDusJR0AUu26igUKdX1fI+QqiZDIl1lXrWXHu1ZI7JWfP0SaC/GNRGe I8Bs9lNdXQk39m/hvrlwuuJq6WMNNUrdNlmvcEWH/cOtubCdlq8+jDOjS/A== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g3xyk95cx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 17 Aug 2026 13:40:55 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-92ec3146553so617543985a.1 for ; Mon, 17 Aug 2026 06:40:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786974055; x=1787578855; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=svKD2n0AWJc7sc0Ku9wMADkvDuzwi27J4gaFFbr0pfA=; b=M2NJLNLUCGct24YqwXJMEXR2hGXD5Rj8/QJx4wJrYerjbaZX39C0nLC9hBX7NFoIuy /6XxAUMTLtHOJt2ZttE2W7cgD0pK9NfMWS7iI7g0SiVODc4jquz+kE3CDCX1Fuiq+9GJ wfHuMzvY6NY2nYQmvjRbFnXBKsv4TKbRourOBShhS0ORil/l+1I5yeGo4QDV6WhDcnX0 obU+2BDZEMgAeTM3XQC/t2jhi7RVRaCgjpMHozQq/VfT4yLFpgi9/y02FwyVvz53tTYE CazWqQ4AeJVg9rJ2CMenT7x8gJwAHb36jLk4rB4Ml6HPdjgB4T9KM0QPr6UpDcksSJ9S ktpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786974055; x=1787578855; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=svKD2n0AWJc7sc0Ku9wMADkvDuzwi27J4gaFFbr0pfA=; b=UZnwL3mmGa5Xe4zprypMIyrw3vAPsOXE3z6nGzmimMfPu9pGqzqy2QBEHTOIrDOquD KZmhIWeLTx26yJ8vruRtQjt2/WxhgRC7+puIQ1j435DAVdKyRq+gEqBBUuHtC+Et3MNk tmjoOsMdVunas5SnBoOATpVZtf05Psu0wG+WTpPdl3Ce4Yf2SabYpF40yaD/lr8q2Q7i WyVRRg6pw/DTX9wfbqiBSzloe0EtUpiK1AhSDeBCL2A7XVbb7bIgs42aRvSNBFoIvsgF 3bk79VxfjBJNmDIBoeJvkyKULzJjHi8AKMwPVnePhhe+WO3SA7c+tix+hownjIp2q95S ln5w== X-Gm-Message-State: AOJu0YwQN43nGFFnFtVdTLKPbCFzEyoHkloH5wN6iXsxRoZiFMxNm0GJ bykT/qRfE+gKBDMHl5qPY2s48Uh8FRBfOqFtPQgnKJKQgGpW3w59ZdEzuXaVaFYHX7ZIMcnkXTJ z+xjJpPo6w7sEN8UG3BBBlMMmzcFCxxfcLgnals1XtziBszb3XerPlH/zgR0Qrhj59lwIiH2NRd Z4jHrRv+al X-Gm-Gg: AR+sD13od3dBZmDZNeM/y1nVfsrFhdjdZFilc9ph/r6GSSwNJP7u1GGGt8g5idYpC6Q erKJHANUUcsaBmK9Pn0UWXqaWXm5lXxBTe1x0Zb5LIQTPqQSdKZqXKinsegT4N8KGYVbfNtTLtJ QUodSW/0H7IT2fjzZQoEH8wIHtcXRiK7GpUfWdRmCr7KHKKsDqsxp2qddouwUggS+NKeOZYZ3VR 8p8ZOhg0rMQxGUN54owB4uKr/JZG6/VWFdlaohxnkXu2t3bD6Civn3xXuJL3AJ1Yw83BJnGEux4 7KFKS+H8OFVCR6YbszIktigXda0BZbSj9/sK/H/N5zuSvI/xg6chGPxQSqxaz4KCw/fDtoszIet nP14uc8HYZDB/dYYRSrvYW9c6vY++ X-Received: by 2002:a05:620a:4801:b0:92e:675e:8eef with SMTP id af79cd13be357-936d2023becmr2360237385a.15.1786974054559; Mon, 17 Aug 2026 06:40:54 -0700 (PDT) X-Received: by 2002:a05:620a:4801:b0:92e:675e:8eef with SMTP id af79cd13be357-936d2023becmr2360232385a.15.1786974053998; Mon, 17 Aug 2026 06:40:53 -0700 (PDT) Received: from t14s.vakwerkhuis.com ([78.108.130.194]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a3d8517181sm772179a12.1.2026.08.17.06.40.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 06:40:53 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , =?utf-8?q?Niklas_S=C3=B6?= =?utf-8?q?derlund?= , Loic Poulain , Hans de Goede Subject: [PATCH v8 7/8] ipa: softisp: Rename ipa::soft namespace to ipa::softisp Date: Mon, 17 Aug 2026 15:40:41 +0200 Message-ID: <20260817134042.277168-8-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> References: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-GUID: 3Go0ODOjzxxxG2rYUO32Tt2z66zo03oC X-Proofpoint-ORIG-GUID: 3Go0ODOjzxxxG2rYUO32Tt2z66zo03oC X-Authority-Analysis: v=2.4 cv=dLaWXuZb c=1 sm=1 tr=0 ts=6a830f67 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=rrvG0T/C2D967D07Ol03YQ==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=P1BnusSwAAAA:8 a=EUspDBNiAAAA:8 a=S-_Sen47HszD1NjcceEA:9 a=bTQJ7kPSJx9SKPbeHEYW:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX9054ZHWemAge YMC/E6MjV2qPUA0PaWzHWDlMt+fg23e8uUNu8AdU9PVEST2EsC6s0dynj/2uCMI3iu4r9x9eBnW KAFIH9yAwZLbUoMHY+kgXQ5EPEnI6JIm6+oisBJp+XlPokrLJQbOBRw9n95RiGzhiS7DnCjPi1L fypTx49BeZcWkYqhwQWl6AXlrs40haVugdJWkdnEULQ1ZeGmNqkWpZtXgm2suVLCgsS3eJ8cSe+ YanGMs60zW1koCNJWtfIx3+I+0M3FF3/m0WPNQrPpznU4pv04hGKG0idu8JcHvSaDw8vW+Xk5eB wwkRDcU7weGOXgepQEERaFJMNKKU5j5ku6+xVu+q9qlmFvD37j98GT76/xoHk1VZLgZ7jl6C7me wXNpasiyXNnBIFDeC03Wwo61JvT4KETLlJpObt03IXHDCKCxW35RzF8dtfO0ecrm1hS+N/Zv+gO nilSI8sdgsOJ+U6CHgg== X-Proofpoint-Spam-Info: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfXxD3HDIkaU9mA oVdH43+/yEQ9ZyikK211dUjxF7SOi4hOoQkx2XVSnqUm7ZMf/t2o+A6WTBUoVC6yv5R0PNAu+zM gd7P2VNQQfL+N1h8nHHvL2tLRB9ncfA= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1176, Hydra:6.1.134, FMLib:17.12.100.49 definitions=2026-08-17_01,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 suspectscore=0 adultscore=0 malwarescore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608170104 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" Rename ipa::soft namespace to ipa::softisp to match the softisp IPA name. Reviewed-by: Jacopo Mondi Signed-off-by: Hans de Goede --- Changes in v7: - New patch in v7 of this patch-series --- include/libcamera/internal/software_isp/software_isp.h | 4 ++-- include/libcamera/ipa/softisp.mojom | 2 +- src/ipa/softisp/algorithms/adjust.cpp | 4 ++-- src/ipa/softisp/algorithms/adjust.h | 4 ++-- src/ipa/softisp/algorithms/agc.cpp | 4 ++-- src/ipa/softisp/algorithms/agc.h | 4 ++-- src/ipa/softisp/algorithms/algorithm.h | 4 ++-- src/ipa/softisp/algorithms/awb.cpp | 4 ++-- src/ipa/softisp/algorithms/awb.h | 4 ++-- src/ipa/softisp/algorithms/blc.cpp | 4 ++-- src/ipa/softisp/algorithms/blc.h | 4 ++-- src/ipa/softisp/algorithms/ccm.cpp | 4 ++-- src/ipa/softisp/algorithms/ccm.h | 4 ++-- src/ipa/softisp/ipa_context.cpp | 4 ++-- src/ipa/softisp/ipa_context.h | 4 ++-- src/ipa/softisp/module.h | 4 ++-- src/ipa/softisp/softisp.cpp | 8 ++++---- src/libcamera/pipeline/simple/simple.cpp | 2 +- src/libcamera/software_isp/software_isp.cpp | 4 ++-- 19 files changed, 38 insertions(+), 38 deletions(-) diff --git a/include/libcamera/internal/software_isp/software_isp.h b/include/libcamera/internal/software_isp/software_isp.h index 2363a91c8..64c77e65c 100644 --- a/include/libcamera/internal/software_isp/software_isp.h +++ b/include/libcamera/internal/software_isp/software_isp.h @@ -65,7 +65,7 @@ public: int configure(const StreamConfiguration &inputCfg, const std::vector> &outputCfgs, - const ipa::soft::IPAConfigInfo &configInfo); + const ipa::softisp::IPAConfigInfo &configInfo); int exportBuffers(const Stream *stream, unsigned int count, std::vector> *buffers); @@ -101,7 +101,7 @@ private: DmaBufAllocator dmaHeap_; bool ccmEnabled_; - std::unique_ptr ipa_; + std::unique_ptr ipa_; std::deque queuedInputBuffers_; std::deque queuedOutputBuffers_; }; diff --git a/include/libcamera/ipa/softisp.mojom b/include/libcamera/ipa/softisp.mojom index 66cf311b3..55b6e4d7f 100644 --- a/include/libcamera/ipa/softisp.mojom +++ b/include/libcamera/ipa/softisp.mojom @@ -4,7 +4,7 @@ * \todo Document the interface and remove the related EXCLUDE_PATTERNS entry. */ -module ipa.soft; +module ipa.softisp; import "include/libcamera/ipa/core.mojom"; diff --git a/src/ipa/softisp/algorithms/adjust.cpp b/src/ipa/softisp/algorithms/adjust.cpp index 52eb81d76..56e2cf0e8 100644 --- a/src/ipa/softisp/algorithms/adjust.cpp +++ b/src/ipa/softisp/algorithms/adjust.cpp @@ -17,7 +17,7 @@ namespace libcamera { -namespace ipa::soft::algorithms { +namespace ipa::softisp::algorithms { constexpr float kDefaultContrast = 1.0f; constexpr float kDefaultSaturation = 1.0f; @@ -129,6 +129,6 @@ void Adjust::process([[maybe_unused]] IPAContext &context, REGISTER_IPA_ALGORITHM(Adjust, "Adjust") -} /* namespace ipa::soft::algorithms */ +} /* namespace ipa::softisp::algorithms */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/algorithms/adjust.h b/src/ipa/softisp/algorithms/adjust.h index 49c1f26c3..1acf7cdf1 100644 --- a/src/ipa/softisp/algorithms/adjust.h +++ b/src/ipa/softisp/algorithms/adjust.h @@ -15,7 +15,7 @@ namespace libcamera { -namespace ipa::soft::algorithms { +namespace ipa::softisp::algorithms { constexpr float kDefaultGamma = 2.2f; @@ -45,6 +45,6 @@ private: void applySaturation(Matrix &ccm, float saturation); }; -} /* namespace ipa::soft::algorithms */ +} /* namespace ipa::softisp::algorithms */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/algorithms/agc.cpp b/src/ipa/softisp/algorithms/agc.cpp index 72f000628..63b41544c 100644 --- a/src/ipa/softisp/algorithms/agc.cpp +++ b/src/ipa/softisp/algorithms/agc.cpp @@ -19,7 +19,7 @@ namespace libcamera { LOG_DEFINE_CATEGORY(IPASoftIspExposure) -namespace ipa::soft::algorithms { +namespace ipa::softisp::algorithms { /* * The number of bins to use for the optimal exposure calculations. @@ -194,6 +194,6 @@ void Agc::process(IPAContext &context, REGISTER_IPA_ALGORITHM(Agc, "Agc") -} /* namespace ipa::soft::algorithms */ +} /* namespace ipa::softisp::algorithms */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/algorithms/agc.h b/src/ipa/softisp/algorithms/agc.h index 112d9f5a1..369446192 100644 --- a/src/ipa/softisp/algorithms/agc.h +++ b/src/ipa/softisp/algorithms/agc.h @@ -11,7 +11,7 @@ namespace libcamera { -namespace ipa::soft::algorithms { +namespace ipa::softisp::algorithms { class Agc : public Algorithm { @@ -28,6 +28,6 @@ private: void updateExposure(IPAContext &context, IPAFrameContext &frameContext, double exposureMSV); }; -} /* namespace ipa::soft::algorithms */ +} /* namespace ipa::softisp::algorithms */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/algorithms/algorithm.h b/src/ipa/softisp/algorithms/algorithm.h index 41f631703..53db01c9d 100644 --- a/src/ipa/softisp/algorithms/algorithm.h +++ b/src/ipa/softisp/algorithms/algorithm.h @@ -13,10 +13,10 @@ namespace libcamera { -namespace ipa::soft { +namespace ipa::softisp { using Algorithm = libcamera::ipa::Algorithm; -} /* namespace ipa::soft */ +} /* namespace ipa::softisp */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/algorithms/awb.cpp b/src/ipa/softisp/algorithms/awb.cpp index 84f01b832..55fd326fc 100644 --- a/src/ipa/softisp/algorithms/awb.cpp +++ b/src/ipa/softisp/algorithms/awb.cpp @@ -18,7 +18,7 @@ namespace libcamera { LOG_DEFINE_CATEGORY(IPASoftIspAwb) -namespace ipa::soft::algorithms { +namespace ipa::softisp::algorithms { /* * \todo Replace it with a proper Lux algorithm @@ -159,6 +159,6 @@ void Awb::process(IPAContext &context, [[maybe_unused]] const uint32_t frame, REGISTER_IPA_ALGORITHM(Awb, "Awb") -} /* namespace ipa::soft::algorithms */ +} /* namespace ipa::softisp::algorithms */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/algorithms/awb.h b/src/ipa/softisp/algorithms/awb.h index 37893932b..c92bdbfd5 100644 --- a/src/ipa/softisp/algorithms/awb.h +++ b/src/ipa/softisp/algorithms/awb.h @@ -20,7 +20,7 @@ namespace libcamera { -namespace ipa::soft::algorithms { +namespace ipa::softisp::algorithms { class SoftIspAwbStats; @@ -59,6 +59,6 @@ private: AwbAlgorithm> awbAlgo_; }; -} /* namespace ipa::soft::algorithms */ +} /* namespace ipa::softisp::algorithms */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/algorithms/blc.cpp b/src/ipa/softisp/algorithms/blc.cpp index fca76f442..e35aabc35 100644 --- a/src/ipa/softisp/algorithms/blc.cpp +++ b/src/ipa/softisp/algorithms/blc.cpp @@ -15,7 +15,7 @@ namespace libcamera { -namespace ipa::soft::algorithms { +namespace ipa::softisp::algorithms { LOG_DEFINE_CATEGORY(IPASoftIspBL) @@ -119,6 +119,6 @@ void BlackLevel::process(IPAContext &context, REGISTER_IPA_ALGORITHM(BlackLevel, "BlackLevel") -} /* namespace ipa::soft::algorithms */ +} /* namespace ipa::softisp::algorithms */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/algorithms/blc.h b/src/ipa/softisp/algorithms/blc.h index 2933ff1ff..1d602927f 100644 --- a/src/ipa/softisp/algorithms/blc.h +++ b/src/ipa/softisp/algorithms/blc.h @@ -14,7 +14,7 @@ namespace libcamera { -namespace ipa::soft::algorithms { +namespace ipa::softisp::algorithms { class BlackLevel : public Algorithm { @@ -37,6 +37,6 @@ private: std::optional definedLevel_; }; -} /* namespace ipa::soft::algorithms */ +} /* namespace ipa::softisp::algorithms */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/algorithms/ccm.cpp b/src/ipa/softisp/algorithms/ccm.cpp index 58e17bbeb..039074494 100644 --- a/src/ipa/softisp/algorithms/ccm.cpp +++ b/src/ipa/softisp/algorithms/ccm.cpp @@ -12,7 +12,7 @@ namespace libcamera { -namespace ipa::soft::algorithms { +namespace ipa::softisp::algorithms { LOG_DEFINE_CATEGORY(IPASoftIspCcm) @@ -79,6 +79,6 @@ void Ccm::process([[maybe_unused]] IPAContext &context, REGISTER_IPA_ALGORITHM(Ccm, "Ccm") -} /* namespace ipa::soft::algorithms */ +} /* namespace ipa::softisp::algorithms */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/algorithms/ccm.h b/src/ipa/softisp/algorithms/ccm.h index 27f11bcbd..2a2030a41 100644 --- a/src/ipa/softisp/algorithms/ccm.h +++ b/src/ipa/softisp/algorithms/ccm.h @@ -19,7 +19,7 @@ namespace libcamera { -namespace ipa::soft::algorithms { +namespace ipa::softisp::algorithms { class Ccm : public Algorithm { @@ -45,6 +45,6 @@ private: CcmAlgorithm> ccmAlgo_; }; -} /* namespace ipa::soft::algorithms */ +} /* namespace ipa::softisp::algorithms */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/ipa_context.cpp b/src/ipa/softisp/ipa_context.cpp index 3f94bbebf..0c7cbbf78 100644 --- a/src/ipa/softisp/ipa_context.cpp +++ b/src/ipa/softisp/ipa_context.cpp @@ -13,7 +13,7 @@ * \brief Context and state information shared between the algorithms */ -namespace libcamera::ipa::soft { +namespace libcamera::ipa::softisp { /** * \struct IPASessionConfiguration @@ -99,4 +99,4 @@ namespace libcamera::ipa::soft { * \brief Black level used for the gamma table computation */ -} /* namespace libcamera::ipa::soft */ +} /* namespace libcamera::ipa::softisp */ diff --git a/src/ipa/softisp/ipa_context.h b/src/ipa/softisp/ipa_context.h index bccf95775..2eed32f88 100644 --- a/src/ipa/softisp/ipa_context.h +++ b/src/ipa/softisp/ipa_context.h @@ -24,7 +24,7 @@ namespace libcamera { -namespace ipa::soft { +namespace ipa::softisp { struct IPASessionConfiguration { struct { @@ -91,6 +91,6 @@ struct IPAContext { bool ccmEnabled = false; }; -} /* namespace ipa::soft */ +} /* namespace ipa::softisp */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/module.h b/src/ipa/softisp/module.h index b5d99ba08..b7f79aadf 100644 --- a/src/ipa/softisp/module.h +++ b/src/ipa/softisp/module.h @@ -20,11 +20,11 @@ namespace libcamera { -namespace ipa::soft { +namespace ipa::softisp { using Module = ipa::Module; -} /* namespace ipa::soft */ +} /* namespace ipa::softisp */ } /* namespace libcamera */ diff --git a/src/ipa/softisp/softisp.cpp b/src/ipa/softisp/softisp.cpp index 111325d7d..b3f0d3fa6 100644 --- a/src/ipa/softisp/softisp.cpp +++ b/src/ipa/softisp/softisp.cpp @@ -36,12 +36,12 @@ LOG_DEFINE_CATEGORY(IPASoftIsp) using namespace std::literals::chrono_literals; -namespace ipa::soft { +namespace ipa::softisp { /* Maximum number of frame contexts to be held */ static constexpr uint32_t kMaxFrameContexts = 16; -class IPASoftIsp : public ipa::soft::IPASoftIspInterface, public Module +class IPASoftIsp : public ipa::softisp::IPASoftIspInterface, public Module { public: IPASoftIsp() @@ -333,7 +333,7 @@ std::string IPASoftIsp::logPrefix() const return "IPASoftIsp"; } -} /* namespace ipa::soft */ +} /* namespace ipa::softisp */ /* * External IPA module interface @@ -347,7 +347,7 @@ const struct IPAModuleInfo ipaModuleInfo = { IPAInterface *ipaCreate() { - return new ipa::soft::IPASoftIsp(); + return new ipa::softisp::IPASoftIsp(); } } /* extern "C" */ diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp index e26f438d9..02a98f594 100644 --- a/src/libcamera/pipeline/simple/simple.cpp +++ b/src/libcamera/pipeline/simple/simple.cpp @@ -1603,7 +1603,7 @@ int SimplePipelineHandler::configure(Camera *camera, CameraConfiguration *c) if (data->converter_) { return data->converter_->configure(inputCfg, outputCfgs); } else { - ipa::soft::IPAConfigInfo configInfo; + ipa::softisp::IPAConfigInfo configInfo; configInfo.sensorControls = data->sensor_->controls(); return data->swIsp_->configure(inputCfg, outputCfgs, configInfo); } diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp index d1fe02a2e..f29f78c98 100644 --- a/src/libcamera/software_isp/software_isp.cpp +++ b/src/libcamera/software_isp/software_isp.cpp @@ -136,7 +136,7 @@ SoftwareIsp::SoftwareIsp(PipelineHandler *pipe, const CameraSensor *sensor, debayer_->inputBufferReady.connect(this, &SoftwareIsp::inputReady); debayer_->outputBufferReady.connect(this, &SoftwareIsp::outputReady); - ipa_ = pipe->createIPA(0, 0); + ipa_ = pipe->createIPA(0, 0); if (!ipa_) { LOG(SoftwareIsp, Error) << "Creating IPA for software ISP failed"; @@ -285,7 +285,7 @@ uint32_t SoftwareIsp::preferredInputStride(const PixelFormat &inputFormat, const */ int SoftwareIsp::configure(const StreamConfiguration &inputCfg, const std::vector> &outputCfgs, - const ipa::soft::IPAConfigInfo &configInfo) + const ipa::softisp::IPAConfigInfo &configInfo) { ASSERT(ipa_ && debayer_); From patchwork Mon Aug 17 13:40:42 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 27834 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 54C56C3264 for ; Mon, 17 Aug 2026 13:41:07 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 5B05C682A0; Mon, 17 Aug 2026 15:41:06 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="moWmRJuN"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Ae3NcN4X"; dkim-atps=neutral Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 2AC8568299 for ; Mon, 17 Aug 2026 15:40:59 +0200 (CEST) Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67HD6IWT2395062 for ; Mon, 17 Aug 2026 13:40:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 6ojiK8/yPfAa1toBNXbb2+xkfwkif46AM64OhQcn3ME=; b=moWmRJuNpbwnmhgj jyoZU9e6ffJsAFx1fPcgawIvtUPUsAq1f9q8Zsura6HxDcN6WKb2pmnfLAPuQoka JavoTldpTKEO+qPXrO83dNgfFE0FSM3898kX/LCsa0sHZpwp1/jYWFJYD+GoDfpP 5iUEtgWqYlnyz8vGxIf43+4yas7uQItEpJU6+E4R22AYuq37Mslmj9F1MDzWea4u +A8K7mx4SLvq5YpVFsfOBwy8MkdiUOBbxmOagcrF4r2CGj117vZDZiMUhW8qcqiL lyAKP1WFwi09843X1ADnAuIlH9gaBDtyMsz4idXy5SWdcaHOZdkapxKt+N+G6US/ 9DjkkA== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g3txya2jc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 17 Aug 2026 13:40:56 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-8f0f45415cfso34600846d6.2 for ; Mon, 17 Aug 2026 06:40:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786974056; x=1787578856; darn=lists.libcamera.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=6ojiK8/yPfAa1toBNXbb2+xkfwkif46AM64OhQcn3ME=; b=Ae3NcN4Xcxx7yUaP/ApYal2rnIjNgkWlHM8RV6pfXkf6UNhmr1oS3rYinqYJ2HCK2k fki1sd0GwlbCuZX/Xz17YiIPrv+ehdhLaKb0HGciWMLbMi3yflkJEAq6WgnW79LpUQ6Y Ve0w5P+/pddiQyx91iG77WxefUytu+ypTVELro94A0O+U1uHOyId85yAQWsR87mG6ZpW p0RsBoXUqpE64khEdCMu+hxgJUciUYbn2boHVEv806uBF0fDR3JPs5xyq/apnMHkeTZq bxsRSksl9+lIYAM/v2/MyuO1RTFLsu2XqZX6cfVl2u5JH9gCz2DJom7XizFAWvY1T6j1 Wlmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786974056; x=1787578856; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6ojiK8/yPfAa1toBNXbb2+xkfwkif46AM64OhQcn3ME=; b=C+RwU29tZTLP2nIW05/krT5+Q68Xx05f3//oJP6VJ6UBPRWRzOqIvyjZq2SZl2qaPp YgScjy7xuZltNWRC4copE+ysGpeVh+qDg7J1r5roGPh2B8fDzhkj1Y9L3T3zrJfEZ08W RcYta3BL/vZOvMcHxOO81gabZmP9PISbl1rpMSBVXB22uwrKcouRkrtZFgHXEVict4bB pwEbjjv7vhAKjxoQPpkZ46tOCvgRAY7S6KtmCqqsHoib4EQq1XT2fBGzGbTDIFe1o1zJ nz2DkGjlPSm0sbqHZX0xtOKM069gJXUoItKbFW4h3QTHfIBj1+84uJX1wgX4WW9nASBs buDQ== X-Gm-Message-State: AOJu0Ywa8cAu2b9ZO9vsFqmr6O/sgFzYhsBWqF3lHJOx+8syHX9VMEJv KQLNjd3m8HbRJ72cV9p8gwloXGKqpRow/jBE4F00Z5/5R08xEMDGGn1oQ9NypHJMzQvXIRYgrb9 75njnzNwTBegROUEV+IJdzlvnwHQ/wSoC+xmv6k7yDQf1Q+Xpv7wqgx+rgBQCz5K3mb02JYi8oZ 6MUMs8GTKR X-Gm-Gg: AR+sD10O79x0EZqtkUGr1Xvp4lc0o4RfZUfuS0n1YPU4kZaeY1YeWp2juXblKUSWOpn UnAvl3mMfQ/DKp0tHNA0EkWCUX+qEQTQXPWyJN5ffzhEK7wg/Rzr7QEXfXUt8p713J4WncY1Er9 iGx0RvMd2HLtQVCZ0xwamBiHdA/vGQgOPO69ijge6rhkxJsBt6uhH9yBTa4zF86RqzW+yXws9bp zlivoA5LUunF0LQeM3LltrUjeJRx9Cw2T+vtLuEAfNmKSYVVhceISE+oLvjDtT9JW9A9TuS41+K ll34DuRE/2Si1uFkiicP61KhnuVMwwILJ5fxd2KjJRdMEoSXiHNn9+hcKZ1PWA0dkVXajfjcoM7 Ql+mbq0ScPC92rpmRdTByclIKK4n/ X-Received: by 2002:a05:620a:408c:b0:933:ada:c3b2 with SMTP id af79cd13be357-936d2382749mr2596022085a.34.1786974055885; Mon, 17 Aug 2026 06:40:55 -0700 (PDT) X-Received: by 2002:a05:620a:408c:b0:933:ada:c3b2 with SMTP id af79cd13be357-936d2382749mr2596017385a.34.1786974055466; Mon, 17 Aug 2026 06:40:55 -0700 (PDT) Received: from t14s.vakwerkhuis.com ([78.108.130.194]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a3d8517181sm772179a12.1.2026.08.17.06.40.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 06:40:54 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Jacopo Mondi , =?utf-8?q?Niklas_S=C3=B6?= =?utf-8?q?derlund?= , Loic Poulain , Hans de Goede , Kieran Bingham , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= Subject: [PATCH v8 8/8] ipa: softisp: Rename setIspParams signal to paramsComputed Date: Mon, 17 Aug 2026 15:40:42 +0200 Message-ID: <20260817134042.277168-9-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> References: <20260817134042.277168-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-Spam-Info: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX2wA7AtgElRVI Una6vQOGobAWjbKAHb2BZrrY173AG8ejj9qGewD8eAkBpZe0hUJa70u22Ul5Dc6t5xT9kr0Kj1F fS0pXLTGCAbFzBMjGZX3ZHmSWeua/vQ= X-Authority-Analysis: v=2.4 cv=auGCzyZV c=1 sm=1 tr=0 ts=6a830f69 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=rrvG0T/C2D967D07Ol03YQ==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=P1BnusSwAAAA:8 a=EUspDBNiAAAA:8 a=X9iWcBBwFAc5_HUTaPUA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=iYH6xdkBrDN1Jqds4HTS:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODE3MDEwNCBTYWx0ZWRfX9mRDrvHQaCMO +DftWryMZjttV671I2qz48evMO1j5Cpo0DqbgbmhTRR7ii+yyAF8YnhnZQZsyBYaDjR8R6/HNdS luKD4ZkY80L9T0pGgfUgAq8VQ628FomYn3aUFmn82qhQI78KJ2RA8Xr4LO//nuX6zcLlpLSWebi P0HAE9vgHie9piCVlcZoGf9DhaJ3pW5NT/OPGwvlQezDItTDfN1vxGusGUSzliXV2MRkbjKPV/R KVzvQhBj1QmkVUMJytQvwCYezuY2efbCe/Vm8aolVbzFsflE3mrIZ26cQaNLsufCnAmSDyaGUAm +Xn4YS9MKwzpeTU6JAXxMNGXrMRn5g/SgQA+qGD1M6gv8HARB5lVRmwI+G3ymEnIkdxuSy+Cl2E 6gLmTJwdMBRJSHvhBCaM9y6uWI5+7IOnTtutrp8oGWrpB3EKjdUL8WB4xyZK6oZjAt9C1R+NTEt n+fDIIIy3xZWheN7S6w== X-Proofpoint-GUID: lFIAOV5CRREDXItihvIBAICi_XDcXxk- X-Proofpoint-ORIG-GUID: lFIAOV5CRREDXItihvIBAICi_XDcXxk- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1176, Hydra:6.1.134, FMLib:17.12.100.49 definitions=2026-08-17_01,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 adultscore=0 suspectscore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 phishscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608170104 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" Rename the softisp IPA setIspParams signal to paramsComputed and pass the frame-number as argument to make the softisp IPA behavior consistent with other IPA implementations. Reviewed-by: Kieran Bingham Reviewed-by: Barnabás Pőcze Reviewed-by: Jacopo Mondi Signed-off-by: Hans de Goede --- Changes in v7: - New patch in v7 of this patch-series --- include/libcamera/internal/software_isp/software_isp.h | 2 +- include/libcamera/ipa/softisp.mojom | 2 +- src/ipa/softisp/softisp.cpp | 2 +- src/libcamera/software_isp/software_isp.cpp | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/libcamera/internal/software_isp/software_isp.h b/include/libcamera/internal/software_isp/software_isp.h index 64c77e65c..da893d242 100644 --- a/include/libcamera/internal/software_isp/software_isp.h +++ b/include/libcamera/internal/software_isp/software_isp.h @@ -89,7 +89,7 @@ public: Signal setSensorControls; private: - void saveIspParams(); + void saveIspParams(uint32_t frame); void setSensorCtrls(const ControlList &sensorControls); void statsReady(uint32_t frame, uint32_t bufferId); void inputReady(FrameBuffer *input); diff --git a/include/libcamera/ipa/softisp.mojom b/include/libcamera/ipa/softisp.mojom index 55b6e4d7f..a892d84f1 100644 --- a/include/libcamera/ipa/softisp.mojom +++ b/include/libcamera/ipa/softisp.mojom @@ -33,6 +33,6 @@ interface IPASoftIspInterface { interface IPASoftIspEventInterface { setSensorControls(libcamera.ControlList sensorControls); - setIspParams(); + paramsComputed(uint32 frame); metadataReady(uint32 frame, libcamera.ControlList metadata); }; diff --git a/src/ipa/softisp/softisp.cpp b/src/ipa/softisp/softisp.cpp index b3f0d3fa6..aec04c528 100644 --- a/src/ipa/softisp/softisp.cpp +++ b/src/ipa/softisp/softisp.cpp @@ -292,7 +292,7 @@ void IPASoftIsp::computeParams(const uint32_t frame) algo->prepare(context_, frame, frameContext, params_); params_->combinedMatrix = context_.activeState.combinedMatrix; - setIspParams.emit(); + paramsComputed.emit(frame); } void IPASoftIsp::processStats(const uint32_t frame, diff --git a/src/libcamera/software_isp/software_isp.cpp b/src/libcamera/software_isp/software_isp.cpp index f29f78c98..ae86c20a8 100644 --- a/src/libcamera/software_isp/software_isp.cpp +++ b/src/libcamera/software_isp/software_isp.cpp @@ -171,7 +171,7 @@ SoftwareIsp::SoftwareIsp(PipelineHandler *pipe, const CameraSensor *sensor, return; } - ipa_->setIspParams.connect(this, &SoftwareIsp::saveIspParams); + ipa_->paramsComputed.connect(this, &SoftwareIsp::saveIspParams); ipa_->metadataReady.connect(this, [this](uint32_t frame, const ControlList &metadata) { metadataReady.emit(frame, metadata); @@ -432,7 +432,7 @@ void SoftwareIsp::process(uint32_t frame, FrameBuffer *input, FrameBuffer *outpu ConnectionTypeQueued, frame, input, output, debayerParams_); } -void SoftwareIsp::saveIspParams() +void SoftwareIsp::saveIspParams([[maybe_unused]] uint32_t frame) { debayerParams_ = *sharedParams_; }