diff --git a/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp b/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp new file mode 100644 index 00000000..140aabd8 --- /dev/null +++ b/src/ipa/rpi/cam_helper/cam_helper_vd56g3.cpp @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/* + * Copyright (C) STMicroelectronics SA 2025 + * + * Camera information for vd56g3 sensor + */ + +#include + +#include "cam_helper.h" + +using namespace RPiController; + +class CamHelperVd56g3 : public CamHelper +{ +public: + CamHelperVd56g3(); + uint32_t gainCode(double gain) const override; + double gain(uint32_t gainCode) const override; + +private: + /* + * Smallest difference between the frame length and integration time, + * in units of lines. + */ + static constexpr int frameIntegrationDiff = 61; +}; + +CamHelperVd56g3::CamHelperVd56g3() + : CamHelper({}, frameIntegrationDiff) +{ +} + +uint32_t CamHelperVd56g3::gainCode(double gain) const +{ + return static_cast(32.0 - 32.0 / gain); +} + +double CamHelperVd56g3::gain(uint32_t gainCode) const +{ + return static_cast(32.0 / (32 - gainCode)); +} + +static CamHelper *create() +{ + return new CamHelperVd56g3(); +} + +static RegisterCamHelper reg("vd56g3", &create); diff --git a/src/ipa/rpi/cam_helper/meson.build b/src/ipa/rpi/cam_helper/meson.build index abf02147..b70acbee 100644 --- a/src/ipa/rpi/cam_helper/meson.build +++ b/src/ipa/rpi/cam_helper/meson.build @@ -14,6 +14,7 @@ rpi_ipa_cam_helper_sources = files([ 'cam_helper_ov64a40.cpp', 'cam_helper_ov7251.cpp', 'cam_helper_ov9281.cpp', + 'cam_helper_vd56g3.cpp', 'md_parser_smia.cpp', ])