Skip to content

Commit fc91af0

Browse files
Benjamin Gaignardmchehab
authored andcommitted
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>
1 parent 86c256b commit fc91af0

4 files changed

Lines changed: 20 additions & 0 deletions

File tree

Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,13 @@ All components are stored with the same number of bits per component.
137137
- Cb, Cr
138138
- No
139139
- Linear
140+
* - V4L2_PIX_FMT_NV15_4L4
141+
- 'VT15'
142+
- 15
143+
- 4:2:0
144+
- Cb, Cr
145+
- Yes
146+
- 4x4 tiles
140147
* - V4L2_PIX_FMT_NV16
141148
- 'NV16'
142149
- 8
@@ -378,6 +385,15 @@ two non-contiguous planes.
378385

379386
Example V4L2_PIX_FMT_NV12MT memory layout of tiles
380387

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).
381397

382398
.. _V4L2-PIX-FMT-NV16:
383399
.. _V4L2-PIX-FMT-NV61:

drivers/media/v4l2-core/v4l2-common.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,8 @@ const struct v4l2_format_info *v4l2_format_info(u32 format)
283283

284284
/* Tiled YUV formats */
285285
{ .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 }},
286288
{ .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 },
287289

288290
/* YUV planar formats, non contiguous variant */

drivers/media/v4l2-core/v4l2-ioctl.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,6 +1356,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
13561356
case V4L2_PIX_FMT_NV12_4L4: descr = "Y/UV 4:2:0 (4x4 Linear)"; break;
13571357
case V4L2_PIX_FMT_NV12_16L16: descr = "Y/UV 4:2:0 (16x16 Linear)"; break;
13581358
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;
13591360
case V4L2_PIX_FMT_P010_4L4: descr = "10-bit Y/UV 4:2:0 (4x4 Linear)"; break;
13601361
case V4L2_PIX_FMT_NV12M: descr = "Y/UV 4:2:0 (N-C)"; break;
13611362
case V4L2_PIX_FMT_NV21M: descr = "Y/VU 4:2:0 (N-C)"; break;

include/uapi/linux/videodev2.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,7 @@ struct v4l2_pix_format {
672672
#define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2') /* 12 Y/CbCr 4:2:0 4x4 tiles */
673673
#define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
674674
#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 */
675676
#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0') /* 12 Y/CbCr 4:2:0 10-bit 4x4 macroblocks */
676677
#define V4L2_PIX_FMT_NV12_8L128 v4l2_fourcc('A', 'T', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */
677678
#define V4L2_PIX_FMT_NV12_10BE_8L128 v4l2_fourcc_be('A', 'X', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */

0 commit comments

Comments
 (0)