1<section id="planar-apis"> 2 <title>Single- and multi-planar APIs</title> 3 4 <para>Some devices require data for each input or output video frame 5 to be placed in discontiguous memory buffers. In such cases, one 6 video frame has to be addressed using more than one memory address, i.e. one 7 pointer per "plane". A plane is a sub-buffer of the current frame. For 8 examples of such formats see <xref linkend="pixfmt" />.</para> 9 10 <para>Initially, V4L2 API did not support multi-planar buffers and a set of 11 extensions has been introduced to handle them. Those extensions constitute 12 what is being referred to as the "multi-planar API".</para> 13 14 <para>Some of the V4L2 API calls and structures are interpreted differently, 15 depending on whether single- or multi-planar API is being used. An application 16 can choose whether to use one or the other by passing a corresponding buffer 17 type to its ioctl calls. Multi-planar versions of buffer types are suffixed 18 with an `_MPLANE' string. For a list of available multi-planar buffer types 19 see &v4l2-buf-type;. 20 </para> 21 22 <section> 23 <title>Multi-planar formats</title> 24 <para>Multi-planar API introduces new multi-planar formats. Those formats 25 use a separate set of FourCC codes. It is important to distinguish between 26 the multi-planar API and a multi-planar format. Multi-planar API calls can 27 handle all single-planar formats as well (as long as they are passed in 28 multi-planar API structures), while the single-planar API cannot 29 handle multi-planar formats.</para> 30 </section> 31 32 <section> 33 <title>Calls that distinguish between single and multi-planar APIs</title> 34 <variablelist> 35 <varlistentry> 36 <term>&VIDIOC-QUERYCAP;</term> 37 <listitem><para>Two additional multi-planar capabilities are added. They can 38 be set together with non-multi-planar ones for devices that handle 39 both single- and multi-planar formats.</para></listitem> 40 </varlistentry> 41 <varlistentry> 42 <term>&VIDIOC-G-FMT;, &VIDIOC-S-FMT;, &VIDIOC-TRY-FMT;</term> 43 <listitem><para>New structures for describing multi-planar formats are added: 44 &v4l2-pix-format-mplane; and &v4l2-plane-pix-format;. Drivers may 45 define new multi-planar formats, which have distinct FourCC codes from 46 the existing single-planar ones.</para> 47 </listitem> 48 </varlistentry> 49 <varlistentry> 50 <term>&VIDIOC-QBUF;, &VIDIOC-DQBUF;, &VIDIOC-QUERYBUF;</term> 51 <listitem><para>A new &v4l2-plane; structure for describing planes is added. 52 Arrays of this structure are passed in the new 53 <structfield>m.planes</structfield> field of &v4l2-buffer;.</para> 54 </listitem> 55 </varlistentry> 56 <varlistentry> 57 <term>&VIDIOC-REQBUFS;</term> 58 <listitem><para>Will allocate multi-planar buffers as requested.</para></listitem> 59 </varlistentry> 60 </variablelist> 61 </section> 62</section> 63