1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3.. _V4L2-PIX-FMT-NV16M:
4.. _v4l2-pix-fmt-nv61m:
5
6********************************************************
7V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M ('NM61')
8********************************************************
9
10V4L2_PIX_FMT_NV61M
11Variation of ``V4L2_PIX_FMT_NV16`` and ``V4L2_PIX_FMT_NV61`` with planes
12non contiguous in memory.
13
14
15Description
16===========
17
18This is a multi-planar, two-plane version of the YUV 4:2:2 format. The
19three components are separated into two sub-images or planes.
20``V4L2_PIX_FMT_NV16M`` differs from ``V4L2_PIX_FMT_NV16`` in that the
21two planes are non-contiguous in memory, i.e. the chroma plane does not
22necessarily immediately follow the luma plane. The luminance data
23occupies the first plane. The Y plane has one byte per pixel. In the
24second plane there is chrominance data with alternating chroma samples.
25The CbCr plane is the same width and height, in bytes, as the Y plane.
26Each CbCr pair belongs to two pixels. For example,
27Cb\ :sub:`0`/Cr\ :sub:`0` belongs to Y'\ :sub:`00`, Y'\ :sub:`01`.
28``V4L2_PIX_FMT_NV61M`` is the same as ``V4L2_PIX_FMT_NV16M`` except the
29Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte.
30
31``V4L2_PIX_FMT_NV16M`` and ``V4L2_PIX_FMT_NV61M`` are intended to be
32used only in drivers and applications that support the multi-planar API,
33described in :ref:`planar-apis`.
34
35**Byte Order.**
36Each cell is one byte.
37
38
39.. flat-table::
40    :header-rows:  0
41    :stub-columns: 0
42
43    * - start0 + 0:
44      - Y'\ :sub:`00`
45      - Y'\ :sub:`01`
46      - Y'\ :sub:`02`
47      - Y'\ :sub:`03`
48    * - start0 + 4:
49      - Y'\ :sub:`10`
50      - Y'\ :sub:`11`
51      - Y'\ :sub:`12`
52      - Y'\ :sub:`13`
53    * - start0 + 8:
54      - Y'\ :sub:`20`
55      - Y'\ :sub:`21`
56      - Y'\ :sub:`22`
57      - Y'\ :sub:`23`
58    * - start0 + 12:
59      - Y'\ :sub:`30`
60      - Y'\ :sub:`31`
61      - Y'\ :sub:`32`
62      - Y'\ :sub:`33`
63    * -
64    * - start1 + 0:
65      - Cb\ :sub:`00`
66      - Cr\ :sub:`00`
67      - Cb\ :sub:`02`
68      - Cr\ :sub:`02`
69    * - start1 + 4:
70      - Cb\ :sub:`10`
71      - Cr\ :sub:`10`
72      - Cb\ :sub:`12`
73      - Cr\ :sub:`12`
74    * - start1 + 8:
75      - Cb\ :sub:`20`
76      - Cr\ :sub:`20`
77      - Cb\ :sub:`22`
78      - Cr\ :sub:`22`
79    * - start1 + 12:
80      - Cb\ :sub:`30`
81      - Cr\ :sub:`30`
82      - Cb\ :sub:`32`
83      - Cr\ :sub:`32`
84
85
86**Color Sample Location:**
87
88
89
90.. flat-table::
91    :header-rows:  0
92    :stub-columns: 0
93
94    * -
95      - 0
96      -
97      - 1
98      - 2
99      -
100      - 3
101    * - 0
102      - Y
103      -
104      - Y
105      - Y
106      -
107      - Y
108    * -
109      -
110      - C
111      -
112      -
113      - C
114      -
115    * - 1
116      - Y
117      -
118      - Y
119      - Y
120      -
121      - Y
122    * -
123      -
124      - C
125      -
126      -
127      - C
128      -
129    * -
130    * - 2
131      - Y
132      -
133      - Y
134      - Y
135      -
136      - Y
137    * -
138      -
139      - C
140      -
141      -
142      - C
143      -
144    * - 3
145      - Y
146      -
147      - Y
148      - Y
149      -
150      - Y
151    * -
152      -
153      - C
154      -
155      -
156      - C
157      -
158