[PATCH 2/2] libcamera: simple: Log a missing sensor in a better way

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Jul 1 14:58:23 CEST 2024


On Mon, Jul 01, 2024 at 11:37:37AM +0100, Kieran Bingham wrote:
> Quoting Milan Zamazal (2024-06-27 18:33:05)
> > SimplePipelineHandler::match may be called several times for different
> > pipeline configurations.  Not all of these calls must succeed.  For
> > example, for TI AM69 board with a single camera attached, the following
> > error is reported in the log even when libcamera works fine:
> > 
> >   ERROR SimplePipeline simple.cpp:1558 No sensor found
> > 
> > This is because a sensor is found for /dev/media0 but not for
> > /dev/media1.  The error is harmless in such a case and only confuses
> > users who may think no camera is detected at all.  Let's change the
> > error to info and add the device node to the message to indicate the
> > error is specific to the given media only.  It's up to the callers to
> > report a fatal error condition if libcamera cannot work due to no
> > matching pipeline configuration.
> > 
> > Signed-off-by: Milan Zamazal <mzamazal at redhat.com>
> > ---
> >  src/libcamera/pipeline/simple/simple.cpp | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/src/libcamera/pipeline/simple/simple.cpp b/src/libcamera/pipeline/simple/simple.cpp
> > index eb36578e..be0bb677 100644
> > --- a/src/libcamera/pipeline/simple/simple.cpp
> > +++ b/src/libcamera/pipeline/simple/simple.cpp
> > @@ -1548,9 +1548,10 @@ bool SimplePipelineHandler::match(DeviceEnumerator *enumerator)
> >         /* Locate the sensors. */
> >         std::vector<MediaEntity *> sensors = locateSensors();
> >         if (sensors.empty()) {
> > -               LOG(SimplePipeline, Error) << "No sensor found";
> > +               LOG(SimplePipeline, Info) << "No sensor found for " << media_->deviceNode();

		LOG(SimplePipeline, Info)
			<< "No sensor found for " << media_->deviceNode();

> >                 return false;
> >         }

Add a blank line.

> > +       LOG(SimplePipeline, Debug) << "Sensor found for " << media_->deviceNode();
> 
> These I like.
> 
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

> Is logPrefix defined for simple pipeline handler yet?
> media_->deviceNode() could be part of that perhaps (unless it's too
> long) to make it clear /which/ media device is in use.

We don't use logPrefix in any pipeline handler.

> >  
> >         /*
> >          * Create one camera data instance for each sensor and gather all

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list