Commit 4855307b authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] doc-rst: use the right markup for footnotes

According with ReST spec, footnotes should be like:
[#name], and not [name]. So, change them.
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 53ae9251
...@@ -11,7 +11,7 @@ capture devices have inputs, output devices have outputs, zero or more ...@@ -11,7 +11,7 @@ capture devices have inputs, output devices have outputs, zero or more
each. Radio devices have no audio inputs or outputs. They have exactly each. Radio devices have no audio inputs or outputs. They have exactly
one tuner which in fact *is* an audio source, but this API associates one tuner which in fact *is* an audio source, but this API associates
tuners with video inputs or outputs only, and radio devices have none of tuners with video inputs or outputs only, and radio devices have none of
these. [1]_ A connector on a TV card to loop back the received audio these. [#f1]_ A connector on a TV card to loop back the received audio
signal to a sound card is not considered an audio output. signal to a sound card is not considered an audio output.
Audio and video inputs and outputs are associated. Selecting a video Audio and video inputs and outputs are associated. Selecting a video
...@@ -88,7 +88,7 @@ Example: Switching to the first audio input ...@@ -88,7 +88,7 @@ Example: Switching to the first audio input
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
.. [1] .. [#f1]
Actually struct :ref:`v4l2_audio <v4l2-audio>` ought to have a Actually struct :ref:`v4l2_audio <v4l2-audio>` ought to have a
``tuner`` field like struct :ref:`v4l2_input <v4l2-input>`, not ``tuner`` field like struct :ref:`v4l2_input <v4l2-input>`, not
only making the API more consistent but also permitting radio devices only making the API more consistent but also permitting radio devices
......
...@@ -17,7 +17,7 @@ device. ...@@ -17,7 +17,7 @@ device.
All controls are accessed using an ID value. V4L2 defines several IDs All controls are accessed using an ID value. V4L2 defines several IDs
for specific purposes. Drivers can also implement their own custom for specific purposes. Drivers can also implement their own custom
controls using ``V4L2_CID_PRIVATE_BASE`` [1]_ and higher values. The controls using ``V4L2_CID_PRIVATE_BASE`` [#f1]_ and higher values. The
pre-defined control IDs have the prefix ``V4L2_CID_``, and are listed in pre-defined control IDs have the prefix ``V4L2_CID_``, and are listed in
:ref:`control-id`. The ID is used when querying the attributes of a :ref:`control-id`. The ID is used when querying the attributes of a
control, and when getting or setting the current value. control, and when getting or setting the current value.
...@@ -522,7 +522,7 @@ Example: Changing controls ...@@ -522,7 +522,7 @@ Example: Changing controls
/* Errors ignored */ /* Errors ignored */
ioctl(fd, VIDIOC_S_CTRL, &control); ioctl(fd, VIDIOC_S_CTRL, &control);
.. [1] .. [#f1]
The use of ``V4L2_CID_PRIVATE_BASE`` is problematic because different The use of ``V4L2_CID_PRIVATE_BASE`` is problematic because different
drivers may use the same ``V4L2_CID_PRIVATE_BASE`` ID for different drivers may use the same ``V4L2_CID_PRIVATE_BASE`` ID for different
controls. This makes it hard to programatically set such controls controls. This makes it hard to programatically set such controls
......
...@@ -33,7 +33,7 @@ Applications should use different file descriptors for capturing and ...@@ -33,7 +33,7 @@ Applications should use different file descriptors for capturing and
overlay. This must be supported by all drivers capable of simultaneous overlay. This must be supported by all drivers capable of simultaneous
capturing and overlay. Optionally these drivers may also permit capturing and overlay. Optionally these drivers may also permit
capturing and overlay with a single file descriptor for compatibility capturing and overlay with a single file descriptor for compatibility
with V4L and earlier versions of V4L2. [1]_ with V4L and earlier versions of V4L2. [#f1]_
Querying Capabilities Querying Capabilities
...@@ -216,7 +216,7 @@ bits like: ...@@ -216,7 +216,7 @@ bits like:
((__u8 *) bitmap)[w.width * y + x / 8] & (1 << (x & 7)) ((__u8 *) bitmap)[w.width * y + x / 8] & (1 << (x & 7))
where ``0`` ≤ x < ``w.width`` and ``0`` ≤ y <``w.height``. [2]_ where ``0`` ≤ x < ``w.width`` and ``0`` ≤ y <``w.height``. [#f2]_
When a clipping bit mask is not supported the driver ignores this field, When a clipping bit mask is not supported the driver ignores this field,
its contents after calling :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` are its contents after calling :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` are
...@@ -227,7 +227,7 @@ Applications need not create a clip list or bit mask. When they pass ...@@ -227,7 +227,7 @@ Applications need not create a clip list or bit mask. When they pass
both, or despite negotiating chroma-keying, the results are undefined. both, or despite negotiating chroma-keying, the results are undefined.
Regardless of the chosen method, the clipping abilities of the hardware Regardless of the chosen method, the clipping abilities of the hardware
may be limited in quantity or quality. The results when these limits are may be limited in quantity or quality. The results when these limits are
exceeded are undefined. [3]_ exceeded are undefined. [#f3]_
``__u8 global_alpha`` ``__u8 global_alpha``
The global alpha value used to blend the framebuffer with video The global alpha value used to blend the framebuffer with video
...@@ -244,7 +244,7 @@ exceeded are undefined. [3]_ ...@@ -244,7 +244,7 @@ exceeded are undefined. [3]_
.. _v4l2-clip: .. _v4l2-clip:
struct v4l2_clip [4]_ struct v4l2_clip [#f4]_
--------------------- ---------------------
``struct v4l2_rect c`` ``struct v4l2_rect c``
...@@ -284,7 +284,7 @@ Enabling Overlay ...@@ -284,7 +284,7 @@ Enabling Overlay
To start or stop the frame buffer overlay applications call the To start or stop the frame buffer overlay applications call the
:ref:`VIDIOC_OVERLAY` ioctl. :ref:`VIDIOC_OVERLAY` ioctl.
.. [1] .. [#f1]
A common application of two file descriptors is the XFree86 A common application of two file descriptors is the XFree86
:ref:`Xv/V4L <xvideo>` interface driver and a V4L2 application. :ref:`Xv/V4L <xvideo>` interface driver and a V4L2 application.
While the X server controls video overlay, the application can take While the X server controls video overlay, the application can take
...@@ -301,17 +301,17 @@ To start or stop the frame buffer overlay applications call the ...@@ -301,17 +301,17 @@ To start or stop the frame buffer overlay applications call the
Hence as a complexity trade-off drivers *must* support two file Hence as a complexity trade-off drivers *must* support two file
descriptors and *may* support single fd operation. descriptors and *may* support single fd operation.
.. [2] .. [#f2]
Should we require ``w.width`` to be a multiple of eight? Should we require ``w.width`` to be a multiple of eight?
.. [3] .. [#f3]
When the image is written into frame buffer memory it will be When the image is written into frame buffer memory it will be
undesirable if the driver clips out less pixels than expected, undesirable if the driver clips out less pixels than expected,
because the application and graphics system are not aware these because the application and graphics system are not aware these
regions need to be refreshed. The driver should clip out more pixels regions need to be refreshed. The driver should clip out more pixels
or not write the image at all. or not write the image at all.
.. [4] .. [#f4]
The X Window system defines "regions" which are vectors of ``struct The X Window system defines "regions" which are vectors of ``struct
BoxRec { short x1, y1, x2, y2; }`` with ``width = x2 - x1`` and BoxRec { short x1, y1, x2, y2; }`` with ``width = x2 - x1`` and
``height = y2 - y1``, so one cannot pass X11 clip lists directly. ``height = y2 - y1``, so one cannot pass X11 clip lists directly.
...@@ -11,7 +11,7 @@ sequence of lines of an analog video signal. During VBI no picture ...@@ -11,7 +11,7 @@ sequence of lines of an analog video signal. During VBI no picture
information is transmitted, allowing some time while the electron beam information is transmitted, allowing some time while the electron beam
of a cathode ray tube TV returns to the top of the screen. Using an of a cathode ray tube TV returns to the top of the screen. Using an
oscilloscope you will find here the vertical synchronization pulses and oscilloscope you will find here the vertical synchronization pulses and
short data packages ASK modulated [1]_ onto the video signal. These are short data packages ASK modulated [#f1]_ onto the video signal. These are
transmissions of services such as Teletext or Closed Caption. transmissions of services such as Teletext or Closed Caption.
Subject of this interface type is raw VBI data, as sampled off a video Subject of this interface type is raw VBI data, as sampled off a video
...@@ -143,7 +143,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does ...@@ -143,7 +143,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- ``sample_format`` - ``sample_format``
- Defines the sample format as in :ref:`pixfmt`, a - Defines the sample format as in :ref:`pixfmt`, a
four-character-code. [2]_ Usually this is ``V4L2_PIX_FMT_GREY``, four-character-code. [#f2]_ Usually this is ``V4L2_PIX_FMT_GREY``,
i. e. each sample consists of 8 bits with lower values oriented i. e. each sample consists of 8 bits with lower values oriented
towards the black level. Do not assume any other correlation of towards the black level. Do not assume any other correlation of
values with the signal level. For example, the MSB does not values with the signal level. For example, the MSB does not
...@@ -155,7 +155,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does ...@@ -155,7 +155,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- __u32 - __u32
- ``start``\ [2]_ - ``start``\ [#f2]_
- This is the scanning system line number associated with the first - This is the scanning system line number associated with the first
line of the VBI image, of the first and the second field line of the VBI image, of the first and the second field
...@@ -173,7 +173,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does ...@@ -173,7 +173,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- __u32 - __u32
- ``count``\ [2]_ - ``count``\ [#f2]_
- The number of lines in the first and second field image, - The number of lines in the first and second field image,
respectively. respectively.
...@@ -218,7 +218,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does ...@@ -218,7 +218,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
- __u32 - __u32
- ``reserved``\ [2]_ - ``reserved``\ [#f2]_
- This array is reserved for future extensions. Drivers and - This array is reserved for future extensions. Drivers and
applications must set it to zero. applications must set it to zero.
...@@ -245,7 +245,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does ...@@ -245,7 +245,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
or bottom field depending on the video standard. When this flag is or bottom field depending on the video standard. When this flag is
set the first or second field may be stored first, however the set the first or second field may be stored first, however the
fields are still in correct temporal order with the older field fields are still in correct temporal order with the older field
first in memory. [3]_ first in memory. [#f3]_
- .. row 2 - .. row 2
...@@ -336,15 +336,15 @@ points returning an ``EBUSY`` error code if the required hardware resources ...@@ -336,15 +336,15 @@ points returning an ``EBUSY`` error code if the required hardware resources
are temporarily unavailable, for example the device is already in use by are temporarily unavailable, for example the device is already in use by
another process. another process.
.. [1] .. [#f1]
ASK: Amplitude-Shift Keying. A high signal level represents a '1' ASK: Amplitude-Shift Keying. A high signal level represents a '1'
bit, a low level a '0' bit. bit, a low level a '0' bit.
.. [2] .. [#f2]
A few devices may be unable to sample VBI data at all but can extend A few devices may be unable to sample VBI data at all but can extend
the video capture window to the VBI region. the video capture window to the VBI region.
.. [3] .. [#f3]
Most VBI services transmit on both fields, but some have different Most VBI services transmit on both fields, but some have different
semantics depending on the field number. These cannot be reliable semantics depending on the field number. These cannot be reliable
decoded or encoded when ``V4L2_VBI_UNSYNC`` is set. decoded or encoded when ``V4L2_VBI_UNSYNC`` is set.
...@@ -126,7 +126,7 @@ struct v4l2_sliced_vbi_format ...@@ -126,7 +126,7 @@ struct v4l2_sliced_vbi_format
specified in this field. For example, if ``service_set`` is specified in this field. For example, if ``service_set`` is
initialized with ``V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625``, initialized with ``V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625``,
a driver for the cx25840 video decoder sets lines 7-22 of both a driver for the cx25840 video decoder sets lines 7-22 of both
fields [1]_ to ``V4L2_SLICED_TELETEXT_B`` and line 23 of the first fields [#f1]_ to ``V4L2_SLICED_TELETEXT_B`` and line 23 of the first
field to ``V4L2_SLICED_WSS_625``. If ``service_set`` is set to field to ``V4L2_SLICED_WSS_625``. If ``service_set`` is set to
zero, then the values of ``service_lines`` will be used instead. zero, then the values of ``service_lines`` will be used instead.
...@@ -817,6 +817,6 @@ Line Identifiers for struct v4l2_mpeg_vbi_itv0_line id field ...@@ -817,6 +817,6 @@ Line Identifiers for struct v4l2_mpeg_vbi_itv0_line id field
.. [1] .. [#f1]
According to :ref:`ETS 300 706 <ets300706>` lines 6-22 of the first According to :ref:`ETS 300 706 <ets300706>` lines 6-22 of the first
field and lines 5-22 of the second field may carry Teletext data. field and lines 5-22 of the second field may carry Teletext data.
...@@ -52,7 +52,7 @@ using driver module options. The major device number remains 81. ...@@ -52,7 +52,7 @@ using driver module options. The major device number remains 81.
- Video capture and overlay - Video capture and overlay
- ``/dev/video`` and ``/dev/bttv0``\ [1]_, ``/dev/video0`` to - ``/dev/video`` and ``/dev/bttv0``\ [#f1]_, ``/dev/video0`` to
``/dev/video63`` ``/dev/video63``
- 0-63 - 0-63
...@@ -61,7 +61,7 @@ using driver module options. The major device number remains 81. ...@@ -61,7 +61,7 @@ using driver module options. The major device number remains 81.
- Radio receiver - Radio receiver
- ``/dev/radio``\ [2]_, ``/dev/radio0`` to ``/dev/radio63`` - ``/dev/radio``\ [#f2]_, ``/dev/radio0`` to ``/dev/radio63``
- 64-127 - 64-127
...@@ -457,7 +457,7 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`: ...@@ -457,7 +457,7 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`:
- ``VIDEO_PALETTE_HI240`` - ``VIDEO_PALETTE_HI240``
- :ref:`V4L2_PIX_FMT_HI240 <pixfmt-reserved>` [3]_ - :ref:`V4L2_PIX_FMT_HI240 <pixfmt-reserved>` [#f3]_
- .. row 4 - .. row 4
...@@ -481,7 +481,7 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`: ...@@ -481,7 +481,7 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`:
- ``VIDEO_PALETTE_RGB32`` - ``VIDEO_PALETTE_RGB32``
- :ref:`V4L2_PIX_FMT_BGR32 <pixfmt-rgb>` [4]_ - :ref:`V4L2_PIX_FMT_BGR32 <pixfmt-rgb>` [#f4]_
- .. row 8 - .. row 8
...@@ -491,7 +491,7 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`: ...@@ -491,7 +491,7 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`:
- .. row 9 - .. row 9
- ``VIDEO_PALETTE_YUYV``\ [5]_ - ``VIDEO_PALETTE_YUYV``\ [#f5]_
- :ref:`V4L2_PIX_FMT_YUYV <V4L2-PIX-FMT-YUYV>` - :ref:`V4L2_PIX_FMT_YUYV <V4L2-PIX-FMT-YUYV>`
...@@ -511,13 +511,13 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`: ...@@ -511,13 +511,13 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`:
- ``VIDEO_PALETTE_YUV411`` - ``VIDEO_PALETTE_YUV411``
- :ref:`V4L2_PIX_FMT_Y41P <V4L2-PIX-FMT-Y41P>` [6]_ - :ref:`V4L2_PIX_FMT_Y41P <V4L2-PIX-FMT-Y41P>` [#f6]_
- .. row 13 - .. row 13
- ``VIDEO_PALETTE_RAW`` - ``VIDEO_PALETTE_RAW``
- None [7]_ - None [#f7]_
- .. row 14 - .. row 14
...@@ -529,7 +529,7 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`: ...@@ -529,7 +529,7 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`:
- ``VIDEO_PALETTE_YUV411P`` - ``VIDEO_PALETTE_YUV411P``
- :ref:`V4L2_PIX_FMT_YUV411P <V4L2-PIX-FMT-YUV411P>` [8]_ - :ref:`V4L2_PIX_FMT_YUV411P <V4L2-PIX-FMT-YUV411P>` [#f8]_
- .. row 16 - .. row 16
...@@ -876,7 +876,7 @@ with the following parameters: ...@@ -876,7 +876,7 @@ with the following parameters:
- count[] - count[]
- 16, 16 [9]_ - 16, 16 [#f9]_
- .. row 8 - .. row 8
...@@ -915,40 +915,40 @@ No replacement exists for ``VIDIOCKEY``, and the V4L functions for ...@@ -915,40 +915,40 @@ No replacement exists for ``VIDIOCKEY``, and the V4L functions for
microcode programming. A new interface for MPEG compression and playback microcode programming. A new interface for MPEG compression and playback
devices is documented in :ref:`extended-controls`. devices is documented in :ref:`extended-controls`.
.. [1] .. [#f1]
According to Documentation/devices.txt these should be symbolic links According to Documentation/devices.txt these should be symbolic links
to ``/dev/video0``. Note the original bttv interface is not to ``/dev/video0``. Note the original bttv interface is not
compatible with V4L or V4L2. compatible with V4L or V4L2.
.. [2] .. [#f2]
According to ``Documentation/devices.txt`` a symbolic link to According to ``Documentation/devices.txt`` a symbolic link to
``/dev/radio0``. ``/dev/radio0``.
.. [3] .. [#f3]
This is a custom format used by the BTTV driver, not one of the V4L2 This is a custom format used by the BTTV driver, not one of the V4L2
standard formats. standard formats.
.. [4] .. [#f4]
Presumably all V4L RGB formats are little-endian, although some Presumably all V4L RGB formats are little-endian, although some
drivers might interpret them according to machine endianness. V4L2 drivers might interpret them according to machine endianness. V4L2
defines little-endian, big-endian and red/blue swapped variants. For defines little-endian, big-endian and red/blue swapped variants. For
details see :ref:`pixfmt-rgb`. details see :ref:`pixfmt-rgb`.
.. [5] .. [#f5]
``VIDEO_PALETTE_YUV422`` and ``VIDEO_PALETTE_YUYV`` are the same ``VIDEO_PALETTE_YUV422`` and ``VIDEO_PALETTE_YUYV`` are the same
formats. Some V4L drivers respond to one, some to the other. formats. Some V4L drivers respond to one, some to the other.
.. [6] .. [#f6]
Not to be confused with ``V4L2_PIX_FMT_YUV411P``, which is a planar Not to be confused with ``V4L2_PIX_FMT_YUV411P``, which is a planar
format. format.
.. [7] .. [#f7]
V4L explains this as: "RAW capture (BT848)" V4L explains this as: "RAW capture (BT848)"
.. [8] .. [#f8]
Not to be confused with ``V4L2_PIX_FMT_Y41P``, which is a packed Not to be confused with ``V4L2_PIX_FMT_Y41P``, which is a packed
format. format.
.. [9] .. [#f9]
Old driver versions used different values, eventually the custom Old driver versions used different values, eventually the custom
``BTTV_VBISIZE`` ioctl was added to query the correct values. ``BTTV_VBISIZE`` ioctl was added to query the correct values.
...@@ -3183,7 +3183,7 @@ Camera Control IDs ...@@ -3183,7 +3183,7 @@ Camera Control IDs
of the illumination varies significantly throughout the scene, i.e. of the illumination varies significantly throughout the scene, i.e.
there are simultaneously very dark and very bright areas. It is most there are simultaneously very dark and very bright areas. It is most
commonly realized in cameras by combining two subsequent frames with commonly realized in cameras by combining two subsequent frames with
different exposure times. [1]_ different exposure times. [#f1]_
.. _v4l2-image-stabilization: .. _v4l2-image-stabilization:
...@@ -4526,6 +4526,6 @@ RF_TUNER Control IDs ...@@ -4526,6 +4526,6 @@ RF_TUNER Control IDs
Is synthesizer PLL locked? RF tuner is receiving given frequency Is synthesizer PLL locked? RF tuner is receiving given frequency
when that control is set. This is a read-only control. when that control is set. This is a read-only control.
.. [1] .. [#f1]
This control may be changed to a menu control in the future, if more This control may be changed to a menu control in the future, if more
options are required. options are required.
...@@ -73,7 +73,7 @@ Image Format Enumeration ...@@ -73,7 +73,7 @@ Image Format Enumeration
Apart of the generic format negotiation functions a special ioctl to Apart of the generic format negotiation functions a special ioctl to
enumerate all image formats supported by video capture, overlay or enumerate all image formats supported by video capture, overlay or
output devices is available. [1]_ output devices is available. [#f1]_
The :ref:`VIDIOC_ENUM_FMT` ioctl must be supported The :ref:`VIDIOC_ENUM_FMT` ioctl must be supported
by all drivers exchanging image data with applications. by all drivers exchanging image data with applications.
...@@ -85,7 +85,7 @@ by all drivers exchanging image data with applications. ...@@ -85,7 +85,7 @@ by all drivers exchanging image data with applications.
If necessary driver writers should publish an example conversion If necessary driver writers should publish an example conversion
routine or library for integration into applications. routine or library for integration into applications.
.. [1] .. [#f1]
Enumerating formats an application has no a-priori knowledge of Enumerating formats an application has no a-priori knowledge of
(otherwise it could explicitly ask for them and need not enumerate) (otherwise it could explicitly ask for them and need not enumerate)
seems useless, but there are applications serving as proxy between seems useless, but there are applications serving as proxy between
......
...@@ -50,7 +50,7 @@ set appropriately. When the application did not call ...@@ -50,7 +50,7 @@ set appropriately. When the application did not call
:ref:`VIDIOC_STREAMON` yet the :ref:`select() <func-select>` :ref:`VIDIOC_STREAMON` yet the :ref:`select() <func-select>`
function succeeds, setting the bit of the file descriptor in ``readfds`` function succeeds, setting the bit of the file descriptor in ``readfds``
or ``writefds``, but subsequent :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` or ``writefds``, but subsequent :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`
calls will fail. [1]_ calls will fail. [#f1]_
When use of the :ref:`read() <func-read>` function has been negotiated and the When use of the :ref:`read() <func-read>` function has been negotiated and the
driver does not capture yet, the :ref:`select() <func-select>` function starts driver does not capture yet, the :ref:`select() <func-select>` function starts
...@@ -100,7 +100,7 @@ EINVAL ...@@ -100,7 +100,7 @@ EINVAL
The ``nfds`` argument is less than zero or greater than The ``nfds`` argument is less than zero or greater than
``FD_SETSIZE``. ``FD_SETSIZE``.
.. [1] .. [#f1]
The Linux kernel implements :ref:`select() <func-select>` like the The Linux kernel implements :ref:`select() <func-select>` like the
:ref:`poll() <func-poll>` function, but :ref:`select() <func-select>` cannot :ref:`poll() <func-poll>` function, but :ref:`select() <func-select>` cannot
return a ``POLLERR``. return a ``POLLERR``.
...@@ -1391,7 +1391,7 @@ the X Window system, implemented for example by the XFree86 project. Its ...@@ -1391,7 +1391,7 @@ the X Window system, implemented for example by the XFree86 project. Its
scope is similar to V4L2, an API to video capture and output devices for scope is similar to V4L2, an API to video capture and output devices for
X clients. Xv allows applications to display live video in a window, X clients. Xv allows applications to display live video in a window,
send window contents to a TV output, and capture or output still images send window contents to a TV output, and capture or output still images
in XPixmaps [1]_. With their implementation XFree86 makes the extension in XPixmaps [#f1]_. With their implementation XFree86 makes the extension
available across many operating systems and architectures. available across many operating systems and architectures.
Because the driver is embedded into the X server Xv has a number of Because the driver is embedded into the X server Xv has a number of
...@@ -1476,5 +1476,5 @@ should not be implemented in new drivers. ...@@ -1476,5 +1476,5 @@ should not be implemented in new drivers.
``VIDIOC_SUBDEV_G_SELECTION`` and ``VIDIOC_SUBDEV_S_SELECTION``, ``VIDIOC_SUBDEV_G_SELECTION`` and ``VIDIOC_SUBDEV_S_SELECTION``,
:ref:`VIDIOC_SUBDEV_G_SELECTION`. :ref:`VIDIOC_SUBDEV_G_SELECTION`.
.. [1] .. [#f1]
This is not implemented in XFree86. This is not implemented in XFree86.
...@@ -26,7 +26,7 @@ memory. ...@@ -26,7 +26,7 @@ memory.
A driver can support many sets of buffers. Each set is identified by a A driver can support many sets of buffers. Each set is identified by a
unique buffer type value. The sets are independent and each set can hold unique buffer type value. The sets are independent and each set can hold
a different type of data. To access different sets at the same time a different type of data. To access different sets at the same time
different file descriptors must be used. [1]_ different file descriptors must be used. [#f1]_
To allocate device buffers applications call the To allocate device buffers applications call the
:ref:`VIDIOC_REQBUFS` ioctl with the desired number :ref:`VIDIOC_REQBUFS` ioctl with the desired number
...@@ -217,7 +217,7 @@ The driver may require a minimum number of buffers enqueued at all times ...@@ -217,7 +217,7 @@ The driver may require a minimum number of buffers enqueued at all times
to function, apart of this no limit exists on the number of buffers to function, apart of this no limit exists on the number of buffers
applications can enqueue in advance, or dequeue and process. They can applications can enqueue in advance, or dequeue and process. They can
also enqueue in a different order than buffers have been dequeued, and also enqueue in a different order than buffers have been dequeued, and
the driver can *fill* enqueued *empty* buffers in any order. [2]_ The the driver can *fill* enqueued *empty* buffers in any order. [#f2]_ The
index number of a buffer (struct :ref:`v4l2_buffer <v4l2-buffer>` index number of a buffer (struct :ref:`v4l2_buffer <v4l2-buffer>`
``index``) plays no role here, it only identifies the buffer. ``index``) plays no role here, it only identifies the buffer.
...@@ -260,11 +260,11 @@ Drivers implementing memory mapping I/O must support the ...@@ -260,11 +260,11 @@ Drivers implementing memory mapping I/O must support the
<VIDIOC_QBUF>`, :ref:`VIDIOC_STREAMON <VIDIOC_STREAMON>` <VIDIOC_QBUF>`, :ref:`VIDIOC_STREAMON <VIDIOC_STREAMON>`
and :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` ioctls, the :ref:`mmap() and :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` ioctls, the :ref:`mmap()
<func-mmap>`, :ref:`munmap() <func-munmap>`, :ref:`select() <func-mmap>`, :ref:`munmap() <func-munmap>`, :ref:`select()
<func-select>` and :ref:`poll() <func-poll>` function. [3]_ <func-select>` and :ref:`poll() <func-poll>` function. [#f3]_
[capture example] [capture example]
.. [1] .. [#f1]
One could use one file descriptor and set the buffer type field One could use one file descriptor and set the buffer type field
accordingly when calling :ref:`VIDIOC_QBUF` etc., accordingly when calling :ref:`VIDIOC_QBUF` etc.,
but it makes the :ref:`select() <func-select>` function ambiguous. We also but it makes the :ref:`select() <func-select>` function ambiguous. We also
...@@ -272,14 +272,14 @@ and :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` ioctls, the :ref:`mmap() ...@@ -272,14 +272,14 @@ and :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` ioctls, the :ref:`mmap()
Video overlay for example is also a logical stream, although the CPU Video overlay for example is also a logical stream, although the CPU
is not needed for continuous operation. is not needed for continuous operation.
.. [2] .. [#f2]
Random enqueue order permits applications processing images out of Random enqueue order permits applications processing images out of
order (such as video codecs) to return buffers earlier, reducing the order (such as video codecs) to return buffers earlier, reducing the
probability of data loss. Random fill order allows drivers to reuse probability of data loss. Random fill order allows drivers to reuse
buffers on a LIFO-basis, taking advantage of caches holding buffers on a LIFO-basis, taking advantage of caches holding
scatter-gather lists and the like. scatter-gather lists and the like.
.. [3] .. [#f3]
At the driver level :ref:`select() <func-select>` and :ref:`poll() <func-poll>` are At the driver level :ref:`select() <func-select>` and :ref:`poll() <func-poll>` are
the same, and :ref:`select() <func-select>` is too important to be optional. the same, and :ref:`select() <func-select>` is too important to be optional.
The rest should be evident. The rest should be evident.
...@@ -99,12 +99,12 @@ linux-media mailing list: ...@@ -99,12 +99,12 @@ linux-media mailing list:
Multiple Opens Multiple Opens
============== ==============
V4L2 devices can be opened more than once. [1]_ When this is supported V4L2 devices can be opened more than once. [#f1]_ When this is supported
by the driver, users can for example start a "panel" application to by the driver, users can for example start a "panel" application to
change controls like brightness or audio volume, while another change controls like brightness or audio volume, while another
application captures video and audio. In other words, panel applications application captures video and audio. In other words, panel applications
are comparable to an ALSA audio mixer application. Just opening a V4L2 are comparable to an ALSA audio mixer application. Just opening a V4L2
device should not change the state of the device. [2]_ device should not change the state of the device. [#f2]_
Once an application has allocated the memory buffers needed for Once an application has allocated the memory buffers needed for
streaming data (by calling the :ref:`VIDIOC_REQBUFS` streaming data (by calling the :ref:`VIDIOC_REQBUFS`
...@@ -117,7 +117,7 @@ that would affect the buffer sizes (e.g. by calling the ...@@ -117,7 +117,7 @@ that would affect the buffer sizes (e.g. by calling the
no longer allowed to allocate buffers or start or stop streaming. The no longer allowed to allocate buffers or start or stop streaming. The
EBUSY error code will be returned instead. EBUSY error code will be returned instead.
Merely opening a V4L2 device does not grant exclusive access. [3]_ Merely opening a V4L2 device does not grant exclusive access. [#f3]_
Initiating data exchange however assigns the right to read or write the Initiating data exchange however assigns the right to read or write the
requested type of data, and to change related properties, to this file requested type of data, and to change related properties, to this file
descriptor. Applications can request additional access privileges using descriptor. Applications can request additional access privileges using
...@@ -142,17 +142,17 @@ respectively. Devices are programmed using the ...@@ -142,17 +142,17 @@ respectively. Devices are programmed using the
:ref:`ioctl() <func-ioctl>` function as explained in the following :ref:`ioctl() <func-ioctl>` function as explained in the following
sections. sections.
.. [1] .. [#f1]
There are still some old and obscure drivers that have not been There are still some old and obscure drivers that have not been
updated to allow for multiple opens. This implies that for such updated to allow for multiple opens. This implies that for such
drivers :ref:`open() <func-open>` can return an ``EBUSY`` error code drivers :ref:`open() <func-open>` can return an ``EBUSY`` error code
when the device is already in use. when the device is already in use.
.. [2] .. [#f2]
Unfortunately, opening a radio device often switches the state of the Unfortunately, opening a radio device often switches the state of the
device to radio mode in many drivers. This behavior should be fixed device to radio mode in many drivers. This behavior should be fixed
eventually as it violates the V4L2 specification. eventually as it violates the V4L2 specification.
.. [3] .. [#f3]
Drivers could recognize the ``O_EXCL`` open flag. Presently this is Drivers could recognize the ``O_EXCL`` open flag. Presently this is
not required, so applications cannot know if it really works. not required, so applications cannot know if it really works.
...@@ -31,17 +31,17 @@ vidctrl tool is fictitious): ...@@ -31,17 +31,17 @@ vidctrl tool is fictitious):
To read from the device applications use the :ref:`read() <func-read>` To read from the device applications use the :ref:`read() <func-read>`
function, to write the :ref:`write() <func-write>` function. Drivers function, to write the :ref:`write() <func-write>` function. Drivers
must implement one I/O method if they exchange data with applications, must implement one I/O method if they exchange data with applications,
but it need not be this. [1]_ When reading or writing is supported, the but it need not be this. [#f1]_ When reading or writing is supported, the
driver must also support the :ref:`select() <func-select>` and driver must also support the :ref:`select() <func-select>` and
:ref:`poll() <func-poll>` function. [2]_ :ref:`poll() <func-poll>` function. [#f2]_
.. [1] .. [#f1]
It would be desirable if applications could depend on drivers It would be desirable if applications could depend on drivers
supporting all I/O interfaces, but as much as the complex memory supporting all I/O interfaces, but as much as the complex memory
mapping I/O can be inadequate for some devices we have no reason to mapping I/O can be inadequate for some devices we have no reason to
require this interface, which is most useful for simple applications require this interface, which is most useful for simple applications
capturing still images. capturing still images.
.. [2] .. [#f2]
At the driver level :ref:`select() <func-select>` and :ref:`poll() <func-poll>` are At the driver level :ref:`select() <func-select>` and :ref:`poll() <func-poll>` are
the same, and :ref:`select() <func-select>` is too important to be optional. the same, and :ref:`select() <func-select>` is too important to be optional.
...@@ -33,7 +33,7 @@ signals. The first enumerated standard is a set of B and G/PAL, switched ...@@ -33,7 +33,7 @@ signals. The first enumerated standard is a set of B and G/PAL, switched
automatically depending on the selected radio frequency in UHF or VHF automatically depending on the selected radio frequency in UHF or VHF
band. Enumeration gives a "PAL-B/G" or "PAL-I" choice. Similar a band. Enumeration gives a "PAL-B/G" or "PAL-I" choice. Similar a
Composite input may collapse standards, enumerating "PAL-B/G/H/I", Composite input may collapse standards, enumerating "PAL-B/G/H/I",
"NTSC-M" and "SECAM-D/K". [1]_ "NTSC-M" and "SECAM-D/K". [#f1]_
To query and select the standard used by the current video input or To query and select the standard used by the current video input or
output applications call the :ref:`VIDIOC_G_STD <VIDIOC_G_STD>` and output applications call the :ref:`VIDIOC_G_STD <VIDIOC_G_STD>` and
...@@ -177,7 +177,7 @@ Example: Selecting a new video standard ...@@ -177,7 +177,7 @@ Example: Selecting a new video standard
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
.. [1] .. [#f1]
Some users are already confused by technical terms PAL, NTSC and Some users are already confused by technical terms PAL, NTSC and
SECAM. There is no point asking them to distinguish between B, G, D, SECAM. There is no point asking them to distinguish between B, G, D,
or K when the software or hardware can do that automatically. or K when the software or hardware can do that automatically.
...@@ -54,7 +54,7 @@ driver swaps memory pages within physical memory to create a continuous ...@@ -54,7 +54,7 @@ driver swaps memory pages within physical memory to create a continuous
area of memory. This happens transparently to the application in the area of memory. This happens transparently to the application in the
virtual memory subsystem of the kernel. When buffer pages have been virtual memory subsystem of the kernel. When buffer pages have been
swapped out to disk they are brought back and finally locked in physical swapped out to disk they are brought back and finally locked in physical
memory for DMA. [1]_ memory for DMA. [#f1]_
Filled or displayed buffers are dequeued with the Filled or displayed buffers are dequeued with the
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. The driver can unlock the :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. The driver can unlock the
...@@ -99,9 +99,9 @@ Drivers implementing user pointer I/O must support the ...@@ -99,9 +99,9 @@ Drivers implementing user pointer I/O must support the
:ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>`, :ref:`VIDIOC_QBUF <VIDIOC_QBUF>`, :ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>`, :ref:`VIDIOC_QBUF <VIDIOC_QBUF>`,
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, :ref:`VIDIOC_STREAMON <VIDIOC_STREAMON>` :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, :ref:`VIDIOC_STREAMON <VIDIOC_STREAMON>`
and :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` ioctls, the and :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` ioctls, the
:ref:`select() <func-select>` and :ref:`poll() <func-poll>` function. [2]_ :ref:`select() <func-select>` and :ref:`poll() <func-poll>` function. [#f2]_
.. [1] .. [#f1]
We expect that frequently used buffers are typically not swapped out. We expect that frequently used buffers are typically not swapped out.
Anyway, the process of swapping, locking or generating scatter-gather Anyway, the process of swapping, locking or generating scatter-gather
lists may be time consuming. The delay can be masked by the depth of lists may be time consuming. The delay can be masked by the depth of
...@@ -113,7 +113,7 @@ and :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` ioctls, the ...@@ -113,7 +113,7 @@ and :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>` ioctls, the
disk. Output buffers must be saved on the incoming and outgoing queue disk. Output buffers must be saved on the incoming and outgoing queue
because an application may share them with other processes. because an application may share them with other processes.
.. [2] .. [#f2]
At the driver level :ref:`select() <func-select>` and :ref:`poll() <func-poll>` are At the driver level :ref:`select() <func-select>` and :ref:`poll() <func-poll>` are
the same, and :ref:`select() <func-select>` is too important to be optional. the same, and :ref:`select() <func-select>` is too important to be optional.
The rest should be evident. The rest should be evident.
...@@ -41,7 +41,7 @@ structure or return an ``EINVAL`` error code when the index is out of ...@@ -41,7 +41,7 @@ structure or return an ``EINVAL`` error code when the index is out of
bounds. To enumerate all standards applications shall begin at index bounds. To enumerate all standards applications shall begin at index
zero, incrementing by one until the driver returns ``EINVAL``. Drivers may zero, incrementing by one until the driver returns ``EINVAL``. Drivers may
enumerate a different set of standards after switching the video input enumerate a different set of standards after switching the video input
or output. [1]_ or output. [#f1]_
.. _v4l2-standard: .. _v4l2-standard:
...@@ -278,11 +278,11 @@ support digital TV. See also the Linux DVB API at ...@@ -278,11 +278,11 @@ support digital TV. See also the Linux DVB API at
- Characteristics - Characteristics
- M/NTSC [2]_ - M/NTSC [#f2]_
- M/PAL - M/PAL
- N/PAL [3]_ - N/PAL [#f3]_
- B, B1, G/PAL - B, B1, G/PAL
...@@ -369,7 +369,7 @@ support digital TV. See also the Linux DVB API at ...@@ -369,7 +369,7 @@ support digital TV. See also the Linux DVB API at
- + 4.5 - + 4.5
- + 5.5 ± 0.001 [4]_ [5]_ [6]_ [7]_ - + 5.5 ± 0.001 [#f4]_ [#f5]_ [#f6]_ [#f7]_
- + 6.5 ± 0.001 - + 6.5 ± 0.001
...@@ -383,7 +383,7 @@ support digital TV. See also the Linux DVB API at ...@@ -383,7 +383,7 @@ support digital TV. See also the Linux DVB API at
- + 6.5 - + 6.5
- + 6.5 [8]_ - + 6.5 [#f8]_
Return Value Return Value
...@@ -400,42 +400,42 @@ EINVAL ...@@ -400,42 +400,42 @@ EINVAL
ENODATA ENODATA
Standard video timings are not supported for this input or output. Standard video timings are not supported for this input or output.
.. [1] .. [#f1]
The supported standards may overlap and we need an unambiguous set to The supported standards may overlap and we need an unambiguous set to
find the current standard returned by :ref:`VIDIOC_G_STD <VIDIOC_G_STD>`. find the current standard returned by :ref:`VIDIOC_G_STD <VIDIOC_G_STD>`.
.. [2] .. [#f2]
Japan uses a standard similar to M/NTSC (V4L2_STD_NTSC_M_JP). Japan uses a standard similar to M/NTSC (V4L2_STD_NTSC_M_JP).
.. [3] .. [#f3]
The values in brackets apply to the combination N/PAL a.k.a. The values in brackets apply to the combination N/PAL a.k.a.
N\ :sub:`C` used in Argentina (V4L2_STD_PAL_Nc). N\ :sub:`C` used in Argentina (V4L2_STD_PAL_Nc).
.. [4] .. [#f4]
In the Federal Republic of Germany, Austria, Italy, the Netherlands, In the Federal Republic of Germany, Austria, Italy, the Netherlands,
Slovakia and Switzerland a system of two sound carriers is used, the Slovakia and Switzerland a system of two sound carriers is used, the
frequency of the second carrier being 242.1875 kHz above the frequency of the second carrier being 242.1875 kHz above the
frequency of the first sound carrier. For stereophonic sound frequency of the first sound carrier. For stereophonic sound
transmissions a similar system is used in Australia. transmissions a similar system is used in Australia.
.. [5] .. [#f5]
New Zealand uses a sound carrier displaced 5.4996 ± 0.0005 MHz from New Zealand uses a sound carrier displaced 5.4996 ± 0.0005 MHz from
the vision carrier. the vision carrier.
.. [6] .. [#f6]
In Denmark, Finland, New Zealand, Sweden and Spain a system of two In Denmark, Finland, New Zealand, Sweden and Spain a system of two
sound carriers is used. In Iceland, Norway and Poland the same system sound carriers is used. In Iceland, Norway and Poland the same system
is being introduced. The second carrier is 5.85 MHz above the vision is being introduced. The second carrier is 5.85 MHz above the vision
carrier and is DQPSK modulated with 728 kbit/s sound and data carrier and is DQPSK modulated with 728 kbit/s sound and data
multiplex. (NICAM system) multiplex. (NICAM system)
.. [7] .. [#f7]
In the United Kingdom, a system of two sound carriers is used. The In the United Kingdom, a system of two sound carriers is used. The
second sound carrier is 6.552 MHz above the vision carrier and is second sound carrier is 6.552 MHz above the vision carrier and is
DQPSK modulated with a 728 kbit/s sound and data multiplex able to DQPSK modulated with a 728 kbit/s sound and data multiplex able to
carry two sound channels. (NICAM system) carry two sound channels. (NICAM system)
.. [8] .. [#f8]
In France, a digital carrier 5.85 MHz away from the vision carrier In France, a digital carrier 5.85 MHz away from the vision carrier
may be used in addition to the main sound carrier. It is modulated in may be used in addition to the main sound carrier. It is modulated in
differentially encoded QPSK with a 728 kbit/s sound and data differentially encoded QPSK with a 728 kbit/s sound and data
......
...@@ -112,7 +112,7 @@ destructive video overlay. ...@@ -112,7 +112,7 @@ destructive video overlay.
- -
- Physical base address of the framebuffer, that is the address of - Physical base address of the framebuffer, that is the address of
the pixel in the top left corner of the framebuffer. [1]_ the pixel in the top left corner of the framebuffer. [#f1]_
- .. row 4 - .. row 4
...@@ -492,7 +492,7 @@ EPERM ...@@ -492,7 +492,7 @@ EPERM
EINVAL EINVAL
The :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` parameters are unsuitable. The :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` parameters are unsuitable.
.. [1] .. [#f1]
A physical base address may not suit all platforms. GK notes in A physical base address may not suit all platforms. GK notes in
theory we should pass something like PCI device + memory region + theory we should pass something like PCI device + memory region +
offset instead. If you encounter problems please discuss on the offset instead. If you encounter problems please discuss on the
......
...@@ -622,7 +622,7 @@ To change the radio frequency the ...@@ -622,7 +622,7 @@ To change the radio frequency the
- ``LANG2 = SAP`` - ``LANG2 = SAP``
- ``LANG1_LANG2``\ [1]_ - ``LANG1_LANG2``\ [#f1]_
- .. row 3 - .. row 3
...@@ -686,7 +686,7 @@ To change the radio frequency the ...@@ -686,7 +686,7 @@ To change the radio frequency the
- Language 1 - Language 1
- Lang1/Lang2 (deprecated [2]_) or Lang1/Lang1 - Lang1/Lang2 (deprecated [#f2]_) or Lang1/Lang1
- Language 1 - Language 1
...@@ -706,11 +706,11 @@ EINVAL ...@@ -706,11 +706,11 @@ EINVAL
The struct :ref:`v4l2_tuner <v4l2-tuner>` ``index`` is out of The struct :ref:`v4l2_tuner <v4l2-tuner>` ``index`` is out of
bounds. bounds.
.. [1] .. [#f1]
This mode has been added in Linux 2.6.17 and may not be supported by This mode has been added in Linux 2.6.17 and may not be supported by
older drivers. older drivers.
.. [2] .. [#f2]
Playback of both languages in ``MODE_STEREO`` is deprecated. In the Playback of both languages in ``MODE_STEREO`` is deprecated. In the
future drivers should produce only the primary language in this mode. future drivers should produce only the primary language in this mode.
Applications should request ``MODE_LANG1_LANG2`` to record both Applications should request ``MODE_LANG1_LANG2`` to record both
......
...@@ -301,7 +301,7 @@ specification the ioctl returns an ``EINVAL`` error code. ...@@ -301,7 +301,7 @@ specification the ioctl returns an ``EINVAL`` error code.
secondary function of video output devices and overlays an image secondary function of video output devices and overlays an image
onto an outgoing video signal. When the driver sets this flag, it onto an outgoing video signal. When the driver sets this flag, it
must clear the ``V4L2_CAP_VIDEO_OVERLAY`` flag and vice must clear the ``V4L2_CAP_VIDEO_OVERLAY`` flag and vice
versa. [1]_ versa. [#f1]_
- .. row 14 - .. row 14
...@@ -428,7 +428,7 @@ On success 0 is returned, on error -1 and the ``errno`` variable is set ...@@ -428,7 +428,7 @@ On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
.. [1] .. [#f1]
The struct :ref:`v4l2_framebuffer <v4l2-framebuffer>` lacks an The struct :ref:`v4l2_framebuffer <v4l2-framebuffer>` lacks an
enum :ref:`v4l2_buf_type <v4l2-buf-type>` field, therefore the enum :ref:`v4l2_buf_type <v4l2-buf-type>` field, therefore the
type of overlay is implied by the driver capabilities. type of overlay is implied by the driver capabilities.
...@@ -53,7 +53,7 @@ returns ``EINVAL``. ...@@ -53,7 +53,7 @@ returns ``EINVAL``.
In both cases, when the driver sets the ``V4L2_CTRL_FLAG_DISABLED`` flag In both cases, when the driver sets the ``V4L2_CTRL_FLAG_DISABLED`` flag
in the ``flags`` field this control is permanently disabled and should in the ``flags`` field this control is permanently disabled and should
be ignored by the application. [1]_ be ignored by the application. [#f1]_
When the application ORs ``id`` with ``V4L2_CTRL_FLAG_NEXT_CTRL`` the When the application ORs ``id`` with ``V4L2_CTRL_FLAG_NEXT_CTRL`` the
driver returns the next supported non-compound control, or ``EINVAL`` if driver returns the next supported non-compound control, or ``EINVAL`` if
...@@ -776,7 +776,7 @@ EINVAL ...@@ -776,7 +776,7 @@ EINVAL
EACCES EACCES
An attempt was made to read a write-only control. An attempt was made to read a write-only control.
.. [1] .. [#f1]
``V4L2_CTRL_FLAG_DISABLED`` was intended for two purposes: Drivers ``V4L2_CTRL_FLAG_DISABLED`` was intended for two purposes: Drivers
can skip predefined controls not supported by the hardware (although can skip predefined controls not supported by the hardware (although
returning ``EINVAL`` would do as well), or disable predefined and private returning ``EINVAL`` would do as well), or disable predefined and private
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment