This is an automatic generated email to let you know that the following patch 
were queued at the 
http://git.linuxtv.org/cgit.cgi/media_tree.git tree:

Subject: [media] vivid: support new multiplanar YUV formats
Author:  Hans Verkuil <[email protected]>
Date:    Sat Feb 20 06:57:38 2016 -0200

Add support for the new YUV422M, YVU422M, YUV444M and YVU444M formats.
This allows applications to check their support for these formats.

Signed-off-by: Hans Verkuil <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 drivers/media/platform/vivid/vivid-tpg.c        | 32 ++++++++++++++++++++
 drivers/media/platform/vivid/vivid-vid-common.c | 39 +++++++++++++++++++++++--
 2 files changed, 69 insertions(+), 2 deletions(-)

---

http://git.linuxtv.org/cgit.cgi/media_tree.git/commit/?id=00036b307c9f0374ef33ede2ddd745ffbec51cad
diff --git a/drivers/media/platform/vivid/vivid-tpg.c 
b/drivers/media/platform/vivid/vivid-tpg.c
index 14256141f905..da862bb2e5f8 100644
--- a/drivers/media/platform/vivid/vivid-tpg.c
+++ b/drivers/media/platform/vivid/vivid-tpg.c
@@ -251,6 +251,10 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc)
                tpg->planes = 3;
                tpg->is_yuv = true;
                break;
+       case V4L2_PIX_FMT_YUV422M:
+       case V4L2_PIX_FMT_YVU422M:
+               tpg->buffers = 3;
+               /* fall through */
        case V4L2_PIX_FMT_YUV422P:
                tpg->vdownsampling[1] = 1;
                tpg->vdownsampling[2] = 1;
@@ -283,6 +287,16 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc)
                tpg->planes = 2;
                tpg->is_yuv = true;
                break;
+       case V4L2_PIX_FMT_YUV444M:
+       case V4L2_PIX_FMT_YVU444M:
+               tpg->buffers = 3;
+               tpg->planes = 3;
+               tpg->vdownsampling[1] = 1;
+               tpg->vdownsampling[2] = 1;
+               tpg->hdownsampling[1] = 1;
+               tpg->hdownsampling[2] = 1;
+               tpg->is_yuv = true;
+               break;
        case V4L2_PIX_FMT_NV24:
        case V4L2_PIX_FMT_NV42:
                tpg->vdownsampling[1] = 1;
@@ -368,6 +382,10 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc)
                tpg->twopixelsize[0] = 4;
                tpg->twopixelsize[1] = 4;
                break;
+       case V4L2_PIX_FMT_YUV444M:
+       case V4L2_PIX_FMT_YVU444M:
+       case V4L2_PIX_FMT_YUV422M:
+       case V4L2_PIX_FMT_YVU422M:
        case V4L2_PIX_FMT_YUV422P:
        case V4L2_PIX_FMT_YUV420:
        case V4L2_PIX_FMT_YVU420:
@@ -933,6 +951,7 @@ static void gen_twopix(struct tpg_data *tpg,
                buf[0][offset] = r_y;
                buf[0][offset+1] = r_y == 0xff ? r_y : 0;
                break;
+       case V4L2_PIX_FMT_YUV422M:
        case V4L2_PIX_FMT_YUV422P:
        case V4L2_PIX_FMT_YUV420:
        case V4L2_PIX_FMT_YUV420M:
@@ -947,6 +966,7 @@ static void gen_twopix(struct tpg_data *tpg,
                buf[1][0] = g_u;
                buf[2][0] = b_v;
                break;
+       case V4L2_PIX_FMT_YVU422M:
        case V4L2_PIX_FMT_YVU420:
        case V4L2_PIX_FMT_YVU420M:
                buf[0][offset] = r_y;
@@ -988,6 +1008,18 @@ static void gen_twopix(struct tpg_data *tpg,
                buf[1][1] = g_u;
                break;
 
+       case V4L2_PIX_FMT_YUV444M:
+               buf[0][offset] = r_y;
+               buf[1][offset] = g_u;
+               buf[2][offset] = b_v;
+               break;
+
+       case V4L2_PIX_FMT_YVU444M:
+               buf[0][offset] = r_y;
+               buf[1][offset] = b_v;
+               buf[2][offset] = g_u;
+               break;
+
        case V4L2_PIX_FMT_NV24:
                buf[0][offset] = r_y;
                buf[1][2 * offset] = g_u;
diff --git a/drivers/media/platform/vivid/vivid-vid-common.c 
b/drivers/media/platform/vivid/vivid-vid-common.c
index 1678b730dba2..b0d4e3a0acf0 100644
--- a/drivers/media/platform/vivid/vivid-vid-common.c
+++ b/drivers/media/platform/vivid/vivid-vid-common.c
@@ -445,6 +445,9 @@ struct vivid_fmt vivid_formats[] = {
                .planes   = 1,
                .buffers = 1,
        },
+
+       /* Multiplanar formats */
+
        {
                .fourcc   = V4L2_PIX_FMT_NV16M,
                .vdownsampling = { 1, 1 },
@@ -495,10 +498,42 @@ struct vivid_fmt vivid_formats[] = {
                .planes   = 2,
                .buffers = 2,
        },
+       {
+               .fourcc   = V4L2_PIX_FMT_YUV422M,
+               .vdownsampling = { 1, 1, 1 },
+               .bit_depth = { 8, 4, 4 },
+               .is_yuv   = true,
+               .planes   = 3,
+               .buffers = 3,
+       },
+       {
+               .fourcc   = V4L2_PIX_FMT_YVU422M,
+               .vdownsampling = { 1, 1, 1 },
+               .bit_depth = { 8, 4, 4 },
+               .is_yuv   = true,
+               .planes   = 3,
+               .buffers = 3,
+       },
+       {
+               .fourcc   = V4L2_PIX_FMT_YUV444M,
+               .vdownsampling = { 1, 1, 1 },
+               .bit_depth = { 8, 8, 8 },
+               .is_yuv   = true,
+               .planes   = 3,
+               .buffers = 3,
+       },
+       {
+               .fourcc   = V4L2_PIX_FMT_YVU444M,
+               .vdownsampling = { 1, 1, 1 },
+               .bit_depth = { 8, 8, 8 },
+               .is_yuv   = true,
+               .planes   = 3,
+               .buffers = 3,
+       },
 };
 
-/* There are 6 multiplanar formats in the list */
-#define VIVID_MPLANAR_FORMATS 6
+/* There are this many multiplanar formats in the list */
+#define VIVID_MPLANAR_FORMATS 10
 
 const struct vivid_fmt *vivid_get_format(struct vivid_dev *dev, u32 
pixelformat)
 {

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to