diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-08-02 02:28:44 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-08-04 01:14:13 +0300 |
commit | 961a6cf7cac9b788cc285a58ae1b8a480f00b633 (patch) | |
tree | d46a8f90f6a3a1933d59a8032b2c85d6dcbed17c /src/ipa/rkisp1 | |
parent | 502ab9a146e037cc10e3315ced91a0bdfa385472 (diff) |
pipeline: rkisp1: Move ControlInfoMap to IPA module
Currently the pipeline handler advertises controls handled by the IPA
from a ControlInfoMap it manually constructs. This is wrong, as the IPA
module is the component that knows what controls it supports. Fix this
by moving the ControlInfoMap construction to the IPA module, and pass it
to the pipeline handler as a return value from the IPA init() function.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Florian Sylvestre <fsylvestre@baylibre.com>
Diffstat (limited to 'src/ipa/rkisp1')
-rw-r--r-- | src/ipa/rkisp1/rkisp1.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp index 0ebd69aa..6cf4d169 100644 --- a/src/ipa/rkisp1/rkisp1.cpp +++ b/src/ipa/rkisp1/rkisp1.cpp @@ -46,7 +46,8 @@ namespace ipa::rkisp1 { class IPARkISP1 : public IPARkISP1Interface, public Module { public: - int init(const IPASettings &settings, unsigned int hwRevision) override; + int init(const IPASettings &settings, unsigned int hwRevision, + ControlInfoMap *ipaControls) override; int start() override; void stop() override {} @@ -89,12 +90,27 @@ private: struct IPAContext context_; }; +namespace { + +/* List of controls handled by the RkISP1 IPA */ +const ControlInfoMap::Map rkisp1Controls{ + { &controls::AeEnable, ControlInfo(false, true) }, + { &controls::Brightness, ControlInfo(-1.0f, 0.993f) }, + { &controls::Contrast, ControlInfo(0.0f, 1.993f) }, + { &controls::Saturation, ControlInfo(0.0f, 1.993f) }, + { &controls::Sharpness, ControlInfo(0.0f, 10.0f, 1.0f) }, + { &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) }, +}; + +} /* namespace */ + std::string IPARkISP1::logPrefix() const { return "rkisp1"; } -int IPARkISP1::init(const IPASettings &settings, unsigned int hwRevision) +int IPARkISP1::init(const IPASettings &settings, unsigned int hwRevision, + ControlInfoMap *ipaControls) { /* \todo Add support for other revisions */ switch (hwRevision) { @@ -155,7 +171,15 @@ int IPARkISP1::init(const IPASettings &settings, unsigned int hwRevision) return -EINVAL; } - return createAlgorithms(context_, (*data)["algorithms"]); + int ret = createAlgorithms(context_, (*data)["algorithms"]); + if (ret) + return ret; + + /* Return the controls handled by the IPA. */ + ControlInfoMap::Map ctrlMap = rkisp1Controls; + *ipaControls = ControlInfoMap(std::move(ctrlMap), controls::controls); + + return 0; } int IPARkISP1::start() |