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