qv4l2: fix endianness issues when mapping a V4L2 pixel format to a Qt format.
authorHans Verkuil <hans.verkuil@cisco.com>
Wed, 2 May 2012 21:09:53 +0000 (23:09 +0200)
committerHans Verkuil <hans.verkuil@cisco.com>
Wed, 2 May 2012 21:09:53 +0000 (23:09 +0200)
Tested on a little and a big endian machine.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
utils/qv4l2/qv4l2.cpp

index 90279f9..1272a0d 100644 (file)
@@ -446,11 +446,18 @@ void ApplicationWindow::capStart(bool start)
                __u32 v4l2_pixfmt;
                QImage::Format qt_pixfmt;
        } supported_fmts[] = {
-               { V4L2_PIX_FMT_RGB32, QImage::Format_ARGB32 },
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+               { V4L2_PIX_FMT_RGB32, QImage::Format_RGB32 },
                { V4L2_PIX_FMT_RGB24, QImage::Format_RGB888 },
                { V4L2_PIX_FMT_RGB565X, QImage::Format_RGB16 },
                { V4L2_PIX_FMT_RGB555X, QImage::Format_RGB555 },
+#else
+               { V4L2_PIX_FMT_BGR32, QImage::Format_RGB32 },
+               { V4L2_PIX_FMT_RGB24, QImage::Format_RGB888 },
+               { V4L2_PIX_FMT_RGB565, QImage::Format_RGB16 },
+               { V4L2_PIX_FMT_RGB555, QImage::Format_RGB555 },
                { V4L2_PIX_FMT_RGB444, QImage::Format_RGB444 },
+#endif
                { 0, QImage::Format_Invalid }
        };
        QImage::Format dstFmt = QImage::Format_RGB888;