/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2020, Google Inc. * * Image Processing Algorithm interface for raspberrypi * * This file is auto-generated. Do not edit. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include namespace libcamera { namespace ipa { namespace RPi { const uint32_t MaxLsGridSize = 0x8000; enum class _RPiCmd { Exit = 0, Init = 1, Start = 2, Stop = 3, Configure = 4, MapBuffers = 5, UnmapBuffers = 6, PrepareIsp = 7, ProcessStats = 8, }; enum class _RPiEventCmd { PrepareIspComplete = 1, ProcessStatsComplete = 2, MetadataReady = 3, SetIspControls = 4, SetDelayedControls = 5, SetLensControls = 6, SetCameraTimeout = 7, }; struct SensorConfig { public: #ifndef __DOXYGEN__ SensorConfig() = default; template< typename T1 = uint32_t, std::enable_if_t> * = nullptr > SensorConfig(T1 &&_sensorMetadata) : sensorMetadata(std::forward(_sensorMetadata)) { } #endif uint32_t sensorMetadata{ 0 }; }; struct InitParams { public: #ifndef __DOXYGEN__ InitParams() = default; template< typename T1 = bool, typename T2 = IPACameraSensorInfo, typename T3 = float, typename T4 = SharedFD, typename T5 = SharedFD, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr > InitParams(T1 &&_lensPresent, T2 &&_sensorInfo, T3 &&_controllerMinFrameDurationUs, T4 &&_fe, T5 &&_be) : lensPresent(std::forward(_lensPresent)) , sensorInfo(std::forward(_sensorInfo)) , controllerMinFrameDurationUs(std::forward(_controllerMinFrameDurationUs)) , fe(std::forward(_fe)) , be(std::forward(_be)) { } #endif bool lensPresent{ 0 }; IPACameraSensorInfo sensorInfo; float controllerMinFrameDurationUs{ 0 }; SharedFD fe{ -1 }; SharedFD be{ -1 }; }; struct InitResult { public: #ifndef __DOXYGEN__ InitResult() = default; template< typename T1 = SensorConfig, typename T2 = ControlInfoMap, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr > InitResult(T1 &&_sensorConfig, T2 &&_controlInfo) : sensorConfig(std::forward(_sensorConfig)) , controlInfo(std::forward(_controlInfo)) { } #endif SensorConfig sensorConfig; ControlInfoMap controlInfo; }; struct BufferIds { public: #ifndef __DOXYGEN__ BufferIds() = default; template< typename T1 = uint32_t, typename T2 = uint32_t, typename T3 = uint32_t, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr > BufferIds(T1 &&_bayer, T2 &&_embedded, T3 &&_stats) : bayer(std::forward(_bayer)) , embedded(std::forward(_embedded)) , stats(std::forward(_stats)) { } #endif uint32_t bayer{ 0 }; uint32_t embedded{ 0 }; uint32_t stats{ 0 }; }; struct ConfigParams { public: #ifndef __DOXYGEN__ ConfigParams() = default; template< typename T1 = uint32_t, typename T2 = ControlInfoMap, typename T3 = ControlInfoMap, typename T4 = ControlInfoMap, typename T5 = SharedFD, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr > ConfigParams(T1 &&_transform, T2 &&_sensorControls, T3 &&_ispControls, T4 &&_lensControls, T5 &&_lsTableHandle) : transform(std::forward(_transform)) , sensorControls(std::forward(_sensorControls)) , ispControls(std::forward(_ispControls)) , lensControls(std::forward(_lensControls)) , lsTableHandle(std::forward(_lsTableHandle)) { } #endif uint32_t transform{ 0 }; ControlInfoMap sensorControls; ControlInfoMap ispControls; ControlInfoMap lensControls; SharedFD lsTableHandle{ -1 }; }; struct ConfigResult { public: #ifndef __DOXYGEN__ ConfigResult() = default; template< typename T1 = float, typename T2 = ControlInfoMap, typename T3 = ControlList, typename T4 = ControlList, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr > ConfigResult(T1 &&_modeSensitivity, T2 &&_controlInfo, T3 &&_sensorControls, T4 &&_lensControls) : modeSensitivity(std::forward(_modeSensitivity)) , controlInfo(std::forward(_controlInfo)) , sensorControls(std::forward(_sensorControls)) , lensControls(std::forward(_lensControls)) { } #endif float modeSensitivity{ 0 }; ControlInfoMap controlInfo; ControlList sensorControls; ControlList lensControls; }; struct StartResult { public: #ifndef __DOXYGEN__ StartResult() = default; template< typename T1 = ControlList, typename T2 = int32_t, typename T3 = int32_t, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr > StartResult(T1 &&_controls, T2 &&_startupFrameCount, T3 &&_invalidFrameCount) : controls(std::forward(_controls)) , startupFrameCount(std::forward(_startupFrameCount)) , invalidFrameCount(std::forward(_invalidFrameCount)) { } #endif ControlList controls; int32_t startupFrameCount{ 0 }; int32_t invalidFrameCount{ 0 }; }; struct PrepareParams { public: #ifndef __DOXYGEN__ PrepareParams() = default; template< typename T1 = BufferIds, typename T2 = ControlList, typename T3 = ControlList, typename T4 = uint32_t, typename T5 = uint32_t, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr > PrepareParams(T1 &&_buffers, T2 &&_sensorControls, T3 &&_requestControls, T4 &&_ipaContext, T5 &&_delayContext) : buffers(std::forward(_buffers)) , sensorControls(std::forward(_sensorControls)) , requestControls(std::forward(_requestControls)) , ipaContext(std::forward(_ipaContext)) , delayContext(std::forward(_delayContext)) { } #endif BufferIds buffers; ControlList sensorControls; ControlList requestControls; uint32_t ipaContext{ 0 }; uint32_t delayContext{ 0 }; }; struct ProcessParams { public: #ifndef __DOXYGEN__ ProcessParams() = default; template< typename T1 = BufferIds, typename T2 = uint32_t, std::enable_if_t> * = nullptr, std::enable_if_t> * = nullptr > ProcessParams(T1 &&_buffers, T2 &&_ipaContext) : buffers(std::forward(_buffers)) , ipaContext(std::forward(_ipaContext)) { } #endif BufferIds buffers; uint32_t ipaContext{ 0 }; }; class IPARPiInterface : public IPAInterface { public: virtual int32_t init( const IPASettings &settings, const InitParams ¶ms, InitResult *result) = 0; virtual void start( const ControlList &controls, StartResult *result) = 0; virtual void stop() = 0; virtual int32_t configure( const IPACameraSensorInfo &sensorInfo, const ConfigParams ¶ms, ConfigResult *result) = 0; virtual void mapBuffers( const std::vector &buffers) = 0; virtual void unmapBuffers( const std::vector &ids) = 0; virtual void prepareIsp( const PrepareParams ¶ms) = 0; virtual void processStats( const ProcessParams ¶ms) = 0; Signal prepareIspComplete; Signal processStatsComplete; Signal metadataReady; Signal setIspControls; Signal setDelayedControls; Signal setLensControls; Signal setCameraTimeout; }; } /* namespace RPi */ } /* namespace ipa */ } /* namespace libcamera */