From: Hans Verkuil Date: Thu, 17 Jul 2014 22:25:00 +0000 (+0200) Subject: v4l2-ctl: add support for the new alpha-aware pixelformats. X-Git-Tag: v4l-utils-1.3.90~90 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4419a6c0304633d972b3195d66c8d7dfd4fb8e39;p=platform%2Fupstream%2Fv4l-utils.git v4l2-ctl: add support for the new alpha-aware pixelformats. Signed-off-by: Hans Verkuil --- diff --git a/utils/v4l2-ctl/v4l2-ctl-overlay.cpp b/utils/v4l2-ctl/v4l2-ctl-overlay.cpp index 1b9a5ad..2c10d7e 100644 --- a/utils/v4l2-ctl/v4l2-ctl-overlay.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-overlay.cpp @@ -184,6 +184,8 @@ struct bitfield2fmt { static const struct bitfield2fmt fb_formats[] = { { 10, 5, 5, 5, 0, 5, 15, 1, V4L2_PIX_FMT_RGB555 }, + { 10, 5, 5, 5, 0, 5, 15, 1, V4L2_PIX_FMT_XRGB555 }, + { 10, 5, 5, 5, 0, 5, 15, 1, V4L2_PIX_FMT_ARGB555 }, { 11, 5, 5, 6, 0, 5, 0, 0, V4L2_PIX_FMT_RGB565 }, { 1, 5, 6, 5, 11, 5, 0, 1, V4L2_PIX_FMT_RGB555X }, { 0, 5, 5, 6, 11, 5, 0, 0, V4L2_PIX_FMT_RGB565X }, @@ -191,6 +193,10 @@ static const struct bitfield2fmt fb_formats[] = { { 0, 8, 8, 8, 16, 8, 0, 0, V4L2_PIX_FMT_RGB24 }, { 16, 8, 8, 8, 0, 8, 24, 8, V4L2_PIX_FMT_BGR32 }, { 8, 8, 16, 8, 24, 8, 0, 8, V4L2_PIX_FMT_RGB32 }, + { 16, 8, 8, 8, 0, 8, 24, 8, V4L2_PIX_FMT_XBGR32 }, + { 8, 8, 16, 8, 24, 8, 0, 8, V4L2_PIX_FMT_XRGB32 }, + { 16, 8, 8, 8, 0, 8, 24, 8, V4L2_PIX_FMT_ABGR32 }, + { 8, 8, 16, 8, 24, 8, 0, 8, V4L2_PIX_FMT_ARGB32 }, { } }; diff --git a/utils/v4l2-ctl/vivi-tpg.c b/utils/v4l2-ctl/vivi-tpg.c index 5ff153a..fbf0eb9 100644 --- a/utils/v4l2-ctl/vivi-tpg.c +++ b/utils/v4l2-ctl/vivi-tpg.c @@ -170,11 +170,17 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc) case V4L2_PIX_FMT_RGB565: case V4L2_PIX_FMT_RGB565X: case V4L2_PIX_FMT_RGB555: + case V4L2_PIX_FMT_XRGB555: + case V4L2_PIX_FMT_ARGB555: case V4L2_PIX_FMT_RGB555X: case V4L2_PIX_FMT_RGB24: case V4L2_PIX_FMT_BGR24: case V4L2_PIX_FMT_RGB32: case V4L2_PIX_FMT_BGR32: + case V4L2_PIX_FMT_XRGB32: + case V4L2_PIX_FMT_XBGR32: + case V4L2_PIX_FMT_ARGB32: + case V4L2_PIX_FMT_ABGR32: tpg->is_yuv = 0; break; case V4L2_PIX_FMT_NV16M: @@ -195,6 +201,8 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc) case V4L2_PIX_FMT_RGB565: case V4L2_PIX_FMT_RGB565X: case V4L2_PIX_FMT_RGB555: + case V4L2_PIX_FMT_XRGB555: + case V4L2_PIX_FMT_ARGB555: case V4L2_PIX_FMT_RGB555X: case V4L2_PIX_FMT_YUYV: case V4L2_PIX_FMT_UYVY: @@ -208,6 +216,10 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc) break; case V4L2_PIX_FMT_RGB32: case V4L2_PIX_FMT_BGR32: + case V4L2_PIX_FMT_XRGB32: + case V4L2_PIX_FMT_XBGR32: + case V4L2_PIX_FMT_ARGB32: + case V4L2_PIX_FMT_ABGR32: tpg->twopixelsize[0] = 2 * 4; break; case V4L2_PIX_FMT_NV16M: @@ -604,10 +616,15 @@ static void gen_twopix(struct tpg_data *tpg, buf[0][offset] = (r_y << 3) | (g_u >> 3); buf[0][offset + 1] = (g_u << 5) | b_v; break; - case V4L2_PIX_FMT_RGB555: + case V4L2_PIX_FMT_ARGB555: buf[0][offset] = (g_u << 5) | b_v; buf[0][offset + 1] = (alpha & 0x80) | (r_y << 2) | (g_u >> 3); break; + case V4L2_PIX_FMT_RGB555: + case V4L2_PIX_FMT_XRGB555: + buf[0][offset] = (g_u << 5) | b_v; + buf[0][offset + 1] = (r_y << 2) | (g_u >> 3); + break; case V4L2_PIX_FMT_RGB555X: buf[0][offset] = (alpha & 0x80) | (r_y << 2) | (g_u >> 3); buf[0][offset + 1] = (g_u << 5) | b_v; @@ -622,18 +639,32 @@ static void gen_twopix(struct tpg_data *tpg, buf[0][offset + 1] = g_u; buf[0][offset + 2] = r_y; break; - case V4L2_PIX_FMT_RGB32: + case V4L2_PIX_FMT_ARGB32: buf[0][offset] = alpha; buf[0][offset + 1] = r_y; buf[0][offset + 2] = g_u; buf[0][offset + 3] = b_v; break; - case V4L2_PIX_FMT_BGR32: + case V4L2_PIX_FMT_RGB32: + case V4L2_PIX_FMT_XRGB32: + buf[0][offset] = 0; + buf[0][offset + 1] = r_y; + buf[0][offset + 2] = g_u; + buf[0][offset + 3] = b_v; + break; + case V4L2_PIX_FMT_ABGR32: buf[0][offset] = b_v; buf[0][offset + 1] = g_u; buf[0][offset + 2] = r_y; buf[0][offset + 3] = alpha; break; + case V4L2_PIX_FMT_BGR32: + case V4L2_PIX_FMT_XBGR32: + buf[0][offset] = b_v; + buf[0][offset + 1] = g_u; + buf[0][offset + 2] = r_y; + buf[0][offset + 3] = 0; + break; } }