- uint8_t *img = (uint8_t *) v4lsrc.img;
- uint32_t i = v4lsrc.width * v4lsrc.height;
-
- if (v4lsrc.length << 2 < i) return;
-
- QImage qimg(v4lsrc.width, v4lsrc.height, QImage::Format_RGB32);
- //Format_ARGB32_Premultiplied
- //convert from uyvy422 to rgba
- CaptureHandler::yuv2rgb((uchar *)img, (uchar *)qimg.bits(), v4lsrc.width, v4lsrc.height);
+ QImage qimg(v4lsrc.width, v4lsrc.height, QImage::Format_RGB888);
+ switch (v4lsrc.palette) {
+ case SRC_PAL_PNG:
+ qimg = add_image_png(&v4lsrc);
+ break;
+ case SRC_PAL_JPEG:
+ case SRC_PAL_MJPEG:
+ qimg = add_image_jpeg(&v4lsrc);
+ break;
+ case SRC_PAL_S561:
+ fswc_add_image_s561(qimg.bits(), (uchar *)v4lsrc.img, v4lsrc.length, v4lsrc.width, v4lsrc.height, v4lsrc.palette);
+ break;
+ case SRC_PAL_RGB32:
+ fswc_add_image_rgb32(&v4lsrc, qimg.bits());
+ break;
+ case SRC_PAL_BGR32:
+ fswc_add_image_bgr32(&v4lsrc, qimg.bits());
+ break;
+ case SRC_PAL_RGB24:
+ fswc_add_image_rgb24(&v4lsrc, qimg.bits());
+ break;
+ case SRC_PAL_BGR24:
+ fswc_add_image_bgr24(&v4lsrc, qimg.bits());
+ break;
+ case SRC_PAL_BAYER:
+ case SRC_PAL_SGBRG8:
+ case SRC_PAL_SGRBG8:
+ fswc_add_image_bayer(qimg.bits(), (uchar *)v4lsrc.img, v4lsrc.length, v4lsrc.width, v4lsrc.height, v4lsrc.palette);
+ break;
+ case SRC_PAL_YUYV:
+ case SRC_PAL_UYVY:
+ fswc_add_image_yuyv(&v4lsrc, (avgbmp_t *)qimg.bits());
+ break;
+ case SRC_PAL_YUV420P:
+ fswc_add_image_yuv420p(&v4lsrc, qimg.bits());
+ break;
+ case SRC_PAL_NV12MB:
+ fswc_add_image_nv12mb(&v4lsrc, qimg.bits());
+ break;
+ case SRC_PAL_RGB565:
+ fswc_add_image_rgb565(&v4lsrc, qimg.bits());
+ break;
+ case SRC_PAL_RGB555:
+ fswc_add_image_rgb555(&v4lsrc, qimg.bits());
+ break;
+ case SRC_PAL_Y16:
+ fswc_add_image_y16(&v4lsrc, qimg.bits());
+ break;
+ case SRC_PAL_GREY:
+ fswc_add_image_grey(&v4lsrc, qimg.bits());
+ break;
+ }
+ if (m_analyseFrame) {
+ emit gotFrame(qimg);
+ }