[libcamera-devel] [PATCH v2 01/10] ipa: raspberrypi Store the target string in the controller

Kieran Bingham kieran.bingham at ideasonboard.com
Tue Mar 28 21:40:53 CEST 2023


Quoting Naushir Patuck via libcamera-devel (2023-03-27 13:20:21)
> The target string may be used by algorithms to determine the running
> hardware target.
> 
> Store the target string provided by the camera tuning files in the
> controller state. Add a getTarget() member function to retrieve this
> string.
> 
> Validate the correct hardware target ("bcm2835") during the IPA
> initialisation phase.
> 
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> Reviewed-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> ---
>  src/ipa/raspberrypi/controller/algorithm.h    | 4 ++++
>  src/ipa/raspberrypi/controller/controller.cpp | 6 ++++++
>  src/ipa/raspberrypi/controller/controller.h   | 4 ++++
>  src/ipa/raspberrypi/raspberrypi.cpp           | 8 ++++++++
>  4 files changed, 22 insertions(+)
> 
> diff --git a/src/ipa/raspberrypi/controller/algorithm.h b/src/ipa/raspberrypi/controller/algorithm.h
> index 4f3275987305..7c22fbe4945c 100644
> --- a/src/ipa/raspberrypi/controller/algorithm.h
> +++ b/src/ipa/raspberrypi/controller/algorithm.h
> @@ -41,6 +41,10 @@ public:
>         {
>                 return controller_->getGlobalMetadata();
>         }
> +       const std::string &getTarget() const
> +       {
> +               return controller_->getTarget();
> +       }
>  
>  private:
>         Controller *controller_;
> diff --git a/src/ipa/raspberrypi/controller/controller.cpp b/src/ipa/raspberrypi/controller/controller.cpp
> index e91567852d00..a6250ee140b0 100644
> --- a/src/ipa/raspberrypi/controller/controller.cpp
> +++ b/src/ipa/raspberrypi/controller/controller.cpp
> @@ -38,6 +38,7 @@ int Controller::read(char const *filename)
>  
>         std::unique_ptr<YamlObject> root = YamlParser::parse(file);
>         double version = (*root)["version"].get<double>(1.0);
> +       target_ = (*root)["target"].get<std::string>("bcm2835");
>  
>         if (version < 2.0) {
>                 LOG(RPiController, Warning)
> @@ -142,3 +143,8 @@ Algorithm *Controller::getAlgorithm(std::string const &name) const
>         }
>         return nullptr;
>  }
> +
> +const std::string &Controller::getTarget() const
> +{
> +       return target_;
> +}
> diff --git a/src/ipa/raspberrypi/controller/controller.h b/src/ipa/raspberrypi/controller/controller.h
> index e6c950c3a509..24e02903d438 100644
> --- a/src/ipa/raspberrypi/controller/controller.h
> +++ b/src/ipa/raspberrypi/controller/controller.h
> @@ -46,6 +46,7 @@ public:
>         void process(StatisticsPtr stats, Metadata *imageMetadata);
>         Metadata &getGlobalMetadata();
>         Algorithm *getAlgorithm(std::string const &name) const;
> +       const std::string &getTarget() const;
>  
>  protected:
>         int createAlgorithm(const std::string &name, const libcamera::YamlObject &params);
> @@ -53,6 +54,9 @@ protected:
>         Metadata globalMetadata_;
>         std::vector<AlgorithmPtr> algorithms_;
>         bool switchModeCalled_;
> +
> +private:
> +       std::string target_;
>  };
>  
>  } /* namespace RPiController */
> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
> index 1375795568e2..86359538cf67 100644
> --- a/src/ipa/raspberrypi/raspberrypi.cpp
> +++ b/src/ipa/raspberrypi/raspberrypi.cpp
> @@ -269,6 +269,14 @@ int IPARPi::init(const IPASettings &settings, bool lensPresent, IPAInitResult *r
>                 return ret;
>         }
>  
> +       const std::string &target = controller_.getTarget();
> +       if (target != "bcm2835") {
> +               LOG(IPARPI, Error)
> +                       << "Tuning data file target returned \"" << target << "\""
> +                       << ", expected \"bcm2835\"";
> +               return -EINVAL;
> +       }
> +
>         lensPresent_ = lensPresent;
>  
>         controller_.initialise();
> -- 
> 2.34.1
>


More information about the libcamera-devel mailing list