[libcamera-devel] [PATCH] libcamera: pipeline: uvcvideo: add warning if no default video device is found
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Jan 28 23:57:52 CET 2019
Hi Kieran,
On Mon, Jan 28, 2019 at 09:21:30AM +0000, Kieran Bingham wrote:
> On 27/01/2019 20:21, Laurent Pinchart wrote:
> > On Sun, Jan 27, 2019 at 05:14:52PM +0100, Niklas Söderlund wrote:
> >> On 2019-01-27 18:04:26 +0200, Laurent Pinchart wrote:
> >>> On Sun, Jan 27, 2019 at 01:52:06AM +0100, Niklas Söderlund wrote:
> >>>> If for any reason a default video device is not found in the media graph
> >>>> the creation of the UVC pipeline silently failed. This is not optimal
> >>>> when debugging problems with the pipeline, add a warning to notify the
> >>>> user of the issue.
> >>>>
> >>>> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> >>>> ---
> >>>> src/libcamera/pipeline/uvcvideo.cpp | 6 ++++++
> >>>> 1 file changed, 6 insertions(+)
> >>>>
> >>>> diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp
> >>>> index c51e8bc1f2c2bf25..4ae179d24709c856 100644
> >>>> --- a/src/libcamera/pipeline/uvcvideo.cpp
> >>>> +++ b/src/libcamera/pipeline/uvcvideo.cpp
> >>>> @@ -8,12 +8,15 @@
> >>>> #include <libcamera/camera.h>
> >>>>
> >>>> #include "device_enumerator.h"
> >>>> +#include "log.h"
> >>>> #include "media_device.h"
> >>>> #include "pipeline_handler.h"
> >>>> #include "v4l2_device.h"
> >>>>
> >>>> namespace libcamera {
> >>>>
> >>>> +LOG_DEFINE_CATEGORY(UVC)
> >>>> +
> >>>> class PipelineHandlerUVC : public PipelineHandler
> >>>> {
> >>>> public:
> >>>> @@ -60,6 +63,9 @@ bool PipelineHandlerUVC::match(DeviceEnumerator *enumerator)
> >>>> }
> >>>>
> >>>> if (!video_ || video_->open()) {
> >>>> + if (!video_)
> >>>> + LOG(UVC, Warning) << "Could not find a default video device";
> >>>
> >>> I'd make it an error, as it's quite fatal. I think we should also log a
> >>> message in the video_->open() failure case, as that's equally fatal (the
> >>> permissions denied case is especially important).
> >>
> >> I will make it an error.
> >>
> >> Regarding logging the failure of video_->open() this already happens in
> >> V4L2Device::open(). I'm open to a discussion of adding logging in each
> >> pipeline handler for the open call, my initial position is however that
> >> it would add little of value as such an error is already logged. What is
> >> the rest of the groups view?
> >
> > I agree with you, it's best to handle as much as possible in the
> > libcamera core to minimize the potential issues in the pipeline
> > handlers.
>
> Yes, failures and errors should be reported as early as possible, and as
> close to the root component as possible.
>
> In this case - at the point of the Open call.
>
> It does however present an possible issue with filtering.
> If an error occurs - and someone sets something like:
>
> LIBCAMERA_LOG_LEVELS=pipeline:Debug
>
> - (and nothing else) Would that then /hide/ the V4L2 errors? (or does
> each category stay at it's default severity level unless explicitly changed)
>
> As long as the V4L2 category remains unchanged, and will still print
> then that's fine.
Categories not explicitly specified keep their default log level, so
it's fine.
> >>>> +
> >>>> media_->release();
> >>>> return false;
> >>>> }
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list