<refentry id="vidioc-enumoutput">
  <refmeta>
    <refentrytitle>ioctl VIDIOC_ENUMOUTPUT</refentrytitle>
    &manvol;
  </refmeta>

  <refnamediv>
    <refname>VIDIOC_ENUMOUTPUT</refname>
    <refpurpose>Enumerate video outputs</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_output *<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_ENUMOUTPUT</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 a video outputs applications
initialize the <structfield>index</structfield> field of &v4l2-output;
and call the <constant>VIDIOC_ENUMOUTPUT</constant> ioctl with a
pointer to this structure. Drivers fill the rest of the structure or
return an &EINVAL; when the index is out of bounds. To enumerate all
outputs applications shall begin at index zero, incrementing by one
until the driver returns <errorcode>EINVAL</errorcode>.</para>

    <table frame="none" pgwide="1" id="v4l2-output">
      <title>struct <structname>v4l2_output</structname></title>
      <tgroup cols="3">
	&cs-str;
	<tbody valign="top">
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>index</structfield></entry>
	    <entry>Identifies the output, set by the
application.</entry>
	  </row>
	  <row>
	    <entry>__u8</entry>
	    <entry><structfield>name</structfield>[32]</entry>
	    <entry>Name of the video output, a NUL-terminated ASCII
string, for example: "Vout". This information is intended for the
user, preferably the connector label on the device itself.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>type</structfield></entry>
	    <entry>Type of the output, see <xref
		linkend="output-type" />.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>audioset</structfield></entry>
	    <entry><para>Drivers can enumerate up to 32 video and
audio outputs. This field shows which audio outputs were
selectable as the current output if this was the currently selected
video output. It is a bit mask. The LSB corresponds to audio output 0,
the MSB to output 31. Any number of bits can be set, or
none.</para><para>When the driver does not enumerate audio outputs no
bits must be set. Applications shall not interpret this as lack of
audio support. Drivers may automatically select audio outputs without
enumerating them.</para><para>For details on audio outputs and how to
select the current output see <xref linkend="audio" />.</para></entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>modulator</structfield></entry>
	    <entry>Output devices can have zero or more RF modulators.
When the <structfield>type</structfield> is
<constant>V4L2_OUTPUT_TYPE_MODULATOR</constant> this is an RF
connector and this field identifies the modulator. It corresponds to
&v4l2-modulator; field <structfield>index</structfield>. For details
on modulators see <xref linkend="tuner" />.</entry>
	  </row>
	  <row>
	    <entry>&v4l2-std-id;</entry>
	    <entry><structfield>std</structfield></entry>
	    <entry>Every video output supports one or more different
video standards. This field is a set of all supported standards. For
details on video standards and how to switch see <xref
		linkend="standard" />.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>capabilities</structfield></entry>
	    <entry>This field provides capabilities for the
output. See <xref linkend="output-capabilities" /> for flags.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>reserved</structfield>[3]</entry>
	    <entry>Reserved for future extensions. Drivers must set
the array to zero.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table frame="none" pgwide="1" id="output-type">
      <title>Output Type</title>
      <tgroup cols="3">
	&cs-def;
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_OUTPUT_TYPE_MODULATOR</constant></entry>
	    <entry>1</entry>
	    <entry>This output is an analog TV modulator.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_OUTPUT_TYPE_ANALOG</constant></entry>
	    <entry>2</entry>
	    <entry>Analog baseband output, for example Composite /
CVBS, S-Video, RGB.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY</constant></entry>
	    <entry>3</entry>
	    <entry>[?]</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <!-- Capabilities flags based on video timings RFC by Muralidharan
Karicheri, titled RFC (v1.2): V4L - Support for video timings at the
input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
	-->
    <table frame="none" pgwide="1" id="output-capabilities">
      <title>Output capabilities</title>
      <tgroup cols="3">
	&cs-def;
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_OUT_CAP_DV_TIMINGS</constant></entry>
	    <entry>0x00000002</entry>
	    <entry>This output supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_OUT_CAP_STD</constant></entry>
	    <entry>0x00000004</entry>
	    <entry>This output supports setting the TV standard by using VIDIOC_S_STD.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_OUT_CAP_NATIVE_SIZE</constant></entry>
	    <entry>0x00000008</entry>
	    <entry>This output supports setting the native size using
	    the <constant>V4L2_SEL_TGT_NATIVE_SIZE</constant>
	    selection target, see <xref
	    linkend="v4l2-selections-common"/>.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

  </refsect1>
  <refsect1>
    &return-value;

    <variablelist>
      <varlistentry>
	<term><errorcode>EINVAL</errorcode></term>
	<listitem>
	  <para>The &v4l2-output; <structfield>index</structfield>
is out of bounds.</para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>
</refentry>
