Merge tag 'sound-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
[linux-2.6-microblaze.git] / Documentation / userspace-api / media / v4l / vidioc-querystd.rst
1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2 .. c:namespace:: V4L
3
4 .. _VIDIOC_QUERYSTD:
5
6 *********************************************
7 ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD
8 *********************************************
9
10 Name
11 ====
12
13 VIDIOC_QUERYSTD - VIDIOC_SUBDEV_QUERYSTD - Sense the video standard received by the current input
14
15 Synopsis
16 ========
17
18 .. c:macro:: VIDIOC_QUERYSTD
19
20 ``int ioctl(int fd, VIDIOC_QUERYSTD, v4l2_std_id *argp)``
21
22 .. c:macro:: VIDIOC_SUBDEV_QUERYSTD
23
24 ``int ioctl(int fd, VIDIOC_SUBDEV_QUERYSTD, v4l2_std_id *argp)``
25
26 Arguments
27 =========
28
29 ``fd``
30     File descriptor returned by :c:func:`open()`.
31
32 ``argp``
33     Pointer to :c:type:`v4l2_std_id`.
34
35 Description
36 ===========
37
38 The hardware may be able to detect the current video standard
39 automatically. To do so, applications call :ref:`VIDIOC_QUERYSTD` with a
40 pointer to a :ref:`v4l2_std_id <v4l2-std-id>` type. The driver
41 stores here a set of candidates, this can be a single flag or a set of
42 supported standards if for example the hardware can only distinguish
43 between 50 and 60 Hz systems. If no signal was detected, then the driver
44 will return V4L2_STD_UNKNOWN. When detection is not possible or fails,
45 the set must contain all standards supported by the current video input
46 or 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 Return Value
62 ============
63
64 On success 0 is returned, on error -1 and the ``errno`` variable is set
65 appropriately. The generic error codes are described at the
66 :ref:`Generic Error Codes <gen-errors>` chapter.
67
68 ENODATA
69     Standard video timings are not supported for this input or output.