[libcamera-devel] [PATCH] lc-compliance: simple_capture: Handle unsupported roles

Niklas Söderlund niklas.soderlund at ragnatech.se
Wed Apr 14 16:30:46 CEST 2021


Hi Kieran,

On 2021-04-14 15:19:54 +0100, Kieran Bingham wrote:
> Hi Niklas,
> 
> On 14/04/2021 15:10, Niklas Söderlund wrote:
> > It's valid for a camera to return a nullptr if the requested set of
> > roles can not be satisfied. This is not correctly handled by
> > lc-compliance which instead crashes, fix this.
> > 
> > Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> 
> Ohhh I bet we haven't considered this in all the places it's used.

Yea I think it's bordering on a flaw in our organic API growth. It's not 
super clear at a first look what the difference errors signaled between

    !conifg

and

    config->validate() != CameraConfiguration::Valid

are. I think we somehow should consolidate this in the Camera so that 
applications always get a configuration but if the pipeline can't 
satisfy the roles it could maybe also be signaled thru 
config->validate()?

> 
> But indeed this is true.
> 
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> 
> > ---
> >  src/lc-compliance/simple_capture.cpp | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/src/lc-compliance/simple_capture.cpp b/src/lc-compliance/simple_capture.cpp
> > index 811a6220009654be..64e862a08e3a8221 100644
> > --- a/src/lc-compliance/simple_capture.cpp
> > +++ b/src/lc-compliance/simple_capture.cpp
> > @@ -23,6 +23,9 @@ Results::Result SimpleCapture::configure(StreamRole role)
> >  {
> >  	config_ = camera_->generateConfiguration({ role });
> >  
> > +	if (!config_)
> > +		return { Results::Skip, "Role not supported by camera" };
> > +
> >  	if (config_->validate() != CameraConfiguration::Valid) {
> >  		config_.reset();
> >  		return { Results::Fail, "Configuration not valid" };
> > 
> 
> -- 
> Regards
> --
> Kieran

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list