Message ID | 20250223230403.1226-11-laurent.pinchart@ideasonboard.com |
---|---|
State | Rejected |
Headers | show |
Series |
|
Related | show |
Hi Laurent, Thank you for the patch. On Mon, Feb 24, 2025 at 01:03:58AM +0200, Laurent Pinchart wrote: > Derived classes don't need to modify the modes_ member variable. Make > it private and provide a read-only accessor. As parseModeConfigs() and modes_ are only helper functions (I was undecided if they should be added to the Awb class at all - but they seem to be quite useful for most implementations) and parseModeConfigs() is only called by the derived classes, the derived classes should have full control over the results. I would keep that protected. Regards, Stefan > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > src/ipa/libipa/awb.cpp | 6 +++--- > src/ipa/libipa/awb.h | 6 +++++- > src/ipa/libipa/awb_bayes.cpp | 6 +++--- > src/ipa/libipa/awb_bayes.h | 2 +- > 4 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/src/ipa/libipa/awb.cpp b/src/ipa/libipa/awb.cpp > index 04cf2d55ed00..0f54655d3234 100644 > --- a/src/ipa/libipa/awb.cpp > +++ b/src/ipa/libipa/awb.cpp > @@ -250,9 +250,9 @@ int AwbAlgorithm::parseModeConfigs(const YamlObject &tuningData, > */ > > /** > - * \var AwbAlgorithm::modes_ > - * \brief Map of all configured modes > - * \sa AwbAlgorithm::parseModeConfigs > + * \fn AwbAlgorithm::modes() > + * \brief Get the available AWB modes > + * \return The map of available AWB modes > */ > > } /* namespace ipa */ > diff --git a/src/ipa/libipa/awb.h b/src/ipa/libipa/awb.h > index 36c05c37f5e9..017b7a0c3dc1 100644 > --- a/src/ipa/libipa/awb.h > +++ b/src/ipa/libipa/awb.h > @@ -54,9 +54,13 @@ protected: > double ctLo; > }; > > - std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> modes_; > + const std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> &modes() const > + { > + return modes_; > + } > > private: > + std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> modes_; > ControlInfoMap::Map controls_; > }; > > diff --git a/src/ipa/libipa/awb_bayes.cpp b/src/ipa/libipa/awb_bayes.cpp > index 9287b884cb95..97bd256526a4 100644 > --- a/src/ipa/libipa/awb_bayes.cpp > +++ b/src/ipa/libipa/awb_bayes.cpp > @@ -170,7 +170,7 @@ int AwbBayes::init(const YamlObject &tuningData) > << "Failed to parse mode parameter from tuning file"; > return ret; > } > - currentMode_ = &modes_[controls::AwbAuto]; > + currentMode_ = &modes().at(controls::AwbAuto); > > transversePos_ = tuningData["transversePos"].get<double>(0.01); > transverseNeg_ = tuningData["transverseNeg"].get<double>(0.01); > @@ -256,8 +256,8 @@ void AwbBayes::handleControls(const ControlList &controls) > { > auto mode = controls.get(controls::AwbMode); > if (mode) { > - auto it = modes_.find(static_cast<controls::AwbModeEnum>(*mode)); > - if (it != modes_.end()) > + auto it = modes().find(static_cast<controls::AwbModeEnum>(*mode)); > + if (it != modes().end()) > currentMode_ = &it->second; > else > LOG(Awb, Error) << "Unsupported AWB mode " << *mode; > diff --git a/src/ipa/libipa/awb_bayes.h b/src/ipa/libipa/awb_bayes.h > index 23bf88061118..b74201b542fb 100644 > --- a/src/ipa/libipa/awb_bayes.h > +++ b/src/ipa/libipa/awb_bayes.h > @@ -59,7 +59,7 @@ private: > double transversePos_; > double transverseNeg_; > > - ModeConfig *currentMode_ = nullptr; > + const ModeConfig *currentMode_ = nullptr; > }; > > } /* namespace ipa */ > -- > Regards, > > Laurent Pinchart >
On Mon, Feb 24, 2025 at 10:32:44AM +0100, Stefan Klug wrote: > Hi Laurent, > > Thank you for the patch. > > On Mon, Feb 24, 2025 at 01:03:58AM +0200, Laurent Pinchart wrote: > > Derived classes don't need to modify the modes_ member variable. Make > > it private and provide a read-only accessor. > > As parseModeConfigs() and modes_ are only helper functions (I was > undecided if they should be added to the Awb class at all - but they > seem to be quite useful for most implementations) and parseModeConfigs() > is only called by the derived classes, the derived classes should have > full control over the results. I would keep that protected. OK, I'll drop this. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > --- > > src/ipa/libipa/awb.cpp | 6 +++--- > > src/ipa/libipa/awb.h | 6 +++++- > > src/ipa/libipa/awb_bayes.cpp | 6 +++--- > > src/ipa/libipa/awb_bayes.h | 2 +- > > 4 files changed, 12 insertions(+), 8 deletions(-) > > > > diff --git a/src/ipa/libipa/awb.cpp b/src/ipa/libipa/awb.cpp > > index 04cf2d55ed00..0f54655d3234 100644 > > --- a/src/ipa/libipa/awb.cpp > > +++ b/src/ipa/libipa/awb.cpp > > @@ -250,9 +250,9 @@ int AwbAlgorithm::parseModeConfigs(const YamlObject &tuningData, > > */ > > > > /** > > - * \var AwbAlgorithm::modes_ > > - * \brief Map of all configured modes > > - * \sa AwbAlgorithm::parseModeConfigs > > + * \fn AwbAlgorithm::modes() > > + * \brief Get the available AWB modes > > + * \return The map of available AWB modes > > */ > > > > } /* namespace ipa */ > > diff --git a/src/ipa/libipa/awb.h b/src/ipa/libipa/awb.h > > index 36c05c37f5e9..017b7a0c3dc1 100644 > > --- a/src/ipa/libipa/awb.h > > +++ b/src/ipa/libipa/awb.h > > @@ -54,9 +54,13 @@ protected: > > double ctLo; > > }; > > > > - std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> modes_; > > + const std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> &modes() const > > + { > > + return modes_; > > + } > > > > private: > > + std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> modes_; > > ControlInfoMap::Map controls_; > > }; > > > > diff --git a/src/ipa/libipa/awb_bayes.cpp b/src/ipa/libipa/awb_bayes.cpp > > index 9287b884cb95..97bd256526a4 100644 > > --- a/src/ipa/libipa/awb_bayes.cpp > > +++ b/src/ipa/libipa/awb_bayes.cpp > > @@ -170,7 +170,7 @@ int AwbBayes::init(const YamlObject &tuningData) > > << "Failed to parse mode parameter from tuning file"; > > return ret; > > } > > - currentMode_ = &modes_[controls::AwbAuto]; > > + currentMode_ = &modes().at(controls::AwbAuto); > > > > transversePos_ = tuningData["transversePos"].get<double>(0.01); > > transverseNeg_ = tuningData["transverseNeg"].get<double>(0.01); > > @@ -256,8 +256,8 @@ void AwbBayes::handleControls(const ControlList &controls) > > { > > auto mode = controls.get(controls::AwbMode); > > if (mode) { > > - auto it = modes_.find(static_cast<controls::AwbModeEnum>(*mode)); > > - if (it != modes_.end()) > > + auto it = modes().find(static_cast<controls::AwbModeEnum>(*mode)); > > + if (it != modes().end()) > > currentMode_ = &it->second; > > else > > LOG(Awb, Error) << "Unsupported AWB mode " << *mode; > > diff --git a/src/ipa/libipa/awb_bayes.h b/src/ipa/libipa/awb_bayes.h > > index 23bf88061118..b74201b542fb 100644 > > --- a/src/ipa/libipa/awb_bayes.h > > +++ b/src/ipa/libipa/awb_bayes.h > > @@ -59,7 +59,7 @@ private: > > double transversePos_; > > double transverseNeg_; > > > > - ModeConfig *currentMode_ = nullptr; > > + const ModeConfig *currentMode_ = nullptr; > > }; > > > > } /* namespace ipa */
diff --git a/src/ipa/libipa/awb.cpp b/src/ipa/libipa/awb.cpp index 04cf2d55ed00..0f54655d3234 100644 --- a/src/ipa/libipa/awb.cpp +++ b/src/ipa/libipa/awb.cpp @@ -250,9 +250,9 @@ int AwbAlgorithm::parseModeConfigs(const YamlObject &tuningData, */ /** - * \var AwbAlgorithm::modes_ - * \brief Map of all configured modes - * \sa AwbAlgorithm::parseModeConfigs + * \fn AwbAlgorithm::modes() + * \brief Get the available AWB modes + * \return The map of available AWB modes */ } /* namespace ipa */ diff --git a/src/ipa/libipa/awb.h b/src/ipa/libipa/awb.h index 36c05c37f5e9..017b7a0c3dc1 100644 --- a/src/ipa/libipa/awb.h +++ b/src/ipa/libipa/awb.h @@ -54,9 +54,13 @@ protected: double ctLo; }; - std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> modes_; + const std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> &modes() const + { + return modes_; + } private: + std::map<controls::AwbModeEnum, AwbAlgorithm::ModeConfig> modes_; ControlInfoMap::Map controls_; }; diff --git a/src/ipa/libipa/awb_bayes.cpp b/src/ipa/libipa/awb_bayes.cpp index 9287b884cb95..97bd256526a4 100644 --- a/src/ipa/libipa/awb_bayes.cpp +++ b/src/ipa/libipa/awb_bayes.cpp @@ -170,7 +170,7 @@ int AwbBayes::init(const YamlObject &tuningData) << "Failed to parse mode parameter from tuning file"; return ret; } - currentMode_ = &modes_[controls::AwbAuto]; + currentMode_ = &modes().at(controls::AwbAuto); transversePos_ = tuningData["transversePos"].get<double>(0.01); transverseNeg_ = tuningData["transverseNeg"].get<double>(0.01); @@ -256,8 +256,8 @@ void AwbBayes::handleControls(const ControlList &controls) { auto mode = controls.get(controls::AwbMode); if (mode) { - auto it = modes_.find(static_cast<controls::AwbModeEnum>(*mode)); - if (it != modes_.end()) + auto it = modes().find(static_cast<controls::AwbModeEnum>(*mode)); + if (it != modes().end()) currentMode_ = &it->second; else LOG(Awb, Error) << "Unsupported AWB mode " << *mode; diff --git a/src/ipa/libipa/awb_bayes.h b/src/ipa/libipa/awb_bayes.h index 23bf88061118..b74201b542fb 100644 --- a/src/ipa/libipa/awb_bayes.h +++ b/src/ipa/libipa/awb_bayes.h @@ -59,7 +59,7 @@ private: double transversePos_; double transverseNeg_; - ModeConfig *currentMode_ = nullptr; + const ModeConfig *currentMode_ = nullptr; }; } /* namespace ipa */
Derived classes don't need to modify the modes_ member variable. Make it private and provide a read-only accessor. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- src/ipa/libipa/awb.cpp | 6 +++--- src/ipa/libipa/awb.h | 6 +++++- src/ipa/libipa/awb_bayes.cpp | 6 +++--- src/ipa/libipa/awb_bayes.h | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-)