1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3.. _VIDIOC_QUERYSTD:
4
5*********************************************
6ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD
7*********************************************
8
9Name
10====
11
12VIDIOC_QUERYSTD - VIDIOC_SUBDEV_QUERYSTD - Sense the video standard received by the current input
13
14
15Synopsis
16========
17
18.. c:function:: int ioctl( int fd, VIDIOC_QUERYSTD, v4l2_std_id *argp )
19    :name: VIDIOC_QUERYSTD
20
21.. c:function:: int ioctl( int fd, VIDIOC_SUBDEV_QUERYSTD, v4l2_std_id *argp )
22    :name: VIDIOC_SUBDEV_QUERYSTD
23
24
25Arguments
26=========
27
28``fd``
29    File descriptor returned by :ref:`open() <func-open>`.
30
31``argp``
32    Pointer to :c:type:`v4l2_std_id`.
33
34
35Description
36===========
37
38The hardware may be able to detect the current video standard
39automatically. To do so, applications call :ref:`VIDIOC_QUERYSTD` with a
40pointer to a :ref:`v4l2_std_id <v4l2-std-id>` type. The driver
41stores here a set of candidates, this can be a single flag or a set of
42supported standards if for example the hardware can only distinguish
43between 50 and 60 Hz systems. If no signal was detected, then the driver
44will return V4L2_STD_UNKNOWN. When detection is not possible or fails,
45the set must contain all standards supported by the current video input
46or output.
47
48.. note::
49
50   Drivers shall *not* switch the video standard
51   automatically if a new video standard is detected. Instead, drivers
52   should send the ``V4L2_EVENT_SOURCE_CHANGE`` event (if they support
53   this) and expect that userspace will take action by calling
54   :ref:`VIDIOC_QUERYSTD`. The reason is that a new video standard can mean
55   different buffer sizes as well, and you cannot change buffer sizes on
56   the fly. In general, applications that receive the Source Change event
57   will have to call :ref:`VIDIOC_QUERYSTD`, and if the detected video
58   standard is valid they will have to stop streaming, set the new
59   standard, allocate new buffers and start streaming again.
60
61
62Return Value
63============
64
65On success 0 is returned, on error -1 and the ``errno`` variable is set
66appropriately. The generic error codes are described at the
67:ref:`Generic Error Codes <gen-errors>` chapter.
68
69ENODATA
70    Standard video timings are not supported for this input or output.
71