18c2ecf20Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 28c2ecf20Sopenharmony_ci.. c:namespace:: V4L 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci.. _sliced: 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci************************* 78c2ecf20Sopenharmony_ciSliced VBI Data Interface 88c2ecf20Sopenharmony_ci************************* 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ciVBI stands for Vertical Blanking Interval, a gap in the sequence of 118c2ecf20Sopenharmony_cilines of an analog video signal. During VBI no picture information is 128c2ecf20Sopenharmony_citransmitted, allowing some time while the electron beam of a cathode ray 138c2ecf20Sopenharmony_citube TV returns to the top of the screen. 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ciSliced VBI devices use hardware to demodulate data transmitted in the 168c2ecf20Sopenharmony_ciVBI. V4L2 drivers shall *not* do this by software, see also the 178c2ecf20Sopenharmony_ci:ref:`raw VBI interface <raw-vbi>`. The data is passed as short 188c2ecf20Sopenharmony_cipackets of fixed size, covering one scan line each. The number of 198c2ecf20Sopenharmony_cipackets per video frame is variable. 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ciSliced VBI capture and output devices are accessed through the same 228c2ecf20Sopenharmony_cicharacter special files as raw VBI devices. When a driver supports both 238c2ecf20Sopenharmony_ciinterfaces, the default function of a ``/dev/vbi`` device is *raw* VBI 248c2ecf20Sopenharmony_cicapturing or output, and the sliced VBI function is only available after 258c2ecf20Sopenharmony_cicalling the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl as defined 268c2ecf20Sopenharmony_cibelow. Likewise a ``/dev/video`` device may support the sliced VBI API, 278c2ecf20Sopenharmony_cihowever the default function here is video capturing or output. 288c2ecf20Sopenharmony_ciDifferent file descriptors must be used to pass raw and sliced VBI data 298c2ecf20Sopenharmony_cisimultaneously, if this is supported by the driver. 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ciQuerying Capabilities 328c2ecf20Sopenharmony_ci===================== 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciDevices supporting the sliced VBI capturing or output API set the 358c2ecf20Sopenharmony_ci``V4L2_CAP_SLICED_VBI_CAPTURE`` or ``V4L2_CAP_SLICED_VBI_OUTPUT`` flag 368c2ecf20Sopenharmony_cirespectively, in the ``capabilities`` field of struct 378c2ecf20Sopenharmony_ci:c:type:`v4l2_capability` returned by the 388c2ecf20Sopenharmony_ci:ref:`VIDIOC_QUERYCAP` ioctl. At least one of the 398c2ecf20Sopenharmony_ciread/write, streaming or asynchronous :ref:`I/O methods <io>` must be 408c2ecf20Sopenharmony_cisupported. Sliced VBI devices may have a tuner or modulator. 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ciSupplemental Functions 438c2ecf20Sopenharmony_ci====================== 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ciSliced VBI devices shall support :ref:`video input or output <video>` 468c2ecf20Sopenharmony_ciand :ref:`tuner or modulator <tuner>` ioctls if they have these 478c2ecf20Sopenharmony_cicapabilities, and they may support :ref:`control` ioctls. 488c2ecf20Sopenharmony_ciThe :ref:`video standard <standard>` ioctls provide information vital 498c2ecf20Sopenharmony_cito program a sliced VBI device, therefore must be supported. 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci.. _sliced-vbi-format-negotitation: 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ciSliced VBI Format Negotiation 548c2ecf20Sopenharmony_ci============================= 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ciTo find out which data services are supported by the hardware 578c2ecf20Sopenharmony_ciapplications can call the 588c2ecf20Sopenharmony_ci:ref:`VIDIOC_G_SLICED_VBI_CAP <VIDIOC_G_SLICED_VBI_CAP>` ioctl. 598c2ecf20Sopenharmony_ciAll drivers implementing the sliced VBI interface must support this 608c2ecf20Sopenharmony_ciioctl. The results may differ from those of the 618c2ecf20Sopenharmony_ci:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl when the number of VBI 628c2ecf20Sopenharmony_cilines the hardware can capture or output per frame, or the number of 638c2ecf20Sopenharmony_ciservices it can identify on a given line are limited. For example on PAL 648c2ecf20Sopenharmony_ciline 16 the hardware may be able to look for a VPS or Teletext signal, 658c2ecf20Sopenharmony_cibut not both at the same time. 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ciTo determine the currently selected services applications set the 688c2ecf20Sopenharmony_ci``type`` field of struct :c:type:`v4l2_format` to 698c2ecf20Sopenharmony_ci``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` or 708c2ecf20Sopenharmony_ci``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT``, and the 718c2ecf20Sopenharmony_ci:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl fills the ``fmt.sliced`` 728c2ecf20Sopenharmony_cimember, a struct 738c2ecf20Sopenharmony_ci:c:type:`v4l2_sliced_vbi_format`. 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ciApplications can request different parameters by initializing or 768c2ecf20Sopenharmony_cimodifying the ``fmt.sliced`` member and calling the 778c2ecf20Sopenharmony_ci:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl with a pointer to the 788c2ecf20Sopenharmony_cistruct :c:type:`v4l2_format` structure. 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ciThe sliced VBI API is more complicated than the raw VBI API because the 818c2ecf20Sopenharmony_cihardware must be told which VBI service to expect on each scan line. Not 828c2ecf20Sopenharmony_ciall services may be supported by the hardware on all lines (this is 838c2ecf20Sopenharmony_ciespecially true for VBI output where Teletext is often unsupported and 848c2ecf20Sopenharmony_ciother services can only be inserted in one specific line). In many 858c2ecf20Sopenharmony_cicases, however, it is sufficient to just set the ``service_set`` field 868c2ecf20Sopenharmony_cito the required services and let the driver fill the ``service_lines`` 878c2ecf20Sopenharmony_ciarray according to hardware capabilities. Only if more precise control 888c2ecf20Sopenharmony_ciis needed should the programmer set the ``service_lines`` array 898c2ecf20Sopenharmony_ciexplicitly. 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ciThe :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl modifies the parameters 928c2ecf20Sopenharmony_ciaccording to hardware capabilities. When the driver allocates resources 938c2ecf20Sopenharmony_ciat this point, it may return an ``EBUSY`` error code if the required 948c2ecf20Sopenharmony_ciresources are temporarily unavailable. Other resource allocation points 958c2ecf20Sopenharmony_ciwhich may return ``EBUSY`` can be the 968c2ecf20Sopenharmony_ci:ref:`VIDIOC_STREAMON` ioctl and the first 978c2ecf20Sopenharmony_ci:c:func:`read()`, :c:func:`write()` and 988c2ecf20Sopenharmony_ci:c:func:`select()` call. 998c2ecf20Sopenharmony_ci 1008c2ecf20Sopenharmony_ci.. c:type:: v4l2_sliced_vbi_format 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_cistruct v4l2_sliced_vbi_format 1038c2ecf20Sopenharmony_ci----------------------------- 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ci.. raw:: latex 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci \begingroup 1088c2ecf20Sopenharmony_ci \scriptsize 1098c2ecf20Sopenharmony_ci \setlength{\tabcolsep}{2pt} 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_ci.. tabularcolumns:: |p{.85cm}|p{3.3cm}|p{4.4cm}|p{4.4cm}|p{4.4cm}| 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ci.. cssclass:: longtable 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci.. flat-table:: 1168c2ecf20Sopenharmony_ci :header-rows: 0 1178c2ecf20Sopenharmony_ci :stub-columns: 0 1188c2ecf20Sopenharmony_ci :widths: 3 3 2 2 2 1198c2ecf20Sopenharmony_ci 1208c2ecf20Sopenharmony_ci * - __u16 1218c2ecf20Sopenharmony_ci - ``service_set`` 1228c2ecf20Sopenharmony_ci - :cspan:`2` 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ci If ``service_set`` is non-zero when passed with 1258c2ecf20Sopenharmony_ci :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or 1268c2ecf20Sopenharmony_ci :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`, the ``service_lines`` 1278c2ecf20Sopenharmony_ci array will be filled by the driver according to the services 1288c2ecf20Sopenharmony_ci specified in this field. For example, if ``service_set`` is 1298c2ecf20Sopenharmony_ci initialized with ``V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625``, 1308c2ecf20Sopenharmony_ci a driver for the cx25840 video decoder sets lines 7-22 of both 1318c2ecf20Sopenharmony_ci fields [#f1]_ to ``V4L2_SLICED_TELETEXT_B`` and line 23 of the first 1328c2ecf20Sopenharmony_ci field to ``V4L2_SLICED_WSS_625``. If ``service_set`` is set to 1338c2ecf20Sopenharmony_ci zero, then the values of ``service_lines`` will be used instead. 1348c2ecf20Sopenharmony_ci 1358c2ecf20Sopenharmony_ci On return the driver sets this field to the union of all elements 1368c2ecf20Sopenharmony_ci of the returned ``service_lines`` array. It may contain less 1378c2ecf20Sopenharmony_ci services than requested, perhaps just one, if the hardware cannot 1388c2ecf20Sopenharmony_ci handle more services simultaneously. It may be empty (zero) if 1398c2ecf20Sopenharmony_ci none of the requested services are supported by the hardware. 1408c2ecf20Sopenharmony_ci * - __u16 1418c2ecf20Sopenharmony_ci - ``service_lines``\ [2][24] 1428c2ecf20Sopenharmony_ci - :cspan:`2` 1438c2ecf20Sopenharmony_ci 1448c2ecf20Sopenharmony_ci Applications initialize this array with sets of data services the 1458c2ecf20Sopenharmony_ci driver shall look for or insert on the respective scan line. 1468c2ecf20Sopenharmony_ci Subject to hardware capabilities drivers return the requested set, 1478c2ecf20Sopenharmony_ci a subset, which may be just a single service, or an empty set. 1488c2ecf20Sopenharmony_ci When the hardware cannot handle multiple services on the same line 1498c2ecf20Sopenharmony_ci the driver shall choose one. No assumptions can be made on which 1508c2ecf20Sopenharmony_ci service the driver chooses. 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_ci Data services are defined in :ref:`vbi-services2`. Array indices 1538c2ecf20Sopenharmony_ci map to ITU-R line numbers\ [#f2]_ as follows: 1548c2ecf20Sopenharmony_ci * - 1558c2ecf20Sopenharmony_ci - 1568c2ecf20Sopenharmony_ci - Element 1578c2ecf20Sopenharmony_ci - 525 line systems 1588c2ecf20Sopenharmony_ci - 625 line systems 1598c2ecf20Sopenharmony_ci * - 1608c2ecf20Sopenharmony_ci - 1618c2ecf20Sopenharmony_ci - ``service_lines``\ [0][1] 1628c2ecf20Sopenharmony_ci - 1 1638c2ecf20Sopenharmony_ci - 1 1648c2ecf20Sopenharmony_ci * - 1658c2ecf20Sopenharmony_ci - 1668c2ecf20Sopenharmony_ci - ``service_lines``\ [0][23] 1678c2ecf20Sopenharmony_ci - 23 1688c2ecf20Sopenharmony_ci - 23 1698c2ecf20Sopenharmony_ci * - 1708c2ecf20Sopenharmony_ci - 1718c2ecf20Sopenharmony_ci - ``service_lines``\ [1][1] 1728c2ecf20Sopenharmony_ci - 264 1738c2ecf20Sopenharmony_ci - 314 1748c2ecf20Sopenharmony_ci * - 1758c2ecf20Sopenharmony_ci - 1768c2ecf20Sopenharmony_ci - ``service_lines``\ [1][23] 1778c2ecf20Sopenharmony_ci - 286 1788c2ecf20Sopenharmony_ci - 336 1798c2ecf20Sopenharmony_ci * - 1808c2ecf20Sopenharmony_ci - 1818c2ecf20Sopenharmony_ci - :cspan:`2` Drivers must set ``service_lines`` [0][0] and 1828c2ecf20Sopenharmony_ci ``service_lines``\ [1][0] to zero. The 1838c2ecf20Sopenharmony_ci ``V4L2_VBI_ITU_525_F1_START``, ``V4L2_VBI_ITU_525_F2_START``, 1848c2ecf20Sopenharmony_ci ``V4L2_VBI_ITU_625_F1_START`` and ``V4L2_VBI_ITU_625_F2_START`` 1858c2ecf20Sopenharmony_ci defines give the start line numbers for each field for each 525 or 1868c2ecf20Sopenharmony_ci 625 line format as a convenience. Don't forget that ITU line 1878c2ecf20Sopenharmony_ci numbering starts at 1, not 0. 1888c2ecf20Sopenharmony_ci * - __u32 1898c2ecf20Sopenharmony_ci - ``io_size`` 1908c2ecf20Sopenharmony_ci - :cspan:`2` Maximum number of bytes passed by one 1918c2ecf20Sopenharmony_ci :c:func:`read()` or :c:func:`write()` call, 1928c2ecf20Sopenharmony_ci and the buffer size in bytes for the 1938c2ecf20Sopenharmony_ci :ref:`VIDIOC_QBUF` and 1948c2ecf20Sopenharmony_ci :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. Drivers set this field 1958c2ecf20Sopenharmony_ci to the size of struct 1968c2ecf20Sopenharmony_ci :c:type:`v4l2_sliced_vbi_data` times the 1978c2ecf20Sopenharmony_ci number of non-zero elements in the returned ``service_lines`` 1988c2ecf20Sopenharmony_ci array (that is the number of lines potentially carrying data). 1998c2ecf20Sopenharmony_ci * - __u32 2008c2ecf20Sopenharmony_ci - ``reserved``\ [2] 2018c2ecf20Sopenharmony_ci - :cspan:`2` This array is reserved for future extensions. 2028c2ecf20Sopenharmony_ci 2038c2ecf20Sopenharmony_ci Applications and drivers must set it to zero. 2048c2ecf20Sopenharmony_ci 2058c2ecf20Sopenharmony_ci.. raw:: latex 2068c2ecf20Sopenharmony_ci 2078c2ecf20Sopenharmony_ci \endgroup 2088c2ecf20Sopenharmony_ci 2098c2ecf20Sopenharmony_ci.. _vbi-services2: 2108c2ecf20Sopenharmony_ci 2118c2ecf20Sopenharmony_ciSliced VBI services 2128c2ecf20Sopenharmony_ci------------------- 2138c2ecf20Sopenharmony_ci 2148c2ecf20Sopenharmony_ci.. raw:: latex 2158c2ecf20Sopenharmony_ci 2168c2ecf20Sopenharmony_ci \scriptsize 2178c2ecf20Sopenharmony_ci 2188c2ecf20Sopenharmony_ci.. tabularcolumns:: |p{4.1cm}|p{1.1cm}|p{2.4cm}|p{2.0cm}|p{7.3cm}| 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_ci.. flat-table:: 2218c2ecf20Sopenharmony_ci :header-rows: 1 2228c2ecf20Sopenharmony_ci :stub-columns: 0 2238c2ecf20Sopenharmony_ci :widths: 2 1 1 2 2 2248c2ecf20Sopenharmony_ci 2258c2ecf20Sopenharmony_ci * - Symbol 2268c2ecf20Sopenharmony_ci - Value 2278c2ecf20Sopenharmony_ci - Reference 2288c2ecf20Sopenharmony_ci - Lines, usually 2298c2ecf20Sopenharmony_ci - Payload 2308c2ecf20Sopenharmony_ci * - ``V4L2_SLICED_TELETEXT_B`` (Teletext System B) 2318c2ecf20Sopenharmony_ci - 0x0001 2328c2ecf20Sopenharmony_ci - :ref:`ets300706`, 2338c2ecf20Sopenharmony_ci 2348c2ecf20Sopenharmony_ci :ref:`itu653` 2358c2ecf20Sopenharmony_ci - PAL/SECAM line 7-22, 320-335 (second field 7-22) 2368c2ecf20Sopenharmony_ci - Last 42 of the 45 byte Teletext packet, that is without clock 2378c2ecf20Sopenharmony_ci run-in and framing code, lsb first transmitted. 2388c2ecf20Sopenharmony_ci * - ``V4L2_SLICED_VPS`` 2398c2ecf20Sopenharmony_ci - 0x0400 2408c2ecf20Sopenharmony_ci - :ref:`ets300231` 2418c2ecf20Sopenharmony_ci - PAL line 16 2428c2ecf20Sopenharmony_ci - Byte number 3 to 15 according to Figure 9 of ETS 300 231, lsb 2438c2ecf20Sopenharmony_ci first transmitted. 2448c2ecf20Sopenharmony_ci * - ``V4L2_SLICED_CAPTION_525`` 2458c2ecf20Sopenharmony_ci - 0x1000 2468c2ecf20Sopenharmony_ci - :ref:`cea608` 2478c2ecf20Sopenharmony_ci - NTSC line 21, 284 (second field 21) 2488c2ecf20Sopenharmony_ci - Two bytes in transmission order, including parity bit, lsb first 2498c2ecf20Sopenharmony_ci transmitted. 2508c2ecf20Sopenharmony_ci * - ``V4L2_SLICED_WSS_625`` 2518c2ecf20Sopenharmony_ci - 0x4000 2528c2ecf20Sopenharmony_ci - :ref:`itu1119`, 2538c2ecf20Sopenharmony_ci 2548c2ecf20Sopenharmony_ci :ref:`en300294` 2558c2ecf20Sopenharmony_ci - PAL/SECAM line 23 2568c2ecf20Sopenharmony_ci - 2578c2ecf20Sopenharmony_ci 2588c2ecf20Sopenharmony_ci :: 2598c2ecf20Sopenharmony_ci 2608c2ecf20Sopenharmony_ci Byte 0 1 2618c2ecf20Sopenharmony_ci msb lsb msb lsb 2628c2ecf20Sopenharmony_ci Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9 2638c2ecf20Sopenharmony_ci * - ``V4L2_SLICED_VBI_525`` 2648c2ecf20Sopenharmony_ci - 0x1000 2658c2ecf20Sopenharmony_ci - :cspan:`2` Set of services applicable to 525 line systems. 2668c2ecf20Sopenharmony_ci * - ``V4L2_SLICED_VBI_625`` 2678c2ecf20Sopenharmony_ci - 0x4401 2688c2ecf20Sopenharmony_ci - :cspan:`2` Set of services applicable to 625 line systems. 2698c2ecf20Sopenharmony_ci 2708c2ecf20Sopenharmony_ci.. raw:: latex 2718c2ecf20Sopenharmony_ci 2728c2ecf20Sopenharmony_ci \normalsize 2738c2ecf20Sopenharmony_ci 2748c2ecf20Sopenharmony_ciDrivers may return an ``EINVAL`` error code when applications attempt to 2758c2ecf20Sopenharmony_ciread or write data without prior format negotiation, after switching the 2768c2ecf20Sopenharmony_civideo standard (which may invalidate the negotiated VBI parameters) and 2778c2ecf20Sopenharmony_ciafter switching the video input (which may change the video standard as 2788c2ecf20Sopenharmony_cia side effect). The :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl may 2798c2ecf20Sopenharmony_cireturn an ``EBUSY`` error code when applications attempt to change the 2808c2ecf20Sopenharmony_ciformat while i/o is in progress (between a 2818c2ecf20Sopenharmony_ci:ref:`VIDIOC_STREAMON` and 2828c2ecf20Sopenharmony_ci:ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` call, and after the first 2838c2ecf20Sopenharmony_ci:c:func:`read()` or :c:func:`write()` call). 2848c2ecf20Sopenharmony_ci 2858c2ecf20Sopenharmony_ciReading and writing sliced VBI data 2868c2ecf20Sopenharmony_ci=================================== 2878c2ecf20Sopenharmony_ci 2888c2ecf20Sopenharmony_ciA single :c:func:`read()` or :c:func:`write()` 2898c2ecf20Sopenharmony_cicall must pass all data belonging to one video frame. That is an array 2908c2ecf20Sopenharmony_ciof struct :c:type:`v4l2_sliced_vbi_data` structures with one or 2918c2ecf20Sopenharmony_cimore elements and a total size not exceeding ``io_size`` bytes. Likewise 2928c2ecf20Sopenharmony_ciin streaming I/O mode one buffer of ``io_size`` bytes must contain data 2938c2ecf20Sopenharmony_ciof one video frame. The ``id`` of unused 2948c2ecf20Sopenharmony_cistruct :c:type:`v4l2_sliced_vbi_data` elements must be zero. 2958c2ecf20Sopenharmony_ci 2968c2ecf20Sopenharmony_ci.. c:type:: v4l2_sliced_vbi_data 2978c2ecf20Sopenharmony_ci 2988c2ecf20Sopenharmony_cistruct v4l2_sliced_vbi_data 2998c2ecf20Sopenharmony_ci--------------------------- 3008c2ecf20Sopenharmony_ci 3018c2ecf20Sopenharmony_ci.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| 3028c2ecf20Sopenharmony_ci 3038c2ecf20Sopenharmony_ci.. flat-table:: 3048c2ecf20Sopenharmony_ci :header-rows: 0 3058c2ecf20Sopenharmony_ci :stub-columns: 0 3068c2ecf20Sopenharmony_ci :widths: 3 1 4 3078c2ecf20Sopenharmony_ci 3088c2ecf20Sopenharmony_ci * - __u32 3098c2ecf20Sopenharmony_ci - ``id`` 3108c2ecf20Sopenharmony_ci - A flag from :ref:`vbi-services` identifying the type of data in 3118c2ecf20Sopenharmony_ci this packet. Only a single bit must be set. When the ``id`` of a 3128c2ecf20Sopenharmony_ci captured packet is zero, the packet is empty and the contents of 3138c2ecf20Sopenharmony_ci other fields are undefined. Applications shall ignore empty 3148c2ecf20Sopenharmony_ci packets. When the ``id`` of a packet for output is zero the 3158c2ecf20Sopenharmony_ci contents of the ``data`` field are undefined and the driver must 3168c2ecf20Sopenharmony_ci no longer insert data on the requested ``field`` and ``line``. 3178c2ecf20Sopenharmony_ci * - __u32 3188c2ecf20Sopenharmony_ci - ``field`` 3198c2ecf20Sopenharmony_ci - The video field number this data has been captured from, or shall 3208c2ecf20Sopenharmony_ci be inserted at. ``0`` for the first field, ``1`` for the second 3218c2ecf20Sopenharmony_ci field. 3228c2ecf20Sopenharmony_ci * - __u32 3238c2ecf20Sopenharmony_ci - ``line`` 3248c2ecf20Sopenharmony_ci - The field (as opposed to frame) line number this data has been 3258c2ecf20Sopenharmony_ci captured from, or shall be inserted at. See :ref:`vbi-525` and 3268c2ecf20Sopenharmony_ci :ref:`vbi-625` for valid values. Sliced VBI capture devices can 3278c2ecf20Sopenharmony_ci set the line number of all packets to ``0`` if the hardware cannot 3288c2ecf20Sopenharmony_ci reliably identify scan lines. The field number must always be 3298c2ecf20Sopenharmony_ci valid. 3308c2ecf20Sopenharmony_ci * - __u32 3318c2ecf20Sopenharmony_ci - ``reserved`` 3328c2ecf20Sopenharmony_ci - This field is reserved for future extensions. Applications and 3338c2ecf20Sopenharmony_ci drivers must set it to zero. 3348c2ecf20Sopenharmony_ci * - __u8 3358c2ecf20Sopenharmony_ci - ``data``\ [48] 3368c2ecf20Sopenharmony_ci - The packet payload. See :ref:`vbi-services` for the contents and 3378c2ecf20Sopenharmony_ci number of bytes passed for each data type. The contents of padding 3388c2ecf20Sopenharmony_ci bytes at the end of this array are undefined, drivers and 3398c2ecf20Sopenharmony_ci applications shall ignore them. 3408c2ecf20Sopenharmony_ci 3418c2ecf20Sopenharmony_ciPackets are always passed in ascending line number order, without 3428c2ecf20Sopenharmony_ciduplicate line numbers. The :c:func:`write()` function and 3438c2ecf20Sopenharmony_cithe :ref:`VIDIOC_QBUF` ioctl must return an ``EINVAL`` 3448c2ecf20Sopenharmony_cierror code when applications violate this rule. They must also return an 3458c2ecf20Sopenharmony_ciEINVAL error code when applications pass an incorrect field or line 3468c2ecf20Sopenharmony_cinumber, or a combination of ``field``, ``line`` and ``id`` which has not 3478c2ecf20Sopenharmony_cibeen negotiated with the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` or 3488c2ecf20Sopenharmony_ci:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. When the line numbers are 3498c2ecf20Sopenharmony_ciunknown the driver must pass the packets in transmitted order. The 3508c2ecf20Sopenharmony_cidriver can insert empty packets with ``id`` set to zero anywhere in the 3518c2ecf20Sopenharmony_cipacket array. 3528c2ecf20Sopenharmony_ci 3538c2ecf20Sopenharmony_ciTo assure synchronization and to distinguish from frame dropping, when a 3548c2ecf20Sopenharmony_cicaptured frame does not carry any of the requested data services drivers 3558c2ecf20Sopenharmony_cimust pass one or more empty packets. When an application fails to pass 3568c2ecf20Sopenharmony_ciVBI data in time for output, the driver must output the last VPS and WSS 3578c2ecf20Sopenharmony_cipacket again, and disable the output of Closed Caption and Teletext 3588c2ecf20Sopenharmony_cidata, or output data which is ignored by Closed Caption and Teletext 3598c2ecf20Sopenharmony_cidecoders. 3608c2ecf20Sopenharmony_ci 3618c2ecf20Sopenharmony_ciA sliced VBI device may support :ref:`read/write <rw>` and/or 3628c2ecf20Sopenharmony_cistreaming (:ref:`memory mapping <mmap>` and/or 3638c2ecf20Sopenharmony_ci:ref:`user pointer <userp>`) I/O. The latter bears the possibility of 3648c2ecf20Sopenharmony_cisynchronizing video and VBI data by using buffer timestamps. 3658c2ecf20Sopenharmony_ci 3668c2ecf20Sopenharmony_ciSliced VBI Data in MPEG Streams 3678c2ecf20Sopenharmony_ci=============================== 3688c2ecf20Sopenharmony_ci 3698c2ecf20Sopenharmony_ciIf a device can produce an MPEG output stream, it may be capable of 3708c2ecf20Sopenharmony_ciproviding 3718c2ecf20Sopenharmony_ci:ref:`negotiated sliced VBI services <sliced-vbi-format-negotitation>` 3728c2ecf20Sopenharmony_cias data embedded in the MPEG stream. Users or applications control this 3738c2ecf20Sopenharmony_cisliced VBI data insertion with the 3748c2ecf20Sopenharmony_ci:ref:`V4L2_CID_MPEG_STREAM_VBI_FMT <v4l2-mpeg-stream-vbi-fmt>` 3758c2ecf20Sopenharmony_cicontrol. 3768c2ecf20Sopenharmony_ci 3778c2ecf20Sopenharmony_ciIf the driver does not provide the 3788c2ecf20Sopenharmony_ci:ref:`V4L2_CID_MPEG_STREAM_VBI_FMT <v4l2-mpeg-stream-vbi-fmt>` 3798c2ecf20Sopenharmony_cicontrol, or only allows that control to be set to 3808c2ecf20Sopenharmony_ci:ref:`V4L2_MPEG_STREAM_VBI_FMT_NONE <v4l2-mpeg-stream-vbi-fmt>`, 3818c2ecf20Sopenharmony_cithen the device cannot embed sliced VBI data in the MPEG stream. 3828c2ecf20Sopenharmony_ci 3838c2ecf20Sopenharmony_ciThe 3848c2ecf20Sopenharmony_ci:ref:`V4L2_CID_MPEG_STREAM_VBI_FMT <v4l2-mpeg-stream-vbi-fmt>` 3858c2ecf20Sopenharmony_cicontrol does not implicitly set the device driver to capture nor cease 3868c2ecf20Sopenharmony_cicapturing sliced VBI data. The control only indicates to embed sliced 3878c2ecf20Sopenharmony_ciVBI data in the MPEG stream, if an application has negotiated sliced VBI 3888c2ecf20Sopenharmony_ciservice be captured. 3898c2ecf20Sopenharmony_ci 3908c2ecf20Sopenharmony_ciIt may also be the case that a device can embed sliced VBI data in only 3918c2ecf20Sopenharmony_cicertain types of MPEG streams: for example in an MPEG-2 PS but not an 3928c2ecf20Sopenharmony_ciMPEG-2 TS. In this situation, if sliced VBI data insertion is requested, 3938c2ecf20Sopenharmony_cithe sliced VBI data will be embedded in MPEG stream types when 3948c2ecf20Sopenharmony_cisupported, and silently omitted from MPEG stream types where sliced VBI 3958c2ecf20Sopenharmony_cidata insertion is not supported by the device. 3968c2ecf20Sopenharmony_ci 3978c2ecf20Sopenharmony_ciThe following subsections specify the format of the embedded sliced VBI 3988c2ecf20Sopenharmony_cidata. 3998c2ecf20Sopenharmony_ci 4008c2ecf20Sopenharmony_ciMPEG Stream Embedded, Sliced VBI Data Format: NONE 4018c2ecf20Sopenharmony_ci-------------------------------------------------- 4028c2ecf20Sopenharmony_ci 4038c2ecf20Sopenharmony_ciThe 4048c2ecf20Sopenharmony_ci:ref:`V4L2_MPEG_STREAM_VBI_FMT_NONE <v4l2-mpeg-stream-vbi-fmt>` 4058c2ecf20Sopenharmony_ciembedded sliced VBI format shall be interpreted by drivers as a control 4068c2ecf20Sopenharmony_cito cease embedding sliced VBI data in MPEG streams. Neither the device 4078c2ecf20Sopenharmony_cinor driver shall insert "empty" embedded sliced VBI data packets in the 4088c2ecf20Sopenharmony_ciMPEG stream when this format is set. No MPEG stream data structures are 4098c2ecf20Sopenharmony_cispecified for this format. 4108c2ecf20Sopenharmony_ci 4118c2ecf20Sopenharmony_ciMPEG Stream Embedded, Sliced VBI Data Format: IVTV 4128c2ecf20Sopenharmony_ci-------------------------------------------------- 4138c2ecf20Sopenharmony_ci 4148c2ecf20Sopenharmony_ciThe 4158c2ecf20Sopenharmony_ci:ref:`V4L2_MPEG_STREAM_VBI_FMT_IVTV <v4l2-mpeg-stream-vbi-fmt>` 4168c2ecf20Sopenharmony_ciembedded sliced VBI format, when supported, indicates to the driver to 4178c2ecf20Sopenharmony_ciembed up to 36 lines of sliced VBI data per frame in an MPEG-2 *Private 4188c2ecf20Sopenharmony_ciStream 1 PES* packet encapsulated in an MPEG-2 *Program Pack* in the 4198c2ecf20Sopenharmony_ciMPEG stream. 4208c2ecf20Sopenharmony_ci 4218c2ecf20Sopenharmony_ci*Historical context*: This format specification originates from a 4228c2ecf20Sopenharmony_cicustom, embedded, sliced VBI data format used by the ``ivtv`` driver. 4238c2ecf20Sopenharmony_ciThis format has already been informally specified in the kernel sources 4248c2ecf20Sopenharmony_ciin the file ``Documentation/userspace-api/media/drivers/cx2341x-uapi.rst`` . The 4258c2ecf20Sopenharmony_cimaximum size of the payload and other aspects of this format are driven 4268c2ecf20Sopenharmony_ciby the CX23415 MPEG decoder's capabilities and limitations with respect 4278c2ecf20Sopenharmony_cito extracting, decoding, and displaying sliced VBI data embedded within 4288c2ecf20Sopenharmony_cian MPEG stream. 4298c2ecf20Sopenharmony_ci 4308c2ecf20Sopenharmony_ciThis format's use is *not* exclusive to the ``ivtv`` driver *nor* 4318c2ecf20Sopenharmony_ciexclusive to CX2341x devices, as the sliced VBI data packet insertion 4328c2ecf20Sopenharmony_ciinto the MPEG stream is implemented in driver software. At least the 4338c2ecf20Sopenharmony_ci``cx18`` driver provides sliced VBI data insertion into an MPEG-2 PS in 4348c2ecf20Sopenharmony_cithis format as well. 4358c2ecf20Sopenharmony_ci 4368c2ecf20Sopenharmony_ciThe following definitions specify the payload of the MPEG-2 *Private 4378c2ecf20Sopenharmony_ciStream 1 PES* packets that contain sliced VBI data when 4388c2ecf20Sopenharmony_ci:ref:`V4L2_MPEG_STREAM_VBI_FMT_IVTV <v4l2-mpeg-stream-vbi-fmt>` 4398c2ecf20Sopenharmony_ciis set. (The MPEG-2 *Private Stream 1 PES* packet header and 4408c2ecf20Sopenharmony_ciencapsulating MPEG-2 *Program Pack* header are not detailed here. Please 4418c2ecf20Sopenharmony_cirefer to the MPEG-2 specifications for details on those packet headers.) 4428c2ecf20Sopenharmony_ci 4438c2ecf20Sopenharmony_ciThe payload of the MPEG-2 *Private Stream 1 PES* packets that contain 4448c2ecf20Sopenharmony_cisliced VBI data is specified by struct 4458c2ecf20Sopenharmony_ci:c:type:`v4l2_mpeg_vbi_fmt_ivtv`. The 4468c2ecf20Sopenharmony_cipayload is variable length, depending on the actual number of lines of 4478c2ecf20Sopenharmony_cisliced VBI data present in a video frame. The payload may be padded at 4488c2ecf20Sopenharmony_cithe end with unspecified fill bytes to align the end of the payload to a 4498c2ecf20Sopenharmony_ci4-byte boundary. The payload shall never exceed 1552 bytes (2 fields 4508c2ecf20Sopenharmony_ciwith 18 lines/field with 43 bytes of data/line and a 4 byte magic 4518c2ecf20Sopenharmony_cinumber). 4528c2ecf20Sopenharmony_ci 4538c2ecf20Sopenharmony_ci.. c:type:: v4l2_mpeg_vbi_fmt_ivtv 4548c2ecf20Sopenharmony_ci 4558c2ecf20Sopenharmony_cistruct v4l2_mpeg_vbi_fmt_ivtv 4568c2ecf20Sopenharmony_ci----------------------------- 4578c2ecf20Sopenharmony_ci 4588c2ecf20Sopenharmony_ci.. tabularcolumns:: |p{1.0cm}|p{3.8cm}|p{1.0cm}|p{11.2cm}| 4598c2ecf20Sopenharmony_ci 4608c2ecf20Sopenharmony_ci.. flat-table:: 4618c2ecf20Sopenharmony_ci :header-rows: 0 4628c2ecf20Sopenharmony_ci :stub-columns: 0 4638c2ecf20Sopenharmony_ci :widths: 1 1 2 4648c2ecf20Sopenharmony_ci 4658c2ecf20Sopenharmony_ci * - __u8 4668c2ecf20Sopenharmony_ci - ``magic``\ [4] 4678c2ecf20Sopenharmony_ci - A "magic" constant from :ref:`v4l2-mpeg-vbi-fmt-ivtv-magic` that 4688c2ecf20Sopenharmony_ci indicates this is a valid sliced VBI data payload and also 4698c2ecf20Sopenharmony_ci indicates which member of the anonymous union, ``itv0`` or 4708c2ecf20Sopenharmony_ci ``ITV0``, to use for the payload data. 4718c2ecf20Sopenharmony_ci * - union { 4728c2ecf20Sopenharmony_ci - (anonymous) 4738c2ecf20Sopenharmony_ci * - struct :c:type:`v4l2_mpeg_vbi_itv0` 4748c2ecf20Sopenharmony_ci - ``itv0`` 4758c2ecf20Sopenharmony_ci - The primary form of the sliced VBI data payload that contains 4768c2ecf20Sopenharmony_ci anywhere from 1 to 35 lines of sliced VBI data. Line masks are 4778c2ecf20Sopenharmony_ci provided in this form of the payload indicating which VBI lines 4788c2ecf20Sopenharmony_ci are provided. 4798c2ecf20Sopenharmony_ci * - struct :ref:`v4l2_mpeg_vbi_ITV0 <v4l2-mpeg-vbi-itv0-1>` 4808c2ecf20Sopenharmony_ci - ``ITV0`` 4818c2ecf20Sopenharmony_ci - An alternate form of the sliced VBI data payload used when 36 4828c2ecf20Sopenharmony_ci lines of sliced VBI data are present. No line masks are provided 4838c2ecf20Sopenharmony_ci in this form of the payload; all valid line mask bits are 4848c2ecf20Sopenharmony_ci implcitly set. 4858c2ecf20Sopenharmony_ci * - } 4868c2ecf20Sopenharmony_ci - 4878c2ecf20Sopenharmony_ci 4888c2ecf20Sopenharmony_ci.. _v4l2-mpeg-vbi-fmt-ivtv-magic: 4898c2ecf20Sopenharmony_ci 4908c2ecf20Sopenharmony_ciMagic Constants for struct v4l2_mpeg_vbi_fmt_ivtv magic field 4918c2ecf20Sopenharmony_ci------------------------------------------------------------- 4928c2ecf20Sopenharmony_ci 4938c2ecf20Sopenharmony_ci.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}| 4948c2ecf20Sopenharmony_ci 4958c2ecf20Sopenharmony_ci.. flat-table:: 4968c2ecf20Sopenharmony_ci :header-rows: 1 4978c2ecf20Sopenharmony_ci :stub-columns: 0 4988c2ecf20Sopenharmony_ci :widths: 3 1 4 4998c2ecf20Sopenharmony_ci 5008c2ecf20Sopenharmony_ci * - Defined Symbol 5018c2ecf20Sopenharmony_ci - Value 5028c2ecf20Sopenharmony_ci - Description 5038c2ecf20Sopenharmony_ci * - ``V4L2_MPEG_VBI_IVTV_MAGIC0`` 5048c2ecf20Sopenharmony_ci - "itv0" 5058c2ecf20Sopenharmony_ci - Indicates the ``itv0`` member of the union in struct 5068c2ecf20Sopenharmony_ci :c:type:`v4l2_mpeg_vbi_fmt_ivtv` is 5078c2ecf20Sopenharmony_ci valid. 5088c2ecf20Sopenharmony_ci * - ``V4L2_MPEG_VBI_IVTV_MAGIC1`` 5098c2ecf20Sopenharmony_ci - "ITV0" 5108c2ecf20Sopenharmony_ci - Indicates the ``ITV0`` member of the union in struct 5118c2ecf20Sopenharmony_ci :c:type:`v4l2_mpeg_vbi_fmt_ivtv` is 5128c2ecf20Sopenharmony_ci valid and that 36 lines of sliced VBI data are present. 5138c2ecf20Sopenharmony_ci 5148c2ecf20Sopenharmony_ci 5158c2ecf20Sopenharmony_ci.. c:type:: v4l2_mpeg_vbi_itv0 5168c2ecf20Sopenharmony_ci 5178c2ecf20Sopenharmony_ci.. c:type:: v4l2_mpeg_vbi_ITV0 5188c2ecf20Sopenharmony_ci 5198c2ecf20Sopenharmony_cistructs v4l2_mpeg_vbi_itv0 and v4l2_mpeg_vbi_ITV0 5208c2ecf20Sopenharmony_ci------------------------------------------------- 5218c2ecf20Sopenharmony_ci 5228c2ecf20Sopenharmony_ci.. tabularcolumns:: |p{5.2cm}|p{2.4cm}|p{9.9cm}| 5238c2ecf20Sopenharmony_ci 5248c2ecf20Sopenharmony_ci.. flat-table:: 5258c2ecf20Sopenharmony_ci :header-rows: 0 5268c2ecf20Sopenharmony_ci :stub-columns: 0 5278c2ecf20Sopenharmony_ci :widths: 1 1 2 5288c2ecf20Sopenharmony_ci 5298c2ecf20Sopenharmony_ci * - __le32 5308c2ecf20Sopenharmony_ci - ``linemask``\ [2] 5318c2ecf20Sopenharmony_ci - Bitmasks indicating the VBI service lines present. These 5328c2ecf20Sopenharmony_ci ``linemask`` values are stored in little endian byte order in the 5338c2ecf20Sopenharmony_ci MPEG stream. Some reference ``linemask`` bit positions with their 5348c2ecf20Sopenharmony_ci corresponding VBI line number and video field are given below. 5358c2ecf20Sopenharmony_ci b\ :sub:`0` indicates the least significant bit of a ``linemask`` 5368c2ecf20Sopenharmony_ci value: 5378c2ecf20Sopenharmony_ci 5388c2ecf20Sopenharmony_ci 5398c2ecf20Sopenharmony_ci :: 5408c2ecf20Sopenharmony_ci 5418c2ecf20Sopenharmony_ci linemask[0] b0: line 6 first field 5428c2ecf20Sopenharmony_ci linemask[0] b17: line 23 first field 5438c2ecf20Sopenharmony_ci linemask[0] b18: line 6 second field 5448c2ecf20Sopenharmony_ci linemask[0] b31: line 19 second field 5458c2ecf20Sopenharmony_ci linemask[1] b0: line 20 second field 5468c2ecf20Sopenharmony_ci linemask[1] b3: line 23 second field 5478c2ecf20Sopenharmony_ci linemask[1] b4-b31: unused and set to 0 5488c2ecf20Sopenharmony_ci * - struct 5498c2ecf20Sopenharmony_ci :c:type:`v4l2_mpeg_vbi_itv0_line` 5508c2ecf20Sopenharmony_ci - ``line``\ [35] 5518c2ecf20Sopenharmony_ci - This is a variable length array that holds from 1 to 35 lines of 5528c2ecf20Sopenharmony_ci sliced VBI data. The sliced VBI data lines present correspond to 5538c2ecf20Sopenharmony_ci the bits set in the ``linemask`` array, starting from b\ :sub:`0` 5548c2ecf20Sopenharmony_ci of ``linemask``\ [0] up through b\ :sub:`31` of ``linemask``\ [0], 5558c2ecf20Sopenharmony_ci and from b\ :sub:`0` of ``linemask``\ [1] up through b\ :sub:`3` of 5568c2ecf20Sopenharmony_ci ``linemask``\ [1]. ``line``\ [0] corresponds to the first bit 5578c2ecf20Sopenharmony_ci found set in the ``linemask`` array, ``line``\ [1] corresponds to 5588c2ecf20Sopenharmony_ci the second bit found set in the ``linemask`` array, etc. If no 5598c2ecf20Sopenharmony_ci ``linemask`` array bits are set, then ``line``\ [0] may contain 5608c2ecf20Sopenharmony_ci one line of unspecified data that should be ignored by 5618c2ecf20Sopenharmony_ci applications. 5628c2ecf20Sopenharmony_ci 5638c2ecf20Sopenharmony_ci 5648c2ecf20Sopenharmony_ci.. _v4l2-mpeg-vbi-itv0-1: 5658c2ecf20Sopenharmony_ci 5668c2ecf20Sopenharmony_cistruct v4l2_mpeg_vbi_ITV0 5678c2ecf20Sopenharmony_ci------------------------- 5688c2ecf20Sopenharmony_ci 5698c2ecf20Sopenharmony_ci.. tabularcolumns:: |p{5.2cm}|p{2.4cm}|p{9.9cm}| 5708c2ecf20Sopenharmony_ci 5718c2ecf20Sopenharmony_ci.. flat-table:: 5728c2ecf20Sopenharmony_ci :header-rows: 0 5738c2ecf20Sopenharmony_ci :stub-columns: 0 5748c2ecf20Sopenharmony_ci :widths: 1 1 2 5758c2ecf20Sopenharmony_ci 5768c2ecf20Sopenharmony_ci * - struct 5778c2ecf20Sopenharmony_ci :c:type:`v4l2_mpeg_vbi_itv0_line` 5788c2ecf20Sopenharmony_ci - ``line``\ [36] 5798c2ecf20Sopenharmony_ci - A fixed length array of 36 lines of sliced VBI data. ``line``\ [0] 5808c2ecf20Sopenharmony_ci through ``line``\ [17] correspond to lines 6 through 23 of the 5818c2ecf20Sopenharmony_ci first field. ``line``\ [18] through ``line``\ [35] corresponds to 5828c2ecf20Sopenharmony_ci lines 6 through 23 of the second field. 5838c2ecf20Sopenharmony_ci 5848c2ecf20Sopenharmony_ci 5858c2ecf20Sopenharmony_ci.. c:type:: v4l2_mpeg_vbi_itv0_line 5868c2ecf20Sopenharmony_ci 5878c2ecf20Sopenharmony_cistruct v4l2_mpeg_vbi_itv0_line 5888c2ecf20Sopenharmony_ci------------------------------ 5898c2ecf20Sopenharmony_ci 5908c2ecf20Sopenharmony_ci.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| 5918c2ecf20Sopenharmony_ci 5928c2ecf20Sopenharmony_ci.. flat-table:: 5938c2ecf20Sopenharmony_ci :header-rows: 0 5948c2ecf20Sopenharmony_ci :stub-columns: 0 5958c2ecf20Sopenharmony_ci :widths: 1 1 2 5968c2ecf20Sopenharmony_ci 5978c2ecf20Sopenharmony_ci * - __u8 5988c2ecf20Sopenharmony_ci - ``id`` 5998c2ecf20Sopenharmony_ci - A line identifier value from 6008c2ecf20Sopenharmony_ci :ref:`ITV0-Line-Identifier-Constants` that indicates the type of 6018c2ecf20Sopenharmony_ci sliced VBI data stored on this line. 6028c2ecf20Sopenharmony_ci * - __u8 6038c2ecf20Sopenharmony_ci - ``data``\ [42] 6048c2ecf20Sopenharmony_ci - The sliced VBI data for the line. 6058c2ecf20Sopenharmony_ci 6068c2ecf20Sopenharmony_ci 6078c2ecf20Sopenharmony_ci.. _ITV0-Line-Identifier-Constants: 6088c2ecf20Sopenharmony_ci 6098c2ecf20Sopenharmony_ciLine Identifiers for struct v4l2_mpeg_vbi_itv0_line id field 6108c2ecf20Sopenharmony_ci------------------------------------------------------------ 6118c2ecf20Sopenharmony_ci 6128c2ecf20Sopenharmony_ci.. tabularcolumns:: |p{7.0cm}|p{1.8cm}|p{8.7cm}| 6138c2ecf20Sopenharmony_ci 6148c2ecf20Sopenharmony_ci.. flat-table:: 6158c2ecf20Sopenharmony_ci :header-rows: 1 6168c2ecf20Sopenharmony_ci :stub-columns: 0 6178c2ecf20Sopenharmony_ci :widths: 3 1 4 6188c2ecf20Sopenharmony_ci 6198c2ecf20Sopenharmony_ci * - Defined Symbol 6208c2ecf20Sopenharmony_ci - Value 6218c2ecf20Sopenharmony_ci - Description 6228c2ecf20Sopenharmony_ci * - ``V4L2_MPEG_VBI_IVTV_TELETEXT_B`` 6238c2ecf20Sopenharmony_ci - 1 6248c2ecf20Sopenharmony_ci - Refer to :ref:`Sliced VBI services <vbi-services2>` for a 6258c2ecf20Sopenharmony_ci description of the line payload. 6268c2ecf20Sopenharmony_ci * - ``V4L2_MPEG_VBI_IVTV_CAPTION_525`` 6278c2ecf20Sopenharmony_ci - 4 6288c2ecf20Sopenharmony_ci - Refer to :ref:`Sliced VBI services <vbi-services2>` for a 6298c2ecf20Sopenharmony_ci description of the line payload. 6308c2ecf20Sopenharmony_ci * - ``V4L2_MPEG_VBI_IVTV_WSS_625`` 6318c2ecf20Sopenharmony_ci - 5 6328c2ecf20Sopenharmony_ci - Refer to :ref:`Sliced VBI services <vbi-services2>` for a 6338c2ecf20Sopenharmony_ci description of the line payload. 6348c2ecf20Sopenharmony_ci * - ``V4L2_MPEG_VBI_IVTV_VPS`` 6358c2ecf20Sopenharmony_ci - 7 6368c2ecf20Sopenharmony_ci - Refer to :ref:`Sliced VBI services <vbi-services2>` for a 6378c2ecf20Sopenharmony_ci description of the line payload. 6388c2ecf20Sopenharmony_ci 6398c2ecf20Sopenharmony_ci 6408c2ecf20Sopenharmony_ci.. [#f1] 6418c2ecf20Sopenharmony_ci According to :ref:`ETS 300 706 <ets300706>` lines 6-22 of the first 6428c2ecf20Sopenharmony_ci field and lines 5-22 of the second field may carry Teletext data. 6438c2ecf20Sopenharmony_ci 6448c2ecf20Sopenharmony_ci.. [#f2] 6458c2ecf20Sopenharmony_ci See also :ref:`vbi-525` and :ref:`vbi-625`. 646