libcamera: Rename YamlObject to ValueNode

The YamlObject class is now a generic data container to model trees of
values. Rename it to ValueNode and expand the class documentation.

While at it, drop the unneeded libcamera:: namespace prefix when using
the ValueNode class.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
This commit is contained in:
Laurent Pinchart
2025-10-19 15:28:34 +03:00
parent 9be3ed8104
commit 554c5c7fa1
134 changed files with 813 additions and 800 deletions

View File

@@ -31,7 +31,7 @@ public:
static std::unique_ptr<ConverterDW100Module> createModule(DeviceEnumerator *enumerator);
int init(const YamlObject &params);
int init(const ValueNode &params);
int configure(const StreamConfiguration &inputCfg,
const std::vector<std::reference_wrapper<const StreamConfiguration>>

View File

@@ -14,14 +14,14 @@
#include <libcamera/base/utils.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
namespace libcamera {
class GlobalConfiguration
{
public:
using Configuration = const YamlObject &;
using Configuration = const ValueNode &;
GlobalConfiguration();
@@ -32,7 +32,7 @@ public:
std::optional<T> option(
const std::initializer_list<std::string_view> confPath) const
{
const YamlObject *c = &configuration();
const ValueNode *c = &configuration();
for (auto part : confPath) {
c = &(*c)[part];
if (!*c)
@@ -55,8 +55,8 @@ private:
bool loadFile(const std::filesystem::path &fileName);
void load();
std::unique_ptr<YamlObject> yamlConfiguration_ =
std::make_unique<YamlObject>();
std::unique_ptr<ValueNode> yamlConfiguration_ =
std::make_unique<ValueNode>();
};
} /* namespace libcamera */

View File

@@ -14,7 +14,7 @@
#include <libcamera/base/log.h>
#include <libcamera/base/span.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
namespace libcamera {
@@ -188,7 +188,7 @@ constexpr Matrix<T, Rows, Cols> operator+(const Matrix<T, Rows, Cols> &m1, const
}
#ifndef __DOXYGEN__
bool matrixValidateYaml(const YamlObject &obj, unsigned int size);
bool matrixValidateYaml(const ValueNode &obj, unsigned int size);
#endif /* __DOXYGEN__ */
#ifndef __DOXYGEN__
@@ -200,8 +200,8 @@ std::ostream &operator<<(std::ostream &out, const Matrix<T, Rows, Cols> &m)
}
template<typename T, unsigned int Rows, unsigned int Cols>
struct YamlObject::Accessor<Matrix<T, Rows, Cols>> {
std::optional<Matrix<T, Rows, Cols>> get(const YamlObject &obj) const
struct ValueNode::Accessor<Matrix<T, Rows, Cols>> {
std::optional<Matrix<T, Rows, Cols>> get(const ValueNode &obj) const
{
if (!matrixValidateYaml(obj, Rows * Cols))
return std::nullopt;
@@ -210,7 +210,7 @@ struct YamlObject::Accessor<Matrix<T, Rows, Cols>> {
T *data = &matrix[0][0];
unsigned int i = 0;
for (const YamlObject &entry : obj.asList()) {
for (const ValueNode &entry : obj.asList()) {
const auto value = entry.get<T>();
if (!value)
return std::nullopt;

View File

@@ -48,8 +48,8 @@ libcamera_internal_headers = files([
'v4l2_request.h',
'v4l2_subdevice.h',
'v4l2_videodevice.h',
'value_node.h',
'vector.h',
'yaml_object.h',
'yaml_parser.h',
])

View File

@@ -3,7 +3,7 @@
* Copyright (C) 2022, Google Inc.
* Copyright (C) 2026, Ideas on Board
*
* libcamera YAML object
* Data structure to manage tree of values
*/
#pragma once
@@ -22,16 +22,16 @@
namespace libcamera {
class YamlObject
class ValueNode
{
private:
struct Value {
Value(std::string k, std::unique_ptr<YamlObject> &&v)
Value(std::string k, std::unique_ptr<ValueNode> &&v)
: key(std::move(k)), value(std::move(v))
{
}
std::string key;
std::unique_ptr<YamlObject> value;
std::unique_ptr<ValueNode> value;
};
using ValueContainer = std::vector<Value>;
@@ -103,8 +103,8 @@ public:
class ListIterator : public Iterator<ListIterator>
{
public:
using value_type = const YamlObject &;
using pointer = const YamlObject *;
using value_type = const ValueNode &;
using pointer = const ValueNode *;
using reference = value_type;
value_type operator*() const
@@ -121,7 +121,7 @@ public:
class DictIterator : public Iterator<DictIterator>
{
public:
using value_type = std::pair<const std::string &, const YamlObject &>;
using value_type = std::pair<const std::string &, const ValueNode &>;
using pointer = value_type *;
using reference = value_type &;
@@ -142,8 +142,8 @@ public:
};
#endif /* __DOXYGEN__ */
YamlObject();
~YamlObject();
ValueNode();
~ValueNode();
bool isValue() const
{
@@ -190,16 +190,16 @@ public:
DictAdapter asDict() const { return DictAdapter{ list_ }; }
ListAdapter asList() const { return ListAdapter{ list_ }; }
const YamlObject &operator[](std::size_t index) const;
const ValueNode &operator[](std::size_t index) const;
bool contains(std::string_view key) const;
const YamlObject &operator[](std::string_view key) const;
const ValueNode &operator[](std::string_view key) const;
YamlObject *add(std::unique_ptr<YamlObject> &&child);
YamlObject *add(std::string key, std::unique_ptr<YamlObject> &&child);
ValueNode *add(std::unique_ptr<ValueNode> &&child);
ValueNode *add(std::string key, std::unique_ptr<ValueNode> &&child);
private:
LIBCAMERA_DISABLE_COPY_AND_MOVE(YamlObject)
LIBCAMERA_DISABLE_COPY_AND_MOVE(ValueNode)
template<typename T>
friend struct Accessor;
@@ -213,15 +213,15 @@ private:
template<typename T, typename Enable = void>
struct Accessor {
std::optional<T> get(const YamlObject &obj) const;
void set(YamlObject &obj, T value);
std::optional<T> get(const ValueNode &obj) const;
void set(ValueNode &obj, T value);
};
Type type_;
std::string value_;
ValueContainer list_;
std::map<std::string, YamlObject *, std::less<>> dictionary_;
std::map<std::string, ValueNode *, std::less<>> dictionary_;
};
} /* namespace libcamera */

View File

@@ -19,7 +19,7 @@
#include <libcamera/base/span.h>
#include "libcamera/internal/matrix.h"
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
namespace libcamera {
@@ -329,7 +329,7 @@ bool operator!=(const Vector<T, Rows> &lhs, const Vector<T, Rows> &rhs)
}
#ifndef __DOXYGEN__
bool vectorValidateYaml(const YamlObject &obj, unsigned int size);
bool vectorValidateYaml(const ValueNode &obj, unsigned int size);
#endif /* __DOXYGEN__ */
#ifndef __DOXYGEN__
@@ -347,8 +347,8 @@ std::ostream &operator<<(std::ostream &out, const Vector<T, Rows> &v)
}
template<typename T, unsigned int Rows>
struct YamlObject::Accessor<Vector<T, Rows>> {
std::optional<Vector<T, Rows>> get(const YamlObject &obj) const
struct ValueNode::Accessor<Vector<T, Rows>> {
std::optional<Vector<T, Rows>> get(const ValueNode &obj) const
{
if (!vectorValidateYaml(obj, Rows))
return std::nullopt;
@@ -356,7 +356,7 @@ struct YamlObject::Accessor<Vector<T, Rows>> {
Vector<T, Rows> vector;
unsigned int i = 0;
for (const YamlObject &entry : obj.asList()) {
for (const ValueNode &entry : obj.asList()) {
const auto value = entry.get<T>();
if (!value)
return std::nullopt;

View File

@@ -9,7 +9,7 @@
#include <memory>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
namespace libcamera {
@@ -18,7 +18,7 @@ class File;
class YamlParser final
{
public:
static std::unique_ptr<YamlObject> parse(File &file);
static std::unique_ptr<ValueNode> parse(File &file);
};
} /* namespace libcamera */

View File

@@ -30,9 +30,9 @@ public:
int parseConfigFile(File &file, std::map<std::string, CameraConfigData> *cameras);
private:
int parseCameraConfigData(const std::string &cameraId, const YamlObject &);
int parseLocation(const YamlObject &, CameraConfigData &cameraConfigData);
int parseRotation(const YamlObject &, CameraConfigData &cameraConfigData);
int parseCameraConfigData(const std::string &cameraId, const ValueNode &);
int parseLocation(const ValueNode &, CameraConfigData &cameraConfigData);
int parseRotation(const ValueNode &, CameraConfigData &cameraConfigData);
std::map<std::string, CameraConfigData> *cameras_;
};
@@ -65,7 +65,7 @@ int CameraHalConfig::Private::parseConfigFile(File &file,
cameras_ = cameras;
std::unique_ptr<YamlObject> root = YamlParser::parse(file);
std::unique_ptr<ValueNode> root = YamlParser::parse(file);
if (!root)
return -EINVAL;
@@ -76,7 +76,7 @@ int CameraHalConfig::Private::parseConfigFile(File &file,
if (!root->contains("cameras"))
return -EINVAL;
const YamlObject &yamlObjectCameras = (*root)["cameras"];
const ValueNode &yamlObjectCameras = (*root)["cameras"];
if (!yamlObjectCameras.isDictionary())
return -EINVAL;
@@ -90,7 +90,7 @@ int CameraHalConfig::Private::parseConfigFile(File &file,
}
int CameraHalConfig::Private::parseCameraConfigData(const std::string &cameraId,
const YamlObject &cameraObject)
const ValueNode &cameraObject)
{
if (!cameraObject.isDictionary())
@@ -109,7 +109,7 @@ int CameraHalConfig::Private::parseCameraConfigData(const std::string &cameraId,
return 0;
}
int CameraHalConfig::Private::parseLocation(const YamlObject &cameraObject,
int CameraHalConfig::Private::parseLocation(const ValueNode &cameraObject,
CameraConfigData &cameraConfigData)
{
if (!cameraObject.contains("location"))
@@ -127,7 +127,7 @@ int CameraHalConfig::Private::parseLocation(const YamlObject &cameraObject,
return 0;
}
int CameraHalConfig::Private::parseRotation(const YamlObject &cameraObject,
int CameraHalConfig::Private::parseRotation(const ValueNode &cameraObject,
CameraConfigData &cameraConfigData)
{
if (!cameraObject.contains("rotation"))

View File

@@ -65,14 +65,14 @@ Agc::Agc()
/**
* \brief Initialise the AGC algorithm from tuning files
* \param[in] context The shared IPA context
* \param[in] tuningData The YamlObject containing Agc tuning data
* \param[in] tuningData The ValueNode containing Agc tuning data
*
* This function calls the base class' tuningData parsers to discover which
* control values are supported.
*
* \return 0 on success or errors from the base class
*/
int Agc::init(IPAContext &context, const YamlObject &tuningData)
int Agc::init(IPAContext &context, const ValueNode &tuningData)
{
int ret;

View File

@@ -30,7 +30,7 @@ public:
Agc();
~Agc() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context, const IPAConfigInfo &configInfo) override;
void process(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,

View File

@@ -324,7 +324,7 @@ int IPAIPU3::init(const IPASettings &settings,
return ret;
}
std::unique_ptr<libcamera::YamlObject> data = YamlParser::parse(file);
std::unique_ptr<ValueNode> data = YamlParser::parse(file);
if (!data)
return -EINVAL;

View File

@@ -159,7 +159,7 @@ AgcMeanLuminance::AgcMeanLuminance()
AgcMeanLuminance::~AgcMeanLuminance() = default;
int AgcMeanLuminance::parseRelativeLuminanceTarget(const YamlObject &tuningData)
int AgcMeanLuminance::parseRelativeLuminanceTarget(const ValueNode &tuningData)
{
auto &target = tuningData["relativeLuminanceTarget"];
if (!target) {
@@ -178,7 +178,7 @@ int AgcMeanLuminance::parseRelativeLuminanceTarget(const YamlObject &tuningData)
return 0;
}
int AgcMeanLuminance::parseConstraint(const YamlObject &modeDict, int32_t id)
int AgcMeanLuminance::parseConstraint(const ValueNode &modeDict, int32_t id)
{
for (const auto &[boundName, content] : modeDict.asDict()) {
if (boundName != "upper" && boundName != "lower") {
@@ -212,11 +212,11 @@ int AgcMeanLuminance::parseConstraint(const YamlObject &modeDict, int32_t id)
return 0;
}
int AgcMeanLuminance::parseConstraintModes(const YamlObject &tuningData)
int AgcMeanLuminance::parseConstraintModes(const ValueNode &tuningData)
{
std::vector<ControlValue> availableConstraintModes;
const YamlObject &yamlConstraintModes = tuningData[controls::AeConstraintMode.name()];
const ValueNode &yamlConstraintModes = tuningData[controls::AeConstraintMode.name()];
if (yamlConstraintModes.isDictionary()) {
for (const auto &[modeName, modeDict] : yamlConstraintModes.asDict()) {
if (AeConstraintModeNameValueMap.find(modeName) ==
@@ -267,11 +267,11 @@ int AgcMeanLuminance::parseConstraintModes(const YamlObject &tuningData)
return 0;
}
int AgcMeanLuminance::parseExposureModes(const YamlObject &tuningData)
int AgcMeanLuminance::parseExposureModes(const ValueNode &tuningData)
{
std::vector<ControlValue> availableExposureModes;
const YamlObject &yamlExposureModes = tuningData[controls::AeExposureMode.name()];
const ValueNode &yamlExposureModes = tuningData[controls::AeExposureMode.name()];
if (yamlExposureModes.isDictionary()) {
for (const auto &[modeName, modeValues] : yamlExposureModes.asDict()) {
if (AeExposureModeNameValueMap.find(modeName) ==
@@ -361,7 +361,7 @@ void AgcMeanLuminance::configure(utils::Duration lineDuration,
/**
* \brief Parse tuning data for AeConstraintMode and AeExposureMode controls
* \param[in] tuningData the YamlObject representing the tuning data
* \param[in] tuningData the ValueNode representing the tuning data
*
* This function parses tuning data to build the list of allowed values for the
* AeConstraintMode and AeExposureMode controls. Those tuning data must provide
@@ -414,7 +414,7 @@ void AgcMeanLuminance::configure(utils::Duration lineDuration,
*
* \return 0 on success or a negative error code
*/
int AgcMeanLuminance::parseTuningData(const YamlObject &tuningData)
int AgcMeanLuminance::parseTuningData(const ValueNode &tuningData)
{
int ret;

View File

@@ -16,7 +16,7 @@
#include <libcamera/controls.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "exposure_mode_helper.h"
#include "histogram.h"
@@ -44,7 +44,7 @@ public:
};
void configure(utils::Duration lineDuration, const CameraSensorHelper *sensorHelper);
int parseTuningData(const YamlObject &tuningData);
int parseTuningData(const ValueNode &tuningData);
void setExposureCompensation(double gain)
{
@@ -88,10 +88,10 @@ public:
private:
virtual double estimateLuminance(const double gain) const = 0;
int parseRelativeLuminanceTarget(const YamlObject &tuningData);
int parseConstraint(const YamlObject &modeDict, int32_t id);
int parseConstraintModes(const YamlObject &tuningData);
int parseExposureModes(const YamlObject &tuningData);
int parseRelativeLuminanceTarget(const ValueNode &tuningData);
int parseConstraint(const ValueNode &modeDict, int32_t id);
int parseConstraintModes(const ValueNode &tuningData);
int parseExposureModes(const ValueNode &tuningData);
double estimateInitialGain() const;
double constraintClampGain(uint32_t constraintModeIndex,
const Histogram &hist,

View File

@@ -44,7 +44,7 @@ namespace ipa {
* \param[in] tuningData The tuning data for the algorithm
*
* This function is called once, when the IPA module is initialized, to
* initialize the algorithm. The \a tuningData YamlObject contains the tuning
* initialize the algorithm. The \a tuningData ValueNode contains the tuning
* data for algorithm.
*
* \return 0 if successful, an error code otherwise

View File

@@ -14,7 +14,7 @@
namespace libcamera {
class YamlObject;
class ValueNode;
namespace ipa {
@@ -27,7 +27,7 @@ public:
virtual ~Algorithm() {}
virtual int init([[maybe_unused]] typename Module::Context &context,
[[maybe_unused]] const YamlObject &tuningData)
[[maybe_unused]] const ValueNode &tuningData)
{
return 0;
}

View File

@@ -132,7 +132,7 @@ namespace ipa {
/**
* \brief Parse the mode configurations from the tuning data
* \param[in] tuningData the YamlObject representing the tuning data
* \param[in] tuningData the ValueNode representing the tuning data
* \param[in] def The default value for the AwbMode control
*
* Utility function to parse the tuning data for an AwbMode entry and read all
@@ -162,12 +162,12 @@ namespace ipa {
* \sa controls::AwbModeEnum
* \return Zero on success, negative error code otherwise
*/
int AwbAlgorithm::parseModeConfigs(const YamlObject &tuningData,
int AwbAlgorithm::parseModeConfigs(const ValueNode &tuningData,
const ControlValue &def)
{
std::vector<ControlValue> availableModes;
const YamlObject &yamlModes = tuningData[controls::AwbMode.name()];
const ValueNode &yamlModes = tuningData[controls::AwbMode.name()];
if (!yamlModes.isDictionary()) {
LOG(Awb, Error)
<< "AwbModes must be a dictionary.";

View File

@@ -13,8 +13,8 @@
#include <libcamera/control_ids.h>
#include <libcamera/controls.h>
#include "libcamera/internal/value_node.h"
#include "libcamera/internal/vector.h"
#include "libcamera/internal/yaml_object.h"
namespace libcamera {
@@ -38,7 +38,7 @@ class AwbAlgorithm
public:
virtual ~AwbAlgorithm() = default;
virtual int init(const YamlObject &tuningData) = 0;
virtual int init(const ValueNode &tuningData) = 0;
virtual AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) = 0;
virtual std::optional<RGB<double>> gainsFromColourTemperature(double colourTemperature) = 0;
@@ -50,7 +50,7 @@ public:
virtual void handleControls([[maybe_unused]] const ControlList &controls) {}
protected:
int parseModeConfigs(const YamlObject &tuningData,
int parseModeConfigs(const ValueNode &tuningData,
const ControlValue &def = {});
struct ModeConfig {

View File

@@ -143,7 +143,7 @@ void Interpolator<Pwl>::interpolate(const Pwl &a, const Pwl &b, Pwl &dest, doubl
* \brief The currently selected mode
*/
int AwbBayes::init(const YamlObject &tuningData)
int AwbBayes::init(const ValueNode &tuningData)
{
int ret = colourGainCurve_.readYaml(tuningData["colourGains"], "ct", "gains");
if (ret) {
@@ -188,7 +188,7 @@ int AwbBayes::init(const YamlObject &tuningData)
return 0;
}
int AwbBayes::readPriors(const YamlObject &tuningData)
int AwbBayes::readPriors(const ValueNode &tuningData)
{
const auto &priorsList = tuningData["priors"];
std::map<uint32_t, Pwl> priors;

View File

@@ -9,8 +9,8 @@
#include <libcamera/controls.h>
#include "libcamera/internal/value_node.h"
#include "libcamera/internal/vector.h"
#include "libcamera/internal/yaml_object.h"
#include "awb.h"
#include "interpolator.h"
@@ -25,13 +25,13 @@ class AwbBayes : public AwbAlgorithm
public:
AwbBayes() = default;
int init(const YamlObject &tuningData) override;
int init(const ValueNode &tuningData) override;
AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) override;
std::optional<RGB<double>> gainsFromColourTemperature(double temperatureK) override;
void handleControls(const ControlList &controls) override;
private:
int readPriors(const YamlObject &tuningData);
int readPriors(const ValueNode &tuningData);
void fineSearch(double &t, double &r, double &b, ipa::Pwl const &prior,
const AwbStats &stats) const;

View File

@@ -41,7 +41,7 @@ namespace ipa {
*
* \return 0 on success, a negative error code otherwise
*/
int AwbGrey::init(const YamlObject &tuningData)
int AwbGrey::init(const ValueNode &tuningData)
{
Interpolator<Vector<double, 2>> gains;
int ret = gains.readYaml(tuningData["colourGains"], "ct", "gains");

View File

@@ -23,7 +23,7 @@ class AwbGrey : public AwbAlgorithm
public:
AwbGrey() = default;
int init(const YamlObject &tuningData) override;
int init(const ValueNode &tuningData) override;
AwbResult calculateAwb(const AwbStats &stats, unsigned int lux) override;
std::optional<RGB<double>> gainsFromColourTemperature(double colourTemperature) override;

View File

@@ -48,7 +48,7 @@ namespace ipa {
*/
/**
* \fn int Interpolator<T>::readYaml(const libcamera::YamlObject &yaml,
* \fn int Interpolator<T>::readYaml(const ValueNode &yaml,
const std::string &key_name,
const std::string &value_name)
* \brief Initialize an Interpolator instance from yaml

View File

@@ -15,7 +15,7 @@
#include <libcamera/base/log.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
namespace libcamera {
@@ -39,7 +39,7 @@ public:
~Interpolator() = default;
int readYaml(const libcamera::YamlObject &yaml,
int readYaml(const ValueNode &yaml,
const std::string &key_name,
const std::string &value_name)
{

View File

@@ -16,7 +16,7 @@
#include <libcamera/geometry.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
namespace libcamera {
@@ -83,8 +83,8 @@ private:
#ifndef __DOXYGEN__
template<>
struct YamlObject::Accessor<ipa::LscPolynomial> {
std::optional<ipa::LscPolynomial> get(const YamlObject &obj) const
struct ValueNode::Accessor<ipa::LscPolynomial> {
std::optional<ipa::LscPolynomial> get(const ValueNode &obj) const
{
std::optional<double> cx = obj["cx"].get<double>();
std::optional<double> cy = obj["cy"].get<double>();

View File

@@ -12,7 +12,7 @@
#include <libcamera/base/log.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "histogram.h"
@@ -78,7 +78,7 @@ Lux::Lux()
/**
* \brief Parse tuning data
* \param[in] tuningData The YamlObject representing the tuning data
* \param[in] tuningData The ValueNode representing the tuning data
*
* This function parses yaml tuning data for the common Lux module. It requires
* reference exposure time, analogue gain, digital gain, and lux values.
@@ -95,7 +95,7 @@ Lux::Lux()
*
* \return 0 on success or a negative error code
*/
int Lux::parseTuningData(const YamlObject &tuningData)
int Lux::parseTuningData(const ValueNode &tuningData)
{
auto value = tuningData["referenceExposureTime"].get<double>();
if (!value) {

View File

@@ -12,7 +12,7 @@
namespace libcamera {
class YamlObject;
class ValueNode;
namespace ipa {
@@ -23,7 +23,7 @@ class Lux
public:
Lux();
int parseTuningData(const YamlObject &tuningData);
int parseTuningData(const ValueNode &tuningData);
double estimateLux(utils::Duration exposureTime,
double aGain, double dGain,
const Histogram &yHist) const;

View File

@@ -87,7 +87,7 @@ namespace ipa {
* \fn Module::createAlgorithms()
* \brief Create algorithms from YAML configuration data
* \param[in] context The IPA context
* \param[in] algorithms Algorithms configuration data as a parsed YamlObject
* \param[in] algorithms Algorithms configuration data as a parsed ValueNode
*
* This function iterates over the list of \a algorithms parsed from the YAML
* configuration file, and instantiates and initializes the corresponding

View File

@@ -15,7 +15,7 @@
#include <libcamera/base/log.h>
#include <libcamera/base/utils.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "algorithm.h"
@@ -43,7 +43,7 @@ public:
return algorithms_;
}
int createAlgorithms(Context &context, const YamlObject &algorithms)
int createAlgorithms(Context &context, const ValueNode &algorithms)
{
const auto &list = algorithms.asList();
@@ -71,7 +71,7 @@ public:
}
private:
int createAlgorithm(Context &context, const YamlObject &data)
int createAlgorithm(Context &context, const ValueNode &data)
{
const auto &[name, algoData] = *data.asDict().begin();

View File

@@ -435,7 +435,7 @@ std::string Pwl::toString() const
*/
template<>
std::optional<ipa::Pwl>
YamlObject::Accessor<ipa::Pwl>::get(const YamlObject &obj) const
ValueNode::Accessor<ipa::Pwl>::get(const ValueNode &obj) const
{
/* Treat a single value as single point PWL. */
if (obj.isValue()) {

View File

@@ -131,7 +131,7 @@ Agc::Agc()
{
}
int Agc::init(IPAContext &context, const YamlObject &tuningData)
int Agc::init(IPAContext &context, const ValueNode &tuningData)
{
int ret = parseTuningData(tuningData);
if (ret)

View File

@@ -49,7 +49,7 @@ public:
Agc();
~Agc() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context,
const IPACameraSensorInfo &configInfo) override;
void queueRequest(IPAContext &context, const uint32_t frame,

View File

@@ -10,7 +10,7 @@
#include <libcamera/base/log.h>
#include <libcamera/control_ids.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
/**
* \file blc.h
@@ -36,7 +36,7 @@ BlackLevelCorrection::BlackLevelCorrection()
* \copydoc libcamera::ipa::Algorithm::init
*/
int BlackLevelCorrection::init([[maybe_unused]] IPAContext &context,
const YamlObject &tuningData)
const ValueNode &tuningData)
{
offset00 = tuningData["offset00"].get<uint32_t>(0);
offset01 = tuningData["offset01"].get<uint32_t>(0);

View File

@@ -18,7 +18,7 @@ public:
BlackLevelCorrection();
~BlackLevelCorrection() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context,
const IPACameraSensorInfo &configInfo) override;
void prepare(IPAContext &context, const uint32_t frame,

View File

@@ -7,7 +7,7 @@
#include "lsc.h"
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
namespace libcamera {
@@ -15,7 +15,7 @@ namespace ipa::mali_c55::algorithms {
LOG_DEFINE_CATEGORY(MaliC55Lsc)
int Lsc::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData)
int Lsc::init([[maybe_unused]] IPAContext &context, const ValueNode &tuningData)
{
if (!tuningData.contains("meshScale")) {
LOG(MaliC55Lsc, Error) << "meshScale missing from tuningData";
@@ -24,7 +24,7 @@ int Lsc::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData
meshScale_ = tuningData["meshScale"].get<uint32_t>(0);
const YamlObject &yamlSets = tuningData["sets"];
const ValueNode &yamlSets = tuningData["sets"];
if (!yamlSets.isList()) {
LOG(MaliC55Lsc, Error) << "LSC tables missing or invalid";
return -EINVAL;

View File

@@ -20,7 +20,7 @@ public:
Lsc() = default;
~Lsc() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
void prepare(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
MaliC55Params *params) override;

View File

@@ -118,7 +118,7 @@ int IPAMaliC55::init(const IPASettings &settings, const IPAConfigInfo &ipaConfig
return ret;
}
std::unique_ptr<libcamera::YamlObject> data = YamlParser::parse(file);
std::unique_ptr<ValueNode> data = YamlParser::parse(file);
if (!data)
return -EINVAL;

View File

@@ -19,7 +19,7 @@
#include <libcamera/control_ids.h>
#include <libcamera/ipa/core_ipa_interface.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "libipa/histogram.h"
@@ -40,7 +40,7 @@ namespace ipa::rkisp1::algorithms {
LOG_DEFINE_CATEGORY(RkISP1Agc)
int Agc::parseMeteringModes(IPAContext &context, const YamlObject &tuningData)
int Agc::parseMeteringModes(IPAContext &context, const ValueNode &tuningData)
{
if (!tuningData.isDictionary())
LOG(RkISP1Agc, Warning)
@@ -127,14 +127,14 @@ Agc::Agc()
/**
* \brief Initialise the AGC algorithm from tuning files
* \param[in] context The shared IPA context
* \param[in] tuningData The YamlObject containing Agc tuning data
* \param[in] tuningData The ValueNode containing Agc tuning data
*
* This function calls the base class' tuningData parsers to discover which
* control values are supported.
*
* \return 0 on success or errors from the base class
*/
int Agc::init(IPAContext &context, const YamlObject &tuningData)
int Agc::init(IPAContext &context, const ValueNode &tuningData)
{
int ret;
@@ -142,7 +142,7 @@ int Agc::init(IPAContext &context, const YamlObject &tuningData)
if (ret)
return ret;
const YamlObject &yamlMeteringModes = tuningData["AeMeteringMode"];
const ValueNode &yamlMeteringModes = tuningData["AeMeteringMode"];
ret = parseMeteringModes(context, yamlMeteringModes);
if (ret)
return ret;

View File

@@ -28,7 +28,7 @@ public:
Agc();
~Agc() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
void queueRequest(IPAContext &context,
const uint32_t frame,
@@ -43,7 +43,7 @@ public:
ControlList &metadata) override;
private:
int parseMeteringModes(IPAContext &context, const YamlObject &tuningData);
int parseMeteringModes(IPAContext &context, const ValueNode &tuningData);
uint8_t computeHistogramPredivider(const Size &size,
enum rkisp1_cif_isp_histogram_mode mode);

View File

@@ -84,7 +84,7 @@ Awb::Awb()
/**
* \copydoc libcamera::ipa::Algorithm::init
*/
int Awb::init(IPAContext &context, const YamlObject &tuningData)
int Awb::init(IPAContext &context, const ValueNode &tuningData)
{
auto &cmap = context.ctrlMap;
cmap[&controls::ColourTemperature] = ControlInfo(kMinColourTemperature,

View File

@@ -24,7 +24,7 @@ public:
Awb();
~Awb() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
void queueRequest(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,

View File

@@ -13,7 +13,7 @@
#include <libcamera/control_ids.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
/**
* \file blc.h
@@ -53,7 +53,7 @@ BlackLevelCorrection::BlackLevelCorrection()
/**
* \copydoc libcamera::ipa::Algorithm::init
*/
int BlackLevelCorrection::init(IPAContext &context, const YamlObject &tuningData)
int BlackLevelCorrection::init(IPAContext &context, const ValueNode &tuningData)
{
std::optional<int16_t> levelRed = tuningData["R"].get<int16_t>();
std::optional<int16_t> levelGreenR = tuningData["Gr"].get<int16_t>();

View File

@@ -19,7 +19,7 @@ public:
BlackLevelCorrection();
~BlackLevelCorrection() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context,
const IPACameraSensorInfo &configInfo) override;
void prepare(IPAContext &context, const uint32_t frame,

View File

@@ -16,7 +16,7 @@
#include <libcamera/ipa/core_ipa_interface.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "libipa/fixedpoint.h"
#include "libipa/interpolator.h"
@@ -41,7 +41,7 @@ constexpr Matrix<float, 3, 3> kIdentity3x3 = Matrix<float, 3, 3>::identity();
/**
* \copydoc libcamera::ipa::Algorithm::init
*/
int Ccm::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData)
int Ccm::init([[maybe_unused]] IPAContext &context, const ValueNode &tuningData)
{
auto &cmap = context.ctrlMap;
cmap[&controls::ColourCorrectionMatrix] = ControlInfo(

View File

@@ -25,7 +25,7 @@ public:
Ccm() {}
~Ccm() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context,
const IPACameraSensorInfo &configInfo) override;
void queueRequest(IPAContext &context,
@@ -41,7 +41,7 @@ public:
ControlList &metadata) override;
private:
void parseYaml(const YamlObject &tuningData);
void parseYaml(const ValueNode &tuningData);
void setParameters(struct rkisp1_cif_isp_ctk_config &config,
const Matrix<float, 3, 3> &matrix,
const Matrix<int16_t, 3, 1> &offsets);

View File

@@ -52,7 +52,7 @@ constexpr float kHueScale = -90.0f;
* \copydoc libcamera::ipa::Algorithm::init
*/
int ColorProcessing::init(IPAContext &context,
[[maybe_unused]] const YamlObject &tuningData)
[[maybe_unused]] const ValueNode &tuningData)
{
auto &cmap = context.ctrlMap;

View File

@@ -21,7 +21,7 @@ public:
ColorProcessing() = default;
~ColorProcessing() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context,
const IPACameraSensorInfo &configInfo) override;
void queueRequest(IPAContext &context, const uint32_t frame,

View File

@@ -9,7 +9,7 @@
#include <libcamera/base/log.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "linux/rkisp1-config.h"
@@ -45,7 +45,7 @@ DefectPixelClusterCorrection::DefectPixelClusterCorrection()
* \copydoc libcamera::ipa::Algorithm::init
*/
int DefectPixelClusterCorrection::init([[maybe_unused]] IPAContext &context,
const YamlObject &tuningData)
const ValueNode &tuningData)
{
config_.mode = RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE;
config_.output_mode = RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER
@@ -55,7 +55,7 @@ int DefectPixelClusterCorrection::init([[maybe_unused]] IPAContext &context,
? RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET : 0;
/* Get all defined sets to apply (up to 3). */
const YamlObject &setsObject = tuningData["sets"];
const ValueNode &setsObject = tuningData["sets"];
if (!setsObject.isList()) {
LOG(RkISP1Dpcc, Error)
<< "'sets' parameter not found in tuning file";
@@ -71,14 +71,14 @@ int DefectPixelClusterCorrection::init([[maybe_unused]] IPAContext &context,
for (std::size_t i = 0; i < setsObject.size(); ++i) {
struct rkisp1_cif_isp_dpcc_methods_config &method = config_.methods[i];
const YamlObject &set = setsObject[i];
const ValueNode &set = setsObject[i];
uint16_t value;
/* Enable set if described in YAML tuning file. */
config_.set_use |= 1 << i;
/* PG Method */
const YamlObject &pgObject = set["pg-factor"];
const ValueNode &pgObject = set["pg-factor"];
if (pgObject.contains("green")) {
method.method |=
@@ -97,7 +97,7 @@ int DefectPixelClusterCorrection::init([[maybe_unused]] IPAContext &context,
}
/* RO Method */
const YamlObject &roObject = set["ro-limits"];
const ValueNode &roObject = set["ro-limits"];
if (roObject.contains("green")) {
method.method |=
@@ -118,7 +118,7 @@ int DefectPixelClusterCorrection::init([[maybe_unused]] IPAContext &context,
}
/* RG Method */
const YamlObject &rgObject = set["rg-factor"];
const ValueNode &rgObject = set["rg-factor"];
method.rg_fac = 0;
if (rgObject.contains("green")) {
@@ -138,7 +138,7 @@ int DefectPixelClusterCorrection::init([[maybe_unused]] IPAContext &context,
}
/* RND Method */
const YamlObject &rndOffsetsObject = set["rnd-offsets"];
const ValueNode &rndOffsetsObject = set["rnd-offsets"];
if (rndOffsetsObject.contains("green")) {
method.method |=
@@ -158,7 +158,7 @@ int DefectPixelClusterCorrection::init([[maybe_unused]] IPAContext &context,
RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(i, value);
}
const YamlObject &rndThresholdObject = set["rnd-threshold"];
const ValueNode &rndThresholdObject = set["rnd-threshold"];
method.rnd_thresh = 0;
if (rndThresholdObject.contains("green")) {
@@ -180,7 +180,7 @@ int DefectPixelClusterCorrection::init([[maybe_unused]] IPAContext &context,
}
/* LC Method */
const YamlObject &lcThresholdObject = set["line-threshold"];
const ValueNode &lcThresholdObject = set["line-threshold"];
method.line_thresh = 0;
if (lcThresholdObject.contains("green")) {
@@ -201,7 +201,7 @@ int DefectPixelClusterCorrection::init([[maybe_unused]] IPAContext &context,
RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(value);
}
const YamlObject &lcTMadFactorObject = set["line-mad-factor"];
const ValueNode &lcTMadFactorObject = set["line-mad-factor"];
method.line_mad_fac = 0;
if (lcTMadFactorObject.contains("green")) {

View File

@@ -19,7 +19,7 @@ public:
DefectPixelClusterCorrection();
~DefectPixelClusterCorrection() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
void prepare(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
RkISP1Params *params) override;

View File

@@ -45,7 +45,7 @@ Dpf::Dpf()
* \copydoc libcamera::ipa::Algorithm::init
*/
int Dpf::init([[maybe_unused]] IPAContext &context,
const YamlObject &tuningData)
const ValueNode &tuningData)
{
std::vector<uint8_t> values;
@@ -53,7 +53,7 @@ int Dpf::init([[maybe_unused]] IPAContext &context,
* The domain kernel is configured with a 9x9 kernel for the green
* pixels, and a 13x9 or 9x9 kernel for red and blue pixels.
*/
const YamlObject &dFObject = tuningData["DomainFilter"];
const ValueNode &dFObject = tuningData["DomainFilter"];
/*
* For the green component, we have the 9x9 kernel specified
@@ -134,7 +134,7 @@ int Dpf::init([[maybe_unused]] IPAContext &context,
* which stores a piecewise linear function that characterizes the
* sensor noise profile as a noise level function curve (NLF).
*/
const YamlObject &rFObject = tuningData["NoiseLevelFunction"];
const ValueNode &rFObject = tuningData["NoiseLevelFunction"];
std::vector<uint16_t> nllValues;
nllValues = rFObject["coeff"].get<std::vector<uint16_t>>().value_or(std::vector<uint16_t>{});
@@ -162,7 +162,7 @@ int Dpf::init([[maybe_unused]] IPAContext &context,
return -EINVAL;
}
const YamlObject &fSObject = tuningData["FilterStrength"];
const ValueNode &fSObject = tuningData["FilterStrength"];
strengthConfig_.r = fSObject["r"].get<uint16_t>(64);
strengthConfig_.g = fSObject["g"].get<uint16_t>(64);

View File

@@ -21,7 +21,7 @@ public:
Dpf();
~Dpf() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
void queueRequest(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
const ControlList &controls) override;

View File

@@ -43,7 +43,7 @@ static constexpr uint32_t kFiltModeDefault = 0x000004f2;
* \copydoc libcamera::ipa::Algorithm::init
*/
int Filter::init(IPAContext &context,
[[maybe_unused]] const YamlObject &tuningData)
[[maybe_unused]] const ValueNode &tuningData)
{
auto &cmap = context.ctrlMap;
cmap[&controls::Sharpness] = ControlInfo(0.0f, 10.0f, 1.0f);

View File

@@ -21,7 +21,7 @@ public:
Filter() = default;
~Filter() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
void queueRequest(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
const ControlList &controls) override;

View File

@@ -13,7 +13,7 @@
#include <libcamera/control_ids.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "linux/rkisp1-config.h"
@@ -48,7 +48,7 @@ const float kDefaultGamma = 2.2f;
/**
* \copydoc libcamera::ipa::Algorithm::init
*/
int GammaOutCorrection::init(IPAContext &context, const YamlObject &tuningData)
int GammaOutCorrection::init(IPAContext &context, const ValueNode &tuningData)
{
if (context.hw.numGammaOutSamples !=
RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V10) {

View File

@@ -19,7 +19,7 @@ public:
GammaOutCorrection() = default;
~GammaOutCorrection() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context,
const IPACameraSensorInfo &configInfo) override;
void queueRequest(IPAContext &context,

View File

@@ -10,7 +10,7 @@
#include <libcamera/base/log.h>
#include <libcamera/base/utils.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "linux/rkisp1-config.h"
@@ -56,7 +56,7 @@ GammaSensorLinearization::GammaSensorLinearization()
* \copydoc libcamera::ipa::Algorithm::init
*/
int GammaSensorLinearization::init([[maybe_unused]] IPAContext &context,
const YamlObject &tuningData)
const ValueNode &tuningData)
{
std::vector<uint16_t> xIntervals =
tuningData["x-intervals"].get<std::vector<uint16_t>>().value_or(std::vector<uint16_t>{});
@@ -75,7 +75,7 @@ int GammaSensorLinearization::init([[maybe_unused]] IPAContext &context,
for (unsigned int i = 0; i < kDegammaXIntervals; ++i)
gammaDx_[i / 8] |= (xIntervals[i] & 0x07) << ((i % 8) * 4);
const YamlObject &yObject = tuningData["y"];
const ValueNode &yObject = tuningData["y"];
if (!yObject.isDictionary()) {
LOG(RkISP1Gsl, Error)
<< "Issue while parsing 'y' in tuning file: "

View File

@@ -19,7 +19,7 @@ public:
GammaSensorLinearization();
~GammaSensorLinearization() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
void prepare(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
RkISP1Params *params) override;

View File

@@ -14,7 +14,7 @@
#include <libcamera/base/log.h>
#include <libcamera/base/utils.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "libipa/lsc_polynomial.h"
#include "linux/rkisp1-config.h"
@@ -184,14 +184,14 @@ public:
{
}
int parseLscData(const YamlObject &yamlSets,
int parseLscData(const ValueNode &yamlSets,
LensShadingCorrection::ShadingDescriptorMap &lscData);
private:
Size sensorSize_;
};
int LscPolynomialLoader::parseLscData(const YamlObject &yamlSets,
int LscPolynomialLoader::parseLscData(const ValueNode &yamlSets,
LensShadingCorrection::ShadingDescriptorMap &lscData)
{
const auto &sets = yamlSets.asList();
@@ -261,15 +261,15 @@ private:
class LscTableLoader
{
public:
int parseLscData(const YamlObject &yamlSets,
int parseLscData(const ValueNode &yamlSets,
LensShadingCorrection::ShadingDescriptorMap &lscData);
private:
std::vector<uint16_t> parseTable(const YamlObject &tuningData,
std::vector<uint16_t> parseTable(const ValueNode &tuningData,
const char *prop);
};
int LscTableLoader::parseLscData(const YamlObject &yamlSets,
int LscTableLoader::parseLscData(const ValueNode &yamlSets,
LensShadingCorrection::ShadingDescriptorMap &lscData)
{
const auto &sets = yamlSets.asList();
@@ -310,7 +310,7 @@ int LscTableLoader::parseLscData(const YamlObject &yamlSets,
return 0;
}
std::vector<uint16_t> LscTableLoader::parseTable(const YamlObject &tuningData,
std::vector<uint16_t> LscTableLoader::parseTable(const ValueNode &tuningData,
const char *prop)
{
static constexpr unsigned int kLscNumSamples =
@@ -329,7 +329,7 @@ std::vector<uint16_t> LscTableLoader::parseTable(const YamlObject &tuningData,
return table;
}
std::vector<double> parseSizes(const YamlObject &tuningData,
std::vector<double> parseSizes(const ValueNode &tuningData,
const char *prop)
{
std::vector<double> sizes =
@@ -375,7 +375,7 @@ LensShadingCorrection::LensShadingCorrection()
* \copydoc libcamera::ipa::Algorithm::init
*/
int LensShadingCorrection::init([[maybe_unused]] IPAContext &context,
const YamlObject &tuningData)
const ValueNode &tuningData)
{
xSize_ = parseSizes(tuningData, "x-size");
ySize_ = parseSizes(tuningData, "y-size");
@@ -384,7 +384,7 @@ int LensShadingCorrection::init([[maybe_unused]] IPAContext &context,
return -EINVAL;
/* Get all defined sets to apply. */
const YamlObject &yamlSets = tuningData["sets"];
const ValueNode &yamlSets = tuningData["sets"];
if (!yamlSets.isList()) {
LOG(RkISP1Lsc, Error)
<< "'sets' parameter not found in tuning file";

View File

@@ -24,7 +24,7 @@ public:
LensShadingCorrection();
~LensShadingCorrection() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
void queueRequest(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,

View File

@@ -41,7 +41,7 @@ Lux::Lux()
/**
* \copydoc libcamera::ipa::Algorithm::init
*/
int Lux::init([[maybe_unused]] IPAContext &context, const YamlObject &tuningData)
int Lux::init([[maybe_unused]] IPAContext &context, const ValueNode &tuningData)
{
return lux_.parseTuningData(tuningData);
}

View File

@@ -22,7 +22,7 @@ class Lux : public Algorithm
public:
Lux();
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
void prepare(IPAContext &context, const uint32_t frame,
IPAFrameContext &frameContext,
RkISP1Params *params) override;

View File

@@ -10,7 +10,7 @@
#include <libcamera/base/log.h>
#include <libcamera/base/utils.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include <libipa/agc_mean_luminance.h>
#include <libipa/histogram.h>
@@ -110,7 +110,7 @@ WideDynamicRange::WideDynamicRange()
* \copydoc libcamera::ipa::Algorithm::init
*/
int WideDynamicRange::init([[maybe_unused]] IPAContext &context,
[[maybe_unused]] const YamlObject &tuningData)
[[maybe_unused]] const ValueNode &tuningData)
{
if (!(context.hw.supportedBlocks & 1 << RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR)) {
LOG(RkISP1Wdr, Error)

View File

@@ -23,7 +23,7 @@ public:
WideDynamicRange();
~WideDynamicRange() = default;
int init(IPAContext &context, const YamlObject &tuningData) override;
int init(IPAContext &context, const ValueNode &tuningData) override;
int configure(IPAContext &context, const IPACameraSensorInfo &configInfo) override;
void queueRequest(IPAContext &context, const uint32_t frame,

View File

@@ -185,7 +185,7 @@ int IPARkISP1::init(const IPASettings &settings, unsigned int hwRevision,
return ret;
}
std::unique_ptr<libcamera::YamlObject> data = YamlParser::parse(file);
std::unique_ptr<ValueNode> data = YamlParser::parse(file);
if (!data)
return -EINVAL;

View File

@@ -9,7 +9,7 @@
using namespace RPiController;
int Algorithm::read([[maybe_unused]] const libcamera::YamlObject &params)
int Algorithm::read([[maybe_unused]] const libcamera::ValueNode &params)
{
return 0;
}

View File

@@ -15,7 +15,7 @@
#include <memory>
#include <map>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "controller.h"
@@ -32,7 +32,7 @@ public:
}
virtual ~Algorithm() = default;
virtual char const *name() const = 0;
virtual int read(const libcamera::YamlObject &params);
virtual int read(const libcamera::ValueNode &params);
virtual void initialise();
virtual void switchMode(CameraMode const &cameraMode, Metadata *metadata);
virtual void prepare(Metadata *imageMetadata);

View File

@@ -102,7 +102,7 @@ int Controller::read(char const *filename)
return -EINVAL;
}
std::unique_ptr<YamlObject> root = YamlParser::parse(file);
std::unique_ptr<ValueNode> root = YamlParser::parse(file);
if (!root)
return -EINVAL;
@@ -143,7 +143,7 @@ int Controller::read(char const *filename)
return 0;
}
int Controller::createAlgorithm(const std::string &name, const YamlObject &params)
int Controller::createAlgorithm(const std::string &name, const ValueNode &params)
{
/* Any algorithm may be disabled by setting "enabled" to false. */
bool enabled = params["enabled"].get<bool>(true);

View File

@@ -16,7 +16,7 @@
#include <string>
#include <libcamera/base/utils.h>
#include "libcamera/internal/yaml_object.h"
#include "libcamera/internal/value_node.h"
#include "camera_mode.h"
#include "device_status.h"
@@ -65,7 +65,7 @@ public:
const HardwareConfig &getHardwareConfig() const;
protected:
int createAlgorithm(const std::string &name, const libcamera::YamlObject &params);
int createAlgorithm(const std::string &name, const libcamera::ValueNode &params);
Metadata globalMetadata_;
std::vector<AlgorithmPtr> algorithms_;

View File

@@ -68,7 +68,7 @@ Af::CfgParams::CfgParams()
}
template<typename T>
static void readNumber(T &dest, const libcamera::YamlObject &params, char const *name)
static void readNumber(T &dest, const libcamera::ValueNode &params, char const *name)
{
auto value = params[name].get<T>();
if (value)
@@ -77,7 +77,7 @@ static void readNumber(T &dest, const libcamera::YamlObject &params, char const
LOG(RPiAf, Warning) << "Missing parameter \"" << name << "\"";
}
void Af::RangeDependentParams::read(const libcamera::YamlObject &params)
void Af::RangeDependentParams::read(const libcamera::ValueNode &params)
{
readNumber<double>(focusMin, params, "min");
@@ -85,7 +85,7 @@ void Af::RangeDependentParams::read(const libcamera::YamlObject &params)
readNumber<double>(focusDefault, params, "default");
}
void Af::SpeedDependentParams::read(const libcamera::YamlObject &params)
void Af::SpeedDependentParams::read(const libcamera::ValueNode &params)
{
readNumber<double>(stepCoarse, params, "step_coarse");
readNumber<double>(stepFine, params, "step_fine");
@@ -100,7 +100,7 @@ void Af::SpeedDependentParams::read(const libcamera::YamlObject &params)
readNumber<uint32_t>(stepFrames, params, "step_frames");
}
int Af::CfgParams::read(const libcamera::YamlObject &params)
int Af::CfgParams::read(const libcamera::ValueNode &params)
{
if (params.contains("ranges")) {
auto &rr = params["ranges"];
@@ -226,7 +226,7 @@ char const *Af::name() const
return NAME;
}
int Af::read(const libcamera::YamlObject &params)
int Af::read(const libcamera::ValueNode &params)
{
return cfg_.read(params);
}

View File

@@ -47,7 +47,7 @@ public:
Af(Controller *controller = NULL);
~Af();
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void initialise() override;
/* IPA calls */
@@ -87,7 +87,7 @@ private:
double focusDefault; /* default setting ("hyperfocal") */
RangeDependentParams();
void read(const libcamera::YamlObject &params);
void read(const libcamera::ValueNode &params);
};
struct SpeedDependentParams {
@@ -104,7 +104,7 @@ private:
uint32_t stepFrames; /* frames to skip in between steps of a scan */
SpeedDependentParams();
void read(const libcamera::YamlObject &params);
void read(const libcamera::ValueNode &params);
};
struct CfgParams {
@@ -118,7 +118,7 @@ private:
libcamera::ipa::Pwl map; /* converts dioptres -> lens driver position */
CfgParams();
int read(const libcamera::YamlObject &params);
int read(const libcamera::ValueNode &params);
void initialise();
};

View File

@@ -31,7 +31,7 @@ char const *Agc::name() const
return NAME;
}
int Agc::read(const libcamera::YamlObject &params)
int Agc::read(const libcamera::ValueNode &params)
{
/*
* When there is only a single channel we can read the old style syntax.

View File

@@ -27,7 +27,7 @@ class Agc : public AgcAlgorithm
public:
Agc(Controller *controller);
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
unsigned int getConvergenceFrames() const override;
std::vector<double> const &getWeights() const override;
void setEv(unsigned int channel, double ev) override;

View File

@@ -29,9 +29,9 @@ using namespace std::literals::chrono_literals;
LOG_DECLARE_CATEGORY(RPiAgc)
int AgcMeteringMode::read(const libcamera::YamlObject &params)
int AgcMeteringMode::read(const libcamera::ValueNode &params)
{
const YamlObject &yamlWeights = params["weights"];
const ValueNode &yamlWeights = params["weights"];
for (const auto &p : yamlWeights.asList()) {
auto value = p.get<double>();
@@ -45,7 +45,7 @@ int AgcMeteringMode::read(const libcamera::YamlObject &params)
static std::tuple<int, std::string>
readMeteringModes(std::map<std::string, AgcMeteringMode> &metering_modes,
const libcamera::YamlObject &params)
const libcamera::ValueNode &params)
{
std::string first;
int ret;
@@ -64,7 +64,7 @@ readMeteringModes(std::map<std::string, AgcMeteringMode> &metering_modes,
return { 0, first };
}
int AgcExposureMode::read(const libcamera::YamlObject &params)
int AgcExposureMode::read(const libcamera::ValueNode &params)
{
auto value = params["shutter"].get<std::vector<double>>();
if (!value)
@@ -94,7 +94,7 @@ int AgcExposureMode::read(const libcamera::YamlObject &params)
static std::tuple<int, std::string>
readExposureModes(std::map<std::string, AgcExposureMode> &exposureModes,
const libcamera::YamlObject &params)
const libcamera::ValueNode &params)
{
std::string first;
int ret;
@@ -113,7 +113,7 @@ readExposureModes(std::map<std::string, AgcExposureMode> &exposureModes,
return { 0, first };
}
int AgcConstraint::read(const libcamera::YamlObject &params)
int AgcConstraint::read(const libcamera::ValueNode &params)
{
std::string boundString = params["bound"].get<std::string>("");
transform(boundString.begin(), boundString.end(),
@@ -139,7 +139,7 @@ int AgcConstraint::read(const libcamera::YamlObject &params)
}
static std::tuple<int, AgcConstraintMode>
readConstraintMode(const libcamera::YamlObject &params)
readConstraintMode(const libcamera::ValueNode &params)
{
AgcConstraintMode mode;
int ret;
@@ -158,7 +158,7 @@ readConstraintMode(const libcamera::YamlObject &params)
static std::tuple<int, std::string>
readConstraintModes(std::map<std::string, AgcConstraintMode> &constraintModes,
const libcamera::YamlObject &params)
const libcamera::ValueNode &params)
{
std::string first;
int ret;
@@ -175,7 +175,7 @@ readConstraintModes(std::map<std::string, AgcConstraintMode> &constraintModes,
return { 0, first };
}
int AgcChannelConstraint::read(const libcamera::YamlObject &params)
int AgcChannelConstraint::read(const libcamera::ValueNode &params)
{
auto channelValue = params["channel"].get<unsigned int>();
if (!channelValue) {
@@ -204,7 +204,7 @@ int AgcChannelConstraint::read(const libcamera::YamlObject &params)
}
static int readChannelConstraints(std::vector<AgcChannelConstraint> &channelConstraints,
const libcamera::YamlObject &params)
const libcamera::ValueNode &params)
{
for (const auto &p : params.asList()) {
AgcChannelConstraint constraint;
@@ -218,7 +218,7 @@ static int readChannelConstraints(std::vector<AgcChannelConstraint> &channelCons
return 0;
}
int AgcConfig::read(const libcamera::YamlObject &params)
int AgcConfig::read(const libcamera::ValueNode &params)
{
LOG(RPiAgc, Debug) << "AgcConfig";
int ret;
@@ -290,7 +290,7 @@ AgcChannel::AgcChannel()
status_.ev = ev_;
}
int AgcChannel::read(const libcamera::YamlObject &params,
int AgcChannel::read(const libcamera::ValueNode &params,
const Controller::HardwareConfig &hardwareConfig)
{
int ret = config_.read(params);

View File

@@ -26,13 +26,13 @@ using AgcChannelTotalExposures = std::vector<libcamera::utils::Duration>;
struct AgcMeteringMode {
std::vector<double> weights;
int read(const libcamera::YamlObject &params);
int read(const libcamera::ValueNode &params);
};
struct AgcExposureMode {
std::vector<libcamera::utils::Duration> exposureTime;
std::vector<double> gain;
int read(const libcamera::YamlObject &params);
int read(const libcamera::ValueNode &params);
};
struct AgcConstraint {
@@ -42,7 +42,7 @@ struct AgcConstraint {
double qLo;
double qHi;
libcamera::ipa::Pwl yTarget;
int read(const libcamera::YamlObject &params);
int read(const libcamera::ValueNode &params);
};
typedef std::vector<AgcConstraint> AgcConstraintMode;
@@ -53,11 +53,11 @@ struct AgcChannelConstraint {
Bound bound;
unsigned int channel;
double factor;
int read(const libcamera::YamlObject &params);
int read(const libcamera::ValueNode &params);
};
struct AgcConfig {
int read(const libcamera::YamlObject &params);
int read(const libcamera::ValueNode &params);
std::map<std::string, AgcMeteringMode> meteringModes;
std::map<std::string, AgcExposureMode> exposureModes;
std::map<std::string, AgcConstraintMode> constraintModes;
@@ -85,7 +85,7 @@ class AgcChannel
{
public:
AgcChannel();
int read(const libcamera::YamlObject &params,
int read(const libcamera::ValueNode &params,
const Controller::HardwareConfig &hardwareConfig);
unsigned int getConvergenceFrames() const;
std::vector<double> const &getWeights() const;

View File

@@ -50,7 +50,7 @@ char const *Alsc::name() const
return NAME;
}
static int generateLut(Array2D<double> &lut, const libcamera::YamlObject &params)
static int generateLut(Array2D<double> &lut, const libcamera::ValueNode &params)
{
/* These must be signed ints for the co-ordinate calculations below. */
int X = lut.dimensions().width, Y = lut.dimensions().height;
@@ -82,7 +82,7 @@ static int generateLut(Array2D<double> &lut, const libcamera::YamlObject &params
return 0;
}
static int readLut(Array2D<double> &lut, const libcamera::YamlObject &params)
static int readLut(Array2D<double> &lut, const libcamera::ValueNode &params)
{
if (params.size() != lut.size()) {
LOG(RPiAlsc, Error) << "Invalid number of entries in LSC table";
@@ -101,7 +101,7 @@ static int readLut(Array2D<double> &lut, const libcamera::YamlObject &params)
}
static int readCalibrations(std::vector<AlscCalibration> &calibrations,
const libcamera::YamlObject &params,
const libcamera::ValueNode &params,
std::string const &name, const Size &size)
{
if (params.contains(name)) {
@@ -119,7 +119,7 @@ static int readCalibrations(std::vector<AlscCalibration> &calibrations,
AlscCalibration calibration;
calibration.ct = lastCt = ct;
const libcamera::YamlObject &table = p["table"];
const libcamera::ValueNode &table = p["table"];
if (table.size() != size.width * size.height) {
LOG(RPiAlsc, Error)
<< "Incorrect number of values for ct "
@@ -144,7 +144,7 @@ static int readCalibrations(std::vector<AlscCalibration> &calibrations,
return 0;
}
int Alsc::read(const libcamera::YamlObject &params)
int Alsc::read(const libcamera::ValueNode &params)
{
config_.tableSize = getHardwareConfig().awbRegions;
config_.framePeriod = params["frame_period"].get<uint16_t>(12);

View File

@@ -112,7 +112,7 @@ public:
char const *name() const override;
void initialise() override;
void switchMode(CameraMode const &cameraMode, Metadata *metadata) override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void prepare(Metadata *imageMetadata) override;
void process(StatisticsPtr &stats, Metadata *imageMetadata) override;

View File

@@ -17,7 +17,7 @@ LOG_DEFINE_CATEGORY(RPiAwb)
constexpr double kDefaultCT = 4500.0;
static int readCtCurve(ipa::Pwl &ctR, ipa::Pwl &ctB, const libcamera::YamlObject &params)
static int readCtCurve(ipa::Pwl &ctR, ipa::Pwl &ctB, const libcamera::ValueNode &params)
{
if (params.size() % 3) {
LOG(RPiAwb, Error) << "AwbConfig: incomplete CT curve entry";
@@ -53,7 +53,7 @@ static int readCtCurve(ipa::Pwl &ctR, ipa::Pwl &ctB, const libcamera::YamlObject
return 0;
}
int AwbMode::read(const libcamera::YamlObject &params)
int AwbMode::read(const libcamera::ValueNode &params)
{
auto value = params["lo"].get<double>();
if (!value)
@@ -68,7 +68,7 @@ int AwbMode::read(const libcamera::YamlObject &params)
return 0;
}
int AwbConfig::read(const libcamera::YamlObject &params)
int AwbConfig::read(const libcamera::ValueNode &params)
{
int ret;

View File

@@ -17,7 +17,7 @@
namespace RPiController {
struct AwbMode {
int read(const libcamera::YamlObject &params);
int read(const libcamera::ValueNode &params);
double ctLo; /* low CT value for search */
double ctHi; /* high CT value for search */
};
@@ -25,7 +25,7 @@ struct AwbMode {
struct AwbConfig {
AwbConfig()
: defaultMode(nullptr) {}
int read(const libcamera::YamlObject &params);
int read(const libcamera::ValueNode &params);
bool hasCtCurve() const;
/* Only repeat the AWB calculation every "this many" frames */

View File

@@ -41,14 +41,14 @@ constexpr double kDefaultCT = 4500.0;
namespace RPiController {
struct AwbPrior {
int read(const libcamera::YamlObject &params);
int read(const libcamera::ValueNode &params);
double lux; /* lux level */
libcamera::ipa::Pwl prior; /* maps CT to prior log likelihood for this lux level */
};
struct AwbBayesConfig {
AwbBayesConfig() {}
int read(const libcamera::YamlObject &params, AwbConfig &config);
int read(const libcamera::ValueNode &params, AwbConfig &config);
/* table of illuminant priors at different lux levels */
std::vector<AwbPrior> priors;
/*
@@ -81,7 +81,7 @@ public:
AwbBayes(Controller *controller = NULL);
~AwbBayes();
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
protected:
void prepareStats() override;
@@ -96,7 +96,7 @@ private:
std::vector<libcamera::ipa::Pwl::Point> points_;
};
int AwbPrior::read(const libcamera::YamlObject &params)
int AwbPrior::read(const libcamera::ValueNode &params)
{
auto value = params["lux"].get<double>();
if (!value)
@@ -107,7 +107,7 @@ int AwbPrior::read(const libcamera::YamlObject &params)
return prior.empty() ? -EINVAL : 0;
}
int AwbBayesConfig::read(const libcamera::YamlObject &params, AwbConfig &config)
int AwbBayesConfig::read(const libcamera::ValueNode &params, AwbConfig &config)
{
int ret;
@@ -175,7 +175,7 @@ char const *AwbBayes::name() const
return NAME;
}
int AwbBayes::read(const libcamera::YamlObject &params)
int AwbBayes::read(const libcamera::ValueNode &params)
{
int ret;

View File

@@ -30,7 +30,7 @@ char const *BlackLevel::name() const
return NAME;
}
int BlackLevel::read(const libcamera::YamlObject &params)
int BlackLevel::read(const libcamera::ValueNode &params)
{
/* 64 in 10 bits scaled to 16 bits */
uint16_t blackLevel = params["black_level"].get<uint16_t>(4096);

View File

@@ -18,7 +18,7 @@ class BlackLevel : public BlackLevelAlgorithm
public:
BlackLevel(Controller *controller);
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void initialValues(uint16_t &blackLevelR, uint16_t &blackLevelG,
uint16_t &blackLevelB) override;
void prepare(Metadata *imageMetadata) override;

View File

@@ -27,7 +27,7 @@ char const *Cac::name() const
return NAME;
}
static bool arrayToSet(const libcamera::YamlObject &params, std::vector<double> &inputArray, const Size &size)
static bool arrayToSet(const libcamera::ValueNode &params, std::vector<double> &inputArray, const Size &size)
{
int num = 0;
int max_num = (size.width + 1) * (size.height + 1);
@@ -51,7 +51,7 @@ static void setStrength(std::vector<double> &inputArray, std::vector<double> &ou
}
}
int Cac::read(const libcamera::YamlObject &params)
int Cac::read(const libcamera::ValueNode &params)
{
config_.enabled = params.contains("lut_rx") && params.contains("lut_ry") &&
params.contains("lut_bx") && params.contains("lut_by");

View File

@@ -24,7 +24,7 @@ class Cac : public Algorithm
public:
Cac(Controller *controller = NULL);
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void prepare(Metadata *imageMetadata) override;
private:

View File

@@ -40,7 +40,7 @@ char const *Ccm::name() const
return NAME;
}
int Ccm::read(const libcamera::YamlObject &params)
int Ccm::read(const libcamera::ValueNode &params)
{
if (params.contains("saturation")) {
config_.saturation = params["saturation"].get<ipa::Pwl>(ipa::Pwl{});

View File

@@ -31,7 +31,7 @@ class Ccm : public CcmAlgorithm
public:
Ccm(Controller *controller = NULL);
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void enableAuto() override;
void setSaturation(double saturation) override;
void setCcm(Matrix3x3 const &matrix) override;

View File

@@ -38,7 +38,7 @@ char const *Contrast::name() const
return NAME;
}
int Contrast::read(const libcamera::YamlObject &params)
int Contrast::read(const libcamera::ValueNode &params)
{
// enable adaptive enhancement by default
config_.ceEnable = params["ce_enable"].get<int>(1);

View File

@@ -35,7 +35,7 @@ class Contrast : public ContrastAlgorithm
public:
Contrast(Controller *controller = NULL);
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void setBrightness(double brightness) override;
void setContrast(double contrast) override;
void enableCe(bool enable) override;

View File

@@ -24,7 +24,7 @@ char const *Decompand::name() const
return NAME;
}
int Decompand::read(const libcamera::YamlObject &params)
int Decompand::read(const libcamera::ValueNode &params)
{
config_.bitdepth = params["bitdepth"].get<uint32_t>(0);
config_.decompandCurve = params["decompand_curve"].get<ipa::Pwl>(ipa::Pwl{});

View File

@@ -18,7 +18,7 @@ class Decompand : public DecompandAlgorithm
public:
Decompand(Controller *controller = nullptr);
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void initialise() override;
void switchMode(CameraMode const &cameraMode, Metadata *metadata) override;
void initialValues(libcamera::ipa::Pwl &decompandCurve) override;

View File

@@ -21,7 +21,7 @@ LOG_DEFINE_CATEGORY(RPiDenoise)
#define NAME "rpi.denoise"
int DenoiseConfig::read(const libcamera::YamlObject &params)
int DenoiseConfig::read(const libcamera::ValueNode &params)
{
sdnEnable = params.contains("sdn");
if (sdnEnable) {
@@ -82,7 +82,7 @@ char const *Denoise::name() const
return NAME;
}
int Denoise::read(const libcamera::YamlObject &params)
int Denoise::read(const libcamera::ValueNode &params)
{
if (!params.contains("normal")) {
configs_["normal"].read(params);

View File

@@ -31,7 +31,7 @@ struct DenoiseConfig {
bool tdnEnable;
bool sdnEnable;
bool cdnEnable;
int read(const libcamera::YamlObject &params);
int read(const libcamera::ValueNode &params);
};
class Denoise : public DenoiseAlgorithm
@@ -39,7 +39,7 @@ class Denoise : public DenoiseAlgorithm
public:
Denoise(Controller *controller);
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void initialise() override;
void switchMode(CameraMode const &cameraMode, Metadata *metadata) override;
void prepare(Metadata *imageMetadata) override;

View File

@@ -31,7 +31,7 @@ char const *Dpc::name() const
return NAME;
}
int Dpc::read(const libcamera::YamlObject &params)
int Dpc::read(const libcamera::ValueNode &params)
{
config_.strength = params["strength"].get<int>(1);
if (config_.strength < 0 || config_.strength > 2) {

View File

@@ -22,7 +22,7 @@ class Dpc : public Algorithm
public:
Dpc(Controller *controller);
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void prepare(Metadata *imageMetadata) override;
private:

View File

@@ -34,7 +34,7 @@ char const *Geq::name() const
return NAME;
}
int Geq::read(const libcamera::YamlObject &params)
int Geq::read(const libcamera::ValueNode &params)
{
config_.offset = params["offset"].get<uint16_t>(0);
config_.slope = params["slope"].get<double>(0.0);

View File

@@ -26,7 +26,7 @@ class Geq : public Algorithm
public:
Geq(Controller *controller);
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void prepare(Metadata *imageMetadata) override;
private:

View File

@@ -23,7 +23,7 @@ LOG_DEFINE_CATEGORY(RPiHdr)
#define NAME "rpi.hdr"
void HdrConfig::read(const libcamera::YamlObject &params, const std::string &modeName)
void HdrConfig::read(const libcamera::ValueNode &params, const std::string &modeName)
{
name = modeName;
@@ -111,7 +111,7 @@ char const *Hdr::name() const
return NAME;
}
int Hdr::read(const libcamera::YamlObject &params)
int Hdr::read(const libcamera::ValueNode &params)
{
/* Make an "HDR off" mode by default so that tuning files don't have to. */
HdrConfig &offMode = config_["Off"];

View File

@@ -52,7 +52,7 @@ struct HdrConfig {
uint8_t diffPower;
double motionThreshold;
void read(const libcamera::YamlObject &params, const std::string &name);
void read(const libcamera::ValueNode &params, const std::string &name);
};
class Hdr : public HdrAlgorithm
@@ -61,7 +61,7 @@ public:
Hdr(Controller *controller);
char const *name() const override;
void switchMode(CameraMode const &cameraMode, Metadata *metadata) override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void prepare(Metadata *imageMetadata) override;
void process(StatisticsPtr &stats, Metadata *imageMetadata) override;
int setMode(std::string const &mode) override;

View File

@@ -35,7 +35,7 @@ char const *Lux::name() const
return NAME;
}
int Lux::read(const libcamera::YamlObject &params)
int Lux::read(const libcamera::ValueNode &params)
{
auto value = params["reference_shutter_speed"].get<double>();
if (!value)

View File

@@ -23,7 +23,7 @@ class Lux : public Algorithm
public:
Lux(Controller *controller);
char const *name() const override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void switchMode(CameraMode const &cameraMode, Metadata *metadata) override;
void prepare(Metadata *imageMetadata) override;
void process(StatisticsPtr &stats, Metadata *imageMetadata) override;

View File

@@ -41,7 +41,7 @@ void Noise::switchMode(CameraMode const &cameraMode,
modeFactor_ = std::max(1.0, cameraMode.noiseFactor);
}
int Noise::read(const libcamera::YamlObject &params)
int Noise::read(const libcamera::ValueNode &params)
{
auto value = params["reference_constant"].get<double>();
if (!value)

View File

@@ -19,7 +19,7 @@ public:
Noise(Controller *controller);
char const *name() const override;
void switchMode(CameraMode const &cameraMode, Metadata *metadata) override;
int read(const libcamera::YamlObject &params) override;
int read(const libcamera::ValueNode &params) override;
void prepare(Metadata *imageMetadata) override;
private:

Some files were not shown because too many files have changed in this diff Show More