struct vivi_fmt {
        char  *name;
        u32   fourcc;          /* v4l2 format id */
-       int   depth;
+       u8    depth;
+       bool  is_yuv;
 };
 
 static struct vivi_fmt formats[] = {
                .name     = "4:2:2, packed, YUYV",
                .fourcc   = V4L2_PIX_FMT_YUYV,
                .depth    = 16,
+               .is_yuv   = true,
        },
        {
                .name     = "4:2:2, packed, UYVY",
                .fourcc   = V4L2_PIX_FMT_UYVY,
                .depth    = 16,
+               .is_yuv   = true,
        },
        {
                .name     = "4:2:2, packed, YVYU",
                .fourcc   = V4L2_PIX_FMT_YVYU,
                .depth    = 16,
+               .is_yuv   = true,
        },
        {
                .name     = "4:2:2, packed, VYUY",
                .fourcc   = V4L2_PIX_FMT_VYUY,
                .depth    = 16,
+               .is_yuv   = true,
        },
        {
                .name     = "RGB565 (LE)",
                r = bars[dev->input].bar[k][0];
                g = bars[dev->input].bar[k][1];
                b = bars[dev->input].bar[k][2];
-               is_yuv = 0;
+               is_yuv = dev->fmt->is_yuv;
 
                switch (dev->fmt->fourcc) {
-               case V4L2_PIX_FMT_YUYV:
-               case V4L2_PIX_FMT_UYVY:
-               case V4L2_PIX_FMT_YVYU:
-               case V4L2_PIX_FMT_VYUY:
-                       is_yuv = 1;
-                       break;
                case V4L2_PIX_FMT_RGB565:
                case V4L2_PIX_FMT_RGB565X:
                        r >>= 3;
                        g >>= 3;
                        b >>= 3;
                        break;
+               case V4L2_PIX_FMT_YUYV:
+               case V4L2_PIX_FMT_UYVY:
+               case V4L2_PIX_FMT_YVYU:
+               case V4L2_PIX_FMT_VYUY:
                case V4L2_PIX_FMT_RGB24:
                case V4L2_PIX_FMT_BGR24:
                case V4L2_PIX_FMT_RGB32:
                (f->fmt.pix.width * dev->fmt->depth) >> 3;
        f->fmt.pix.sizeimage =
                f->fmt.pix.height * f->fmt.pix.bytesperline;
-       if (dev->fmt->fourcc == V4L2_PIX_FMT_YUYV ||
-           dev->fmt->fourcc == V4L2_PIX_FMT_UYVY)
+       if (dev->fmt->is_yuv)
                f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
        else
                f->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB;
                (f->fmt.pix.width * fmt->depth) >> 3;
        f->fmt.pix.sizeimage =
                f->fmt.pix.height * f->fmt.pix.bytesperline;
-       if (fmt->fourcc == V4L2_PIX_FMT_YUYV ||
-           fmt->fourcc == V4L2_PIX_FMT_UYVY)
+       if (fmt->is_yuv)
                f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
        else
                f->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB;