Merge tag 'driver-core-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / Documentation / media / uapi / v4l / vidioc-querystd.rst
1 .. Permission is granted to copy, distribute and/or modify this
2 .. document under the terms of the GNU Free Documentation License,
3 .. Version 1.1 or any later version published by the Free Software
4 .. Foundation, with no Invariant Sections, no Front-Cover Texts
5 .. and no Back-Cover Texts. A copy of the license is included at
6 .. Documentation/media/uapi/fdl-appendix.rst.
7 ..
8 .. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
9
10 .. _VIDIOC_QUERYSTD:
11
12 *********************************************
13 ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD
14 *********************************************
15
16 Name
17 ====
18
19 VIDIOC_QUERYSTD - VIDIOC_SUBDEV_QUERYSTD - Sense the video standard received by the current input
20
21
22 Synopsis
23 ========
24
25 .. c:function:: int ioctl( int fd, VIDIOC_QUERYSTD, v4l2_std_id *argp )
26     :name: VIDIOC_QUERYSTD
27
28 .. c:function:: int ioctl( int fd, VIDIOC_SUBDEV_QUERYSTD, v4l2_std_id *argp )
29     :name: VIDIOC_SUBDEV_QUERYSTD
30
31
32 Arguments
33 =========
34
35 ``fd``
36     File descriptor returned by :ref:`open() <func-open>`.
37
38 ``argp``
39     Pointer to :c:type:`v4l2_std_id`.
40
41
42 Description
43 ===========
44
45 The hardware may be able to detect the current video standard
46 automatically. To do so, applications call :ref:`VIDIOC_QUERYSTD` with a
47 pointer to a :ref:`v4l2_std_id <v4l2-std-id>` type. The driver
48 stores here a set of candidates, this can be a single flag or a set of
49 supported standards if for example the hardware can only distinguish
50 between 50 and 60 Hz systems. If no signal was detected, then the driver
51 will return V4L2_STD_UNKNOWN. When detection is not possible or fails,
52 the set must contain all standards supported by the current video input
53 or output.
54
55 .. note::
56
57    Drivers shall *not* switch the video standard
58    automatically if a new video standard is detected. Instead, drivers
59    should send the ``V4L2_EVENT_SOURCE_CHANGE`` event (if they support
60    this) and expect that userspace will take action by calling
61    :ref:`VIDIOC_QUERYSTD`. The reason is that a new video standard can mean
62    different buffer sizes as well, and you cannot change buffer sizes on
63    the fly. In general, applications that receive the Source Change event
64    will have to call :ref:`VIDIOC_QUERYSTD`, and if the detected video
65    standard is valid they will have to stop streaming, set the new
66    standard, allocate new buffers and start streaming again.
67
68
69 Return Value
70 ============
71
72 On success 0 is returned, on error -1 and the ``errno`` variable is set
73 appropriately. The generic error codes are described at the
74 :ref:`Generic Error Codes <gen-errors>` chapter.
75
76 ENODATA
77     Standard video timings are not supported for this input or output.