About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / DocBook / media / v4l / pixfmt-nv12mt.xml


Based on kernel version 4.7.2. Page generated on 2016-08-22 22:45 EST.

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 &frac12; 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 adjacent 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>
52		<figure id="nv12mt_ex">
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>
Hide Line Numbers


About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog