xref: /OK3568_Linux_fs/kernel/Documentation/userspace-api/media/dvb/video-get-event.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2*4882a593Smuzhiyun.. c:namespace:: DTV.video
3*4882a593Smuzhiyun
4*4882a593Smuzhiyun.. _VIDEO_GET_EVENT:
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun===============
7*4882a593SmuzhiyunVIDEO_GET_EVENT
8*4882a593Smuzhiyun===============
9*4882a593Smuzhiyun
10*4882a593SmuzhiyunName
11*4882a593Smuzhiyun----
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunVIDEO_GET_EVENT
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun.. attention:: This ioctl is deprecated.
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunSynopsis
18*4882a593Smuzhiyun--------
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun.. c:macro:: VIDEO_GET_EVENT
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun``int ioctl(fd, VIDEO_GET_EVENT, struct video_event *ev)``
23*4882a593Smuzhiyun
24*4882a593SmuzhiyunArguments
25*4882a593Smuzhiyun---------
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun.. flat-table::
28*4882a593Smuzhiyun    :header-rows:  0
29*4882a593Smuzhiyun    :stub-columns: 0
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun    -  .. row 1
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun       -  int fd
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun       -  File descriptor returned by a previous call to open().
36*4882a593Smuzhiyun
37*4882a593Smuzhiyun    -  .. row 2
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun       -  int request
40*4882a593Smuzhiyun
41*4882a593Smuzhiyun       -  Equals VIDEO_GET_EVENT for this command.
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun    -  .. row 3
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun       -  struct video_event \*ev
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun       -  Points to the location where the event, if any, is to be stored.
48*4882a593Smuzhiyun
49*4882a593SmuzhiyunDescription
50*4882a593Smuzhiyun-----------
51*4882a593Smuzhiyun
52*4882a593SmuzhiyunThis ioctl is for Digital TV devices only. To get events from a V4L2 decoder
53*4882a593Smuzhiyunuse the V4L2 :ref:`VIDIOC_DQEVENT` ioctl instead.
54*4882a593Smuzhiyun
55*4882a593SmuzhiyunThis ioctl call returns an event of type video_event if available. If
56*4882a593Smuzhiyunan event is not available, the behavior depends on whether the device is
57*4882a593Smuzhiyunin blocking or non-blocking mode. In the latter case, the call fails
58*4882a593Smuzhiyunimmediately with errno set to ``EWOULDBLOCK``. In the former case, the call
59*4882a593Smuzhiyunblocks until an event becomes available. The standard Linux poll()
60*4882a593Smuzhiyunand/or select() system calls can be used with the device file descriptor
61*4882a593Smuzhiyunto watch for new events. For select(), the file descriptor should be
62*4882a593Smuzhiyunincluded in the exceptfds argument, and for poll(), POLLPRI should be
63*4882a593Smuzhiyunspecified as the wake-up condition. Read-only permissions are sufficient
64*4882a593Smuzhiyunfor this ioctl call.
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun.. c:type:: video_event
67*4882a593Smuzhiyun
68*4882a593Smuzhiyun.. code-block:: c
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun	struct video_event {
71*4882a593Smuzhiyun		__s32 type;
72*4882a593Smuzhiyun	#define VIDEO_EVENT_SIZE_CHANGED	1
73*4882a593Smuzhiyun	#define VIDEO_EVENT_FRAME_RATE_CHANGED	2
74*4882a593Smuzhiyun	#define VIDEO_EVENT_DECODER_STOPPED 	3
75*4882a593Smuzhiyun	#define VIDEO_EVENT_VSYNC 		4
76*4882a593Smuzhiyun		long timestamp;
77*4882a593Smuzhiyun		union {
78*4882a593Smuzhiyun			video_size_t size;
79*4882a593Smuzhiyun			unsigned int frame_rate;	/* in frames per 1000sec */
80*4882a593Smuzhiyun			unsigned char vsync_field;	/* unknown/odd/even/progressive */
81*4882a593Smuzhiyun		} u;
82*4882a593Smuzhiyun	};
83*4882a593Smuzhiyun
84*4882a593SmuzhiyunReturn Value
85*4882a593Smuzhiyun------------
86*4882a593Smuzhiyun
87*4882a593SmuzhiyunOn success 0 is returned, on error -1 and the ``errno`` variable is set
88*4882a593Smuzhiyunappropriately. The generic error codes are described at the
89*4882a593Smuzhiyun:ref:`Generic Error Codes <gen-errors>` chapter.
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun.. flat-table::
92*4882a593Smuzhiyun    :header-rows:  0
93*4882a593Smuzhiyun    :stub-columns: 0
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun    -  .. row 1
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun       -  ``EWOULDBLOCK``
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun       -  There is no event pending, and the device is in non-blocking mode.
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun    -  .. row 2
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun       -  ``EOVERFLOW``
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun       -  Overflow in event queue - one or more events were lost.
106