• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.. Permission is granted to copy, distribute and/or modify this
2.. document under the terms of the GNU Free Documentation License,
3.. Version 1.1 or any later version published by the Free Software
4.. Foundation, with no Invariant Sections, no Front-Cover Texts
5.. and no Back-Cover Texts. A copy of the license is included at
6.. Documentation/media/uapi/fdl-appendix.rst.
7..
8.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
9
10.. _V4L2-PIX-FMT-NV12M:
11.. _v4l2-pix-fmt-nv12mt-16x16:
12.. _V4L2-PIX-FMT-NV21M:
13
14***********************************************************************************
15V4L2_PIX_FMT_NV12M ('NM12'), V4L2_PIX_FMT_NV21M ('NM21'), V4L2_PIX_FMT_NV12MT_16X16
16***********************************************************************************
17
18
19V4L2_PIX_FMT_NV21M
20V4L2_PIX_FMT_NV12MT_16X16
21Variation of ``V4L2_PIX_FMT_NV12`` and ``V4L2_PIX_FMT_NV21`` with planes
22non contiguous in memory.
23
24
25Description
26===========
27
28This is a multi-planar, two-plane version of the YUV 4:2:0 format. The
29three components are separated into two sub-images or planes.
30``V4L2_PIX_FMT_NV12M`` differs from ``V4L2_PIX_FMT_NV12`` in that the
31two planes are non-contiguous in memory, i.e. the chroma plane do not
32necessarily immediately follows the luma plane. The luminance data
33occupies the first plane. The Y plane has one byte per pixel. In the
34second plane there is a chrominance data with alternating chroma
35samples. The CbCr plane is the same width, in bytes, as the Y plane (and
36of the image), but is half as tall in pixels. Each CbCr pair belongs to
37four pixels. For example, Cb\ :sub:`0`/Cr\ :sub:`0` belongs to
38Y'\ :sub:`00`, Y'\ :sub:`01`, Y'\ :sub:`10`, Y'\ :sub:`11`.
39``V4L2_PIX_FMT_NV12MT_16X16`` is the tiled version of
40``V4L2_PIX_FMT_NV12M`` with 16x16 macroblock tiles. Here pixels are
41arranged in 16x16 2D tiles and tiles are arranged in linear order in
42memory. ``V4L2_PIX_FMT_NV21M`` is the same as ``V4L2_PIX_FMT_NV12M``
43except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr
44byte.
45
46``V4L2_PIX_FMT_NV12M`` is intended to be used only in drivers and
47applications that support the multi-planar API, described in
48:ref:`planar-apis`.
49
50If the Y plane has pad bytes after each row, then the CbCr plane has as
51many pad bytes after its rows.
52
53**Byte Order.**
54Each cell is one byte.
55
56.. flat-table::
57    :header-rows:  0
58    :stub-columns: 0
59
60    * - start0 + 0:
61      - Y'\ :sub:`00`
62      - Y'\ :sub:`01`
63      - Y'\ :sub:`02`
64      - Y'\ :sub:`03`
65    * - start0 + 4:
66      - Y'\ :sub:`10`
67      - Y'\ :sub:`11`
68      - Y'\ :sub:`12`
69      - Y'\ :sub:`13`
70    * - start0 + 8:
71      - Y'\ :sub:`20`
72      - Y'\ :sub:`21`
73      - Y'\ :sub:`22`
74      - Y'\ :sub:`23`
75    * - start0 + 12:
76      - Y'\ :sub:`30`
77      - Y'\ :sub:`31`
78      - Y'\ :sub:`32`
79      - Y'\ :sub:`33`
80    * -
81    * - start1 + 0:
82      - Cb\ :sub:`00`
83      - Cr\ :sub:`00`
84      - Cb\ :sub:`01`
85      - Cr\ :sub:`01`
86    * - start1 + 4:
87      - Cb\ :sub:`10`
88      - Cr\ :sub:`10`
89      - Cb\ :sub:`11`
90      - Cr\ :sub:`11`
91
92
93**Color Sample Location:**
94
95
96
97.. flat-table::
98    :header-rows:  0
99    :stub-columns: 0
100
101    * -
102      - 0
103      -
104      - 1
105      - 2
106      -
107      - 3
108    * - 0
109      - Y
110      -
111      - Y
112      - Y
113      -
114      - Y
115    * -
116      -
117      - C
118      -
119      -
120      - C
121      -
122    * - 1
123      - Y
124      -
125      - Y
126      - Y
127      -
128      - Y
129    * -
130    * - 2
131      - Y
132      -
133      - Y
134      - Y
135      -
136      - Y
137    * -
138      -
139      - C
140      -
141      -
142      -
143      - C
144      -
145    * - 3
146      - Y
147      -
148      - Y
149      - Y
150      -
151      - Y
152