1    <refentry id="V4L2-PIX-FMT-NV12M">
2      <refmeta>
3	<refentrytitle>V4L2_PIX_FMT_NV12M ('NV12M')</refentrytitle>
4	&manvol;
5      </refmeta>
6      <refnamediv>
7	<refname> <constant>V4L2_PIX_FMT_NV12M</constant></refname>
8	<refpurpose>Variation of <constant>V4L2_PIX_FMT_NV12</constant> with planes
9	  non contiguous in memory. </refpurpose>
10      </refnamediv>
11      <refsect1>
12	<title>Description</title>
13
14	<para>This is a multi-planar, two-plane version of the YUV 4:2:0 format.
15The three components are separated into two sub-images or planes.
16<constant>V4L2_PIX_FMT_NV12M</constant> differs from <constant>V4L2_PIX_FMT_NV12
17</constant> in that the two planes are non-contiguous in memory, i.e. the chroma
18plane do not necessarily immediately follows the luma plane.
19The luminance data occupies the first plane. The Y plane has one byte per pixel.
20In the second plane there is a chrominance data with alternating chroma samples.
21The CbCr plane is the same width, in bytes, as the Y plane (and of the image),
22but is half as tall in pixels. Each CbCr pair belongs to four pixels. For example,
23Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to
24Y'<subscript>00</subscript>, Y'<subscript>01</subscript>,
25Y'<subscript>10</subscript>, Y'<subscript>11</subscript>. </para>
26
27	<para><constant>V4L2_PIX_FMT_NV12M</constant> is intended to be
28used only in drivers and applications that support the multi-planar API,
29described in <xref linkend="planar-apis"/>. </para>
30
31	<para>If the Y plane has pad bytes after each row, then the
32CbCr plane has as many pad bytes after its rows.</para>
33
34	<example>
35	  <title><constant>V4L2_PIX_FMT_NV12M</constant> 4 &times; 4 pixel image</title>
36
37	  <formalpara>
38	    <title>Byte Order.</title>
39	    <para>Each cell is one byte.
40		<informaltable frame="none">
41		<tgroup cols="5" align="center">
42		  <colspec align="left" colwidth="2*" />
43		  <tbody valign="top">
44		    <row>
45		      <entry>start0&nbsp;+&nbsp;0:</entry>
46		      <entry>Y'<subscript>00</subscript></entry>
47		      <entry>Y'<subscript>01</subscript></entry>
48		      <entry>Y'<subscript>02</subscript></entry>
49		      <entry>Y'<subscript>03</subscript></entry>
50		    </row>
51		    <row>
52		      <entry>start0&nbsp;+&nbsp;4:</entry>
53		      <entry>Y'<subscript>10</subscript></entry>
54		      <entry>Y'<subscript>11</subscript></entry>
55		      <entry>Y'<subscript>12</subscript></entry>
56		      <entry>Y'<subscript>13</subscript></entry>
57		    </row>
58		    <row>
59		      <entry>start0&nbsp;+&nbsp;8:</entry>
60		      <entry>Y'<subscript>20</subscript></entry>
61		      <entry>Y'<subscript>21</subscript></entry>
62		      <entry>Y'<subscript>22</subscript></entry>
63		      <entry>Y'<subscript>23</subscript></entry>
64		    </row>
65		    <row>
66		      <entry>start0&nbsp;+&nbsp;12:</entry>
67		      <entry>Y'<subscript>30</subscript></entry>
68		      <entry>Y'<subscript>31</subscript></entry>
69		      <entry>Y'<subscript>32</subscript></entry>
70		      <entry>Y'<subscript>33</subscript></entry>
71		    </row>
72		    <row>
73		      <entry></entry>
74		    </row>
75		    <row>
76		      <entry>start1&nbsp;+&nbsp;0:</entry>
77		      <entry>Cb<subscript>00</subscript></entry>
78		      <entry>Cr<subscript>00</subscript></entry>
79		      <entry>Cb<subscript>01</subscript></entry>
80		      <entry>Cr<subscript>01</subscript></entry>
81		    </row>
82		    <row>
83		      <entry>start1&nbsp;+&nbsp;4:</entry>
84		      <entry>Cb<subscript>10</subscript></entry>
85		      <entry>Cr<subscript>10</subscript></entry>
86		      <entry>Cb<subscript>11</subscript></entry>
87		      <entry>Cr<subscript>11</subscript></entry>
88		    </row>
89		  </tbody>
90		</tgroup>
91		</informaltable>
92	      </para>
93	  </formalpara>
94
95	  <formalpara>
96	    <title>Color Sample Location.</title>
97	    <para>
98		<informaltable frame="none">
99		<tgroup cols="7" align="center">
100		  <tbody valign="top">
101		    <row>
102		      <entry></entry>
103		      <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
104		      <entry>2</entry><entry></entry><entry>3</entry>
105		    </row>
106		    <row>
107		      <entry>0</entry>
108		      <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
109		      <entry>Y</entry><entry></entry><entry>Y</entry>
110		    </row>
111		    <row>
112		      <entry></entry>
113		      <entry></entry><entry>C</entry><entry></entry><entry></entry>
114		      <entry></entry><entry>C</entry><entry></entry>
115		    </row>
116		    <row>
117		      <entry>1</entry>
118		      <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
119		      <entry>Y</entry><entry></entry><entry>Y</entry>
120		    </row>
121		    <row>
122		      <entry></entry>
123		    </row>
124		    <row>
125		      <entry>2</entry>
126		      <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
127		      <entry>Y</entry><entry></entry><entry>Y</entry>
128		    </row>
129		    <row>
130		      <entry></entry>
131		      <entry></entry><entry>C</entry><entry></entry><entry></entry>
132		      <entry></entry><entry>C</entry><entry></entry>
133		    </row>
134		    <row>
135		      <entry>3</entry>
136		      <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
137		      <entry>Y</entry><entry></entry><entry>Y</entry>
138		    </row>
139		  </tbody>
140		</tgroup>
141		</informaltable>
142	      </para>
143	  </formalpara>
144	</example>
145      </refsect1>
146    </refentry>
147