libcamera
v0.4.0
Supporting cameras in Linux since 2019
|
The base class for all IPA algorithms. More...
Public Types | |
using | Module = _Module |
The IPA module type for this class of algorithms. | |
Public Member Functions | |
virtual int | init ([[maybe_unused]] typename Module::Context &context, [[maybe_unused]] const YamlObject &tuningData) |
Initialize the Algorithm with tuning data. More... | |
virtual int | configure ([[maybe_unused]] typename Module::Context &context, [[maybe_unused]] const typename Module::Config &configInfo) |
Configure the Algorithm given an IPAConfigInfo. More... | |
virtual void | queueRequest ([[maybe_unused]] typename Module::Context &context, [[maybe_unused]] const uint32_t frame, [[maybe_unused]] typename Module::FrameContext &frameContext, [[maybe_unused]] const ControlList &controls) |
Provide control values to the algorithm. More... | |
virtual void | prepare ([[maybe_unused]] typename Module::Context &context, [[maybe_unused]] const uint32_t frame, [[maybe_unused]] typename Module::FrameContext &frameContext, [[maybe_unused]] typename Module::Params *params) |
Fill the params buffer with ISP processing parameters for a frame. More... | |
virtual void | process ([[maybe_unused]] typename Module::Context &context, [[maybe_unused]] const uint32_t frame, [[maybe_unused]] typename Module::FrameContext &frameContext, [[maybe_unused]] const typename Module::Stats *stats, [[maybe_unused]] ControlList &metadata) |
Process ISP statistics, and run algorithm operations. More... | |
The base class for all IPA algorithms.
Module | The IPA module type for this class of algorithms |
The Algorithm class defines a standard interface for IPA algorithms compatible with the Module. By abstracting algorithms, it makes possible the implementation of generic code to manage algorithms regardless of their specific type.
To specialize the Algorithm class template, an IPA module shall specialize the Module class template with module-specific context and configuration types, and pass the specialized Module class as the Module template argument.
|
inlinevirtual |
Configure the Algorithm given an IPAConfigInfo.
[in] | context | The shared IPA context |
[in] | configInfo | The IPA configuration data, received from the pipeline handler |
Algorithms may implement a configure operation to pre-calculate parameters prior to commencing streaming.
Configuration state may be stored in the IPASessionConfiguration structure of the IPAContext.
|
inlinevirtual |
Initialize the Algorithm with tuning data.
[in] | context | The shared IPA context |
[in] | tuningData | The tuning data for the algorithm |
This function is called once, when the IPA module is initialized, to initialize the algorithm. The tuningData YamlObject contains the tuning data for algorithm.
|
inlinevirtual |
Fill the params buffer with ISP processing parameters for a frame.
[in] | context | The shared IPA context |
[in] | frame | The frame context sequence number |
[in] | frameContext | The FrameContext for this frame |
[out] | params | The ISP specific parameters |
This function is called for every frame when the camera is running before it is processed by the ISP to prepare the ISP processing parameters for that frame.
Algorithms shall fill in the parameter structure fields appropriately to configure the ISP processing blocks that they are responsible for. This includes setting fields and flags that enable those processing blocks.
|
inlinevirtual |
Process ISP statistics, and run algorithm operations.
[in] | context | The shared IPA context |
[in] | frame | The frame context sequence number |
[in] | frameContext | The current frame's context |
[in] | stats | The IPA statistics and ISP results |
[out] | metadata | Metadata for the frame, to be filled by the algorithm |
This function is called while camera is running for every frame processed by the ISP, to process statistics generated from that frame by the ISP. Algorithms shall use this data to run calculations, update their state accordingly, and fill the frame metadata.
Processing shall not take an undue amount of time, and any extended or computationally expensive calculations or operations must be handled asynchronously in a separate thread.
Algorithms can store state in their respective IPAFrameContext structures, and reference state from the IPAFrameContext of other algorithms.
Care shall be taken to ensure the ordering of access to the information such that the algorithms use up to date state as required.
|
inlinevirtual |
Provide control values to the algorithm.
[in] | context | The shared IPA context |
[in] | frame | The frame number to apply the control values |
[in] | frameContext | The current frame's context |
[in] | controls | The list of user controls |
This function is called for each request queued to the camera. It provides the controls stored in the request to the algorithm. The frame number is the Request sequence number and identifies the desired corresponding frame to target for the controls to take effect.
Algorithms shall read the applicable controls and store their value for later use during frame processing.