123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <refentry id="vidioc-streamon">
- <refmeta>
- <refentrytitle>ioctl VIDIOC_STREAMON, VIDIOC_STREAMOFF</refentrytitle>
- &manvol;
- </refmeta>
- <refnamediv>
- <refname>VIDIOC_STREAMON</refname>
- <refname>VIDIOC_STREAMOFF</refname>
- <refpurpose>Start or stop streaming I/O</refpurpose>
- </refnamediv>
- <refsynopsisdiv>
- <funcsynopsis>
- <funcprototype>
- <funcdef>int <function>ioctl</function></funcdef>
- <paramdef>int <parameter>fd</parameter></paramdef>
- <paramdef>int <parameter>request</parameter></paramdef>
- <paramdef>const int *<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_STREAMON, VIDIOC_STREAMOFF</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>argp</parameter></term>
- <listitem>
- <para></para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Description</title>
- <para>The <constant>VIDIOC_STREAMON</constant> and
- <constant>VIDIOC_STREAMOFF</constant> ioctl start and stop the capture
- or output process during streaming (<link linkend="mmap">memory
- mapping</link> or <link linkend="userp">user pointer</link>) I/O.</para>
- <para>Specifically the capture hardware is disabled and no input
- buffers are filled (if there are any empty buffers in the incoming
- queue) until <constant>VIDIOC_STREAMON</constant> has been called.
- Accordingly the output hardware is disabled, no video signal is
- produced until <constant>VIDIOC_STREAMON</constant> has been called.
- The ioctl will succeed only when at least one output buffer is in the
- incoming queue.</para>
- <para>The <constant>VIDIOC_STREAMOFF</constant> ioctl, apart of
- aborting or finishing any DMA in progress, unlocks any user pointer
- buffers locked in physical memory, and it removes all buffers from the
- incoming and outgoing queues. That means all images captured but not
- dequeued yet will be lost, likewise all images enqueued for output but
- not transmitted yet. I/O returns to the same state as after calling
- &VIDIOC-REQBUFS; and can be restarted accordingly.</para>
- <para>Both ioctls take a pointer to an integer, the desired buffer or
- stream type. This is the same as &v4l2-requestbuffers;
- <structfield>type</structfield>.</para>
- <para>Note applications can be preempted for unknown periods right
- before or after the <constant>VIDIOC_STREAMON</constant> or
- <constant>VIDIOC_STREAMOFF</constant> calls, there is no notion of
- starting or stopping "now". Buffer timestamps can be used to
- synchronize with other events.</para>
- </refsect1>
- <refsect1>
- &return-value;
- <variablelist>
- <varlistentry>
- <term><errorcode>EINVAL</errorcode></term>
- <listitem>
- <para>Streaming I/O is not supported, the buffer
- <structfield>type</structfield> is not supported, or no buffers have
- been allocated (memory mapping) or enqueued (output) yet.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
- </refentry>
- <!--
- Local Variables:
- mode: sgml
- sgml-parent-document: "v4l2.sgml"
- indent-tabs-mode: nil
- End:
- -->
|