38using Components = std::map<std::string, std::vector<T>, std::less<>>;
74 std::unique_ptr<LscImplementation>
impl_;
89 std::span<const double> xPos,
90 std::span<const double> yPos)
93 impl_->sampleForCrop(analogCrop, xPos, yPos);
95 ComponentsMap lscData;
96 for (
const auto &[t, c] : data) {
97 Components &comp = lscData[t];
99 for (
const auto &[k, gains] : c) {
100 auto &quantizedGains = comp[k];
101 quantizedGains.reserve(gains.size());
103 for (
const float &gain : gains) {
109 quantizedGains.push_back(U(gain).quantized());
111 quantizedGains.push_back(gain);
116 sets_.
setData(std::move(lscData));
std::unordered_map< const ControlId *, ControlInfo > Map
The base std::unsorted_map<> container.
Definition controls.h:411
Associate a list of ControlId with their values for an object.
Definition controls.h:453
Describe a rectangle's position and dimensions.
Definition geometry.h:247
A class representing a tree structure of values.
Definition value_node.h:27
Class for storing, retrieving, and interpolating objects.
Definition interpolator.h:28
const T & getInterpolated(unsigned int key)
Retrieve an interpolated value for the given key.
Definition interpolator.h:87
const std::map< unsigned int, T > & data() const
Access the internal map.
Definition interpolator.h:82
void setData(std::map< unsigned int, T > &&data)
Set the internal map.
Definition interpolator.h:76
Base class for LscAlgorithm.
Definition lsc.h:62
void queueRequest(lsc::ActiveState &state, lsc::FrameContext &context, const ControlList &controls)
Queue a request to the lsc algorithm.
Definition lsc.cpp:179
int init(const ValueNode &tuningData, ControlInfoMap::Map &controls, const LscDescriptor &descriptor)
Definition lsc.cpp:135
std::unique_ptr< LscImplementation > impl_
The LSC algorithm implementation.
Definition lsc.h:74
bool polynomial_
Boolean flag for polynomial LSC.
Definition lsc.h:75
void process(lsc::FrameContext &context, ControlList &metadata)
Populate the list of lsc metadata.
Definition lsc.cpp:204
libIPA LSC algorithm implementation
Definition lsc.h:80
int configure(lsc::ActiveState &state, const Rectangle &analogCrop, std::span< const double > xPos, std::span< const double > yPos)
Re-sample and quantize LSC data.
Definition lsc.h:88
const ComponentsMap & getComponents() const
Return the map of LSC data per-colour-temperature.
Definition lsc.h:127
const Components & interpolateComponents(unsigned int ct)
Interpolate the LSC tables for a given colour temperature.
Definition lsc.h:122
std::map< unsigned int, Components > ComponentsMap
Associate a colour temperature to a LSC table.
Definition lsc_base.h:37
Framework to manage controls related to an object.
Data structures related to geometric objects.
Helper class for linear interpolating a set of objects.
std::map< std::string, std::vector< T >, std::less<> > Components
Associate colour components with a list of gains in register format.
Definition lsc.h:38
std::map< unsigned int, Components< T > > ComponentsMap
Associate a colour temperature to a LSC table.
Definition lsc.h:41
Base types and definitions for LscImplementation class hierarchy.
Top-level libcamera namespace.
Definition backtrace.h:17
Describe the ISP LSC engine.
Definition lsc_base.h:26
The LSC active state.
Definition lsc.h:28
bool enabled
Boolean flag for the LscAlgorithm enable status.
Definition lsc.h:29
The LSC frame context.
Definition lsc.h:32
bool update
Boolean flag for the LscAlgorithm updated status.
Definition lsc.h:34
bool enabled
Boolean flag for the LscAlgorithm enable status.
Definition lsc.h:33
Data structure to manage tree of values.