Commit 8aca230b authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[media] vivid: add RGB444 support

Add support for (A/X)RGB444 formats.
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent b521c375
...@@ -190,6 +190,9 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc) ...@@ -190,6 +190,9 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc)
switch (fourcc) { switch (fourcc) {
case V4L2_PIX_FMT_RGB565: case V4L2_PIX_FMT_RGB565:
case V4L2_PIX_FMT_RGB565X: case V4L2_PIX_FMT_RGB565X:
case V4L2_PIX_FMT_RGB444:
case V4L2_PIX_FMT_XRGB444:
case V4L2_PIX_FMT_ARGB444:
case V4L2_PIX_FMT_RGB555: case V4L2_PIX_FMT_RGB555:
case V4L2_PIX_FMT_XRGB555: case V4L2_PIX_FMT_XRGB555:
case V4L2_PIX_FMT_ARGB555: case V4L2_PIX_FMT_ARGB555:
...@@ -264,6 +267,9 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc) ...@@ -264,6 +267,9 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc)
switch (fourcc) { switch (fourcc) {
case V4L2_PIX_FMT_RGB565: case V4L2_PIX_FMT_RGB565:
case V4L2_PIX_FMT_RGB565X: case V4L2_PIX_FMT_RGB565X:
case V4L2_PIX_FMT_RGB444:
case V4L2_PIX_FMT_XRGB444:
case V4L2_PIX_FMT_ARGB444:
case V4L2_PIX_FMT_RGB555: case V4L2_PIX_FMT_RGB555:
case V4L2_PIX_FMT_XRGB555: case V4L2_PIX_FMT_XRGB555:
case V4L2_PIX_FMT_ARGB555: case V4L2_PIX_FMT_ARGB555:
...@@ -701,6 +707,13 @@ static void precalculate_color(struct tpg_data *tpg, int k) ...@@ -701,6 +707,13 @@ static void precalculate_color(struct tpg_data *tpg, int k)
g >>= 6; g >>= 6;
b >>= 7; b >>= 7;
break; break;
case V4L2_PIX_FMT_RGB444:
case V4L2_PIX_FMT_XRGB444:
case V4L2_PIX_FMT_ARGB444:
r >>= 8;
g >>= 8;
b >>= 8;
break;
case V4L2_PIX_FMT_RGB555: case V4L2_PIX_FMT_RGB555:
case V4L2_PIX_FMT_XRGB555: case V4L2_PIX_FMT_XRGB555:
case V4L2_PIX_FMT_ARGB555: case V4L2_PIX_FMT_ARGB555:
...@@ -855,6 +868,14 @@ static void gen_twopix(struct tpg_data *tpg, ...@@ -855,6 +868,14 @@ static void gen_twopix(struct tpg_data *tpg,
buf[0][offset] = (r_y << 3) | (g_u >> 3); buf[0][offset] = (r_y << 3) | (g_u >> 3);
buf[0][offset + 1] = (g_u << 5) | b_v; buf[0][offset + 1] = (g_u << 5) | b_v;
break; break;
case V4L2_PIX_FMT_RGB444:
case V4L2_PIX_FMT_XRGB444:
alpha = 0;
/* fall through */
case V4L2_PIX_FMT_ARGB444:
buf[0][offset] = (g_u << 4) | b_v;
buf[0][offset + 1] = (alpha & 0xf0) | r_y;
break;
case V4L2_PIX_FMT_RGB555: case V4L2_PIX_FMT_RGB555:
case V4L2_PIX_FMT_XRGB555: case V4L2_PIX_FMT_XRGB555:
alpha = 0; alpha = 0;
......
...@@ -170,6 +170,31 @@ struct vivid_fmt vivid_formats[] = { ...@@ -170,6 +170,31 @@ struct vivid_fmt vivid_formats[] = {
.buffers = 1, .buffers = 1,
.can_do_overlay = true, .can_do_overlay = true,
}, },
{
.name = "RGB444",
.fourcc = V4L2_PIX_FMT_RGB444, /* xxxxrrrr ggggbbbb */
.vdownsampling = { 1 },
.bit_depth = { 16 },
.planes = 1,
.buffers = 1,
},
{
.name = "XRGB444",
.fourcc = V4L2_PIX_FMT_XRGB444, /* xxxxrrrr ggggbbbb */
.vdownsampling = { 1 },
.bit_depth = { 16 },
.planes = 1,
.buffers = 1,
},
{
.name = "ARGB444",
.fourcc = V4L2_PIX_FMT_ARGB444, /* aaaarrrr ggggbbbb */
.vdownsampling = { 1 },
.bit_depth = { 16 },
.planes = 1,
.buffers = 1,
.alpha_mask = 0x00f0,
},
{ {
.name = "RGB555 (LE)", .name = "RGB555 (LE)",
.fourcc = V4L2_PIX_FMT_RGB555, /* gggbbbbb arrrrrgg */ .fourcc = V4L2_PIX_FMT_RGB555, /* gggbbbbb arrrrrgg */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment