.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
.. c:namespace:: DTV.video

.. _VIDEO_GET_EVENT:

===============
VIDEO_GET_EVENT
===============

Name
----

VIDEO_GET_EVENT

.. attention:: This ioctl is deprecated.

Synopsis
--------

.. c:macro:: VIDEO_GET_EVENT

``int ioctl(fd, VIDEO_GET_EVENT, struct video_event *ev)``

Arguments
---------

.. flat-table::
    :header-rows:  0
    :stub-columns: 0

    -  .. row 1

       -  int fd

       -  File descriptor returned by a previous call to open().

    -  .. row 2

       -  int request

       -  Equals VIDEO_GET_EVENT for this command.

    -  .. row 3

       -  struct video_event \*ev

       -  Points to the location where the event, if any, is to be stored.

Description
-----------

This ioctl is for Digital TV devices only. To get events from a V4L2 decoder
use the V4L2 :ref:`VIDIOC_DQEVENT` ioctl instead.

This ioctl call returns an event of type video_event if available. If
an event is not available, the behavior depends on whether the device is
in blocking or non-blocking mode. In the latter case, the call fails
immediately with errno set to ``EWOULDBLOCK``. In the former case, the call
blocks until an event becomes available. The standard Linux poll()
and/or select() system calls can be used with the device file descriptor
to watch for new events. For select(), the file descriptor should be
included in the exceptfds argument, and for poll(), POLLPRI should be
specified as the wake-up condition. Read-only permissions are sufficient
for this ioctl call.

.. c:type:: video_event

.. code-block:: c

	struct video_event {
		__s32 type;
	#define VIDEO_EVENT_SIZE_CHANGED	1
	#define VIDEO_EVENT_FRAME_RATE_CHANGED	2
	#define VIDEO_EVENT_DECODER_STOPPED 	3
	#define VIDEO_EVENT_VSYNC 		4
		long timestamp;
		union {
			video_size_t size;
			unsigned int frame_rate;	/* in frames per 1000sec */
			unsigned char vsync_field;	/* unknown/odd/even/progressive */
		} u;
	};

Return Value
------------

On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.

.. flat-table::
    :header-rows:  0
    :stub-columns: 0

    -  .. row 1

       -  ``EWOULDBLOCK``

       -  There is no event pending, and the device is in non-blocking mode.

    -  .. row 2

       -  ``EOVERFLOW``

       -  Overflow in event queue - one or more events were lost.
