From patchwork Thu Oct 22 15:48:30 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jai Luthra X-Patchwork-Id: 28558 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 B84B6C3261 for ; Thu, 22 Oct 2026 15:48:55 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 792C068F73; Thu, 22 Oct 2026 17:48:55 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="V0aiQE+f"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 9FD9968F6E for ; Thu, 22 Oct 2026 17:48:54 +0200 (CEST) Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c30:59f6:be2b:2877:6bc4:392]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 003538FD; Thu, 22 Oct 2026 17:46:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1792684006; bh=fNDDxSa/bu6Lzy3kfw7UyTCVSYdc1MBVf8HNjVGfl2U=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=V0aiQE+fvFVaEEAihI2YUoyNM7oMAt45eRcO4wIpVBkyM7UtWsSRxJu7puNy0gqQ1 ZIClPwCIt4/LZaBp632OKiuubl3VPjokKkrv8tXm+rzlj0F2YVw+H1xgued34bHnZv Dvio8aiM5bq6PZ4aZ4oeQeXvfnMZg2lcSz9UBJnM= From: Jai Luthra Date: Thu, 22 Oct 2026 21:18:30 +0530 Subject: [PATCH v2 1/3] ipa: libipa: camera_sensor_helper: Match multiple sensors per helper MIME-Version: 1.0 Message-Id: <20261022-mainline-imx676-v2-1-0b839f1001c0@ideasonboard.com> References: <20261022-mainline-imx676-v2-0-0b839f1001c0@ideasonboard.com> In-Reply-To: <20261022-mainline-imx676-v2-0-0b839f1001c0@ideasonboard.com> To: libcamera-devel@lists.libcamera.org Cc: Naushir Patuck , Laurent Pinchart , Kieran Bingham , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Dave Stevenson , Jai Luthra X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=15681; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=fNDDxSa/bu6Lzy3kfw7UyTCVSYdc1MBVf8HNjVGfl2U=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBq2jBZ8n67uFwIvJSnBzfTfIFYWvfT+Sz+LRf1T sU8y3Zno4eJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCatowWQAKCRBD3pH5JJpx RdCBD/9mqFjUbSCTfkbEYAxgjPv74w+y+moeSAfACltSPm10zz8oLdmA+k+9833KpAym6kmC5V8 krjkvO77mobJLo1ixDtOQELZufgdJZn+wAWTTn/HaMla+mzWe5Et14h2vNrIdaYjxyFxFybZ/mZ 0ingimy7xt8jZ8yUyBPK4LUkcJ558OaorLbLznOoEUpPfrdSmKttpfBEgIX5jUWQqNb6/mPcl5M EqBgeatsFl/ri9mdAGr/oyCO4IUuW2CCVoYFW+/ZZ3P3Z3tbRVKs+KUPzAptdd4tk6slsC52yWd LR8criYPYWLToQ+IeFxhDU9iwvUY6+0J8qE0LjwJpNYMEwV9nwpEnqD1ec6BN/6+Eo1e50xqGUB A6NzV9tjL3Dp21f8Vy0ZpT7pvEao5VYtKWDbZ2Sj4KpLbSUvfEJfFTmvNDjc0B/Qs1LLTiQZUYD YES737ahq8lwG33q7+drBmkuVRsMyJALyK6YEWh31So+r1TD2mU5+R8V25F/hVSyEZZ1/8HYy/5 v1DiFndH5usm94YC/uvdvENEvOAORK/7jp71ENBgJfQg9F24h1A1adWBoC+ysFwRZtxFIZ3tSOH y9SvTAqBEHXbGKDB/u8fn4xDdJc2SGI12Hcfx0pTlGheSfNW/5s5z9AEWuoCAGiZuyWq13TgyFW SV3JwvCvUibXgag== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 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" Multiple sensors of the same family can often be supported by the same helper. Currently we have to duplicate this by defining a new child class and calling the REGISTER_CAMERA_SENSOR_HELPER macro again. Like below: class CameraSensorHelperImx327 : public CameraSensorHelperImx290 { }; REGISTER_CAMERA_SENSOR_HELPER("imx327", CameraSensorHelperImx327) Fix that by instead allowing registering the same camera sensor helper class for multiple sensor names. Also update the macro to accept >= 1 names using variadic args. Now that this is in place, convert the three users of CameraSensorHelperImx290 to use this. Signed-off-by: Jai Luthra Reviewed-by: Kieran Bingham --- src/ipa/libipa/camera_sensor_helper.cpp | 98 +++++++++++++++------------------ src/ipa/libipa/camera_sensor_helper.h | 12 ++-- 2 files changed, 51 insertions(+), 59 deletions(-) diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp index 359040ec7418..5fbeefaf5e90 100644 --- a/src/ipa/libipa/camera_sensor_helper.cpp +++ b/src/ipa/libipa/camera_sensor_helper.cpp @@ -241,15 +241,15 @@ double CameraSensorHelper::quantizeGain(double _gain, double *quantizationGain) /** * \brief Construct a camera sensor helper factory base - * \param[in] name Name of the camera sensor helper class + * \param[in] names Names of the camera sensors to match with the helper * * Creating an instance of the factory base registers it with the global list of * factories, accessible through the factories() function. * - * The factory \a name is used to look up factories and shall be unique. + * The factory \a names are used to look up factories and shall be unique. */ -CameraSensorHelperFactoryBase::CameraSensorHelperFactoryBase(const std::string name) - : name_(name) +CameraSensorHelperFactoryBase::CameraSensorHelperFactoryBase(std::initializer_list names) + : names_(names.begin(), names.end()) { registerType(this); } @@ -269,7 +269,8 @@ std::unique_ptr CameraSensorHelperFactoryBase::create(const CameraSensorHelperFactoryBase::factories(); for (const CameraSensorHelperFactoryBase *factory : factories) { - if (name != factory->name_) + const auto &names = factory->names_; + if (std::find(names.begin(), names.end(), name) == names.end()) continue; return factory->createInstance(); @@ -345,8 +346,9 @@ std::vector &CameraSensorHelperFactoryBase::fac /** * \def REGISTER_CAMERA_SENSOR_HELPER * \brief Register a camera sensor helper with the camera sensor helper factory - * \param[in] name Sensor model name used to register the class * \param[in] helper Class name of CameraSensorHelper derived class to register + * \param[in] name Sensor model name used to register the class + * \param[in] ... More sensor model names that can be matched to this helper * * Register a CameraSensorHelper subclass with the factory and make it available * to try and match sensors. @@ -468,7 +470,7 @@ public: return m * (1 << coarse) / (1.0 - (fine / d1) / d2); } }; -REGISTER_CAMERA_SENSOR_HELPER("ar0144", CameraSensorHelperAr0144) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperAr0144, "ar0144") class CameraSensorHelperAr0521 : public CameraSensorHelper { @@ -493,7 +495,7 @@ public: private: static constexpr double kStep_ = 16; }; -REGISTER_CAMERA_SENSOR_HELPER("ar0521", CameraSensorHelperAr0521) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperAr0521, "ar0521") class CameraSensorHelperGc05a2 : public CameraSensorHelper { @@ -505,7 +507,7 @@ public: gain_ = AnalogueGainLinear{ 100, 0, 0, 1024 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("gc05a2", CameraSensorHelperGc05a2) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperGc05a2, "gc05a2") class CameraSensorHelperGc08a3 : public CameraSensorHelper { @@ -517,7 +519,7 @@ public: gain_ = AnalogueGainLinear{ 100, 0, 0, 1024 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("gc08a3", CameraSensorHelperGc08a3) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperGc08a3, "gc08a3") class CameraSensorHelperHm1246 : public CameraSensorHelper { @@ -527,7 +529,7 @@ public: gain_ = AnalogueGainLinear{ 1, 16, 0, 16 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("hm1246", CameraSensorHelperHm1246) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperHm1246, "hm1246") class CameraSensorHelperImx214 : public CameraSensorHelper { @@ -539,7 +541,7 @@ public: gain_ = AnalogueGainLinear{ 0, 512, -1, 512 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx214", CameraSensorHelperImx214) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx214, "imx214") class CameraSensorHelperImx219 : public CameraSensorHelper { @@ -551,7 +553,7 @@ public: gain_ = AnalogueGainLinear{ 0, 256, -1, 256 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx219", CameraSensorHelperImx219) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx219, "imx219") class CameraSensorHelperImx258 : public CameraSensorHelper { @@ -563,7 +565,7 @@ public: gain_ = AnalogueGainLinear{ 0, 512, -1, 512 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx258", CameraSensorHelperImx258) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx258, "imx258") class CameraSensorHelperImx283 : public CameraSensorHelper { @@ -575,7 +577,7 @@ public: gain_ = AnalogueGainLinear{ 0, 2048, -1, 2048 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx283", CameraSensorHelperImx283) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx283, "imx283") class CameraSensorHelperImx290 : public CameraSensorHelper { @@ -587,7 +589,7 @@ public: gain_ = AnalogueGainExp{ 1.0, expGainDb(0.3) }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx290", CameraSensorHelperImx290) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx290, "imx290", "imx327", "imx462") class CameraSensorHelperImx296 : public CameraSensorHelper { @@ -597,12 +599,7 @@ public: gain_ = AnalogueGainExp{ 1.0, expGainDb(0.1) }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx296", CameraSensorHelperImx296) - -class CameraSensorHelperImx327 : public CameraSensorHelperImx290 -{ -}; -REGISTER_CAMERA_SENSOR_HELPER("imx327", CameraSensorHelperImx327) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx296, "imx296") class CameraSensorHelperImx335 : public CameraSensorHelper { @@ -614,7 +611,7 @@ public: gain_ = AnalogueGainExp{ 1.0, expGainDb(0.3) }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx335", CameraSensorHelperImx335) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx335, "imx335") class CameraSensorHelperImx355 : public CameraSensorHelper { @@ -626,7 +623,7 @@ public: gain_ = AnalogueGainLinear{ 0, 1024, -1, 1024 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx355", CameraSensorHelperImx355) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx355, "imx355") class CameraSensorHelperImx415 : public CameraSensorHelper { @@ -636,12 +633,7 @@ public: gain_ = AnalogueGainExp{ 1.0, expGainDb(0.3) }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx415", CameraSensorHelperImx415) - -class CameraSensorHelperImx462 : public CameraSensorHelperImx290 -{ -}; -REGISTER_CAMERA_SENSOR_HELPER("imx462", CameraSensorHelperImx462) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx415, "imx415") class CameraSensorHelperImx471 : public CameraSensorHelper { @@ -654,7 +646,7 @@ public: gain_ = AnalogueGainLinear{ 0, 1024, -1, 1024 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx471", CameraSensorHelperImx471) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx471, "imx471") class CameraSensorHelperImx477 : public CameraSensorHelper { @@ -664,7 +656,7 @@ public: gain_ = AnalogueGainLinear{ 0, 1024, -1, 1024 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx477", CameraSensorHelperImx477) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx477, "imx477") class CameraSensorHelperImx662 : public CameraSensorHelper { @@ -676,7 +668,7 @@ public: gain_ = AnalogueGainExp{ 1.0, expGainDb(0.3) }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx662", CameraSensorHelperImx662) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx662, "imx662") class CameraSensorHelperImx678 : public CameraSensorHelper { @@ -688,7 +680,7 @@ public: gain_ = AnalogueGainExp{ 1.0, expGainDb(0.3) }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx678", CameraSensorHelperImx678) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx678, "imx678") class CameraSensorHelperImx708 : public CameraSensorHelper { @@ -699,7 +691,7 @@ public: gain_ = AnalogueGainLinear{ 0, 1024, -1, 1024 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("imx708", CameraSensorHelperImx708) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperImx708, "imx708") class CameraSensorHelperOv01a10 : public CameraSensorHelper { @@ -711,7 +703,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 256 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov01a10", CameraSensorHelperOv01a10) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv01a10, "ov01a10") class CameraSensorHelperOv08d10 : public CameraSensorHelper { @@ -723,7 +715,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov08d10", CameraSensorHelperOv08d10) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv08d10, "ov08d10") class CameraSensorHelperOv08x40 : public CameraSensorHelper { @@ -734,7 +726,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov08x40", CameraSensorHelperOv08x40) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv08x40, "ov08x40") class CameraSensorHelperMira220 : public CameraSensorHelper { @@ -746,7 +738,7 @@ public: gain_ = AnalogueGainLinear{ 0, 2048, -1, 2048 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("mira220", CameraSensorHelperMira220) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperMira220, "mira220") class CameraSensorHelperOv2685 : public CameraSensorHelper { @@ -760,7 +752,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov2685", CameraSensorHelperOv2685) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv2685, "ov2685") class CameraSensorHelperOv2740 : public CameraSensorHelper { @@ -772,7 +764,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov2740", CameraSensorHelperOv2740) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv2740, "ov2740") class CameraSensorHelperOv4689 : public CameraSensorHelper { @@ -784,7 +776,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov4689", CameraSensorHelperOv4689) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv4689, "ov4689") class CameraSensorHelperOv5640 : public CameraSensorHelper { @@ -796,7 +788,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 16 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov5640", CameraSensorHelperOv5640) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv5640, "ov5640") class CameraSensorHelperOv5647 : public CameraSensorHelper { @@ -806,7 +798,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 16 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov5647", CameraSensorHelperOv5647) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv5647, "ov5647") class CameraSensorHelperOv5670 : public CameraSensorHelper { @@ -816,7 +808,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov5670", CameraSensorHelperOv5670) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv5670, "ov5670") class CameraSensorHelperOv5675 : public CameraSensorHelper { @@ -828,7 +820,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov5675", CameraSensorHelperOv5675) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv5675, "ov5675") class CameraSensorHelperOv5693 : public CameraSensorHelper { @@ -839,7 +831,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 16 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov5693", CameraSensorHelperOv5693) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv5693, "ov5693") class CameraSensorHelperOv64a40 : public CameraSensorHelper { @@ -849,7 +841,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov64a40", CameraSensorHelperOv64a40) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv64a40, "ov64a40") class CameraSensorHelperOv8858 : public CameraSensorHelper { @@ -865,7 +857,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov8858", CameraSensorHelperOv8858) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv8858, "ov8858") class CameraSensorHelperOv8865 : public CameraSensorHelper { @@ -875,7 +867,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov8865", CameraSensorHelperOv8865) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv8865, "ov8865") class CameraSensorHelperOv13858 : public CameraSensorHelper { @@ -885,7 +877,7 @@ public: gain_ = AnalogueGainLinear{ 1, 0, 0, 128 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("ov13858", CameraSensorHelperOv13858) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperOv13858, "ov13858") class CameraSensorHelperVd55g1 : public CameraSensorHelper { @@ -897,7 +889,7 @@ public: gain_ = AnalogueGainLinear{ 0, 32, -1, 32 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("vd55g1", CameraSensorHelperVd55g1) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperVd55g1, "vd55g1") class CameraSensorHelperVd56g3 : public CameraSensorHelper { @@ -909,7 +901,7 @@ public: gain_ = AnalogueGainLinear{ 0, 32, -1, 32 }; } }; -REGISTER_CAMERA_SENSOR_HELPER("vd56g3", CameraSensorHelperVd56g3) +REGISTER_CAMERA_SENSOR_HELPER(CameraSensorHelperVd56g3, "vd56g3") } /* namespace */ diff --git a/src/ipa/libipa/camera_sensor_helper.h b/src/ipa/libipa/camera_sensor_helper.h index bd3d0beec77f..bc53f1bfc80c 100644 --- a/src/ipa/libipa/camera_sensor_helper.h +++ b/src/ipa/libipa/camera_sensor_helper.h @@ -54,7 +54,7 @@ private: class CameraSensorHelperFactoryBase { public: - CameraSensorHelperFactoryBase(const std::string name); + CameraSensorHelperFactoryBase(std::initializer_list names); virtual ~CameraSensorHelperFactoryBase() = default; static std::unique_ptr create(const std::string &name); @@ -68,15 +68,15 @@ private: virtual std::unique_ptr createInstance() const = 0; - std::string name_; + std::vector names_; }; template class CameraSensorHelperFactory final : public CameraSensorHelperFactoryBase { public: - CameraSensorHelperFactory(const char *name) - : CameraSensorHelperFactoryBase(name) + CameraSensorHelperFactory(std::initializer_list names) + : CameraSensorHelperFactoryBase(names) { } @@ -87,8 +87,8 @@ private: } }; -#define REGISTER_CAMERA_SENSOR_HELPER(name, helper) \ -static CameraSensorHelperFactory global_##helper##Factory(name); +#define REGISTER_CAMERA_SENSOR_HELPER(helper, name, ...) \ +static CameraSensorHelperFactory global_##helper##Factory({ name, __VA_ARGS__ }); } /* namespace ipa */