Blame view

kernel/linux-rt-4.4.41/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml 2.59 KB
5113f6f70   김현기   kernel add
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
      <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 adjacent 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_ex">
  	    <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>