[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