libcamera: formats: Fix warning for unknown V4L2 pixfmt

Commit f25ad4a2b1 ("libcamera: formats: Reimplement V4L2
PixelFormatInfo::info()") changed the PixelFormatInfo::info(const
V4L2PixelFormat &format) function overload to:

	return info(format.toPixelFormat());

As part of the series that contains such commit, the PixelFormatInfo for the
pixel format applied to a video device is now retrieved at
V4L2VideoDevice::open() time. Some video devices register formats not
available to applications, for example metadata formats or, in the case
of ISP devices, formats to describe the ISP statistics and parameters.

This causes the

	format.toPixelFormat()

call to output a WARN message, which spams the log and unnecessarily alerts
the users.

Augment V4L2PixelFormat::toPixelFormat() with an optional argument to
suppress warnings in the case a V4L2 pixel format is not known, to
restore the behaviour preceding commit f25ad4a2b1 and returns an
invalid PixelFormatInfo without outputting any unnecessary warning
message.

Fixes: f25ad4a2b1 ("libcamera: formats: Reimplement V4L2 PixelFormatInfo::info()")
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
This commit is contained in:
Jacopo Mondi
2022-08-08 14:36:19 +02:00
parent e1ca213609
commit 434edb7b44
3 changed files with 22 additions and 6 deletions
@@ -45,7 +45,7 @@ public:
std::string toString() const;
const char *description() const;
PixelFormat toPixelFormat() const;
PixelFormat toPixelFormat(bool warn = true) const;
static const std::vector<V4L2PixelFormat> &
fromPixelFormat(const PixelFormat &pixelFormat);