| Kamil Debski | bd08a0c | 2011-03-11 06:16:22 -0300 | [diff] [blame] | 1 |     <refentry> | 
 | 2 |       <refmeta> | 
 | 3 | 	<refentrytitle>V4L2_PIX_FMT_NV12MT ('TM12')</refentrytitle> | 
 | 4 | 	&manvol; | 
 | 5 |       </refmeta> | 
 | 6 |       <refnamediv> | 
 | 7 | 	<refname id="V4L2-PIX-FMT-NV12MT"><constant>V4L2_PIX_FMT_NV12MT | 
 | 8 | </constant></refname> | 
 | 9 | 	<refpurpose>Formats with ½ horizontal and vertical | 
 | 10 | chroma resolution. This format has two planes - one for luminance and one for | 
 | 11 | chrominance. Chroma samples are interleaved. The difference to | 
 | 12 | <constant>V4L2_PIX_FMT_NV12</constant> is the memory layout. Pixels are | 
 | 13 | grouped in macroblocks of 64x32 size. The order of macroblocks in memory is | 
 | 14 | also not standard. | 
 | 15 | 	</refpurpose> | 
 | 16 |       </refnamediv> | 
 | 17 |       <refsect1> | 
 | 18 | 	<title>Description</title> | 
 | 19 |  | 
 | 20 | 	<para>This is the two-plane versions of the YUV 4:2:0 format where data | 
 | 21 | is grouped into 64x32 macroblocks. The three components are separated into two | 
 | 22 | sub-images or planes. The Y plane has one byte per pixel and pixels are grouped | 
 | 23 | into 64x32 macroblocks. The CbCr plane has the same width, in bytes, as the Y | 
 | 24 | plane (and the image), but is half as tall in pixels. The chroma plane is also | 
 | 25 | grouped into 64x32 macroblocks.</para> | 
 | 26 | 	<para>Width of the buffer has to be aligned to the multiple of 128, and | 
 | 27 | height alignment is 32. Every four adjactent buffers - two horizontally and two | 
 | 28 | vertically are grouped together and are located in memory in Z or flipped Z | 
 | 29 | order. </para> | 
 | 30 | 	<para>Layout of macroblocks in memory is presented in the following | 
 | 31 | figure.</para> | 
 | 32 | 	<para><figure id="nv12mt"> | 
 | 33 | 	    <title><constant>V4L2_PIX_FMT_NV12MT</constant> macroblock Z shape | 
 | 34 | memory layout</title> | 
 | 35 | 	    <mediaobject> | 
 | 36 | 	      <imageobject> | 
 | 37 | 		<imagedata fileref="nv12mt.gif" format="GIF" /> | 
 | 38 | 	      </imageobject> | 
 | 39 | 	    </mediaobject> | 
 | 40 | 	</figure> | 
 | 41 | 	The requirement that width is multiple of 128 is implemented because, | 
 | 42 | the Z shape cannot be cut in half horizontally. In case the vertical resolution | 
 | 43 | of macroblocks is odd then the last row of macroblocks is arranged in a linear | 
 | 44 | order.  </para> | 
 | 45 | 	<para>In case of chroma the layout is identical. Cb and Cr samples are | 
 | 46 | interleaved. Height of the buffer is aligned to 32. | 
 | 47 | 	</para> | 
 | 48 | 	<example> | 
 | 49 | 	  <title>Memory layout of macroblocks in <constant>V4L2_PIX_FMT_NV12 | 
 | 50 | </constant> format pixel image - extreme case</title> | 
 | 51 | 	<para> | 
| Hans Verkuil | 34fd68b | 2011-03-11 18:18:54 -0300 | [diff] [blame] | 52 | 	<figure id="nv12mt_ex"> | 
| Kamil Debski | bd08a0c | 2011-03-11 06:16:22 -0300 | [diff] [blame] | 53 | 	    <title>Example <constant>V4L2_PIX_FMT_NV12MT</constant> memory | 
 | 54 | layout of macroblocks</title> | 
 | 55 | 	    <mediaobject> | 
 | 56 | 	      <imageobject> | 
 | 57 | 		<imagedata fileref="nv12mt_example.gif" format="GIF" /> | 
 | 58 | 	      </imageobject> | 
 | 59 | 	    </mediaobject> | 
 | 60 | 	</figure> | 
 | 61 | 	Memory layout of macroblocks of <constant>V4L2_PIX_FMT_NV12MT | 
 | 62 | </constant> format in most extreme case. | 
 | 63 | 	</para> | 
 | 64 | 	</example> | 
 | 65 |       </refsect1> | 
 | 66 |     </refentry> | 
 | 67 |  | 
 | 68 |   <!-- | 
 | 69 | Local Variables: | 
 | 70 | mode: sgml | 
 | 71 | sgml-parent-document: "pixfmt.sgml" | 
 | 72 | indent-tabs-mode: nil | 
 | 73 | End: | 
 | 74 |   --> |