[libcamera-devel] [PATCH v1 2/2] DEMO: raspberrypi: Use custom parameters to init()

paul.elder at ideasonboard.com paul.elder at ideasonboard.com
Thu Mar 4 10:02:55 CET 2021


Hi Laurent,

On Thu, Mar 04, 2021 at 10:59:46AM +0200, Laurent Pinchart wrote:
> Hi Paul,
> 
> Thank you for the patch.
> 
> On Thu, Mar 04, 2021 at 05:47:43PM +0900, Paul Elder wrote:
> > This is just a demo to show custom parameters to init() with the
> > raspberrypi IPA interface.
> > 
> > Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> > ---
> >  include/libcamera/ipa/raspberrypi.mojom            |  3 ++-
> >  src/ipa/raspberrypi/raspberrypi.cpp                | 12 +++++++++---
> >  src/libcamera/pipeline/raspberrypi/raspberrypi.cpp |  6 +++++-
> >  3 files changed, 16 insertions(+), 5 deletions(-)
> > 
> > diff --git a/include/libcamera/ipa/raspberrypi.mojom b/include/libcamera/ipa/raspberrypi.mojom
> > index f733a2cd..b8944227 100644
> > --- a/include/libcamera/ipa/raspberrypi.mojom
> > +++ b/include/libcamera/ipa/raspberrypi.mojom
> > @@ -51,7 +51,8 @@ struct StartControls {
> >  };
> >  
> >  interface IPARPiInterface {
> > -	init(IPASettings settings) => (int32 ret);
> > +	init(IPASettings settings, string sensorName)
> > +		=> (int32 ret, bool metadataSupport);
> >  	start(StartControls controls) => (StartControls result);
> >  	stop();
> >  
> > diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp
> > index 6348d071..6a9aba6f 100644
> > --- a/src/ipa/raspberrypi/raspberrypi.cpp
> > +++ b/src/ipa/raspberrypi/raspberrypi.cpp
> > @@ -79,7 +79,8 @@ public:
> >  			munmap(lsTable_, ipa::RPi::MaxLsGridSize);
> >  	}
> >  
> > -	int init(const IPASettings &settings) override;
> > +	void init(const IPASettings &settings, const std::string &sensorName,
> > +		  int *ret, bool *metadataSupport) override;
> 
> Would it make sense to handle the case where the first output parameter
> is an int32 to return it directly from the function ?

tbh, I think it would...

> 	int init(const IPASettings &settings, const std::string &sensorName,
> 		 bool *metadataSupport) override;
> 
> Would it be doable without too much effort on the IPC generator side ?

Without "too much" effort, sure :)

I'll put it higher up on my todo list.


Paul

> >  	void start(const ipa::RPi::StartControls &data,
> >  		   ipa::RPi::StartControls *result) override;
> >  	void stop() override {}
> > @@ -164,10 +165,15 @@ private:
> >  	double maxFrameDuration_;
> >  };
> >  
> > -int IPARPi::init(const IPASettings &settings)
> > +void IPARPi::init(const IPASettings &settings, const std::string &sensorName,
> > +		  int *ret, bool *metadataSupport)
> >  {
> > +	LOG(IPARPI, Debug) << "sensor name is " << sensorName;
> > +
> >  	tuningFile_ = settings.configurationFile;
> > -	return 0;
> > +
> > +	*metadataSupport = true;
> > +	*ret = 0;
> >  }
> >  
> >  void IPARPi::start(const ipa::RPi::StartControls &data,
> > diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> > index db91f1b5..a1c90028 100644
> > --- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> > +++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp
> > @@ -1194,7 +1194,11 @@ int RPiCameraData::loadIPA()
> >  
> >  	IPASettings settings(ipa_->configurationFile(sensor_->model() + ".json"));
> >  
> > -	return ipa_->init(settings);
> > +	int ret;
> > +	bool metadataSupport;
> > +	ipa_->init(settings, "sensor name", &ret, &metadataSupport);
> > +	LOG(RPI, Debug) << "metadata support " << (metadataSupport ? "yes" : "no");
> > +	return ret;
> >  }
> >  
> >  int RPiCameraData::configureIPA(const CameraConfiguration *config)


More information about the libcamera-devel mailing list