aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2012-08-06 09:36:18 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-08-11 14:50:35 -0400
commit0a3a8a36d9aae7ce08d5bd437ab670a78b327e5d (patch)
tree9c566736140b6c8980a4958a4c398015cb899863
parent77fc286328e6fd9a80ef8ce6963db7fbf4e07a1a (diff)
[media] vivi: fix colorspace setup
Two of the four possible YUV formats got the wrong colorspace. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/video/vivi.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c
index a05494b71b20..463564f0e3c2 100644
--- a/drivers/media/video/vivi.c
+++ b/drivers/media/video/vivi.c
@@ -80,7 +80,8 @@ static const u8 *font8x16;
80struct vivi_fmt { 80struct vivi_fmt {
81 char *name; 81 char *name;
82 u32 fourcc; /* v4l2 format id */ 82 u32 fourcc; /* v4l2 format id */
83 int depth; 83 u8 depth;
84 bool is_yuv;
84}; 85};
85 86
86static struct vivi_fmt formats[] = { 87static struct vivi_fmt formats[] = {
@@ -88,21 +89,25 @@ static struct vivi_fmt formats[] = {
88 .name = "4:2:2, packed, YUYV", 89 .name = "4:2:2, packed, YUYV",
89 .fourcc = V4L2_PIX_FMT_YUYV, 90 .fourcc = V4L2_PIX_FMT_YUYV,
90 .depth = 16, 91 .depth = 16,
92 .is_yuv = true,
91 }, 93 },
92 { 94 {
93 .name = "4:2:2, packed, UYVY", 95 .name = "4:2:2, packed, UYVY",
94 .fourcc = V4L2_PIX_FMT_UYVY, 96 .fourcc = V4L2_PIX_FMT_UYVY,
95 .depth = 16, 97 .depth = 16,
98 .is_yuv = true,
96 }, 99 },
97 { 100 {
98 .name = "4:2:2, packed, YVYU", 101 .name = "4:2:2, packed, YVYU",
99 .fourcc = V4L2_PIX_FMT_YVYU, 102 .fourcc = V4L2_PIX_FMT_YVYU,
100 .depth = 16, 103 .depth = 16,
104 .is_yuv = true,
101 }, 105 },
102 { 106 {
103 .name = "4:2:2, packed, VYUY", 107 .name = "4:2:2, packed, VYUY",
104 .fourcc = V4L2_PIX_FMT_VYUY, 108 .fourcc = V4L2_PIX_FMT_VYUY,
105 .depth = 16, 109 .depth = 16,
110 .is_yuv = true,
106 }, 111 },
107 { 112 {
108 .name = "RGB565 (LE)", 113 .name = "RGB565 (LE)",
@@ -309,15 +314,9 @@ static void precalculate_bars(struct vivi_dev *dev)
309 r = bars[dev->input].bar[k][0]; 314 r = bars[dev->input].bar[k][0];
310 g = bars[dev->input].bar[k][1]; 315 g = bars[dev->input].bar[k][1];
311 b = bars[dev->input].bar[k][2]; 316 b = bars[dev->input].bar[k][2];
312 is_yuv = 0; 317 is_yuv = dev->fmt->is_yuv;
313 318
314 switch (dev->fmt->fourcc) { 319 switch (dev->fmt->fourcc) {
315 case V4L2_PIX_FMT_YUYV:
316 case V4L2_PIX_FMT_UYVY:
317 case V4L2_PIX_FMT_YVYU:
318 case V4L2_PIX_FMT_VYUY:
319 is_yuv = 1;
320 break;
321 case V4L2_PIX_FMT_RGB565: 320 case V4L2_PIX_FMT_RGB565:
322 case V4L2_PIX_FMT_RGB565X: 321 case V4L2_PIX_FMT_RGB565X:
323 r >>= 3; 322 r >>= 3;
@@ -330,6 +329,10 @@ static void precalculate_bars(struct vivi_dev *dev)
330 g >>= 3; 329 g >>= 3;
331 b >>= 3; 330 b >>= 3;
332 break; 331 break;
332 case V4L2_PIX_FMT_YUYV:
333 case V4L2_PIX_FMT_UYVY:
334 case V4L2_PIX_FMT_YVYU:
335 case V4L2_PIX_FMT_VYUY:
333 case V4L2_PIX_FMT_RGB24: 336 case V4L2_PIX_FMT_RGB24:
334 case V4L2_PIX_FMT_BGR24: 337 case V4L2_PIX_FMT_BGR24:
335 case V4L2_PIX_FMT_RGB32: 338 case V4L2_PIX_FMT_RGB32:
@@ -930,8 +933,7 @@ static int vidioc_g_fmt_vid_cap(struct file *file, void *priv,
930 (f->fmt.pix.width * dev->fmt->depth) >> 3; 933 (f->fmt.pix.width * dev->fmt->depth) >> 3;
931 f->fmt.pix.sizeimage = 934 f->fmt.pix.sizeimage =
932 f->fmt.pix.height * f->fmt.pix.bytesperline; 935 f->fmt.pix.height * f->fmt.pix.bytesperline;
933 if (dev->fmt->fourcc == V4L2_PIX_FMT_YUYV || 936 if (dev->fmt->is_yuv)
934 dev->fmt->fourcc == V4L2_PIX_FMT_UYVY)
935 f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; 937 f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
936 else 938 else
937 f->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB; 939 f->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB;
@@ -959,8 +961,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
959 (f->fmt.pix.width * fmt->depth) >> 3; 961 (f->fmt.pix.width * fmt->depth) >> 3;
960 f->fmt.pix.sizeimage = 962 f->fmt.pix.sizeimage =
961 f->fmt.pix.height * f->fmt.pix.bytesperline; 963 f->fmt.pix.height * f->fmt.pix.bytesperline;
962 if (fmt->fourcc == V4L2_PIX_FMT_YUYV || 964 if (fmt->is_yuv)
963 fmt->fourcc == V4L2_PIX_FMT_UYVY)
964 f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M; 965 f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
965 else 966 else
966 f->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB; 967 f->fmt.pix.colorspace = V4L2_COLORSPACE_SRGB;