Commit | Line | Data |
---|---|---|
bd08a0cd KD |
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> | |
34fd68bc | 52 | <figure id="nv12mt_ex"> |
bd08a0cd KD |
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 | --> |