1059b1c5bSMauro Carvalho Chehab.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2407e84cdSMauro Carvalho Chehab.. c:namespace:: V4L
354f38fcaSMauro Carvalho Chehab
454f38fcaSMauro Carvalho Chehab.. _raw-vbi:
554f38fcaSMauro Carvalho Chehab
654f38fcaSMauro Carvalho Chehab**********************
754f38fcaSMauro Carvalho ChehabRaw VBI Data Interface
854f38fcaSMauro Carvalho Chehab**********************
954f38fcaSMauro Carvalho Chehab
1054f38fcaSMauro Carvalho ChehabVBI is an abbreviation of Vertical Blanking Interval, a gap in the
1154f38fcaSMauro Carvalho Chehabsequence of lines of an analog video signal. During VBI no picture
1254f38fcaSMauro Carvalho Chehabinformation is transmitted, allowing some time while the electron beam
1354f38fcaSMauro Carvalho Chehabof a cathode ray tube TV returns to the top of the screen. Using an
1454f38fcaSMauro Carvalho Chehaboscilloscope you will find here the vertical synchronization pulses and
1554f38fcaSMauro Carvalho Chehabshort data packages ASK modulated [#f1]_ onto the video signal. These are
1654f38fcaSMauro Carvalho Chehabtransmissions of services such as Teletext or Closed Caption.
1754f38fcaSMauro Carvalho Chehab
1854f38fcaSMauro Carvalho ChehabSubject of this interface type is raw VBI data, as sampled off a video
1954f38fcaSMauro Carvalho Chehabsignal, or to be added to a signal for output. The data format is
2054f38fcaSMauro Carvalho Chehabsimilar to uncompressed video images, a number of lines times a number
2154f38fcaSMauro Carvalho Chehabof samples per line, we call this a VBI image.
2254f38fcaSMauro Carvalho Chehab
2354f38fcaSMauro Carvalho ChehabConventionally V4L2 VBI devices are accessed through character device
2454f38fcaSMauro Carvalho Chehabspecial files named ``/dev/vbi`` and ``/dev/vbi0`` to ``/dev/vbi31``
2554f38fcaSMauro Carvalho Chehabwith major number 81 and minor numbers 224 to 255. ``/dev/vbi`` is
2654f38fcaSMauro Carvalho Chehabtypically a symbolic link to the preferred VBI device. This convention
2754f38fcaSMauro Carvalho Chehabapplies to both input and output devices.
2854f38fcaSMauro Carvalho Chehab
2954f38fcaSMauro Carvalho ChehabTo address the problems of finding related video and VBI devices VBI
3054f38fcaSMauro Carvalho Chehabcapturing and output is also available as device function under
3154f38fcaSMauro Carvalho Chehab``/dev/video``. To capture or output raw VBI data with these devices
3254f38fcaSMauro Carvalho Chehabapplications must call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl.
3354f38fcaSMauro Carvalho ChehabAccessed as ``/dev/vbi``, raw VBI capturing or output is the default
3454f38fcaSMauro Carvalho Chehabdevice function.
3554f38fcaSMauro Carvalho Chehab
3654f38fcaSMauro Carvalho ChehabQuerying Capabilities
3754f38fcaSMauro Carvalho Chehab=====================
3854f38fcaSMauro Carvalho Chehab
3954f38fcaSMauro Carvalho ChehabDevices supporting the raw VBI capturing or output API set the
4054f38fcaSMauro Carvalho Chehab``V4L2_CAP_VBI_CAPTURE`` or ``V4L2_CAP_VBI_OUTPUT`` flags, respectively,
4154f38fcaSMauro Carvalho Chehabin the ``capabilities`` field of struct
4254f38fcaSMauro Carvalho Chehab:c:type:`v4l2_capability` returned by the
4354f38fcaSMauro Carvalho Chehab:ref:`VIDIOC_QUERYCAP` ioctl. At least one of the
44*17611d3fSHans Verkuilread/write or streaming I/O methods must be supported. VBI
4554f38fcaSMauro Carvalho Chehabdevices may or may not have a tuner or modulator.
4654f38fcaSMauro Carvalho Chehab
4754f38fcaSMauro Carvalho ChehabSupplemental Functions
4854f38fcaSMauro Carvalho Chehab======================
4954f38fcaSMauro Carvalho Chehab
5054f38fcaSMauro Carvalho ChehabVBI devices shall support :ref:`video input or output <video>`,
5154f38fcaSMauro Carvalho Chehab:ref:`tuner or modulator <tuner>`, and :ref:`controls <control>`
5254f38fcaSMauro Carvalho Chehabioctls as needed. The :ref:`video standard <standard>` ioctls provide
5354f38fcaSMauro Carvalho Chehabinformation vital to program a VBI device, therefore must be supported.
5454f38fcaSMauro Carvalho Chehab
5554f38fcaSMauro Carvalho ChehabRaw VBI Format Negotiation
5654f38fcaSMauro Carvalho Chehab==========================
5754f38fcaSMauro Carvalho Chehab
5854f38fcaSMauro Carvalho ChehabRaw VBI sampling abilities can vary, in particular the sampling
5954f38fcaSMauro Carvalho Chehabfrequency. To properly interpret the data V4L2 specifies an ioctl to
6054f38fcaSMauro Carvalho Chehabquery the sampling parameters. Moreover, to allow for some flexibility
6154f38fcaSMauro Carvalho Chehabapplications can also suggest different parameters.
6254f38fcaSMauro Carvalho Chehab
63407e84cdSMauro Carvalho ChehabAs usual these parameters are *not* reset at :c:func:`open()`
6454f38fcaSMauro Carvalho Chehabtime to permit Unix tool chains, programming a device and then reading
6554f38fcaSMauro Carvalho Chehabfrom it as if it was a plain file. Well written V4L2 applications should
6654f38fcaSMauro Carvalho Chehabalways ensure they really get what they want, requesting reasonable
6754f38fcaSMauro Carvalho Chehabparameters and then checking if the actual parameters are suitable.
6854f38fcaSMauro Carvalho Chehab
6954f38fcaSMauro Carvalho ChehabTo query the current raw VBI capture parameters applications set the
7054f38fcaSMauro Carvalho Chehab``type`` field of a struct :c:type:`v4l2_format` to
7154f38fcaSMauro Carvalho Chehab``V4L2_BUF_TYPE_VBI_CAPTURE`` or ``V4L2_BUF_TYPE_VBI_OUTPUT``, and call
7254f38fcaSMauro Carvalho Chehabthe :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this
7354f38fcaSMauro Carvalho Chehabstructure. Drivers fill the struct
7454f38fcaSMauro Carvalho Chehab:c:type:`v4l2_vbi_format` ``vbi`` member of the
7554f38fcaSMauro Carvalho Chehab``fmt`` union.
7654f38fcaSMauro Carvalho Chehab
7754f38fcaSMauro Carvalho ChehabTo request different parameters applications set the ``type`` field of a
7854f38fcaSMauro Carvalho Chehabstruct :c:type:`v4l2_format` as above and initialize all
7954f38fcaSMauro Carvalho Chehabfields of the struct :c:type:`v4l2_vbi_format`
8054f38fcaSMauro Carvalho Chehab``vbi`` member of the ``fmt`` union, or better just modify the results
8154f38fcaSMauro Carvalho Chehabof :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`
8254f38fcaSMauro Carvalho Chehabioctl with a pointer to this structure. Drivers return an ``EINVAL`` error
8354f38fcaSMauro Carvalho Chehabcode only when the given parameters are ambiguous, otherwise they modify
8454f38fcaSMauro Carvalho Chehabthe parameters according to the hardware capabilities and return the
8554f38fcaSMauro Carvalho Chehabactual parameters. When the driver allocates resources at this point, it
8654f38fcaSMauro Carvalho Chehabmay return an ``EBUSY`` error code to indicate the returned parameters are
8754f38fcaSMauro Carvalho Chehabvalid but the required resources are currently not available. That may
8854f38fcaSMauro Carvalho Chehabhappen for instance when the video and VBI areas to capture would
8954f38fcaSMauro Carvalho Chehaboverlap, or when the driver supports multiple opens and another process
9054f38fcaSMauro Carvalho Chehabalready requested VBI capturing or output. Anyway, applications must
9154f38fcaSMauro Carvalho Chehabexpect other resource allocation points which may return ``EBUSY``, at the
92407e84cdSMauro Carvalho Chehab:ref:`VIDIOC_STREAMON` ioctl and the first :c:func:`read()`
93407e84cdSMauro Carvalho Chehab, :c:func:`write()` and :c:func:`select()` calls.
9454f38fcaSMauro Carvalho Chehab
9554f38fcaSMauro Carvalho ChehabVBI devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and
9654f38fcaSMauro Carvalho Chehab:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, even if :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ignores all requests
9754f38fcaSMauro Carvalho Chehaband always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does.
9854f38fcaSMauro Carvalho Chehab:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` is optional.
9954f38fcaSMauro Carvalho Chehab
100fea13a69SMauro Carvalho Chehab.. tabularcolumns:: |p{1.6cm}|p{4.2cm}|p{11.5cm}|
10154f38fcaSMauro Carvalho Chehab
10254f38fcaSMauro Carvalho Chehab.. c:type:: v4l2_vbi_format
10354f38fcaSMauro Carvalho Chehab
10454f38fcaSMauro Carvalho Chehab.. cssclass:: longtable
10554f38fcaSMauro Carvalho Chehab
10654f38fcaSMauro Carvalho Chehab.. flat-table:: struct v4l2_vbi_format
10754f38fcaSMauro Carvalho Chehab    :header-rows:  0
10854f38fcaSMauro Carvalho Chehab    :stub-columns: 0
10954f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
11054f38fcaSMauro Carvalho Chehab
11154f38fcaSMauro Carvalho Chehab    * - __u32
11254f38fcaSMauro Carvalho Chehab      - ``sampling_rate``
11354f38fcaSMauro Carvalho Chehab      - Samples per second, i. e. unit 1 Hz.
11454f38fcaSMauro Carvalho Chehab    * - __u32
11554f38fcaSMauro Carvalho Chehab      - ``offset``
11654f38fcaSMauro Carvalho Chehab      - Horizontal offset of the VBI image, relative to the leading edge
11754f38fcaSMauro Carvalho Chehab	of the line synchronization pulse and counted in samples: The
11854f38fcaSMauro Carvalho Chehab	first sample in the VBI image will be located ``offset`` /
11954f38fcaSMauro Carvalho Chehab	``sampling_rate`` seconds following the leading edge. See also
12054f38fcaSMauro Carvalho Chehab	:ref:`vbi-hsync`.
12154f38fcaSMauro Carvalho Chehab    * - __u32
12254f38fcaSMauro Carvalho Chehab      - ``samples_per_line``
12354f38fcaSMauro Carvalho Chehab      -
12454f38fcaSMauro Carvalho Chehab    * - __u32
12554f38fcaSMauro Carvalho Chehab      - ``sample_format``
12654f38fcaSMauro Carvalho Chehab      - Defines the sample format as in :ref:`pixfmt`, a
12754f38fcaSMauro Carvalho Chehab	four-character-code. [#f2]_ Usually this is ``V4L2_PIX_FMT_GREY``,
12854f38fcaSMauro Carvalho Chehab	i. e. each sample consists of 8 bits with lower values oriented
12954f38fcaSMauro Carvalho Chehab	towards the black level. Do not assume any other correlation of
13054f38fcaSMauro Carvalho Chehab	values with the signal level. For example, the MSB does not
13154f38fcaSMauro Carvalho Chehab	necessarily indicate if the signal is 'high' or 'low' because 128
13254f38fcaSMauro Carvalho Chehab	may not be the mean value of the signal. Drivers shall not convert
13354f38fcaSMauro Carvalho Chehab	the sample format by software.
13454f38fcaSMauro Carvalho Chehab    * - __u32
13554f38fcaSMauro Carvalho Chehab      - ``start``\ [#f2]_
13654f38fcaSMauro Carvalho Chehab      - This is the scanning system line number associated with the first
13754f38fcaSMauro Carvalho Chehab	line of the VBI image, of the first and the second field
13854f38fcaSMauro Carvalho Chehab	respectively. See :ref:`vbi-525` and :ref:`vbi-625` for valid
13954f38fcaSMauro Carvalho Chehab	values. The ``V4L2_VBI_ITU_525_F1_START``,
14054f38fcaSMauro Carvalho Chehab	``V4L2_VBI_ITU_525_F2_START``, ``V4L2_VBI_ITU_625_F1_START`` and
14154f38fcaSMauro Carvalho Chehab	``V4L2_VBI_ITU_625_F2_START`` defines give the start line numbers
14254f38fcaSMauro Carvalho Chehab	for each field for each 525 or 625 line format as a convenience.
14354f38fcaSMauro Carvalho Chehab	Don't forget that ITU line numbering starts at 1, not 0. VBI input
14454f38fcaSMauro Carvalho Chehab	drivers can return start values 0 if the hardware cannot reliable
14554f38fcaSMauro Carvalho Chehab	identify scanning lines, VBI acquisition may not require this
14654f38fcaSMauro Carvalho Chehab	information.
14754f38fcaSMauro Carvalho Chehab    * - __u32
14854f38fcaSMauro Carvalho Chehab      - ``count``\ [#f2]_
14954f38fcaSMauro Carvalho Chehab      - The number of lines in the first and second field image,
15054f38fcaSMauro Carvalho Chehab	respectively.
15154f38fcaSMauro Carvalho Chehab    * - :cspan:`2`
15254f38fcaSMauro Carvalho Chehab
15354f38fcaSMauro Carvalho Chehab	Drivers should be as flexibility as possible. For example, it may
15454f38fcaSMauro Carvalho Chehab	be possible to extend or move the VBI capture window down to the
15554f38fcaSMauro Carvalho Chehab	picture area, implementing a 'full field mode' to capture data
15654f38fcaSMauro Carvalho Chehab	service transmissions embedded in the picture.
15754f38fcaSMauro Carvalho Chehab
15854f38fcaSMauro Carvalho Chehab	An application can set the first or second ``count`` value to zero
15954f38fcaSMauro Carvalho Chehab	if no data is required from the respective field; ``count``\ [1]
16054f38fcaSMauro Carvalho Chehab	if the scanning system is progressive, i. e. not interlaced. The
16154f38fcaSMauro Carvalho Chehab	corresponding start value shall be ignored by the application and
16254f38fcaSMauro Carvalho Chehab	driver. Anyway, drivers may not support single field capturing and
16354f38fcaSMauro Carvalho Chehab	return both count values non-zero.
16454f38fcaSMauro Carvalho Chehab
16554f38fcaSMauro Carvalho Chehab	Both ``count`` values set to zero, or line numbers are outside the
16654f38fcaSMauro Carvalho Chehab	bounds depicted\ [#f4]_, or a field image covering lines of two
16754f38fcaSMauro Carvalho Chehab	fields, are invalid and shall not be returned by the driver.
16854f38fcaSMauro Carvalho Chehab
16954f38fcaSMauro Carvalho Chehab	To initialize the ``start`` and ``count`` fields, applications
17054f38fcaSMauro Carvalho Chehab	must first determine the current video standard selection. The
17154f38fcaSMauro Carvalho Chehab	:ref:`v4l2_std_id <v4l2-std-id>` or the ``framelines`` field
17254f38fcaSMauro Carvalho Chehab	of struct :c:type:`v4l2_standard` can be evaluated
17354f38fcaSMauro Carvalho Chehab	for this purpose.
17454f38fcaSMauro Carvalho Chehab    * - __u32
17554f38fcaSMauro Carvalho Chehab      - ``flags``
17654f38fcaSMauro Carvalho Chehab      - See :ref:`vbifmt-flags` below. Currently only drivers set flags,
17754f38fcaSMauro Carvalho Chehab	applications must set this field to zero.
17854f38fcaSMauro Carvalho Chehab    * - __u32
17954f38fcaSMauro Carvalho Chehab      - ``reserved``\ [#f2]_
18054f38fcaSMauro Carvalho Chehab      - This array is reserved for future extensions. Drivers and
18154f38fcaSMauro Carvalho Chehab	applications must set it to zero.
18254f38fcaSMauro Carvalho Chehab
183fea13a69SMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{1.5cm}|p{11.4cm}|
18454f38fcaSMauro Carvalho Chehab
18554f38fcaSMauro Carvalho Chehab.. _vbifmt-flags:
18654f38fcaSMauro Carvalho Chehab
18754f38fcaSMauro Carvalho Chehab.. flat-table:: Raw VBI Format Flags
18854f38fcaSMauro Carvalho Chehab    :header-rows:  0
18954f38fcaSMauro Carvalho Chehab    :stub-columns: 0
19054f38fcaSMauro Carvalho Chehab    :widths:       3 1 4
19154f38fcaSMauro Carvalho Chehab
19254f38fcaSMauro Carvalho Chehab    * - ``V4L2_VBI_UNSYNC``
19354f38fcaSMauro Carvalho Chehab      - 0x0001
19454f38fcaSMauro Carvalho Chehab      - This flag indicates hardware which does not properly distinguish
19554f38fcaSMauro Carvalho Chehab	between fields. Normally the VBI image stores the first field
19654f38fcaSMauro Carvalho Chehab	(lower scanning line numbers) first in memory. This may be a top
19754f38fcaSMauro Carvalho Chehab	or bottom field depending on the video standard. When this flag is
19854f38fcaSMauro Carvalho Chehab	set the first or second field may be stored first, however the
19954f38fcaSMauro Carvalho Chehab	fields are still in correct temporal order with the older field
20054f38fcaSMauro Carvalho Chehab	first in memory. [#f3]_
20154f38fcaSMauro Carvalho Chehab    * - ``V4L2_VBI_INTERLACED``
20254f38fcaSMauro Carvalho Chehab      - 0x0002
20354f38fcaSMauro Carvalho Chehab      - By default the two field images will be passed sequentially; all
20454f38fcaSMauro Carvalho Chehab	lines of the first field followed by all lines of the second field
20554f38fcaSMauro Carvalho Chehab	(compare :ref:`field-order` ``V4L2_FIELD_SEQ_TB`` and
20654f38fcaSMauro Carvalho Chehab	``V4L2_FIELD_SEQ_BT``, whether the top or bottom field is first in
20754f38fcaSMauro Carvalho Chehab	memory depends on the video standard). When this flag is set, the
20854f38fcaSMauro Carvalho Chehab	two fields are interlaced (cf. ``V4L2_FIELD_INTERLACED``). The
20954f38fcaSMauro Carvalho Chehab	first line of the first field followed by the first line of the
21054f38fcaSMauro Carvalho Chehab	second field, then the two second lines, and so on. Such a layout
21154f38fcaSMauro Carvalho Chehab	may be necessary when the hardware has been programmed to capture
21254f38fcaSMauro Carvalho Chehab	or output interlaced video images and is unable to separate the
21354f38fcaSMauro Carvalho Chehab	fields for VBI capturing at the same time. For simplicity setting
21454f38fcaSMauro Carvalho Chehab	this flag implies that both ``count`` values are equal and
21554f38fcaSMauro Carvalho Chehab	non-zero.
21654f38fcaSMauro Carvalho Chehab
21754f38fcaSMauro Carvalho Chehab
21854f38fcaSMauro Carvalho Chehab.. _vbi-hsync:
21954f38fcaSMauro Carvalho Chehab
22054f38fcaSMauro Carvalho Chehab.. kernel-figure:: vbi_hsync.svg
22154f38fcaSMauro Carvalho Chehab    :alt:   vbi_hsync.svg
22254f38fcaSMauro Carvalho Chehab    :align: center
22354f38fcaSMauro Carvalho Chehab
22454f38fcaSMauro Carvalho Chehab    **Figure 4.1. Line synchronization**
22554f38fcaSMauro Carvalho Chehab
22654f38fcaSMauro Carvalho Chehab.. _vbi-525:
22754f38fcaSMauro Carvalho Chehab
22854f38fcaSMauro Carvalho Chehab.. kernel-figure:: vbi_525.svg
22954f38fcaSMauro Carvalho Chehab    :alt:   vbi_525.svg
23054f38fcaSMauro Carvalho Chehab    :align: center
23154f38fcaSMauro Carvalho Chehab
23254f38fcaSMauro Carvalho Chehab    **Figure 4.2. ITU-R 525 line numbering (M/NTSC and M/PAL)**
23354f38fcaSMauro Carvalho Chehab
23454f38fcaSMauro Carvalho Chehab.. _vbi-625:
23554f38fcaSMauro Carvalho Chehab
23654f38fcaSMauro Carvalho Chehab.. kernel-figure:: vbi_625.svg
23754f38fcaSMauro Carvalho Chehab    :alt:   vbi_625.svg
23854f38fcaSMauro Carvalho Chehab    :align: center
23954f38fcaSMauro Carvalho Chehab
24054f38fcaSMauro Carvalho Chehab    **Figure 4.3. ITU-R 625 line numbering**
24154f38fcaSMauro Carvalho Chehab
24254f38fcaSMauro Carvalho ChehabRemember the VBI image format depends on the selected video standard,
24354f38fcaSMauro Carvalho Chehabtherefore the application must choose a new standard or query the
24454f38fcaSMauro Carvalho Chehabcurrent standard first. Attempts to read or write data ahead of format
24554f38fcaSMauro Carvalho Chehabnegotiation, or after switching the video standard which may invalidate
24654f38fcaSMauro Carvalho Chehabthe negotiated VBI parameters, should be refused by the driver. A format
24754f38fcaSMauro Carvalho Chehabchange during active I/O is not permitted.
24854f38fcaSMauro Carvalho Chehab
24954f38fcaSMauro Carvalho ChehabReading and writing VBI images
25054f38fcaSMauro Carvalho Chehab==============================
25154f38fcaSMauro Carvalho Chehab
25254f38fcaSMauro Carvalho ChehabTo assure synchronization with the field number and easier
25354f38fcaSMauro Carvalho Chehabimplementation, the smallest unit of data passed at a time is one frame,
25454f38fcaSMauro Carvalho Chehabconsisting of two fields of VBI images immediately following in memory.
25554f38fcaSMauro Carvalho Chehab
25654f38fcaSMauro Carvalho ChehabThe total size of a frame computes as follows:
25754f38fcaSMauro Carvalho Chehab
25854f38fcaSMauro Carvalho Chehab.. code-block:: c
25954f38fcaSMauro Carvalho Chehab
26054f38fcaSMauro Carvalho Chehab    (count[0] + count[1]) * samples_per_line * sample size in bytes
26154f38fcaSMauro Carvalho Chehab
26254f38fcaSMauro Carvalho ChehabThe sample size is most likely always one byte, applications must check
26354f38fcaSMauro Carvalho Chehabthe ``sample_format`` field though, to function properly with other
26454f38fcaSMauro Carvalho Chehabdrivers.
26554f38fcaSMauro Carvalho Chehab
26654f38fcaSMauro Carvalho ChehabA VBI device may support :ref:`read/write <rw>` and/or streaming
26754f38fcaSMauro Carvalho Chehab(:ref:`memory mapping <mmap>` or :ref:`user pointer <userp>`) I/O.
26854f38fcaSMauro Carvalho ChehabThe latter bears the possibility of synchronizing video and VBI data by
26954f38fcaSMauro Carvalho Chehabusing buffer timestamps.
27054f38fcaSMauro Carvalho Chehab
27154f38fcaSMauro Carvalho ChehabRemember the :ref:`VIDIOC_STREAMON <VIDIOC_STREAMON>` ioctl and the
272407e84cdSMauro Carvalho Chehabfirst :c:func:`read()`, :c:func:`write()` and
273407e84cdSMauro Carvalho Chehab:c:func:`select()` call can be resource allocation
27454f38fcaSMauro Carvalho Chehabpoints returning an ``EBUSY`` error code if the required hardware resources
27554f38fcaSMauro Carvalho Chehabare temporarily unavailable, for example the device is already in use by
27654f38fcaSMauro Carvalho Chehabanother process.
27754f38fcaSMauro Carvalho Chehab
27854f38fcaSMauro Carvalho Chehab.. [#f1]
27954f38fcaSMauro Carvalho Chehab   ASK: Amplitude-Shift Keying. A high signal level represents a '1'
28054f38fcaSMauro Carvalho Chehab   bit, a low level a '0' bit.
28154f38fcaSMauro Carvalho Chehab
28254f38fcaSMauro Carvalho Chehab.. [#f2]
28354f38fcaSMauro Carvalho Chehab   A few devices may be unable to sample VBI data at all but can extend
28454f38fcaSMauro Carvalho Chehab   the video capture window to the VBI region.
28554f38fcaSMauro Carvalho Chehab
28654f38fcaSMauro Carvalho Chehab.. [#f3]
28754f38fcaSMauro Carvalho Chehab   Most VBI services transmit on both fields, but some have different
28854f38fcaSMauro Carvalho Chehab   semantics depending on the field number. These cannot be reliable
28954f38fcaSMauro Carvalho Chehab   decoded or encoded when ``V4L2_VBI_UNSYNC`` is set.
29054f38fcaSMauro Carvalho Chehab
29154f38fcaSMauro Carvalho Chehab.. [#f4]
29254f38fcaSMauro Carvalho Chehab   The valid values ar shown at :ref:`vbi-525` and :ref:`vbi-625`.
293