forked from Minki/linux
2ccbe779bc
This patch adds a helper function that allows to modify range, i.e. minimum, maximum, step and default value of a v4l2 control, after the control has been created and initialized. This is helpful in situations when range of a control depends on user configurable parameters, e.g. camera sensor absolute exposure time depending on an output image resolution and frame rate. v4l2_ctrl_modify_range() function allows to modify range of an INTEGER, BOOL, MENU, INTEGER_MENU and BITMASK type controls. Based on a patch from Hans Verkuil http://patchwork.linuxtv.org/patch/8654. Signed-off-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> Acked-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
278 lines
8.0 KiB
XML
278 lines
8.0 KiB
XML
<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>__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 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>
|
|
</refsect1>
|
|
<refsect1>
|
|
&return-value;
|
|
</refsect1>
|
|
</refentry>
|