[media] media/vivid: Add support for Y16_BE format
authorRicardo Ribalda <ricardo.ribalda@gmail.com>
Mon, 4 May 2015 08:07:31 +0000 (05:07 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Sat, 30 May 2015 14:34:29 +0000 (11:34 -0300)
Support for V4L2_PIX_FMT_Y16_BE, a 16 bit big endian greyscale format.

Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/vivid/vivid-tpg.c
drivers/media/platform/vivid/vivid-vid-common.c

index af4bc97800992b9dfa87bb9ab75c12edc22b8673..8cac0bdefd9aef29c9e75ac2a056885c64c12cb0 100644 (file)
@@ -221,6 +221,7 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc)
        case V4L2_PIX_FMT_ABGR32:
        case V4L2_PIX_FMT_GREY:
        case V4L2_PIX_FMT_Y16:
+       case V4L2_PIX_FMT_Y16_BE:
                tpg->is_yuv = false;
                break;
        case V4L2_PIX_FMT_YUV444:
@@ -316,6 +317,7 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc)
        case V4L2_PIX_FMT_YUV555:
        case V4L2_PIX_FMT_YUV565:
        case V4L2_PIX_FMT_Y16:
+       case V4L2_PIX_FMT_Y16_BE:
                tpg->twopixelsize[0] = 2 * 2;
                break;
        case V4L2_PIX_FMT_RGB24:
@@ -713,7 +715,8 @@ static void precalculate_color(struct tpg_data *tpg, int k)
                b <<= 4;
        }
        if (tpg->qual == TPG_QUAL_GRAY || tpg->fourcc == V4L2_PIX_FMT_GREY ||
-           tpg->fourcc == V4L2_PIX_FMT_Y16) {
+           tpg->fourcc == V4L2_PIX_FMT_Y16 ||
+           tpg->fourcc == V4L2_PIX_FMT_Y16_BE) {
                /* Rec. 709 Luma function */
                /* (0.2126, 0.7152, 0.0722) * (255 * 256) */
                r = g = b = (13879 * r + 46688 * g + 4713 * b) >> 16;
@@ -900,6 +903,10 @@ static void gen_twopix(struct tpg_data *tpg,
                buf[0][offset] = 0;
                buf[0][offset+1] = r_y;
                break;
+       case V4L2_PIX_FMT_Y16_BE:
+               buf[0][offset] = r_y;
+               buf[0][offset+1] = 0;
+               break;
        case V4L2_PIX_FMT_YUV422P:
        case V4L2_PIX_FMT_YUV420:
        case V4L2_PIX_FMT_YUV420M:
index 96ccd3c38dd21a7fd96c8c3157eebb34647b1d9d..45f10a7f9b46c36ae7f4c11243a67b9dadab2a64 100644 (file)
@@ -196,6 +196,14 @@ struct vivid_fmt vivid_formats[] = {
                .planes   = 1,
                .buffers = 1,
        },
+       {
+               .fourcc   = V4L2_PIX_FMT_Y16_BE,
+               .vdownsampling = { 1 },
+               .bit_depth = { 16 },
+               .is_yuv   = true,
+               .planes   = 1,
+               .buffers = 1,
+       },
        {
                .fourcc   = V4L2_PIX_FMT_RGB332, /* rrrgggbb */
                .vdownsampling = { 1 },