From 76c833fcdf0ac31ff0d96e09d38befd5c499a723 Mon Sep 17 00:00:00 2001 From: Magnus Damm Date: Tue, 14 Oct 2008 12:47:43 -0300 Subject: [PATCH] --- yaml --- r: 115635 b: refs/heads/master c: def52393205cbd22b0b4a59096db2a0dcc72cd0a h: refs/heads/master i: 115633: 5dd11466fbcf29d9b55933ec8fd152b2eb08b449 115631: 91e3458253a3c508f0121ce94e94ac67ae2a0294 v: v3 --- [refs] | 2 +- trunk/drivers/media/video/vivi.c | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 1dd8e2eacfd0..b696c604fff4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: aeadb5d4e590ed0d678ab0bb5fe068160a49e79d +refs/heads/master: def52393205cbd22b0b4a59096db2a0dcc72cd0a diff --git a/trunk/drivers/media/video/vivi.c b/trunk/drivers/media/video/vivi.c index 2fddba6d5b39..7d7e51def461 100644 --- a/trunk/drivers/media/video/vivi.c +++ b/trunk/drivers/media/video/vivi.c @@ -149,6 +149,16 @@ static struct vivi_fmt formats[] = { .fourcc = V4L2_PIX_FMT_RGB565X, /* rrrrrggg gggbbbbb */ .depth = 16, }, + { + .name = "RGB555 (LE)", + .fourcc = V4L2_PIX_FMT_RGB555, /* gggbbbbb arrrrrgg */ + .depth = 16, + }, + { + .name = "RGB555 (BE)", + .fourcc = V4L2_PIX_FMT_RGB555X, /* arrrrrgg gggbbbbb */ + .depth = 16, + }, }; static struct vivi_fmt *get_format(struct v4l2_format *f) @@ -335,6 +345,30 @@ static void gen_twopix(struct vivi_fh *fh, unsigned char *buf, int colorpos) break; } break; + case V4L2_PIX_FMT_RGB555: + switch (color) { + case 0: + case 2: + *p = (g_u << 5) | b_v; + break; + case 1: + case 3: + *p = (r_y << 2) | (g_u >> 3); + break; + } + break; + case V4L2_PIX_FMT_RGB555X: + switch (color) { + case 0: + case 2: + *p = (r_y << 2) | (g_u >> 3); + break; + case 1: + case 3: + *p = (g_u << 5) | b_v; + break; + } + break; } } } @@ -818,6 +852,12 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv, g >>= 2; b >>= 3; break; + case V4L2_PIX_FMT_RGB555: + case V4L2_PIX_FMT_RGB555X: + r >>= 3; + g >>= 3; + b >>= 3; + break; } if (is_yuv) {