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

media: Add P010 video format

P010 is a YUV format with 10-bits per component with interleaved UV.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Acked-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
5374d8fb a23196c7

+57
+54
Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
··· 109 109 - Cb, Cr 110 110 - No 111 111 - 16x16 tiles 112 + * - V4L2_PIX_FMT_P010 113 + - 'P010' 114 + - 10 115 + - 4:2:0 116 + - Cb, Cr 117 + - Yes 118 + - Linear 112 119 * - V4L2_PIX_FMT_NV16 113 120 - 'NV16' 114 121 - 8 ··· 178 171 .. _V4L2-PIX-FMT-NV21: 179 172 .. _V4L2-PIX-FMT-NV12M: 180 173 .. _V4L2-PIX-FMT-NV21M: 174 + .. _V4L2-PIX-FMT-P010: 181 175 182 176 NV12, NV21, NV12M and NV21M 183 177 --------------------------- ··· 527 519 - Cb\ :sub:`33` 528 520 - Cr\ :sub:`33` 529 521 522 + .. _V4L2_PIX_FMT_P010: 523 + 524 + P010 525 + ---- 526 + 527 + Like NV12 with 10 bits per component, expanded to 16 bits. 528 + Data in the 10 high bits, zeros in the 6 low bits, arranged in little endian order. 529 + 530 + .. flat-table:: Sample 4x4 P010 Image 531 + :header-rows: 0 532 + :stub-columns: 0 533 + 534 + * - start + 0: 535 + - Y'\ :sub:`00` 536 + - Y'\ :sub:`01` 537 + - Y'\ :sub:`02` 538 + - Y'\ :sub:`03` 539 + * - start + 8: 540 + - Y'\ :sub:`10` 541 + - Y'\ :sub:`11` 542 + - Y'\ :sub:`12` 543 + - Y'\ :sub:`13` 544 + * - start + 16: 545 + - Y'\ :sub:`20` 546 + - Y'\ :sub:`21` 547 + - Y'\ :sub:`22` 548 + - Y'\ :sub:`23` 549 + * - start + 24: 550 + - Y'\ :sub:`30` 551 + - Y'\ :sub:`31` 552 + - Y'\ :sub:`32` 553 + - Y'\ :sub:`33` 554 + * - start + 32: 555 + - Cb\ :sub:`00` 556 + - Cr\ :sub:`00` 557 + - Cb\ :sub:`01` 558 + - Cr\ :sub:`01` 559 + * - start + 40: 560 + - Cb\ :sub:`10` 561 + - Cr\ :sub:`10` 562 + - Cb\ :sub:`11` 563 + - Cr\ :sub:`11` 564 + 565 + .. raw:: latex 566 + 567 + \endgroup 530 568 531 569 Fully Planar YUV Formats 532 570 ========================
+1
drivers/media/v4l2-core/v4l2-common.c
··· 266 266 { .format = V4L2_PIX_FMT_NV61, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 2, .vdiv = 1 }, 267 267 { .format = V4L2_PIX_FMT_NV24, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 1, .vdiv = 1 }, 268 268 { .format = V4L2_PIX_FMT_NV42, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 1, .vdiv = 1 }, 269 + { .format = V4L2_PIX_FMT_P010, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 2, 2, 0, 0 }, .hdiv = 2, .vdiv = 1 }, 269 270 270 271 { .format = V4L2_PIX_FMT_YUV410, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 3, .bpp = { 1, 1, 1, 0 }, .hdiv = 4, .vdiv = 4 }, 271 272 { .format = V4L2_PIX_FMT_YVU410, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 3, .bpp = { 1, 1, 1, 0 }, .hdiv = 4, .vdiv = 4 },
+1
drivers/media/v4l2-core/v4l2-ioctl.c
··· 1306 1306 case V4L2_PIX_FMT_NV61: descr = "Y/CrCb 4:2:2"; break; 1307 1307 case V4L2_PIX_FMT_NV24: descr = "Y/CbCr 4:4:4"; break; 1308 1308 case V4L2_PIX_FMT_NV42: descr = "Y/CrCb 4:4:4"; break; 1309 + case V4L2_PIX_FMT_P010: descr = "10-bit Y/CrCb 4:2:0"; break; 1309 1310 case V4L2_PIX_FMT_NV12_4L4: descr = "Y/CbCr 4:2:0 (4x4 Linear)"; break; 1310 1311 case V4L2_PIX_FMT_NV12_16L16: descr = "Y/CbCr 4:2:0 (16x16 Linear)"; break; 1311 1312 case V4L2_PIX_FMT_NV12_32L32: descr = "Y/CbCr 4:2:0 (32x32 Linear)"; break;
+1
include/uapi/linux/videodev2.h
··· 602 602 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ 603 603 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */ 604 604 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */ 605 + #define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* 24 Y/CbCr 4:2:0 10-bit per component */ 605 606 606 607 /* two non contiguous planes - one Y, one Cr + Cb interleaved */ 607 608 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */