NV15_4L4 is the 10-bits per component 4x4 tiled format.
Unified · Split
| @@ -137,6 +137,13 @@ All components are stored with the same number of bits per component. · 136 unmodified lines | ||
| 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 |
| @@ -378,6 +385,15 @@ two non-contiguous planes. · 235 unmodified lines | ||
| 378 | 385 | |
| 379 | 386 | Example V4L2_PIX_FMT_NV12MT memory layout of tiles |
| 380 | 387 | |
| 388 | +.. _V4L2-PIX-FMT-NV15-4L4: | |
| 389 | + | |
| 390 | +Tiled NV15 | |
| 391 | +---------- | |
| 392 | + | |
| 393 | +Semi-planar 10-bit YUV 4:2:0 formats, using 4x4 tiling. | |
| 394 | +All components are packed without any padding between each other. | |
| 395 | +As a side-effect, each group of 4 components are stored over 5 bytes | |
| 396 | +(YYYY or UVUV = 4 * 10 bits = 40 bits = 5 bytes). | |
| 381 | 397 | |
| 382 | 398 | .. _V4L2-PIX-FMT-NV16: |
| 383 | 399 | .. _V4L2-PIX-FMT-NV61: |
| @@ -283,6 +283,8 @@ const struct v4l2_format_info *v4l2_format_info(u32 format) · 282 unmodified lines | ||
| 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 */ |
| @@ -1356,6 +1356,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) · 1355 unmodified lines | ||
| 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; |
| @@ -672,6 +672,7 @@ struct v4l2_pix_format { · 671 unmodified lines | ||
| 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 */ |