2010-03-27 10:58:24 -03:00
<refentry id= "vidioc-dqevent" >
<refmeta >
<refentrytitle > ioctl VIDIOC_DQEVENT</refentrytitle>
&manvol;
</refmeta>
<refnamediv >
<refname > VIDIOC_DQEVENT</refname>
<refpurpose > Dequeue event</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_event
*<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_DQEVENT</para>
</listitem>
</varlistentry>
<varlistentry >
<term > <parameter > argp</parameter> </term>
<listitem >
<para > </para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 >
<title > Description</title>
<para > Dequeue an event from a video device. No input is required
for this ioctl. All the fields of the &v4l2-event; structure are
filled by the driver. The file handle will also receive exceptions
which the application may get by e.g. using the select system
call.</para>
<table frame= "none" pgwide= "1" id= "v4l2-event" >
<title > struct <structname > v4l2_event</structname> </title>
<tgroup cols= "4" >
&cs-str;
<tbody valign= "top" >
<row >
<entry > __u32</entry>
<entry > <structfield > type</structfield> </entry>
<entry > </entry>
<entry > Type of the event.</entry>
</row>
<row >
<entry > union</entry>
<entry > <structfield > u</structfield> </entry>
<entry > </entry>
<entry > </entry>
</row>
2010-03-27 14:10:57 -03:00
<row >
<entry > </entry>
<entry > &v4l2-event-vsync; </entry>
<entry > <structfield > vsync</structfield> </entry>
2014-08-06 03:52:08 -03:00
<entry > Event data for event <constant > V4L2_EVENT_VSYNC</constant> .
2010-03-27 14:10:57 -03:00
</entry>
</row>
2011-06-07 09:53:37 -03:00
<row >
<entry > </entry>
<entry > &v4l2-event-ctrl; </entry>
<entry > <structfield > ctrl</structfield> </entry>
2014-08-06 03:52:08 -03:00
<entry > Event data for event <constant > V4L2_EVENT_CTRL</constant> .
2011-06-07 09:53:37 -03:00
</entry>
</row>
2011-07-18 08:40:03 -03:00
<row >
<entry > </entry>
<entry > &v4l2-event-frame-sync; </entry>
2012-06-09 06:59:45 -03:00
<entry > <structfield > frame_sync</structfield> </entry>
2014-08-06 03:52:08 -03:00
<entry > Event data for event
<constant > V4L2_EVENT_FRAME_SYNC</constant> .</entry>
2011-07-18 08:40:03 -03:00
</row>
2014-01-31 06:22:58 -03:00
<row >
<entry > </entry>
<entry > &v4l2-event-motion-det; </entry>
<entry > <structfield > motion_det</structfield> </entry>
<entry > Event data for event V4L2_EVENT_MOTION_DET.</entry>
</row>
2014-06-13 09:28:59 -03:00
<row >
<entry > </entry>
<entry > &v4l2-event-src-change; </entry>
<entry > <structfield > src_change</structfield> </entry>
<entry > Event data for event V4L2_EVENT_SOURCE_CHANGE.</entry>
</row>
2010-03-27 10:58:24 -03:00
<row >
<entry > </entry>
<entry > __u8</entry>
<entry > <structfield > data</structfield> [64]</entry>
<entry > Event data. Defined by the event type. The union
should be used to define easily accessible type for
events.</entry>
</row>
<row >
<entry > __u32</entry>
<entry > <structfield > pending</structfield> </entry>
<entry > </entry>
<entry > Number of pending events excluding this one.</entry>
</row>
<row >
<entry > __u32</entry>
<entry > <structfield > sequence</structfield> </entry>
<entry > </entry>
<entry > Event sequence number. The sequence number is
incremented for every subscribed event that takes place.
If sequence numbers are not contiguous it means that
events have been lost.
</entry>
</row>
<row >
2010-03-27 14:10:57 -03:00
<entry > struct timespec</entry>
2010-03-27 10:58:24 -03:00
<entry > <structfield > timestamp</structfield> </entry>
<entry > </entry>
<entry > Event timestamp.</entry>
</row>
2011-06-07 09:53:37 -03:00
<row >
<entry > u32</entry>
<entry > <structfield > id</structfield> </entry>
<entry > </entry>
<entry > The ID associated with the event source. If the event does not
have an associated ID (this depends on the event type), then this
is 0.</entry>
</row>
2010-03-27 10:58:24 -03:00
<row >
<entry > __u32</entry>
2011-06-07 09:53:37 -03:00
<entry > <structfield > reserved</structfield> [8]</entry>
2010-03-27 10:58:24 -03:00
<entry > </entry>
<entry > Reserved for future extensions. Drivers must set
the array to zero.</entry>
</row>
</tbody>
</tgroup>
</table>
2011-07-18 11:03:05 -03:00
<table frame= "none" pgwide= "1" id= "v4l2-event-vsync" >
<title > struct <structname > v4l2_event_vsync</structname> </title>
<tgroup cols= "3" >
&cs-str;
<tbody valign= "top" >
<row >
<entry > __u8</entry>
<entry > <structfield > field</structfield> </entry>
<entry > The upcoming field. See &v4l2-field; .</entry>
</row>
</tbody>
</tgroup>
</table>
<table frame= "none" pgwide= "1" id= "v4l2-event-ctrl" >
<title > struct <structname > v4l2_event_ctrl</structname> </title>
<tgroup cols= "4" >
&cs-str;
<tbody valign= "top" >
<row >
<entry > __u32</entry>
<entry > <structfield > changes</structfield> </entry>
<entry > </entry>
<entry > A bitmask that tells what has changed. See <xref linkend= "changes-flags" /> .</entry>
</row>
<row >
<entry > __u32</entry>
<entry > <structfield > type</structfield> </entry>
<entry > </entry>
<entry > The type of the control. See &v4l2-ctrl-type; .</entry>
</row>
<row >
<entry > union (anonymous)</entry>
<entry > </entry>
<entry > </entry>
<entry > </entry>
</row>
<row >
<entry > </entry>
<entry > __s32</entry>
<entry > <structfield > value</structfield> </entry>
<entry > The 32-bit value of the control for 32-bit control types.
This is 0 for string controls since the value of a string
cannot be passed using &VIDIOC-DQEVENT; .</entry>
</row>
<row >
<entry > </entry>
<entry > __s64</entry>
<entry > <structfield > value64</structfield> </entry>
<entry > The 64-bit value of the control for 64-bit control types.</entry>
</row>
<row >
<entry > __u32</entry>
<entry > <structfield > flags</structfield> </entry>
<entry > </entry>
<entry > The control flags. See <xref linkend= "control-flags" /> .</entry>
</row>
<row >
<entry > __s32</entry>
<entry > <structfield > minimum</structfield> </entry>
<entry > </entry>
<entry > The minimum value of the control. See &v4l2-queryctrl; .</entry>
</row>
<row >
<entry > __s32</entry>
<entry > <structfield > maximum</structfield> </entry>
<entry > </entry>
<entry > The maximum value of the control. See &v4l2-queryctrl; .</entry>
</row>
<row >
<entry > __s32</entry>
<entry > <structfield > step</structfield> </entry>
<entry > </entry>
<entry > The step value of the control. See &v4l2-queryctrl; .</entry>
</row>
<row >
<entry > __s32</entry>
<entry > <structfield > default_value</structfield> </entry>
<entry > </entry>
<entry > The default value value of the control. See &v4l2-queryctrl; .</entry>
</row>
</tbody>
</tgroup>
</table>
2011-07-18 08:40:03 -03:00
<table frame= "none" pgwide= "1" id= "v4l2-event-frame-sync" >
<title > struct <structname > v4l2_event_frame_sync</structname> </title>
<tgroup cols= "3" >
&cs-str;
<tbody valign= "top" >
<row >
<entry > __u32</entry>
<entry > <structfield > frame_sequence</structfield> </entry>
<entry >
The sequence number of the frame being received.
</entry>
</row>
</tbody>
</tgroup>
</table>
2014-05-14 03:59:42 -03:00
<table frame= "none" pgwide= "1" id= "v4l2-event-src-change" >
<title > struct <structname > v4l2_event_src_change</structname> </title>
<tgroup cols= "3" >
&cs-str;
<tbody valign= "top" >
<row >
<entry > __u32</entry>
<entry > <structfield > changes</structfield> </entry>
<entry >
A bitmask that tells what has changed. See <xref linkend= "src-changes-flags" /> .
</entry>
</row>
</tbody>
</tgroup>
</table>
2014-01-31 06:22:58 -03:00
<table frame= "none" pgwide= "1" id= "v4l2-event-motion-det" >
<title > struct <structname > v4l2_event_motion_det</structname> </title>
<tgroup cols= "3" >
&cs-str;
<tbody valign= "top" >
<row >
<entry > __u32</entry>
<entry > <structfield > flags</structfield> </entry>
<entry >
Currently only one flag is available: if <constant > V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ</constant>
is set, then the <structfield > frame_sequence</structfield> field is valid,
otherwise that field should be ignored.
</entry>
</row>
<row >
<entry > __u32</entry>
<entry > <structfield > frame_sequence</structfield> </entry>
<entry >
The sequence number of the frame being received. Only valid if the
<constant > V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ</constant> flag was set.
</entry>
</row>
<row >
<entry > __u32</entry>
<entry > <structfield > region_mask</structfield> </entry>
<entry >
The bitmask of the regions that reported motion. There is at least one
region. If this field is 0, then no motion was detected at all.
If there is no <constant > V4L2_CID_DETECT_MD_REGION_GRID</constant> control
(see <xref linkend= "detect-controls" /> ) to assign a different region
to each cell in the motion detection grid, then that all cells
are automatically assigned to the default region 0.
</entry>
</row>
</tbody>
</tgroup>
</table>
2011-07-18 11:03:05 -03:00
<table pgwide= "1" frame= "none" id= "changes-flags" >
<title > Changes</title>
<tgroup cols= "3" >
&cs-def;
<tbody valign= "top" >
<row >
<entry > <constant > V4L2_EVENT_CTRL_CH_VALUE</constant> </entry>
<entry > 0x0001</entry>
<entry > This control event was triggered because the value of the control
changed. Special case: if a button control is pressed, then this
event is sent as well, even though there is not explicit value
associated with a button control.</entry>
</row>
<row >
<entry > <constant > V4L2_EVENT_CTRL_CH_FLAGS</constant> </entry>
<entry > 0x0002</entry>
<entry > This control event was triggered because the control flags
changed.</entry>
</row>
2013-01-19 15:51:55 -03:00
<row >
<entry > <constant > V4L2_EVENT_CTRL_CH_RANGE</constant> </entry>
<entry > 0x0004</entry>
<entry > This control event was triggered because the minimum,
maximum, step or the default value of the control changed.</entry>
</row>
2011-07-18 11:03:05 -03:00
</tbody>
</tgroup>
</table>
2014-05-14 03:59:42 -03:00
<table pgwide= "1" frame= "none" id= "src-changes-flags" >
<title > Source Changes</title>
<tgroup cols= "3" >
&cs-def;
<tbody valign= "top" >
<row >
<entry > <constant > V4L2_EVENT_SRC_CH_RESOLUTION</constant> </entry>
<entry > 0x0001</entry>
<entry > This event gets triggered when a resolution change is
detected at an input. This can come from an input connector or
from a video decoder.
</entry>
</row>
</tbody>
</tgroup>
</table>
2010-03-27 10:58:24 -03:00
</refsect1>
2011-07-05 11:22:28 -03:00
<refsect1 >
&return-value;
</refsect1>
2010-03-27 10:58:24 -03:00
</refentry>