ipa: libipa: pwl: Allow to parse a plain yaml value as single point PWL
In the tuning files, it is useful to specify some values as PWL that produces a different output value depending on an input value. For example it is useful to specify the relativeLuminanceTarget depending on the lux level, so that the regulation regulates a bit darker in low light scenes. For simple setups this is not necessary and a single value is sufficient. This patch extends the yaml loading code, so that a single point PWL can also be specified as a plain value. This way the following yaml expressions are all valid: yTarget: [ 1000, 0.15, 2000, 0.17 ] # Regular PWL yTarget: [ 0, 0.17 ] # Single point PWL yTarget: 0.17 # Same as above For cases (I'm not aware of any) where a single point Pwl is not allowed there is no change as that must be checked externally anyways. Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
This commit is contained in:
@@ -437,6 +437,15 @@ template<>
|
||||
std::optional<ipa::Pwl>
|
||||
YamlObject::Getter<ipa::Pwl>::get(const YamlObject &obj) const
|
||||
{
|
||||
/* Treat a single value as single point PWL. */
|
||||
if (obj.isValue()) {
|
||||
auto v = obj.get<double>();
|
||||
if (!v)
|
||||
return std::nullopt;
|
||||
|
||||
return ipa::Pwl({ { { 0.0, *v } } });
|
||||
}
|
||||
|
||||
if (!obj.size() || obj.size() % 2)
|
||||
return std::nullopt;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user