[libcamera-devel] [PATCH] ipa: rkisp1: Do not set controls during configure

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Mar 26 04:04:59 CET 2021


Hi Sebastian,

One more comment.

On Fri, Mar 26, 2021 at 05:00:46AM +0200, Laurent Pinchart wrote:
> On Thu, Mar 25, 2021 at 06:42:54PM +0100, Sebastian Fricke wrote:
> > The configure operation is synchronous and should not send events back
> > to the pipeline handler.
> > 
> > If information needs to be returned from configure it should be handled
> > through the interface directly.
> > 
> > Move the initial call to setControls() out of configure() and into the
> > start() method which is called after the IPA running_ state is updated.
> > 
> > Signed-off-by: Sebastian Fricke <sebastian.fricke at posteo.net>
> > ---
> >  src/ipa/rkisp1/rkisp1.cpp | 10 ++++++++--
> >  1 file changed, 8 insertions(+), 2 deletions(-)
> > 
> > diff --git a/src/ipa/rkisp1/rkisp1.cpp b/src/ipa/rkisp1/rkisp1.cpp
> > index d2a10bb9..b0698903 100644
> > --- a/src/ipa/rkisp1/rkisp1.cpp
> > +++ b/src/ipa/rkisp1/rkisp1.cpp
> > @@ -32,7 +32,7 @@ class IPARkISP1 : public ipa::rkisp1::IPARkISP1Interface
> >  {
> >  public:
> >  	int init(unsigned int hwRevision) override;
> > -	int start() override { return 0; }
> > +	int start() override;
> >  	void stop() override {}
> >  
> >  	int configure(const CameraSensorInfo &info,
> > @@ -80,6 +80,13 @@ int IPARkISP1::init(unsigned int hwRevision)
> >  	return 0;
> >  }
> >  
> > +int IPARkISP1::start()
> > +{
> > +        setControls(0);

Tabs for indentation. Didn't checkstyle.py warn you ?

> 
> The IPA will send the queueFrameAction event to the pipeline handler
> before the start() function completes. This will cause different
> behaviours in the isolated and non-isolated cases.
> 
> In the isolated case, the message corresponding to queueFrameAction will
> be send to the pipeline handler before the response to start(), and will
> thus be processed first. In the non-isolated case, the deferred call
> related to queueFrameAction will be queued to the pipeline handler
> thread, but will only be processed once control returns to the event
> loop, which will happen after start() completes.
> 
> I'm OK with this patch as a short term fix, as it fixes a real issue and
> we only run the rkisp1 IPA without isolation at this point.
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> 
> We however need to figure out a correct fix for the IPC case. Paul,
> what's your opinion on this, how should we handle it ?
> 
> > +
> > +        return 0;
> > +}
> > +
> >  /**
> >   * \todo The RkISP1 pipeline currently provides an empty CameraSensorInfo
> >   * if the connected sensor does not provide enough information to properly
> > @@ -121,7 +128,6 @@ int IPARkISP1::configure([[maybe_unused]] const CameraSensorInfo &info,
> >  		<< "Exposure: " << minExposure_ << "-" << maxExposure_
> >  		<< " Gain: " << minGain_ << "-" << maxGain_;
> >  
> > -	setControls(0);
> >  	return 0;
> >  }
> >  

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list