[v1] ipa: Move camera sensor helper types into anon namespace
diff mbox series

Message ID 20260921095546.123850-1-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • [v1] ipa: Move camera sensor helper types into anon namespace
Related show

Commit Message

Barnabás Pőcze Sept. 21, 2026, 9:55 a.m. UTC
These symbols need not be externally visible because they are used via an
indirect registration mechanism, so move them into an anon namespace.

This also provides more information to the compiler for better optimization
and diagnostics opportunities. For example, this would have prevented
the undefined reference issue that 330f9c6274a550535a95354d686a2b31ff1ca161
("ipa: rpi: mira220: Drop unused override for hideFramesModeSwitch") fixes.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
---
 src/ipa/libipa/camera_sensor_helper.cpp       |  9 ++++----
 src/ipa/rpi/cam_helper/cam_helper_imx219.cpp  |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_imx283.cpp  |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_imx290.cpp  | 14 +++++++-----
 src/ipa/rpi/cam_helper/cam_helper_imx296.cpp  |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_imx355.cpp  |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_imx415.cpp  |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_imx477.cpp  | 16 +++++++++-----
 src/ipa/rpi/cam_helper/cam_helper_imx519.cpp  | 16 +++++++++-----
 src/ipa/rpi/cam_helper/cam_helper_imx678.cpp  |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_imx708.cpp  | 22 +++++++++++--------
 src/ipa/rpi/cam_helper/cam_helper_mira220.cpp |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp  |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp  |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp  |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp  |  8 +++++--
 src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp  |  8 +++++--
 18 files changed, 125 insertions(+), 56 deletions(-)

Comments

Naushir Patuck Sept. 21, 2026, 11:02 a.m. UTC | #1
Hi Barnabás,

On Mon, 21 Sept 2026 at 10:55, Barnabás Pőcze
<barnabas.pocze@ideasonboard.com> wrote:
>
> These symbols need not be externally visible because they are used via an
> indirect registration mechanism, so move them into an anon namespace.
>
> This also provides more information to the compiler for better optimization
> and diagnostics opportunities. For example, this would have prevented
> the undefined reference issue that 330f9c6274a550535a95354d686a2b31ff1ca161
> ("ipa: rpi: mira220: Drop unused override for hideFramesModeSwitch") fixes.
>
> Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>

Looks reasonable to me.

Reviewed-by: Naushir Patuck <naush@raspberrypi.com>


> ---
>  src/ipa/libipa/camera_sensor_helper.cpp       |  9 ++++----
>  src/ipa/rpi/cam_helper/cam_helper_imx219.cpp  |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_imx283.cpp  |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_imx290.cpp  | 14 +++++++-----
>  src/ipa/rpi/cam_helper/cam_helper_imx296.cpp  |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_imx355.cpp  |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_imx415.cpp  |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_imx477.cpp  | 16 +++++++++-----
>  src/ipa/rpi/cam_helper/cam_helper_imx519.cpp  | 16 +++++++++-----
>  src/ipa/rpi/cam_helper/cam_helper_imx678.cpp  |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_imx708.cpp  | 22 +++++++++++--------
>  src/ipa/rpi/cam_helper/cam_helper_mira220.cpp |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp  |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp  |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp  |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp  |  8 +++++--
>  src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp  |  8 +++++--
>  18 files changed, 125 insertions(+), 56 deletions(-)
>
> diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp
> index c00b997eb2..359040ec74 100644
> --- a/src/ipa/libipa/camera_sensor_helper.cpp
> +++ b/src/ipa/libipa/camera_sensor_helper.cpp
> @@ -358,11 +358,13 @@ std::vector<CameraSensorHelperFactoryBase *> &CameraSensorHelperFactoryBase::fac
>
>  #ifndef __DOXYGEN__
>
> +namespace {
> +
>  /*
>   * Helper function to compute the m parameter of the exponential gain model
>   * when the gain code is expressed in dB.
>   */
> -static constexpr double expGainDb(double step)
> +constexpr double expGainDb(double step)
>  {
>         constexpr double log2_10 = 3.321928094887362;
>
> @@ -465,9 +467,6 @@ public:
>
>                 return m * (1 << coarse) / (1.0 - (fine / d1) / d2);
>         }
> -
> -private:
> -       static constexpr double kStep_ = 16;
>  };
>  REGISTER_CAMERA_SENSOR_HELPER("ar0144", CameraSensorHelperAr0144)
>
> @@ -912,6 +911,8 @@ public:
>  };
>  REGISTER_CAMERA_SENSOR_HELPER("vd56g3", CameraSensorHelperVd56g3)
>
> +} /* namespace */
> +
>  #endif /* __DOXYGEN__ */
>
>  } /* namespace ipa */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
> index c9e5479aa6..a43ddcf681 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
> @@ -21,6 +21,8 @@
>  #include "md_parser.h"
>  #endif
>
> +namespace {
> +
>  using namespace RPiController;
>
>  /*
> @@ -107,9 +109,11 @@ void CamHelperImx219::populateMetadata(const MdParser::RegisterMap &registers,
>         metadata.set("device.status", deviceStatus);
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperImx219();
>  }
>
> -static RegisterCamHelper reg("imx219", &create);
> +RegisterCamHelper reg("imx219", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp
> index 073f3910e4..0035c4ad6c 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp
> @@ -9,6 +9,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperImx283 : public CamHelper
> @@ -53,9 +55,11 @@ unsigned int CamHelperImx283::hideFramesModeSwitch() const
>         return 1;
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperImx283();
>  }
>
> -static RegisterCamHelper reg("imx283", &create);
> +RegisterCamHelper reg("imx283", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
> index b69d38c318..d9542efd40 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
> @@ -9,6 +9,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperImx290 : public CamHelper
> @@ -56,12 +58,14 @@ unsigned int CamHelperImx290::hideFramesModeSwitch() const
>         return 1;
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperImx290();
>  }
>
> -static RegisterCamHelper reg("imx290", &create);
> -static RegisterCamHelper reg327("imx327", &create);
> -static RegisterCamHelper reg462("imx462", &create);
> -static RegisterCamHelper reg662("imx662", &create);
> +RegisterCamHelper reg("imx290", &create);
> +RegisterCamHelper reg327("imx327", &create);
> +RegisterCamHelper reg462("imx462", &create);
> +RegisterCamHelper reg662("imx662", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
> index 2d193863ea..bbcab0dcd0 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
> @@ -13,6 +13,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>  using libcamera::utils::Duration;
>  using namespace std::literals::chrono_literals;
> @@ -122,9 +124,11 @@ void CamHelperImx296::populateMetadata(const MdParser::RegisterMap &registers,
>         metadata.set("device.status", deviceStatus);
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperImx296();
>  }
>
> -static RegisterCamHelper reg("imx296", &create);
> +RegisterCamHelper reg("imx296", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp
> index e6cac83be3..c16b76aba6 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp
> @@ -12,6 +12,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperImx355 : public CamHelper
> @@ -61,9 +63,11 @@ bool CamHelperImx355::sensorEmbeddedDataPresent() const
>         return 0;
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperImx355();
>  }
>
> -static RegisterCamHelper reg("imx355", &create);
> +RegisterCamHelper reg("imx355", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp
> index c0a09eee3d..a2a8f361d2 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp
> @@ -9,6 +9,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperImx415 : public CamHelper
> @@ -56,9 +58,11 @@ unsigned int CamHelperImx415::hideFramesModeSwitch() const
>         return 1;
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperImx415();
>  }
>
> -static RegisterCamHelper reg("imx415", &create);
> +RegisterCamHelper reg("imx415", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
> index 3f2c93c401..dcfe29b146 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
> @@ -17,14 +17,16 @@
>  #include "cam_helper.h"
>  #include "md_parser.h"
>
> -using namespace RPiController;
> -using namespace libcamera;
> -using libcamera::utils::Duration;
> -
>  namespace libcamera {
>  LOG_DECLARE_CATEGORY(IPARPI)
>  }
>
> +namespace {
> +
> +using namespace RPiController;
> +using namespace libcamera;
> +using libcamera::utils::Duration;
> +
>  /*
>   * We care about two gain registers and a pair of exposure registers. Their
>   * I2C addresses from the Sony IMX477 datasheet:
> @@ -184,9 +186,11 @@ void CamHelperImx477::populateMetadata(const MdParser::RegisterMap &registers,
>         metadata.set("device.status", deviceStatus);
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperImx477();
>  }
>
> -static RegisterCamHelper reg("imx477", &create);
> +RegisterCamHelper reg("imx477", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
> index f722428c94..d5643ede1b 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
> @@ -18,14 +18,16 @@
>  #include "cam_helper.h"
>  #include "md_parser.h"
>
> -using namespace RPiController;
> -using namespace libcamera;
> -using libcamera::utils::Duration;
> -
>  namespace libcamera {
>  LOG_DECLARE_CATEGORY(IPARPI)
>  }
>
> +namespace {
> +
> +using namespace RPiController;
> +using namespace libcamera;
> +using libcamera::utils::Duration;
> +
>  /*
>   * We care about two gain registers and a pair of exposure registers. Their
>   * I2C addresses from the Sony IMX519 datasheet:
> @@ -177,9 +179,11 @@ void CamHelperImx519::populateMetadata(const MdParser::RegisterMap &registers,
>         metadata.set("device.status", deviceStatus);
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperImx519();
>  }
>
> -static RegisterCamHelper reg("imx519", &create);
> +RegisterCamHelper reg("imx519", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp
> index 916433bf6d..5be1fa7953 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp
> @@ -10,6 +10,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperImx678 : public CamHelper
> @@ -48,9 +50,11 @@ double CamHelperImx678::gain(uint32_t gainCode) const
>         return std::pow(10, 0.015 * gainCode);
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperImx678();
>  }
>
> -static RegisterCamHelper reg("imx678", &create);
> +RegisterCamHelper reg("imx678", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
> index 2b61a83011..a53b5c8fe5 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
> @@ -17,16 +17,18 @@
>  #include "cam_helper.h"
>  #include "md_parser.h"
>
> +namespace libcamera {
> +LOG_DECLARE_CATEGORY(IPARPI)
> +}
> +
> +namespace {
> +
>  using namespace RPiController;
>  using namespace libcamera;
>  using libcamera::utils::Duration;
>
>  using namespace std::literals::chrono_literals;
>
> -namespace libcamera {
> -LOG_DECLARE_CATEGORY(IPARPI)
> -}
> -
>  /*
>   * We care about two gain registers and a pair of exposure registers. Their
>   * I2C addresses from the Sony imx708 datasheet:
> @@ -367,12 +369,14 @@ void CamHelperImx708::putAGCStatistics(StatisticsPtr stats)
>         }
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperImx708();
>  }
>
> -static RegisterCamHelper reg("imx708", &create);
> -static RegisterCamHelper regWide("imx708_wide", &create);
> -static RegisterCamHelper regNoIr("imx708_noir", &create);
> -static RegisterCamHelper regWideNoIr("imx708_wide_noir", &create);
> +RegisterCamHelper reg("imx708", &create);
> +RegisterCamHelper regWide("imx708_wide", &create);
> +RegisterCamHelper regNoIr("imx708_noir", &create);
> +RegisterCamHelper regWideNoIr("imx708_wide_noir", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp b/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp
> index 6ab1489012..39fe90d940 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp
> @@ -9,6 +9,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperMira220 : public CamHelper
> @@ -50,9 +52,11 @@ double CamHelperMira220::gain(uint32_t gainCode) const
>         return static_cast<double>(2048.0 / (2048 - gainCode));
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperMira220();
>  }
>
> -static RegisterCamHelper reg("mira220", &create);
> +RegisterCamHelper reg("mira220", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
> index 3b6fbb17ad..e79739e3f7 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
> @@ -9,6 +9,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperOv5647 : public CamHelper
> @@ -86,9 +88,11 @@ unsigned int CamHelperOv5647::mistrustMetadataModeSwitch() const
>         return 2;
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperOv5647();
>  }
>
> -static RegisterCamHelper reg("ov5647", &create);
> +RegisterCamHelper reg("ov5647", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp
> index 980495a8a5..d6b80f2858 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp
> @@ -10,6 +10,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperOv64a40 : public CamHelper
> @@ -54,9 +56,11 @@ double CamHelperOv64a40::getModeSensitivity(const CameraMode &mode) const
>         }
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperOv64a40();
>  }
>
> -static RegisterCamHelper reg("ov64a40", &create);
> +RegisterCamHelper reg("ov64a40", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp
> index fc7b999f41..47f5114067 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp
> @@ -9,6 +9,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperOv7251 : public CamHelper
> @@ -46,9 +48,11 @@ double CamHelperOv7251::gain(uint32_t gainCode) const
>         return static_cast<double>(gainCode) / 16.0;
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperOv7251();
>  }
>
> -static RegisterCamHelper reg("ov7251", &create);
> +RegisterCamHelper reg("ov7251", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
> index e93a4691b8..2ee2c9d02b 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
> @@ -9,6 +9,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperOv9281 : public CamHelper
> @@ -46,9 +48,11 @@ double CamHelperOv9281::gain(uint32_t gainCode) const
>         return static_cast<double>(gainCode) / 16.0;
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperOv9281();
>  }
>
> -static RegisterCamHelper reg("ov9281", &create);
> +RegisterCamHelper reg("ov9281", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp b/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp
> index 7a262e2332..53113d32a6 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp
> @@ -9,6 +9,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperVd55g1 : public CamHelper
> @@ -41,9 +43,11 @@ double CamHelperVd55g1::gain(uint32_t gainCode) const
>         return 32.0 / (32.0 - static_cast<double>(gainCode));
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperVd55g1();
>  }
>
> -static RegisterCamHelper reg("vd55g1", &create);
> +RegisterCamHelper reg("vd55g1", &create);
> +
> +} /* namespace */
> diff --git a/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp b/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp
> index 8a58bc7467..6c60a75a37 100644
> --- a/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp
> +++ b/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp
> @@ -9,6 +9,8 @@
>
>  #include "cam_helper.h"
>
> +namespace {
> +
>  using namespace RPiController;
>
>  class CamHelperVd56g3 : public CamHelper
> @@ -41,9 +43,11 @@ double CamHelperVd56g3::gain(uint32_t gainCode) const
>         return static_cast<double>(32.0 / (32 - gainCode));
>  }
>
> -static CamHelper *create()
> +CamHelper *create()
>  {
>         return new CamHelperVd56g3();
>  }
>
> -static RegisterCamHelper reg("vd56g3", &create);
> +RegisterCamHelper reg("vd56g3", &create);
> +
> +} /* namespace */
> --
> 2.55.0
>
Kieran Bingham Sept. 21, 2026, 11:50 a.m. UTC | #2
Quoting Naushir Patuck (2026-09-21 12:02:36)
> Hi Barnabás,
> 
> On Mon, 21 Sept 2026 at 10:55, Barnabás Pőcze
> <barnabas.pocze@ideasonboard.com> wrote:
> >
> > These symbols need not be externally visible because they are used via an
> > indirect registration mechanism, so move them into an anon namespace.
> >
> > This also provides more information to the compiler for better optimization
> > and diagnostics opportunities. For example, this would have prevented
> > the undefined reference issue that 330f9c6274a550535a95354d686a2b31ff1ca161
> > ("ipa: rpi: mira220: Drop unused override for hideFramesModeSwitch") fixes.
> >
> > Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
> 
> Looks reasonable to me.
> 
> Reviewed-by: Naushir Patuck <naush@raspberrypi.com>

And if it helps us catch potential link errors at compile time that
seems like a strong benefit.


Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

> 
> 
> > ---
> >  src/ipa/libipa/camera_sensor_helper.cpp       |  9 ++++----
> >  src/ipa/rpi/cam_helper/cam_helper_imx219.cpp  |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_imx283.cpp  |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_imx290.cpp  | 14 +++++++-----
> >  src/ipa/rpi/cam_helper/cam_helper_imx296.cpp  |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_imx355.cpp  |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_imx415.cpp  |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_imx477.cpp  | 16 +++++++++-----
> >  src/ipa/rpi/cam_helper/cam_helper_imx519.cpp  | 16 +++++++++-----
> >  src/ipa/rpi/cam_helper/cam_helper_imx678.cpp  |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_imx708.cpp  | 22 +++++++++++--------
> >  src/ipa/rpi/cam_helper/cam_helper_mira220.cpp |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp  |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp  |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp  |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp  |  8 +++++--
> >  src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp  |  8 +++++--
> >  18 files changed, 125 insertions(+), 56 deletions(-)
> >
> > diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp
> > index c00b997eb2..359040ec74 100644
> > --- a/src/ipa/libipa/camera_sensor_helper.cpp
> > +++ b/src/ipa/libipa/camera_sensor_helper.cpp
> > @@ -358,11 +358,13 @@ std::vector<CameraSensorHelperFactoryBase *> &CameraSensorHelperFactoryBase::fac
> >
> >  #ifndef __DOXYGEN__
> >
> > +namespace {
> > +
> >  /*
> >   * Helper function to compute the m parameter of the exponential gain model
> >   * when the gain code is expressed in dB.
> >   */
> > -static constexpr double expGainDb(double step)
> > +constexpr double expGainDb(double step)
> >  {
> >         constexpr double log2_10 = 3.321928094887362;
> >
> > @@ -465,9 +467,6 @@ public:
> >
> >                 return m * (1 << coarse) / (1.0 - (fine / d1) / d2);
> >         }
> > -
> > -private:
> > -       static constexpr double kStep_ = 16;
> >  };
> >  REGISTER_CAMERA_SENSOR_HELPER("ar0144", CameraSensorHelperAr0144)
> >
> > @@ -912,6 +911,8 @@ public:
> >  };
> >  REGISTER_CAMERA_SENSOR_HELPER("vd56g3", CameraSensorHelperVd56g3)
> >
> > +} /* namespace */
> > +
> >  #endif /* __DOXYGEN__ */
> >
> >  } /* namespace ipa */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
> > index c9e5479aa6..a43ddcf681 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
> > @@ -21,6 +21,8 @@
> >  #include "md_parser.h"
> >  #endif
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  /*
> > @@ -107,9 +109,11 @@ void CamHelperImx219::populateMetadata(const MdParser::RegisterMap &registers,
> >         metadata.set("device.status", deviceStatus);
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperImx219();
> >  }
> >
> > -static RegisterCamHelper reg("imx219", &create);
> > +RegisterCamHelper reg("imx219", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp
> > index 073f3910e4..0035c4ad6c 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp
> > @@ -9,6 +9,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperImx283 : public CamHelper
> > @@ -53,9 +55,11 @@ unsigned int CamHelperImx283::hideFramesModeSwitch() const
> >         return 1;
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperImx283();
> >  }
> >
> > -static RegisterCamHelper reg("imx283", &create);
> > +RegisterCamHelper reg("imx283", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
> > index b69d38c318..d9542efd40 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
> > @@ -9,6 +9,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperImx290 : public CamHelper
> > @@ -56,12 +58,14 @@ unsigned int CamHelperImx290::hideFramesModeSwitch() const
> >         return 1;
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperImx290();
> >  }
> >
> > -static RegisterCamHelper reg("imx290", &create);
> > -static RegisterCamHelper reg327("imx327", &create);
> > -static RegisterCamHelper reg462("imx462", &create);
> > -static RegisterCamHelper reg662("imx662", &create);
> > +RegisterCamHelper reg("imx290", &create);
> > +RegisterCamHelper reg327("imx327", &create);
> > +RegisterCamHelper reg462("imx462", &create);
> > +RegisterCamHelper reg662("imx662", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
> > index 2d193863ea..bbcab0dcd0 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
> > @@ -13,6 +13,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >  using libcamera::utils::Duration;
> >  using namespace std::literals::chrono_literals;
> > @@ -122,9 +124,11 @@ void CamHelperImx296::populateMetadata(const MdParser::RegisterMap &registers,
> >         metadata.set("device.status", deviceStatus);
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperImx296();
> >  }
> >
> > -static RegisterCamHelper reg("imx296", &create);
> > +RegisterCamHelper reg("imx296", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp
> > index e6cac83be3..c16b76aba6 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp
> > @@ -12,6 +12,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperImx355 : public CamHelper
> > @@ -61,9 +63,11 @@ bool CamHelperImx355::sensorEmbeddedDataPresent() const
> >         return 0;
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperImx355();
> >  }
> >
> > -static RegisterCamHelper reg("imx355", &create);
> > +RegisterCamHelper reg("imx355", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp
> > index c0a09eee3d..a2a8f361d2 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp
> > @@ -9,6 +9,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperImx415 : public CamHelper
> > @@ -56,9 +58,11 @@ unsigned int CamHelperImx415::hideFramesModeSwitch() const
> >         return 1;
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperImx415();
> >  }
> >
> > -static RegisterCamHelper reg("imx415", &create);
> > +RegisterCamHelper reg("imx415", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
> > index 3f2c93c401..dcfe29b146 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
> > @@ -17,14 +17,16 @@
> >  #include "cam_helper.h"
> >  #include "md_parser.h"
> >
> > -using namespace RPiController;
> > -using namespace libcamera;
> > -using libcamera::utils::Duration;
> > -
> >  namespace libcamera {
> >  LOG_DECLARE_CATEGORY(IPARPI)
> >  }
> >
> > +namespace {
> > +
> > +using namespace RPiController;
> > +using namespace libcamera;
> > +using libcamera::utils::Duration;
> > +
> >  /*
> >   * We care about two gain registers and a pair of exposure registers. Their
> >   * I2C addresses from the Sony IMX477 datasheet:
> > @@ -184,9 +186,11 @@ void CamHelperImx477::populateMetadata(const MdParser::RegisterMap &registers,
> >         metadata.set("device.status", deviceStatus);
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperImx477();
> >  }
> >
> > -static RegisterCamHelper reg("imx477", &create);
> > +RegisterCamHelper reg("imx477", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
> > index f722428c94..d5643ede1b 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
> > @@ -18,14 +18,16 @@
> >  #include "cam_helper.h"
> >  #include "md_parser.h"
> >
> > -using namespace RPiController;
> > -using namespace libcamera;
> > -using libcamera::utils::Duration;
> > -
> >  namespace libcamera {
> >  LOG_DECLARE_CATEGORY(IPARPI)
> >  }
> >
> > +namespace {
> > +
> > +using namespace RPiController;
> > +using namespace libcamera;
> > +using libcamera::utils::Duration;
> > +
> >  /*
> >   * We care about two gain registers and a pair of exposure registers. Their
> >   * I2C addresses from the Sony IMX519 datasheet:
> > @@ -177,9 +179,11 @@ void CamHelperImx519::populateMetadata(const MdParser::RegisterMap &registers,
> >         metadata.set("device.status", deviceStatus);
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperImx519();
> >  }
> >
> > -static RegisterCamHelper reg("imx519", &create);
> > +RegisterCamHelper reg("imx519", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp
> > index 916433bf6d..5be1fa7953 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp
> > @@ -10,6 +10,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperImx678 : public CamHelper
> > @@ -48,9 +50,11 @@ double CamHelperImx678::gain(uint32_t gainCode) const
> >         return std::pow(10, 0.015 * gainCode);
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperImx678();
> >  }
> >
> > -static RegisterCamHelper reg("imx678", &create);
> > +RegisterCamHelper reg("imx678", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
> > index 2b61a83011..a53b5c8fe5 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
> > @@ -17,16 +17,18 @@
> >  #include "cam_helper.h"
> >  #include "md_parser.h"
> >
> > +namespace libcamera {
> > +LOG_DECLARE_CATEGORY(IPARPI)
> > +}
> > +
> > +namespace {
> > +
> >  using namespace RPiController;
> >  using namespace libcamera;
> >  using libcamera::utils::Duration;
> >
> >  using namespace std::literals::chrono_literals;
> >
> > -namespace libcamera {
> > -LOG_DECLARE_CATEGORY(IPARPI)
> > -}
> > -
> >  /*
> >   * We care about two gain registers and a pair of exposure registers. Their
> >   * I2C addresses from the Sony imx708 datasheet:
> > @@ -367,12 +369,14 @@ void CamHelperImx708::putAGCStatistics(StatisticsPtr stats)
> >         }
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperImx708();
> >  }
> >
> > -static RegisterCamHelper reg("imx708", &create);
> > -static RegisterCamHelper regWide("imx708_wide", &create);
> > -static RegisterCamHelper regNoIr("imx708_noir", &create);
> > -static RegisterCamHelper regWideNoIr("imx708_wide_noir", &create);
> > +RegisterCamHelper reg("imx708", &create);
> > +RegisterCamHelper regWide("imx708_wide", &create);
> > +RegisterCamHelper regNoIr("imx708_noir", &create);
> > +RegisterCamHelper regWideNoIr("imx708_wide_noir", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp b/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp
> > index 6ab1489012..39fe90d940 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp
> > @@ -9,6 +9,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperMira220 : public CamHelper
> > @@ -50,9 +52,11 @@ double CamHelperMira220::gain(uint32_t gainCode) const
> >         return static_cast<double>(2048.0 / (2048 - gainCode));
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperMira220();
> >  }
> >
> > -static RegisterCamHelper reg("mira220", &create);
> > +RegisterCamHelper reg("mira220", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
> > index 3b6fbb17ad..e79739e3f7 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
> > @@ -9,6 +9,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperOv5647 : public CamHelper
> > @@ -86,9 +88,11 @@ unsigned int CamHelperOv5647::mistrustMetadataModeSwitch() const
> >         return 2;
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperOv5647();
> >  }
> >
> > -static RegisterCamHelper reg("ov5647", &create);
> > +RegisterCamHelper reg("ov5647", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp
> > index 980495a8a5..d6b80f2858 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp
> > @@ -10,6 +10,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperOv64a40 : public CamHelper
> > @@ -54,9 +56,11 @@ double CamHelperOv64a40::getModeSensitivity(const CameraMode &mode) const
> >         }
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperOv64a40();
> >  }
> >
> > -static RegisterCamHelper reg("ov64a40", &create);
> > +RegisterCamHelper reg("ov64a40", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp
> > index fc7b999f41..47f5114067 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp
> > @@ -9,6 +9,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperOv7251 : public CamHelper
> > @@ -46,9 +48,11 @@ double CamHelperOv7251::gain(uint32_t gainCode) const
> >         return static_cast<double>(gainCode) / 16.0;
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperOv7251();
> >  }
> >
> > -static RegisterCamHelper reg("ov7251", &create);
> > +RegisterCamHelper reg("ov7251", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
> > index e93a4691b8..2ee2c9d02b 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
> > @@ -9,6 +9,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperOv9281 : public CamHelper
> > @@ -46,9 +48,11 @@ double CamHelperOv9281::gain(uint32_t gainCode) const
> >         return static_cast<double>(gainCode) / 16.0;
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperOv9281();
> >  }
> >
> > -static RegisterCamHelper reg("ov9281", &create);
> > +RegisterCamHelper reg("ov9281", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp b/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp
> > index 7a262e2332..53113d32a6 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp
> > @@ -9,6 +9,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperVd55g1 : public CamHelper
> > @@ -41,9 +43,11 @@ double CamHelperVd55g1::gain(uint32_t gainCode) const
> >         return 32.0 / (32.0 - static_cast<double>(gainCode));
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperVd55g1();
> >  }
> >
> > -static RegisterCamHelper reg("vd55g1", &create);
> > +RegisterCamHelper reg("vd55g1", &create);
> > +
> > +} /* namespace */
> > diff --git a/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp b/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp
> > index 8a58bc7467..6c60a75a37 100644
> > --- a/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp
> > +++ b/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp
> > @@ -9,6 +9,8 @@
> >
> >  #include "cam_helper.h"
> >
> > +namespace {
> > +
> >  using namespace RPiController;
> >
> >  class CamHelperVd56g3 : public CamHelper
> > @@ -41,9 +43,11 @@ double CamHelperVd56g3::gain(uint32_t gainCode) const
> >         return static_cast<double>(32.0 / (32 - gainCode));
> >  }
> >
> > -static CamHelper *create()
> > +CamHelper *create()
> >  {
> >         return new CamHelperVd56g3();
> >  }
> >
> > -static RegisterCamHelper reg("vd56g3", &create);
> > +RegisterCamHelper reg("vd56g3", &create);
> > +
> > +} /* namespace */
> > --
> > 2.55.0
> >

Patch
diff mbox series

diff --git a/src/ipa/libipa/camera_sensor_helper.cpp b/src/ipa/libipa/camera_sensor_helper.cpp
index c00b997eb2..359040ec74 100644
--- a/src/ipa/libipa/camera_sensor_helper.cpp
+++ b/src/ipa/libipa/camera_sensor_helper.cpp
@@ -358,11 +358,13 @@  std::vector<CameraSensorHelperFactoryBase *> &CameraSensorHelperFactoryBase::fac
 
 #ifndef __DOXYGEN__
 
+namespace {
+
 /*
  * Helper function to compute the m parameter of the exponential gain model
  * when the gain code is expressed in dB.
  */
-static constexpr double expGainDb(double step)
+constexpr double expGainDb(double step)
 {
 	constexpr double log2_10 = 3.321928094887362;
 
@@ -465,9 +467,6 @@  public:
 
 		return m * (1 << coarse) / (1.0 - (fine / d1) / d2);
 	}
-
-private:
-	static constexpr double kStep_ = 16;
 };
 REGISTER_CAMERA_SENSOR_HELPER("ar0144", CameraSensorHelperAr0144)
 
@@ -912,6 +911,8 @@  public:
 };
 REGISTER_CAMERA_SENSOR_HELPER("vd56g3", CameraSensorHelperVd56g3)
 
+} /* namespace */
+
 #endif /* __DOXYGEN__ */
 
 } /* namespace ipa */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
index c9e5479aa6..a43ddcf681 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx219.cpp
@@ -21,6 +21,8 @@ 
 #include "md_parser.h"
 #endif
 
+namespace {
+
 using namespace RPiController;
 
 /*
@@ -107,9 +109,11 @@  void CamHelperImx219::populateMetadata(const MdParser::RegisterMap &registers,
 	metadata.set("device.status", deviceStatus);
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperImx219();
 }
 
-static RegisterCamHelper reg("imx219", &create);
+RegisterCamHelper reg("imx219", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp
index 073f3910e4..0035c4ad6c 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx283.cpp
@@ -9,6 +9,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperImx283 : public CamHelper
@@ -53,9 +55,11 @@  unsigned int CamHelperImx283::hideFramesModeSwitch() const
 	return 1;
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperImx283();
 }
 
-static RegisterCamHelper reg("imx283", &create);
+RegisterCamHelper reg("imx283", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
index b69d38c318..d9542efd40 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx290.cpp
@@ -9,6 +9,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperImx290 : public CamHelper
@@ -56,12 +58,14 @@  unsigned int CamHelperImx290::hideFramesModeSwitch() const
 	return 1;
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperImx290();
 }
 
-static RegisterCamHelper reg("imx290", &create);
-static RegisterCamHelper reg327("imx327", &create);
-static RegisterCamHelper reg462("imx462", &create);
-static RegisterCamHelper reg662("imx662", &create);
+RegisterCamHelper reg("imx290", &create);
+RegisterCamHelper reg327("imx327", &create);
+RegisterCamHelper reg462("imx462", &create);
+RegisterCamHelper reg662("imx662", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
index 2d193863ea..bbcab0dcd0 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx296.cpp
@@ -13,6 +13,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 using libcamera::utils::Duration;
 using namespace std::literals::chrono_literals;
@@ -122,9 +124,11 @@  void CamHelperImx296::populateMetadata(const MdParser::RegisterMap &registers,
 	metadata.set("device.status", deviceStatus);
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperImx296();
 }
 
-static RegisterCamHelper reg("imx296", &create);
+RegisterCamHelper reg("imx296", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp
index e6cac83be3..c16b76aba6 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx355.cpp
@@ -12,6 +12,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperImx355 : public CamHelper
@@ -61,9 +63,11 @@  bool CamHelperImx355::sensorEmbeddedDataPresent() const
 	return 0;
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperImx355();
 }
 
-static RegisterCamHelper reg("imx355", &create);
+RegisterCamHelper reg("imx355", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp
index c0a09eee3d..a2a8f361d2 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx415.cpp
@@ -9,6 +9,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperImx415 : public CamHelper
@@ -56,9 +58,11 @@  unsigned int CamHelperImx415::hideFramesModeSwitch() const
 	return 1;
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperImx415();
 }
 
-static RegisterCamHelper reg("imx415", &create);
+RegisterCamHelper reg("imx415", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
index 3f2c93c401..dcfe29b146 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx477.cpp
@@ -17,14 +17,16 @@ 
 #include "cam_helper.h"
 #include "md_parser.h"
 
-using namespace RPiController;
-using namespace libcamera;
-using libcamera::utils::Duration;
-
 namespace libcamera {
 LOG_DECLARE_CATEGORY(IPARPI)
 }
 
+namespace {
+
+using namespace RPiController;
+using namespace libcamera;
+using libcamera::utils::Duration;
+
 /*
  * We care about two gain registers and a pair of exposure registers. Their
  * I2C addresses from the Sony IMX477 datasheet:
@@ -184,9 +186,11 @@  void CamHelperImx477::populateMetadata(const MdParser::RegisterMap &registers,
 	metadata.set("device.status", deviceStatus);
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperImx477();
 }
 
-static RegisterCamHelper reg("imx477", &create);
+RegisterCamHelper reg("imx477", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
index f722428c94..d5643ede1b 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx519.cpp
@@ -18,14 +18,16 @@ 
 #include "cam_helper.h"
 #include "md_parser.h"
 
-using namespace RPiController;
-using namespace libcamera;
-using libcamera::utils::Duration;
-
 namespace libcamera {
 LOG_DECLARE_CATEGORY(IPARPI)
 }
 
+namespace {
+
+using namespace RPiController;
+using namespace libcamera;
+using libcamera::utils::Duration;
+
 /*
  * We care about two gain registers and a pair of exposure registers. Their
  * I2C addresses from the Sony IMX519 datasheet:
@@ -177,9 +179,11 @@  void CamHelperImx519::populateMetadata(const MdParser::RegisterMap &registers,
 	metadata.set("device.status", deviceStatus);
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperImx519();
 }
 
-static RegisterCamHelper reg("imx519", &create);
+RegisterCamHelper reg("imx519", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp
index 916433bf6d..5be1fa7953 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx678.cpp
@@ -10,6 +10,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperImx678 : public CamHelper
@@ -48,9 +50,11 @@  double CamHelperImx678::gain(uint32_t gainCode) const
 	return std::pow(10, 0.015 * gainCode);
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperImx678();
 }
 
-static RegisterCamHelper reg("imx678", &create);
+RegisterCamHelper reg("imx678", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
index 2b61a83011..a53b5c8fe5 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_imx708.cpp
@@ -17,16 +17,18 @@ 
 #include "cam_helper.h"
 #include "md_parser.h"
 
+namespace libcamera {
+LOG_DECLARE_CATEGORY(IPARPI)
+}
+
+namespace {
+
 using namespace RPiController;
 using namespace libcamera;
 using libcamera::utils::Duration;
 
 using namespace std::literals::chrono_literals;
 
-namespace libcamera {
-LOG_DECLARE_CATEGORY(IPARPI)
-}
-
 /*
  * We care about two gain registers and a pair of exposure registers. Their
  * I2C addresses from the Sony imx708 datasheet:
@@ -367,12 +369,14 @@  void CamHelperImx708::putAGCStatistics(StatisticsPtr stats)
 	}
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperImx708();
 }
 
-static RegisterCamHelper reg("imx708", &create);
-static RegisterCamHelper regWide("imx708_wide", &create);
-static RegisterCamHelper regNoIr("imx708_noir", &create);
-static RegisterCamHelper regWideNoIr("imx708_wide_noir", &create);
+RegisterCamHelper reg("imx708", &create);
+RegisterCamHelper regWide("imx708_wide", &create);
+RegisterCamHelper regNoIr("imx708_noir", &create);
+RegisterCamHelper regWideNoIr("imx708_wide_noir", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp b/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp
index 6ab1489012..39fe90d940 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_mira220.cpp
@@ -9,6 +9,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperMira220 : public CamHelper
@@ -50,9 +52,11 @@  double CamHelperMira220::gain(uint32_t gainCode) const
 	return static_cast<double>(2048.0 / (2048 - gainCode));
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperMira220();
 }
 
-static RegisterCamHelper reg("mira220", &create);
+RegisterCamHelper reg("mira220", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
index 3b6fbb17ad..e79739e3f7 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_ov5647.cpp
@@ -9,6 +9,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperOv5647 : public CamHelper
@@ -86,9 +88,11 @@  unsigned int CamHelperOv5647::mistrustMetadataModeSwitch() const
 	return 2;
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperOv5647();
 }
 
-static RegisterCamHelper reg("ov5647", &create);
+RegisterCamHelper reg("ov5647", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp
index 980495a8a5..d6b80f2858 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_ov64a40.cpp
@@ -10,6 +10,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperOv64a40 : public CamHelper
@@ -54,9 +56,11 @@  double CamHelperOv64a40::getModeSensitivity(const CameraMode &mode) const
 	}
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperOv64a40();
 }
 
-static RegisterCamHelper reg("ov64a40", &create);
+RegisterCamHelper reg("ov64a40", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp
index fc7b999f41..47f5114067 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_ov7251.cpp
@@ -9,6 +9,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperOv7251 : public CamHelper
@@ -46,9 +48,11 @@  double CamHelperOv7251::gain(uint32_t gainCode) const
 	return static_cast<double>(gainCode) / 16.0;
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperOv7251();
 }
 
-static RegisterCamHelper reg("ov7251", &create);
+RegisterCamHelper reg("ov7251", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
index e93a4691b8..2ee2c9d02b 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_ov9281.cpp
@@ -9,6 +9,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperOv9281 : public CamHelper
@@ -46,9 +48,11 @@  double CamHelperOv9281::gain(uint32_t gainCode) const
 	return static_cast<double>(gainCode) / 16.0;
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperOv9281();
 }
 
-static RegisterCamHelper reg("ov9281", &create);
+RegisterCamHelper reg("ov9281", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp b/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp
index 7a262e2332..53113d32a6 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_vd55g1.cpp
@@ -9,6 +9,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperVd55g1 : public CamHelper
@@ -41,9 +43,11 @@  double CamHelperVd55g1::gain(uint32_t gainCode) const
 	return 32.0 / (32.0 - static_cast<double>(gainCode));
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperVd55g1();
 }
 
-static RegisterCamHelper reg("vd55g1", &create);
+RegisterCamHelper reg("vd55g1", &create);
+
+} /* namespace */
diff --git a/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp b/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp
index 8a58bc7467..6c60a75a37 100644
--- a/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp
+++ b/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp
@@ -9,6 +9,8 @@ 
 
 #include "cam_helper.h"
 
+namespace {
+
 using namespace RPiController;
 
 class CamHelperVd56g3 : public CamHelper
@@ -41,9 +43,11 @@  double CamHelperVd56g3::gain(uint32_t gainCode) const
 	return static_cast<double>(32.0 / (32 - gainCode));
 }
 
-static CamHelper *create()
+CamHelper *create()
 {
 	return new CamHelperVd56g3();
 }
 
-static RegisterCamHelper reg("vd56g3", &create);
+RegisterCamHelper reg("vd56g3", &create);
+
+} /* namespace */