libcamera: libcamera::ipa::AwbAlgorithm Class Reference

libcamera v0.7.0 Supporting cameras in Linux since 2019

Loading...
Searching...
No Matches
libcamera::ipa::AwbAlgorithm Class Referenceabstract

A base class for auto white balance algorithms. More...

Inheritance diagram for libcamera::ipa::AwbAlgorithm:
[legend]

## Classes
class | ModeConfig
| Holds the configuration of a single AWB mode. More...

## Public Member Functions
virtual int | init (const YamlObject &tuningData)=0
| Initialize the algorithm with the given tuning data.
virtual AwbResult | calculateAwb (const AwbStats &stats, unsigned int lux)=0
| Calculate AWB data from the given statistics.
virtual std::optional< RGB< double > > | gainsFromColourTemperature (double colourTemperature)=0
| Compute white balance gains from a colour temperature.
const ControlInfoMap::Map & | controls () const
| Get the controls info map for this algorithm.
virtual void | handleControls (const ControlList &controls)
| Handle the controls supplied in a request.

## Protected Member Functions
int | parseModeConfigs (const YamlObject &tuningData, const ControlValue &def={})
| Parse the mode configurations from the tuning data.

## Protected Attributes
ControlInfoMap::Map | controls_
| Controls info map for the controls provided by the algorithm.
std::map< controls::AwbModeEnum, AwbAlgorithm::ModeConfig > | modes_
| Map of all configured modes.

## Detailed Description

A base class for auto white balance algorithms.

This class is a base class for auto white balance algorithms. It defines an interface for the algorithms to implement, and is used by the IPAs to interact with the concrete implementation.

## Member Function Documentation

## ◆ calculateAwb()

virtual AwbResult libcamera::ipa::AwbAlgorithm::calculateAwb | ( | const AwbStats & | stats,
|  | unsigned int | lux )
| pure virtual

Calculate AWB data from the given statistics.

Parameters

  [in] | stats | The statistics to use for the calculation
  [in] | lux | The lux value of the scene

Calculate an AwbResult object from the given statistics and lux value. A lux value of 0 means it is unknown or invalid and the algorithm shall ignore it.

Returns
  The AWB result

Implemented in libcamera::ipa::AwbBayes, and libcamera::ipa::AwbGrey.

## ◆ controls()

const ControlInfoMap::Map & libcamera::ipa::AwbAlgorithm::controls | ( |  | ) | const
| inline

Get the controls info map for this algorithm.

Returns
  The controls info map

## ◆ gainsFromColourTemperature()

virtual std::optional< RGB< double > > libcamera::ipa::AwbAlgorithm::gainsFromColourTemperature | ( | double | colourTemperature | ) |
| pure virtual

Compute white balance gains from a colour temperature.

Parameters

  [in] | colourTemperature | The colour temperature in Kelvin

Compute the white balance gains from a colourTemperature. This function does not take any statistics into account. It is used to compute the colour gains when the user manually specifies a colour temperature.

Returns
  The colour gains or std::nullopt if the conversion is not possible

Implemented in libcamera::ipa::AwbBayes, and libcamera::ipa::AwbGrey.

## ◆ handleControls()

virtual void libcamera::ipa::AwbAlgorithm::handleControls | ( | const ControlList & | controls | ) |
| inlinevirtual

Handle the controls supplied in a request.

Parameters

  [in] | controls | The controls to handle

Reimplemented in libcamera::ipa::AwbBayes.

## ◆ init()

virtual int libcamera::ipa::AwbAlgorithm::init | ( | const YamlObject & | tuningData | ) |
| pure virtual

Initialize the algorithm with the given tuning data.

Parameters

  [in] | tuningData | The tuning data to use for the algorithm

Returns
  0 on success, a negative error code otherwise

Implemented in libcamera::ipa::AwbBayes, and libcamera::ipa::AwbGrey.

## ◆ parseModeConfigs()

int libcamera::ipa::AwbAlgorithm::parseModeConfigs | ( | const YamlObject & | tuningData,
|  | const ControlValue & | def = {} )
| protected

Parse the mode configurations from the tuning data.

Parameters

  [in] | tuningData | the YamlObject representing the tuning data
  [in] | def | The default value for the AwbMode control

Utility function to parse the tuning data for an AwbMode entry and read all provided modes. It adds controls::AwbMode to AwbAlgorithm::controls_ and populates AwbAlgorithm::modes_. For a list of possible modes see controls::AwbModeEnum.

Each mode entry must contain a "lo" and "hi" key to specify the lower and upper colour temperature of that mode. For example:

algorithms:
- Awb:
AwbMode:
AwbAuto:
lo: 2500
hi: 8000
AwbIncandescent:
lo: 2500
hi: 3000
...

If def is supplied but not contained in the the tuningData, -EINVAL is returned.

See also
  controls::AwbModeEnum

Returns
  Zero on success, negative error code otherwise

## Member Data Documentation

## ◆ modes_

std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> libcamera::ipa::AwbAlgorithm::modes_
| protected

Map of all configured modes.

See also
  AwbAlgorithm::parseModeConfigs

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

- src/ipa/libipa/awb.h
- src/ipa/libipa/awb.cpp