Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b0ce23f0 authored by Ricardo Ribalda Delgado's avatar Ricardo Ribalda Delgado Committed by Mauro Carvalho Chehab
Browse files

[media] media/vivid: Add support for Y16_BE format



Support for V4L2_PIX_FMT_Y16_BE, a 16 bit big endian greyscale format.

Signed-off-by: default avatarRicardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 2e5e435f
Loading
Loading
Loading
Loading
+8 −1
Original line number Original line Diff line number Diff line
@@ -221,6 +221,7 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc)
	case V4L2_PIX_FMT_ABGR32:
	case V4L2_PIX_FMT_ABGR32:
	case V4L2_PIX_FMT_GREY:
	case V4L2_PIX_FMT_GREY:
	case V4L2_PIX_FMT_Y16:
	case V4L2_PIX_FMT_Y16:
	case V4L2_PIX_FMT_Y16_BE:
		tpg->is_yuv = false;
		tpg->is_yuv = false;
		break;
		break;
	case V4L2_PIX_FMT_YUV444:
	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_YUV555:
	case V4L2_PIX_FMT_YUV565:
	case V4L2_PIX_FMT_YUV565:
	case V4L2_PIX_FMT_Y16:
	case V4L2_PIX_FMT_Y16:
	case V4L2_PIX_FMT_Y16_BE:
		tpg->twopixelsize[0] = 2 * 2;
		tpg->twopixelsize[0] = 2 * 2;
		break;
		break;
	case V4L2_PIX_FMT_RGB24:
	case V4L2_PIX_FMT_RGB24:
@@ -713,7 +715,8 @@ static void precalculate_color(struct tpg_data *tpg, int k)
		b <<= 4;
		b <<= 4;
	}
	}
	if (tpg->qual == TPG_QUAL_GRAY || tpg->fourcc == V4L2_PIX_FMT_GREY ||
	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 */
		/* Rec. 709 Luma function */
		/* (0.2126, 0.7152, 0.0722) * (255 * 256) */
		/* (0.2126, 0.7152, 0.0722) * (255 * 256) */
		r = g = b = (13879 * r + 46688 * g + 4713 * b) >> 16;
		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] = 0;
		buf[0][offset+1] = r_y;
		buf[0][offset+1] = r_y;
		break;
		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_YUV422P:
	case V4L2_PIX_FMT_YUV420:
	case V4L2_PIX_FMT_YUV420:
	case V4L2_PIX_FMT_YUV420M:
	case V4L2_PIX_FMT_YUV420M:
+8 −0
Original line number Original line Diff line number Diff line
@@ -196,6 +196,14 @@ struct vivid_fmt vivid_formats[] = {
		.planes   = 1,
		.planes   = 1,
		.buffers = 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 */
		.fourcc   = V4L2_PIX_FMT_RGB332, /* rrrgggbb */
		.vdownsampling = { 1 },
		.vdownsampling = { 1 },