Hi Sakari,
On Fri, 2009-10-23 at 13:18 +0300, Sakari Ailus wrote:
> Hi,
>
>
> Here's the version 2.2 of the video events RFC. It's based on Laurent
> Pinchart's original RFC and versions 2 and 2.1 which I wrote. The old
> RFC is available here:
>
> <URL:http://www.spinics.net/lists/linux-media/msg11056.html>
>
> Added Mauro to Cc.
>
> Changes to version 2.1
> --------------------
>
> V4L2_EVENT_ALL is now 0 instead 0x07ffffff.
>
> V4L2_EVENT_RESERVED is gone. A note will be added not to use four
> topmost bits.
>
> It's V4L2_EVENT_PRIVATE_START, not V4L2_EVENT_PRIVATE.
>
> Interface description
> ---------------------
>
> Event type is either a standard event or private event. Standard events
> will be defined in videodev2.h. Private event types begin from
> V4L2_EVENT_PRIVATE_START. The four topmost bits of the type should not
> be used for the moment.
>
> #define V4L2_EVENT_ALL 0
> #define V4L2_EVENT_PRIVATE_START 0x08000000
>
> VIDIOC_DQEVENT is used to get events. count is number of pending events
> after the current one. sequence is the event type sequence number and
> the data is specific to event type.
>
> The user will get the information that there's an event through
> exception file descriptors by using select(2). When an event is
> available the poll handler sets POLLPRI which wakes up select. -EINVAL
> will be returned if there are no pending events.
>
> VIDIOC_SUBSCRIBE_EVENT and VIDIOC_UNSUBSCRIBE_EVENT are used to
> subscribe and unsubscribe from events. The argument is struct
> v4l2_event_subscription which now only contains the type field for the
> event type. Every event can be subscribed or unsubscribed by one ioctl
> by using special type V4L2_EVENT_ALL.
>
>
> struct v4l2_event {
> __u32 count;
> __u32 type;
> __u32 sequence;
> struct timeval timestamp;
Can we use 'struct timespec' here. This will force actual
implementation to use high-resolution source if possible,
and remove hundreds gettimeofday() in user space, which
should be used for event synchronization, with more
power friendly clock_getres(CLOCK_MONOTONIC).
Thank you.
iivanov
> __u32 reserved[8];
> __u8 data[64];
> };
>
> struct v4l2_event_subscription {
> __u32 type;
> __u32 reserved[8];
> };
>
> #define VIDIOC_DQEVENT _IOR('V', 84, struct v4l2_event)
> #define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 85, struct
> v4l2_event_subscription)
> #define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 86, struct
> v4l2_event_subscription)
>
>
> The size of the event queue is decided by the driver. Which events will
> be discarded on queue overflow depends on the implementation.
>
>
> Questions
> ---------
>
> None on my side.
>
> Comments and questions are still very very welcome.
>
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html