blob: 200a2704a970842f68839a0afb2ffd7807b5897f [file] [log] [blame]
<refentry id="vidioc-g-audioout">
<refmeta>
<refentrytitle>ioctl VIDIOC_G_AUDOUT, VIDIOC_S_AUDOUT</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
<refname>VIDIOC_G_AUDOUT</refname>
<refname>VIDIOC_S_AUDOUT</refname>
<refpurpose>Query or select the current audio output</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_audioout *<parameter>argp</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>ioctl</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>request</parameter></paramdef>
<paramdef>const struct v4l2_audioout *<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_G_AUDOUT, VIDIOC_S_AUDOUT</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>argp</parameter></term>
<listitem>
<para></para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Description</title>
<para>To query the current audio output applications zero out the
<structfield>reserved</structfield> array of a &v4l2-audioout; and
call the <constant>VIDIOC_G_AUDOUT</constant> ioctl with a pointer
to this structure. Drivers fill the rest of the structure or return an
&EINVAL; when the device has no audio inputs, or none which combine
with the current video output.</para>
<para>Audio outputs have no writable properties. Nevertheless, to
select the current audio output applications can initialize the
<structfield>index</structfield> field and
<structfield>reserved</structfield> array (which in the future may
contain writable properties) of a
<structname>v4l2_audioout</structname> structure and call the
<constant>VIDIOC_S_AUDOUT</constant> ioctl. Drivers switch to the
requested output or return the &EINVAL; when the index is out of
bounds. This is a write-only ioctl, it does not return the current
audio output attributes as <constant>VIDIOC_G_AUDOUT</constant>
does.</para>
<para>Note connectors on a TV card to loop back the received audio
signal to a sound card are not audio outputs in this sense.</para>
<table pgwide="1" frame="none" id="v4l2-audioout">
<title>struct <structname>v4l2_audioout</structname></title>
<tgroup cols="3">
&cs-str;
<tbody valign="top">
<row>
<entry>__u32</entry>
<entry><structfield>index</structfield></entry>
<entry>Identifies the audio output, set by the
driver or application.</entry>
</row>
<row>
<entry>__u8</entry>
<entry><structfield>name</structfield>[32]</entry>
<entry>Name of the audio output, a NUL-terminated ASCII
string, for example: "Line Out". This information is intended for the
user, preferably the connector label on the device itself.</entry>
</row>
<row>
<entry>__u32</entry>
<entry><structfield>capability</structfield></entry>
<entry>Audio capability flags, none defined yet. Drivers
must set this field to zero.</entry>
</row>
<row>
<entry>__u32</entry>
<entry><structfield>mode</structfield></entry>
<entry>Audio mode, none defined yet. Drivers and
applications (on <constant>VIDIOC_S_AUDOUT</constant>) must set this
field to zero.</entry>
</row>
<row>
<entry>__u32</entry>
<entry><structfield>reserved</structfield>[2]</entry>
<entry>Reserved for future extensions. Drivers and
applications must set the array to zero.</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
<refsect1>
&return-value;
<variablelist>
<varlistentry>
<term><errorcode>EINVAL</errorcode></term>
<listitem>
<para>No audio outputs combine with the current video
output, or the number of the selected audio output is out of bounds or
it does not combine.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
</refentry>