pixfmt-nv12mt.xml 2.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
    <refentry>
      <refmeta>
	<refentrytitle>V4L2_PIX_FMT_NV12MT ('TM12')</refentrytitle>
	&manvol;
      </refmeta>
      <refnamediv>
	<refname id="V4L2-PIX-FMT-NV12MT"><constant>V4L2_PIX_FMT_NV12MT
</constant></refname>
	<refpurpose>Formats with &frac12; horizontal and vertical
chroma resolution. This format has two planes - one for luminance and one for
chrominance. Chroma samples are interleaved. The difference to
<constant>V4L2_PIX_FMT_NV12</constant> is the memory layout. Pixels are
grouped in macroblocks of 64x32 size. The order of macroblocks in memory is
also not standard.
	</refpurpose>
      </refnamediv>
      <refsect1>
	<title>Description</title>

	<para>This is the two-plane versions of the YUV 4:2:0 format where data
is grouped into 64x32 macroblocks. The three components are separated into two
sub-images or planes. The Y plane has one byte per pixel and pixels are grouped
into 64x32 macroblocks. The CbCr plane has the same width, in bytes, as the Y
plane (and the image), but is half as tall in pixels. The chroma plane is also
grouped into 64x32 macroblocks.</para>
	<para>Width of the buffer has to be aligned to the multiple of 128, and
height alignment is 32. Every four adjactent buffers - two horizontally and two
vertically are grouped together and are located in memory in Z or flipped Z
order. </para>
	<para>Layout of macroblocks in memory is presented in the following
figure.</para>
	<para><figure id="nv12mt">
	    <title><constant>V4L2_PIX_FMT_NV12MT</constant> macroblock Z shape
memory layout</title>
	    <mediaobject>
	      <imageobject>
		<imagedata fileref="nv12mt.gif" format="GIF" />
	      </imageobject>
	    </mediaobject>
	</figure>
	The requirement that width is multiple of 128 is implemented because,
the Z shape cannot be cut in half horizontally. In case the vertical resolution
of macroblocks is odd then the last row of macroblocks is arranged in a linear
order.  </para>
	<para>In case of chroma the layout is identical. Cb and Cr samples are
interleaved. Height of the buffer is aligned to 32.
	</para>
	<example>
	  <title>Memory layout of macroblocks in <constant>V4L2_PIX_FMT_NV12
</constant> format pixel image - extreme case</title>
	<para>
	<figure id="nv12mt">
	    <title>Example <constant>V4L2_PIX_FMT_NV12MT</constant> memory
layout of macroblocks</title>
	    <mediaobject>
	      <imageobject>
		<imagedata fileref="nv12mt_example.gif" format="GIF" />
	      </imageobject>
	    </mediaobject>
	</figure>
	Memory layout of macroblocks of <constant>V4L2_PIX_FMT_NV12MT
</constant> format in most extreme case.
	</para>
	</example>
      </refsect1>
    </refentry>

  <!--
Local Variables:
mode: sgml
sgml-parent-document: "pixfmt.sgml"
indent-tabs-mode: nil
End:
  -->