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>
This commit is contained in:
parent
a23196c7a9
commit
5374d8fb75
4 changed files with 57 additions and 0 deletions
|
@ -109,6 +109,13 @@ All components are stored with the same number of bits per component.
|
||||||
- Cb, Cr
|
- Cb, Cr
|
||||||
- No
|
- No
|
||||||
- 16x16 tiles
|
- 16x16 tiles
|
||||||
|
* - V4L2_PIX_FMT_P010
|
||||||
|
- 'P010'
|
||||||
|
- 10
|
||||||
|
- 4:2:0
|
||||||
|
- Cb, Cr
|
||||||
|
- Yes
|
||||||
|
- Linear
|
||||||
* - V4L2_PIX_FMT_NV16
|
* - V4L2_PIX_FMT_NV16
|
||||||
- 'NV16'
|
- 'NV16'
|
||||||
- 8
|
- 8
|
||||||
|
@ -171,6 +178,7 @@ horizontally.
|
||||||
.. _V4L2-PIX-FMT-NV21:
|
.. _V4L2-PIX-FMT-NV21:
|
||||||
.. _V4L2-PIX-FMT-NV12M:
|
.. _V4L2-PIX-FMT-NV12M:
|
||||||
.. _V4L2-PIX-FMT-NV21M:
|
.. _V4L2-PIX-FMT-NV21M:
|
||||||
|
.. _V4L2-PIX-FMT-P010:
|
||||||
|
|
||||||
NV12, NV21, NV12M and NV21M
|
NV12, NV21, NV12M and NV21M
|
||||||
---------------------------
|
---------------------------
|
||||||
|
@ -519,6 +527,52 @@ number of lines as the luma plane.
|
||||||
- Cb\ :sub:`33`
|
- Cb\ :sub:`33`
|
||||||
- Cr\ :sub:`33`
|
- Cr\ :sub:`33`
|
||||||
|
|
||||||
|
.. _V4L2_PIX_FMT_P010:
|
||||||
|
|
||||||
|
P010
|
||||||
|
----
|
||||||
|
|
||||||
|
Like NV12 with 10 bits per component, expanded to 16 bits.
|
||||||
|
Data in the 10 high bits, zeros in the 6 low bits, arranged in little endian order.
|
||||||
|
|
||||||
|
.. flat-table:: Sample 4x4 P010 Image
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - start + 0:
|
||||||
|
- Y'\ :sub:`00`
|
||||||
|
- Y'\ :sub:`01`
|
||||||
|
- Y'\ :sub:`02`
|
||||||
|
- Y'\ :sub:`03`
|
||||||
|
* - start + 8:
|
||||||
|
- Y'\ :sub:`10`
|
||||||
|
- Y'\ :sub:`11`
|
||||||
|
- Y'\ :sub:`12`
|
||||||
|
- Y'\ :sub:`13`
|
||||||
|
* - start + 16:
|
||||||
|
- Y'\ :sub:`20`
|
||||||
|
- Y'\ :sub:`21`
|
||||||
|
- Y'\ :sub:`22`
|
||||||
|
- Y'\ :sub:`23`
|
||||||
|
* - start + 24:
|
||||||
|
- Y'\ :sub:`30`
|
||||||
|
- Y'\ :sub:`31`
|
||||||
|
- Y'\ :sub:`32`
|
||||||
|
- Y'\ :sub:`33`
|
||||||
|
* - start + 32:
|
||||||
|
- Cb\ :sub:`00`
|
||||||
|
- Cr\ :sub:`00`
|
||||||
|
- Cb\ :sub:`01`
|
||||||
|
- Cr\ :sub:`01`
|
||||||
|
* - start + 40:
|
||||||
|
- Cb\ :sub:`10`
|
||||||
|
- Cr\ :sub:`10`
|
||||||
|
- Cb\ :sub:`11`
|
||||||
|
- Cr\ :sub:`11`
|
||||||
|
|
||||||
|
.. raw:: latex
|
||||||
|
|
||||||
|
\endgroup
|
||||||
|
|
||||||
Fully Planar YUV Formats
|
Fully Planar YUV Formats
|
||||||
========================
|
========================
|
||||||
|
|
|
@ -266,6 +266,7 @@ const struct v4l2_format_info *v4l2_format_info(u32 format)
|
||||||
{ .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 },
|
{ .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 },
|
||||||
{ .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 },
|
{ .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 },
|
||||||
{ .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 },
|
{ .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 },
|
||||||
|
{ .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 },
|
||||||
|
|
||||||
{ .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 },
|
{ .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 },
|
||||||
{ .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 },
|
{ .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 },
|
||||||
|
|
|
@ -1306,6 +1306,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
|
||||||
case V4L2_PIX_FMT_NV61: descr = "Y/CrCb 4:2:2"; break;
|
case V4L2_PIX_FMT_NV61: descr = "Y/CrCb 4:2:2"; break;
|
||||||
case V4L2_PIX_FMT_NV24: descr = "Y/CbCr 4:4:4"; break;
|
case V4L2_PIX_FMT_NV24: descr = "Y/CbCr 4:4:4"; break;
|
||||||
case V4L2_PIX_FMT_NV42: descr = "Y/CrCb 4:4:4"; break;
|
case V4L2_PIX_FMT_NV42: descr = "Y/CrCb 4:4:4"; break;
|
||||||
|
case V4L2_PIX_FMT_P010: descr = "10-bit Y/CrCb 4:2:0"; break;
|
||||||
case V4L2_PIX_FMT_NV12_4L4: descr = "Y/CbCr 4:2:0 (4x4 Linear)"; break;
|
case V4L2_PIX_FMT_NV12_4L4: descr = "Y/CbCr 4:2:0 (4x4 Linear)"; break;
|
||||||
case V4L2_PIX_FMT_NV12_16L16: descr = "Y/CbCr 4:2:0 (16x16 Linear)"; break;
|
case V4L2_PIX_FMT_NV12_16L16: descr = "Y/CbCr 4:2:0 (16x16 Linear)"; break;
|
||||||
case V4L2_PIX_FMT_NV12_32L32: descr = "Y/CbCr 4:2:0 (32x32 Linear)"; break;
|
case V4L2_PIX_FMT_NV12_32L32: descr = "Y/CbCr 4:2:0 (32x32 Linear)"; break;
|
||||||
|
|
|
@ -602,6 +602,7 @@ struct v4l2_pix_format {
|
||||||
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
||||||
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
|
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
|
||||||
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
|
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
|
||||||
|
#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* 24 Y/CbCr 4:2:0 10-bit per component */
|
||||||
|
|
||||||
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
|
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
|
||||||
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
||||||
|
|
Loading…
Add table
Reference in a new issue