aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Documentation/media/uapi/v4l/standard.rst
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/media/uapi/v4l/standard.rst')
-rw-r--r--Documentation/media/uapi/v4l/standard.rst192
1 files changed, 0 insertions, 192 deletions
diff --git a/Documentation/media/uapi/v4l/standard.rst b/Documentation/media/uapi/v4l/standard.rst
deleted file mode 100644
index bf8959b72988..000000000000
--- a/Documentation/media/uapi/v4l/standard.rst
+++ /dev/null
@@ -1,192 +0,0 @@
-.. Permission is granted to copy, distribute and/or modify this
-.. document under the terms of the GNU Free Documentation License,
-.. Version 1.1 or any later version published by the Free Software
-.. Foundation, with no Invariant Sections, no Front-Cover Texts
-.. and no Back-Cover Texts. A copy of the license is included at
-.. Documentation/media/uapi/fdl-appendix.rst.
-..
-.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
-
-.. _standard:
-
-***************
-Video Standards
-***************
-
-Video devices typically support one or more different video standards or
-variations of standards. Each video input and output may support another
-set of standards. This set is reported by the ``std`` field of struct
-:c:type:`v4l2_input` and struct
-:c:type:`v4l2_output` returned by the
-:ref:`VIDIOC_ENUMINPUT` and
-:ref:`VIDIOC_ENUMOUTPUT` ioctls, respectively.
-
-V4L2 defines one bit for each analog video standard currently in use
-worldwide, and sets aside bits for driver defined standards, e. g.
-hybrid standards to watch NTSC video tapes on PAL TVs and vice versa.
-Applications can use the predefined bits to select a particular
-standard, although presenting the user a menu of supported standards is
-preferred. To enumerate and query the attributes of the supported
-standards applications use the :ref:`VIDIOC_ENUMSTD`
-ioctl.
-
-Many of the defined standards are actually just variations of a few
-major standards. The hardware may in fact not distinguish between them,
-or do so internal and switch automatically. Therefore enumerated
-standards also contain sets of one or more standard bits.
-
-Assume a hypothetic tuner capable of demodulating B/PAL, G/PAL and I/PAL
-signals. The first enumerated standard is a set of B and G/PAL, switched
-automatically depending on the selected radio frequency in UHF or VHF
-band. Enumeration gives a "PAL-B/G" or "PAL-I" choice. Similar a
-Composite input may collapse standards, enumerating "PAL-B/G/H/I",
-"NTSC-M" and "SECAM-D/K". [#f1]_
-
-To query and select the standard used by the current video input or
-output applications call the :ref:`VIDIOC_G_STD <VIDIOC_G_STD>` and
-:ref:`VIDIOC_S_STD <VIDIOC_G_STD>` ioctl, respectively. The
-*received* standard can be sensed with the
-:ref:`VIDIOC_QUERYSTD` ioctl.
-
-.. note::
-
- The parameter of all these ioctls is a pointer to a
- :ref:`v4l2_std_id <v4l2-std-id>` type (a standard set), *not* an
- index into the standard enumeration. Drivers must implement all video
- standard ioctls when the device has one or more video inputs or outputs.
-
-Special rules apply to devices such as USB cameras where the notion of
-video standards makes little sense. More generally for any capture or
-output device which is:
-
-- incapable of capturing fields or frames at the nominal rate of the
- video standard, or
-
-- that does not support the video standard formats at all.
-
-Here the driver shall set the ``std`` field of struct
-:c:type:`v4l2_input` and struct
-:c:type:`v4l2_output` to zero and the :ref:`VIDIOC_G_STD <VIDIOC_G_STD>`,
-:ref:`VIDIOC_S_STD <VIDIOC_G_STD>`, :ref:`VIDIOC_QUERYSTD` and :ref:`VIDIOC_ENUMSTD` ioctls
-shall return the ``ENOTTY`` error code or the ``EINVAL`` error code.
-
-Applications can make use of the :ref:`input-capabilities` and
-:ref:`output-capabilities` flags to determine whether the video
-standard ioctls can be used with the given input or output.
-
-Example: Information about the current video standard
-=====================================================
-
-.. code-block:: c
-
- v4l2_std_id std_id;
- struct v4l2_standard standard;
-
- if (-1 == ioctl(fd, VIDIOC_G_STD, &std_id)) {
- /* Note when VIDIOC_ENUMSTD always returns ENOTTY this
- is no video device or it falls under the USB exception,
- and VIDIOC_G_STD returning ENOTTY is no error. */
-
- perror("VIDIOC_G_STD");
- exit(EXIT_FAILURE);
- }
-
- memset(&standard, 0, sizeof(standard));
- standard.index = 0;
-
- while (0 == ioctl(fd, VIDIOC_ENUMSTD, &standard)) {
- if (standard.id & std_id) {
- printf("Current video standard: %s\\n", standard.name);
- exit(EXIT_SUCCESS);
- }
-
- standard.index++;
- }
-
- /* EINVAL indicates the end of the enumeration, which cannot be
- empty unless this device falls under the USB exception. */
-
- if (errno == EINVAL || standard.index == 0) {
- perror("VIDIOC_ENUMSTD");
- exit(EXIT_FAILURE);
- }
-
-Example: Listing the video standards supported by the current input
-===================================================================
-
-.. code-block:: c
-
- struct v4l2_input input;
- struct v4l2_standard standard;
-
- memset(&input, 0, sizeof(input));
-
- if (-1 == ioctl(fd, VIDIOC_G_INPUT, &input.index)) {
- perror("VIDIOC_G_INPUT");
- exit(EXIT_FAILURE);
- }
-
- if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
- perror("VIDIOC_ENUM_INPUT");
- exit(EXIT_FAILURE);
- }
-
- printf("Current input %s supports:\\n", input.name);
-
- memset(&standard, 0, sizeof(standard));
- standard.index = 0;
-
- while (0 == ioctl(fd, VIDIOC_ENUMSTD, &standard)) {
- if (standard.id & input.std)
- printf("%s\\n", standard.name);
-
- standard.index++;
- }
-
- /* EINVAL indicates the end of the enumeration, which cannot be
- empty unless this device falls under the USB exception. */
-
- if (errno != EINVAL || standard.index == 0) {
- perror("VIDIOC_ENUMSTD");
- exit(EXIT_FAILURE);
- }
-
-Example: Selecting a new video standard
-=======================================
-
-.. code-block:: c
-
- struct v4l2_input input;
- v4l2_std_id std_id;
-
- memset(&input, 0, sizeof(input));
-
- if (-1 == ioctl(fd, VIDIOC_G_INPUT, &input.index)) {
- perror("VIDIOC_G_INPUT");
- exit(EXIT_FAILURE);
- }
-
- if (-1 == ioctl(fd, VIDIOC_ENUMINPUT, &input)) {
- perror("VIDIOC_ENUM_INPUT");
- exit(EXIT_FAILURE);
- }
-
- if (0 == (input.std & V4L2_STD_PAL_BG)) {
- fprintf(stderr, "Oops. B/G PAL is not supported.\\n");
- exit(EXIT_FAILURE);
- }
-
- /* Note this is also supposed to work when only B
- or G/PAL is supported. */
-
- std_id = V4L2_STD_PAL_BG;
-
- if (-1 == ioctl(fd, VIDIOC_S_STD, &std_id)) {
- perror("VIDIOC_S_STD");
- exit(EXIT_FAILURE);
- }
-
-.. [#f1]
- Some users are already confused by technical terms PAL, NTSC and
- SECAM. There is no point asking them to distinguish between B, G, D,
- or K when the software or hardware can do that automatically.