[libcamera-devel] [PATCH 3/3] pipeline: uvcvideo: Fail match() if the camera has no supported format
Kieran Bingham
kieran.bingham at ideasonboard.com
Tue Sep 6 11:35:51 CEST 2022
Quoting Laurent Pinchart via libcamera-devel (2022-09-03 19:10:37)
> A UVC device could expose only formats that are not supported by
> libcamera. The pipeline handler doesn't currently consider this as an
> error, and happily creates a camera. The camera won't be usable, and
> worse, generateConfiguration() and validate() will crash as those
> functions assume that at least one format is supported.
>
> Fix this by failing match() if none of the formats exposed by the camera
> are supported. Log an error message in that case to notify the user.
This seems quite reasonble to me. I suspect it's worth waiting for some
tested by tags from Christian before merging, but with that:
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> Bug: https://bugs.libcamera.org/show_bug.cgi?id=145
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> index be0fbaea508a..a28195450634 100644
> --- a/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> +++ b/src/libcamera/pipeline/uvcvideo/uvcvideo.cpp
> @@ -457,6 +457,13 @@ int UVCCameraData::init(MediaDevice *media)
> }
> }
>
> + if (formats_.empty()) {
> + LOG(UVC, Error)
> + << "Camera " << id_ << " (" << media->model()
> + << ") doesn't expose any supported format";
> + return -EINVAL;
> + }
> +
> /* Populate the camera properties. */
> properties_.set(properties::Model, utils::toAscii(media->model()));
>
> --
> Regards,
>
> Laurent Pinchart
>
More information about the libcamera-devel
mailing list