162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
262306a36Sopenharmony_ci.. c:namespace:: V4L
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci.. _VIDIOC_G_SLICED_VBI_CAP:
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci*****************************
762306a36Sopenharmony_ciioctl VIDIOC_G_SLICED_VBI_CAP
862306a36Sopenharmony_ci*****************************
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciName
1162306a36Sopenharmony_ci====
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciVIDIOC_G_SLICED_VBI_CAP - Query sliced VBI capabilities
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciSynopsis
1662306a36Sopenharmony_ci========
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci.. c:macro:: VIDIOC_G_SLICED_VBI_CAP
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci``int ioctl(int fd, VIDIOC_G_SLICED_VBI_CAP, struct v4l2_sliced_vbi_cap *argp)``
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciArguments
2362306a36Sopenharmony_ci=========
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci``fd``
2662306a36Sopenharmony_ci    File descriptor returned by :c:func:`open()`.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci``argp``
2962306a36Sopenharmony_ci    Pointer to struct :c:type:`v4l2_sliced_vbi_cap`.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciDescription
3262306a36Sopenharmony_ci===========
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ciTo find out which data services are supported by a sliced VBI capture or
3562306a36Sopenharmony_cioutput device, applications initialize the ``type`` field of a struct
3662306a36Sopenharmony_ci:c:type:`v4l2_sliced_vbi_cap`, clear the
3762306a36Sopenharmony_ci``reserved`` array and call the :ref:`VIDIOC_G_SLICED_VBI_CAP <VIDIOC_G_SLICED_VBI_CAP>` ioctl. The
3862306a36Sopenharmony_cidriver fills in the remaining fields or returns an ``EINVAL`` error code if
3962306a36Sopenharmony_cithe sliced VBI API is unsupported or ``type`` is invalid.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci.. note::
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci   The ``type`` field was added, and the ioctl changed from read-only
4462306a36Sopenharmony_ci   to write-read, in Linux 2.6.19.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci.. c:type:: v4l2_sliced_vbi_cap
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci.. tabularcolumns:: |p{1.4cm}|p{4.4cm}|p{4.5cm}|p{3.6cm}|p{3.6cm}|
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci.. flat-table:: struct v4l2_sliced_vbi_cap
5162306a36Sopenharmony_ci    :header-rows:  0
5262306a36Sopenharmony_ci    :stub-columns: 0
5362306a36Sopenharmony_ci    :widths:       3 3 2 2 2
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci    * - __u16
5662306a36Sopenharmony_ci      - ``service_set``
5762306a36Sopenharmony_ci      - :cspan:`2` A set of all data services supported by the driver.
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci	Equal to the union of all elements of the ``service_lines`` array.
6062306a36Sopenharmony_ci    * - __u16
6162306a36Sopenharmony_ci      - ``service_lines``\ [2][24]
6262306a36Sopenharmony_ci      - :cspan:`2` Each element of this array contains a set of data
6362306a36Sopenharmony_ci	services the hardware can look for or insert into a particular
6462306a36Sopenharmony_ci	scan line. Data services are defined in :ref:`vbi-services`.
6562306a36Sopenharmony_ci	Array indices map to ITU-R line numbers\ [#f1]_ as follows:
6662306a36Sopenharmony_ci    * -
6762306a36Sopenharmony_ci      -
6862306a36Sopenharmony_ci      - Element
6962306a36Sopenharmony_ci      - 525 line systems
7062306a36Sopenharmony_ci      - 625 line systems
7162306a36Sopenharmony_ci    * -
7262306a36Sopenharmony_ci      -
7362306a36Sopenharmony_ci      - ``service_lines``\ [0][1]
7462306a36Sopenharmony_ci      - 1
7562306a36Sopenharmony_ci      - 1
7662306a36Sopenharmony_ci    * -
7762306a36Sopenharmony_ci      -
7862306a36Sopenharmony_ci      - ``service_lines``\ [0][23]
7962306a36Sopenharmony_ci      - 23
8062306a36Sopenharmony_ci      - 23
8162306a36Sopenharmony_ci    * -
8262306a36Sopenharmony_ci      -
8362306a36Sopenharmony_ci      - ``service_lines``\ [1][1]
8462306a36Sopenharmony_ci      - 264
8562306a36Sopenharmony_ci      - 314
8662306a36Sopenharmony_ci    * -
8762306a36Sopenharmony_ci      -
8862306a36Sopenharmony_ci      - ``service_lines``\ [1][23]
8962306a36Sopenharmony_ci      - 286
9062306a36Sopenharmony_ci      - 336
9162306a36Sopenharmony_ci    * -
9262306a36Sopenharmony_ci    * -
9362306a36Sopenharmony_ci      -
9462306a36Sopenharmony_ci      - :cspan:`2` The number of VBI lines the hardware can capture or
9562306a36Sopenharmony_ci	output per frame, or the number of services it can identify on a
9662306a36Sopenharmony_ci	given line may be limited. For example on PAL line 16 the hardware
9762306a36Sopenharmony_ci	may be able to look for a VPS or Teletext signal, but not both at
9862306a36Sopenharmony_ci	the same time. Applications can learn about these limits using the
9962306a36Sopenharmony_ci	:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl as described in
10062306a36Sopenharmony_ci	:ref:`sliced`.
10162306a36Sopenharmony_ci    * -
10262306a36Sopenharmony_ci    * -
10362306a36Sopenharmony_ci      -
10462306a36Sopenharmony_ci      - :cspan:`2` Drivers must set ``service_lines`` [0][0] and
10562306a36Sopenharmony_ci	``service_lines``\ [1][0] to zero.
10662306a36Sopenharmony_ci    * - __u32
10762306a36Sopenharmony_ci      - ``type``
10862306a36Sopenharmony_ci      - Type of the data stream, see :c:type:`v4l2_buf_type`. Should be
10962306a36Sopenharmony_ci	``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` or
11062306a36Sopenharmony_ci	``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT``.
11162306a36Sopenharmony_ci    * - __u32
11262306a36Sopenharmony_ci      - ``reserved``\ [3]
11362306a36Sopenharmony_ci      - :cspan:`2` This array is reserved for future extensions.
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci	Applications and drivers must set it to zero.
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci.. [#f1]
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci   See also :ref:`vbi-525` and :ref:`vbi-625`.
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci.. raw:: latex
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci    \scriptsize
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci.. tabularcolumns:: |p{3.9cm}|p{1.0cm}|p{2.0cm}|p{3.0cm}|p{7.0cm}|
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci.. _vbi-services:
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci.. flat-table:: Sliced VBI services
13062306a36Sopenharmony_ci    :header-rows:  1
13162306a36Sopenharmony_ci    :stub-columns: 0
13262306a36Sopenharmony_ci    :widths:       2 1 1 2 2
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci    * - Symbol
13562306a36Sopenharmony_ci      - Value
13662306a36Sopenharmony_ci      - Reference
13762306a36Sopenharmony_ci      - Lines, usually
13862306a36Sopenharmony_ci      - Payload
13962306a36Sopenharmony_ci    * - ``V4L2_SLICED_TELETEXT_B`` (Teletext System B)
14062306a36Sopenharmony_ci      - 0x0001
14162306a36Sopenharmony_ci      - :ref:`ets300706`,
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci	:ref:`itu653`
14462306a36Sopenharmony_ci      - PAL/SECAM line 7-22, 320-335 (second field 7-22)
14562306a36Sopenharmony_ci      - Last 42 of the 45 byte Teletext packet, that is without clock
14662306a36Sopenharmony_ci	run-in and framing code, lsb first transmitted.
14762306a36Sopenharmony_ci    * - ``V4L2_SLICED_VPS``
14862306a36Sopenharmony_ci      - 0x0400
14962306a36Sopenharmony_ci      - :ref:`ets300231`
15062306a36Sopenharmony_ci      - PAL line 16
15162306a36Sopenharmony_ci      - Byte number 3 to 15 according to Figure 9 of ETS 300 231, lsb
15262306a36Sopenharmony_ci	first transmitted.
15362306a36Sopenharmony_ci    * - ``V4L2_SLICED_CAPTION_525``
15462306a36Sopenharmony_ci      - 0x1000
15562306a36Sopenharmony_ci      - :ref:`cea608`
15662306a36Sopenharmony_ci      - NTSC line 21, 284 (second field 21)
15762306a36Sopenharmony_ci      - Two bytes in transmission order, including parity bit, lsb first
15862306a36Sopenharmony_ci	transmitted.
15962306a36Sopenharmony_ci    * - ``V4L2_SLICED_WSS_625``
16062306a36Sopenharmony_ci      - 0x4000
16162306a36Sopenharmony_ci      - :ref:`en300294`,
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci	:ref:`itu1119`
16462306a36Sopenharmony_ci      - PAL/SECAM line 23
16562306a36Sopenharmony_ci      - See :ref:`v4l2-sliced-vbi-cap-wss-625-payload` below.
16662306a36Sopenharmony_ci    * - ``V4L2_SLICED_VBI_525``
16762306a36Sopenharmony_ci      - 0x1000
16862306a36Sopenharmony_ci      - :cspan:`2` Set of services applicable to 525 line systems.
16962306a36Sopenharmony_ci    * - ``V4L2_SLICED_VBI_625``
17062306a36Sopenharmony_ci      - 0x4401
17162306a36Sopenharmony_ci      - :cspan:`2` Set of services applicable to 625 line systems.
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci.. raw:: latex
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci    \normalsize
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci.. _v4l2-sliced-vbi-cap-wss-625-payload:
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ciV4L2_SLICED_VBI_CAP WSS_625 payload
18162306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ciThe payload for ``V4L2_SLICED_WSS_625`` is:
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci	    +-----+------------------+-----------------------+
18662306a36Sopenharmony_ci	    |Byte |        0         |           1           |
18762306a36Sopenharmony_ci	    +-----+--------+---------+-----------+-----------+
18862306a36Sopenharmony_ci	    |     | msb    | lsb     | msb       | lsb       |
18962306a36Sopenharmony_ci	    |     +-+-+-+--+--+-+-+--+--+-+--+---+---+--+-+--+
19062306a36Sopenharmony_ci	    | Bit |7|6|5|4 | 3|2|1|0 | x|x|13|12 | 11|10|9|8 |
19162306a36Sopenharmony_ci	    +-----+-+-+-+--+--+-+-+--+--+-+--+---+---+--+-+--+
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ciReturn Value
19562306a36Sopenharmony_ci============
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ciOn success 0 is returned, on error -1 and the ``errno`` variable is set
19862306a36Sopenharmony_ciappropriately. The generic error codes are described at the
19962306a36Sopenharmony_ci:ref:`Generic Error Codes <gen-errors>` chapter.
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ciEINVAL
20262306a36Sopenharmony_ci    The value in the ``type`` field is wrong.
203