123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- <refentry id="vidioc-enum-frameintervals">
- <refmeta>
- <refentrytitle>ioctl VIDIOC_ENUM_FRAMEINTERVALS</refentrytitle>
- &manvol;
- </refmeta>
- <refnamediv>
- <refname>VIDIOC_ENUM_FRAMEINTERVALS</refname>
- <refpurpose>Enumerate frame intervals</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_frmivalenum *<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_ENUM_FRAMEINTERVALS</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>argp</parameter></term>
- <listitem>
- <para>Pointer to a &v4l2-frmivalenum; structure that
- contains a pixel format and size and receives a frame interval.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Description</title>
- <para>This ioctl allows applications to enumerate all frame
- intervals that the device supports for the given pixel format and
- frame size.</para>
- <para>The supported pixel formats and frame sizes can be obtained
- by using the &VIDIOC-ENUM-FMT; and &VIDIOC-ENUM-FRAMESIZES;
- functions.</para>
- <para>The return value and the content of the
- <structfield>v4l2_frmivalenum.type</structfield> field depend on the
- type of frame intervals the device supports. Here are the semantics of
- the function for the different cases:</para>
- <itemizedlist>
- <listitem>
- <para><emphasis role="bold">Discrete:</emphasis> The function
- returns success if the given index value (zero-based) is valid. The
- application should increase the index by one for each call until
- <constant>EINVAL</constant> is returned. The `v4l2_frmivalenum.type`
- field is set to `V4L2_FRMIVAL_TYPE_DISCRETE` by the driver. Of the
- union only the `discrete` member is valid.</para>
- </listitem>
- <listitem>
- <para><emphasis role="bold">Step-wise:</emphasis> The function
- returns success if the given index value is zero and
- <constant>EINVAL</constant> for any other index value. The
- <structfield>v4l2_frmivalenum.type</structfield> field is set to
- <constant>V4L2_FRMIVAL_TYPE_STEPWISE</constant> by the driver. Of the
- union only the <structfield>stepwise</structfield> member is
- valid.</para>
- </listitem>
- <listitem>
- <para><emphasis role="bold">Continuous:</emphasis> This is a
- special case of the step-wise type above. The function returns success
- if the given index value is zero and <constant>EINVAL</constant> for
- any other index value. The
- <structfield>v4l2_frmivalenum.type</structfield> field is set to
- <constant>V4L2_FRMIVAL_TYPE_CONTINUOUS</constant> by the driver. Of
- the union only the <structfield>stepwise</structfield> member is valid
- and the <structfield>step</structfield> value is set to 1.</para>
- </listitem>
- </itemizedlist>
- <para>When the application calls the function with index zero, it
- must check the <structfield>type</structfield> field to determine the
- type of frame interval enumeration the device supports. Only for the
- <constant>V4L2_FRMIVAL_TYPE_DISCRETE</constant> type does it make
- sense to increase the index value to receive more frame
- intervals.</para>
- <para>Note that the order in which the frame intervals are
- returned has no special meaning. In particular does it not say
- anything about potential default frame intervals.</para>
- <para>Applications can assume that the enumeration data does not
- change without any interaction from the application itself. This means
- that the enumeration data is consistent if the application does not
- perform any other ioctl calls while it runs the frame interval
- enumeration.</para>
- </refsect1>
- <refsect1>
- <title>Notes</title>
- <itemizedlist>
- <listitem>
- <para><emphasis role="bold">Frame intervals and frame
- rates:</emphasis> The V4L2 API uses frame intervals instead of frame
- rates. Given the frame interval the frame rate can be computed as
- follows:<screen>frame_rate = 1 / frame_interval</screen></para>
- </listitem>
- </itemizedlist>
- </refsect1>
- <refsect1>
- <title>Structs</title>
- <para>In the structs below, <emphasis>IN</emphasis> denotes a
- value that has to be filled in by the application,
- <emphasis>OUT</emphasis> denotes values that the driver fills in. The
- application should zero out all members except for the
- <emphasis>IN</emphasis> fields.</para>
- <table pgwide="1" frame="none" id="v4l2-frmival-stepwise">
- <title>struct <structname>v4l2_frmival_stepwise</structname></title>
- <tgroup cols="3">
- &cs-str;
- <tbody valign="top">
- <row>
- <entry>&v4l2-fract;</entry>
- <entry><structfield>min</structfield></entry>
- <entry>Minimum frame interval [s].</entry>
- </row>
- <row>
- <entry>&v4l2-fract;</entry>
- <entry><structfield>max</structfield></entry>
- <entry>Maximum frame interval [s].</entry>
- </row>
- <row>
- <entry>&v4l2-fract;</entry>
- <entry><structfield>step</structfield></entry>
- <entry>Frame interval step size [s].</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <table pgwide="1" frame="none" id="v4l2-frmivalenum">
- <title>struct <structname>v4l2_frmivalenum</structname></title>
- <tgroup cols="4">
- <colspec colname="c1" />
- <colspec colname="c2" />
- <colspec colname="c3" />
- <colspec colname="c4" />
- <tbody valign="top">
- <row>
- <entry>__u32</entry>
- <entry><structfield>index</structfield></entry>
- <entry></entry>
- <entry>IN: Index of the given frame interval in the
- enumeration.</entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>pixel_format</structfield></entry>
- <entry></entry>
- <entry>IN: Pixel format for which the frame intervals are
- enumerated.</entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>width</structfield></entry>
- <entry></entry>
- <entry>IN: Frame width for which the frame intervals are
- enumerated.</entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>height</structfield></entry>
- <entry></entry>
- <entry>IN: Frame height for which the frame intervals are
- enumerated.</entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>type</structfield></entry>
- <entry></entry>
- <entry>OUT: Frame interval type the device supports.</entry>
- </row>
- <row>
- <entry>union</entry>
- <entry></entry>
- <entry></entry>
- <entry>OUT: Frame interval with the given index.</entry>
- </row>
- <row>
- <entry></entry>
- <entry>&v4l2-fract;</entry>
- <entry><structfield>discrete</structfield></entry>
- <entry>Frame interval [s].</entry>
- </row>
- <row>
- <entry></entry>
- <entry>&v4l2-frmival-stepwise;</entry>
- <entry><structfield>stepwise</structfield></entry>
- <entry></entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>reserved[2]</structfield></entry>
- <entry></entry>
- <entry>Reserved space for future use.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </refsect1>
- <refsect1>
- <title>Enums</title>
- <table pgwide="1" frame="none" id="v4l2-frmivaltypes">
- <title>enum <structname>v4l2_frmivaltypes</structname></title>
- <tgroup cols="3">
- &cs-def;
- <tbody valign="top">
- <row>
- <entry><constant>V4L2_FRMIVAL_TYPE_DISCRETE</constant></entry>
- <entry>1</entry>
- <entry>Discrete frame interval.</entry>
- </row>
- <row>
- <entry><constant>V4L2_FRMIVAL_TYPE_CONTINUOUS</constant></entry>
- <entry>2</entry>
- <entry>Continuous frame interval.</entry>
- </row>
- <row>
- <entry><constant>V4L2_FRMIVAL_TYPE_STEPWISE</constant></entry>
- <entry>3</entry>
- <entry>Step-wise defined frame interval.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </refsect1>
- <refsect1>
- &return-value;
- <para>See the description section above for a list of return
- values that <varname>errno</varname> can have.</para>
- </refsect1>
- </refentry>
- <!--
- Local Variables:
- mode: sgml
- sgml-parent-document: "v4l2.sgml"
- indent-tabs-mode: nil
- End:
- -->
|