aboutsummaryrefslogblamecommitdiffstats
path: root/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
blob: cb7732582f0365861ccf14f25a3a83ecfdb5d05e (plain) (tree)











































































                                                                      






                                                           






                                                          
                                                  
                                                                



                                                                      





                                                                      





                                                                         






















                                                                       
                                          




                                                               







                                                                                 
                                
                                                                 







                                                                   




















































































                                                                                                       















                                                                          















                                                                                              





































                                                                                                           


















                                                                                    





                                                                              


                
















                                                                            
             


                  
           
<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>
	  <row>
	    <entry></entry>
	    <entry>&v4l2-event-vsync;</entry>
            <entry><structfield>vsync</structfield></entry>
	    <entry>Event data for event V4L2_EVENT_VSYNC.
            </entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry>&v4l2-event-ctrl;</entry>
            <entry><structfield>ctrl</structfield></entry>
	    <entry>Event data for event V4L2_EVENT_CTRL.
            </entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry>&v4l2-event-frame-sync;</entry>
            <entry><structfield>frame_sync</structfield></entry>
	    <entry>Event data for event V4L2_EVENT_FRAME_SYNC.</entry>
	  </row>
	  <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>
	  <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>
	  <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>
	    <entry>struct timespec</entry>
	    <entry><structfield>timestamp</structfield></entry>
            <entry></entry>
	    <entry>Event timestamp.</entry>
	  </row>
	  <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>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>reserved</structfield>[8]</entry>
            <entry></entry>
	    <entry>Reserved for future extensions. Drivers must set
	    the array to zero.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <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>

    <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>

    <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>

    <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>

    <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>
	  <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>
	</tbody>
      </tgroup>
    </table>

    <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>
  </refsect1>
  <refsect1>
    &return-value;
  </refsect1>
</refentry>