libcamera v0.7.2+rpt20261009
Supporting cameras in Linux since 2019
Loading...
Searching...
No Matches
libcamera::ipa::ipu3::algorithms::Lsc Class Reference

IPU3 Lens Shading Correction algorithm. More...

Inheritance diagram for libcamera::ipa::ipu3::algorithms::Lsc:
Collaboration diagram for libcamera::ipa::ipu3::algorithms::Lsc:

Public Member Functions

int init (IPAContext &context, const ValueNode &tuningData) override
 Initialize the Algorithm with tuning data.
 
void queueRequest (IPAContext &context, const uint32_t frame, IPAFrameContext &frameContext, const ControlList &controls) override
 Provide control values to the algorithm.
 
int configure (IPAContext &context, const IPAConfigInfo &configInfo) override
 Configure the Algorithm given an IPAConfigInfo.
 
void prepare (IPAContext &context, const uint32_t frame, IPAFrameContext &frameContext, ipu3_uapi_params *params) override
 Fill the params buffer with ISP processing parameters for a frame.
 
void process (IPAContext &context, const uint32_t frame, IPAFrameContext &frameContext, const ipu3_uapi_stats_3a *stats, ControlList &metadata) override
 Process ISP statistics, and run algorithm operations.
 
- Public Member Functions inherited from libcamera::ipa::Algorithm< _Module >
virtual int init (typename Module::Context &context, const ValueNode &tuningData)
 Initialize the Algorithm with tuning data.
 
virtual int configure (typename Module::Context &context, const typename Module::Config &configInfo)
 Configure the Algorithm given an IPAConfigInfo.
 
virtual void queueRequest (typename Module::Context &context, const uint32_t frame, typename Module::FrameContext &frameContext, const ControlList &controls)
 Provide control values to the algorithm.
 
virtual void prepare (typename Module::Context &context, const uint32_t frame, typename Module::FrameContext &frameContext, typename Module::Params *params)
 Fill the params buffer with ISP processing parameters for a frame.
 
virtual void process (typename Module::Context &context, const uint32_t frame, typename Module::FrameContext &frameContext, const typename Module::Stats *stats, ControlList &metadata)
 Process ISP statistics, and run algorithm operations.
 

Additional Inherited Members

- Public Types inherited from libcamera::ipa::Algorithm< _Module >
using Module = _Module
 The IPA module type for this class of algorithms.
 

Detailed Description

IPU3 Lens Shading Correction algorithm.

Member Function Documentation

◆ configure()

int libcamera::ipa::ipu3::algorithms::Lsc::configure ( IPAContext &  context,
const IPAConfigInfo &  configInfo 
)
override

Configure the Algorithm given an IPAConfigInfo.

Parameters
[in]contextThe shared IPA context
[in]configInfoThe 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.

Returns
0 if successful, an error code otherwise

◆ init()

int libcamera::ipa::ipu3::algorithms::Lsc::init ( IPAContext &  context,
const ValueNode &  tuningData 
)
override

Initialize the Algorithm with tuning data.

Parameters
[in]contextThe shared IPA context
[in]tuningDataThe tuning data for the algorithm

This function is called once, when the IPA module is initialized, to initialize the algorithm. The tuningData ValueNode contains the tuning data for algorithm.

Returns
0 if successful, an error code otherwise

◆ prepare()

void libcamera::ipa::ipu3::algorithms::Lsc::prepare ( IPAContext &  context,
const uint32_t  frame,
IPAFrameContext &  frameContext,
ipu3_uapi_params *  params 
)
override

Fill the params buffer with ISP processing parameters for a frame.

Parameters
[in]contextThe shared IPA context
[in]frameThe frame context sequence number
[in]frameContextThe FrameContext for this frame
[out]paramsThe 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.

◆ process()

void libcamera::ipa::ipu3::algorithms::Lsc::process ( IPAContext &  context,
const uint32_t  frame,
IPAFrameContext &  frameContext,
const ipu3_uapi_stats_3a *  stats,
ControlList &  metadata 
)
override

Process ISP statistics, and run algorithm operations.

Parameters
[in]contextThe shared IPA context
[in]frameThe frame context sequence number
[in]frameContextThe current frame's context
[in]statsThe IPA statistics and ISP results
[out]metadataMetadata 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.

Todo:
Historical data may be required as part of the processing. Either the previous frame, or the IPAFrameContext state of the frame that generated the statistics for this operation may be required for some advanced algorithms to prevent oscillations or support control loops correctly. Only a single IPAFrameContext is available currently, and so any data stored may represent the results of the previously completed operations.

Care shall be taken to ensure the ordering of access to the information such that the algorithms use up to date state as required.

◆ queueRequest()

void libcamera::ipa::ipu3::algorithms::Lsc::queueRequest ( IPAContext &  context,
const uint32_t  frame,
IPAFrameContext &  frameContext,
const ControlList &  controls 
)
override

Provide control values to the algorithm.

Parameters
[in]contextThe shared IPA context
[in]frameThe frame number to apply the control values
[in]frameContextThe current frame's context
[in]controlsThe 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.


The documentation for this class was generated from the following files: