Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: Add NV15_4L4 pixel format

NV15_4L4 is the 10-bits per component 4x4 tiled format.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>

authored by

Benjamin Gaignard and committed by
Mauro Carvalho Chehab
fc91af07 86c256be

+20
+16
Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
··· 137 137 - Cb, Cr 138 138 - No 139 139 - Linear 140 + * - V4L2_PIX_FMT_NV15_4L4 141 + - 'VT15' 142 + - 15 143 + - 4:2:0 144 + - Cb, Cr 145 + - Yes 146 + - 4x4 tiles 140 147 * - V4L2_PIX_FMT_NV16 141 148 - 'NV16' 142 149 - 8 ··· 385 378 386 379 Example V4L2_PIX_FMT_NV12MT memory layout of tiles 387 380 381 + .. _V4L2-PIX-FMT-NV15-4L4: 382 + 383 + Tiled NV15 384 + ---------- 385 + 386 + Semi-planar 10-bit YUV 4:2:0 formats, using 4x4 tiling. 387 + All components are packed without any padding between each other. 388 + As a side-effect, each group of 4 components are stored over 5 bytes 389 + (YYYY or UVUV = 4 * 10 bits = 40 bits = 5 bytes). 388 390 389 391 .. _V4L2-PIX-FMT-NV16: 390 392 .. _V4L2-PIX-FMT-NV61:
+2
drivers/media/v4l2-core/v4l2-common.c
··· 283 283 284 284 /* Tiled YUV formats */ 285 285 { .format = V4L2_PIX_FMT_NV12_4L4, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .bpp_div = { 1, 1, 1, 1 }, .hdiv = 2, .vdiv = 2 }, 286 + { .format = V4L2_PIX_FMT_NV15_4L4, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 5, 10, 0, 0 }, .bpp_div = { 4, 4, 1, 1 }, .hdiv = 2, .vdiv = 2, 287 + .block_w = { 4, 2, 0, 0 }, .block_h = { 1, 1, 0, 0 }}, 286 288 { .format = V4L2_PIX_FMT_P010_4L4, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 2, 4, 0, 0 }, .bpp_div = { 1, 1, 1, 1 }, .hdiv = 2, .vdiv = 2 }, 287 289 288 290 /* YUV planar formats, non contiguous variant */
+1
drivers/media/v4l2-core/v4l2-ioctl.c
··· 1356 1356 case V4L2_PIX_FMT_NV12_4L4: descr = "Y/UV 4:2:0 (4x4 Linear)"; break; 1357 1357 case V4L2_PIX_FMT_NV12_16L16: descr = "Y/UV 4:2:0 (16x16 Linear)"; break; 1358 1358 case V4L2_PIX_FMT_NV12_32L32: descr = "Y/UV 4:2:0 (32x32 Linear)"; break; 1359 + case V4L2_PIX_FMT_NV15_4L4: descr = "10-bit Y/UV 4:2:0 (4x4 Linear)"; break; 1359 1360 case V4L2_PIX_FMT_P010_4L4: descr = "10-bit Y/UV 4:2:0 (4x4 Linear)"; break; 1360 1361 case V4L2_PIX_FMT_NV12M: descr = "Y/UV 4:2:0 (N-C)"; break; 1361 1362 case V4L2_PIX_FMT_NV21M: descr = "Y/VU 4:2:0 (N-C)"; break;
+1
include/uapi/linux/videodev2.h
··· 672 672 #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 4x4 tiles */ 673 673 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */ 674 674 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 32x32 tiles */ 675 + #define V4L2_PIX_FMT_NV15_4L4 v4l2_fourcc('V', 'T', '1', '5') /* 15 Y/CbCr 4:2:0 10-bit 4x4 tiles */ 675 676 #define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0') /* 12 Y/CbCr 4:2:0 10-bit 4x4 macroblocks */ 676 677 #define V4L2_PIX_FMT_NV12_8L128 v4l2_fourcc('A', 'T', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */ 677 678 #define V4L2_PIX_FMT_NV12_10BE_8L128 v4l2_fourcc_be('A', 'X', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */