| Mauro Carvalho Chehab | 8e080c2 | 2009-09-13 22:16:04 -0300 | [diff] [blame] | 1 |     <refentry> | 
 | 2 |       <refmeta> | 
 | 3 | 	<refentrytitle>V4L2_PIX_FMT_NV12 ('NV12'), V4L2_PIX_FMT_NV21 ('NV21')</refentrytitle> | 
 | 4 | 	&manvol; | 
 | 5 |       </refmeta> | 
 | 6 |       <refnamediv> | 
 | 7 | 	<refname id="V4L2-PIX-FMT-NV12"><constant>V4L2_PIX_FMT_NV12</constant></refname> | 
 | 8 | 	<refname id="V4L2-PIX-FMT-NV21"><constant>V4L2_PIX_FMT_NV21</constant></refname> | 
 | 9 | 	<refpurpose>Formats with ½ horizontal and vertical | 
 | 10 | chroma resolution, also known as YUV 4:2:0. One luminance and one | 
 | 11 | chrominance plane with alternating chroma samples as opposed to | 
 | 12 | <constant>V4L2_PIX_FMT_YVU420</constant></refpurpose> | 
 | 13 |       </refnamediv> | 
 | 14 |       <refsect1> | 
 | 15 | 	<title>Description</title> | 
 | 16 |  | 
 | 17 | 	<para>These are two-plane versions of the YUV 4:2:0 format. | 
 | 18 | The three components are separated into two sub-images or planes. The | 
 | 19 | Y plane is first. The Y plane has one byte per pixel. For | 
 | 20 | <constant>V4L2_PIX_FMT_NV12</constant>, a combined CbCr plane | 
 | 21 | immediately follows the Y plane in memory.  The CbCr plane is the same | 
 | 22 | width, in bytes, as the Y plane (and of the image), but is half as | 
 | 23 | tall in pixels. Each CbCr pair belongs to four pixels. For example, | 
 | 24 | Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to | 
 | 25 | Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, | 
 | 26 | Y'<subscript>10</subscript>, Y'<subscript>11</subscript>. | 
 | 27 | <constant>V4L2_PIX_FMT_NV21</constant> is the same except the Cb and | 
 | 28 | Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para> | 
 | 29 |  | 
 | 30 | 	<para>If the Y plane has pad bytes after each row, then the | 
 | 31 | CbCr plane has as many pad bytes after its rows.</para> | 
 | 32 |  | 
 | 33 | 	<example> | 
 | 34 | 	  <title><constant>V4L2_PIX_FMT_NV12</constant> 4 × 4 | 
 | 35 | 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>start + 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>start + 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>start + 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>start + 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>start + 16:</entry> | 
 | 74 | 		      <entry>Cb<subscript>00</subscript></entry> | 
 | 75 | 		      <entry>Cr<subscript>00</subscript></entry> | 
 | 76 | 		      <entry>Cb<subscript>01</subscript></entry> | 
 | 77 | 		      <entry>Cr<subscript>01</subscript></entry> | 
 | 78 | 		    </row> | 
 | 79 | 		    <row> | 
 | 80 | 		      <entry>start + 20:</entry> | 
 | 81 | 		      <entry>Cb<subscript>10</subscript></entry> | 
 | 82 | 		      <entry>Cr<subscript>10</subscript></entry> | 
 | 83 | 		      <entry>Cb<subscript>11</subscript></entry> | 
 | 84 | 		      <entry>Cr<subscript>11</subscript></entry> | 
 | 85 | 		    </row> | 
 | 86 | 		  </tbody> | 
 | 87 | 		</tgroup> | 
 | 88 | 		</informaltable> | 
 | 89 | 	      </para> | 
 | 90 | 	  </formalpara> | 
 | 91 |  | 
 | 92 | 	  <formalpara> | 
 | 93 | 	    <title>Color Sample Location.</title> | 
 | 94 | 	    <para> | 
 | 95 | 		<informaltable frame="none"> | 
 | 96 | 		<tgroup cols="7" align="center"> | 
 | 97 | 		  <tbody valign="top"> | 
 | 98 | 		    <row> | 
 | 99 | 		      <entry></entry> | 
 | 100 | 		      <entry>0</entry><entry></entry><entry>1</entry><entry></entry> | 
 | 101 | 		      <entry>2</entry><entry></entry><entry>3</entry> | 
 | 102 | 		    </row> | 
 | 103 | 		    <row> | 
 | 104 | 		      <entry>0</entry> | 
 | 105 | 		      <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | 
 | 106 | 		      <entry>Y</entry><entry></entry><entry>Y</entry> | 
 | 107 | 		    </row> | 
 | 108 | 		    <row> | 
 | 109 | 		      <entry></entry> | 
 | 110 | 		      <entry></entry><entry>C</entry><entry></entry><entry></entry> | 
 | 111 | 		      <entry></entry><entry>C</entry><entry></entry> | 
 | 112 | 		    </row> | 
 | 113 | 		    <row> | 
 | 114 | 		      <entry>1</entry> | 
 | 115 | 		      <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | 
 | 116 | 		      <entry>Y</entry><entry></entry><entry>Y</entry> | 
 | 117 | 		    </row> | 
 | 118 | 		    <row> | 
 | 119 | 		      <entry></entry> | 
 | 120 | 		    </row> | 
 | 121 | 		    <row> | 
 | 122 | 		      <entry>2</entry> | 
 | 123 | 		      <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | 
 | 124 | 		      <entry>Y</entry><entry></entry><entry>Y</entry> | 
 | 125 | 		    </row> | 
 | 126 | 		    <row> | 
 | 127 | 		      <entry></entry> | 
 | 128 | 		      <entry></entry><entry>C</entry><entry></entry><entry></entry> | 
 | 129 | 		      <entry></entry><entry>C</entry><entry></entry> | 
 | 130 | 		    </row> | 
 | 131 | 		    <row> | 
 | 132 | 		      <entry>3</entry> | 
 | 133 | 		      <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | 
 | 134 | 		      <entry>Y</entry><entry></entry><entry>Y</entry> | 
 | 135 | 		    </row> | 
 | 136 | 		  </tbody> | 
 | 137 | 		</tgroup> | 
 | 138 | 		</informaltable> | 
 | 139 | 	      </para> | 
 | 140 | 	  </formalpara> | 
 | 141 | 	</example> | 
 | 142 |       </refsect1> | 
 | 143 |     </refentry> | 
 | 144 |  | 
 | 145 |   <!-- | 
 | 146 | Local Variables: | 
 | 147 | mode: sgml | 
 | 148 | sgml-parent-document: "pixfmt.sgml" | 
 | 149 | indent-tabs-mode: nil | 
 | 150 | End: | 
 | 151 |   --> |