From patchwork Wed Aug 12 18:50:48 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: 27765 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 42271C3264 for ; Wed, 12 Aug 2026 18:51:06 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id DD092682CF; Wed, 12 Aug 2026 20:51:05 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="BIvRMIdu"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="V+5Ks9GC"; 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 ADDE7682BC for ; Wed, 12 Aug 2026 20:51:03 +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 67CI8sGd3338088 for ; Wed, 12 Aug 2026 18:51:02 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=BIvRMIdu/l27KsXu g+nMGmhY6dDxtgVZfjoPFfQI5YRD7l72FWtHYRxc63wNFK4m4odi4pMjonZMvLFa TezyTPs8MqPpmOFwzbQEa/TRP0DCSi1GQHDqg60ThwJb6Wc+3z+qEXeR0o0NnEKm s4muwc139DVPxMzX+Xy7aXywX+fpfPnvRuiFfDNlj11IAQs+N+xJ5eFplbMArmYF Rg0z8xOW1d5ncTRW3RxDNgYxQz6x88SD98EYneMu3BuWyX9INZIbEn4fNCEVUbVT nbQpqgB8lky4q+ccXlkmOk3V94m79u/QZ7tCfrdoeP2NO67LekbHRFi2nuI9tOOD qTv7UQ== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g0hfw3q1w-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 18:51:02 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-5174a23afcbso17782921cf.3 for ; Wed, 12 Aug 2026 11:51:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786560662; x=1787165462; 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=V+5Ks9GC8GOc3jpPmxDmqCzxT8I8D+YMpAnHRLztAAwVhIw8+vTZ/us5x9xt8ztz1p RB+D21CQOZQL+pQ5NmDWnooSLOjMm0+rva/m/WqW/uBE9qb5lHhk0z62Mydtha9/ZkhC FLa+o0hOUA8nC1X9f7ZTYM/B7xgUCalPuJFGlZBYLutu/zxqprDGdhK2TAU7WxYVuVKF 4sbvbdgX0w4Gu84eSHgHrH2xq0JJBsfv14mDQSS2mHtQNmwskA9Dc2TnUsvvDtnyr3Ru AABXoJf5pbnDsd3ML6Alhz3S9eIhlml3qsxm2pR6+A3UoE4K/5UNk1jMDKfInWV7LKtV rlYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786560662; x=1787165462; 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=E3za7xZxoezdWBV6oT6MEjMkq/OSZmV4s9NZ8WqPxvwCey1hiLQHabbgk2WJLBZk4J FYrKrgiORcxWv1ufJ08oMMHrnex9VU3Z0QhNq/dgZ6AxFzlIml78lr4motIM9KJVJsQJ LkQC45OobDTgfzMNznaF1uedql15gZPStoVdLbJKRnMayxUXl0Cw7BFeRaa55NhRtVuc crvQ5rDb7SHo3fMWrdSBXGfTT57oCE28lQwaDAuvxqn7ndy1TSNePyWRepOmz73N6N8O UfFUedQwNlPfubnGoO3kPp4JdjOZFhf1WN4IG4MDhgYgiUyPIJr90xbo+xSSQyFNkC+s gFQw== X-Gm-Message-State: AOJu0Yx5LCDKEaM4GAc1P04w2+REPLCrkzBUb/7J4jLgXeZK3kHB3DYN 6RmiInt/I+eS7O6wJYHbdn3PK2SMWGaEFi0gkIJHd9ZBzc4azhUgye7B4QmekQg/trLBrt0H21V 8hlZnFL9Zim78bEDTDBkXukWKtdkS4cuscNb+/Hj0Luj90wcNGdK6d3O0xcy9WCtIRJwITbOA/j PaVXpoaKNw X-Gm-Gg: AR+sD11p7rEZx4eH5ARQbPZDmv2o3qyvmO5h/N4i96qQ63VzJy9P/8PlTKJPSahotLN X/ahuU70bbR6APHPt/Wsg5nMRAAbPB67LlNDRfYDLtpMqIyFbGK57myqMRGiGwvNbnE2/WMR4X1 cDo3wMFFVRBz1UOHZD3jVzORBoEVtjRMBkdJaUrehCILxkvt7zsNokxiR8RIWKGXD6xg70+ujUA Xr7HLXOFLQnfXCyBiaJ7RsgOLThu0+wkC/HxRDBm60aKhYr+NS0e8zdihlFFHRBDR9sPhh8xj8r lzzcL7hC/GoFs/FuN4sw6gDRj2L9fDP8alArYZok8A+gBUbHBSROAUFaShbfpYuvxgM1JX+Ou/+ 7CHToW2pj/5pxQDBhpfByDe8xdh04oAjiiMqnbSN/WR2c9J1lPg8/TYaHkp1AtJLwYgcOzP5Aa+ zT3wD/n8icAFgsoBY= X-Received: by 2002:a05:622a:1925:b0:51c:164b:b241 with SMTP id d75a77b69052e-52d73c4f679mr3642901cf.13.1786560661541; Wed, 12 Aug 2026 11:51:01 -0700 (PDT) X-Received: by 2002:a05:622a:1925:b0:51c:164b:b241 with SMTP id d75a77b69052e-52d73c4f679mr3642311cf.13.1786560660985; Wed, 12 Aug 2026 11:51:00 -0700 (PDT) Received: from shalem (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a37f8cd810sm47977a12.26.2026.08.12.11.50.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 11:50:59 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede , Kieran Bingham , =?utf-8?q?Niklas_S=C3=B6derlund?= , Jacopo Mondi Subject: [PATCH v7 1/8] libcamera: Create IPA by name Date: Wed, 12 Aug 2026 20:50:48 +0200 Message-ID: <20260812185055.289021-2-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> References: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX++lHAG6mkJVz ITKSqkOKCD0E0NAq+Pu+y29H5KRgOsP1WiEoBt/mS0TY6qdt/zflWO2c/h5n/tuJq4VayCpgcVI hVj1RAUFUBap7If0eaSmc1kuDkuBHrI= X-Proofpoint-GUID: KNfHnaG8zZH2oIz0aM1WnPqTSb-h89pV X-Authority-Analysis: v=2.4 cv=fpDsol4f c=1 sm=1 tr=0 ts=6a7cc096 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 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=rl81jYYfPRFGC34jM1YA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-ORIG-GUID: KNfHnaG8zZH2oIz0aM1WnPqTSb-h89pV X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX5Ehd7m5QHPCa KrXFAYm739eQcG/Hu1hTEHw40Re796bGT2P0N4ygIdciv0s73IgQYqdv8VXEWd2SblBcti+QRdR FqbkeYtEafYcnlBJ0X4dcAojZEfVPAwBdMXXmEd6ZE8hpU2mn9k+1YkHk+GaflIuT53puY+EYqK lwNHvEZh/cZbJ/dXulOHKGkUxSHPFZ9K/eK89o+Rnhd/BWktr34MdSDb0+QVTeoIiwvVjoGcMuA OZJaZo9wUBhFa9KYHaq+F8OKWjnPUFUVrPCzseKQq1cERYrhgL+QmgnsumRZhoeXvXoEY68pojz oFgb+DhKq75N0bLOQBEM5N3q/h89yqtHcZpnUT6gZZBVBgQixkHp41DKf3YUI9b+qQGgk89lLky rfp/TxLu5fCt9eTXuQpRrgKZ/TVMx6k35i+n1ikouJhVhiYiqEtzmjka+AWRPtbBOCRIJcaqTu2 2urC/HzqjOCxeA4kRLg== 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-12_05,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 spamscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 adultscore=0 malwarescore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120151 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 Wed Aug 12 18:50:49 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: 27766 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 DDB64C3264 for ; Wed, 12 Aug 2026 18:51:07 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 8A68B682D7; Wed, 12 Aug 2026 20:51:07 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="mPzNReDc"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WoHO2hdo"; 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 4D83F682D3 for ; Wed, 12 Aug 2026 20:51:06 +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 67CI8jxI355315 for ; Wed, 12 Aug 2026 18:51:05 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=mPzNReDcMFTrypXy SWAsqkuBgrKEzou0AoL9QgKhlhmDN9u4z4LtFQSGve3+qsndrLYYbZM0eT9QL9IY Tr3Yq19n61VMc/hlal4I31y77lsO3Mp8HubkmDhUUw0L+e2tguIscPw2TgVyYwcr EV+Lyz4YcAZL6r234KVFYcUFO1aVhLdPEdivO/LcW7ecQ/+vAUcJiDGrxWCsa5Qy J/G8sNtR3kFAOPqhKWVYXKWn2Z0hCALfXzTKOgohTQSDV2myj8L/oWpyOYQIwSrj 0xl01toE9ee9jJaevk8qZtDMhgYgIqdS2rmdopolprkxbc8bqIplPP800BP4nrsP DQX36w== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g0hj2ur40-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 18:51:04 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-51c0199faafso11953781cf.3 for ; Wed, 12 Aug 2026 11:51:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786560664; x=1787165464; 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=WoHO2hdoPWdqN4CswNLbqIQU/ZWys7r9mrF4qwM87rG2QABwrymlOFDMyXVdm1fOaQ PKqBHnjSlL/lOz4Md0X6PnsXgX2uNZDtLQpyT8sOE2IFk3bIhTvIWsbUk8dJCAe348iL OrwG0hBCUMvsPZVn+AlnVIKSWF5Iu+xwh/85z00YRrL4Mnn0LHHmMLOvrRsCm3Th4lsm SLAaOJChf3+jjHRIjvuAiu/XRcQqwJ76beX6aC8Y6Lyo0kvyWytOlcdz8qm45csTxgzF F6WLKwDR03H6ZSjxY1z/C2am7QCWVX/BafC0mOt9fTH1S59T7dF7mkE3Pu0F+Om76BqU mBnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786560664; x=1787165464; 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=BYlmN2b90Vh5pzh4n5otRqn0IzN8OQYAJajQz//rlw32UxeJaq2/EvvDd60lMx8tnd 3WjDfU2aSEP53nyriQjSpT5pjUvs/TH56b/C5sbcqNSizCi0k9l0EVekHBNwHVOupi6y cp4tB9jRkt6068UaCGpM2TCbbMkH+pvjKLMwq+yfb8Rtau/unDVyq3G2imy+xiNZCk6Y 8n6NXR5wl5aKBwzGnAYUq2dvh9XfEifh3OzsQTC3/wK0hRZVCu38/OxZKujFkqFpJfeV 7X/LecfO/darDFDqxoWahT3Tx7+XEQcIF07I9U8VJ0Np2xZnuxaK0zGBxvvKJBEY/nKJ e0Og== X-Gm-Message-State: AOJu0YxUL8Io/xS4+Pfx66ogoii/FfvsiCDcrD2GyQd7n3Ff3fM/PAEY JAxw5kfbFmfT4kh7Sudd/h56NlYDtyAZqHRa3bedH04XFvGolYItaas9JC7ZqgC6hr6BFR+Old/ Dm8UrH3lMJSDtHln2BfdH5Bu5VFTVf+fiWswNYsz7S5Tm4TC+0ZVSywrGVOzC5d/yU+e3vDCQDr 2QpYdXHlvq X-Gm-Gg: AR+sD11XsWSwDG/1c3MPkI2ZxdjwADFx5IsmWM6gCnp2SVV8xk9G7nwFbj50wxAfxCE KTWBy2K5Nz4Y7PNIDDH1dv2pHX9/Tt2e/EY36ecAAvrqrT1LIBbyTI6zT4+hfMM2u6PSlHWBENR +hplewaXpUoDST/+J0oDR39YbSuI0aiWDkEFrdxkJASaD9mTnRN/uAU0ngxeCB64L/HbR9N2S0I v1ikiBU56/960Ur6d/EuU4NMQKoWqjZgOfkYmlk1g+GLMQEneFmOQaq+jN6/nfrefU6ez541Pz4 oOMpm3XeXWuYTaMYCYRRhpAnCZrdP6lUaY2fnb0PwlEFh4R6rF4fIx0VaY99ebpi3Mdt8HBcTLp e699v2NgCYBRRIlJ0DRHuldRdND1NoOXEETLXP8ViRJewYqm6HOwYIOy2SJR+8SPZ2lNeT30/lT T9+hcZMDrByHv3Pjc= X-Received: by 2002:a05:622a:1b94:b0:527:6dc7:5c5b with SMTP id d75a77b69052e-52d73d15597mr3028731cf.21.1786560664325; Wed, 12 Aug 2026 11:51:04 -0700 (PDT) X-Received: by 2002:a05:622a:1b94:b0:527:6dc7:5c5b with SMTP id d75a77b69052e-52d73d15597mr3028181cf.21.1786560663834; Wed, 12 Aug 2026 11:51:03 -0700 (PDT) Received: from shalem (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a37f8cd810sm47977a12.26.2026.08.12.11.51.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 11:51:02 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede , Jacopo Mondi , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Kieran Bingham , =?utf-8?q?Niklas_S=C3=B6derlund?= Subject: [PATCH v7 2/8] ipa: ipa_module: Remove pipelineName Date: Wed, 12 Aug 2026 20:50:49 +0200 Message-ID: <20260812185055.289021-3-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> References: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Authority-Analysis: v=2.4 cv=a8EAM0SF c=1 sm=1 tr=0 ts=6a7cc098 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 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=lvZftHTMWe99GEGio_gA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-ORIG-GUID: yZYK6oZQXathUbnUCXjrfDuQcpka-7zZ X-Proofpoint-GUID: yZYK6oZQXathUbnUCXjrfDuQcpka-7zZ X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX9OvEp1pKMtev Guv7ASRAvgoecWYOgs8UyjWce+YQ97gHPu4sJv1dWbKzIlzZ7QQTyvuKwuTGVmJroLihnahDpq3 1bEpgym1O+R8pHfZQS1FgdSw0P0iAvY= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX+sGOOAEOaBuk ZGrH3Xp8P4bD7iKD6YiiUxmHi+ATs6fyzgruhdL+daeT1zdkmO0/XagR+ixGThiNpeg5EAT5e19 jrQLXNdIXdnYSjuiO8Fvu7J+3wA1Uz1zWfkuPWCdEBY7Uo13dDwZfXGu/5XB6FTqPNSlzvSfxIB 6sUjgZYXyunJcFEKpc7hNdCylXkhW8QCJYWQZumzTOkPzfU/5lzyvmoMK8dAph/CPU1NiZ/B6RA dK3ymQ0+Amlg/wjQjDF72PBKl6oPAcPnIWyBE16AP+q3/3w0aOKoBEFV1IIX4UrF2TPl4HPW6VK /+d309BbtEKkbRxVwGChwAQgNRU971S1nwvleJ/xCYO2cVT0MP16FdWQ2Vxd6s6RuUyiWzJR9PU x08PyZJHeN/OkvDWvBP2pkOWmlNqlFFskOarpL9Gw5Qbhuc9fRzlGGyo5y0eCeM7Eoz0fjocleg Zr3yFU8bMCFJFuUxJgg== 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-12_05,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 adultscore=0 spamscore=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-2608120151 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 Wed Aug 12 18:50:50 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: 27767 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 78693C3264 for ; Wed, 12 Aug 2026 18:51:11 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 1F7A7682D9; Wed, 12 Aug 2026 20:51:11 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="bKcDIes8"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XIxebIHZ"; 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 4C979682CC for ; Wed, 12 Aug 2026 20:51:09 +0200 (CEST) Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CI8gEn3792111 for ; Wed, 12 Aug 2026 18:51:07 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=bKcDIes8wCaEelZHflH0FHXFTfy 2owoqOUBXMyY/GBOS3bXgG62WVtsD5K2ZoJFpSfAjvHHxpOa7cLWVGDmdgxgGI7T 0rPIBlXHB/BS6ocPoM2jgbkLYaROVdWqVs6z3OMS4WTi6//1IFci2XQ8uiG5RUqw CtH67INeON9ryXTK83oeYyxWonpSd8BEcPgWg83/by6MZwTBcLQABoiyYLSLeiA2 qasRjsKzMjFGCGyUAyjy80JR3mRvXNQ91eCidaeWLrOfMjhqdQOkqKKJY1bY2enj RZAJVRHV/gmn/oWpLuOo1h6P80YsqDa8SKPnD8rIG2NtqsY/1B1eCZLNQOw== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g0mndawhg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 18:51:07 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-51c20762d21so19755151cf.0 for ; Wed, 12 Aug 2026 11:51:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786560666; x=1787165466; 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=XIxebIHZAcitbJRqASO9Q1K4OooZLAcWJtU0tHFkflgsyiGtdkvLVSClEjBI2VFJ5y StXArgy0HboGjUErezMQbciicq0b+8lL1ieOTLjoiOByoLZD+UnSVsCwX4vxSp+jV5pz 2LUWmz2GUCnk9sNZZiRt20alWJ6g3WUk87Zb+OHvLIotf0lVG7atS1uYAf4sZdv1S15h o+9utzCuMJCKmDK6Dz1hn8GFN9Ml474qAzjjNVTd5u8isMRcv4dCuooxYBAqvU219ZCZ SwVmP2EhRbhsHQGhjX/+l5ZOf1BcLk+X7Qk8VEP2QTJNmOWWPvMgw3ee7ZnnNJoouZr3 lNOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786560666; x=1787165466; 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=V1K53STKYlZKobZ2hQzzkRzcX2mN3QkH5nO6IcpO1ENZuhtb5nCbDduYtA+UmnFW8e UqZLRPctSZIIlR1p2s1tGWC06rJJ0ZzOUybqzROcjkCmRTa9eZBXyy1M9CINj9E12TIq a2nw80yy7ZoS3VjVPsmDCVpMGdVA7fxhtPA4x6LpgKSriVYr1BlV+a6KwLQPOwLhPCMv fKU1MhRcWbb5aRVwQUCBhQ41hxxS0lB4f5clNxQy6NVYzA97hCsw9vCl6NLZvwKWBkHQ 6Cr1YUKlT4WmuoBQKixVWEGT6MgsWIWSvHxlmAqFNnqSy5C7yRqP4JLIs+zlO9HNUjC/ 5obw== X-Gm-Message-State: AOJu0YylKvjX7N3VlbSH98+AqHE/5UmsQd8Rz+Xv4V7bSlWjFL+tICxf 7+WsKiQ2T2J6nVZRWm529Ax2kTrSgMw8Re3f5aiP0cBXO9oBo+4zMz/3DsEKDATnf3Xg71REUFG cZ516c0/op4ObcmEZpfJycr51MI9tJGvNgWFrDZQ4X4ZNmTWK0rBf2Lb0dE29PW6h/frqIpdKJF IW2s0VZmTS X-Gm-Gg: AR+sD12s4N/k7ylkvQcQXpuU637o2+rKVVMVdlq0Bl5QImEgGdLbaxDl3ZmFmvnO/1Z 4dAM343vkpgROOOhUXfFkK5PxRkdx8E1QS2NUi4Z9HzQCksgtROAN2/C8F2g+qXbbPyiyKydEmP s3lv1hsei8xSorKDphP0yRbyVpcpvLnXKqqaiEqo3t/8viUQPQ8aVfHRRXZBF1JVY9DqwAgNNoz mfV8JOEIsQUrmZzMmcYCSwY6a4Yt2f7ZIVeyZ8ymejsZmourALnWKHdwM/91JMqhnfxpqBaGV9f U+LlEZl83m4C3o0GYec5ygSrvLBE2JEXLCMs0lzYLFulVyFwsANyLB3zk0W+NRe+byMhONcFPCO DQnyyZDFHWXKNb1sxc1X4L+7VuKSdABkh3uKYPRAm+rS6U1NGdpoyc2Z9B1lisagqfBzFt0CB1J QeH/OwPYmrfSV8gZc= X-Received: by 2002:ac8:58d4:0:b0:51c:207f:6524 with SMTP id d75a77b69052e-52d73df08c6mr2621431cf.37.1786560666361; Wed, 12 Aug 2026 11:51:06 -0700 (PDT) X-Received: by 2002:ac8:58d4:0:b0:51c:207f:6524 with SMTP id d75a77b69052e-52d73df08c6mr2620941cf.37.1786560665858; Wed, 12 Aug 2026 11:51:05 -0700 (PDT) Received: from shalem (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a37f8cd810sm47977a12.26.2026.08.12.11.51.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 11:51:05 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede , Jacopo Mondi Subject: [PATCH v7 3/8] ipa: Allow pipelines to have differently named IPA Date: Wed, 12 Aug 2026 20:50:50 +0200 Message-ID: <20260812185055.289021-4-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> References: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX9ILAARujVdid JFVMNfsYzVfESe1oKG80K7G/J8cd+66endbwP6LsV8PnT7sEtyWzm0schK0f8uJzEPCbFZfn9+U OY5FlHOUtMQ8NZGY6anFU4AGvQBZ8pc= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfXybCXTsF8i6fl hg5JgEh6eOiFoLuD8FLqWBE1qnysYu241HGNm2Ybs4zkXj0ezXrYT/VE1SjfsQrVvFRlbPuMbny v6Szx2pwKYxo5bQS6rE8Yr+SPyNKdlM5SN1Y0RaXRAKxQb/Bnm/9aZghDafBBkDM5KkJ5AviANC +efHXHYX0EIiulYeinBHyXx5SS6O9722IfxDSEkebE+JLd5wT2gLS9kE/OC3VO5/dhPGHkGWZJC uu6jfahIFNGohoTeT7DUCL50yvsjAYn207urFvyhUL47Kkt9O2dzbfmWJ2qurIRAtiJ6UXIi1bi PadDfaBQ2Y8GoZnrNvjuVjXOSj5RKjga3Saaz/P4EXzys+rXPn2lDeefd6wC/dguKmmn98B5zCw C6Rh5wgUOjuYAZyhTxyEbPfImOb3wT7jiSyVmverd5NTCdACRboxCg+BIAJoxDCcdkI64t7cuxp e7pUT/XuAm1zMCk60Cw== X-Proofpoint-GUID: iUR4Vm26piw0qaWjcDq2PAMi3uxRSiaf X-Authority-Analysis: v=2.4 cv=C87ZDwP+ c=1 sm=1 tr=0 ts=6a7cc09b cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=P1BnusSwAAAA:8 a=EUspDBNiAAAA:8 a=c6ydndUcIca2Pb-fbGsA:9 a=uxP6HrT_eTzRwkO_Te1X:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-ORIG-GUID: iUR4Vm26piw0qaWjcDq2PAMi3uxRSiaf 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-12_05,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 phishscore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120151 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 Wed Aug 12 18:50:51 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: 27768 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 15BE0C3264 for ; Wed, 12 Aug 2026 18:51:13 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id B4363682DE; Wed, 12 Aug 2026 20:51:12 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="jp8dralr"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="U0y1v6nc"; 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 2933D682DA for ; Wed, 12 Aug 2026 20:51:11 +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 67CI8mAp277573 for ; Wed, 12 Aug 2026 18:51:10 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=jp8dralrUHwHZN90ClTnubCRNpD MK69n+nP+lsB1Vw1HdKeSnTn0FcB6nYsEgUYWE9+D5uUAMfR4Y1a/PWaag3p4PkG GohzKF+3BRiIhlWBNGFxXTBb3R99jQu9yFr15+ty1CWjO6FVgy6CQTTZ1Im5rZq1 bWx2TF4BL/r3qXTxMsqLkeWGWS5FlI7L3gl6ygsb0+XWpIEvcrXSCw4gVtFj7yAa A5lVIxEK55WTUD8Ek2ZbDG+klkcPYcSYNlqoJ+bVMKsXubKY3n4vCIIZXDqNlB00 z9FsXEDdVmyyW/vr9++VFFDlFEBinA8w5ELX3mkWDU/G3ZIbPFN6f00gw7Q== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g0hj1kqnf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 18:51:09 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c01ff996dso19446401cf.2 for ; Wed, 12 Aug 2026 11:51:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786560669; x=1787165469; 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=U0y1v6nck4YPaXCl45g42HSWmi4RPuNvm+HJwAcuKDnP0nhv8Kf2IC9a868Q0qflSV YjY0BMrWBZJf2Q2cWmkj4JqmUmlfPi4P7gYC3l+Zq8gXOicKC+wafIj0Z5j9q1z2q+Ru 3Z1WrSZ0Z6Xk1ZqaGt/GtRpZ/2bgH2p8IpBS1UxvGVe3Sdtanehx0+oZ/OXkRTHLtcz5 KM8T4qiL9RUHu2nOI5gfwiEduszu/QDEWgmmEYtTI+K9UMGobWUaSUoDZ0VZ5cuAh/YS 82/ZJKVlVZeXhzAsvijhzrJGFsqhHf6LiJINuBkSW49Cq0ajrcJdsy6xEuC1hCELVboX vtgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786560669; x=1787165469; 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=DZjqliZoKFRq0Be0o1SrjUJ5C5f7BVE435ITf4YW8OVRBO+2EyyZN00knTTsY01r5a tn1pI43O/Gk76J+k1eL+L02+OvHNmslDl8cP2ekgUiAUad4jIpSXNVsylGZCTLJeqReN wf3H8/yWxBGThoKKBgR+rXLgJ0yW/LZyweqU/jqWiLzM4FnKpd+v4Groc+fk5g0vKhiu QqDP5saW2K++sob1ex8649dWTPYzr1Ymt7JAYpchYTJmzpmlcItfskahFrP9hXPq4ck2 ntanAkq2cyQbIrWn8LiThuAHYl0Im/wPDe5q/oK3ZB0uEaJ6zpENbyobKLp2lPm5j0HH 7VAg== X-Gm-Message-State: AOJu0Ywssg2NLUj9GfrYL6efPnxF4WKl1Q6HPulm11STQEXo1BDHLuD7 gPjlo3OZTrUgPE5QQaifLchOw78V83/9lcSgVWAOk4vch9QF3xpUx+qsSl/8DsqZcqcqVShxLjH nzqjoZ4TEQv1zdLCS3gyoR7tI8S2FEFjmHocDX9pOu/1/lG0dAysusieVDmhMUDJh2PrZypHmby s5gTxmmHBM X-Gm-Gg: AR+sD13zRIqE4y+mAxKKV0d2DC23lJpR1HUpWDTNIQ/FB7jG62pswl+kC5g9ZhyEgTj sJToYHzjT4FY3j+KyQ5rRBJ7RbS9szys+BhT5rDtMho3oFM0wBFQiHoe4GZGq/7YiSSuA+EiGsS wAZ4uANlrJ+wkRQ/GqD5kGU7W7OXMf8SEvDBY/d/I9gROEE57/WLg3bhBvF3ELrI5c1o4UEaJdv 9VSh6avdOvYmrzxIEggqSkPoq4gJ+b+5HFHGjD/Olus+CigDJiY/8Vjf3CuCF4ypydMFL2LeimK pkdW+yb30xsb2Krbz12Ih/L+AbCbSciaF9/ol555U1NCfDVLl4mJuwhZv4yf5bSpYTg0zxY5HXe Q52dtkxRP42/WHw9BalPIRSPPL+kaYu9ONM7FGha01iDtNRrQTxQ5Hg8vAqNjRLYznFH1nVkOUl AcP5XbYwHC3hTdqlg= X-Received: by 2002:a05:622a:1903:b0:517:9c91:6246 with SMTP id d75a77b69052e-52d73e55e77mr1813891cf.44.1786560669095; Wed, 12 Aug 2026 11:51:09 -0700 (PDT) X-Received: by 2002:a05:622a:1903:b0:517:9c91:6246 with SMTP id d75a77b69052e-52d73e55e77mr1813561cf.44.1786560668633; Wed, 12 Aug 2026 11:51:08 -0700 (PDT) Received: from shalem (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a37f8cd810sm47977a12.26.2026.08.12.11.51.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 11:51:07 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede , Jacopo Mondi Subject: [PATCH v7 4/8] pipeline: rpi: Explictly pass pipe()->name() when creating IPA Date: Wed, 12 Aug 2026 20:50:51 +0200 Message-ID: <20260812185055.289021-5-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> References: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: Wt9_DUMJd-24ukRjZy3s6OCJhNTKABzj X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX4XTEEJug0Wqt NseFZy7pZOSe9s7nG4TqMO3n/p/BtYloCsJZQ4mAwd1K1VPEhQjDVja/xYd91f4G3NRuWQ0cXEx sEfte8W+SXQcRMN7Fqw6kmGrvZi76YEO5BzqBUjg78qpHaGSf8HaULguncq3ePSYsrdUMPVKwI5 NQ5beRpg4KHmbYBZPYWQ/DYgepUMRVMWYxZaNy/idyVJkRoeGMmeZdqlsaafgtB731ycLGFzJ7f w0Fn63IBxklDsqOM4ITj+0CaD5CbBYsSB+Vyuj7vv38xkjtxDdROQC41LD+YQsCFPZeFkoXsr0B HOBiJF6RMD+fNY4bK1qxAXfTa9Voc/d1VN3V/w+6tuf/yonoNeHKbHY4PATvCg6NKVjIvSA2FvO u8+ud/2OcYxUm9r9Q8f/toeFPT3KiKh3SGLcd5/cMjdEVWra6CixZZ9r6PK1cjMSRathYdSbEh8 JbFXM0R3B+FBojYYzMg== X-Authority-Analysis: v=2.4 cv=K6ES2SWI c=1 sm=1 tr=0 ts=6a7cc09d cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 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=PI23gj2s8gul_AyujO4A:9 a=a_PwQJl-kcHnX1M80qC6:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-GUID: Wt9_DUMJd-24ukRjZy3s6OCJhNTKABzj X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfXwOJw2LS/edfH lIJ7TnnV9r3Lijpxk2lcaULkjK/mXHIwK5WFMeR+jB3KXPKdW+jYctgL/dEHiv1ulzx+27r0X9F OFkFBcNJLic6FfrBF1sKLOul+FA4dgo= 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-12_05,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 priorityscore=1501 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120151 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 Wed Aug 12 18:50:52 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: 27769 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 DAD77C3264 for ; Wed, 12 Aug 2026 18:51:17 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 8E105682DA; Wed, 12 Aug 2026 20:51:17 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="nOWZUSm+"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hVq8xYkt"; 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 4352C682CC for ; Wed, 12 Aug 2026 20:51:15 +0200 (CEST) Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CI9FVd057210 for ; Wed, 12 Aug 2026 18:51:13 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=d5a+T9PrDBu aP4hO9ef88fFXqu63m1qk2Do7DeF3Hbg=; b=nOWZUSm+U5z25jmtrNjTw/l9KI/ To8VfAy3BmpC3/ZxfVZactkr4YrOjUO64JFikOx5nH2S4gkzMuOCBolEmg5r/Prk MCwvaAQheijzobGaNUALOFgfiR2DPdSbfc4rJzw77Dg9Def9LLS81T2XUzgaqgcv GnlUrYSu8SPTJHXv2D83MDR9kR8PUBBOTHNNetkMF3YGGztpw1vSt24M/5jSWCNZ AK4BToMBXb7pWbgc3rh5oPuAiwaEG6SAP+0Zl6MgfdBItEu8oB+Z/uOPleoRan3A jy+qCtKuhs7JkTNdUo3QJC3sPkeKGYhTc9aRH1z1bEKFOsNu6VvwXs0lZdw== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g0pmytd49-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 18:51:13 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-52769fc3f2eso12352591cf.0 for ; Wed, 12 Aug 2026 11:51:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786560672; x=1787165472; 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=d5a+T9PrDBuaP4hO9ef88fFXqu63m1qk2Do7DeF3Hbg=; b=hVq8xYktSrkIcmxuFKmBR95wziZAkV46tl2v61Ws+vmIpVcW5qRI1CkBVpV9Rj0EeI oBXJYS7FG060QsYJnvn6hsgxOBYUY6eDrC9QRbf/1N6Vk8Hn27Bl0Nuv7Ww6KyAifMMh Mt8Bs7gRtUhUA4b49THo7r+vKopCSBIZ6Xk5xi4Zu8J33KxaMG/qCDt3LDTD1+o8yZC4 9ZfJzg82DrQHeDa8BZvujIs560E9r55ZXHXpgAlUjRN1Tq0uqU/M+Ct+H34uBsb8D9DL 3i4Pma85Cz9dRN8BO4F8a0CgfMOtgwltMfIXsqgiWMEIQOyircDFsHGulP1H9saPdNO5 TVrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786560672; x=1787165472; 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=d5a+T9PrDBuaP4hO9ef88fFXqu63m1qk2Do7DeF3Hbg=; b=GGDbgmbD18Joa0nsmKB1r6dYUlS2Ol7hw8ICO8+Q9tfLEAOqxOMzrHsYhSroV516TB FLLD/BVbn4nQZ3VYUTCy7RQdz56/Et2Xau34VHz1lzi7ZAtGkM1sJpexwSf2st57G5gl hJE0uZyDM5i62wW7Tye3gzm5utzel+deXOTaLxARY/I2Y+CyDpMHMDa/P6+ha4y1yFx/ 71M62OYMYM/M+2+b61xr/xmFl0pdOIXc1XhBbA6irQjI/bkSnTxGQw9tZ1FPjDTB6Xef zA8oWIZ9VEzLJtAiWcM5QkRhPZNpq+zHO9pt5BBtBYuuJBqVNYvF6FHEOu2zae5TWMxx eXqg== X-Gm-Message-State: AOJu0YxmqZo6o4jBQ6fTpyhq9/XqMoh1PwxFVuZeOBIZgybJGFyvdVvd c72zJ5mHPTXiP7QRZ0I5IhrvT6UtJEEN2C0oMyq3Rxq4nyV3w73E+wnRKj5UdlwniTDYyRbbAmH HugP3Knk04Ms2BaZCInc7knb69GxJwWPnIMcyLwB5ZwJQ2xQXfno0wf2CCuAnFq+zlDXmAu57pj IDzLE5IsED X-Gm-Gg: AR+sD13C6ybb967XJZk5tYUDyj8Zfl2c4nzJ+DXWiec45fOx7So/PHshP29JK07SITf bLN4HYgvOmjA9dG4Em1FO1eIXpUeQP+szz/PgoS1UzNwlB0SDbR/dCo3aDiL6dYYBQIcw06qt5o 72I4XyrCznkhcM9ExedD83k7XDBkxtRkNJ7lYGxIxpX7Qr+z9xEI0JZHLdeMTRXQ8MIUPOjOCr0 CY/7jrfsJm0VJVbnWdAZAINCjXNC6gFTNiN82SGBCWfEv+XDlu4VG8LDl0UbnaGw5lUQepsHZeb 7TYeKLKzFzcCUHyGpvpTF49grWaoafHMc0AYRhIwlepH1X7XQMQPaSbjKr1u4KGqLw5g8xO7AZ2 oe9gz0hoey7A6R3C079ZjuqXJ7VISfGQZcDgRUWWoTaVzs3Emggklgp65PTUIz9uwdrw5Xwz766 TMk8hs9wgG7Fub30c= X-Received: by 2002:a05:622a:4018:b0:51c:1b3d:fe62 with SMTP id d75a77b69052e-52d73d14faemr3028491cf.28.1786560672228; Wed, 12 Aug 2026 11:51:12 -0700 (PDT) X-Received: by 2002:a05:622a:4018:b0:51c:1b3d:fe62 with SMTP id d75a77b69052e-52d73d14faemr3027921cf.28.1786560671512; Wed, 12 Aug 2026 11:51:11 -0700 (PDT) Received: from shalem (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a37f8cd810sm47977a12.26.2026.08.12.11.51.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 11:51:09 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede , Jacopo Mondi Subject: [PATCH v7 5/8] libcamera: Create IPA by IPA proxy type name Date: Wed, 12 Aug 2026 20:50:52 +0200 Message-ID: <20260812185055.289021-6-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> References: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX44tZk892lHq2 Ex81hgUN+TWxIxnz1eBv6hKgpYwP8nQrJnYceNZFbilcLXfM+/5V2oTe2Oy/cY/+2f1ufBtw8k6 yok4LWopsKMfviO5CAvvdQwtwRpcGes= X-Proofpoint-ORIG-GUID: jER47YH9Vppm0ZPH5fbeckYDt2AT6Qzy X-Authority-Analysis: v=2.4 cv=C/fZDwP+ c=1 sm=1 tr=0 ts=6a7cc0a1 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=P1BnusSwAAAA:8 a=EUspDBNiAAAA:8 a=SXN59QJeJGJC3baiLVEA:9 a=kacYvNCVWA4VmyqE58fU:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-GUID: jER47YH9Vppm0ZPH5fbeckYDt2AT6Qzy X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX6zchMHexSCLv orWKUBelNVaecOHLHqiCOWjLoHZLo/uXSS4PnbDGRrtJ+O14YC1rqiIf4jJlZuRDSy6hWpVGAOM +H9e5qUO4uT0/X7fAf8SnlXTDBRYSLI44+Ta+3vNvdKCU4rCpy/c3BdHXduEvVGm1k5iiTCYleM UCryz+PkHkhW5OoQMs8dbvxJMPHU8b+nwid3WuWmQWEYFDKY+f7ydtAfhezNZEienypNjCXw+Ig cS2hvlLGLHdtF5lJR+xOxfNNCQ3rl0Y9q8OsGLxN+a3e0rsvOBiLSfKmt1hwVGFEtUrFa9pTmH2 3upYlFkvK05HLdpH4+M6tlzTTNG4YHSCvLtXD9QbzWfgRzwh1ZCrSp/+pGuVY58rBJbYZ6pBYU9 jeXhnZS4HLJqYB4XauSRn5n3JdJSEwKlhua+mThb03zwmF4rDoogSHwprlx+NnmRHVIbxfJEcPs RwSL7jG+4hRGFxTX8ww== 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-12_05,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 phishscore=0 spamscore=0 malwarescore=0 adultscore=0 suspectscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120151 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 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..c18c94c2c 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 Wed Aug 12 18:50:53 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: 27770 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 75EDFC3264 for ; Wed, 12 Aug 2026 18:51:20 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 1B54C682EA; Wed, 12 Aug 2026 20:51:20 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="JQeYe32o"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SZuIUAf8"; 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 13377682CE for ; Wed, 12 Aug 2026 20:51:17 +0200 (CEST) Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CI8ghO3792113 for ; Wed, 12 Aug 2026 18:51:16 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=l6dvLbPX2V+ 4hQX1ASu7VVX9ViA2ha2KThfg2/Vz4FE=; b=JQeYe32oEtsFwb0pQbHsoQbhna2 cajj17oFei2n06f8Syfp5oXEzBhfsRn7XIpN4L3YhLRffj0bVX8/1N7ueFxM2L0F ZOuw9fdvvNe5CrP85osp7G8iDv9BNLSXpFDXtUzArYSQZPfb8C90EDzPy907AN4i iDOu3bLGSNg+n1t0+4Xg4ksB7xrwLKmTET51XOkXTDVci6UaRXQLOnJmY/leyoCh B52WZlOC871+W6zwFODcyS/JoMM++toFdt3tsAu4Ry4wMr8Ly2oF5ypYxaxOqwPa rcoiSm8H8Q9X2Hr6rH/eEZH4PUxXLWVlOcGtqDGQ5SRaQJ2ikjiRoFC4YCw== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g0mndawja-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 18:51:16 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c1d7886cdso23049641cf.1 for ; Wed, 12 Aug 2026 11:51:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786560675; x=1787165475; 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=l6dvLbPX2V+4hQX1ASu7VVX9ViA2ha2KThfg2/Vz4FE=; b=SZuIUAf8WDzagF4bTAloVbmwlw03d//gBwniH+WRzFT5xSV2VCMUtiCKfllj/Jqh79 4DM7O/hPntk1ACKBBSkz24OlQ0AdrCq6jNZx2aMJVRw2TB7OF5eRZ2knS6cub+vuqZNx KdfpDnP2RKWPWuMhEPItlvOH37CXtiFnEMg2G0KxUQFhLIBjaroqEEp/yaboGqrmncoH 7/l2lExgiFaQxekuGVM6ftelZ6yZGQatNcG2w+67iPKVrWNJyfcFihvLgzrsuLplwt+E Ea4V+dowGIoY2S3dMXepHrKO/GnmojjDLiC3o2Cwz2cl16MZcPsKFiC0qnqO3N486iVA Zq7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786560675; x=1787165475; 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=l6dvLbPX2V+4hQX1ASu7VVX9ViA2ha2KThfg2/Vz4FE=; b=SlZkCEA2QzfzmeaDGsOjDREpQQ+OtOKLeeHN6UGsJtmi4hAjxMxqw1YnKhln/zN5rP 6gUUQd7YJ7mWujWtnkIbiSRER6teJZiDT9FcW/+8NOtPRevGHT0II0Uk6XGBCZCVFUV3 J0CKgrlYB177JUf/y6HhtBRpUHzynVjK6gyCSewxUTSUZ0nThoPx/8r2/3huPhQaI07Z V0DaVsOqlhJzs6B8YaG5uwPjYl8ZUD82M6TOjGsTldP2jv+FL3/lcT6TeDN/QScWvT+r Ur56RaBV3z0w2w12ASXXoZe/izqeaNQsVnXEcpqTUnjYXBODMrOpWfsEBE3aMb5Up1Sq N5KQ== X-Gm-Message-State: AOJu0Yxxh2xI6wVs4ITD+EGWqQ5MlFTeiahIMnvntvtgjQxfUhEV0kwe to89AFZdUdl07ry0wxBW/oP3MLwpS6GZV8eRJLHKiPpnsaxOcneb5FoUf65EwqbWoxoxVFAMM7t K1yQDjM/2Zqohm+5Q0lQUNKhAGcoix0mDJ0pDFNFiH0PYPt8YUavnH457xF5pvCQ782A5ybyur2 dEUK3VS3/3 X-Gm-Gg: AR+sD10P/VkAqRykEUTe5zl8Fl0ihTMQWbDXBjOD8vASWWhqaczbEkAO4RDfMz36GHK qW8vHObAcgmNK68bYgCP+nIh7UqdIuP0bWaTcW/9uBuiRClh78FSQJ2FEaxX1+LRbSV57tm7nQj Mg8y66k3dz1lreqvO5z4zKTg7ZlOOFF/J+jh/v2T5uEtZGuiq/9oY9Y4ItRoF8etgAN4mND2h+9 n8d9HrcGmdyreBtNrVzEtXhoQnFqNKY77GXQeIEz4ZVyMvX3LuGqut0DxmJiF0++JGeY7lGmg2y A3mYcodN6WjGws0dk/sHyLxsSH0zJgo75Hs6IhaSL/sMZ90FlAlicOxWQdU27vmJyaKwiQX8wZ8 5oHDTnvRLHwwxZuLVNcwyormKFXRWVlMeZ0JlIHyUSXrN1Lnii1n78CCr07XXiR3yGsvHkwH5DE QycqbYGkRG0L0e5sc= X-Received: by 2002:ac8:5809:0:b0:51a:8bc9:2915 with SMTP id d75a77b69052e-52d73c36b8cmr3331351cf.8.1786560674987; Wed, 12 Aug 2026 11:51:14 -0700 (PDT) X-Received: by 2002:ac8:5809:0:b0:51a:8bc9:2915 with SMTP id d75a77b69052e-52d73c36b8cmr3330901cf.8.1786560674413; Wed, 12 Aug 2026 11:51:14 -0700 (PDT) Received: from shalem (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a37f8cd810sm47977a12.26.2026.08.12.11.51.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 11:51:12 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede Subject: [PATCH v7 6/8] ipa: softisp: Rename IPASoftSimple to IPASoftIsp Date: Wed, 12 Aug 2026 20:50:53 +0200 Message-ID: <20260812185055.289021-7-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> References: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX9AJzlB8naCzF 82OLYwMkCiqcghJg4XR3YHRmIb2Ej0/5wpfAZCqEnDTSNp4Pi30EY8dVQXFuLvi42c3I5l8UQby 2Rq9pjDkR+F9LVZwlLN9jpJ/UselC5A= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX14i+tD+UvHY7 z6N2AyeN90qLZkABunPUuxl9Zu2Hq9d7kTsNfhN3wX38665VxoANLuTjLG/ak9dgEIGcWwurR36 Q+X4n+Pb+IrijAZ/BgiDrnHmrHq4FOllaCAsmThUoUC97PT1blaQx5hXOmZnkPUBhhJk00u/msZ qd0215kjiPaNrVzhJUSqDUMzJz8sRd/Vcy/1L3nFK8jubDVuTtDBTFymmatrKozRFRV6/D6Yz7N cDiCEaNyjKjwfBGubRF4vdMWWsiZ2I5Mxx00G502/hJfca8VxqVBFiKZ8aNARLvSl2QlM6+9CrQ nZO+Y3oVF2ff8z5V2ofsx4EaxDRGQwJJ4p4SWo4WQihaKolIj3YRcpNZY7rQlwNGQRI9I6nxuj8 tOlgJ5142jJVOS5Vg8LrBhXEv9KUzMhBP9Qci5ZZuQVM5AHYCCRyO7RILp/Zy7rdBs8KFsLLFaz FTrG471mye7kGNFruOA== X-Proofpoint-GUID: GcNNdiutKUXYs77vSZ2xhaRacAzVX6EV X-Authority-Analysis: v=2.4 cv=C87ZDwP+ c=1 sm=1 tr=0 ts=6a7cc0a4 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=ITOby1vZJKKE0CwQNbMA:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: GcNNdiutKUXYs77vSZ2xhaRacAzVX6EV 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-12_05,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 phishscore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120151 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. Signed-off-by: Hans de Goede --- .../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 Wed Aug 12 18:50:54 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: 27771 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 3B216C3264 for ; Wed, 12 Aug 2026 18:51:22 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id DBAA4682EF; Wed, 12 Aug 2026 20:51:21 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="aSYFpl/F"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="iLMxYA/8"; 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 C32A8682CC for ; Wed, 12 Aug 2026 20:51:20 +0200 (CEST) Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67CI8g1r3792232 for ; Wed, 12 Aug 2026 18:51:19 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=xW1m+LT3P+M 71zGMENTECFmUi7PXRWzHGOtbGUZ3kJE=; b=aSYFpl/Fs7/xsqfu0PHUmhCY+NK 9LlfBHRyDqapB4dAFSX9yay2H3jygUPklvFGjSd8hd+ev2ndwWocD+/Tf1CEkJjN QHmMywd/X4t4Oprrg6Vso5aO4OZpabD3CdSM2cK/jKiOhKNdrgT7ZHyxrDXBNroH XIp2j6KvuVDrDbbxgJL/qL0bya3S+/M32FF3nQxAhz/0nDlfqAKgEz7urtKZlFmA 8PaXLzaTUI8Z3k6nvh8URaMygPDnS4DSYN9BKx8ui3p+brYOJqsSi7fDP7SlL+hG K6YKrC551DfYt4iHzIMD28opCTYP2bDcWQ9Rx6qgChk0KC67xQGTWd3XwdQ== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g0mndawjh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 18:51:18 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-51c26012cd0so13161881cf.0 for ; Wed, 12 Aug 2026 11:51:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786560678; x=1787165478; 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=xW1m+LT3P+M71zGMENTECFmUi7PXRWzHGOtbGUZ3kJE=; b=iLMxYA/8Mcn9ez7fBwysJLbWGoRMRPf+pbU0+p+jTHVLMwcHhnB/aW3P0eOX6KuzfS iduG8fQQ8Oi6KiuVdiKb4GTp0/j36znQiQhrcCoBcrERAnJT6FInpue9h8hHyKLVjVU1 dTHTPQkuFW9k0O4dAWrnOdNR78bTCpzealO0dUjO1hz8vUtL8Lsar2xXd7o4wWHVNE9U cV/+WuaP3iOR3qigQ2dgfTozVAhmweK8jTHZLSBKOYBDT8ey/8F+6scouaErdCe/Y3KN Tg9fvPdmjy+bPADhCng7/4uHvXKi30Rjz5OBb+5Iu5Xu7/R5jeomAzXJMtRJbYCg0fdP Y1Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786560678; x=1787165478; 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=xW1m+LT3P+M71zGMENTECFmUi7PXRWzHGOtbGUZ3kJE=; b=Ohbe2XslYQOv/2dugjM1FWsoq6JRBUH4HDA6/B/Qb1T8bUzUyHiRznoo+8V54/Wwnp ATHmLeCgMFk2yT3khbrPRS/B2enk46geZoWUMyNR9wjV0J3isg7dfSn5iTEgL8XDiNbl RP3PaKh9bq9IvhTqwChLinCcj5jd6x7tKzYTam+JMySRwWXcCe4ulOqmBO43nLo4cYdv vPvy/PuQdPRNmoZ5ZA6AJrQCqiPWb0ihNkF9mgUgMo1kIb8KuZ/F3RmgYHD9B27/sUv6 d/hCRqgEP2fFxxma4Z5CrhBPfZvzTSjcQL2kikjLxIwU4v7f4wiLinNJPkBlXB38BPB2 G6kg== X-Gm-Message-State: AOJu0Yz5xgxlKmRvV3qGzQ5gXiXWWIrtEb3oyOX1xDsqicatbNdpR9RR YldvLm+RcuKt7M/SZz3X2jseeCuT3ron8ju/QEhw7/R2HeRbSZyD3t0gS2FlnzbsxW5WCQas9RH MOD1JrkIcZkLAs/5tgaaqL7syqsnHGq1hhI8NRlxWSthNHv9C/ShWxA8Ejjt01+dgp9TGWNqled 7qRtTZaaHe X-Gm-Gg: AR+sD12qHWZpiWsy8+86pNR6wb03ROg5WM17F7QEDii9ppqpKfwLyXBwVJ2q1Wij63N 0J/uOWAg+bYrgwYKmarEWZoxwOzfPxfbWeuysVHqfxdwtPlMvgOhAcsxKbT+Di/FjUIyEgnEF2Q DisDxKsNQiiDS9+17tK7v9PwCc3hdjIL+YehrJQP0jd9Yc+fEPoJBWj5+MVlPXOop/CBN1ZKXbk UPPqxnpGoBg/OSJzD4kSQ9hpW9aRbDLJq/ps3cZtqVGQjSEkqWRrW3dN4bPI/KWocNcJ+i/tsgJ wG2yVwss2NWnX8vGyEP3KMG2LNleXCTxbpcJ8EHlV2licoHXIbPYge5Rf8X+CE6EnzWbQQRu0Ll eTu+6/5e6+njvN6FDzM5FZkpS83OkKl8usfnKfhyLBT1IVWsfWrejk3hGCBWLeqov6d2kixxm7n SHEPslZ+jVTkYXGz0= X-Received: by 2002:a05:622a:53c5:b0:51c:478:32a1 with SMTP id d75a77b69052e-52d73c84d1emr3616291cf.18.1786560677667; Wed, 12 Aug 2026 11:51:17 -0700 (PDT) X-Received: by 2002:a05:622a:53c5:b0:51c:478:32a1 with SMTP id d75a77b69052e-52d73c84d1emr3615741cf.18.1786560677179; Wed, 12 Aug 2026 11:51:17 -0700 (PDT) Received: from shalem (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a37f8cd810sm47977a12.26.2026.08.12.11.51.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 11:51:15 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede Subject: [PATCH v7 7/8] ipa: softisp: Rename ipa::soft namespace to ipa::softisp Date: Wed, 12 Aug 2026 20:50:54 +0200 Message-ID: <20260812185055.289021-8-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> References: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX0+QN56jZB8SG N3IhkqLvqifCKc5khy9aXZhA6nXttqiWcgVbLReZUWqP4UfE5VI20Pgk7qFhSoNG7B7o83aTd4e mAMqc02JwlyFJyoqzT2Mh/fND2DCopE= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfXzmwNp/HYr6kF kx9MP/yIXqm4UpcL8G5Y6PVLSYU5NtnmaPwK5tHwGQxGk3vWu2jPL7rPQYvdVLAgFOdB7xS15jY LCq2DhYppUih9HV2PpRJwt3yD1KyBEM/flPakZwUOWeoyq87MgsIg838KGUTUMaL5TP5/urNUs6 IGeg1QassH4LEkTcicOdNkm3+r+pMCQXtZawYIPPLG3w74n1kTc7s2xJEyKA8hoMqBivYbHIXbu d+ROXh4nwvEFOr8ItsLRpB3RRpmNGUm2S1qkUWyHAvYij4+hUeN9TLAwjfIN0kOpcJN2pR8DOjQ PtterfkX0FJUfkrbIBK6Irb6F2JGFjX1oeSwfdKBPITcmp0in9TgbBucalMW1DhVIuhE9kKfLML I/EzlSGFmnk80oRXz7Oy+hs1b6AYa87tRtlj4ASdMaF8iMuoh87dQWkaTvKhI0gNwsWkAb0ecQb V3FpG23QnmhTRODJvXA== X-Proofpoint-GUID: FSpxvfRee2BCJ69gV4_JDQwL05xh3J3b X-Authority-Analysis: v=2.4 cv=C87ZDwP+ c=1 sm=1 tr=0 ts=6a7cc0a6 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=S-_Sen47HszD1NjcceEA:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: FSpxvfRee2BCJ69gV4_JDQwL05xh3J3b 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-12_05,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 phishscore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608120151 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. Signed-off-by: Hans de Goede --- 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 Wed Aug 12 18:50:55 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: 27772 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 E2817C3264 for ; Wed, 12 Aug 2026 18:51:24 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 8B7D4682F2; Wed, 12 Aug 2026 20:51:24 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="m0eNWyuM"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="atFkWmkV"; 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 35217682F1 for ; Wed, 12 Aug 2026 20:51:22 +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 67CI8iIJ355282 for ; Wed, 12 Aug 2026 18:51:21 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= auuMV5to/950KC7buZYUhj0TGUEl75iuMAcuX7bDBY0=; b=m0eNWyuM5McE+SIy 3cjRMU051v6OCxXNAqGnq0Dnkpp68WppHMzKyat0kbrPG7l/pToLG2jep/3uz2qD UoasgofnFKXsfFzq7iGUj2Y+p1iW283UDBFcB/AdGILjHqrSrj2qx1IbtdDYAzup P6efu+H5q6JKQXjFCG6RaZIexS+nWIJD95aKAxWf3eURH0lAzW3KN73nDFsBo5Bb 8arz6W5SQa9Dajcs3vyEnX+02qwR0XuGfsZEKv42ZYe+xDKZqKi4KMJ8aAI2cVMS ublXy6L586EM4JWwWSP08GnUVypD/noNSso9yfk1zbwIdN8xzLUvv5/jZNveOFKy mQsQ4w== 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 4g0hj2ur4y-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 12 Aug 2026 18:51:20 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-92efd2ca21aso233885085a.0 for ; Wed, 12 Aug 2026 11:51:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1786560680; x=1787165480; 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=auuMV5to/950KC7buZYUhj0TGUEl75iuMAcuX7bDBY0=; b=atFkWmkV/eX1jPlHCPoG8+WTqTCtBQstpYailEJ7c3sBP0Fns9wyfrrv2DlVm2KiUa nLlTH8s1aeQ9ffwxrmzj86PxRxYt2N+Wpxl0VemklUYc3bq1X4lFiHzzeklWqKHe/K56 ODGb/wSSCr1HY64f8TZ1gOyDsVax7I/rJWHlLTGoK7d8qyW2LBwFd4uGmYv8yABu2YlE iIPtq5G3AwNlSxVJfNqNc40O8vdPOJ+9o0wZzjbT4prZGQz5vpAnb+tyTluM/nGZXRMQ 0jxW8+L7Mmc8fuAvbQBqfEfPF7FxXz64rEgGmAqGl5zOaepu/490T+mfEBY4qnzQknL8 9w9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786560680; x=1787165480; 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=auuMV5to/950KC7buZYUhj0TGUEl75iuMAcuX7bDBY0=; b=MPbStvYCETTn07x3/1zPY7LZM7JvQp+lxE4fVS1pwlb9dq7nLJYQIIoRm33ZXc0S/c aBe1WCphS6iCMyhs0/Ck4O1b4PWNKh9tBToGEMuwDT92WvrqL1OqeAO8ADUO+samYHnW fMqtNsDOMC6KBbouSReeF/j+bxYBh1V0An8W2M09rckfphCo0OYIwVMDKyFv/Vq4RFbD +dEUEUwk8GnIIyfanGaQruJKaINSKyYgtUm/DaGyDraS+sfMOl0B+7yn3sJSmID5i6nD U+s71YuSkTd1yqF5kfFolCNiVrVNjteNFjyjr6+eohyKUT2tEWMm45Zdb1XO8/s12mj7 g1Xg== X-Gm-Message-State: AOJu0Yw1nJ1kP0M03hDyl+WGxs5TI3ftQds7hETIb4mryPZm6Y8x8us5 NFGpoMEdgzenMVy5VubSSGjPDdiayuhlsn04+JN8zbsvqPqM2iXb1Slnet2sd5q7+Bs5gW1WxbK +cw1wijXMWv5N5iIHkXg9zrO1K94nqkKnft/VmbVtZnkJml9keNzS5knNXJpIlRoC40Q2yTaiBQ 9rO5lIi5Gm X-Gm-Gg: AR+sD12TZJ+DdNf3w0zvO+6W+Xt/TUADG4ep+4LRHif59aDJfgjS1UJcqz47pRVCqug bKHwt/tVIpSyleagUwTfCEv4IdU4ATk9n2vMp0/6vrM33GLrMOIkK4CaYye7zgAb9II9lMfGcnP nQACaHI9fk2qc7/9vUdScRKjcKvKaZMmjcbPzgcO4Nc+9jdJGWXUmvvoRBFTtjw7Oi/WiTZ8+37 uW6KlQ8T0M1b4prmE65wvHXCby9LHNAFmLo96nonWuZB6+DcnpZwN63mgGSLvr4HJ3QzjVd83zU uenfpcChKhLhOGofhnz+8EJwoR66WaeY21HwhnvAralRtjhxgwoyzZ9Hl1w87Q/kBnRI/EQArid X8ejzO1W/xWBAaoFGh7ijDOkKyjXXgG7/UrAe21cW1PS3hvx/pSeAvfGCslle4t2ZnmUHweTIri zpX03DOHt6YMO2uek= X-Received: by 2002:a05:622a:4a8a:b0:51c:f8f:13e with SMTP id d75a77b69052e-52d73e3c88bmr2587451cf.40.1786560680368; Wed, 12 Aug 2026 11:51:20 -0700 (PDT) X-Received: by 2002:a05:622a:4a8a:b0:51c:f8f:13e with SMTP id d75a77b69052e-52d73e3c88bmr2587131cf.40.1786560679974; Wed, 12 Aug 2026 11:51:19 -0700 (PDT) Received: from shalem (2001-1c00-0c32-7800-5bfa-a036-83f0-f9ec.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:5bfa:a036:83f0:f9ec]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a37f8cd810sm47977a12.26.2026.08.12.11.51.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Aug 2026 11:51:18 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede , Kieran Bingham , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= Subject: [PATCH v7 8/8] ipa: softisp: Rename setIspParams signal to paramsComputed Date: Wed, 12 Aug 2026 20:50:55 +0200 Message-ID: <20260812185055.289021-9-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> References: <20260812185055.289021-1-johannes.goede@oss.qualcomm.com> MIME-Version: 1.0 X-Authority-Analysis: v=2.4 cv=a8EAM0SF c=1 sm=1 tr=0 ts=6a7cc0a8 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 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=X9iWcBBwFAc5_HUTaPUA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 a=D0XLA9XvdZm18NrgonBM:22 X-Proofpoint-ORIG-GUID: 0jAHQmR9H_cwqn25gZALM1E6b0tPsASz X-Proofpoint-GUID: 0jAHQmR9H_cwqn25gZALM1E6b0tPsASz X-Proofpoint-Spam-Info: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX6IjUl95z3r4Q v2nHbXtauFUPeJUU5xUqgZKi0kPmwXqc1yYfvQyg2nxJckKKIalrGcFwdGUJoANit4YhrEJOQDq Z8k0A1lihMqxdzucg60NobC+h4EVu6o= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODEyMDE1MSBTYWx0ZWRfX7cr0O4tbsLZ1 +5UyL6OZoigaaBlyAf5e1+PeKTP5r1T2f4xEJc0Ip8y6ObUq+r3daexe1LIjb91BnLd70BcGoE1 XX1pTky/kkkeDR72LWsWnhGqokJrvv9mCqvnGMW1/wh14QtusdGCDFhMED0ks5LQeAFCz1BRX8M FVeqrMzjNmdjzrxUoq3Q5TAWurZo2W0+JDsUmNxG59QW4z1uTTErqQioByXwYSZUspAJknXP8Wh f5ynd2BYRxGfxdmxQQhD6MK7gmKX5C3kOCsPiioIZCpJmjM5GXynU9vwqubRCycA+6XpM8jmadx 909qzdiqSZT8QD9YvXQDBIJat/dBA4R+JyxTZBgJEbUXopENs8s73t/QV20Ti/IRPPQujZtqVmW tj0USUJZvcuQSo1AFbUTky0N+/kjH7p9TpzPsKpJXS0X/tWZ80pvv9tZCwkoDsG8KcWM0D3U9sx 8RKJ9qvJ/Bw5t/W/vOA== 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-12_05,2026-08-12_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 impostorscore=0 adultscore=0 spamscore=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-2608120151 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 Signed-off-by: Hans de Goede --- 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_; }