ARM: 7409/1: Do not call flush_cache_user_range with mmap_sem held
[linux/fpc-iii.git] / Documentation / DocBook / v4l / pixfmt-nv12mt.xml
blob7a2855a526c1119a734a5c5a6d1b30f4de66c0c5
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>
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>
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>
68   <!--
69 Local Variables:
70 mode: sgml
71 sgml-parent-document: "pixfmt.sgml"
72 indent-tabs-mode: nil
73 End:
74   -->