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