[PATCH] libcamera: formats: Silence warning when creating a PixelFormatInfo from a null format

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Feb 12 12:50:19 CET 2025


Quoting Stefan Klug (2025-02-12 11:29:42)
> Calling PixelFormat().toString() correctly returns "0x0-<INVALID>" but it
> also produces the following, possibly confusing, warning:
> 
> WARN Formats formats.cpp:1006 Unsupported pixel format 0x00000000
> 
> Silence the warning in PixelFormatInfo::info() in case the format is
> invalid.
> 
> While at it, remove code duplication by using
> PixelFormatInfo::info(const PixelFormat &format) to implement
> PixelFormatInfo::info(const V4L2PixelFormat &format).

Just to check the obvious - if there is a V4L2 format on a device that
we don't have mapped/supported in libcamera, will it still print 

WARN Formats formats.cpp:1006 Unsupported pixel format 0x23456789 ?

As long as that's the case, 


Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> 
> Signed-off-by: Stefan Klug <stefan.klug at ideasonboard.com>
> ---
> 
> Hi all,
> 
> The attached patch has one noteworthy side effect: If
> info(V4L2PixelFormat &format) is called with a valid but unsupported (by
> libcamera) format, we now get the same warning as in the
> info(PixelFormat &format) case. I believe that is sensible but maybe the
> warning was left off in the V4L2 case on purpose.
> 
> Best regards,
> Stefan
> 
>  src/libcamera/formats.cpp | 12 ++++--------
>  1 file changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
> index bfcdfc08960d..df7413f58ba8 100644
> --- a/src/libcamera/formats.cpp
> +++ b/src/libcamera/formats.cpp
> @@ -1001,6 +1001,9 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
>   */
>  const PixelFormatInfo &PixelFormatInfo::info(const PixelFormat &format)
>  {
> +       if (!format.isValid())
> +               return pixelFormatInfoInvalid;
> +
>         const auto iter = pixelFormatInfo.find(format);
>         if (iter == pixelFormatInfo.end()) {
>                 LOG(Formats, Warning)

Does the !isValid() check mean it's impossible to get here now? Or is
this check still necessary?


> @@ -1021,14 +1024,7 @@ const PixelFormatInfo &PixelFormatInfo::info(const PixelFormat &format)
>  const PixelFormatInfo &PixelFormatInfo::info(const V4L2PixelFormat &format)
>  {
>         PixelFormat pixelFormat = format.toPixelFormat(false);
> -       if (!pixelFormat.isValid())
> -               return pixelFormatInfoInvalid;
> -
> -       const auto iter = pixelFormatInfo.find(pixelFormat);
> -       if (iter == pixelFormatInfo.end())
> -               return pixelFormatInfoInvalid;
> -
> -       return iter->second;
> +       return info(pixelFormat);
> 
>  }
>  
>  /**
> -- 
> 2.43.0
>


More information about the libcamera-devel mailing list