[media] v4l: Documentation for the NV12MT format
authorKamil Debski <k.debski@samsung.com>
Fri, 11 Mar 2011 09:16:22 +0000 (06:16 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 22 Mar 2011 07:54:22 +0000 (04:54 -0300)
Added documentation for V4L2_PIX_FMT_NV12MT format. This is a YUV 4:2:0
format with macro block size of 64x32 and specific order of macro blocks
in the memory.

Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Documentation/DocBook/media-entities.tmpl
Documentation/DocBook/v4l/nv12mt.gif [new file with mode: 0644]
Documentation/DocBook/v4l/nv12mt_example.gif [new file with mode: 0644]
Documentation/DocBook/v4l/pixfmt-nv12mt.xml [new file with mode: 0644]
Documentation/DocBook/v4l/pixfmt.xml

index 40158ee..5d259c6 100644 (file)
 <!ENTITY sub-grey SYSTEM "v4l/pixfmt-grey.xml">
 <!ENTITY sub-nv12 SYSTEM "v4l/pixfmt-nv12.xml">
 <!ENTITY sub-nv12m SYSTEM "v4l/pixfmt-nv12m.xml">
+<!ENTITY sub-nv12mt SYSTEM "v4l/pixfmt-nv12mt.xml">
 <!ENTITY sub-nv16 SYSTEM "v4l/pixfmt-nv16.xml">
 <!ENTITY sub-packed-rgb SYSTEM "v4l/pixfmt-packed-rgb.xml">
 <!ENTITY sub-packed-yuv SYSTEM "v4l/pixfmt-packed-yuv.xml">
diff --git a/Documentation/DocBook/v4l/nv12mt.gif b/Documentation/DocBook/v4l/nv12mt.gif
new file mode 100644 (file)
index 0000000..ef2d4cf
Binary files /dev/null and b/Documentation/DocBook/v4l/nv12mt.gif differ
diff --git a/Documentation/DocBook/v4l/nv12mt_example.gif b/Documentation/DocBook/v4l/nv12mt_example.gif
new file mode 100644 (file)
index 0000000..df81d68
Binary files /dev/null and b/Documentation/DocBook/v4l/nv12mt_example.gif differ
diff --git a/Documentation/DocBook/v4l/pixfmt-nv12mt.xml b/Documentation/DocBook/v4l/pixfmt-nv12mt.xml
new file mode 100644 (file)
index 0000000..5cb5bec
--- /dev/null
@@ -0,0 +1,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:
+  -->
index f8436dc..c6fdcbb 100644 (file)
@@ -709,6 +709,7 @@ information.</para>
     &sub-yuv411p;
     &sub-nv12;
     &sub-nv12m;
+    &sub-nv12mt;
     &sub-nv16;
   </section>