[libcamera-devel] [PATCH] qcam: viewfinder: Use correct DRM/QImage mappings

Laurent Pinchart laurent.pinchart at ideasonboard.com
Wed May 27 00:02:15 CEST 2020


Hi Kieran,

Thank you for the patch.

On Tue, May 26, 2020 at 05:06:44PM +0100, Kieran Bingham wrote:
> When the native pixel formats supported by QT were introduced, the

s/QT/Qt/

> RGB/BGR formats were inverted.

The Qt documentation isn't very clear, so let's make sure.

~/src/test/qt $ cat qimage.cpp
#include <QDebug>
#include <QImage>

int main()
{
        QImage image{ 640, 480, QImage::Format_RGB888 };
        image.fill(Qt::red);
        uchar *bits = image.bits();
        qInfo() << "(" << bits[0] << "," << bits[1] << "," << bits[2] << ")";
        return 0;
}

~/src/test/qt $ ./qimage
( 255 , 0 , 0 )

That's indeed DRM_FORMAT_BGR888, at least on little-endian machines.

> Swap the BGR888 and RGB888 mappings accordingly.
> 
> Fixes: f890a57b7a06 ("qcam: viewfinder: Add support for more native formats")
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

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

> ---
>  src/qcam/viewfinder.cpp | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/src/qcam/viewfinder.cpp b/src/qcam/viewfinder.cpp
> index 0d68f62ee6d7..7a308f53f576 100644
> --- a/src/qcam/viewfinder.cpp
> +++ b/src/qcam/viewfinder.cpp
> @@ -26,9 +26,9 @@ static const QMap<libcamera::PixelFormat, QImage::Format> nativeFormats
>  #endif
>  	{ libcamera::PixelFormat{ DRM_FORMAT_ARGB8888 }, QImage::Format_RGB32 },
>  #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
> -	{ libcamera::PixelFormat{ DRM_FORMAT_BGR888 }, QImage::Format_BGR888 },
> +	{ libcamera::PixelFormat{ DRM_FORMAT_RGB888 }, QImage::Format_BGR888 },
>  #endif
> -	{ libcamera::PixelFormat{ DRM_FORMAT_RGB888 }, QImage::Format_RGB888 },
> +	{ libcamera::PixelFormat{ DRM_FORMAT_BGR888 }, QImage::Format_RGB888 },
>  };
>  
>  ViewFinder::ViewFinder(QWidget *parent)

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list