diff -Naru fswebcam-20070108.orig/fswebcam.c fswebcam-20070108/fswebcam.c --- fswebcam-20070108.orig/fswebcam.c 2007-01-05 13:41:10.000000000 +0100 +++ fswebcam-20070108/fswebcam.c 2009-08-04 08:03:22.738567535 +0200 @@ -684,6 +684,14 @@ u = ptr[0] - 128; v = ptr[2] - 128; } + else if(src->palette == SRC_PAL_VYUY) + { + if(!z) y = ptr[1] << 8; + else y = ptr[3] << 8; + + v = ptr[0] - 128; + u = ptr[2] - 128; + } else /* SRC_PAL_YUYV */ { if(!z) y = ptr[0] << 8; @@ -1142,6 +1150,7 @@ break; case SRC_PAL_YUYV: case SRC_PAL_UYVY: + case SRC_PAL_VYUY: fswc_add_image_yuyv(&src, abitmap); break; case SRC_PAL_YUV420P: diff -Naru fswebcam-20070108.orig/src.c fswebcam-20070108/src.c --- fswebcam-20070108.orig/src.c 2006-12-10 20:09:15.000000000 +0100 +++ fswebcam-20070108/src.c 2009-08-04 08:49:26.622105212 +0200 @@ -61,6 +61,7 @@ { "RGB565" }, { "RGB555" }, { "GREY" }, + { "VYUY" }, { NULL } }; diff -Naru fswebcam-20070108.orig/src.h fswebcam-20070108/src.h --- fswebcam-20070108.orig/src.h 2006-12-10 20:09:15.000000000 +0100 +++ fswebcam-20070108/src.h 2009-08-04 08:05:28.301124665 +0200 @@ -35,6 +35,7 @@ #define SRC_PAL_RGB565 (12) #define SRC_PAL_RGB555 (13) #define SRC_PAL_GREY (14) +#define SRC_PAL_VYUY (15) #define SRC_LIST_INPUTS (1 << 1) #define SRC_LIST_TUNERS (1 << 2) diff -Naru fswebcam-20070108.orig/src_raw.c fswebcam-20070108/src_raw.c --- fswebcam-20070108.orig/src_raw.c 2006-12-10 20:09:14.000000000 +0100 +++ fswebcam-20070108/src_raw.c 2009-08-04 08:04:17.079447274 +0200 @@ -64,6 +64,7 @@ case SRC_PAL_RGB555: case SRC_PAL_YUYV: case SRC_PAL_UYVY: + case SRC_PAL_VYUY: s->size = src->width * src->height * 2; break; case SRC_PAL_YUV420P: diff -Naru fswebcam-20070108.orig/src_v4l1.c fswebcam-20070108/src_v4l1.c --- fswebcam-20070108.orig/src_v4l1.c 2006-12-10 20:09:15.000000000 +0100 +++ fswebcam-20070108/src_v4l1.c 2009-08-04 08:48:58.613929315 +0200 @@ -63,6 +63,7 @@ { SRC_PAL_RGB565, VIDEO_PALETTE_RGB565, 16 }, { SRC_PAL_RGB555, VIDEO_PALETTE_RGB555, 16 }, { SRC_PAL_GREY, VIDEO_PALETTE_GREY, 8 }, + { SRC_PAL_VYUY, VIDEO_PALETTE_VYUY, 16 }, { 0, 0, 0 } }; diff -Naru fswebcam-20070108.orig/src_v4l2.c fswebcam-20070108/src_v4l2.c --- fswebcam-20070108.orig/src_v4l2.c 2006-12-10 22:03:55.000000000 +0100 +++ fswebcam-20070108/src_v4l2.c 2009-08-04 08:48:48.154832566 +0200 @@ -65,6 +65,7 @@ { SRC_PAL_RGB565, V4L2_PIX_FMT_RGB565 }, { SRC_PAL_RGB555, V4L2_PIX_FMT_RGB555 }, { SRC_PAL_GREY, V4L2_PIX_FMT_GREY }, + { SRC_PAL_VYUY, V4L2_PIX_FMT_VYUY }, { 0, 0 } }; diff -Naru fswebcam-20070108.orig/videodev2.h fswebcam-20070108/videodev2.h --- fswebcam-20070108.orig/videodev2.h 2006-12-10 20:09:14.000000000 +0100 +++ fswebcam-20070108/videodev2.h 2009-08-04 08:06:22.545761411 +0200 @@ -194,6 +194,7 @@ #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y','V','1','2') /* 12 YVU 4:2:0 */ #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y','U','Y','V') /* 16 YUV 4:2:2 */ #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U','Y','V','Y') /* 16 YUV 4:2:2 */ +#define V4L2_PIX_FMT_VYUY v4l2_fourcc('V','Y','U','Y') /* 16 YUV 4:2:2 */ #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4','2','2','P') /* 16 YVU422 planar */ #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4','1','1','P') /* 16 YVU411 planar */ #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y','4','1','P') /* 12 YUV 4:1:1 */ diff -Naru fswebcam-20070108.orig/videodev.h fswebcam-20070108/videodev.h --- fswebcam-20070108.orig/videodev.h 2006-12-10 20:09:15.000000000 +0100 +++ fswebcam-20070108/videodev.h 2009-08-04 08:05:54.815446607 +0200 @@ -95,6 +95,7 @@ #define VIDEO_PALETTE_YUV410P 16 /* YUV 4:1:0 Planar */ #define VIDEO_PALETTE_PLANAR 13 /* start of planar entries */ #define VIDEO_PALETTE_COMPONENT 7 /* start of component entries */ +#define VIDEO_PALETTE_VYUY 15 /* The great thing about standards is ... */ }; struct video_audio