7e182f7898
The alsa struct in struct media_entity_desc is now marked as deprecated. However, the alsa struct should remain as it is since it cannot be replaced by a simple major/minor device node description. The alsa struct was designed to be used as an alsa card description so V4L2 drivers could use this to expose the alsa card that they create to carry the captured audio. Such a card is not just a PCM device, but also needs to contain the alsa subdevice information, and it may map to multiple devices, e.g. a PCM and a mixer device, such as the au0828 usb stick creates. This is exactly as intended and this cannot and should not be replaced by a simple major/minor. However, whether this information is in the right form for an ALSA device such that it can handle udev renaming rules as well is another matter. So mark this alsa struct as TODO and document the problems involved. Updated the documentation as well to reflect this and to add the 'major' and 'minor' field documentation. Updated the documentation to clearly state that struct dev is to be used for (sub-)devices that create a single device node. Other devices need their own structure here. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
281 lines
8.6 KiB
XML
281 lines
8.6 KiB
XML
<refentry id="media-ioc-enum-entities">
|
|
<refmeta>
|
|
<refentrytitle>ioctl MEDIA_IOC_ENUM_ENTITIES</refentrytitle>
|
|
&manvol;
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>MEDIA_IOC_ENUM_ENTITIES</refname>
|
|
<refpurpose>Enumerate entities and their properties</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 media_entity_desc *<parameter>argp</parameter></paramdef>
|
|
</funcprototype>
|
|
</funcsynopsis>
|
|
</refsynopsisdiv>
|
|
|
|
<refsect1>
|
|
<title>Arguments</title>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>fd</parameter></term>
|
|
<listitem>
|
|
<para>File descriptor returned by
|
|
<link linkend='media-func-open'><function>open()</function></link>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>request</parameter></term>
|
|
<listitem>
|
|
<para>MEDIA_IOC_ENUM_ENTITIES</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>argp</parameter></term>
|
|
<listitem>
|
|
<para></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<para>To query the attributes of an entity, applications set the id field
|
|
of a &media-entity-desc; structure and call the MEDIA_IOC_ENUM_ENTITIES
|
|
ioctl with a pointer to this structure. The driver fills the rest of the
|
|
structure or returns an &EINVAL; when the id is invalid.</para>
|
|
<para>Entities can be enumerated by or'ing the id with the
|
|
<constant>MEDIA_ENT_ID_FLAG_NEXT</constant> flag. The driver will return
|
|
information about the entity with the smallest id strictly larger than the
|
|
requested one ('next entity'), or the &EINVAL; if there is none.</para>
|
|
<para>Entity IDs can be non-contiguous. Applications must
|
|
<emphasis>not</emphasis> try to enumerate entities by calling
|
|
MEDIA_IOC_ENUM_ENTITIES with increasing id's until they get an error.</para>
|
|
<para>Two or more entities that share a common non-zero
|
|
<structfield>group_id</structfield> value are considered as logically
|
|
grouped. Groups are used to report
|
|
<itemizedlist>
|
|
<listitem><para>ALSA, VBI and video nodes that carry the same media
|
|
stream</para></listitem>
|
|
<listitem><para>lens and flash controllers associated with a sensor</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<table pgwide="1" frame="none" id="media-entity-desc">
|
|
<title>struct <structname>media_entity_desc</structname></title>
|
|
<tgroup cols="5">
|
|
<colspec colname="c1" />
|
|
<colspec colname="c2" />
|
|
<colspec colname="c3" />
|
|
<colspec colname="c4" />
|
|
<colspec colname="c5" />
|
|
<tbody valign="top">
|
|
<row>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>id</structfield></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>Entity id, set by the application. When the id is or'ed with
|
|
<constant>MEDIA_ENT_ID_FLAG_NEXT</constant>, the driver clears the
|
|
flag and returns the first entity with a larger id.</entry>
|
|
</row>
|
|
<row>
|
|
<entry>char</entry>
|
|
<entry><structfield>name</structfield>[32]</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>Entity name as an UTF-8 NULL-terminated string.</entry>
|
|
</row>
|
|
<row>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>type</structfield></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>Entity type, see <xref linkend="media-entity-type" /> for details.</entry>
|
|
</row>
|
|
<row>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>revision</structfield></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>Entity revision in a driver/hardware specific format.</entry>
|
|
</row>
|
|
<row>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>flags</structfield></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>Entity flags, see <xref linkend="media-entity-flag" /> for details.</entry>
|
|
</row>
|
|
<row>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>group_id</structfield></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>Entity group ID</entry>
|
|
</row>
|
|
<row>
|
|
<entry>__u16</entry>
|
|
<entry><structfield>pads</structfield></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>Number of pads</entry>
|
|
</row>
|
|
<row>
|
|
<entry>__u16</entry>
|
|
<entry><structfield>links</structfield></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>Total number of outbound links. Inbound links are not counted
|
|
in this field.</entry>
|
|
</row>
|
|
<row>
|
|
<entry>union</entry>
|
|
</row>
|
|
<row>
|
|
<entry></entry>
|
|
<entry>struct</entry>
|
|
<entry><structfield>dev</structfield></entry>
|
|
<entry></entry>
|
|
<entry>Valid for (sub-)devices that create a single device node.</entry>
|
|
</row>
|
|
<row>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>major</structfield></entry>
|
|
<entry>Device node major number.</entry>
|
|
</row>
|
|
<row>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>__u32</entry>
|
|
<entry><structfield>minor</structfield></entry>
|
|
<entry>Device node minor number.</entry>
|
|
</row>
|
|
<row>
|
|
<entry></entry>
|
|
<entry>__u8</entry>
|
|
<entry><structfield>raw</structfield>[184]</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<table frame="none" pgwide="1" id="media-entity-type">
|
|
<title>Media entity types</title>
|
|
<tgroup cols="2">
|
|
<colspec colname="c1"/>
|
|
<colspec colname="c2"/>
|
|
<tbody valign="top">
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_DEVNODE</constant></entry>
|
|
<entry>Unknown device node</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_DEVNODE_V4L</constant></entry>
|
|
<entry>V4L video, radio or vbi device node</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_DEVNODE_FB</constant></entry>
|
|
<entry>Frame buffer device node</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_DEVNODE_ALSA</constant></entry>
|
|
<entry>ALSA card</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_DEVNODE_DVB_FE</constant></entry>
|
|
<entry>DVB frontend devnode</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_DEVNODE_DVB_DEMUX</constant></entry>
|
|
<entry>DVB demux devnode</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_DEVNODE_DVB_DVR</constant></entry>
|
|
<entry>DVB DVR devnode</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_DEVNODE_DVB_CA</constant></entry>
|
|
<entry>DVB CAM devnode</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_DEVNODE_DVB_NET</constant></entry>
|
|
<entry>DVB network devnode</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_V4L2_SUBDEV</constant></entry>
|
|
<entry>Unknown V4L sub-device</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_SENSOR</constant></entry>
|
|
<entry>Video sensor</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_FLASH</constant></entry>
|
|
<entry>Flash controller</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_LENS</constant></entry>
|
|
<entry>Lens controller</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_DECODER</constant></entry>
|
|
<entry>Video decoder, the basic function of the video decoder is to
|
|
accept analogue video from a wide variety of sources such as
|
|
broadcast, DVD players, cameras and video cassette recorders, in
|
|
either NTSC, PAL or HD format and still occasionally SECAM, separate
|
|
it into its component parts, luminance and chrominance, and output
|
|
it in some digital video standard, with appropriate embedded timing
|
|
signals.</entry>
|
|
</row>
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_T_V4L2_SUBDEV_TUNER</constant></entry>
|
|
<entry>TV and/or radio tuner</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<table frame="none" pgwide="1" id="media-entity-flag">
|
|
<title>Media entity flags</title>
|
|
<tgroup cols="2">
|
|
<colspec colname="c1"/>
|
|
<colspec colname="c2"/>
|
|
<tbody valign="top">
|
|
<row>
|
|
<entry><constant>MEDIA_ENT_FL_DEFAULT</constant></entry>
|
|
<entry>Default entity for its type. Used to discover the default
|
|
audio, VBI and video devices, the default camera sensor, ...</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
&return-value;
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><errorcode>EINVAL</errorcode></term>
|
|
<listitem>
|
|
<para>The &media-entity-desc; <structfield>id</structfield> references
|
|
a non-existing entity.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
</refentry>
|