333c8b9778
Add a userspace API to get, set and enumerate the media format on a subdev pad. The format at the output of a subdev usually depends on the format at its input(s). The try format operation is thus not suitable for probing format at individual pads, as it can't modify the device state and thus can't remember the format tried at the input to compute the output format. To fix the problem, pass an extra argument to the get/set format operations to select the 'try' or 'active' format. The try format is used when probing the subdev. Setting the try format must not change the device configuration but can store data for later reuse. Data storage is provided at the file-handle level so applications probing the subdev concurently won't interfere with each other. The active format is used when configuring the subdev. It's identical to the format handled by the usual get/set operations. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Stanimir Varbanov <svarbanov@mm-sol.com> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi> Acked-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
120 lines
3.6 KiB
XML
120 lines
3.6 KiB
XML
<refentry id="vidioc-subdev-enum-mbus-code">
|
|
<refmeta>
|
|
<refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE</refentrytitle>
|
|
&manvol;
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>VIDIOC_SUBDEV_ENUM_MBUS_CODE</refname>
|
|
<refpurpose>Enumerate media bus formats</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsynopsisdiv>
|
|
<funcsynopsis>
|
|
<funcprototype>
|
|
<funcdef>int <function>ioctl</function></funcdef>
|
|
<paramdef>int <parameter>fd</parameter></paramdef>
|
|
<paramdef>int <parameter>request</parameter></paramdef>
|
|
<paramdef>struct v4l2_subdev_mbus_code_enum *
|
|
<parameter>argp</parameter></paramdef>
|
|
</funcprototype>
|
|
</funcsynopsis>
|
|
</refsynopsisdiv>
|
|
|
|
<refsect1>
|
|
<title>Arguments</title>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>fd</parameter></term>
|
|
<listitem>
|
|
<para>&fd;</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>request</parameter></term>
|
|
<listitem>
|
|
<para>VIDIOC_SUBDEV_ENUM_MBUS_CODE</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>argp</parameter></term>
|
|
<listitem>
|
|
<para></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Description</title>
|
|
|
|
<note>
|
|
<title>Experimental</title>
|
|
<para>This is an <link linkend="experimental">experimental</link>
|
|
interface and may change in the future.</para>
|
|
</note>
|
|
|
|
<para>To enumerate media bus formats available at a given sub-device pad
|
|
applications initialize the <structfield>pad</structfield> and
|
|
<structfield>index</structfield> fields of &v4l2-subdev-mbus-code-enum; and
|
|
call the <constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant> ioctl with a
|
|
pointer to this structure. Drivers fill the rest of the structure or return
|
|
an &EINVAL; if either the <structfield>pad</structfield> or
|
|
<structfield>index</structfield> are invalid. All media bus formats are
|
|
enumerable by beginning at index zero and incrementing by one until
|
|
<errorcode>EINVAL</errorcode> is returned.</para>
|
|
|
|
<para>Available media bus formats may depend on the current 'try' formats
|
|
at other pads of the sub-device, as well as on the current active links. See
|
|
&VIDIOC-SUBDEV-G-FMT; for more information about the try formats.</para>
|
|
|
|
<table pgwide="1" frame="none" id="v4l2-subdev-mbus-code-enum">
|
|
<title>struct <structname>v4l2_subdev_mbus_code_enum</structname></title>
|
|
<tgroup cols="3">
|
|
&cs-str;
|
|
<tbody valign="top">
|
|
<row>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>pad</structfield></entry>
|
|
<entry>Pad number as reported by the media controller API.</entry>
|
|
</row>
|
|
<row>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>index</structfield></entry>
|
|
<entry>Number of the format in the enumeration, set by the
|
|
application.</entry>
|
|
</row>
|
|
<row>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>code</structfield></entry>
|
|
<entry>The media bus format code, as defined in
|
|
<xref linkend="v4l2-mbus-format" />.</entry>
|
|
</row>
|
|
<row>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>reserved</structfield>[9]</entry>
|
|
<entry>Reserved for future extensions. Applications and drivers must
|
|
set the array to zero.</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
&return-value;
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><errorcode>EINVAL</errorcode></term>
|
|
<listitem>
|
|
<para>The &v4l2-subdev-mbus-code-enum; <structfield>pad</structfield>
|
|
references a non-existing pad, or the <structfield>index</structfield>
|
|
field is out of bounds.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
</refentry>
|