<title>Event Interface</title>
- <para>The V4L2 event interface provides means for user to get
+ <para>The V4L2 event interface provides a means for a user to get
immediately notified on certain conditions taking place on a device.
This might include start of frame or loss of signal events, for
- example.
+ example. Changes in the value or state of a V4L2 control can also be
+ reported through events.
</para>
<para>To receive events, the events the user is interested in first must
<para>The event subscriptions and event queues are specific to file
handles. Subscribing an event on one file handle does not affect
- other file handles.
- </para>
+ other file handles.</para>
<para>The information on dequeueable events is obtained by using select or
poll system calls on video devices. The V4L2 events use POLLPRI events on
- poll system call and exceptions on select system call. </para>
+ poll system call and exceptions on select system call.</para>
+
+ <para>Starting with kernel 3.1 certain guarantees can be given with
+ regards to events:<orderedlist>
+ <listitem>
+ <para>Each subscribed event has its own internal dedicated event queue.
+This means that flooding of one event type will not interfere with other
+event types.</para>
+ </listitem>
+ <listitem>
+ <para>If the internal event queue for a particular subscribed event
+becomes full, then the oldest event in that queue will be dropped.</para>
+ </listitem>
+ <listitem>
+ <para>Where applicable, certain event types can ensure that the payload
+of the oldest event that is about to be dropped will be merged with the payload
+of the next oldest event. Thus ensuring that no information is lost, but only an
+intermediate step leading up to that information. See the documentation for the
+event you want to subscribe to whether this is applicable for that event or not.</para>
+ </listitem>
+ </orderedlist></para>
<!--
Local Variables:
<entry><constant>V4L2_EVENT_VSYNC</constant></entry>
<entry>1</entry>
<entry>This event is triggered on the vertical sync.
- This event has &v4l2-event-vsync; associated with it.
+ This event has a &v4l2-event-vsync; associated with it.
</entry>
</row>
<row>
matches the control ID from which you want to receive events.
This event is triggered if the control's value changes, if a
button control is pressed or if the control's flags change.
- This event has &v4l2-event-ctrl; associated with it. This struct
+ This event has a &v4l2-event-ctrl; associated with it. This struct
contains much of the same information as &v4l2-queryctrl; and
&v4l2-control;.
&VIDIOC-S-EXT-CTRLS;, then the event will not be sent to
the file handle that called the ioctl function. This prevents
nasty feedback loops.
+
+ This event type will ensure that no information is lost when
+ more events are raised than there is room internally. In that
+ case the &v4l2-event-ctrl; of the second-oldest event is kept,
+ but the <structfield>changes</structfield> field of the
+ second-oldest event is ORed with the <structfield>changes</structfield>
+ field of the oldest event.
</entry>
</row>
<row>
<entry>0x0001</entry>
<entry>When this event is subscribed an initial event will be sent
containing the current status. This only makes sense for events
- that are triggered by a status change. Other events will ignore
- this flag.</entry>
+ that are triggered by a status change such as <constant>V4L2_EVENT_CTRL</constant>.
+ Other events will ignore this flag.</entry>
</row>
</tbody>
</tgroup>