Commit 02a34b6a authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[media] DocBook media: update VIDIOC_CREATE_BUFS documentation

During the Seoul media workshop we decided to relax the VIDIOC_CREATE_BUFS
specification so it would no longer require drivers to validate the format
field since almost no driver did that anyway.

Instead drivers use the buffer size(s) based on the format type and the
corresponding format fields and will ignore any other fields. If the size
cannot be used an error is returned, otherwise the size is used as-is.
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent df9ecb0c
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<para>This ioctl is used to create buffers for <link linkend="mmap">memory <para>This ioctl is used to create buffers for <link linkend="mmap">memory
mapped</link> or <link linkend="userp">user pointer</link> or <link mapped</link> or <link linkend="userp">user pointer</link> or <link
linkend="dmabuf">DMA buffer</link> I/O. It can be used as an alternative or in linkend="dmabuf">DMA buffer</link> I/O. It can be used as an alternative or in
addition to the <constant>VIDIOC_REQBUFS</constant> ioctl, when a tighter addition to the &VIDIOC-REQBUFS; ioctl, when a tighter
control over buffers is required. This ioctl can be called multiple times to control over buffers is required. This ioctl can be called multiple times to
create buffers of different sizes.</para> create buffers of different sizes.</para>
...@@ -71,30 +71,28 @@ zeroed.</para> ...@@ -71,30 +71,28 @@ zeroed.</para>
<para>The <structfield>format</structfield> field specifies the image format <para>The <structfield>format</structfield> field specifies the image format
that the buffers must be able to handle. The application has to fill in this that the buffers must be able to handle. The application has to fill in this
&v4l2-format;. Usually this will be done using the &v4l2-format;. Usually this will be done using the &VIDIOC-TRY-FMT; or &VIDIOC-G-FMT; ioctls
<constant>VIDIOC_TRY_FMT</constant> or <constant>VIDIOC_G_FMT</constant> ioctl() to ensure that the requested format is supported by the driver.
to ensure that the requested format is supported by the driver. Unsupported Based on the format's <structfield>type</structfield> field the requested buffer
formats will result in an error.</para> size (for single-planar) or plane sizes (for multi-planar formats) will be
used for the allocated buffers. The driver may return an error if the size(s)
are not supported by the hardware (usually because they are too small).</para>
<para>The buffers created by this ioctl will have as minimum size the size <para>The buffers created by this ioctl will have as minimum size the size
defined by the <structfield>format.pix.sizeimage</structfield> field. If the defined by the <structfield>format.pix.sizeimage</structfield> field (or the
corresponding fields for other format types). Usually if the
<structfield>format.pix.sizeimage</structfield> field is less than the minimum <structfield>format.pix.sizeimage</structfield> field is less than the minimum
required for the given format, then <structfield>sizeimage</structfield> will be required for the given format, then an error will be returned since drivers will
increased by the driver to that minimum to allocate the buffers. If it is typically not allow this. If it is larger, then the value will be used as-is.
larger, then the value will be used as-is. The same applies to the In other words, the driver may reject the requested size, but if it is accepted
<structfield>sizeimage</structfield> field of the the driver will use it unchanged.</para>
<structname>v4l2_plane_pix_format</structname> structure in the case of
multiplanar formats.</para>
<para>When the ioctl is called with a pointer to this structure the driver <para>When the ioctl is called with a pointer to this structure the driver
will attempt to allocate up to the requested number of buffers and store the will attempt to allocate up to the requested number of buffers and store the
actual number allocated and the starting index in the actual number allocated and the starting index in the
<structfield>count</structfield> and the <structfield>index</structfield> fields <structfield>count</structfield> and the <structfield>index</structfield> fields
respectively. On return <structfield>count</structfield> can be smaller than respectively. On return <structfield>count</structfield> can be smaller than
the number requested. The driver may also increase buffer sizes if required, the number requested.</para>
however, it will not update <structfield>sizeimage</structfield> field values.
The user has to use <constant>VIDIOC_QUERYBUF</constant> to retrieve that
information.</para>
<table pgwide="1" frame="none" id="v4l2-create-buffers"> <table pgwide="1" frame="none" id="v4l2-create-buffers">
<title>struct <structname>v4l2_create_buffers</structname></title> <title>struct <structname>v4l2_create_buffers</structname></title>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment