Commit e8be7e97 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

[media] docs-rst: convert uAPI structs to C domain

instead of declaring the uAPI structs using usual refs, e. g.:
	.. _foo-struct:

Use the C domain way:
	.. c:type:: foo_struct

This way, the kAPI documentation can use cross-references to
point to the uAPI symbols.

That solves about ~100 undefined warnings like:
	WARNING: c:type reference target not found: foo_struct
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 2257e180
...@@ -40,7 +40,7 @@ A good example of these ``replace``/``merge`` callbacks is in v4l2-event.c: ...@@ -40,7 +40,7 @@ A good example of these ``replace``/``merge`` callbacks is in v4l2-event.c:
In order to queue events to video device, drivers should call: In order to queue events to video device, drivers should call:
:c:func:`v4l2_event_queue <v4l2_event_queue>` :c:func:`v4l2_event_queue <v4l2_event_queue>`
(:c:type:`vdev <video_device>`, :ref:`ev <v4l2-event>`) (:c:type:`vdev <video_device>`, :c:type:`ev <v4l2_event>`)
The driver's only responsibility is to fill in the type and the data fields. The driver's only responsibility is to fill in the type and the data fields.
The other fields will be filled in by V4L2. The other fields will be filled in by V4L2.
...@@ -51,7 +51,7 @@ Event subscription ...@@ -51,7 +51,7 @@ Event subscription
Subscribing to an event is via: Subscribing to an event is via:
:c:func:`v4l2_event_subscribe <v4l2_event_subscribe>` :c:func:`v4l2_event_subscribe <v4l2_event_subscribe>`
(:c:type:`fh <v4l2_fh>`, :ref:`sub <v4l2-event-subscription>` , (:c:type:`fh <v4l2_fh>`, :c:type:`sub <v4l2_event_subscription>` ,
elems, :c:type:`ops <v4l2_subscribed_event_ops>`) elems, :c:type:`ops <v4l2_subscribed_event_ops>`)
...@@ -86,7 +86,7 @@ Unsubscribing an event ...@@ -86,7 +86,7 @@ Unsubscribing an event
Unsubscribing to an event is via: Unsubscribing to an event is via:
:c:func:`v4l2_event_unsubscribe <v4l2_event_unsubscribe>` :c:func:`v4l2_event_unsubscribe <v4l2_event_unsubscribe>`
(:c:type:`fh <v4l2_fh>`, :ref:`sub <v4l2-event-subscription>`) (:c:type:`fh <v4l2_fh>`, :c:type:`sub <v4l2_event_subscription>`)
This function is used to implement :c:type:`video_device`-> This function is used to implement :c:type:`video_device`->
:c:type:`ioctl_ops <v4l2_ioctl_ops>`-> ``vidioc_unsubscribe_event``. :c:type:`ioctl_ops <v4l2_ioctl_ops>`-> ``vidioc_unsubscribe_event``.
......
...@@ -36,12 +36,12 @@ Description ...@@ -36,12 +36,12 @@ Description
All cec devices must support :ref:`ioctl CEC_ADAP_G_CAPS <CEC_ADAP_G_CAPS>`. To query All cec devices must support :ref:`ioctl CEC_ADAP_G_CAPS <CEC_ADAP_G_CAPS>`. To query
device information, applications call the ioctl with a pointer to a device information, applications call the ioctl with a pointer to a
struct :ref:`cec_caps <cec-caps>`. The driver fills the structure and struct :c:type:`cec_caps`. The driver fills the structure and
returns the information to the application. The ioctl never fails. returns the information to the application. The ioctl never fails.
.. tabularcolumns:: |p{1.2cm}|p{2.5cm}|p{13.8cm}| .. tabularcolumns:: |p{1.2cm}|p{2.5cm}|p{13.8cm}|
.. _cec-caps: .. c:type:: cec_caps
.. flat-table:: struct cec_caps .. flat-table:: struct cec_caps
:header-rows: 0 :header-rows: 0
......
...@@ -68,7 +68,7 @@ logical address types are already defined will return with error ``EBUSY``. ...@@ -68,7 +68,7 @@ logical address types are already defined will return with error ``EBUSY``.
.. tabularcolumns:: |p{1.0cm}|p{7.5cm}|p{8.0cm}| .. tabularcolumns:: |p{1.0cm}|p{7.5cm}|p{8.0cm}|
.. _cec-log-addrs: .. c:type:: cec_log_addrs
.. cssclass:: longtable .. cssclass:: longtable
......
...@@ -105,7 +105,7 @@ it is guaranteed that the state did change in between the two events. ...@@ -105,7 +105,7 @@ it is guaranteed that the state did change in between the two events.
.. tabularcolumns:: |p{1.0cm}|p{4.2cm}|p{2.5cm}|p{8.8cm}| .. tabularcolumns:: |p{1.0cm}|p{4.2cm}|p{2.5cm}|p{8.8cm}|
.. _cec-event: .. c:type:: cec_event
.. flat-table:: struct cec_event .. flat-table:: struct cec_event
:header-rows: 0 :header-rows: 0
......
...@@ -76,7 +76,7 @@ result. ...@@ -76,7 +76,7 @@ result.
.. tabularcolumns:: |p{1.0cm}|p{3.5cm}|p{13.0cm}| .. tabularcolumns:: |p{1.0cm}|p{3.5cm}|p{13.0cm}|
.. _cec-msg: .. c:type:: cec_msg
.. cssclass:: longtable .. cssclass:: longtable
......
...@@ -71,7 +71,7 @@ the following values. ...@@ -71,7 +71,7 @@ the following values.
} audio_channel_select_t; } audio_channel_select_t;
.. _audio-status: .. c:type:: audio_status
struct audio_status struct audio_status
=================== ===================
...@@ -93,7 +93,7 @@ about various states of the playback operation. ...@@ -93,7 +93,7 @@ about various states of the playback operation.
} audio_status_t; } audio_status_t;
.. _audio-mixer: .. c:type:: audio_mixer
struct audio_mixer struct audio_mixer
================== ==================
...@@ -132,7 +132,7 @@ following bits set according to the hardwares capabilities. ...@@ -132,7 +132,7 @@ following bits set according to the hardwares capabilities.
#define AUDIO_CAP_AC3 256 #define AUDIO_CAP_AC3 256
.. _audio-karaoke: .. c:type:: audio_karaoke
struct audio_karaoke struct audio_karaoke
==================== ====================
......
...@@ -7,7 +7,7 @@ CA Data Types ...@@ -7,7 +7,7 @@ CA Data Types
************* *************
.. _ca-slot-info: .. c:type:: ca_slot_info
ca_slot_info_t ca_slot_info_t
============== ==============
...@@ -31,7 +31,7 @@ ca_slot_info_t ...@@ -31,7 +31,7 @@ ca_slot_info_t
} ca_slot_info_t; } ca_slot_info_t;
.. _ca-descr-info: .. c:type:: ca_descr_info
ca_descr_info_t ca_descr_info_t
=============== ===============
...@@ -48,7 +48,7 @@ ca_descr_info_t ...@@ -48,7 +48,7 @@ ca_descr_info_t
} ca_descr_info_t; } ca_descr_info_t;
.. _ca-caps: .. c:type:: ca_caps
ca_caps_t ca_caps_t
========= =========
...@@ -64,7 +64,7 @@ ca_caps_t ...@@ -64,7 +64,7 @@ ca_caps_t
} ca_cap_t; } ca_cap_t;
.. _ca-msg: .. c:type:: ca_msg
ca_msg_t ca_msg_t
======== ========
...@@ -81,7 +81,7 @@ ca_msg_t ...@@ -81,7 +81,7 @@ ca_msg_t
} ca_msg_t; } ca_msg_t;
.. _ca-descr: .. c:type:: ca_descr
ca_descr_t ca_descr_t
========== ==========
...@@ -96,7 +96,7 @@ ca_descr_t ...@@ -96,7 +96,7 @@ ca_descr_t
} ca_descr_t; } ca_descr_t;
.. _ca-pid: .. c:type:: ca_pid
ca-pid ca-pid
====== ======
......
...@@ -120,7 +120,7 @@ dmx_pes_type_t ...@@ -120,7 +120,7 @@ dmx_pes_type_t
} dmx_pes_type_t; } dmx_pes_type_t;
.. _dmx-filter: .. c:type:: dmx_filter
struct dmx_filter struct dmx_filter
================= =================
...@@ -136,7 +136,7 @@ struct dmx_filter ...@@ -136,7 +136,7 @@ struct dmx_filter
} dmx_filter_t; } dmx_filter_t;
.. _dmx-sct-filter-params: .. c:type:: dmx_sct_filter_params
struct dmx_sct_filter_params struct dmx_sct_filter_params
============================ ============================
...@@ -157,7 +157,7 @@ struct dmx_sct_filter_params ...@@ -157,7 +157,7 @@ struct dmx_sct_filter_params
}; };
.. _dmx-pes-filter-params: .. c:type:: dmx_pes_filter_params
struct dmx_pes_filter_params struct dmx_pes_filter_params
============================ ============================
...@@ -194,7 +194,7 @@ struct dmx_event ...@@ -194,7 +194,7 @@ struct dmx_event
}; };
.. _dmx-stc: .. c:type:: dmx_stc
struct dmx_stc struct dmx_stc
============== ==============
...@@ -209,7 +209,7 @@ struct dmx_stc ...@@ -209,7 +209,7 @@ struct dmx_stc
}; };
.. _dmx-caps: .. c:type:: dmx_caps
struct dmx_caps struct dmx_caps
=============== ===============
......
.. -*- coding: utf-8; mode: rst -*- .. -*- coding: utf-8; mode: rst -*-
.. _dtv-fe-stats: .. c:type:: dtv_fe_stats
******************* *******************
struct dtv_fe_stats struct dtv_fe_stats
......
.. -*- coding: utf-8; mode: rst -*- .. -*- coding: utf-8; mode: rst -*-
.. _dtv-properties: .. c:type:: dtv_properties
********************* *********************
struct dtv_properties struct dtv_properties
......
.. -*- coding: utf-8; mode: rst -*- .. -*- coding: utf-8; mode: rst -*-
.. _dtv-property: .. c:type:: dtv_property
******************* *******************
struct dtv_property struct dtv_property
......
.. -*- coding: utf-8; mode: rst -*- .. -*- coding: utf-8; mode: rst -*-
.. _dtv-stats: .. c:type:: dtv_stats
**************** ****************
struct dtv_stats struct dtv_stats
......
.. -*- coding: utf-8; mode: rst -*- .. -*- coding: utf-8; mode: rst -*-
.. _dvb-frontend-event: .. c:type:: dvb_frontend_event
*************** ***************
frontend events frontend events
......
.. -*- coding: utf-8; mode: rst -*- .. -*- coding: utf-8; mode: rst -*-
.. _dvb-frontend-parameters: .. c:type:: dvb_frontend_parameters
******************* *******************
frontend parameters frontend parameters
...@@ -49,7 +49,7 @@ frontends the ``frequency`` specifies the absolute frequency and is ...@@ -49,7 +49,7 @@ frontends the ``frequency`` specifies the absolute frequency and is
given in Hz. given in Hz.
.. _dvb-qpsk-parameters: .. c:type:: dvb_qpsk_parameters
QPSK parameters QPSK parameters
=============== ===============
...@@ -66,7 +66,7 @@ structure: ...@@ -66,7 +66,7 @@ structure:
}; };
.. _dvb-qam-parameters: .. c:type:: dvb_qam_parameters
QAM parameters QAM parameters
============== ==============
...@@ -83,7 +83,7 @@ for cable QAM frontend you use the ``dvb_qam_parameters`` structure: ...@@ -83,7 +83,7 @@ for cable QAM frontend you use the ``dvb_qam_parameters`` structure:
}; };
.. _dvb-vsb-parameters: .. c:type:: dvb_vsb_parameters
VSB parameters VSB parameters
============== ==============
...@@ -98,7 +98,7 @@ ATSC frontends are supported by the ``dvb_vsb_parameters`` structure: ...@@ -98,7 +98,7 @@ ATSC frontends are supported by the ``dvb_vsb_parameters`` structure:
}; };
.. _dvb-ofdm-parameters: .. c:type:: dvb_ofdm_parameters
OFDM parameters OFDM parameters
=============== ===============
......
...@@ -23,7 +23,7 @@ union/struct based approach, in favor of a properties set approach. ...@@ -23,7 +23,7 @@ union/struct based approach, in favor of a properties set approach.
.. note:: .. note::
On Linux DVB API version 3, setting a frontend were done via On Linux DVB API version 3, setting a frontend were done via
:ref:`struct dvb_frontend_parameters <dvb-frontend-parameters>`. :c:type:`struct dvb_frontend_parameters <dvb_frontend_parameters>`.
This got replaced on version 5 (also called "S2API", as this API were This got replaced on version 5 (also called "S2API", as this API were
added originally_enabled to provide support for DVB-S2), because the added originally_enabled to provide support for DVB-S2), because the
old API has a very limited support to new standards and new hardware. old API has a very limited support to new standards and new hardware.
......
...@@ -27,7 +27,7 @@ Arguments ...@@ -27,7 +27,7 @@ Arguments
``argp`` ``argp``
pointer to struct pointer to struct
:ref:`dvb_diseqc_slave_reply <dvb-diseqc-slave-reply>` :c:type:`dvb_diseqc_slave_reply`
Description Description
...@@ -35,7 +35,7 @@ Description ...@@ -35,7 +35,7 @@ Description
Receives reply from a DiSEqC 2.0 command. Receives reply from a DiSEqC 2.0 command.
.. _dvb-diseqc-slave-reply: .. c:type:: dvb_diseqc_slave_reply
struct dvb_diseqc_slave_reply struct dvb_diseqc_slave_reply
----------------------------- -----------------------------
......
...@@ -27,7 +27,7 @@ Arguments ...@@ -27,7 +27,7 @@ Arguments
``argp`` ``argp``
pointer to struct pointer to struct
:ref:`dvb_diseqc_master_cmd <dvb-diseqc-master-cmd>` :c:type:`dvb_diseqc_master_cmd`
Description Description
...@@ -35,7 +35,7 @@ Description ...@@ -35,7 +35,7 @@ Description
Sends a DiSEqC command to the antenna subsystem. Sends a DiSEqC command to the antenna subsystem.
.. _dvb-diseqc-master-cmd: .. c:type:: dvb_diseqc_master_cmd
struct dvb_diseqc_master_cmd struct dvb_diseqc_master_cmd
============================ ============================
......
...@@ -27,7 +27,7 @@ Arguments ...@@ -27,7 +27,7 @@ Arguments
``argp`` ``argp``
pointer to struct struct pointer to struct struct
:ref:`dvb_frontend_info <dvb-frontend-info>` :c:type:`dvb_frontend_info`
Description Description
...@@ -40,7 +40,7 @@ takes a pointer to dvb_frontend_info which is filled by the driver. ...@@ -40,7 +40,7 @@ takes a pointer to dvb_frontend_info which is filled by the driver.
When the driver is not compatible with this specification the ioctl When the driver is not compatible with this specification the ioctl
returns an error. returns an error.
.. _dvb-frontend-info: .. c:type:: dvb_frontend_info
struct dvb_frontend_info struct dvb_frontend_info
======================== ========================
......
...@@ -29,7 +29,7 @@ Arguments ...@@ -29,7 +29,7 @@ Arguments
File descriptor returned by :ref:`open() <frontend_f_open>`. File descriptor returned by :ref:`open() <frontend_f_open>`.
``argp`` ``argp``
pointer to struct :ref:`dtv_properties <dtv-properties>` pointer to struct :c:type:`dtv_properties`
Description Description
......
...@@ -78,7 +78,7 @@ at the above, as they're supported via the new ...@@ -78,7 +78,7 @@ at the above, as they're supported via the new
ioctl's, using the :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` ioctl's, using the :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>`
parameter. parameter.
In the old days, struct :ref:`dvb_frontend_info <dvb-frontend-info>` In the old days, struct :c:type:`dvb_frontend_info`
used to contain ``fe_type_t`` field to indicate the delivery systems, used to contain ``fe_type_t`` field to indicate the delivery systems,
filled with either FE_QPSK, FE_QAM, FE_OFDM or FE_ATSC. While this filled with either FE_QPSK, FE_QAM, FE_OFDM or FE_ATSC. While this
is still filled to keep backward compatibility, the usage of this field is still filled to keep backward compatibility, the usage of this field
...@@ -87,7 +87,7 @@ devices support multiple delivery systems. Please use ...@@ -87,7 +87,7 @@ devices support multiple delivery systems. Please use
:ref:`DTV_ENUM_DELSYS <DTV-ENUM-DELSYS>` instead. :ref:`DTV_ENUM_DELSYS <DTV-ENUM-DELSYS>` instead.
On devices that support multiple delivery systems, struct On devices that support multiple delivery systems, struct
:ref:`dvb_frontend_info <dvb-frontend-info>`::``fe_type_t`` is :c:type:`dvb_frontend_info`::``fe_type_t`` is
filled with the currently standard, as selected by the last call to filled with the currently standard, as selected by the last call to
:ref:`FE_SET_PROPERTY <FE_GET_PROPERTY>` using the :ref:`FE_SET_PROPERTY <FE_GET_PROPERTY>` using the
:ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` property. :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` property.
...@@ -20,7 +20,7 @@ standards, up to 3 groups of statistics can be provided, and ...@@ -20,7 +20,7 @@ standards, up to 3 groups of statistics can be provided, and
plus one metric per each carrier group (called "layer" on ISDB). plus one metric per each carrier group (called "layer" on ISDB).
So, in order to be consistent with other delivery systems, the first So, in order to be consistent with other delivery systems, the first
value at :ref:`dtv_property.stat.dtv_stats <dtv-stats>` array refers value at :c:type:`dtv_property.stat.dtv_stats <dtv_stats>` array refers
to the global metric. The other elements of the array represent each to the global metric. The other elements of the array represent each
layer, starting from layer A(index 1), layer B (index 2) and so on. layer, starting from layer A(index 1), layer B (index 2) and so on.
......
...@@ -26,7 +26,7 @@ Arguments ...@@ -26,7 +26,7 @@ Arguments
File descriptor returned by :ref:`open() <frontend_f_open>`. File descriptor returned by :ref:`open() <frontend_f_open>`.
``net_if`` ``net_if``
pointer to struct :ref:`dvb_net_if <dvb-net-if>` pointer to struct :c:type:`dvb_net_if`
Description Description
...@@ -38,7 +38,7 @@ ULE) and the interface number for the new interface to be created. When ...@@ -38,7 +38,7 @@ ULE) and the interface number for the new interface to be created. When
the system call successfully returns, a new virtual network interface is the system call successfully returns, a new virtual network interface is
created. created.
The struct :ref:`dvb_net_if <dvb-net-if>`::ifnum field will be The struct :c:type:`dvb_net_if`::ifnum field will be
filled with the number of the created interface. filled with the number of the created interface.
...@@ -47,7 +47,7 @@ filled with the number of the created interface. ...@@ -47,7 +47,7 @@ filled with the number of the created interface.
struct dvb_net_if description struct dvb_net_if description
============================= =============================
.. _dvb-net-if: .. c:type:: dvb_net_if
.. flat-table:: struct dvb_net_if .. flat-table:: struct dvb_net_if
:header-rows: 1 :header-rows: 1
......
...@@ -26,15 +26,15 @@ Arguments ...@@ -26,15 +26,15 @@ Arguments
File descriptor returned by :ref:`open() <frontend_f_open>`. File descriptor returned by :ref:`open() <frontend_f_open>`.
``net_if`` ``net_if``
pointer to struct :ref:`dvb_net_if <dvb-net-if>` pointer to struct :c:type:`dvb_net_if`
Description Description
=========== ===========
The NET_GET_IF ioctl uses the interface number given by the struct The NET_GET_IF ioctl uses the interface number given by the struct
:ref:`dvb_net_if <dvb-net-if>`::ifnum field and fills the content of :c:type:`dvb_net_if`::ifnum field and fills the content of
struct :ref:`dvb_net_if <dvb-net-if>` with the packet ID and struct :c:type:`dvb_net_if` with the packet ID and
encapsulation type used on such interface. If the interface was not encapsulation type used on such interface. If the interface was not
created yet with :ref:`NET_ADD_IF <net>`, it will return -1 and fill created yet with :ref:`NET_ADD_IF <net>`, it will return -1 and fill
the ``errno`` with ``EINVAL`` error code. the ``errno`` with ``EINVAL`` error code.
......
...@@ -95,7 +95,7 @@ representing the state of video playback. ...@@ -95,7 +95,7 @@ representing the state of video playback.
} video_play_state_t; } video_play_state_t;
.. _video-command: .. c:type:: video_command
struct video_command struct video_command
==================== ====================
...@@ -146,7 +146,7 @@ video_size_t ...@@ -146,7 +146,7 @@ video_size_t
} video_size_t; } video_size_t;
.. _video-event: .. c:type:: video_event
struct video_event struct video_event
================== ==================
...@@ -172,7 +172,7 @@ VIDEO_GET_EVENT call. ...@@ -172,7 +172,7 @@ VIDEO_GET_EVENT call.
}; };
.. _video-status: .. c:type:: video_status
struct video_status struct video_status
=================== ===================
...@@ -203,7 +203,7 @@ case the source video format is not the same as the format of the output ...@@ -203,7 +203,7 @@ case the source video format is not the same as the format of the output
device. device.
.. _video-still-picture: .. c:type:: video_still_picture
struct video_still_picture struct video_still_picture
========================== ==========================
...@@ -271,7 +271,7 @@ output. The following system types can be set: ...@@ -271,7 +271,7 @@ output. The following system types can be set:
} video_system_t; } video_system_t;
.. _video-highlight: .. c:type:: video_highlight
struct video_highlight struct video_highlight
====================== ======================
...@@ -302,7 +302,7 @@ information. The call expects the following format for that information: ...@@ -302,7 +302,7 @@ information. The call expects the following format for that information:
} video_highlight_t; } video_highlight_t;
.. _video-spu: .. c:type:: video_spu
struct video_spu struct video_spu
================ ================
...@@ -320,7 +320,7 @@ to the following format: ...@@ -320,7 +320,7 @@ to the following format:
} video_spu_t; } video_spu_t;
.. _video-spu-palette: .. c:type:: video_spu_palette
struct video_spu_palette struct video_spu_palette
======================== ========================
...@@ -338,7 +338,7 @@ VIDEO_SPU_PALETTE: ...@@ -338,7 +338,7 @@ VIDEO_SPU_PALETTE:
} video_spu_palette_t; } video_spu_palette_t;
.. _video-navi-pack: .. c:type:: video_navi_pack
struct video_navi_pack struct video_navi_pack
====================== ======================
......
...@@ -33,12 +33,12 @@ Description ...@@ -33,12 +33,12 @@ Description
All media devices must support the ``MEDIA_IOC_DEVICE_INFO`` ioctl. To All media devices must support the ``MEDIA_IOC_DEVICE_INFO`` ioctl. To
query device information, applications call the ioctl with a pointer to query device information, applications call the ioctl with a pointer to
a struct :ref:`media_device_info <media-device-info>`. The driver a struct :c:type:`media_device_info`. The driver
fills the structure and returns the information to the application. The fills the structure and returns the information to the application. The
ioctl never fails. ioctl never fails.
.. _media-device-info: .. c:type:: media_device_info
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
......
...@@ -32,7 +32,7 @@ Description ...@@ -32,7 +32,7 @@ Description
=========== ===========
To query the attributes of an entity, applications set the id field of a To query the attributes of an entity, applications set the id field of a
struct :ref:`media_entity_desc <media-entity-desc>` structure and struct :c:type:`media_entity_desc` structure and
call the MEDIA_IOC_ENUM_ENTITIES ioctl with a pointer to this call the MEDIA_IOC_ENUM_ENTITIES ioctl with a pointer to this
structure. The driver fills the rest of the structure or returns an structure. The driver fills the rest of the structure or returns an
EINVAL error code when the id is invalid. EINVAL error code when the id is invalid.
...@@ -49,7 +49,7 @@ enumerate entities by calling MEDIA_IOC_ENUM_ENTITIES with increasing ...@@ -49,7 +49,7 @@ enumerate entities by calling MEDIA_IOC_ENUM_ENTITIES with increasing
id's until they get an error. id's until they get an error.
.. _media-entity-desc: .. c:type:: media_entity_desc
.. tabularcolumns:: |p{1.5cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|p{11.5cm}| .. tabularcolumns:: |p{1.5cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|p{11.5cm}|
...@@ -195,5 +195,5 @@ appropriately. The generic error codes are described at the ...@@ -195,5 +195,5 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`media_entity_desc <media-entity-desc>` ``id`` The struct :c:type:`media_entity_desc` ``id``
references a non-existing entity. references a non-existing entity.
...@@ -32,10 +32,10 @@ Description ...@@ -32,10 +32,10 @@ Description
=========== ===========
To enumerate pads and/or links for a given entity, applications set the To enumerate pads and/or links for a given entity, applications set the
entity field of a struct :ref:`media_links_enum <media-links-enum>` entity field of a struct :c:type:`media_links_enum`
structure and initialize the struct structure and initialize the struct
:ref:`media_pad_desc <media-pad-desc>` and struct :c:type:`media_pad_desc` and struct
:ref:`media_link_desc <media-link-desc>` structure arrays pointed by :c:type:`media_link_desc` structure arrays pointed by
the ``pads`` and ``links`` fields. They then call the the ``pads`` and ``links`` fields. They then call the
MEDIA_IOC_ENUM_LINKS ioctl with a pointer to this structure. MEDIA_IOC_ENUM_LINKS ioctl with a pointer to this structure.
...@@ -53,7 +53,7 @@ Only forward links that originate at one of the entity's source pads are ...@@ -53,7 +53,7 @@ Only forward links that originate at one of the entity's source pads are
returned during the enumeration process. returned during the enumeration process.
.. _media-links-enum: .. c:type:: media_links_enum
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -73,7 +73,7 @@ returned during the enumeration process. ...@@ -73,7 +73,7 @@ returned during the enumeration process.
- .. row 2 - .. row 2
- struct :ref:`media_pad_desc <media-pad-desc>` - struct :c:type:`media_pad_desc`
- \*\ ``pads`` - \*\ ``pads``
...@@ -82,7 +82,7 @@ returned during the enumeration process. ...@@ -82,7 +82,7 @@ returned during the enumeration process.
- .. row 3 - .. row 3
- struct :ref:`media_link_desc <media-link-desc>` - struct :c:type:`media_link_desc`
- \*\ ``links`` - \*\ ``links``
...@@ -91,7 +91,7 @@ returned during the enumeration process. ...@@ -91,7 +91,7 @@ returned during the enumeration process.
.. _media-pad-desc: .. c:type:: media_pad_desc
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -127,7 +127,7 @@ returned during the enumeration process. ...@@ -127,7 +127,7 @@ returned during the enumeration process.
.. _media-link-desc: .. c:type:: media_link_desc
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -139,7 +139,7 @@ returned during the enumeration process. ...@@ -139,7 +139,7 @@ returned during the enumeration process.
- .. row 1 - .. row 1
- struct :ref:`media_pad_desc <media-pad-desc>` - struct :c:type:`media_pad_desc`
- ``source`` - ``source``
...@@ -147,7 +147,7 @@ returned during the enumeration process. ...@@ -147,7 +147,7 @@ returned during the enumeration process.
- .. row 2 - .. row 2
- struct :ref:`media_pad_desc <media-pad-desc>` - struct :c:type:`media_pad_desc`
- ``sink`` - ``sink``
...@@ -170,5 +170,5 @@ appropriately. The generic error codes are described at the ...@@ -170,5 +170,5 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`media_links_enum <media-links-enum>` ``id`` The struct :c:type:`media_links_enum` ``id``
references a non-existing entity. references a non-existing entity.
...@@ -33,7 +33,7 @@ Description ...@@ -33,7 +33,7 @@ Description
The typical usage of this ioctl is to call it twice. On the first call, The typical usage of this ioctl is to call it twice. On the first call,
the structure defined at struct the structure defined at struct
:ref:`media_v2_topology <media-v2-topology>` should be zeroed. At :c:type:`media_v2_topology` should be zeroed. At
return, if no errors happen, this ioctl will return the return, if no errors happen, this ioctl will return the
``topology_version`` and the total number of entities, interfaces, pads ``topology_version`` and the total number of entities, interfaces, pads
and links. and links.
...@@ -48,7 +48,7 @@ desired arrays with the media graph elements. ...@@ -48,7 +48,7 @@ desired arrays with the media graph elements.
.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-topology: .. c:type:: media_v2_topology
.. flat-table:: struct media_v2_topology .. flat-table:: struct media_v2_topology
:header-rows: 0 :header-rows: 0
...@@ -143,7 +143,7 @@ desired arrays with the media graph elements. ...@@ -143,7 +143,7 @@ desired arrays with the media graph elements.
.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-entity: .. c:type:: media_v2_entity
.. flat-table:: struct media_v2_entity .. flat-table:: struct media_v2_entity
:header-rows: 0 :header-rows: 0
...@@ -187,7 +187,7 @@ desired arrays with the media graph elements. ...@@ -187,7 +187,7 @@ desired arrays with the media graph elements.
.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-interface: .. c:type:: media_v2_interface
.. flat-table:: struct media_v2_interface .. flat-table:: struct media_v2_interface
:header-rows: 0 :header-rows: 0
...@@ -239,7 +239,7 @@ desired arrays with the media graph elements. ...@@ -239,7 +239,7 @@ desired arrays with the media graph elements.
.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-intf-devnode: .. c:type:: media_v2_intf_devnode
.. flat-table:: struct media_v2_interface .. flat-table:: struct media_v2_interface
:header-rows: 0 :header-rows: 0
...@@ -266,7 +266,7 @@ desired arrays with the media graph elements. ...@@ -266,7 +266,7 @@ desired arrays with the media graph elements.
.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-pad: .. c:type:: media_v2_pad
.. flat-table:: struct media_v2_pad .. flat-table:: struct media_v2_pad
:header-rows: 0 :header-rows: 0
...@@ -310,7 +310,7 @@ desired arrays with the media graph elements. ...@@ -310,7 +310,7 @@ desired arrays with the media graph elements.
.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}| .. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
.. _media-v2-link: .. c:type:: media_v2_link
.. flat-table:: struct media_v2_pad .. flat-table:: struct media_v2_pad
:header-rows: 0 :header-rows: 0
......
...@@ -32,7 +32,7 @@ Description ...@@ -32,7 +32,7 @@ Description
=========== ===========
To change link properties applications fill a struct To change link properties applications fill a struct
:ref:`media_link_desc <media-link-desc>` with link identification :c:type:`media_link_desc` with link identification
information (source and sink pad) and the new requested link flags. They information (source and sink pad) and the new requested link flags. They
then call the MEDIA_IOC_SETUP_LINK ioctl with a pointer to that then call the MEDIA_IOC_SETUP_LINK ioctl with a pointer to that
structure. structure.
...@@ -61,6 +61,6 @@ appropriately. The generic error codes are described at the ...@@ -61,6 +61,6 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`media_link_desc <media-link-desc>` references a The struct :c:type:`media_link_desc` references a
non-existing link, or the link is immutable and an attempt to modify non-existing link, or the link is immutable and an attempt to modify
its configuration was made. its configuration was made.
...@@ -21,15 +21,15 @@ more than one video input or output. Assumed two composite video inputs ...@@ -21,15 +21,15 @@ more than one video input or output. Assumed two composite video inputs
and two audio inputs exist, there may be up to four valid combinations. and two audio inputs exist, there may be up to four valid combinations.
The relation of video and audio connectors is defined in the The relation of video and audio connectors is defined in the
``audioset`` field of the respective struct ``audioset`` field of the respective struct
:ref:`v4l2_input <v4l2-input>` or struct :c:type:`v4l2_input` or struct
:ref:`v4l2_output <v4l2-output>`, where each bit represents the index :c:type:`v4l2_output`, where each bit represents the index
number, starting at zero, of one audio input or output. number, starting at zero, of one audio input or output.
To learn about the number and attributes of the available inputs and To learn about the number and attributes of the available inputs and
outputs applications can enumerate them with the outputs applications can enumerate them with the
:ref:`VIDIOC_ENUMAUDIO` and :ref:`VIDIOC_ENUMAUDIO` and
:ref:`VIDIOC_ENUMAUDOUT <VIDIOC_ENUMAUDOUT>` ioctl, respectively. :ref:`VIDIOC_ENUMAUDOUT <VIDIOC_ENUMAUDOUT>` ioctl, respectively.
The struct :ref:`v4l2_audio <v4l2-audio>` returned by the The struct :c:type:`v4l2_audio` returned by the
:ref:`VIDIOC_ENUMAUDIO` ioctl also contains signal :ref:`VIDIOC_ENUMAUDIO` ioctl also contains signal
:status information applicable when the current audio input is queried. :status information applicable when the current audio input is queried.
...@@ -53,7 +53,7 @@ Drivers must implement all audio input ioctls when the device has ...@@ -53,7 +53,7 @@ Drivers must implement all audio input ioctls when the device has
multiple selectable audio inputs, all audio output ioctls when the multiple selectable audio inputs, all audio output ioctls when the
device has multiple selectable audio outputs. When the device has any device has multiple selectable audio outputs. When the device has any
audio inputs or outputs the driver must set the ``V4L2_CAP_AUDIO`` flag audio inputs or outputs the driver must set the ``V4L2_CAP_AUDIO`` flag
in the struct :ref:`v4l2_capability <v4l2-capability>` returned by in the struct :c:type:`v4l2_capability` returned by
the :ref:`VIDIOC_QUERYCAP` ioctl. the :ref:`VIDIOC_QUERYCAP` ioctl.
...@@ -91,7 +91,7 @@ Example: Switching to the first audio input ...@@ -91,7 +91,7 @@ Example: Switching to the first audio input
} }
.. [#f1] .. [#f1]
Actually struct :ref:`v4l2_audio <v4l2-audio>` ought to have a Actually struct :c:type:`v4l2_audio` ought to have a
``tuner`` field like struct :ref:`v4l2_input <v4l2-input>`, not ``tuner`` field like struct :c:type:`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
with multiple tuners. with multiple tuners.
...@@ -11,14 +11,14 @@ the Streaming I/O methods. In the multi-planar API, the data is held in ...@@ -11,14 +11,14 @@ the Streaming I/O methods. In the multi-planar API, the data is held in
planes, while the buffer structure acts as a container for the planes. planes, while the buffer structure acts as a container for the planes.
Only pointers to buffers (planes) are exchanged, the data itself is not Only pointers to buffers (planes) are exchanged, the data itself is not
copied. These pointers, together with meta-information like timestamps copied. These pointers, together with meta-information like timestamps
or field parity, are stored in a struct :ref:`struct v4l2_buffer <v4l2-buffer>`, or field parity, are stored in a struct :c:type:`struct v4l2_buffer <v4l2_buffer>`,
argument to the :ref:`VIDIOC_QUERYBUF`, argument to the :ref:`VIDIOC_QUERYBUF`,
:ref:`VIDIOC_QBUF` and :ref:`VIDIOC_QBUF` and
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. In the multi-planar API, :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. In the multi-planar API,
some plane-specific members of struct :ref:`struct v4l2_buffer <v4l2-buffer>`, some plane-specific members of struct :c:type:`struct v4l2_buffer <v4l2_buffer>`,
such as pointers and sizes for each plane, are stored in struct such as pointers and sizes for each plane, are stored in struct
:ref:`struct v4l2_plane <v4l2-plane>` instead. In that case, struct :c:type:`struct v4l2_plane <v4l2_plane>` instead. In that case, struct
:ref:`struct v4l2_buffer <v4l2-buffer>` contains an array of plane structures. :c:type:`struct v4l2_buffer <v4l2_buffer>` contains an array of plane structures.
Dequeued video buffers come with timestamps. The driver decides at which Dequeued video buffers come with timestamps. The driver decides at which
part of the frame and with which clock the timestamp is taken. Please part of the frame and with which clock the timestamp is taken. Please
...@@ -34,7 +34,7 @@ flags are copied from the OUTPUT video buffer to the CAPTURE video ...@@ -34,7 +34,7 @@ flags are copied from the OUTPUT video buffer to the CAPTURE video
buffer. buffer.
.. _v4l2-buffer: .. c:type:: v4l2_buffer
struct v4l2_buffer struct v4l2_buffer
================== ==================
...@@ -60,7 +60,7 @@ struct v4l2_buffer ...@@ -60,7 +60,7 @@ struct v4l2_buffer
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, then it is set by the :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, then it is set by the
driver. This field can range from zero to the number of buffers driver. This field can range from zero to the number of buffers
allocated with the :ref:`VIDIOC_REQBUFS` ioctl allocated with the :ref:`VIDIOC_REQBUFS` ioctl
(struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>` (struct :c:type:`v4l2_requestbuffers`
``count``), plus any buffers allocated with ``count``), plus any buffers allocated with
:ref:`VIDIOC_CREATE_BUFS` minus one. :ref:`VIDIOC_CREATE_BUFS` minus one.
...@@ -72,8 +72,8 @@ struct v4l2_buffer ...@@ -72,8 +72,8 @@ struct v4l2_buffer
- -
- Type of the buffer, same as struct - Type of the buffer, same as struct
:ref:`v4l2_format <v4l2-format>` ``type`` or struct :c:type:`v4l2_format` ``type`` or struct
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``, set :c:type:`v4l2_requestbuffers` ``type``, set
by the application. See :ref:`v4l2-buf-type` by the application. See :ref:`v4l2-buf-type`
- .. row 3 - .. row 3
...@@ -134,7 +134,7 @@ struct v4l2_buffer ...@@ -134,7 +134,7 @@ struct v4l2_buffer
- .. row 7 - .. row 7
- struct :ref:`v4l2_timecode <v4l2-timecode>` - struct :c:type:`v4l2_timecode`
- ``timecode`` - ``timecode``
...@@ -229,9 +229,9 @@ struct v4l2_buffer ...@@ -229,9 +229,9 @@ struct v4l2_buffer
- ``*planes`` - ``*planes``
- When using the multi-planar API, contains a userspace pointer to - When using the multi-planar API, contains a userspace pointer to
an array of struct :ref:`v4l2_plane <v4l2-plane>`. The size of an array of struct :c:type:`v4l2_plane`. The size of
the array should be put in the ``length`` field of this the array should be put in the ``length`` field of this
:ref:`struct v4l2_buffer <v4l2-buffer>` structure. :c:type:`struct v4l2_buffer <v4l2_buffer>` structure.
- .. row 15 - .. row 15
...@@ -281,7 +281,7 @@ struct v4l2_buffer ...@@ -281,7 +281,7 @@ struct v4l2_buffer
.. _v4l2-plane: .. c:type:: v4l2_plane
struct v4l2_plane struct v4l2_plane
================= =================
...@@ -344,10 +344,10 @@ struct v4l2_plane ...@@ -344,10 +344,10 @@ struct v4l2_plane
- ``mem_offset`` - ``mem_offset``
- When the memory type in the containing struct - When the memory type in the containing struct
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_MMAP``, this :c:type:`v4l2_buffer` is ``V4L2_MEMORY_MMAP``, this
is the value that should be passed to :ref:`mmap() <func-mmap>`, is the value that should be passed to :ref:`mmap() <func-mmap>`,
similar to the ``offset`` field in struct similar to the ``offset`` field in struct
:ref:`v4l2_buffer <v4l2-buffer>`. :c:type:`v4l2_buffer`.
- .. row 5 - .. row 5
...@@ -357,7 +357,7 @@ struct v4l2_plane ...@@ -357,7 +357,7 @@ struct v4l2_plane
- ``userptr`` - ``userptr``
- When the memory type in the containing struct - When the memory type in the containing struct
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_USERPTR``, :c:type:`v4l2_buffer` is ``V4L2_MEMORY_USERPTR``,
this is a userspace pointer to the memory allocated for this plane this is a userspace pointer to the memory allocated for this plane
by an application. by an application.
...@@ -369,9 +369,9 @@ struct v4l2_plane ...@@ -369,9 +369,9 @@ struct v4l2_plane
- ``fd`` - ``fd``
- When the memory type in the containing struct - When the memory type in the containing struct
:ref:`v4l2_buffer <v4l2-buffer>` is ``V4L2_MEMORY_DMABUF``, :c:type:`v4l2_buffer` is ``V4L2_MEMORY_DMABUF``,
this is a file descriptor associated with a DMABUF buffer, similar this is a file descriptor associated with a DMABUF buffer, similar
to the ``fd`` field in struct :ref:`v4l2_buffer <v4l2-buffer>`. to the ``fd`` field in struct :c:type:`v4l2_buffer`.
- .. row 7 - .. row 7
...@@ -823,13 +823,13 @@ enum v4l2_memory ...@@ -823,13 +823,13 @@ enum v4l2_memory
Timecodes Timecodes
========= =========
The :ref:`struct v4l2_timecode <v4l2-timecode>` structure is designed to hold a The :c:type:`struct v4l2_timecode <v4l2_timecode>` structure is designed to hold a
:ref:`smpte12m` or similar timecode. (struct :ref:`smpte12m` or similar timecode. (struct
:c:type:`struct timeval` timestamps are stored in struct :c:type:`struct timeval` timestamps are stored in struct
:ref:`v4l2_buffer <v4l2-buffer>` field ``timestamp``.) :c:type:`v4l2_buffer` field ``timestamp``.)
.. _v4l2-timecode: .. c:type:: v4l2_timecode
struct v4l2_timecode struct v4l2_timecode
-------------------- --------------------
......
...@@ -65,7 +65,7 @@ Cropping Structures ...@@ -65,7 +65,7 @@ Cropping Structures
For capture devices the coordinates of the top left corner, width and For capture devices the coordinates of the top left corner, width and
height of the area which can be sampled is given by the ``bounds`` height of the area which can be sampled is given by the ``bounds``
substructure of the struct :ref:`v4l2_cropcap <v4l2-cropcap>` returned substructure of the struct :c:type:`v4l2_cropcap` returned
by the :ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>` ioctl. To support a wide by the :ref:`VIDIOC_CROPCAP <VIDIOC_CROPCAP>` ioctl. To support a wide
range of hardware this specification does not define an origin or units. range of hardware this specification does not define an origin or units.
However by convention drivers should horizontally count unscaled samples However by convention drivers should horizontally count unscaled samples
...@@ -77,8 +77,8 @@ can capture both fields. ...@@ -77,8 +77,8 @@ can capture both fields.
The top left corner, width and height of the source rectangle, that is The top left corner, width and height of the source rectangle, that is
the area actually sampled, is given by struct the area actually sampled, is given by struct
:ref:`v4l2_crop <v4l2-crop>` using the same coordinate system as :c:type:`v4l2_crop` using the same coordinate system as
struct :ref:`v4l2_cropcap <v4l2-cropcap>`. Applications can use the struct :c:type:`v4l2_cropcap`. Applications can use the
:ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>`
ioctls to get and set this rectangle. It must lie completely within the ioctls to get and set this rectangle. It must lie completely within the
capture boundaries and the driver may further adjust the requested size capture boundaries and the driver may further adjust the requested size
...@@ -86,7 +86,7 @@ and/or position according to hardware limitations. ...@@ -86,7 +86,7 @@ and/or position according to hardware limitations.
Each capture device has a default source rectangle, given by the Each capture device has a default source rectangle, given by the
``defrect`` substructure of struct ``defrect`` substructure of struct
:ref:`v4l2_cropcap <v4l2-cropcap>`. The center of this rectangle :c:type:`v4l2_cropcap`. The center of this rectangle
shall align with the center of the active picture area of the video shall align with the center of the active picture area of the video
signal, and cover what the driver writer considers the complete picture. signal, and cover what the driver writer considers the complete picture.
Drivers shall reset the source rectangle to the default when the driver Drivers shall reset the source rectangle to the default when the driver
...@@ -104,11 +104,11 @@ Video hardware can have various cropping, insertion and scaling ...@@ -104,11 +104,11 @@ Video hardware can have various cropping, insertion and scaling
limitations. It may only scale up or down, support only discrete scaling limitations. It may only scale up or down, support only discrete scaling
factors, or have different scaling abilities in horizontal and vertical factors, or have different scaling abilities in horizontal and vertical
direction. Also it may not support scaling at all. At the same time the direction. Also it may not support scaling at all. At the same time the
struct :ref:`v4l2_crop <v4l2-crop>` rectangle may have to be aligned, struct :c:type:`v4l2_crop` rectangle may have to be aligned,
and both the source and target rectangles may have arbitrary upper and and both the source and target rectangles may have arbitrary upper and
lower size limits. In particular the maximum ``width`` and ``height`` in lower size limits. In particular the maximum ``width`` and ``height`` in
struct :ref:`v4l2_crop <v4l2-crop>` may be smaller than the struct struct :c:type:`v4l2_crop` may be smaller than the struct
:ref:`v4l2_cropcap <v4l2-cropcap>`. ``bounds`` area. Therefore, as :c:type:`v4l2_cropcap`. ``bounds`` area. Therefore, as
usual, drivers are expected to adjust the requested parameters and usual, drivers are expected to adjust the requested parameters and
return the actual values selected. return the actual values selected.
......
...@@ -26,7 +26,7 @@ Querying Capabilities ...@@ -26,7 +26,7 @@ Querying Capabilities
Devices supporting the video capture interface set the Devices supporting the video capture interface set the
``V4L2_CAP_VIDEO_CAPTURE`` or ``V4L2_CAP_VIDEO_CAPTURE_MPLANE`` flag in ``V4L2_CAP_VIDEO_CAPTURE`` or ``V4L2_CAP_VIDEO_CAPTURE_MPLANE`` flag in
the ``capabilities`` field of struct the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. As secondary device :ref:`VIDIOC_QUERYCAP` ioctl. As secondary device
functions they may also support the :ref:`video overlay <overlay>` functions they may also support the :ref:`video overlay <overlay>`
(``V4L2_CAP_VIDEO_OVERLAY``) and the :ref:`raw VBI capture <raw-vbi>` (``V4L2_CAP_VIDEO_OVERLAY``) and the :ref:`raw VBI capture <raw-vbi>`
...@@ -64,18 +64,18 @@ Cropping initialization at minimum requires to reset the parameters to ...@@ -64,18 +64,18 @@ Cropping initialization at minimum requires to reset the parameters to
defaults. An example is given in :ref:`crop`. defaults. An example is given in :ref:`crop`.
To query the current image format applications set the ``type`` field of To query the current image format applications set the ``type`` field of
a struct :ref:`v4l2_format <v4l2-format>` to a struct :c:type:`v4l2_format` to
``V4L2_BUF_TYPE_VIDEO_CAPTURE`` or ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` or
``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE`` and call the ``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE`` and call the
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this
structure. Drivers fill the struct structure. Drivers fill the struct
:ref:`v4l2_pix_format <v4l2-pix-format>` ``pix`` or the struct :c:type:`v4l2_pix_format` ``pix`` or the struct
:ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` ``pix_mp`` :c:type:`v4l2_pix_format_mplane` ``pix_mp``
member of the ``fmt`` union. member of the ``fmt`` union.
To request different parameters applications set the ``type`` field of a To request different parameters applications set the ``type`` field of a
struct :ref:`v4l2_format <v4l2-format>` as above and initialize all struct :c:type:`v4l2_format` as above and initialize all
fields of the struct :ref:`v4l2_pix_format <v4l2-pix-format>` fields of the struct :c:type:`v4l2_pix_format`
``vbi`` member of the ``fmt`` union, or better just modify the results ``vbi`` member of the ``fmt`` union, or better just modify the results
of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`
ioctl with a pointer to this structure. Drivers may adjust the ioctl with a pointer to this structure. Drivers may adjust the
...@@ -86,8 +86,8 @@ Like :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` the :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ...@@ -86,8 +86,8 @@ Like :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` the :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`
can be used to learn about hardware limitations without disabling I/O or can be used to learn about hardware limitations without disabling I/O or
possibly time consuming hardware preparations. possibly time consuming hardware preparations.
The contents of struct :ref:`v4l2_pix_format <v4l2-pix-format>` and The contents of struct :c:type:`v4l2_pix_format` and
struct :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` are struct :c:type:`v4l2_pix_format_mplane` are
discussed in :ref:`pixfmt`. See also the specification of the discussed in :ref:`pixfmt`. See also the specification of the
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctls for :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctls for
details. Video capture devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` details. Video capture devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`
......
...@@ -28,7 +28,7 @@ Querying Capabilities ...@@ -28,7 +28,7 @@ Querying Capabilities
Devices supporting the *Video Output Overlay* interface set the Devices supporting the *Video Output Overlay* interface set the
``V4L2_CAP_VIDEO_OUTPUT_OVERLAY`` flag in the ``capabilities`` field of ``V4L2_CAP_VIDEO_OUTPUT_OVERLAY`` flag in the ``capabilities`` field of
struct :ref:`v4l2_capability <v4l2-capability>` returned by the struct :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. :ref:`VIDIOC_QUERYCAP` ioctl.
...@@ -41,7 +41,7 @@ accessible as a framebuffer device (``/dev/fbN``). Given a V4L2 device, ...@@ -41,7 +41,7 @@ accessible as a framebuffer device (``/dev/fbN``). Given a V4L2 device,
applications can find the corresponding framebuffer device by calling applications can find the corresponding framebuffer device by calling
the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` ioctl. It returns, amongst the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` ioctl. It returns, amongst
other information, the physical address of the framebuffer in the other information, the physical address of the framebuffer in the
``base`` field of struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`. ``base`` field of struct :c:type:`v4l2_framebuffer`.
The framebuffer device ioctl ``FBIOGET_FSCREENINFO`` returns the same The framebuffer device ioctl ``FBIOGET_FSCREENINFO`` returns the same
address in the ``smem_start`` field of struct address in the ``smem_start`` field of struct
:c:type:`struct fb_fix_screeninfo`. The ``FBIOGET_FSCREENINFO`` :c:type:`struct fb_fix_screeninfo`. The ``FBIOGET_FSCREENINFO``
...@@ -114,18 +114,18 @@ sizes and positions of these rectangles. Further drivers may support any ...@@ -114,18 +114,18 @@ sizes and positions of these rectangles. Further drivers may support any
(or none) of the clipping/blending methods defined for the (or none) of the clipping/blending methods defined for the
:ref:`Video Overlay <overlay>` interface. :ref:`Video Overlay <overlay>` interface.
A struct :ref:`v4l2_window <v4l2-window>` defines the size of the A struct :c:type:`v4l2_window` defines the size of the
source rectangle, its position in the framebuffer and the source rectangle, its position in the framebuffer and the
clipping/blending method to be used for the overlay. To get the current clipping/blending method to be used for the overlay. To get the current
parameters applications set the ``type`` field of a struct parameters applications set the ``type`` field of a struct
:ref:`v4l2_format <v4l2-format>` to :c:type:`v4l2_format` to
``V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY`` and call the ``V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY`` and call the
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl. The driver fills the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl. The driver fills the
:ref:`struct v4l2_window <v4l2-window>` substructure named ``win``. It is not :c:type:`struct v4l2_window <v4l2_window>` substructure named ``win``. It is not
possible to retrieve a previously programmed clipping list or bitmap. possible to retrieve a previously programmed clipping list or bitmap.
To program the source rectangle applications set the ``type`` field of a To program the source rectangle applications set the ``type`` field of a
struct :ref:`v4l2_format <v4l2-format>` to struct :c:type:`v4l2_format` to
``V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY``, initialize the ``win`` ``V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY``, initialize the ``win``
substructure and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. substructure and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl.
The driver adjusts the parameters against hardware limits and returns The driver adjusts the parameters against hardware limits and returns
...@@ -134,10 +134,10 @@ the :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl can be used to learn ...@@ -134,10 +134,10 @@ the :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl can be used to learn
about driver capabilities without actually changing driver state. Unlike about driver capabilities without actually changing driver state. Unlike
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` this also works after the overlay has been enabled. :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` this also works after the overlay has been enabled.
A struct :ref:`v4l2_crop <v4l2-crop>` defines the size and position A struct :c:type:`v4l2_crop` defines the size and position
of the target rectangle. The scaling factor of the overlay is implied by of the target rectangle. The scaling factor of the overlay is implied by
the width and height given in struct :ref:`v4l2_window <v4l2-window>` the width and height given in struct :c:type:`v4l2_window`
and struct :ref:`v4l2_crop <v4l2-crop>`. The cropping API applies to and struct :c:type:`v4l2_crop`. The cropping API applies to
*Video Output* and *Video Output Overlay* devices in the same way as to *Video Output* and *Video Output Overlay* devices in the same way as to
*Video Capture* and *Video Overlay* devices, merely reversing the *Video Capture* and *Video Overlay* devices, merely reversing the
direction of the data flow. For more information see :ref:`crop`. direction of the data flow. For more information see :ref:`crop`.
......
...@@ -25,7 +25,7 @@ Querying Capabilities ...@@ -25,7 +25,7 @@ Querying Capabilities
Devices supporting the video output interface set the Devices supporting the video output interface set the
``V4L2_CAP_VIDEO_OUTPUT`` or ``V4L2_CAP_VIDEO_OUTPUT_MPLANE`` flag in ``V4L2_CAP_VIDEO_OUTPUT`` or ``V4L2_CAP_VIDEO_OUTPUT_MPLANE`` flag in
the ``capabilities`` field of struct the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. As secondary device :ref:`VIDIOC_QUERYCAP` ioctl. As secondary device
functions they may also support the :ref:`raw VBI output <raw-vbi>` functions they may also support the :ref:`raw VBI output <raw-vbi>`
(``V4L2_CAP_VBI_OUTPUT``) interface. At least one of the read/write or (``V4L2_CAP_VBI_OUTPUT``) interface. At least one of the read/write or
...@@ -62,17 +62,17 @@ Cropping initialization at minimum requires to reset the parameters to ...@@ -62,17 +62,17 @@ Cropping initialization at minimum requires to reset the parameters to
defaults. An example is given in :ref:`crop`. defaults. An example is given in :ref:`crop`.
To query the current image format applications set the ``type`` field of To query the current image format applications set the ``type`` field of
a struct :ref:`v4l2_format <v4l2-format>` to a struct :c:type:`v4l2_format` to
``V4L2_BUF_TYPE_VIDEO_OUTPUT`` or ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE`` ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` or ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE``
and call the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer and call the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer
to this structure. Drivers fill the struct to this structure. Drivers fill the struct
:ref:`v4l2_pix_format <v4l2-pix-format>` ``pix`` or the struct :c:type:`v4l2_pix_format` ``pix`` or the struct
:ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` ``pix_mp`` :c:type:`v4l2_pix_format_mplane` ``pix_mp``
member of the ``fmt`` union. member of the ``fmt`` union.
To request different parameters applications set the ``type`` field of a To request different parameters applications set the ``type`` field of a
struct :ref:`v4l2_format <v4l2-format>` as above and initialize all struct :c:type:`v4l2_format` as above and initialize all
fields of the struct :ref:`v4l2_pix_format <v4l2-pix-format>` fields of the struct :c:type:`v4l2_pix_format`
``vbi`` member of the ``fmt`` union, or better just modify the results ``vbi`` member of the ``fmt`` union, or better just modify the results
of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`
ioctl with a pointer to this structure. Drivers may adjust the ioctl with a pointer to this structure. Drivers may adjust the
...@@ -83,8 +83,8 @@ Like :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` the :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ...@@ -83,8 +83,8 @@ Like :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` the :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`
can be used to learn about hardware limitations without disabling I/O or can be used to learn about hardware limitations without disabling I/O or
possibly time consuming hardware preparations. possibly time consuming hardware preparations.
The contents of struct :ref:`v4l2_pix_format <v4l2-pix-format>` and The contents of struct :c:type:`v4l2_pix_format` and
struct :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` are struct :c:type:`v4l2_pix_format_mplane` are
discussed in :ref:`pixfmt`. See also the specification of the discussed in :ref:`pixfmt`. See also the specification of the
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctls for :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctls for
details. Video output devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` details. Video output devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`
......
...@@ -43,7 +43,7 @@ Querying Capabilities ...@@ -43,7 +43,7 @@ Querying Capabilities
Devices supporting the video overlay interface set the Devices supporting the video overlay interface set the
``V4L2_CAP_VIDEO_OVERLAY`` flag in the ``capabilities`` field of struct ``V4L2_CAP_VIDEO_OVERLAY`` flag in the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. The overlay I/O :ref:`VIDIOC_QUERYCAP` ioctl. The overlay I/O
method specified below must be supported. Tuners and audio inputs are method specified below must be supported. Tuners and audio inputs are
optional. optional.
...@@ -119,17 +119,17 @@ at minimum requires to reset the parameters to defaults. An example is ...@@ -119,17 +119,17 @@ at minimum requires to reset the parameters to defaults. An example is
given in :ref:`crop`. given in :ref:`crop`.
The overlay window is described by a struct The overlay window is described by a struct
:ref:`v4l2_window <v4l2-window>`. It defines the size of the image, :c:type:`v4l2_window`. It defines the size of the image,
its position over the graphics surface and the clipping to be applied. its position over the graphics surface and the clipping to be applied.
To get the current parameters applications set the ``type`` field of a To get the current parameters applications set the ``type`` field of a
struct :ref:`v4l2_format <v4l2-format>` to struct :c:type:`v4l2_format` to
``V4L2_BUF_TYPE_VIDEO_OVERLAY`` and call the ``V4L2_BUF_TYPE_VIDEO_OVERLAY`` and call the
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl. The driver fills the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl. The driver fills the
:ref:`struct v4l2_window <v4l2-window>` substructure named ``win``. It is not :c:type:`struct v4l2_window <v4l2_window>` substructure named ``win``. It is not
possible to retrieve a previously programmed clipping list or bitmap. possible to retrieve a previously programmed clipping list or bitmap.
To program the overlay window applications set the ``type`` field of a To program the overlay window applications set the ``type`` field of a
struct :ref:`v4l2_format <v4l2-format>` to struct :c:type:`v4l2_format` to
``V4L2_BUF_TYPE_VIDEO_OVERLAY``, initialize the ``win`` substructure and ``V4L2_BUF_TYPE_VIDEO_OVERLAY``, initialize the ``win`` substructure and
call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. The driver call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. The driver
adjusts the parameters against hardware limits and returns the actual adjusts the parameters against hardware limits and returns the actual
...@@ -139,7 +139,7 @@ about driver capabilities without actually changing driver state. Unlike ...@@ -139,7 +139,7 @@ about driver capabilities without actually changing driver state. Unlike
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` this also works after the overlay has been enabled. :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` this also works after the overlay has been enabled.
The scaling factor of the overlaid image is implied by the width and The scaling factor of the overlaid image is implied by the width and
height given in struct :ref:`v4l2_window <v4l2-window>` and the size height given in struct :c:type:`v4l2_window` and the size
of the cropping rectangle. For more information see :ref:`crop`. of the cropping rectangle. For more information see :ref:`crop`.
When simultaneous capturing and overlay is supported and the hardware When simultaneous capturing and overlay is supported and the hardware
...@@ -149,7 +149,7 @@ takes precedence. The attempt to capture or overlay as well ...@@ -149,7 +149,7 @@ takes precedence. The attempt to capture or overlay as well
code or return accordingly modified parameters. code or return accordingly modified parameters.
.. _v4l2-window: .. c:type:: v4l2_window
struct v4l2_window struct v4l2_window
------------------ ------------------
...@@ -175,7 +175,7 @@ struct v4l2_window ...@@ -175,7 +175,7 @@ struct v4l2_window
:ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` applications set this field :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` applications set this field
to the desired pixel value for the chroma key. The format is the to the desired pixel value for the chroma key. The format is the
same as the pixel format of the framebuffer (struct same as the pixel format of the framebuffer (struct
:ref:`v4l2_framebuffer <v4l2-framebuffer>` ``fmt.pixelformat`` :c:type:`v4l2_framebuffer` ``fmt.pixelformat``
field), with bytes in host order. E. g. for field), with bytes in host order. E. g. for
:ref:`V4L2_PIX_FMT_BGR24 <V4L2-PIX-FMT-BGR32>` the value should :ref:`V4L2_PIX_FMT_BGR24 <V4L2-PIX-FMT-BGR32>` the value should
be 0xRRGGBB on a little endian, 0xBBGGRR on a big endian host. be 0xRRGGBB on a little endian, 0xBBGGRR on a big endian host.
...@@ -242,11 +242,11 @@ exceeded are undefined. [#f3]_ ...@@ -242,11 +242,11 @@ exceeded are undefined. [#f3]_
This field was added in Linux 2.6.23, extending the This field was added in Linux 2.6.23, extending the
structure. However the :ref:`VIDIOC_[G|S|TRY]_FMT <VIDIOC_G_FMT>` structure. However the :ref:`VIDIOC_[G|S|TRY]_FMT <VIDIOC_G_FMT>`
ioctls, which take a pointer to a :ref:`v4l2_format <v4l2-format>` ioctls, which take a pointer to a :c:type:`v4l2_format`
parent structure with padding bytes at the end, are not affected. parent structure with padding bytes at the end, are not affected.
.. _v4l2-clip: .. c:type:: v4l2_clip
struct v4l2_clip [#f4]_ struct v4l2_clip [#f4]_
----------------------- -----------------------
...@@ -262,7 +262,7 @@ struct v4l2_clip [#f4]_ ...@@ -262,7 +262,7 @@ struct v4l2_clip [#f4]_
linked list of clipping rectangles. linked list of clipping rectangles.
.. _v4l2-rect: .. c:type:: v4l2_rect
struct v4l2_rect struct v4l2_rect
---------------- ----------------
......
...@@ -20,7 +20,7 @@ Querying Capabilities ...@@ -20,7 +20,7 @@ Querying Capabilities
Devices supporting the radio interface set the ``V4L2_CAP_RADIO`` and Devices supporting the radio interface set the ``V4L2_CAP_RADIO`` and
``V4L2_CAP_TUNER`` or ``V4L2_CAP_MODULATOR`` flag in the ``V4L2_CAP_TUNER`` or ``V4L2_CAP_MODULATOR`` flag in the
``capabilities`` field of struct ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. Other combinations of :ref:`VIDIOC_QUERYCAP` ioctl. Other combinations of
capability flags are reserved for future extensions. capability flags are reserved for future extensions.
......
...@@ -39,7 +39,7 @@ Querying Capabilities ...@@ -39,7 +39,7 @@ Querying Capabilities
Devices supporting the raw VBI capturing or output API set the Devices supporting the raw VBI capturing or output API set the
``V4L2_CAP_VBI_CAPTURE`` or ``V4L2_CAP_VBI_OUTPUT`` flags, respectively, ``V4L2_CAP_VBI_CAPTURE`` or ``V4L2_CAP_VBI_OUTPUT`` flags, respectively,
in the ``capabilities`` field of struct in the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. At least one of the :ref:`VIDIOC_QUERYCAP` ioctl. At least one of the
read/write, streaming or asynchronous I/O methods must be supported. VBI read/write, streaming or asynchronous I/O methods must be supported. VBI
devices may or may not have a tuner or modulator. devices may or may not have a tuner or modulator.
...@@ -69,16 +69,16 @@ always ensure they really get what they want, requesting reasonable ...@@ -69,16 +69,16 @@ always ensure they really get what they want, requesting reasonable
parameters and then checking if the actual parameters are suitable. parameters and then checking if the actual parameters are suitable.
To query the current raw VBI capture parameters applications set the To query the current raw VBI capture parameters applications set the
``type`` field of a struct :ref:`v4l2_format <v4l2-format>` to ``type`` field of a struct :c:type:`v4l2_format` to
``V4L2_BUF_TYPE_VBI_CAPTURE`` or ``V4L2_BUF_TYPE_VBI_OUTPUT``, and call ``V4L2_BUF_TYPE_VBI_CAPTURE`` or ``V4L2_BUF_TYPE_VBI_OUTPUT``, and call
the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this
structure. Drivers fill the struct structure. Drivers fill the struct
:ref:`v4l2_vbi_format <v4l2-vbi-format>` ``vbi`` member of the :c:type:`v4l2_vbi_format` ``vbi`` member of the
``fmt`` union. ``fmt`` union.
To request different parameters applications set the ``type`` field of a To request different parameters applications set the ``type`` field of a
struct :ref:`v4l2_format <v4l2-format>` as above and initialize all struct :c:type:`v4l2_format` as above and initialize all
fields of the struct :ref:`v4l2_vbi_format <v4l2-vbi-format>` fields of the struct :c:type:`v4l2_vbi_format`
``vbi`` member of the ``fmt`` union, or better just modify the results ``vbi`` member of the ``fmt`` union, or better just modify the results
of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` of :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, and call the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`
ioctl with a pointer to this structure. Drivers return an ``EINVAL`` error ioctl with a pointer to this structure. Drivers return an ``EINVAL`` error
...@@ -101,7 +101,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does ...@@ -101,7 +101,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
.. tabularcolumns:: |p{2.4cm}|p{4.4cm}|p{10.7cm}| .. tabularcolumns:: |p{2.4cm}|p{4.4cm}|p{10.7cm}|
.. _v4l2-vbi-format: .. c:type:: v4l2_vbi_format
.. cssclass:: longtable .. cssclass:: longtable
...@@ -204,7 +204,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does ...@@ -204,7 +204,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
To initialize the ``start`` and ``count`` fields, applications To initialize the ``start`` and ``count`` fields, applications
must first determine the current video standard selection. The must first determine the current video standard selection. The
:ref:`v4l2_std_id <v4l2-std-id>` or the ``framelines`` field :ref:`v4l2_std_id <v4l2-std-id>` or the ``framelines`` field
of struct :ref:`v4l2_standard <v4l2-standard>` can be evaluated of struct :c:type:`v4l2_standard` can be evaluated
for this purpose. for this purpose.
- .. row 8 - .. row 8
......
...@@ -34,10 +34,10 @@ Querying Capabilities ...@@ -34,10 +34,10 @@ Querying Capabilities
Devices supporting the RDS capturing API set the Devices supporting the RDS capturing API set the
``V4L2_CAP_RDS_CAPTURE`` flag in the ``capabilities`` field of struct ``V4L2_CAP_RDS_CAPTURE`` flag in the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. Any tuner that :ref:`VIDIOC_QUERYCAP` ioctl. Any tuner that
supports RDS will set the ``V4L2_TUNER_CAP_RDS`` flag in the supports RDS will set the ``V4L2_TUNER_CAP_RDS`` flag in the
``capability`` field of struct :ref:`v4l2_tuner <v4l2-tuner>`. If the ``capability`` field of struct :c:type:`v4l2_tuner`. If the
driver only passes RDS blocks without interpreting the data the driver only passes RDS blocks without interpreting the data the
``V4L2_TUNER_CAP_RDS_BLOCK_IO`` flag has to be set, see ``V4L2_TUNER_CAP_RDS_BLOCK_IO`` flag has to be set, see
:ref:`Reading RDS data <reading-rds-data>`. For future use the flag :ref:`Reading RDS data <reading-rds-data>`. For future use the flag
...@@ -48,19 +48,19 @@ linux-media mailing list: ...@@ -48,19 +48,19 @@ linux-media mailing list:
`https://linuxtv.org/lists.php <https://linuxtv.org/lists.php>`__. `https://linuxtv.org/lists.php <https://linuxtv.org/lists.php>`__.
Whether an RDS signal is present can be detected by looking at the Whether an RDS signal is present can be detected by looking at the
``rxsubchans`` field of struct :ref:`v4l2_tuner <v4l2-tuner>`: the ``rxsubchans`` field of struct :c:type:`v4l2_tuner`: the
``V4L2_TUNER_SUB_RDS`` will be set if RDS data was detected. ``V4L2_TUNER_SUB_RDS`` will be set if RDS data was detected.
Devices supporting the RDS output API set the ``V4L2_CAP_RDS_OUTPUT`` Devices supporting the RDS output API set the ``V4L2_CAP_RDS_OUTPUT``
flag in the ``capabilities`` field of struct flag in the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. Any modulator that :ref:`VIDIOC_QUERYCAP` ioctl. Any modulator that
supports RDS will set the ``V4L2_TUNER_CAP_RDS`` flag in the supports RDS will set the ``V4L2_TUNER_CAP_RDS`` flag in the
``capability`` field of struct ``capability`` field of struct
:ref:`v4l2_modulator <v4l2-modulator>`. In order to enable the RDS :c:type:`v4l2_modulator`. In order to enable the RDS
transmission one must set the ``V4L2_TUNER_SUB_RDS`` bit in the transmission one must set the ``V4L2_TUNER_SUB_RDS`` bit in the
``txsubchans`` field of struct ``txsubchans`` field of struct
:ref:`v4l2_modulator <v4l2-modulator>`. If the driver only passes RDS :c:type:`v4l2_modulator`. If the driver only passes RDS
blocks without interpreting the data the ``V4L2_TUNER_CAP_RDS_BLOCK_IO`` blocks without interpreting the data the ``V4L2_TUNER_CAP_RDS_BLOCK_IO``
flag has to be set. If the tuner is capable of handling RDS entities flag has to be set. If the tuner is capable of handling RDS entities
like program identification codes and radio text, the flag like program identification codes and radio text, the flag
...@@ -93,7 +93,7 @@ RDS datastructures ...@@ -93,7 +93,7 @@ RDS datastructures
================== ==================
.. _v4l2-rds-data: .. c:type:: v4l2_rds_data
.. tabularcolumns:: |p{2.5cm}|p{2.5cm}|p{12.5cm}| .. tabularcolumns:: |p{2.5cm}|p{2.5cm}|p{12.5cm}|
......
...@@ -21,7 +21,7 @@ Querying Capabilities ...@@ -21,7 +21,7 @@ Querying Capabilities
Devices supporting the SDR receiver interface set the Devices supporting the SDR receiver interface set the
``V4L2_CAP_SDR_CAPTURE`` and ``V4L2_CAP_TUNER`` flag in the ``V4L2_CAP_SDR_CAPTURE`` and ``V4L2_CAP_TUNER`` flag in the
``capabilities`` field of struct ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. That flag means the :ref:`VIDIOC_QUERYCAP` ioctl. That flag means the
device has an Analog to Digital Converter (ADC), which is a mandatory device has an Analog to Digital Converter (ADC), which is a mandatory
element for the SDR receiver. element for the SDR receiver.
...@@ -29,7 +29,7 @@ element for the SDR receiver. ...@@ -29,7 +29,7 @@ element for the SDR receiver.
Devices supporting the SDR transmitter interface set the Devices supporting the SDR transmitter interface set the
``V4L2_CAP_SDR_OUTPUT`` and ``V4L2_CAP_MODULATOR`` flag in the ``V4L2_CAP_SDR_OUTPUT`` and ``V4L2_CAP_MODULATOR`` flag in the
``capabilities`` field of struct ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. That flag means the :ref:`VIDIOC_QUERYCAP` ioctl. That flag means the
device has an Digital to Analog Converter (DAC), which is a mandatory device has an Digital to Analog Converter (DAC), which is a mandatory
element for the SDR transmitter. element for the SDR transmitter.
...@@ -67,18 +67,18 @@ basic :ref:`format` ioctls, the ...@@ -67,18 +67,18 @@ basic :ref:`format` ioctls, the
well. well.
To use the :ref:`format` ioctls applications set the ``type`` To use the :ref:`format` ioctls applications set the ``type``
field of a struct :ref:`v4l2_format <v4l2-format>` to field of a struct :c:type:`v4l2_format` to
``V4L2_BUF_TYPE_SDR_CAPTURE`` or ``V4L2_BUF_TYPE_SDR_OUTPUT`` and use ``V4L2_BUF_TYPE_SDR_CAPTURE`` or ``V4L2_BUF_TYPE_SDR_OUTPUT`` and use
the struct :ref:`v4l2_sdr_format <v4l2-sdr-format>` ``sdr`` member the struct :c:type:`v4l2_sdr_format` ``sdr`` member
of the ``fmt`` union as needed per the desired operation. Currently of the ``fmt`` union as needed per the desired operation. Currently
there is two fields, ``pixelformat`` and ``buffersize``, of struct there is two fields, ``pixelformat`` and ``buffersize``, of struct
struct :ref:`v4l2_sdr_format <v4l2-sdr-format>` which are used. struct :c:type:`v4l2_sdr_format` which are used.
Content of the ``pixelformat`` is V4L2 FourCC code of the data format. Content of the ``pixelformat`` is V4L2 FourCC code of the data format.
The ``buffersize`` field is maximum buffer size in bytes required for The ``buffersize`` field is maximum buffer size in bytes required for
data transfer, set by the driver in order to inform application. data transfer, set by the driver in order to inform application.
.. _v4l2-sdr-format: .. c:type:: v4l2_sdr_format
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
......
...@@ -34,7 +34,7 @@ Querying Capabilities ...@@ -34,7 +34,7 @@ Querying Capabilities
Devices supporting the sliced VBI capturing or output API set the Devices supporting the sliced VBI capturing or output API set the
``V4L2_CAP_SLICED_VBI_CAPTURE`` or ``V4L2_CAP_SLICED_VBI_OUTPUT`` flag ``V4L2_CAP_SLICED_VBI_CAPTURE`` or ``V4L2_CAP_SLICED_VBI_OUTPUT`` flag
respectively, in the ``capabilities`` field of struct respectively, in the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. At least one of the :ref:`VIDIOC_QUERYCAP` ioctl. At least one of the
read/write, streaming or asynchronous :ref:`I/O methods <io>` must be read/write, streaming or asynchronous :ref:`I/O methods <io>` must be
supported. Sliced VBI devices may have a tuner or modulator. supported. Sliced VBI devices may have a tuner or modulator.
...@@ -67,17 +67,17 @@ line 16 the hardware may be able to look for a VPS or Teletext signal, ...@@ -67,17 +67,17 @@ line 16 the hardware may be able to look for a VPS or Teletext signal,
but not both at the same time. but not both at the same time.
To determine the currently selected services applications set the To determine the currently selected services applications set the
``type`` field of struct :ref:`v4l2_format <v4l2-format>` to ``type`` field of struct :c:type:`v4l2_format` to
``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` or ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` or
``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT``, and the ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT``, and the
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl fills the ``fmt.sliced`` :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl fills the ``fmt.sliced``
member, a struct member, a struct
:ref:`v4l2_sliced_vbi_format <v4l2-sliced-vbi-format>`. :c:type:`v4l2_sliced_vbi_format`.
Applications can request different parameters by initializing or Applications can request different parameters by initializing or
modifying the ``fmt.sliced`` member and calling the modifying the ``fmt.sliced`` member and calling the
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl with a pointer to the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl with a pointer to the
:ref:`struct v4l2_format <v4l2-format>` structure. :c:type:`struct v4l2_format <v4l2_format>` structure.
The sliced VBI API is more complicated than the raw VBI API because the The sliced VBI API is more complicated than the raw VBI API because the
hardware must be told which VBI service to expect on each scan line. Not hardware must be told which VBI service to expect on each scan line. Not
...@@ -100,7 +100,7 @@ which may return ``EBUSY`` can be the ...@@ -100,7 +100,7 @@ which may return ``EBUSY`` can be the
:ref:`select() <func-select>` call. :ref:`select() <func-select>` call.
.. _v4l2-sliced-vbi-format: .. c:type:: v4l2_sliced_vbi_format
struct v4l2_sliced_vbi_format struct v4l2_sliced_vbi_format
----------------------------- -----------------------------
...@@ -233,7 +233,7 @@ struct v4l2_sliced_vbi_format ...@@ -233,7 +233,7 @@ struct v4l2_sliced_vbi_format
:ref:`VIDIOC_QBUF` and :ref:`VIDIOC_QBUF` and
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. Drivers set this field :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl. Drivers set this field
to the size of struct to the size of struct
:ref:`v4l2_sliced_vbi_data <v4l2-sliced-vbi-data>` times the :c:type:`v4l2_sliced_vbi_data` times the
number of non-zero elements in the returned ``service_lines`` number of non-zero elements in the returned ``service_lines``
array (that is the number of lines potentially carrying data). array (that is the number of lines potentially carrying data).
...@@ -376,14 +376,14 @@ Reading and writing sliced VBI data ...@@ -376,14 +376,14 @@ Reading and writing sliced VBI data
A single :ref:`read() <func-read>` or :ref:`write() <func-write>` A single :ref:`read() <func-read>` or :ref:`write() <func-write>`
call must pass all data belonging to one video frame. That is an array call must pass all data belonging to one video frame. That is an array
of :ref:`struct v4l2_sliced_vbi_data <v4l2-sliced-vbi-data>` structures with one or of :c:type:`struct v4l2_sliced_vbi_data <v4l2_sliced_vbi_data>` structures with one or
more elements and a total size not exceeding ``io_size`` bytes. Likewise more elements and a total size not exceeding ``io_size`` bytes. Likewise
in streaming I/O mode one buffer of ``io_size`` bytes must contain data in streaming I/O mode one buffer of ``io_size`` bytes must contain data
of one video frame. The ``id`` of unused of one video frame. The ``id`` of unused
:ref:`struct v4l2_sliced_vbi_data <v4l2-sliced-vbi-data>` elements must be zero. :c:type:`struct v4l2_sliced_vbi_data <v4l2_sliced_vbi_data>` elements must be zero.
.. _v4l2-sliced-vbi-data: .. c:type:: v4l2_sliced_vbi_data
struct v4l2_sliced_vbi_data struct v4l2_sliced_vbi_data
--------------------------- ---------------------------
...@@ -561,7 +561,7 @@ refer to the MPEG-2 specifications for details on those packet headers.) ...@@ -561,7 +561,7 @@ refer to the MPEG-2 specifications for details on those packet headers.)
The payload of the MPEG-2 *Private Stream 1 PES* packets that contain The payload of the MPEG-2 *Private Stream 1 PES* packets that contain
sliced VBI data is specified by struct sliced VBI data is specified by struct
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>`. The :c:type:`v4l2_mpeg_vbi_fmt_ivtv`. The
payload is variable length, depending on the actual number of lines of payload is variable length, depending on the actual number of lines of
sliced VBI data present in a video frame. The payload may be padded at sliced VBI data present in a video frame. The payload may be padded at
the end with unspecified fill bytes to align the end of the payload to a the end with unspecified fill bytes to align the end of the payload to a
...@@ -570,7 +570,7 @@ with 18 lines/field with 43 bytes of data/line and a 4 byte magic ...@@ -570,7 +570,7 @@ with 18 lines/field with 43 bytes of data/line and a 4 byte magic
number). number).
.. _v4l2-mpeg-vbi-fmt-ivtv: .. c:type:: v4l2_mpeg_vbi_fmt_ivtv
struct v4l2_mpeg_vbi_fmt_ivtv struct v4l2_mpeg_vbi_fmt_ivtv
----------------------------- -----------------------------
...@@ -604,7 +604,7 @@ struct v4l2_mpeg_vbi_fmt_ivtv ...@@ -604,7 +604,7 @@ struct v4l2_mpeg_vbi_fmt_ivtv
- .. row 3 - .. row 3
- -
- struct :ref:`v4l2_mpeg_vbi_itv0 <v4l2-mpeg-vbi-itv0>` - struct :c:type:`v4l2_mpeg_vbi_itv0`
- ``itv0`` - ``itv0``
...@@ -655,7 +655,7 @@ Magic Constants for struct v4l2_mpeg_vbi_fmt_ivtv magic field ...@@ -655,7 +655,7 @@ Magic Constants for struct v4l2_mpeg_vbi_fmt_ivtv magic field
- "itv0" - "itv0"
- Indicates the ``itv0`` member of the union in struct - Indicates the ``itv0`` member of the union in struct
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is :c:type:`v4l2_mpeg_vbi_fmt_ivtv` is
valid. valid.
- .. row 3 - .. row 3
...@@ -665,12 +665,12 @@ Magic Constants for struct v4l2_mpeg_vbi_fmt_ivtv magic field ...@@ -665,12 +665,12 @@ Magic Constants for struct v4l2_mpeg_vbi_fmt_ivtv magic field
- "ITV0" - "ITV0"
- Indicates the ``ITV0`` member of the union in struct - Indicates the ``ITV0`` member of the union in struct
:ref:`v4l2_mpeg_vbi_fmt_ivtv <v4l2-mpeg-vbi-fmt-ivtv>` is :c:type:`v4l2_mpeg_vbi_fmt_ivtv` is
valid and that 36 lines of sliced VBI data are present. valid and that 36 lines of sliced VBI data are present.
.. _v4l2-mpeg-vbi-itv0: .. c:type:: v4l2_mpeg_vbi_itv0
struct v4l2_mpeg_vbi_itv0 struct v4l2_mpeg_vbi_itv0
------------------------- -------------------------
...@@ -711,7 +711,7 @@ struct v4l2_mpeg_vbi_itv0 ...@@ -711,7 +711,7 @@ struct v4l2_mpeg_vbi_itv0
- .. row 2 - .. row 2
- struct - struct
:ref:`v4l2_mpeg_vbi_itv0_line <v4l2-mpeg-vbi-itv0-line>` :c:type:`v4l2_mpeg_vbi_itv0_line`
- ``line``\ [35] - ``line``\ [35]
...@@ -745,7 +745,7 @@ struct v4l2_mpeg_vbi_ITV0 ...@@ -745,7 +745,7 @@ struct v4l2_mpeg_vbi_ITV0
- .. row 1 - .. row 1
- struct - struct
:ref:`v4l2_mpeg_vbi_itv0_line <v4l2-mpeg-vbi-itv0-line>` :c:type:`v4l2_mpeg_vbi_itv0_line`
- ``line``\ [36] - ``line``\ [36]
...@@ -756,7 +756,7 @@ struct v4l2_mpeg_vbi_ITV0 ...@@ -756,7 +756,7 @@ struct v4l2_mpeg_vbi_ITV0
.. _v4l2-mpeg-vbi-itv0-line: .. c:type:: v4l2_mpeg_vbi_itv0_line
struct v4l2_mpeg_vbi_itv0_line struct v4l2_mpeg_vbi_itv0_line
------------------------------ ------------------------------
......
...@@ -341,7 +341,7 @@ It can also be used as part of digital zoom implementations to select ...@@ -341,7 +341,7 @@ It can also be used as part of digital zoom implementations to select
the area of the image that will be scaled up. the area of the image that will be scaled up.
Crop settings are defined by a crop rectangle and represented in a Crop settings are defined by a crop rectangle and represented in a
struct :ref:`v4l2_rect <v4l2-rect>` by the coordinates of the top struct :c:type:`v4l2_rect` by the coordinates of the top
left corner and the rectangle size. Both the coordinates and sizes are left corner and the rectangle size. Both the coordinates and sizes are
expressed in pixels. expressed in pixels.
...@@ -357,7 +357,7 @@ sub-device for processing. ...@@ -357,7 +357,7 @@ sub-device for processing.
The scaling operation changes the size of the image by scaling it to new The scaling operation changes the size of the image by scaling it to new
dimensions. The scaling ratio isn't specified explicitly, but is implied dimensions. The scaling ratio isn't specified explicitly, but is implied
from the original and scaled image sizes. Both sizes are represented by from the original and scaled image sizes. Both sizes are represented by
struct :ref:`v4l2_rect <v4l2-rect>`. struct :c:type:`v4l2_rect`.
Scaling support is optional. When supported by a subdev, the crop Scaling support is optional. When supported by a subdev, the crop
rectangle on the subdev's sink pad is scaled to the size configured rectangle on the subdev's sink pad is scaled to the size configured
......
...@@ -41,7 +41,7 @@ Querying Capabilities ...@@ -41,7 +41,7 @@ Querying Capabilities
Devices supporting the touch interface set the ``V4L2_CAP_VIDEO_CAPTURE`` flag Devices supporting the touch interface set the ``V4L2_CAP_VIDEO_CAPTURE`` flag
and the ``V4L2_CAP_TOUCH`` flag in the ``capabilities`` field of and the ``V4L2_CAP_TOUCH`` flag in the ``capabilities`` field of
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl. :ref:`VIDIOC_QUERYCAP` ioctl.
At least one of the read/write or streaming I/O methods must be At least one of the read/write or streaming I/O methods must be
......
...@@ -88,7 +88,7 @@ The V4L ``VIDIOCGCAP`` ioctl is equivalent to V4L2's ...@@ -88,7 +88,7 @@ The V4L ``VIDIOCGCAP`` ioctl is equivalent to V4L2's
:ref:`VIDIOC_QUERYCAP`. :ref:`VIDIOC_QUERYCAP`.
The ``name`` field in struct :c:type:`struct video_capability` became The ``name`` field in struct :c:type:`struct video_capability` became
``card`` in struct :ref:`v4l2_capability <v4l2-capability>`, ``type`` ``card`` in struct :c:type:`v4l2_capability`, ``type``
was replaced by ``capabilities``. Note V4L2 does not distinguish between was replaced by ``capabilities``. Note V4L2 does not distinguish between
device types like this, better think of basic video input, video output device types like this, better think of basic video input, video output
and radio devices supporting a set of related functions like video and radio devices supporting a set of related functions like video
...@@ -108,7 +108,7 @@ introduction. ...@@ -108,7 +108,7 @@ introduction.
- ``struct video_capability`` ``type`` - ``struct video_capability`` ``type``
- struct :ref:`v4l2_capability <v4l2-capability>` - struct :c:type:`v4l2_capability`
``capabilities`` flags ``capabilities`` flags
- Purpose - Purpose
...@@ -150,7 +150,7 @@ introduction. ...@@ -150,7 +150,7 @@ introduction.
- ``VID_TYPE_CHROMAKEY`` - ``VID_TYPE_CHROMAKEY``
- ``V4L2_FBUF_CAP_CHROMAKEY`` in field ``capability`` of struct - ``V4L2_FBUF_CAP_CHROMAKEY`` in field ``capability`` of struct
:ref:`v4l2_framebuffer <v4l2-framebuffer>` :c:type:`v4l2_framebuffer`
- Whether chromakey overlay is supported. For more information on - Whether chromakey overlay is supported. For more information on
overlay see :ref:`overlay`. overlay see :ref:`overlay`.
...@@ -161,7 +161,7 @@ introduction. ...@@ -161,7 +161,7 @@ introduction.
- ``V4L2_FBUF_CAP_LIST_CLIPPING`` and - ``V4L2_FBUF_CAP_LIST_CLIPPING`` and
``V4L2_FBUF_CAP_BITMAP_CLIPPING`` in field ``capability`` of ``V4L2_FBUF_CAP_BITMAP_CLIPPING`` in field ``capability`` of
struct :ref:`v4l2_framebuffer <v4l2-framebuffer>` struct :c:type:`v4l2_framebuffer`
- Whether clipping the overlaid image is supported, see - Whether clipping the overlaid image is supported, see
:ref:`overlay`. :ref:`overlay`.
...@@ -171,7 +171,7 @@ introduction. ...@@ -171,7 +171,7 @@ introduction.
- ``VID_TYPE_FRAMERAM`` - ``VID_TYPE_FRAMERAM``
- ``V4L2_FBUF_CAP_EXTERNOVERLAY`` *not set* in field ``capability`` - ``V4L2_FBUF_CAP_EXTERNOVERLAY`` *not set* in field ``capability``
of struct :ref:`v4l2_framebuffer <v4l2-framebuffer>` of struct :c:type:`v4l2_framebuffer`
- Whether overlay overwrites frame buffer memory, see - Whether overlay overwrites frame buffer memory, see
:ref:`overlay`. :ref:`overlay`.
...@@ -269,7 +269,7 @@ device. The equivalent V4L2 ioctls are ...@@ -269,7 +269,7 @@ device. The equivalent V4L2 ioctls are
:ref:`VIDIOC_ENUMINPUT`, :ref:`VIDIOC_ENUMINPUT`,
:ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` and
:ref:`VIDIOC_S_INPUT <VIDIOC_G_INPUT>` using struct :ref:`VIDIOC_S_INPUT <VIDIOC_G_INPUT>` using struct
:ref:`v4l2_input <v4l2-input>` as discussed in :ref:`video`. :c:type:`v4l2_input` as discussed in :ref:`video`.
The ``channel`` field counting inputs was renamed to ``index``, the The ``channel`` field counting inputs was renamed to ``index``, the
video input types were renamed as follows: video input types were renamed as follows:
...@@ -285,7 +285,7 @@ video input types were renamed as follows: ...@@ -285,7 +285,7 @@ video input types were renamed as follows:
- struct :c:type:`struct video_channel` ``type`` - struct :c:type:`struct video_channel` ``type``
- struct :ref:`v4l2_input <v4l2-input>` ``type`` - struct :c:type:`v4l2_input` ``type``
- .. row 2 - .. row 2
...@@ -305,7 +305,7 @@ input, V4L2 assumes each video input is connected to at most one tuner. ...@@ -305,7 +305,7 @@ input, V4L2 assumes each video input is connected to at most one tuner.
However a tuner can have more than one input, i. e. RF connectors, and a However a tuner can have more than one input, i. e. RF connectors, and a
device can have multiple tuners. The index number of the tuner device can have multiple tuners. The index number of the tuner
associated with the input, if any, is stored in field ``tuner`` of associated with the input, if any, is stored in field ``tuner`` of
struct :ref:`v4l2_input <v4l2-input>`. Enumeration of tuners is struct :c:type:`v4l2_input`. Enumeration of tuners is
discussed in :ref:`tuner`. discussed in :ref:`tuner`.
The redundant ``VIDEO_VC_TUNER`` flag was dropped. Video inputs The redundant ``VIDEO_VC_TUNER`` flag was dropped. Video inputs
...@@ -332,7 +332,7 @@ The V4L ``VIDIOCGTUNER`` and ``VIDIOCSTUNER`` ioctl and struct ...@@ -332,7 +332,7 @@ The V4L ``VIDIOCGTUNER`` and ``VIDIOCSTUNER`` ioctl and struct
V4L TV or radio device. The equivalent V4L2 ioctls are V4L TV or radio device. The equivalent V4L2 ioctls are
:ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` and :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` and
:ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` using struct :ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` using struct
:ref:`v4l2_tuner <v4l2-tuner>`. Tuners are covered in :ref:`tuner`. :c:type:`v4l2_tuner`. Tuners are covered in :ref:`tuner`.
The ``tuner`` field counting tuners was renamed to ``index``. The fields The ``tuner`` field counting tuners was renamed to ``index``. The fields
``name``, ``rangelow`` and ``rangehigh`` remained unchanged. ``name``, ``rangelow`` and ``rangehigh`` remained unchanged.
...@@ -340,7 +340,7 @@ The ``tuner`` field counting tuners was renamed to ``index``. The fields ...@@ -340,7 +340,7 @@ The ``tuner`` field counting tuners was renamed to ``index``. The fields
The ``VIDEO_TUNER_PAL``, ``VIDEO_TUNER_NTSC`` and ``VIDEO_TUNER_SECAM`` The ``VIDEO_TUNER_PAL``, ``VIDEO_TUNER_NTSC`` and ``VIDEO_TUNER_SECAM``
flags indicating the supported video standards were dropped. This flags indicating the supported video standards were dropped. This
information is now contained in the associated struct information is now contained in the associated struct
:ref:`v4l2_input <v4l2-input>`. No replacement exists for the :c:type:`v4l2_input`. No replacement exists for the
``VIDEO_TUNER_NORM`` flag indicating whether the video standard can be ``VIDEO_TUNER_NORM`` flag indicating whether the video standard can be
switched. The ``mode`` field to select a different video standard was switched. The ``mode`` field to select a different video standard was
replaced by a whole new set of ioctls and structures described in replaced by a whole new set of ioctls and structures described in
...@@ -353,18 +353,18 @@ Japan with numbers 3-6 (sic). ...@@ -353,18 +353,18 @@ Japan with numbers 3-6 (sic).
The ``VIDEO_TUNER_STEREO_ON`` flag indicating stereo reception became The ``VIDEO_TUNER_STEREO_ON`` flag indicating stereo reception became
``V4L2_TUNER_SUB_STEREO`` in field ``rxsubchans``. This field also ``V4L2_TUNER_SUB_STEREO`` in field ``rxsubchans``. This field also
permits the detection of monaural and bilingual audio, see the permits the detection of monaural and bilingual audio, see the
definition of struct :ref:`v4l2_tuner <v4l2-tuner>` for details. definition of struct :c:type:`v4l2_tuner` for details.
Presently no replacement exists for the ``VIDEO_TUNER_RDS_ON`` and Presently no replacement exists for the ``VIDEO_TUNER_RDS_ON`` and
``VIDEO_TUNER_MBS_ON`` flags. ``VIDEO_TUNER_MBS_ON`` flags.
The ``VIDEO_TUNER_LOW`` flag was renamed to ``V4L2_TUNER_CAP_LOW`` in The ``VIDEO_TUNER_LOW`` flag was renamed to ``V4L2_TUNER_CAP_LOW`` in
the struct :ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field. the struct :c:type:`v4l2_tuner` ``capability`` field.
The ``VIDIOCGFREQ`` and ``VIDIOCSFREQ`` ioctl to change the tuner The ``VIDIOCGFREQ`` and ``VIDIOCSFREQ`` ioctl to change the tuner
frequency where renamed to frequency where renamed to
:ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` and :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` and
:ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>`. They take a pointer :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>`. They take a pointer
to a struct :ref:`v4l2_frequency <v4l2-frequency>` instead of an to a struct :c:type:`v4l2_frequency` instead of an
unsigned long integer. unsigned long integer.
...@@ -434,7 +434,7 @@ The ``depth`` (average number of bits per pixel) of a video image is ...@@ -434,7 +434,7 @@ The ``depth`` (average number of bits per pixel) of a video image is
implied by the selected image format. V4L2 does not explicitly provide implied by the selected image format. V4L2 does not explicitly provide
such information assuming applications recognizing the format are aware such information assuming applications recognizing the format are aware
of the image depth and others need not know. The ``palette`` field moved of the image depth and others need not know. The ``palette`` field moved
into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`: into the struct :c:type:`v4l2_pix_format`:
...@@ -447,7 +447,7 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`: ...@@ -447,7 +447,7 @@ into the struct :ref:`v4l2_pix_format <v4l2-pix-format>`:
- struct :c:type:`struct video_picture` ``palette`` - struct :c:type:`struct video_picture` ``palette``
- struct :ref:`v4l2_pix_format <v4l2-pix-format>` ``pixfmt`` - struct :c:type:`v4l2_pix_format` ``pixfmt``
- .. row 2 - .. row 2
...@@ -558,7 +558,7 @@ The ``VIDIOCGAUDIO`` and ``VIDIOCSAUDIO`` ioctl and struct ...@@ -558,7 +558,7 @@ The ``VIDIOCGAUDIO`` and ``VIDIOCSAUDIO`` ioctl and struct
of a V4L device. The equivalent V4L2 ioctls are of a V4L device. The equivalent V4L2 ioctls are
:ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` and :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` and
:ref:`VIDIOC_S_AUDIO <VIDIOC_G_AUDIO>` using struct :ref:`VIDIOC_S_AUDIO <VIDIOC_G_AUDIO>` using struct
:ref:`v4l2_audio <v4l2-audio>` as discussed in :ref:`audio`. :c:type:`v4l2_audio` as discussed in :ref:`audio`.
The ``audio`` "channel number" field counting audio inputs was renamed The ``audio`` "channel number" field counting audio inputs was renamed
to ``index``. to ``index``.
...@@ -571,10 +571,10 @@ standard is BTSC ``VIDEO_SOUND_LANG2`` refers to SAP and ...@@ -571,10 +571,10 @@ standard is BTSC ``VIDEO_SOUND_LANG2`` refers to SAP and
specification, there is no way to query the selected mode. On specification, there is no way to query the selected mode. On
``VIDIOCGAUDIO`` the driver returns the *actually received* audio ``VIDIOCGAUDIO`` the driver returns the *actually received* audio
programmes in this field. In the V4L2 API this information is stored in programmes in this field. In the V4L2 API this information is stored in
the struct :ref:`v4l2_tuner <v4l2-tuner>` ``rxsubchans`` and the struct :c:type:`v4l2_tuner` ``rxsubchans`` and
``audmode`` fields, respectively. See :ref:`tuner` for more ``audmode`` fields, respectively. See :ref:`tuner` for more
information on tuners. Related to audio modes struct information on tuners. Related to audio modes struct
:ref:`v4l2_audio <v4l2-audio>` also reports if this is a mono or :c:type:`v4l2_audio` also reports if this is a mono or
stereo input, regardless if the source is a tuner. stereo input, regardless if the source is a tuner.
The following fields where replaced by V4L2 controls accessible with the The following fields where replaced by V4L2 controls accessible with the
...@@ -645,8 +645,8 @@ The V4L2 ioctls equivalent to ``VIDIOCGFBUF`` and ``VIDIOCSFBUF`` are ...@@ -645,8 +645,8 @@ The V4L2 ioctls equivalent to ``VIDIOCGFBUF`` and ``VIDIOCSFBUF`` are
:c:type:`struct video_buffer` remained unchanged, except V4L2 defines :c:type:`struct video_buffer` remained unchanged, except V4L2 defines
a flag to indicate non-destructive overlays instead of a ``NULL`` a flag to indicate non-destructive overlays instead of a ``NULL``
pointer. All other fields moved into the struct pointer. All other fields moved into the struct
:ref:`v4l2_pix_format <v4l2-pix-format>` ``fmt`` substructure of :c:type:`v4l2_pix_format` ``fmt`` substructure of
struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`. The ``depth`` struct :c:type:`v4l2_framebuffer`. The ``depth``
field was replaced by ``pixelformat``. See :ref:`pixfmt-rgb` for a field was replaced by ``pixelformat``. See :ref:`pixfmt-rgb` for a
list of RGB formats and their respective color depths. list of RGB formats and their respective color depths.
...@@ -654,23 +654,23 @@ Instead of the special ioctls ``VIDIOCGWIN`` and ``VIDIOCSWIN`` V4L2 ...@@ -654,23 +654,23 @@ Instead of the special ioctls ``VIDIOCGWIN`` and ``VIDIOCSWIN`` V4L2
uses the general-purpose data format negotiation ioctls uses the general-purpose data format negotiation ioctls
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. They take a pointer to a struct :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. They take a pointer to a struct
:ref:`v4l2_format <v4l2-format>` as argument. Here the ``win`` member :c:type:`v4l2_format` as argument. Here the ``win`` member
of the ``fmt`` union is used, a struct of the ``fmt`` union is used, a struct
:ref:`v4l2_window <v4l2-window>`. :c:type:`v4l2_window`.
The ``x``, ``y``, ``width`` and ``height`` fields of struct The ``x``, ``y``, ``width`` and ``height`` fields of struct
:c:type:`struct video_window` moved into struct :c:type:`struct video_window` moved into struct
:ref:`v4l2_rect <v4l2-rect>` substructure ``w`` of struct :c:type:`v4l2_rect` substructure ``w`` of struct
:c:type:`struct v4l2_window`. The ``chromakey``, ``clips``, and :c:type:`struct v4l2_window`. The ``chromakey``, ``clips``, and
``clipcount`` fields remained unchanged. Struct ``clipcount`` fields remained unchanged. Struct
:c:type:`struct video_clip` was renamed to struct :c:type:`struct video_clip` was renamed to struct
:ref:`v4l2_clip <v4l2-clip>`, also containing a struct :c:type:`v4l2_clip`, also containing a struct
:c:type:`struct v4l2_rect`, but the semantics are still the same. :c:type:`struct v4l2_rect`, but the semantics are still the same.
The ``VIDEO_WINDOW_INTERLACE`` flag was dropped. Instead applications The ``VIDEO_WINDOW_INTERLACE`` flag was dropped. Instead applications
must set the ``field`` field to ``V4L2_FIELD_ANY`` or must set the ``field`` field to ``V4L2_FIELD_ANY`` or
``V4L2_FIELD_INTERLACED``. The ``VIDEO_WINDOW_CHROMAKEY`` flag moved ``V4L2_FIELD_INTERLACED``. The ``VIDEO_WINDOW_CHROMAKEY`` flag moved
into struct :ref:`v4l2_framebuffer <v4l2-framebuffer>`, under the new into struct :c:type:`v4l2_framebuffer`, under the new
name ``V4L2_FBUF_FLAG_CHROMAKEY``. name ``V4L2_FBUF_FLAG_CHROMAKEY``.
In V4L, storing a bitmap pointer in ``clips`` and setting ``clipcount`` In V4L, storing a bitmap pointer in ``clips`` and setting ``clipcount``
...@@ -691,12 +691,12 @@ To capture only a subsection of the full picture V4L defines the ...@@ -691,12 +691,12 @@ To capture only a subsection of the full picture V4L defines the
:c:type:`struct video_capture`. The equivalent V4L2 ioctls are :c:type:`struct video_capture`. The equivalent V4L2 ioctls are
:ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` and
:ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` using struct :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` using struct
:ref:`v4l2_crop <v4l2-crop>`, and the related :c:type:`v4l2_crop`, and the related
:ref:`VIDIOC_CROPCAP` ioctl. This is a rather :ref:`VIDIOC_CROPCAP` ioctl. This is a rather
complex matter, see :ref:`crop` for details. complex matter, see :ref:`crop` for details.
The ``x``, ``y``, ``width`` and ``height`` fields moved into struct The ``x``, ``y``, ``width`` and ``height`` fields moved into struct
:ref:`v4l2_rect <v4l2-rect>` substructure ``c`` of struct :c:type:`v4l2_rect` substructure ``c`` of struct
:c:type:`struct v4l2_crop`. The ``decimation`` field was dropped. In :c:type:`struct v4l2_crop`. The ``decimation`` field was dropped. In
the V4L2 API the scaling factor is implied by the size of the cropping the V4L2 API the scaling factor is implied by the size of the cropping
rectangle and the size of the captured or overlaid image. rectangle and the size of the captured or overlaid image.
...@@ -704,8 +704,8 @@ rectangle and the size of the captured or overlaid image. ...@@ -704,8 +704,8 @@ rectangle and the size of the captured or overlaid image.
The ``VIDEO_CAPTURE_ODD`` and ``VIDEO_CAPTURE_EVEN`` flags to capture The ``VIDEO_CAPTURE_ODD`` and ``VIDEO_CAPTURE_EVEN`` flags to capture
only the odd or even field, respectively, were replaced by only the odd or even field, respectively, were replaced by
``V4L2_FIELD_TOP`` and ``V4L2_FIELD_BOTTOM`` in the field named ``V4L2_FIELD_TOP`` and ``V4L2_FIELD_BOTTOM`` in the field named
``field`` of struct :ref:`v4l2_pix_format <v4l2-pix-format>` and ``field`` of struct :c:type:`v4l2_pix_format` and
struct :ref:`v4l2_window <v4l2-window>`. These structures are used to struct :c:type:`v4l2_window`. These structures are used to
select a capture or overlay format with the select a capture or overlay format with the
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl.
...@@ -730,8 +730,8 @@ To select an image format and size, V4L provides the ``VIDIOCSPICT`` and ...@@ -730,8 +730,8 @@ To select an image format and size, V4L provides the ``VIDIOCSPICT`` and
``VIDIOCSWIN`` ioctls. V4L2 uses the general-purpose data format ``VIDIOCSWIN`` ioctls. V4L2 uses the general-purpose data format
negotiation ioctls :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and negotiation ioctls :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. They take a pointer to a struct :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`. They take a pointer to a struct
:ref:`v4l2_format <v4l2-format>` as argument, here the struct :c:type:`v4l2_format` as argument, here the struct
:ref:`v4l2_pix_format <v4l2-pix-format>` named ``pix`` of its :c:type:`v4l2_pix_format` named ``pix`` of its
``fmt`` union is used. ``fmt`` union is used.
For more information about the V4L2 read interface see :ref:`rw`. For more information about the V4L2 read interface see :ref:`rw`.
...@@ -838,7 +838,7 @@ with the following parameters: ...@@ -838,7 +838,7 @@ with the following parameters:
- .. row 1 - .. row 1
- struct :ref:`v4l2_vbi_format <v4l2-vbi-format>` - struct :c:type:`v4l2_vbi_format`
- V4L, BTTV driver - V4L, BTTV driver
...@@ -896,7 +896,7 @@ interface specified in :ref:`raw-vbi`. ...@@ -896,7 +896,7 @@ interface specified in :ref:`raw-vbi`.
An ``offset`` field does not exist, ``sample_format`` is supposed to be An ``offset`` field does not exist, ``sample_format`` is supposed to be
``VIDEO_PALETTE_RAW``, equivalent to ``V4L2_PIX_FMT_GREY``. The ``VIDEO_PALETTE_RAW``, equivalent to ``V4L2_PIX_FMT_GREY``. The
remaining fields are probably equivalent to struct remaining fields are probably equivalent to struct
:ref:`v4l2_vbi_format <v4l2-vbi-format>`. :c:type:`v4l2_vbi_format`.
Apparently only the Zoran (ZR 36120) driver implements these ioctls. The Apparently only the Zoran (ZR 36120) driver implements these ioctls. The
semantics differ from those specified for V4L2 in two ways. The semantics differ from those specified for V4L2 in two ways. The
......
...@@ -19,7 +19,7 @@ exporting V4L2 buffers as DMABUF file descriptors. ...@@ -19,7 +19,7 @@ exporting V4L2 buffers as DMABUF file descriptors.
Input and output devices support the streaming I/O method when the Input and output devices support the streaming I/O method when the
``V4L2_CAP_STREAMING`` flag in the ``capabilities`` field of struct ``V4L2_CAP_STREAMING`` flag in the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP <VIDIOC_QUERYCAP>` ioctl is set. Whether :ref:`VIDIOC_QUERYCAP <VIDIOC_QUERYCAP>` ioctl is set. Whether
importing DMA buffers through DMABUF file descriptors is supported is importing DMA buffers through DMABUF file descriptors is supported is
determined by calling the :ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>` determined by calling the :ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>`
...@@ -31,8 +31,8 @@ DRM). Buffers (planes) are allocated by a driver on behalf of an ...@@ -31,8 +31,8 @@ DRM). Buffers (planes) are allocated by a driver on behalf of an
application. Next, these buffers are exported to the application as file application. Next, these buffers are exported to the application as file
descriptors using an API which is specific for an allocator driver. Only descriptors using an API which is specific for an allocator driver. Only
such file descriptor are exchanged. The descriptors and meta-information such file descriptor are exchanged. The descriptors and meta-information
are passed in struct :ref:`v4l2_buffer <v4l2-buffer>` (or in struct are passed in struct :c:type:`v4l2_buffer` (or in struct
:ref:`v4l2_plane <v4l2-plane>` in the multi-planar API case). The :c:type:`v4l2_plane` in the multi-planar API case). The
driver must be switched into DMABUF I/O mode by calling the driver must be switched into DMABUF I/O mode by calling the
:ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>` with the desired buffer type. :ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>` with the desired buffer type.
...@@ -151,7 +151,7 @@ To start and stop capturing or displaying applications call the ...@@ -151,7 +151,7 @@ To start and stop capturing or displaying applications call the
both queues and unlocks all buffers as a side effect. Since there is no both queues and unlocks all buffers as a side effect. Since there is no
notion of doing anything "now" on a multitasking system, if an notion of doing anything "now" on a multitasking system, if an
application needs to synchronize with another event it should examine application needs to synchronize with another event it should examine
the struct :ref:`v4l2_buffer <v4l2-buffer>` ``timestamp`` of captured or the struct :c:type:`v4l2_buffer` ``timestamp`` of captured or
outputted buffers. outputted buffers.
Drivers implementing DMABUF importing I/O must support the Drivers implementing DMABUF importing I/O must support the
......
...@@ -49,7 +49,7 @@ control). This is needed since it is often required to atomically change ...@@ -49,7 +49,7 @@ control). This is needed since it is often required to atomically change
several controls at once. several controls at once.
Each of the new ioctls expects a pointer to a struct Each of the new ioctls expects a pointer to a struct
:ref:`v4l2_ext_controls <v4l2-ext-controls>`. This structure :c:type:`v4l2_ext_controls`. This structure
contains a pointer to the control array, a count of the number of contains a pointer to the control array, a count of the number of
controls in that array and a control class. Control classes are used to controls in that array and a control class. Control classes are used to
group similar controls into a single class. For example, control class group similar controls into a single class. For example, control class
...@@ -65,12 +65,12 @@ It is also possible to use an empty control array (``count`` == 0) to check ...@@ -65,12 +65,12 @@ It is also possible to use an empty control array (``count`` == 0) to check
whether the specified control class is supported. whether the specified control class is supported.
The control array is a struct The control array is a struct
:ref:`v4l2_ext_control <v4l2-ext-control>` array. The :c:type:`v4l2_ext_control` array. The
:ref:`struct v4l2_ext_control <v4l2-ext-control>` structure is very similar to :c:type:`struct v4l2_ext_control <v4l2_ext_control>` structure is very similar to
struct :ref:`v4l2_control <v4l2-control>`, except for the fact that struct :c:type:`v4l2_control`, except for the fact that
it also allows for 64-bit values and pointers to be passed. it also allows for 64-bit values and pointers to be passed.
Since the struct :ref:`v4l2_ext_control <v4l2-ext-control>` supports Since the struct :c:type:`v4l2_ext_control` supports
pointers it is now also possible to have controls with compound types pointers it is now also possible to have controls with compound types
such as N-dimensional arrays and/or structures. You need to specify the such as N-dimensional arrays and/or structures. You need to specify the
``V4L2_CTRL_FLAG_NEXT_COMPOUND`` when enumerating controls to actually ``V4L2_CTRL_FLAG_NEXT_COMPOUND`` when enumerating controls to actually
......
...@@ -47,7 +47,7 @@ clearer. ...@@ -47,7 +47,7 @@ clearer.
All video capture and output devices must report the current field All video capture and output devices must report the current field
order. Some drivers may permit the selection of a different order, to order. Some drivers may permit the selection of a different order, to
this end applications initialize the ``field`` field of struct this end applications initialize the ``field`` field of struct
:ref:`v4l2_pix_format <v4l2-pix-format>` before calling the :c:type:`v4l2_pix_format` before calling the
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. If this is not desired it :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl. If this is not desired it
should have the value ``V4L2_FIELD_ANY`` (0). should have the value ``V4L2_FIELD_ANY`` (0).
...@@ -80,7 +80,7 @@ enum v4l2_field ...@@ -80,7 +80,7 @@ enum v4l2_field
driver must choose one of the possible field orders during driver must choose one of the possible field orders during
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` or
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`. struct :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`. struct
:ref:`v4l2_buffer <v4l2-buffer>` ``field`` can never be :c:type:`v4l2_buffer` ``field`` can never be
``V4L2_FIELD_ANY``. ``V4L2_FIELD_ANY``.
- .. row 2 - .. row 2
...@@ -156,12 +156,12 @@ enum v4l2_field ...@@ -156,12 +156,12 @@ enum v4l2_field
temporal order, i. e. the older one first. To indicate the field temporal order, i. e. the older one first. To indicate the field
parity (whether the current field is a top or bottom field) the parity (whether the current field is a top or bottom field) the
driver or application, depending on data direction, must set driver or application, depending on data direction, must set
struct :ref:`v4l2_buffer <v4l2-buffer>` ``field`` to struct :c:type:`v4l2_buffer` ``field`` to
``V4L2_FIELD_TOP`` or ``V4L2_FIELD_BOTTOM``. Any two successive ``V4L2_FIELD_TOP`` or ``V4L2_FIELD_BOTTOM``. Any two successive
fields pair to build a frame. If fields are successive, without fields pair to build a frame. If fields are successive, without
any dropped fields between them (fields can drop individually), any dropped fields between them (fields can drop individually),
can be determined from the struct can be determined from the struct
:ref:`v4l2_buffer <v4l2-buffer>` ``sequence`` field. This :c:type:`v4l2_buffer` ``sequence`` field. This
format cannot be selected when using the read/write I/O method format cannot be selected when using the read/write I/O method
since there is no way to communicate if a field was a top or since there is no way to communicate if a field was a top or
bottom field. bottom field.
......
...@@ -22,7 +22,7 @@ to satisfy the request. Of course applications can also just query the ...@@ -22,7 +22,7 @@ to satisfy the request. Of course applications can also just query the
current selection. current selection.
A single mechanism exists to negotiate all data formats using the A single mechanism exists to negotiate all data formats using the
aggregate struct :ref:`v4l2_format <v4l2-format>` and the aggregate struct :c:type:`v4l2_format` and the
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls. Additionally the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls. Additionally the
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl can be used to examine :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl can be used to examine
......
...@@ -37,9 +37,9 @@ Arguments ...@@ -37,9 +37,9 @@ Arguments
``length`` ``length``
Length of the memory area to map. This must be the same value as Length of the memory area to map. This must be the same value as
returned by the driver in the struct returned by the driver in the struct
:ref:`v4l2_buffer <v4l2-buffer>` ``length`` field for the :c:type:`v4l2_buffer` ``length`` field for the
single-planar API, and the same value as returned by the driver in single-planar API, and the same value as returned by the driver in
the struct :ref:`v4l2_plane <v4l2-plane>` ``length`` field for the struct :c:type:`v4l2_plane` ``length`` field for
the multi-planar API. the multi-planar API.
``prot`` ``prot``
...@@ -92,9 +92,9 @@ Arguments ...@@ -92,9 +92,9 @@ Arguments
``offset`` ``offset``
Offset of the buffer in device memory. This must be the same value Offset of the buffer in device memory. This must be the same value
as returned by the driver in the struct as returned by the driver in the struct
:ref:`v4l2_buffer <v4l2-buffer>` ``m`` union ``offset`` field for :c:type:`v4l2_buffer` ``m`` union ``offset`` field for
the single-planar API, and the same value as returned by the driver the single-planar API, and the same value as returned by the driver
in the struct :ref:`v4l2_plane <v4l2-plane>` ``m`` union in the struct :c:type:`v4l2_plane` ``m`` union
``mem_offset`` field for the multi-planar API. ``mem_offset`` field for the multi-planar API.
......
...@@ -34,9 +34,9 @@ Arguments ...@@ -34,9 +34,9 @@ Arguments
``length`` ``length``
Length of the mapped buffer. This must be the same value as given to Length of the mapped buffer. This must be the same value as given to
:ref:`mmap() <func-mmap>` and returned by the driver in the struct :ref:`mmap() <func-mmap>` and returned by the driver in the struct
:ref:`v4l2_buffer <v4l2-buffer>` ``length`` field for the :c:type:`v4l2_buffer` ``length`` field for the
single-planar API and in the struct single-planar API and in the struct
:ref:`v4l2_plane <v4l2-plane>` ``length`` field for the :c:type:`v4l2_plane` ``length`` field for the
multi-planar API. multi-planar API.
......
...@@ -45,7 +45,7 @@ renamed to :ref:`VIDIOC_ENUMSTD`, ...@@ -45,7 +45,7 @@ renamed to :ref:`VIDIOC_ENUMSTD`,
Codec API was released. Codec API was released.
1998-11-08: Many minor changes. Most symbols have been renamed. Some 1998-11-08: Many minor changes. Most symbols have been renamed. Some
material changes to struct :ref:`v4l2_capability <v4l2-capability>`. material changes to struct :c:type:`v4l2_capability`.
1998-11-12: The read/write directon of some ioctls was misdefined. 1998-11-12: The read/write directon of some ioctls was misdefined.
...@@ -117,7 +117,7 @@ to simplify the API, while making it more extensible and following ...@@ -117,7 +117,7 @@ to simplify the API, while making it more extensible and following
common Linux driver API conventions. common Linux driver API conventions.
1. Some typos in ``V4L2_FMT_FLAG`` symbols were fixed. struct 1. Some typos in ``V4L2_FMT_FLAG`` symbols were fixed. struct
:ref:`v4l2_clip <v4l2-clip>` was changed for compatibility with :c:type:`v4l2_clip` was changed for compatibility with
v4l. (1999-08-30) v4l. (1999-08-30)
2. ``V4L2_TUNER_SUB_LANG1`` was added. (1999-09-05) 2. ``V4L2_TUNER_SUB_LANG1`` was added. (1999-09-05)
...@@ -152,14 +152,14 @@ common Linux driver API conventions. ...@@ -152,14 +152,14 @@ common Linux driver API conventions.
``VIDIOC_G_INFMT``, ``VIDIOC_S_OUTFMT``, ``VIDIOC_G_OUTFMT``, ``VIDIOC_G_INFMT``, ``VIDIOC_S_OUTFMT``, ``VIDIOC_G_OUTFMT``,
``VIDIOC_S_VBIFMT`` and ``VIDIOC_G_VBIFMT``. The image format ``VIDIOC_S_VBIFMT`` and ``VIDIOC_G_VBIFMT``. The image format
structure :c:type:`struct v4l2_format` was renamed to struct structure :c:type:`struct v4l2_format` was renamed to struct
:ref:`v4l2_pix_format <v4l2-pix-format>`, while struct :c:type:`v4l2_pix_format`, while struct
:ref:`v4l2_format <v4l2-format>` is now the envelopping structure :c:type:`v4l2_format` is now the envelopping structure
for all format negotiations. for all format negotiations.
5. Similar to the changes above, the ``VIDIOC_G_PARM`` and 5. Similar to the changes above, the ``VIDIOC_G_PARM`` and
``VIDIOC_S_PARM`` ioctls were merged with ``VIDIOC_G_OUTPARM`` and ``VIDIOC_S_PARM`` ioctls were merged with ``VIDIOC_G_OUTPARM`` and
``VIDIOC_S_OUTPARM``. A ``type`` field in the new struct ``VIDIOC_S_OUTPARM``. A ``type`` field in the new struct
:ref:`v4l2_streamparm <v4l2-streamparm>` selects the respective :c:type:`v4l2_streamparm` selects the respective
union member. union member.
This change obsoletes the ``VIDIOC_G_OUTPARM`` and This change obsoletes the ``VIDIOC_G_OUTPARM`` and
...@@ -178,7 +178,7 @@ common Linux driver API conventions. ...@@ -178,7 +178,7 @@ common Linux driver API conventions.
categories might have a greater separation, or may even appear in categories might have a greater separation, or may even appear in
separate windows. separate windows.
7. The struct :ref:`v4l2_buffer <v4l2-buffer>` ``timestamp`` was 7. The struct :c:type:`v4l2_buffer` ``timestamp`` was
changed to a 64 bit integer, containing the sampling or output time changed to a 64 bit integer, containing the sampling or output time
of the frame in nanoseconds. Additionally timestamps will be in of the frame in nanoseconds. Additionally timestamps will be in
absolute system time, not starting from zero at the beginning of a absolute system time, not starting from zero at the beginning of a
...@@ -202,7 +202,7 @@ common Linux driver API conventions. ...@@ -202,7 +202,7 @@ common Linux driver API conventions.
return a 64-bit integer. return a 64-bit integer.
8. A ``sequence`` field was added to struct 8. A ``sequence`` field was added to struct
:ref:`v4l2_buffer <v4l2-buffer>`. The ``sequence`` field counts :c:type:`v4l2_buffer`. The ``sequence`` field counts
captured frames, it is ignored by output devices. When a capture captured frames, it is ignored by output devices. When a capture
driver drops a frame, the sequence number of that frame is skipped. driver drops a frame, the sequence number of that frame is skipped.
...@@ -210,7 +210,7 @@ common Linux driver API conventions. ...@@ -210,7 +210,7 @@ common Linux driver API conventions.
V4L2 Version 0.20 incremental changes V4L2 Version 0.20 incremental changes
===================================== =====================================
1999-12-23: In struct :ref:`v4l2_vbi_format <v4l2-vbi-format>` the 1999-12-23: In struct :c:type:`v4l2_vbi_format` the
``reserved1`` field became ``offset``. Previously drivers were required ``reserved1`` field became ``offset``. Previously drivers were required
to clear the ``reserved1`` field. to clear the ``reserved1`` field.
...@@ -256,7 +256,7 @@ compatibility* as the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and ...@@ -256,7 +256,7 @@ compatibility* as the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls may fail now if the struct :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls may fail now if the struct
:c:type:`struct v4l2_fmt` ``type`` field does not contain :c:type:`struct v4l2_fmt` ``type`` field does not contain
``V4L2_BUF_TYPE_VBI``. In the documentation of the struct ``V4L2_BUF_TYPE_VBI``. In the documentation of the struct
:ref:`v4l2_vbi_format <v4l2-vbi-format>` ``offset`` field the :c:type:`v4l2_vbi_format` ``offset`` field the
ambiguous phrase "rising edge" was changed to "leading edge". ambiguous phrase "rising edge" was changed to "leading edge".
...@@ -321,7 +321,7 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -321,7 +321,7 @@ This unnamed version was finally merged into Linux 2.5.46.
until the application attempts to initiate a data exchange, see until the application attempts to initiate a data exchange, see
:ref:`open`. :ref:`open`.
3. The struct :ref:`v4l2_capability <v4l2-capability>` changed 3. The struct :c:type:`v4l2_capability` changed
dramatically. Note that also the size of the structure changed, dramatically. Note that also the size of the structure changed,
which is encoded in the ioctl request code, thus older V4L2 devices which is encoded in the ioctl request code, thus older V4L2 devices
will respond with an ``EINVAL`` error code to the new will respond with an ``EINVAL`` error code to the new
...@@ -354,7 +354,7 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -354,7 +354,7 @@ This unnamed version was finally merged into Linux 2.5.46.
``V4L2_FLAG_MONOCHROME`` flag was removed, this information is ``V4L2_FLAG_MONOCHROME`` flag was removed, this information is
available as described in :ref:`format`. available as described in :ref:`format`.
4. In struct :ref:`v4l2_input <v4l2-input>` the ``assoc_audio`` 4. In struct :c:type:`v4l2_input` the ``assoc_audio``
field and the ``capability`` field and its only flag field and the ``capability`` field and its only flag
``V4L2_INPUT_CAP_AUDIO`` was replaced by the new ``audioset`` field. ``V4L2_INPUT_CAP_AUDIO`` was replaced by the new ``audioset`` field.
Instead of linking one video input to one audio input this field Instead of linking one video input to one audio input this field
...@@ -363,11 +363,11 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -363,11 +363,11 @@ This unnamed version was finally merged into Linux 2.5.46.
New fields are ``tuner`` (reversing the former link from tuners to New fields are ``tuner`` (reversing the former link from tuners to
video inputs), ``std`` and ``status``. video inputs), ``std`` and ``status``.
Accordingly struct :ref:`v4l2_output <v4l2-output>` lost its Accordingly struct :c:type:`v4l2_output` lost its
``capability`` and ``assoc_audio`` fields. ``audioset``, ``capability`` and ``assoc_audio`` fields. ``audioset``,
``modulator`` and ``std`` where added instead. ``modulator`` and ``std`` where added instead.
5. The struct :ref:`v4l2_audio <v4l2-audio>` field ``audio`` was 5. The struct :c:type:`v4l2_audio` field ``audio`` was
renamed to ``index``, for consistency with other structures. A new renamed to ``index``, for consistency with other structures. A new
capability flag ``V4L2_AUDCAP_STEREO`` was added to indicated if the capability flag ``V4L2_AUDCAP_STEREO`` was added to indicated if the
audio input in question supports stereo sound. audio input in question supports stereo sound.
...@@ -376,20 +376,20 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -376,20 +376,20 @@ This unnamed version was finally merged into Linux 2.5.46.
(However the same applies to AVL which is still there.) (However the same applies to AVL which is still there.)
Again for consistency the struct Again for consistency the struct
:ref:`v4l2_audioout <v4l2-audioout>` field ``audio`` was renamed :c:type:`v4l2_audioout` field ``audio`` was renamed
to ``index``. to ``index``.
6. The struct :ref:`v4l2_tuner <v4l2-tuner>` ``input`` field was 6. The struct :c:type:`v4l2_tuner` ``input`` field was
replaced by an ``index`` field, permitting devices with multiple replaced by an ``index`` field, permitting devices with multiple
tuners. The link between video inputs and tuners is now reversed, tuners. The link between video inputs and tuners is now reversed,
inputs point to their tuner. The ``std`` substructure became a inputs point to their tuner. The ``std`` substructure became a
simple set (more about this below) and moved into struct simple set (more about this below) and moved into struct
:ref:`v4l2_input <v4l2-input>`. A ``type`` field was added. :c:type:`v4l2_input`. A ``type`` field was added.
Accordingly in struct :ref:`v4l2_modulator <v4l2-modulator>` the Accordingly in struct :c:type:`v4l2_modulator` the
``output`` was replaced by an ``index`` field. ``output`` was replaced by an ``index`` field.
In struct :ref:`v4l2_frequency <v4l2-frequency>` the ``port`` In struct :c:type:`v4l2_frequency` the ``port``
field was replaced by a ``tuner`` field containing the respective field was replaced by a ``tuner`` field containing the respective
tuner or modulator index number. A tuner ``type`` field was added tuner or modulator index number. A tuner ``type`` field was added
and the ``reserved`` field became larger for future extensions and the ``reserved`` field became larger for future extensions
...@@ -405,7 +405,7 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -405,7 +405,7 @@ This unnamed version was finally merged into Linux 2.5.46.
:ref:`VIDIOC_S_STD <VIDIOC_G_STD>` now take a pointer to this :ref:`VIDIOC_S_STD <VIDIOC_G_STD>` now take a pointer to this
type as argument. :ref:`VIDIOC_QUERYSTD` was type as argument. :ref:`VIDIOC_QUERYSTD` was
added to autodetect the received standard, if the hardware has this added to autodetect the received standard, if the hardware has this
capability. In struct :ref:`v4l2_standard <v4l2-standard>` an capability. In struct :c:type:`v4l2_standard` an
``index`` field was added for ``index`` field was added for
:ref:`VIDIOC_ENUMSTD`. A :ref:`VIDIOC_ENUMSTD`. A
:ref:`v4l2_std_id <v4l2-std-id>` field named ``id`` was added as :ref:`v4l2_std_id <v4l2-std-id>` field named ``id`` was added as
...@@ -417,10 +417,10 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -417,10 +417,10 @@ This unnamed version was finally merged into Linux 2.5.46.
Struct :c:type:`struct v4l2_enumstd` ceased to be. Struct :c:type:`struct v4l2_enumstd` ceased to be.
:ref:`VIDIOC_ENUMSTD` now takes a pointer to a :ref:`VIDIOC_ENUMSTD` now takes a pointer to a
struct :ref:`v4l2_standard <v4l2-standard>` directly. The struct :c:type:`v4l2_standard` directly. The
information which standards are supported by a particular video information which standards are supported by a particular video
input or output moved into struct :ref:`v4l2_input <v4l2-input>` input or output moved into struct :c:type:`v4l2_input`
and struct :ref:`v4l2_output <v4l2-output>` fields named ``std``, and struct :c:type:`v4l2_output` fields named ``std``,
respectively. respectively.
8. The struct :ref:`v4l2_queryctrl <v4l2-queryctrl>` fields 8. The struct :ref:`v4l2_queryctrl <v4l2-queryctrl>` fields
...@@ -432,8 +432,8 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -432,8 +432,8 @@ This unnamed version was finally merged into Linux 2.5.46.
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`, but without the overhead of :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`, but without the overhead of
programming the hardware and regardless of I/O in progress. programming the hardware and regardless of I/O in progress.
In struct :ref:`v4l2_format <v4l2-format>` the ``fmt`` union was In struct :c:type:`v4l2_format` the ``fmt`` union was
extended to contain struct :ref:`v4l2_window <v4l2-window>`. All extended to contain struct :c:type:`v4l2_window`. All
image format negotiations are now possible with ``VIDIOC_G_FMT``, image format negotiations are now possible with ``VIDIOC_G_FMT``,
``VIDIOC_S_FMT`` and ``VIDIOC_TRY_FMT``; ioctl. The ``VIDIOC_G_WIN`` ``VIDIOC_S_FMT`` and ``VIDIOC_TRY_FMT``; ioctl. The ``VIDIOC_G_WIN``
and ``VIDIOC_S_WIN`` ioctls to prepare for a video overlay were and ``VIDIOC_S_WIN`` ioctls to prepare for a video overlay were
...@@ -533,15 +533,15 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -533,15 +533,15 @@ This unnamed version was finally merged into Linux 2.5.46.
- ``V4L2_BUF_TYPE_PRIVATE`` (but this is deprecated) - ``V4L2_BUF_TYPE_PRIVATE`` (but this is deprecated)
10. In struct :ref:`v4l2_fmtdesc <v4l2-fmtdesc>` a enum 10. In struct :c:type:`v4l2_fmtdesc` a enum
:ref:`v4l2_buf_type <v4l2-buf-type>` field named ``type`` was :ref:`v4l2_buf_type <v4l2-buf-type>` field named ``type`` was
added as in struct :ref:`v4l2_format <v4l2-format>`. The added as in struct :c:type:`v4l2_format`. The
``VIDIOC_ENUM_FBUFFMT`` ioctl is no longer needed and was removed. ``VIDIOC_ENUM_FBUFFMT`` ioctl is no longer needed and was removed.
These calls can be replaced by These calls can be replaced by
:ref:`VIDIOC_ENUM_FMT` with type :ref:`VIDIOC_ENUM_FMT` with type
``V4L2_BUF_TYPE_VIDEO_OVERLAY``. ``V4L2_BUF_TYPE_VIDEO_OVERLAY``.
11. In struct :ref:`v4l2_pix_format <v4l2-pix-format>` the ``depth`` 11. In struct :c:type:`v4l2_pix_format` the ``depth``
field was removed, assuming applications which recognize the format field was removed, assuming applications which recognize the format
by its four-character-code already know the color depth, and others by its four-character-code already know the color depth, and others
do not care about it. The same rationale lead to the removal of the do not care about it. The same rationale lead to the removal of the
...@@ -620,7 +620,7 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -620,7 +620,7 @@ This unnamed version was finally merged into Linux 2.5.46.
``V4L2_COLORSPACE_BT878``, ``V4L2_COLORSPACE_470_SYSTEM_M`` or ``V4L2_COLORSPACE_BT878``, ``V4L2_COLORSPACE_470_SYSTEM_M`` or
``V4L2_COLORSPACE_470_SYSTEM_BG`` replaces ``V4L2_FMT_CS_601YUV``. ``V4L2_COLORSPACE_470_SYSTEM_BG`` replaces ``V4L2_FMT_CS_601YUV``.
12. In struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>` the 12. In struct :c:type:`v4l2_requestbuffers` the
``type`` field was properly defined as enum ``type`` field was properly defined as enum
:ref:`v4l2_buf_type <v4l2-buf-type>`. Buffer types changed as :ref:`v4l2_buf_type <v4l2-buf-type>`. Buffer types changed as
mentioned above. A new ``memory`` field of type enum mentioned above. A new ``memory`` field of type enum
...@@ -628,7 +628,7 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -628,7 +628,7 @@ This unnamed version was finally merged into Linux 2.5.46.
I/O methods using buffers allocated by the driver or the I/O methods using buffers allocated by the driver or the
application. See :ref:`io` for details. application. See :ref:`io` for details.
13. In struct :ref:`v4l2_buffer <v4l2-buffer>` the ``type`` field was 13. In struct :c:type:`v4l2_buffer` the ``type`` field was
properly defined as enum :ref:`v4l2_buf_type <v4l2-buf-type>`. properly defined as enum :ref:`v4l2_buf_type <v4l2-buf-type>`.
Buffer types changed as mentioned above. A ``field`` field of type Buffer types changed as mentioned above. A ``field`` field of type
enum :ref:`v4l2_field <v4l2-field>` was added to indicate if a enum :ref:`v4l2_field <v4l2-field>` was added to indicate if a
...@@ -648,7 +648,7 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -648,7 +648,7 @@ This unnamed version was finally merged into Linux 2.5.46.
indeed allocated in device memory rather than DMA-able system indeed allocated in device memory rather than DMA-able system
memory. It was barely useful and so was removed. memory. It was barely useful and so was removed.
14. In struct :ref:`v4l2_framebuffer <v4l2-framebuffer>` the 14. In struct :c:type:`v4l2_framebuffer` the
``base[3]`` array anticipating double- and triple-buffering in ``base[3]`` array anticipating double- and triple-buffering in
off-screen video memory, however without defining a synchronization off-screen video memory, however without defining a synchronization
mechanism, was replaced by a single pointer. The mechanism, was replaced by a single pointer. The
...@@ -659,13 +659,13 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -659,13 +659,13 @@ This unnamed version was finally merged into Linux 2.5.46.
``V4L2_FBUF_CAP_LIST_CLIPPING`` and ``V4L2_FBUF_CAP_LIST_CLIPPING`` and
``V4L2_FBUF_CAP_BITMAP_CLIPPING``. ``V4L2_FBUF_CAP_BITMAP_CLIPPING``.
15. In struct :ref:`v4l2_clip <v4l2-clip>` the ``x``, ``y``, 15. In struct :c:type:`v4l2_clip` the ``x``, ``y``,
``width`` and ``height`` field moved into a ``c`` substructure of ``width`` and ``height`` field moved into a ``c`` substructure of
type struct :ref:`v4l2_rect <v4l2-rect>`. The ``x`` and ``y`` type struct :c:type:`v4l2_rect`. The ``x`` and ``y``
fields were renamed to ``left`` and ``top``, i. e. offsets to a fields were renamed to ``left`` and ``top``, i. e. offsets to a
context dependent origin. context dependent origin.
16. In struct :ref:`v4l2_window <v4l2-window>` the ``x``, ``y``, 16. In struct :c:type:`v4l2_window` the ``x``, ``y``,
``width`` and ``height`` field moved into a ``w`` substructure as ``width`` and ``height`` field moved into a ``w`` substructure as
above. A ``field`` field of type %v4l2-field; was added to above. A ``field`` field of type %v4l2-field; was added to
distinguish between field and frame (interlaced) overlay. distinguish between field and frame (interlaced) overlay.
...@@ -678,21 +678,21 @@ This unnamed version was finally merged into Linux 2.5.46. ...@@ -678,21 +678,21 @@ This unnamed version was finally merged into Linux 2.5.46.
:c:type:`struct v4l2_cropcap` and :c:type:`struct v4l2_crop` :c:type:`struct v4l2_cropcap` and :c:type:`struct v4l2_crop`
where redefined for this purpose. See :ref:`crop` for details. where redefined for this purpose. See :ref:`crop` for details.
18. In struct :ref:`v4l2_vbi_format <v4l2-vbi-format>` the 18. In struct :c:type:`v4l2_vbi_format` the
``SAMPLE_FORMAT`` field now contains a four-character-code as used ``SAMPLE_FORMAT`` field now contains a four-character-code as used
to identify video image formats and ``V4L2_PIX_FMT_GREY`` replaces to identify video image formats and ``V4L2_PIX_FMT_GREY`` replaces
the ``V4L2_VBI_SF_UBYTE`` define. The ``reserved`` field was the ``V4L2_VBI_SF_UBYTE`` define. The ``reserved`` field was
extended. extended.
19. In struct :ref:`v4l2_captureparm <v4l2-captureparm>` the type of 19. In struct :c:type:`v4l2_captureparm` the type of
the ``timeperframe`` field changed from unsigned long to struct the ``timeperframe`` field changed from unsigned long to struct
:ref:`v4l2_fract <v4l2-fract>`. This allows the accurate :c:type:`v4l2_fract`. This allows the accurate
expression of multiples of the NTSC-M frame rate 30000 / 1001. A new expression of multiples of the NTSC-M frame rate 30000 / 1001. A new
field ``readbuffers`` was added to control the driver behaviour in field ``readbuffers`` was added to control the driver behaviour in
read I/O mode. read I/O mode.
Similar changes were made to struct Similar changes were made to struct
:ref:`v4l2_outputparm <v4l2-outputparm>`. :c:type:`v4l2_outputparm`.
20. The struct :c:type:`struct v4l2_performance` and 20. The struct :c:type:`struct v4l2_performance` and
``VIDIOC_G_PERF`` ioctl were dropped. Except when using the ``VIDIOC_G_PERF`` ioctl were dropped. Except when using the
...@@ -834,7 +834,7 @@ V4L2 in Linux 2.6.8 ...@@ -834,7 +834,7 @@ V4L2 in Linux 2.6.8
=================== ===================
1. A new field ``input`` (former ``reserved[0]``) was added to the 1. A new field ``input`` (former ``reserved[0]``) was added to the
struct :ref:`v4l2_buffer <v4l2-buffer>` structure. Purpose of this struct :c:type:`v4l2_buffer` structure. Purpose of this
field is to alternate between video inputs (e. g. cameras) in step field is to alternate between video inputs (e. g. cameras) in step
with the video capturing process. This function must be enabled with with the video capturing process. This function must be enabled with
the new ``V4L2_BUF_FLAG_INPUT`` flag. The ``flags`` field is no the new ``V4L2_BUF_FLAG_INPUT`` flag. The ``flags`` field is no
...@@ -854,7 +854,7 @@ V4L2 spec erratum 2004-08-01 ...@@ -854,7 +854,7 @@ V4L2 spec erratum 2004-08-01
4. The documentation of the :ref:`VIDIOC_QBUF` and 4. The documentation of the :ref:`VIDIOC_QBUF` and
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctls did not mention the :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctls did not mention the
struct :ref:`v4l2_buffer <v4l2-buffer>` ``memory`` field. It was struct :c:type:`v4l2_buffer` ``memory`` field. It was
also missing from examples. Also on the ``VIDIOC_DQBUF`` page the ``EIO`` also missing from examples. Also on the ``VIDIOC_DQBUF`` page the ``EIO``
error code was not documented. error code was not documented.
...@@ -901,7 +901,7 @@ V4L2 spec erratum 2006-01-10 ...@@ -901,7 +901,7 @@ V4L2 spec erratum 2006-01-10
============================ ============================
1. The ``V4L2_IN_ST_COLOR_KILL`` flag in struct 1. The ``V4L2_IN_ST_COLOR_KILL`` flag in struct
:ref:`v4l2_input <v4l2-input>` not only indicates if the color :c:type:`v4l2_input` not only indicates if the color
killer is enabled, but also if it is active. (The color killer killer is enabled, but also if it is active. (The color killer
disables color decoding when it detects no color in the video signal disables color decoding when it detects no color in the video signal
to improve the image quality.) to improve the image quality.)
...@@ -914,16 +914,16 @@ V4L2 spec erratum 2006-01-10 ...@@ -914,16 +914,16 @@ V4L2 spec erratum 2006-01-10
V4L2 spec erratum 2006-02-03 V4L2 spec erratum 2006-02-03
============================ ============================
1. In struct :ref:`v4l2_captureparm <v4l2-captureparm>` and struct 1. In struct :c:type:`v4l2_captureparm` and struct
:ref:`v4l2_outputparm <v4l2-outputparm>` the ``timeperframe`` :c:type:`v4l2_outputparm` the ``timeperframe``
field gives the time in seconds, not microseconds. field gives the time in seconds, not microseconds.
V4L2 spec erratum 2006-02-04 V4L2 spec erratum 2006-02-04
============================ ============================
1. The ``clips`` field in struct :ref:`v4l2_window <v4l2-window>` 1. The ``clips`` field in struct :c:type:`v4l2_window`
must point to an array of struct :ref:`v4l2_clip <v4l2-clip>`, not must point to an array of struct :c:type:`v4l2_clip`, not
a linked list, because drivers ignore the struct a linked list, because drivers ignore the struct
:c:type:`struct v4l2_clip`. ``next`` pointer. :c:type:`struct v4l2_clip`. ``next`` pointer.
...@@ -951,18 +951,18 @@ V4L2 spec erratum 2006-09-23 (Draft 0.15) ...@@ -951,18 +951,18 @@ V4L2 spec erratum 2006-09-23 (Draft 0.15)
not mentioned along with other buffer types. not mentioned along with other buffer types.
2. In :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` it was clarified that the struct 2. In :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` it was clarified that the struct
:ref:`v4l2_audio <v4l2-audio>` ``mode`` field is a flags field. :c:type:`v4l2_audio` ``mode`` field is a flags field.
3. :ref:`VIDIOC_QUERYCAP` did not mention the sliced VBI and radio 3. :ref:`VIDIOC_QUERYCAP` did not mention the sliced VBI and radio
capability flags. capability flags.
4. In :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` it was clarified that applications 4. In :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` it was clarified that applications
must initialize the tuner ``type`` field of struct must initialize the tuner ``type`` field of struct
:ref:`v4l2_frequency <v4l2-frequency>` before calling :c:type:`v4l2_frequency` before calling
:ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>`. :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>`.
5. The ``reserved`` array in struct 5. The ``reserved`` array in struct
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` has 2 elements, :c:type:`v4l2_requestbuffers` has 2 elements,
not 32. not 32.
6. In :ref:`output` and :ref:`raw-vbi` the device file names 6. In :ref:`output` and :ref:`raw-vbi` the device file names
...@@ -991,7 +991,7 @@ V4L2 in Linux 2.6.18 ...@@ -991,7 +991,7 @@ V4L2 in Linux 2.6.18
V4L2 in Linux 2.6.19 V4L2 in Linux 2.6.19
==================== ====================
1. In struct :ref:`v4l2_sliced_vbi_cap <v4l2-sliced-vbi-cap>` a 1. In struct :c:type:`v4l2_sliced_vbi_cap` a
buffer type field was added replacing a reserved field. Note on buffer type field was added replacing a reserved field. Note on
architectures where the size of enum types differs from int types the architectures where the size of enum types differs from int types the
size of the structure changed. The size of the structure changed. The
...@@ -1038,15 +1038,15 @@ V4L2 in Linux 2.6.22 ...@@ -1038,15 +1038,15 @@ V4L2 in Linux 2.6.22
and :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` ioctls for details. and :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` ioctls for details.
A new ``global_alpha`` field was added to A new ``global_alpha`` field was added to
:ref:`v4l2_window <v4l2-window>`, extending the structure. This :c:type:`v4l2_window`, extending the structure. This
may *break compatibility* with applications using a struct may *break compatibility* with applications using a struct
:c:type:`struct v4l2_window` directly. However the :c:type:`struct v4l2_window` directly. However the
:ref:`VIDIOC_G/S/TRY_FMT <VIDIOC_G_FMT>` ioctls, which take a :ref:`VIDIOC_G/S/TRY_FMT <VIDIOC_G_FMT>` ioctls, which take a
pointer to a :ref:`v4l2_format <v4l2-format>` parent structure pointer to a :c:type:`v4l2_format` parent structure
with padding bytes at the end, are not affected. with padding bytes at the end, are not affected.
3. The format of the ``chromakey`` field in struct 3. The format of the ``chromakey`` field in struct
:ref:`v4l2_window <v4l2-window>` changed from "host order RGB32" :c:type:`v4l2_window` changed from "host order RGB32"
to a pixel value in the same format as the framebuffer. This may to a pixel value in the same format as the framebuffer. This may
*break compatibility* with existing applications. Drivers supporting *break compatibility* with existing applications. Drivers supporting
the "host order RGB32" format are not known. the "host order RGB32" format are not known.
...@@ -1339,7 +1339,7 @@ V4L2 in Linux 3.16 ...@@ -1339,7 +1339,7 @@ V4L2 in Linux 3.16
V4L2 in Linux 3.17 V4L2 in Linux 3.17
================== ==================
1. Extended struct :ref:`v4l2_pix_format <v4l2-pix-format>`. Added 1. Extended struct :c:type:`v4l2_pix_format`. Added
format flags. format flags.
2. Added compound control types and 2. Added compound control types and
...@@ -1359,8 +1359,8 @@ V4L2 in Linux 3.19 ...@@ -1359,8 +1359,8 @@ V4L2 in Linux 3.19
1. Rewrote Colorspace chapter, added new enum 1. Rewrote Colorspace chapter, added new enum
:ref:`v4l2_ycbcr_encoding <v4l2-ycbcr-encoding>` and enum :ref:`v4l2_ycbcr_encoding <v4l2-ycbcr-encoding>` and enum
:ref:`v4l2_quantization <v4l2-quantization>` fields to struct :ref:`v4l2_quantization <v4l2-quantization>` fields to struct
:ref:`v4l2_pix_format <v4l2-pix-format>`, struct :c:type:`v4l2_pix_format`, struct
:ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` and :c:type:`v4l2_pix_format_mplane` and
struct :ref:`v4l2_mbus_framefmt <v4l2-mbus-framefmt>`. struct :ref:`v4l2_mbus_framefmt <v4l2-mbus-framefmt>`.
......
...@@ -8,7 +8,7 @@ Streaming I/O (Memory Mapping) ...@@ -8,7 +8,7 @@ Streaming I/O (Memory Mapping)
Input and output devices support this I/O method when the Input and output devices support this I/O method when the
``V4L2_CAP_STREAMING`` flag in the ``capabilities`` field of struct ``V4L2_CAP_STREAMING`` flag in the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl is set. There are two :ref:`VIDIOC_QUERYCAP` ioctl is set. There are two
streaming methods, to determine if the memory mapping flavor is streaming methods, to determine if the memory mapping flavor is
supported applications must call the :ref:`VIDIOC_REQBUFS` ioctl supported applications must call the :ref:`VIDIOC_REQBUFS` ioctl
...@@ -39,10 +39,10 @@ address space with the :ref:`mmap() <func-mmap>` function. The ...@@ -39,10 +39,10 @@ address space with the :ref:`mmap() <func-mmap>` function. The
location of the buffers in device memory can be determined with the location of the buffers in device memory can be determined with the
:ref:`VIDIOC_QUERYBUF` ioctl. In the single-planar :ref:`VIDIOC_QUERYBUF` ioctl. In the single-planar
API case, the ``m.offset`` and ``length`` returned in a struct API case, the ``m.offset`` and ``length`` returned in a struct
:ref:`v4l2_buffer <v4l2-buffer>` are passed as sixth and second :c:type:`v4l2_buffer` are passed as sixth and second
parameter to the :ref:`mmap() <func-mmap>` function. When using the parameter to the :ref:`mmap() <func-mmap>` function. When using the
multi-planar API, struct :ref:`v4l2_buffer <v4l2-buffer>` contains an multi-planar API, struct :c:type:`v4l2_buffer` contains an
array of struct :ref:`v4l2_plane <v4l2-plane>` structures, each array of struct :c:type:`v4l2_plane` structures, each
containing its own ``m.offset`` and ``length``. When using the containing its own ``m.offset`` and ``length``. When using the
multi-planar API, every plane of every buffer has to be mapped multi-planar API, every plane of every buffer has to be mapped
separately, so the number of calls to :ref:`mmap() <func-mmap>` should separately, so the number of calls to :ref:`mmap() <func-mmap>` should
...@@ -218,7 +218,7 @@ to function, apart of this no limit exists on the number of buffers ...@@ -218,7 +218,7 @@ 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. [#f2]_ 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 :c:type:`v4l2_buffer`
``index``) plays no role here, it only identifies the buffer. ``index``) plays no role here, it only identifies the buffer.
Initially all mapped buffers are in dequeued state, inaccessible by the Initially all mapped buffers are in dequeued state, inaccessible by the
...@@ -251,7 +251,7 @@ To start and stop capturing or output applications call the ...@@ -251,7 +251,7 @@ To start and stop capturing or output applications call the
removes all buffers from both queues as a side effect. Since there is removes all buffers from both queues as a side effect. Since there is
no notion of doing anything "now" on a multitasking system, if an no notion of doing anything "now" on a multitasking system, if an
application needs to synchronize with another event it should examine application needs to synchronize with another event it should examine
the struct ::ref:`v4l2_buffer <v4l2-buffer>` ``timestamp`` of captured the struct ::c:type:`v4l2_buffer` ``timestamp`` of captured
or outputted buffers. or outputted buffers.
Drivers implementing memory mapping I/O must support the Drivers implementing memory mapping I/O must support the
......
...@@ -6,7 +6,7 @@ Single-planar format structure ...@@ -6,7 +6,7 @@ Single-planar format structure
.. tabularcolumns:: |p{4.0cm}|p{2.5cm}|p{11.0cm}| .. tabularcolumns:: |p{4.0cm}|p{2.5cm}|p{11.0cm}|
.. _v4l2-pix-format: .. c:type:: v4l2_pix_format
.. cssclass:: longtable .. cssclass:: longtable
...@@ -136,7 +136,7 @@ Single-planar format structure ...@@ -136,7 +136,7 @@ Single-planar format structure
- ``priv`` - ``priv``
- This field indicates whether the remaining fields of the - This field indicates whether the remaining fields of the
:ref:`struct v4l2_pix_format <v4l2-pix-format>` structure, also called the :c:type:`struct v4l2_pix_format <v4l2_pix_format>` structure, also called the
extended fields, are valid. When set to extended fields, are valid. When set to
``V4L2_PIX_FMT_PRIV_MAGIC``, it indicates that the extended fields ``V4L2_PIX_FMT_PRIV_MAGIC``, it indicates that the extended fields
have been correctly initialized. When set to any other value it have been correctly initialized. When set to any other value it
...@@ -152,7 +152,7 @@ Single-planar format structure ...@@ -152,7 +152,7 @@ Single-planar format structure
To use the extended fields, applications must set the ``priv`` To use the extended fields, applications must set the ``priv``
field to ``V4L2_PIX_FMT_PRIV_MAGIC``, initialize all the extended field to ``V4L2_PIX_FMT_PRIV_MAGIC``, initialize all the extended
fields and zero the unused bytes of the fields and zero the unused bytes of the
:ref:`struct v4l2_format <v4l2-format>` ``raw_data`` field. :c:type:`struct v4l2_format <v4l2_format>` ``raw_data`` field.
When the ``priv`` field isn't set to ``V4L2_PIX_FMT_PRIV_MAGIC`` When the ``priv`` field isn't set to ``V4L2_PIX_FMT_PRIV_MAGIC``
drivers must act as if all the extended fields were set to zero. drivers must act as if all the extended fields were set to zero.
......
...@@ -4,17 +4,17 @@ ...@@ -4,17 +4,17 @@
Multi-planar format structures Multi-planar format structures
****************************** ******************************
The :ref:`struct v4l2_plane_pix_format <v4l2-plane-pix-format>` structures define size The :c:type:`struct v4l2_plane_pix_format <v4l2_plane_pix_format>` structures define size
and layout for each of the planes in a multi-planar format. The and layout for each of the planes in a multi-planar format. The
:ref:`struct v4l2_pix_format_mplane <v4l2-pix-format-mplane>` structure contains :c:type:`struct v4l2_pix_format_mplane <v4l2_pix_format_mplane>` structure contains
information common to all planes (such as image width and height) and an information common to all planes (such as image width and height) and an
array of :ref:`struct v4l2_plane_pix_format <v4l2-plane-pix-format>` structures, array of :c:type:`struct v4l2_plane_pix_format <v4l2_plane_pix_format>` structures,
describing all planes of that format. describing all planes of that format.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-plane-pix-format: .. c:type:: v4l2_plane_pix_format
.. flat-table:: struct v4l2_plane_pix_format .. flat-table:: struct v4l2_plane_pix_format
:header-rows: 0 :header-rows: 0
...@@ -37,7 +37,7 @@ describing all planes of that format. ...@@ -37,7 +37,7 @@ describing all planes of that format.
- ``bytesperline`` - ``bytesperline``
- Distance in bytes between the leftmost pixels in two adjacent - Distance in bytes between the leftmost pixels in two adjacent
lines. See struct :ref:`v4l2_pix_format <v4l2-pix-format>`. lines. See struct :c:type:`v4l2_pix_format`.
- .. row 3 - .. row 3
...@@ -51,7 +51,7 @@ describing all planes of that format. ...@@ -51,7 +51,7 @@ describing all planes of that format.
.. tabularcolumns:: |p{4.4cm}|p{5.6cm}|p{7.5cm}| .. tabularcolumns:: |p{4.4cm}|p{5.6cm}|p{7.5cm}|
.. _v4l2-pix-format-mplane: .. c:type:: v4l2_pix_format_mplane
.. flat-table:: struct v4l2_pix_format_mplane .. flat-table:: struct v4l2_pix_format_mplane
:header-rows: 0 :header-rows: 0
...@@ -66,7 +66,7 @@ describing all planes of that format. ...@@ -66,7 +66,7 @@ describing all planes of that format.
- ``width`` - ``width``
- Image width in pixels. See struct - Image width in pixels. See struct
:ref:`v4l2_pix_format <v4l2-pix-format>`. :c:type:`v4l2_pix_format`.
- .. row 2 - .. row 2
...@@ -75,7 +75,7 @@ describing all planes of that format. ...@@ -75,7 +75,7 @@ describing all planes of that format.
- ``height`` - ``height``
- Image height in pixels. See struct - Image height in pixels. See struct
:ref:`v4l2_pix_format <v4l2-pix-format>`. :c:type:`v4l2_pix_format`.
- .. row 3 - .. row 3
...@@ -92,7 +92,7 @@ describing all planes of that format. ...@@ -92,7 +92,7 @@ describing all planes of that format.
- ``field`` - ``field``
- See struct :ref:`v4l2_pix_format <v4l2-pix-format>`. - See struct :c:type:`v4l2_pix_format`.
- .. row 5 - .. row 5
...@@ -100,11 +100,11 @@ describing all planes of that format. ...@@ -100,11 +100,11 @@ describing all planes of that format.
- ``colorspace`` - ``colorspace``
- See struct :ref:`v4l2_pix_format <v4l2-pix-format>`. - See struct :c:type:`v4l2_pix_format`.
- .. row 6 - .. row 6
- struct :ref:`v4l2_plane_pix_format <v4l2-plane-pix-format>` - struct :c:type:`v4l2_plane_pix_format`
- ``plane_fmt[VIDEO_MAX_PLANES]`` - ``plane_fmt[VIDEO_MAX_PLANES]``
......
...@@ -15,8 +15,8 @@ transfer functions. The third is the Y'CbCr encoding identifier (enum ...@@ -15,8 +15,8 @@ transfer functions. The third is the Y'CbCr encoding identifier (enum
non-standard Y'CbCr encodings and the fourth is the quantization non-standard Y'CbCr encodings and the fourth is the quantization
identifier (enum :ref:`v4l2_quantization <v4l2-quantization>`) to identifier (enum :ref:`v4l2_quantization <v4l2-quantization>`) to
specify non-standard quantization methods. Most of the time only the specify non-standard quantization methods. Most of the time only the
colorspace field of struct :ref:`v4l2_pix_format <v4l2-pix-format>` colorspace field of struct :c:type:`v4l2_pix_format`
or struct :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` or struct :c:type:`v4l2_pix_format_mplane`
needs to be filled in. needs to be filled in.
.. note:: .. note::
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
Image Formats Image Formats
############# #############
The V4L2 API was primarily designed for devices exchanging image data The V4L2 API was primarily designed for devices exchanging image data
with applications. The :ref:`struct v4l2_pix_format <v4l2-pix-format>` and with applications. The :c:type:`struct v4l2_pix_format <v4l2_pix_format>` and
:ref:`struct v4l2_pix_format_mplane <v4l2-pix-format-mplane>` structures define the :c:type:`struct v4l2_pix_format_mplane <v4l2_pix_format_mplane>` structures define the
format and layout of an image in memory. The former is used with the format and layout of an image in memory. The former is used with the
single-planar API, while the latter is used with the multi-planar single-planar API, while the latter is used with the multi-planar
version (see :ref:`planar-apis`). Image formats are negotiated with version (see :ref:`planar-apis`). Image formats are negotiated with
......
...@@ -46,16 +46,16 @@ Calls that distinguish between single and multi-planar APIs ...@@ -46,16 +46,16 @@ Calls that distinguish between single and multi-planar APIs
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`, :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>`
New structures for describing multi-planar formats are added: struct New structures for describing multi-planar formats are added: struct
:ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` and :c:type:`v4l2_pix_format_mplane` and
struct :ref:`v4l2_plane_pix_format <v4l2-plane-pix-format>`. struct :c:type:`v4l2_plane_pix_format`.
Drivers may define new multi-planar formats, which have distinct Drivers may define new multi-planar formats, which have distinct
FourCC codes from the existing single-planar ones. FourCC codes from the existing single-planar ones.
:ref:`VIDIOC_QBUF <VIDIOC_QBUF>`, :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, :ref:`VIDIOC_QUERYBUF <VIDIOC_QUERYBUF>` :ref:`VIDIOC_QBUF <VIDIOC_QBUF>`, :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>`, :ref:`VIDIOC_QUERYBUF <VIDIOC_QUERYBUF>`
A new struct :ref:`v4l2_plane <v4l2-plane>` structure for A new struct :c:type:`v4l2_plane` structure for
describing planes is added. Arrays of this structure are passed in describing planes is added. Arrays of this structure are passed in
the new ``m.planes`` field of struct the new ``m.planes`` field of struct
:ref:`v4l2_buffer <v4l2-buffer>`. :c:type:`v4l2_buffer`.
:ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>` :ref:`VIDIOC_REQBUFS <VIDIOC_REQBUFS>`
Will allocate multi-planar buffers as requested. Will allocate multi-planar buffers as requested.
...@@ -9,7 +9,7 @@ Read/Write ...@@ -9,7 +9,7 @@ Read/Write
Input and output devices support the :ref:`read() <func-read>` and Input and output devices support the :ref:`read() <func-read>` and
:ref:`write() <func-write>` function, respectively, when the :ref:`write() <func-write>` function, respectively, when the
``V4L2_CAP_READWRITE`` flag in the ``capabilities`` field of struct ``V4L2_CAP_READWRITE`` flag in the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl is set. :ref:`VIDIOC_QUERYCAP` ioctl is set.
Drivers may need the CPU to copy the data, but they may also support DMA Drivers may need the CPU to copy the data, but they may also support DMA
......
...@@ -16,19 +16,19 @@ cropping from an image inside a memory buffer. The application could ...@@ -16,19 +16,19 @@ cropping from an image inside a memory buffer. The application could
configure a capture device to fill only a part of an image by abusing configure a capture device to fill only a part of an image by abusing
V4L2 API. Cropping a smaller image from a larger one is achieved by V4L2 API. Cropping a smaller image from a larger one is achieved by
setting the field ``bytesperline`` at struct setting the field ``bytesperline`` at struct
:ref:`v4l2_pix_format <v4l2-pix-format>`. :c:type:`v4l2_pix_format`.
Introducing an image offsets could be done by modifying field ``m_userptr`` Introducing an image offsets could be done by modifying field ``m_userptr``
at struct at struct
:ref:`v4l2_buffer <v4l2-buffer>` before calling :c:type:`v4l2_buffer` before calling
:ref:`VIDIOC_QBUF`. Those operations should be avoided because they are not :ref:`VIDIOC_QBUF`. Those operations should be avoided because they are not
portable (endianness), and do not work for macroblock and Bayer formats portable (endianness), and do not work for macroblock and Bayer formats
and mmap buffers. The selection API deals with configuration of buffer and mmap buffers. The selection API deals with configuration of buffer
cropping/composing in a clear, intuitive and portable way. Next, with cropping/composing in a clear, intuitive and portable way. Next, with
the selection API the concepts of the padded target and constraints the selection API the concepts of the padded target and constraints
flags are introduced. Finally, struct :ref:`v4l2_crop <v4l2-crop>` flags are introduced. Finally, struct :c:type:`v4l2_crop`
and struct :ref:`v4l2_cropcap <v4l2-cropcap>` have no reserved and struct :c:type:`v4l2_cropcap` have no reserved
fields. Therefore there is no way to extend their functionality. The new fields. Therefore there is no way to extend their functionality. The new
struct :ref:`v4l2_selection <v4l2-selection>` provides a lot of place struct :c:type:`v4l2_selection` provides a lot of place
for future extensions. Driver developers are encouraged to implement for future extensions. Driver developers are encouraged to implement
only selection API. The former cropping API would be simulated using the only selection API. The former cropping API would be simulated using the
new one. new one.
...@@ -9,8 +9,8 @@ Video Standards ...@@ -9,8 +9,8 @@ Video Standards
Video devices typically support one or more different video standards or Video devices typically support one or more different video standards or
variations of standards. Each video input and output may support another variations of standards. Each video input and output may support another
set of standards. This set is reported by the ``std`` field of struct set of standards. This set is reported by the ``std`` field of struct
:ref:`v4l2_input <v4l2-input>` and struct :c:type:`v4l2_input` and struct
:ref:`v4l2_output <v4l2-output>` returned by the :c:type:`v4l2_output` returned by the
:ref:`VIDIOC_ENUMINPUT` and :ref:`VIDIOC_ENUMINPUT` and
:ref:`VIDIOC_ENUMOUTPUT` ioctls, respectively. :ref:`VIDIOC_ENUMOUTPUT` ioctls, respectively.
...@@ -58,8 +58,8 @@ output device which is: ...@@ -58,8 +58,8 @@ output device which is:
- that does not support the video standard formats at all. - that does not support the video standard formats at all.
Here the driver shall set the ``std`` field of struct Here the driver shall set the ``std`` field of struct
:ref:`v4l2_input <v4l2-input>` and struct :c:type:`v4l2_input` and struct
:ref:`v4l2_output <v4l2-output>` to zero and the :ref:`VIDIOC_G_STD <VIDIOC_G_STD>`, :c:type:`v4l2_output` to zero and the :ref:`VIDIOC_G_STD <VIDIOC_G_STD>`,
:ref:`VIDIOC_S_STD <VIDIOC_G_STD>`, :ref:`VIDIOC_QUERYSTD` and :ref:`VIDIOC_ENUMSTD` ioctls :ref:`VIDIOC_S_STD <VIDIOC_G_STD>`, :ref:`VIDIOC_QUERYSTD` and :ref:`VIDIOC_ENUMSTD` ioctls
shall return the ``ENOTTY`` error code or the ``EINVAL`` error code. shall return the ``ENOTTY`` error code or the ``EINVAL`` error code.
......
...@@ -25,7 +25,7 @@ section discussing the :ref:`read() <func-read>` function. ...@@ -25,7 +25,7 @@ section discussing the :ref:`read() <func-read>` function.
To get and set the streaming parameters applications call the To get and set the streaming parameters applications call the
:ref:`VIDIOC_G_PARM <VIDIOC_G_PARM>` and :ref:`VIDIOC_G_PARM <VIDIOC_G_PARM>` and
:ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` ioctl, respectively. They take :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` ioctl, respectively. They take
a pointer to a struct :ref:`v4l2_streamparm <v4l2-streamparm>`, which a pointer to a struct :c:type:`v4l2_streamparm`, which
contains a union holding separate parameters for input and output contains a union holding separate parameters for input and output
devices. devices.
......
...@@ -13,7 +13,7 @@ Tuners ...@@ -13,7 +13,7 @@ Tuners
Video input devices can have one or more tuners demodulating a RF Video input devices can have one or more tuners demodulating a RF
signal. Each tuner is associated with one or more video inputs, signal. Each tuner is associated with one or more video inputs,
depending on the number of RF connectors on the tuner. The ``type`` depending on the number of RF connectors on the tuner. The ``type``
field of the respective struct :ref:`v4l2_input <v4l2-input>` field of the respective struct :c:type:`v4l2_input`
returned by the :ref:`VIDIOC_ENUMINPUT` ioctl is returned by the :ref:`VIDIOC_ENUMINPUT` ioctl is
set to ``V4L2_INPUT_TYPE_TUNER`` and its ``tuner`` field contains the set to ``V4L2_INPUT_TYPE_TUNER`` and its ``tuner`` field contains the
index number of the tuner. index number of the tuner.
...@@ -24,7 +24,7 @@ inputs. ...@@ -24,7 +24,7 @@ inputs.
To query and change tuner properties applications use the To query and change tuner properties applications use the
:ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` and :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` and
:ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` ioctls, respectively. The :ref:`VIDIOC_S_TUNER <VIDIOC_G_TUNER>` ioctls, respectively. The
struct :ref:`v4l2_tuner <v4l2-tuner>` returned by :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` struct :c:type:`v4l2_tuner` returned by :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>`
also contains signal status information applicable when the tuner of the also contains signal status information applicable when the tuner of the
current video or radio input is queried. current video or radio input is queried.
...@@ -46,7 +46,7 @@ video signal for radiation or connection to the antenna input of a TV ...@@ -46,7 +46,7 @@ video signal for radiation or connection to the antenna input of a TV
set or video recorder. Each modulator is associated with one or more set or video recorder. Each modulator is associated with one or more
video outputs, depending on the number of RF connectors on the video outputs, depending on the number of RF connectors on the
modulator. The ``type`` field of the respective struct modulator. The ``type`` field of the respective struct
:ref:`v4l2_output <v4l2-output>` returned by the :c:type:`v4l2_output` returned by the
:ref:`VIDIOC_ENUMOUTPUT` ioctl is set to :ref:`VIDIOC_ENUMOUTPUT` ioctl is set to
``V4L2_OUTPUT_TYPE_MODULATOR`` and its ``modulator`` field contains the ``V4L2_OUTPUT_TYPE_MODULATOR`` and its ``modulator`` field contains the
index number of the modulator. index number of the modulator.
...@@ -68,7 +68,7 @@ To query and change modulator properties applications use the ...@@ -68,7 +68,7 @@ To query and change modulator properties applications use the
is more than one at all. The modulator is solely determined by the is more than one at all. The modulator is solely determined by the
current video output. Drivers must support both ioctls and set the current video output. Drivers must support both ioctls and set the
``V4L2_CAP_MODULATOR`` flag in the struct ``V4L2_CAP_MODULATOR`` flag in the struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl when the device has :ref:`VIDIOC_QUERYCAP` ioctl when the device has
one or more modulators. one or more modulators.
...@@ -79,7 +79,7 @@ Radio Frequency ...@@ -79,7 +79,7 @@ Radio Frequency
To get and set the tuner or modulator radio frequency applications use To get and set the tuner or modulator radio frequency applications use
the :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` and the :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` and
:ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl which both take :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl which both take
a pointer to a struct :ref:`v4l2_frequency <v4l2-frequency>`. These a pointer to a struct :c:type:`v4l2_frequency`. These
ioctls are used for TV and radio devices alike. Drivers must support ioctls are used for TV and radio devices alike. Drivers must support
both ioctls when the tuner or modulator ioctls are supported, or when both ioctls when the tuner or modulator ioctls are supported, or when
the device is a radio device. the device is a radio device.
...@@ -8,7 +8,7 @@ Streaming I/O (User Pointers) ...@@ -8,7 +8,7 @@ Streaming I/O (User Pointers)
Input and output devices support this I/O method when the Input and output devices support this I/O method when the
``V4L2_CAP_STREAMING`` flag in the ``capabilities`` field of struct ``V4L2_CAP_STREAMING`` flag in the ``capabilities`` field of struct
:ref:`v4l2_capability <v4l2-capability>` returned by the :c:type:`v4l2_capability` returned by the
:ref:`VIDIOC_QUERYCAP` ioctl is set. If the :ref:`VIDIOC_QUERYCAP` ioctl is set. If the
particular user pointer method (not only memory mapping) is supported particular user pointer method (not only memory mapping) is supported
must be determined by calling the :ref:`VIDIOC_REQBUFS` ioctl must be determined by calling the :ref:`VIDIOC_REQBUFS` ioctl
...@@ -18,8 +18,8 @@ This I/O method combines advantages of the read/write and memory mapping ...@@ -18,8 +18,8 @@ This I/O method combines advantages of the read/write and memory mapping
methods. Buffers (planes) are allocated by the application itself, and methods. Buffers (planes) are allocated by the application itself, and
can reside for example in virtual or shared memory. Only pointers to can reside for example in virtual or shared memory. Only pointers to
data are exchanged, these pointers and meta-information are passed in data are exchanged, these pointers and meta-information are passed in
struct :ref:`v4l2_buffer <v4l2-buffer>` (or in struct struct :c:type:`v4l2_buffer` (or in struct
:ref:`v4l2_plane <v4l2-plane>` in the multi-planar API case). The :c:type:`v4l2_plane` in the multi-planar API case). The
driver must be switched into user pointer I/O mode by calling the driver must be switched into user pointer I/O mode by calling the
:ref:`VIDIOC_REQBUFS` with the desired buffer type. :ref:`VIDIOC_REQBUFS` with the desired buffer type.
No buffers (planes) are allocated beforehand, consequently they are not No buffers (planes) are allocated beforehand, consequently they are not
...@@ -94,7 +94,7 @@ To start and stop capturing or output applications call the ...@@ -94,7 +94,7 @@ To start and stop capturing or output applications call the
both queues and unlocks all buffers as a side effect. Since there is no both queues and unlocks all buffers as a side effect. Since there is no
notion of doing anything "now" on a multitasking system, if an notion of doing anything "now" on a multitasking system, if an
application needs to synchronize with another event it should examine application needs to synchronize with another event it should examine
the struct :ref:`v4l2_buffer <v4l2-buffer>` ``timestamp`` of captured or the struct :c:type:`v4l2_buffer` ``timestamp`` of captured or
outputted buffers. outputted buffers.
Drivers implementing user pointer I/O must support the Drivers implementing user pointer I/O must support the
......
...@@ -114,14 +114,14 @@ DVB device nodes. Add support for Tuner sub-device. ...@@ -114,14 +114,14 @@ DVB device nodes. Add support for Tuner sub-device.
Rewrote Colorspace chapter, added new enum Rewrote Colorspace chapter, added new enum
:ref:`v4l2_ycbcr_encoding <v4l2-ycbcr-encoding>` and enum :ref:`v4l2_ycbcr_encoding <v4l2-ycbcr-encoding>` and enum
:ref:`v4l2_quantization <v4l2-quantization>` fields to struct :ref:`v4l2_quantization <v4l2-quantization>` fields to struct
:ref:`v4l2_pix_format <v4l2-pix-format>`, struct :c:type:`v4l2_pix_format`, struct
:ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` and struct :c:type:`v4l2_pix_format_mplane` and struct
:ref:`v4l2_mbus_framefmt <v4l2-mbus-framefmt>`. :ref:`v4l2_mbus_framefmt <v4l2-mbus-framefmt>`.
:revision: 3.17 / 2014-08-04 (*lp, hv*) :revision: 3.17 / 2014-08-04 (*lp, hv*)
Extended struct :ref:`v4l2_pix_format <v4l2-pix-format>`. Added Extended struct :c:type:`v4l2_pix_format`. Added
format flags. Added compound control types and VIDIOC_QUERY_EXT_CTRL. format flags. Added compound control types and VIDIOC_QUERY_EXT_CTRL.
......
...@@ -16,7 +16,7 @@ To learn about the number and attributes of the available inputs and ...@@ -16,7 +16,7 @@ To learn about the number and attributes of the available inputs and
outputs applications can enumerate them with the outputs applications can enumerate them with the
:ref:`VIDIOC_ENUMINPUT` and :ref:`VIDIOC_ENUMINPUT` and
:ref:`VIDIOC_ENUMOUTPUT` ioctl, respectively. The :ref:`VIDIOC_ENUMOUTPUT` ioctl, respectively. The
struct :ref:`v4l2_input <v4l2-input>` returned by the struct :c:type:`v4l2_input` returned by the
:ref:`VIDIOC_ENUMINPUT` ioctl also contains signal :ref:`VIDIOC_ENUMINPUT` ioctl also contains signal
:status information applicable when the current video input is queried. :status information applicable when the current video input is queried.
......
...@@ -39,14 +39,14 @@ over buffers is required. This ioctl can be called multiple times to ...@@ -39,14 +39,14 @@ over buffers is required. This ioctl can be called multiple times to
create buffers of different sizes. create buffers of different sizes.
To allocate the device buffers applications must initialize the relevant To allocate the device buffers applications must initialize the relevant
fields of the :ref:`struct v4l2_create_buffers <v4l2-create-buffers>` structure. The fields of the :c:type:`struct v4l2_create_buffers <v4l2_create_buffers>` structure. The
``count`` field must be set to the number of requested buffers, the ``count`` field must be set to the number of requested buffers, the
``memory`` field specifies the requested I/O method and the ``reserved`` ``memory`` field specifies the requested I/O method and the ``reserved``
array must be zeroed. array must be zeroed.
The ``format`` field specifies the image format that the buffers must be The ``format`` field specifies the image format that the buffers must be
able to handle. The application has to fill in this struct able to handle. The application has to fill in this struct
:ref:`v4l2_format <v4l2-format>`. Usually this will be done using the :c:type:`v4l2_format`. Usually this will be done using the
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` or :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` or
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctls to ensure that the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctls to ensure that the
requested format is supported by the driver. Based on the format's requested format is supported by the driver. Based on the format's
...@@ -71,7 +71,7 @@ the ``index`` fields respectively. On return ``count`` can be smaller ...@@ -71,7 +71,7 @@ the ``index`` fields respectively. On return ``count`` can be smaller
than the number requested. than the number requested.
.. _v4l2-create-buffers: .. c:type:: v4l2_create_buffers
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -115,7 +115,7 @@ than the number requested. ...@@ -115,7 +115,7 @@ than the number requested.
- .. row 4 - .. row 4
- struct :ref:`v4l2_format <v4l2-format>` - struct :c:type:`v4l2_format`
- ``format`` - ``format``
......
...@@ -50,7 +50,7 @@ support cropping and/or scaling and/or have non-square pixels, and for ...@@ -50,7 +50,7 @@ support cropping and/or scaling and/or have non-square pixels, and for
overlay devices. overlay devices.
.. _v4l2-cropcap: .. c:type:: v4l2_cropcap
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -98,7 +98,7 @@ overlay devices. ...@@ -98,7 +98,7 @@ overlay devices.
- .. row 4 - .. row 4
- struct :ref:`v4l2_fract <v4l2-fract>` - struct :c:type:`v4l2_fract`
- ``pixelaspect`` - ``pixelaspect``
...@@ -165,7 +165,7 @@ appropriately. The generic error codes are described at the ...@@ -165,7 +165,7 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_cropcap <v4l2-cropcap>` ``type`` is The struct :c:type:`v4l2_cropcap` ``type`` is
invalid. invalid.
ENODATA ENODATA
......
...@@ -48,7 +48,7 @@ Additionally the Linux kernel must be compiled with the ...@@ -48,7 +48,7 @@ Additionally the Linux kernel must be compiled with the
To query the driver applications must initialize the ``match.type`` and To query the driver applications must initialize the ``match.type`` and
``match.addr`` or ``match.name`` fields of a struct ``match.addr`` or ``match.name`` fields of a struct
:ref:`v4l2_dbg_chip_info <v4l2-dbg-chip-info>` and call :c:type:`v4l2_dbg_chip_info` and call
:ref:`VIDIOC_DBG_G_CHIP_INFO` with a pointer to this structure. On success :ref:`VIDIOC_DBG_G_CHIP_INFO` with a pointer to this structure. On success
the driver stores information about the selected chip in the ``name`` the driver stores information about the selected chip in the ``name``
and ``flags`` fields. and ``flags`` fields.
...@@ -124,7 +124,7 @@ instructions. ...@@ -124,7 +124,7 @@ instructions.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-dbg-chip-info: .. c:type:: v4l2_dbg_chip_info
.. flat-table:: struct v4l2_dbg_chip_info .. flat-table:: struct v4l2_dbg_chip_info
:header-rows: 0 :header-rows: 0
......
...@@ -49,7 +49,7 @@ superuser privileges. Additionally the Linux kernel must be compiled ...@@ -49,7 +49,7 @@ superuser privileges. Additionally the Linux kernel must be compiled
with the ``CONFIG_VIDEO_ADV_DEBUG`` option to enable these ioctls. with the ``CONFIG_VIDEO_ADV_DEBUG`` option to enable these ioctls.
To write a register applications must initialize all fields of a struct To write a register applications must initialize all fields of a struct
:ref:`v4l2_dbg_register <v4l2-dbg-register>` except for ``size`` and :c:type:`v4l2_dbg_register` except for ``size`` and
call ``VIDIOC_DBG_S_REGISTER`` with a pointer to this structure. The call ``VIDIOC_DBG_S_REGISTER`` with a pointer to this structure. The
``match.type`` and ``match.addr`` or ``match.name`` fields select a chip ``match.type`` and ``match.addr`` or ``match.name`` fields select a chip
on the TV card, the ``reg`` field specifies a register number and the on the TV card, the ``reg`` field specifies a register number and the
...@@ -87,7 +87,7 @@ instructions. ...@@ -87,7 +87,7 @@ instructions.
.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}| .. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}|
.. _v4l2-dbg-match: .. c:type:: v4l2_dbg_match
.. flat-table:: struct v4l2_dbg_match .. flat-table:: struct v4l2_dbg_match
:header-rows: 0 :header-rows: 0
...@@ -131,7 +131,7 @@ instructions. ...@@ -131,7 +131,7 @@ instructions.
.. _v4l2-dbg-register: .. c:type:: v4l2_dbg_register
.. flat-table:: struct v4l2_dbg_register .. flat-table:: struct v4l2_dbg_register
:header-rows: 0 :header-rows: 0
......
...@@ -30,7 +30,7 @@ Arguments ...@@ -30,7 +30,7 @@ Arguments
File descriptor returned by :ref:`open() <func-open>`. File descriptor returned by :ref:`open() <func-open>`.
``argp`` ``argp``
pointer to struct :ref:`v4l2_decoder_cmd <v4l2-decoder-cmd>`. pointer to struct :c:type:`v4l2_decoder_cmd`.
Description Description
...@@ -40,7 +40,7 @@ These ioctls control an audio/video (usually MPEG-) decoder. ...@@ -40,7 +40,7 @@ These ioctls control an audio/video (usually MPEG-) decoder.
``VIDIOC_DECODER_CMD`` sends a command to the decoder, ``VIDIOC_DECODER_CMD`` sends a command to the decoder,
``VIDIOC_TRY_DECODER_CMD`` can be used to try a command without actually ``VIDIOC_TRY_DECODER_CMD`` can be used to try a command without actually
executing it. To send a command applications must initialize all fields executing it. To send a command applications must initialize all fields
of a struct :ref:`v4l2_decoder_cmd <v4l2-decoder-cmd>` and call of a struct :c:type:`v4l2_decoder_cmd` and call
``VIDIOC_DECODER_CMD`` or ``VIDIOC_TRY_DECODER_CMD`` with a pointer to ``VIDIOC_DECODER_CMD`` or ``VIDIOC_TRY_DECODER_CMD`` with a pointer to
this structure. this structure.
...@@ -61,7 +61,7 @@ introduced in Linux 3.3. ...@@ -61,7 +61,7 @@ introduced in Linux 3.3.
.. tabularcolumns:: |p{1.1cm}|p{2.4cm}|p{1.2cm}|p{1.6cm}|p{10.6cm}| .. tabularcolumns:: |p{1.1cm}|p{2.4cm}|p{1.2cm}|p{1.6cm}|p{10.6cm}|
.. _v4l2-decoder-cmd: .. c:type:: v4l2_decoder_cmd
.. cssclass:: longtable .. cssclass:: longtable
......
...@@ -32,7 +32,7 @@ Description ...@@ -32,7 +32,7 @@ Description
=========== ===========
Dequeue an event from a video device. No input is required for this Dequeue an event from a video device. No input is required for this
ioctl. All the fields of the struct :ref:`v4l2_event <v4l2-event>` ioctl. All the fields of the struct :c:type:`v4l2_event`
structure are filled by the driver. The file handle will also receive structure are filled by the driver. The file handle will also receive
exceptions which the application may get by e.g. using the select system exceptions which the application may get by e.g. using the select system
call. call.
...@@ -40,7 +40,7 @@ call. ...@@ -40,7 +40,7 @@ call.
.. tabularcolumns:: |p{3.0cm}|p{4.3cm}|p{2.5cm}|p{7.7cm}| .. tabularcolumns:: |p{3.0cm}|p{4.3cm}|p{2.5cm}|p{7.7cm}|
.. _v4l2-event: .. c:type:: v4l2_event
.. cssclass: longtable .. cssclass: longtable
...@@ -71,7 +71,7 @@ call. ...@@ -71,7 +71,7 @@ call.
- .. row 3 - .. row 3
- -
- struct :ref:`v4l2_event_vsync <v4l2-event-vsync>` - struct :c:type:`v4l2_event_vsync`
- ``vsync`` - ``vsync``
...@@ -80,7 +80,7 @@ call. ...@@ -80,7 +80,7 @@ call.
- .. row 4 - .. row 4
- -
- struct :ref:`v4l2_event_ctrl <v4l2-event-ctrl>` - struct :c:type:`v4l2_event_ctrl`
- ``ctrl`` - ``ctrl``
...@@ -89,7 +89,7 @@ call. ...@@ -89,7 +89,7 @@ call.
- .. row 5 - .. row 5
- -
- struct :ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>` - struct :c:type:`v4l2_event_frame_sync`
- ``frame_sync`` - ``frame_sync``
...@@ -98,7 +98,7 @@ call. ...@@ -98,7 +98,7 @@ call.
- .. row 6 - .. row 6
- -
- struct :ref:`v4l2_event_motion_det <v4l2-event-motion-det>` - struct :c:type:`v4l2_event_motion_det`
- ``motion_det`` - ``motion_det``
...@@ -107,7 +107,7 @@ call. ...@@ -107,7 +107,7 @@ call.
- .. row 7 - .. row 7
- -
- struct :ref:`v4l2_event_src_change <v4l2-event-src-change>` - struct :c:type:`v4l2_event_src_change`
- ``src_change`` - ``src_change``
...@@ -205,7 +205,7 @@ call. ...@@ -205,7 +205,7 @@ call.
- 1 - 1
- This event is triggered on the vertical sync. This event has a - This event is triggered on the vertical sync. This event has a
struct :ref:`v4l2_event_vsync <v4l2-event-vsync>` associated struct :c:type:`v4l2_event_vsync` associated
with it. with it.
- .. row 3 - .. row 3
...@@ -228,10 +228,10 @@ call. ...@@ -228,10 +228,10 @@ call.
which you want to receive events. This event is triggered if the which you want to receive events. This event is triggered if the
control's value changes, if a button control is pressed or if the control's value changes, if a button control is pressed or if the
control's flags change. This event has a struct control's flags change. This event has a struct
:ref:`v4l2_event_ctrl <v4l2-event-ctrl>` associated with it. :c:type:`v4l2_event_ctrl` associated with it.
This struct contains much of the same information as struct This struct contains much of the same information as struct
:ref:`v4l2_queryctrl <v4l2-queryctrl>` and struct :ref:`v4l2_queryctrl <v4l2-queryctrl>` and struct
:ref:`v4l2_control <v4l2-control>`. :c:type:`v4l2_control`.
If the event is generated due to a call to If the event is generated due to a call to
:ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` or :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` or
...@@ -243,7 +243,7 @@ call. ...@@ -243,7 +243,7 @@ call.
This event type will ensure that no information is lost when more This event type will ensure that no information is lost when more
events are raised than there is room internally. In that case the events are raised than there is room internally. In that case the
struct :ref:`v4l2_event_ctrl <v4l2-event-ctrl>` of the struct :c:type:`v4l2_event_ctrl` of the
second-oldest event is kept, but the ``changes`` field of the second-oldest event is kept, but the ``changes`` field of the
second-oldest event is ORed with the ``changes`` field of the second-oldest event is ORed with the ``changes`` field of the
oldest event. oldest event.
...@@ -256,13 +256,13 @@ call. ...@@ -256,13 +256,13 @@ call.
- Triggered immediately when the reception of a frame has begun. - Triggered immediately when the reception of a frame has begun.
This event has a struct This event has a struct
:ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>` :c:type:`v4l2_event_frame_sync`
associated with it. associated with it.
If the hardware needs to be stopped in the case of a buffer If the hardware needs to be stopped in the case of a buffer
underrun it might not be able to generate this event. In such underrun it might not be able to generate this event. In such
cases the ``frame_sequence`` field in struct cases the ``frame_sequence`` field in struct
:ref:`v4l2_event_frame_sync <v4l2-event-frame-sync>` will not :c:type:`v4l2_event_frame_sync` will not
be incremented. This causes two consecutive frame sequence numbers be incremented. This causes two consecutive frame sequence numbers
to have n times frame interval in between them. to have n times frame interval in between them.
...@@ -281,7 +281,7 @@ call. ...@@ -281,7 +281,7 @@ call.
receive events. receive events.
This event has a struct This event has a struct
:ref:`v4l2_event_src_change <v4l2-event-src-change>` :c:type:`v4l2_event_src_change`
associated with it. The ``changes`` bitfield denotes what has associated with it. The ``changes`` bitfield denotes what has
changed for the subscribed pad. If multiple events occurred before changed for the subscribed pad. If multiple events occurred before
application could dequeue them, then the changes will have the application could dequeue them, then the changes will have the
...@@ -295,7 +295,7 @@ call. ...@@ -295,7 +295,7 @@ call.
- Triggered whenever the motion detection state for one or more of - Triggered whenever the motion detection state for one or more of
the regions changes. This event has a struct the regions changes. This event has a struct
:ref:`v4l2_event_motion_det <v4l2-event-motion-det>` :c:type:`v4l2_event_motion_det`
associated with it. associated with it.
- .. row 8 - .. row 8
...@@ -310,7 +310,7 @@ call. ...@@ -310,7 +310,7 @@ call.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-event-vsync: .. c:type:: v4l2_event_vsync
.. flat-table:: struct v4l2_event_vsync .. flat-table:: struct v4l2_event_vsync
:header-rows: 0 :header-rows: 0
...@@ -330,7 +330,7 @@ call. ...@@ -330,7 +330,7 @@ call.
.. tabularcolumns:: |p{3.5cm}|p{3.0cm}|p{1.8cm}|p{8.5cm}| .. tabularcolumns:: |p{3.5cm}|p{3.0cm}|p{1.8cm}|p{8.5cm}|
.. _v4l2-event-ctrl: .. c:type:: v4l2_event_ctrl
.. flat-table:: struct v4l2_event_ctrl .. flat-table:: struct v4l2_event_ctrl
:header-rows: 0 :header-rows: 0
...@@ -439,7 +439,7 @@ call. ...@@ -439,7 +439,7 @@ call.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-event-frame-sync: .. c:type:: v4l2_event_frame_sync
.. flat-table:: struct v4l2_event_frame_sync .. flat-table:: struct v4l2_event_frame_sync
:header-rows: 0 :header-rows: 0
...@@ -459,7 +459,7 @@ call. ...@@ -459,7 +459,7 @@ call.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-event-src-change: .. c:type:: v4l2_event_src_change
.. flat-table:: struct v4l2_event_src_change .. flat-table:: struct v4l2_event_src_change
:header-rows: 0 :header-rows: 0
...@@ -480,7 +480,7 @@ call. ...@@ -480,7 +480,7 @@ call.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-event-motion-det: .. c:type:: v4l2_event_motion_det
.. flat-table:: struct v4l2_event_motion_det .. flat-table:: struct v4l2_event_motion_det
:header-rows: 0 :header-rows: 0
......
...@@ -36,7 +36,7 @@ Description ...@@ -36,7 +36,7 @@ Description
To query the capabilities of the DV receiver/transmitter applications To query the capabilities of the DV receiver/transmitter applications
initialize the ``pad`` field to 0, zero the reserved array of struct initialize the ``pad`` field to 0, zero the reserved array of struct
:ref:`v4l2_dv_timings_cap <v4l2-dv-timings-cap>` and call the :c:type:`v4l2_dv_timings_cap` and call the
``VIDIOC_DV_TIMINGS_CAP`` ioctl on a video node and the driver will fill ``VIDIOC_DV_TIMINGS_CAP`` ioctl on a video node and the driver will fill
in the structure. in the structure.
...@@ -50,14 +50,14 @@ queried by calling the ``VIDIOC_SUBDEV_DV_TIMINGS_CAP`` ioctl directly ...@@ -50,14 +50,14 @@ queried by calling the ``VIDIOC_SUBDEV_DV_TIMINGS_CAP`` ioctl directly
on a subdevice node. The capabilities are specific to inputs (for DV on a subdevice node. The capabilities are specific to inputs (for DV
receivers) or outputs (for DV transmitters), applications must specify receivers) or outputs (for DV transmitters), applications must specify
the desired pad number in the struct the desired pad number in the struct
:ref:`v4l2_dv_timings_cap <v4l2-dv-timings-cap>` ``pad`` field and :c:type:`v4l2_dv_timings_cap` ``pad`` field and
zero the ``reserved`` array. Attempts to query capabilities on a pad zero the ``reserved`` array. Attempts to query capabilities on a pad
that doesn't support them will return an ``EINVAL`` error code. that doesn't support them will return an ``EINVAL`` error code.
.. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{13.3cm}| .. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{13.3cm}|
.. _v4l2-bt-timings-cap: .. c:type:: v4l2_bt_timings_cap
.. flat-table:: struct v4l2_bt_timings_cap .. flat-table:: struct v4l2_bt_timings_cap
:header-rows: 0 :header-rows: 0
...@@ -144,7 +144,7 @@ that doesn't support them will return an ``EINVAL`` error code. ...@@ -144,7 +144,7 @@ that doesn't support them will return an ``EINVAL`` error code.
.. tabularcolumns:: |p{1.0cm}|p{3.5cm}|p{3.5cm}|p{9.5cm}| .. tabularcolumns:: |p{1.0cm}|p{3.5cm}|p{3.5cm}|p{9.5cm}|
.. _v4l2-dv-timings-cap: .. c:type:: v4l2_dv_timings_cap
.. flat-table:: struct v4l2_dv_timings_cap .. flat-table:: struct v4l2_dv_timings_cap
:header-rows: 0 :header-rows: 0
...@@ -190,7 +190,7 @@ that doesn't support them will return an ``EINVAL`` error code. ...@@ -190,7 +190,7 @@ that doesn't support them will return an ``EINVAL`` error code.
- .. row 5 - .. row 5
- -
- struct :ref:`v4l2_bt_timings_cap <v4l2-bt-timings-cap>` - struct :c:type:`v4l2_bt_timings_cap`
- ``bt`` - ``bt``
......
...@@ -40,7 +40,7 @@ These ioctls control an audio/video (usually MPEG-) encoder. ...@@ -40,7 +40,7 @@ These ioctls control an audio/video (usually MPEG-) encoder.
executing it. executing it.
To send a command applications must initialize all fields of a struct To send a command applications must initialize all fields of a struct
:ref:`v4l2_encoder_cmd <v4l2-encoder-cmd>` and call :c:type:`v4l2_encoder_cmd` and call
``VIDIOC_ENCODER_CMD`` or ``VIDIOC_TRY_ENCODER_CMD`` with a pointer to ``VIDIOC_ENCODER_CMD`` or ``VIDIOC_TRY_ENCODER_CMD`` with a pointer to
this structure. this structure.
...@@ -67,7 +67,7 @@ introduced in Linux 2.6.21. ...@@ -67,7 +67,7 @@ introduced in Linux 2.6.21.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-encoder-cmd: .. c:type:: v4l2_encoder_cmd
.. flat-table:: struct v4l2_encoder_cmd .. flat-table:: struct v4l2_encoder_cmd
:header-rows: 0 :header-rows: 0
......
...@@ -43,7 +43,7 @@ this list. ...@@ -43,7 +43,7 @@ this list.
To query the available timings, applications initialize the ``index`` To query the available timings, applications initialize the ``index``
field, set the ``pad`` field to 0, zero the reserved array of struct field, set the ``pad`` field to 0, zero the reserved array of struct
:ref:`v4l2_enum_dv_timings <v4l2-enum-dv-timings>` and call the :c:type:`v4l2_enum_dv_timings` and call the
``VIDIOC_ENUM_DV_TIMINGS`` ioctl on a video node with a pointer to this ``VIDIOC_ENUM_DV_TIMINGS`` ioctl on a video node with a pointer to this
structure. Drivers fill the rest of the structure or return an ``EINVAL`` structure. Drivers fill the rest of the structure or return an ``EINVAL``
error code when the index is out of bounds. To enumerate all supported error code when the index is out of bounds. To enumerate all supported
...@@ -60,12 +60,12 @@ by calling the ``VIDIOC_SUBDEV_ENUM_DV_TIMINGS`` ioctl directly on a ...@@ -60,12 +60,12 @@ by calling the ``VIDIOC_SUBDEV_ENUM_DV_TIMINGS`` ioctl directly on a
subdevice node. The DV timings are specific to inputs (for DV receivers) subdevice node. The DV timings are specific to inputs (for DV receivers)
or outputs (for DV transmitters), applications must specify the desired or outputs (for DV transmitters), applications must specify the desired
pad number in the struct pad number in the struct
:ref:`v4l2_enum_dv_timings <v4l2-enum-dv-timings>` ``pad`` field. :c:type:`v4l2_enum_dv_timings` ``pad`` field.
Attempts to enumerate timings on a pad that doesn't support them will Attempts to enumerate timings on a pad that doesn't support them will
return an ``EINVAL`` error code. return an ``EINVAL`` error code.
.. _v4l2-enum-dv-timings: .. c:type:: v4l2_enum_dv_timings
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -104,7 +104,7 @@ return an ``EINVAL`` error code. ...@@ -104,7 +104,7 @@ return an ``EINVAL`` error code.
- .. row 4 - .. row 4
- struct :ref:`v4l2_dv_timings <v4l2-dv-timings>` - struct :c:type:`v4l2_dv_timings`
- ``timings`` - ``timings``
...@@ -119,7 +119,7 @@ appropriately. The generic error codes are described at the ...@@ -119,7 +119,7 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_enum_dv_timings <v4l2-enum-dv-timings>` The struct :c:type:`v4l2_enum_dv_timings`
``index`` is out of bounds or the ``pad`` number is invalid. ``index`` is out of bounds or the ``pad`` number is invalid.
ENODATA ENODATA
......
...@@ -32,7 +32,7 @@ Description ...@@ -32,7 +32,7 @@ Description
=========== ===========
To enumerate image formats applications initialize the ``type`` and To enumerate image formats applications initialize the ``type`` and
``index`` field of struct :ref:`v4l2_fmtdesc <v4l2-fmtdesc>` and call ``index`` field of struct :c:type:`v4l2_fmtdesc` and call
the :ref:`VIDIOC_ENUM_FMT` ioctl with a pointer to this structure. Drivers the :ref:`VIDIOC_ENUM_FMT` ioctl with a pointer to this structure. Drivers
fill the rest of the structure or return an ``EINVAL`` error code. All fill the rest of the structure or return an ``EINVAL`` error code. All
formats are enumerable by beginning at index zero and incrementing by formats are enumerable by beginning at index zero and incrementing by
...@@ -46,7 +46,7 @@ one until ``EINVAL`` is returned. ...@@ -46,7 +46,7 @@ one until ``EINVAL`` is returned.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-fmtdesc: .. c:type:: v4l2_fmtdesc
.. flat-table:: struct v4l2_fmtdesc .. flat-table:: struct v4l2_fmtdesc
:header-rows: 0 :header-rows: 0
...@@ -167,5 +167,5 @@ appropriately. The generic error codes are described at the ...@@ -167,5 +167,5 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_fmtdesc <v4l2-fmtdesc>` ``type`` is not The struct :c:type:`v4l2_fmtdesc` ``type`` is not
supported or the ``index`` is out of bounds. supported or the ``index`` is out of bounds.
...@@ -26,7 +26,7 @@ Arguments ...@@ -26,7 +26,7 @@ Arguments
File descriptor returned by :ref:`open() <func-open>`. File descriptor returned by :ref:`open() <func-open>`.
``argp`` ``argp``
Pointer to a struct :ref:`v4l2_frmivalenum <v4l2-frmivalenum>` Pointer to a struct :c:type:`v4l2_frmivalenum`
structure that contains a pixel format and size and receives a frame structure that contains a pixel format and size and receives a frame
interval. interval.
...@@ -101,7 +101,7 @@ the application, *OUT* denotes values that the driver fills in. The ...@@ -101,7 +101,7 @@ the application, *OUT* denotes values that the driver fills in. The
application should zero out all members except for the *IN* fields. application should zero out all members except for the *IN* fields.
.. _v4l2-frmival-stepwise: .. c:type:: v4l2_frmival_stepwise
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -113,7 +113,7 @@ application should zero out all members except for the *IN* fields. ...@@ -113,7 +113,7 @@ application should zero out all members except for the *IN* fields.
- .. row 1 - .. row 1
- struct :ref:`v4l2_fract <v4l2-fract>` - struct :c:type:`v4l2_fract`
- ``min`` - ``min``
...@@ -121,7 +121,7 @@ application should zero out all members except for the *IN* fields. ...@@ -121,7 +121,7 @@ application should zero out all members except for the *IN* fields.
- .. row 2 - .. row 2
- struct :ref:`v4l2_fract <v4l2-fract>` - struct :c:type:`v4l2_fract`
- ``max`` - ``max``
...@@ -129,7 +129,7 @@ application should zero out all members except for the *IN* fields. ...@@ -129,7 +129,7 @@ application should zero out all members except for the *IN* fields.
- .. row 3 - .. row 3
- struct :ref:`v4l2_fract <v4l2-fract>` - struct :c:type:`v4l2_fract`
- ``step`` - ``step``
...@@ -137,7 +137,7 @@ application should zero out all members except for the *IN* fields. ...@@ -137,7 +137,7 @@ application should zero out all members except for the *IN* fields.
.. _v4l2-frmivalenum: .. c:type:: v4l2_frmivalenum
.. flat-table:: struct v4l2_frmivalenum .. flat-table:: struct v4l2_frmivalenum
:header-rows: 0 :header-rows: 0
...@@ -200,7 +200,7 @@ application should zero out all members except for the *IN* fields. ...@@ -200,7 +200,7 @@ application should zero out all members except for the *IN* fields.
- .. row 7 - .. row 7
- -
- struct :ref:`v4l2_fract <v4l2-fract>` - struct :c:type:`v4l2_fract`
- ``discrete`` - ``discrete``
...@@ -209,7 +209,7 @@ application should zero out all members except for the *IN* fields. ...@@ -209,7 +209,7 @@ application should zero out all members except for the *IN* fields.
- .. row 8 - .. row 8
- -
- struct :ref:`v4l2_frmival_stepwise <v4l2-frmival-stepwise>` - struct :c:type:`v4l2_frmival_stepwise`
- ``stepwise`` - ``stepwise``
......
...@@ -26,7 +26,7 @@ Arguments ...@@ -26,7 +26,7 @@ Arguments
File descriptor returned by :ref:`open() <func-open>`. File descriptor returned by :ref:`open() <func-open>`.
``argp`` ``argp``
Pointer to a struct :ref:`v4l2_frmsizeenum <v4l2-frmsizeenum>` Pointer to a struct :c:type:`v4l2_frmsizeenum`
that contains an index and pixel format and receives a frame width that contains an index and pixel format and receives a frame width
and height. and height.
...@@ -90,7 +90,7 @@ the application, *OUT* denotes values that the driver fills in. The ...@@ -90,7 +90,7 @@ the application, *OUT* denotes values that the driver fills in. The
application should zero out all members except for the *IN* fields. application should zero out all members except for the *IN* fields.
.. _v4l2-frmsize-discrete: .. c:type:: v4l2_frmsize_discrete
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -118,7 +118,7 @@ application should zero out all members except for the *IN* fields. ...@@ -118,7 +118,7 @@ application should zero out all members except for the *IN* fields.
.. _v4l2-frmsize-stepwise: .. c:type:: v4l2_frmsize_stepwise
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -178,7 +178,7 @@ application should zero out all members except for the *IN* fields. ...@@ -178,7 +178,7 @@ application should zero out all members except for the *IN* fields.
.. _v4l2-frmsizeenum: .. c:type:: v4l2_frmsizeenum
.. flat-table:: struct v4l2_frmsizeenum .. flat-table:: struct v4l2_frmsizeenum
:header-rows: 0 :header-rows: 0
...@@ -223,7 +223,7 @@ application should zero out all members except for the *IN* fields. ...@@ -223,7 +223,7 @@ application should zero out all members except for the *IN* fields.
- .. row 5 - .. row 5
- -
- struct :ref:`v4l2_frmsize_discrete <v4l2-frmsize-discrete>` - struct :c:type:`v4l2_frmsize_discrete`
- ``discrete`` - ``discrete``
...@@ -232,7 +232,7 @@ application should zero out all members except for the *IN* fields. ...@@ -232,7 +232,7 @@ application should zero out all members except for the *IN* fields.
- .. row 6 - .. row 6
- -
- struct :ref:`v4l2_frmsize_stepwise <v4l2-frmsize-stepwise>` - struct :c:type:`v4l2_frmsize_stepwise`
- ``stepwise`` - ``stepwise``
......
...@@ -34,7 +34,7 @@ Description ...@@ -34,7 +34,7 @@ Description
Enumerates the frequency bands that a tuner or modulator supports. To do Enumerates the frequency bands that a tuner or modulator supports. To do
this applications initialize the ``tuner``, ``type`` and ``index`` this applications initialize the ``tuner``, ``type`` and ``index``
fields, and zero out the ``reserved`` array of a struct fields, and zero out the ``reserved`` array of a struct
:ref:`v4l2_frequency_band <v4l2-frequency-band>` and call the :c:type:`v4l2_frequency_band` and call the
:ref:`VIDIOC_ENUM_FREQ_BANDS` ioctl with a pointer to this structure. :ref:`VIDIOC_ENUM_FREQ_BANDS` ioctl with a pointer to this structure.
This ioctl is supported if the ``V4L2_TUNER_CAP_FREQ_BANDS`` capability This ioctl is supported if the ``V4L2_TUNER_CAP_FREQ_BANDS`` capability
...@@ -43,7 +43,7 @@ of the corresponding tuner/modulator is set. ...@@ -43,7 +43,7 @@ of the corresponding tuner/modulator is set.
.. tabularcolumns:: |p{2.9cm}|p{2.9cm}|p{5.8cm}|p{2.9cm}|p{3.0cm}| .. tabularcolumns:: |p{2.9cm}|p{2.9cm}|p{5.8cm}|p{2.9cm}|p{3.0cm}|
.. _v4l2-frequency-band: .. c:type:: v4l2_frequency_band
.. flat-table:: struct v4l2_frequency_band .. flat-table:: struct v4l2_frequency_band
:header-rows: 0 :header-rows: 0
...@@ -58,10 +58,10 @@ of the corresponding tuner/modulator is set. ...@@ -58,10 +58,10 @@ of the corresponding tuner/modulator is set.
- ``tuner`` - ``tuner``
- The tuner or modulator index number. This is the same value as in - The tuner or modulator index number. This is the same value as in
the struct :ref:`v4l2_input <v4l2-input>` ``tuner`` field and the struct :c:type:`v4l2_input` ``tuner`` field and
the struct :ref:`v4l2_tuner <v4l2-tuner>` ``index`` field, or the struct :c:type:`v4l2_tuner` ``index`` field, or
the struct :ref:`v4l2_output <v4l2-output>` ``modulator`` field the struct :c:type:`v4l2_output` ``modulator`` field
and the struct :ref:`v4l2_modulator <v4l2-modulator>` ``index`` and the struct :c:type:`v4l2_modulator` ``index``
field. field.
- .. row 2 - .. row 2
...@@ -71,7 +71,7 @@ of the corresponding tuner/modulator is set. ...@@ -71,7 +71,7 @@ of the corresponding tuner/modulator is set.
- ``type`` - ``type``
- The tuner type. This is the same value as in the struct - The tuner type. This is the same value as in the struct
:ref:`v4l2_tuner <v4l2-tuner>` ``type`` field. The type must be :c:type:`v4l2_tuner` ``type`` field. The type must be
set to ``V4L2_TUNER_RADIO`` for ``/dev/radioX`` device nodes, and set to ``V4L2_TUNER_RADIO`` for ``/dev/radioX`` device nodes, and
to ``V4L2_TUNER_ANALOG_TV`` for all others. Set this field to to ``V4L2_TUNER_ANALOG_TV`` for all others. Set this field to
``V4L2_TUNER_RADIO`` for modulators (currently only radio ``V4L2_TUNER_RADIO`` for modulators (currently only radio
......
...@@ -33,14 +33,14 @@ Description ...@@ -33,14 +33,14 @@ Description
To query the attributes of an audio input applications initialize the To query the attributes of an audio input applications initialize the
``index`` field and zero out the ``reserved`` array of a struct ``index`` field and zero out the ``reserved`` array of a struct
:ref:`v4l2_audio <v4l2-audio>` and call the :ref:`VIDIOC_ENUMAUDIO` :c:type:`v4l2_audio` and call the :ref:`VIDIOC_ENUMAUDIO`
ioctl with a pointer to this structure. Drivers fill the rest of the ioctl with a pointer to this structure. Drivers fill the rest of the
structure or return an ``EINVAL`` error code when the index is out of structure or return an ``EINVAL`` error code when the index is out of
bounds. To enumerate all audio inputs applications shall begin at index bounds. To enumerate all audio inputs applications shall begin at index
zero, incrementing by one until the driver returns ``EINVAL``. zero, incrementing by one until the driver returns ``EINVAL``.
See :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` for a description of struct See :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` for a description of struct
:ref:`v4l2_audio <v4l2-audio>`. :c:type:`v4l2_audio`.
Return Value Return Value
......
...@@ -33,7 +33,7 @@ Description ...@@ -33,7 +33,7 @@ Description
To query the attributes of an audio output applications initialize the To query the attributes of an audio output applications initialize the
``index`` field and zero out the ``reserved`` array of a struct ``index`` field and zero out the ``reserved`` array of a struct
:ref:`v4l2_audioout <v4l2-audioout>` and call the ``VIDIOC_G_AUDOUT`` :c:type:`v4l2_audioout` and call the ``VIDIOC_G_AUDOUT``
ioctl with a pointer to this structure. Drivers fill the rest of the ioctl with a pointer to this structure. Drivers fill the rest of the
structure or return an ``EINVAL`` error code when the index is out of structure or return an ``EINVAL`` error code when the index is out of
bounds. To enumerate all audio outputs applications shall begin at index bounds. To enumerate all audio outputs applications shall begin at index
...@@ -45,7 +45,7 @@ zero, incrementing by one until the driver returns ``EINVAL``. ...@@ -45,7 +45,7 @@ zero, incrementing by one until the driver returns ``EINVAL``.
to a sound card are not audio outputs in this sense. to a sound card are not audio outputs in this sense.
See :ref:`VIDIOC_G_AUDIOout <VIDIOC_G_AUDOUT>` for a description of struct See :ref:`VIDIOC_G_AUDIOout <VIDIOC_G_AUDOUT>` for a description of struct
:ref:`v4l2_audioout <v4l2-audioout>`. :c:type:`v4l2_audioout`.
Return Value Return Value
......
...@@ -32,7 +32,7 @@ Description ...@@ -32,7 +32,7 @@ Description
=========== ===========
To query the attributes of a video input applications initialize the To query the attributes of a video input applications initialize the
``index`` field of struct :ref:`v4l2_input <v4l2-input>` and call the ``index`` field of struct :c:type:`v4l2_input` and call the
:ref:`VIDIOC_ENUMINPUT` ioctl with a pointer to this structure. Drivers :ref:`VIDIOC_ENUMINPUT` ioctl with a pointer to this structure. Drivers
fill the rest of the structure or return an ``EINVAL`` error code when the fill the rest of the structure or return an ``EINVAL`` error code when the
index is out of bounds. To enumerate all inputs applications shall begin index is out of bounds. To enumerate all inputs applications shall begin
...@@ -41,7 +41,7 @@ at index zero, incrementing by one until the driver returns ``EINVAL``. ...@@ -41,7 +41,7 @@ at index zero, incrementing by one until the driver returns ``EINVAL``.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-input: .. c:type:: v4l2_input
.. flat-table:: struct v4l2_input .. flat-table:: struct v4l2_input
:header-rows: 0 :header-rows: 0
...@@ -104,7 +104,7 @@ at index zero, incrementing by one until the driver returns ``EINVAL``. ...@@ -104,7 +104,7 @@ at index zero, incrementing by one until the driver returns ``EINVAL``.
- Capture devices can have zero or more tuners (RF demodulators). - Capture devices can have zero or more tuners (RF demodulators).
When the ``type`` is set to ``V4L2_INPUT_TYPE_TUNER`` this is an When the ``type`` is set to ``V4L2_INPUT_TYPE_TUNER`` this is an
RF connector and this field identifies the tuner. It corresponds RF connector and this field identifies the tuner. It corresponds
to struct :ref:`v4l2_tuner <v4l2-tuner>` field ``index``. For to struct :c:type:`v4l2_tuner` field ``index``. For
details on tuners see :ref:`tuner`. details on tuners see :ref:`tuner`.
- .. row 6 - .. row 6
...@@ -377,5 +377,5 @@ appropriately. The generic error codes are described at the ...@@ -377,5 +377,5 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_input <v4l2-input>` ``index`` is out of The struct :c:type:`v4l2_input` ``index`` is out of
bounds. bounds.
...@@ -32,7 +32,7 @@ Description ...@@ -32,7 +32,7 @@ Description
=========== ===========
To query the attributes of a video outputs applications initialize the To query the attributes of a video outputs applications initialize the
``index`` field of struct :ref:`v4l2_output <v4l2-output>` and call ``index`` field of struct :c:type:`v4l2_output` and call
the :ref:`VIDIOC_ENUMOUTPUT` ioctl with a pointer to this structure. the :ref:`VIDIOC_ENUMOUTPUT` ioctl with a pointer to this structure.
Drivers fill the rest of the structure or return an ``EINVAL`` error code Drivers fill the rest of the structure or return an ``EINVAL`` error code
when the index is out of bounds. To enumerate all outputs applications when the index is out of bounds. To enumerate all outputs applications
...@@ -42,7 +42,7 @@ EINVAL. ...@@ -42,7 +42,7 @@ EINVAL.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-output: .. c:type:: v4l2_output
.. flat-table:: struct v4l2_output .. flat-table:: struct v4l2_output
:header-rows: 0 :header-rows: 0
...@@ -105,7 +105,7 @@ EINVAL. ...@@ -105,7 +105,7 @@ EINVAL.
- Output devices can have zero or more RF modulators. When the - Output devices can have zero or more RF modulators. When the
``type`` is ``V4L2_OUTPUT_TYPE_MODULATOR`` this is an RF connector ``type`` is ``V4L2_OUTPUT_TYPE_MODULATOR`` this is an RF connector
and this field identifies the modulator. It corresponds to struct and this field identifies the modulator. It corresponds to struct
:ref:`v4l2_modulator <v4l2-modulator>` field ``index``. For :c:type:`v4l2_modulator` field ``index``. For
details on modulators see :ref:`tuner`. details on modulators see :ref:`tuner`.
- .. row 6 - .. row 6
...@@ -222,5 +222,5 @@ appropriately. The generic error codes are described at the ...@@ -222,5 +222,5 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_output <v4l2-output>` ``index`` is out of The struct :c:type:`v4l2_output` ``index`` is out of
bounds. bounds.
...@@ -33,7 +33,7 @@ Description ...@@ -33,7 +33,7 @@ Description
To query the attributes of a video standard, especially a custom (driver To query the attributes of a video standard, especially a custom (driver
defined) one, applications initialize the ``index`` field of struct defined) one, applications initialize the ``index`` field of struct
:ref:`v4l2_standard <v4l2-standard>` and call the :ref:`VIDIOC_ENUMSTD` :c:type:`v4l2_standard` and call the :ref:`VIDIOC_ENUMSTD`
ioctl with a pointer to this structure. Drivers fill the rest of the ioctl with a pointer to this structure. Drivers fill the rest of the
structure or return an ``EINVAL`` error code when the index is out of 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
...@@ -42,7 +42,7 @@ enumerate a different set of standards after switching the video input ...@@ -42,7 +42,7 @@ enumerate a different set of standards after switching the video input
or output. [#f1]_ or output. [#f1]_
.. _v4l2-standard: .. c:type:: v4l2_standard
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -71,7 +71,7 @@ or output. [#f1]_ ...@@ -71,7 +71,7 @@ or output. [#f1]_
set as custom standards. Multiple bits can be set if the hardware set as custom standards. Multiple bits can be set if the hardware
does not distinguish between these standards, however separate does not distinguish between these standards, however separate
indices do not indicate the opposite. The ``id`` must be unique. indices do not indicate the opposite. The ``id`` must be unique.
No other enumerated :ref:`struct v4l2_standard <v4l2-standard>` structure, No other enumerated :c:type:`struct v4l2_standard <v4l2_standard>` structure,
for this input or output anyway, can contain the same set of bits. for this input or output anyway, can contain the same set of bits.
- .. row 3 - .. row 3
...@@ -86,7 +86,7 @@ or output. [#f1]_ ...@@ -86,7 +86,7 @@ or output. [#f1]_
- .. row 4 - .. row 4
- struct :ref:`v4l2_fract <v4l2-fract>` - struct :c:type:`v4l2_fract`
- ``frameperiod`` - ``frameperiod``
...@@ -112,7 +112,7 @@ or output. [#f1]_ ...@@ -112,7 +112,7 @@ or output. [#f1]_
.. _v4l2-fract: .. c:type:: v4l2_fract
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -411,7 +411,7 @@ appropriately. The generic error codes are described at the ...@@ -411,7 +411,7 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_standard <v4l2-standard>` ``index`` is out The struct :c:type:`v4l2_standard` ``index`` is out
of bounds. of bounds.
ENODATA ENODATA
......
...@@ -38,13 +38,13 @@ buffers have been allocated with the ...@@ -38,13 +38,13 @@ buffers have been allocated with the
:ref:`VIDIOC_REQBUFS` ioctl. :ref:`VIDIOC_REQBUFS` ioctl.
To export a buffer, applications fill struct To export a buffer, applications fill struct
:ref:`v4l2_exportbuffer <v4l2-exportbuffer>`. The ``type`` field is :c:type:`v4l2_exportbuffer`. The ``type`` field is
set to the same buffer type as was previously used with struct set to the same buffer type as was previously used with struct
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``. :c:type:`v4l2_requestbuffers` ``type``.
Applications must also set the ``index`` field. Valid index numbers Applications must also set the ``index`` field. Valid index numbers
range from zero to the number of buffers allocated with range from zero to the number of buffers allocated with
:ref:`VIDIOC_REQBUFS` (struct :ref:`VIDIOC_REQBUFS` (struct
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``count``) minus :c:type:`v4l2_requestbuffers` ``count``) minus
one. For the multi-planar API, applications set the ``plane`` field to one. For the multi-planar API, applications set the ``plane`` field to
the index of the plane to be exported. Valid planes range from zero to the index of the plane to be exported. Valid planes range from zero to
the maximal number of valid planes for the currently active format. For the maximal number of valid planes for the currently active format. For
...@@ -114,7 +114,7 @@ Examples ...@@ -114,7 +114,7 @@ Examples
} }
.. _v4l2-exportbuffer: .. c:type:: v4l2_exportbuffer
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -131,8 +131,8 @@ Examples ...@@ -131,8 +131,8 @@ Examples
- ``type`` - ``type``
- Type of the buffer, same as struct - Type of the buffer, same as struct
:ref:`v4l2_format <v4l2-format>` ``type`` or struct :c:type:`v4l2_format` ``type`` or struct
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``, set :c:type:`v4l2_requestbuffers` ``type``, set
by the application. See :ref:`v4l2-buf-type` by the application. See :ref:`v4l2-buf-type`
- .. row 2 - .. row 2
......
...@@ -35,7 +35,7 @@ Description ...@@ -35,7 +35,7 @@ Description
=========== ===========
To query the current audio input applications zero out the ``reserved`` To query the current audio input applications zero out the ``reserved``
array of a struct :ref:`v4l2_audio <v4l2-audio>` and call the array of a struct :c:type:`v4l2_audio` and call the
:ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` ioctl with a pointer to this structure. Drivers fill :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` ioctl with a pointer to this structure. Drivers fill
the rest of the structure or return an ``EINVAL`` error code when the device the rest of the structure or return an ``EINVAL`` error code when the device
has no audio inputs, or none which combine with the current video input. has no audio inputs, or none which combine with the current video input.
...@@ -43,7 +43,7 @@ has no audio inputs, or none which combine with the current video input. ...@@ -43,7 +43,7 @@ has no audio inputs, or none which combine with the current video input.
Audio inputs have one writable property, the audio mode. To select the Audio inputs have one writable property, the audio mode. To select the
current audio input *and* change the audio mode, applications initialize current audio input *and* change the audio mode, applications initialize
the ``index`` and ``mode`` fields, and the ``reserved`` array of a the ``index`` and ``mode`` fields, and the ``reserved`` array of a
:ref:`struct v4l2_audio <v4l2-audio>` structure and call the :ref:`VIDIOC_S_AUDIO <VIDIOC_G_AUDIO>` :c:type:`struct v4l2_audio <v4l2_audio>` structure and call the :ref:`VIDIOC_S_AUDIO <VIDIOC_G_AUDIO>`
ioctl. Drivers may switch to a different audio mode if the request ioctl. Drivers may switch to a different audio mode if the request
cannot be satisfied. However, this is a write-only ioctl, it does not cannot be satisfied. However, this is a write-only ioctl, it does not
return the actual new audio mode. return the actual new audio mode.
...@@ -51,7 +51,7 @@ return the actual new audio mode. ...@@ -51,7 +51,7 @@ return the actual new audio mode.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-audio: .. c:type:: v4l2_audio
.. flat-table:: struct v4l2_audio .. flat-table:: struct v4l2_audio
:header-rows: 0 :header-rows: 0
......
...@@ -35,7 +35,7 @@ Description ...@@ -35,7 +35,7 @@ Description
=========== ===========
To query the current audio output applications zero out the ``reserved`` To query the current audio output applications zero out the ``reserved``
array of a struct :ref:`v4l2_audioout <v4l2-audioout>` and call the array of a struct :c:type:`v4l2_audioout` and call the
``VIDIOC_G_AUDOUT`` ioctl with a pointer to this structure. Drivers fill ``VIDIOC_G_AUDOUT`` ioctl with a pointer to this structure. Drivers fill
the rest of the structure or return an ``EINVAL`` error code when the device the rest of the structure or return an ``EINVAL`` error code when the device
has no audio inputs, or none which combine with the current video has no audio inputs, or none which combine with the current video
...@@ -44,7 +44,7 @@ output. ...@@ -44,7 +44,7 @@ output.
Audio outputs have no writable properties. Nevertheless, to select the Audio outputs have no writable properties. Nevertheless, to select the
current audio output applications can initialize the ``index`` field and current audio output applications can initialize the ``index`` field and
``reserved`` array (which in the future may contain writable properties) ``reserved`` array (which in the future may contain writable properties)
of a :ref:`struct v4l2_audioout <v4l2-audioout>` structure and call the of a :c:type:`struct v4l2_audioout <v4l2_audioout>` structure and call the
``VIDIOC_S_AUDOUT`` ioctl. Drivers switch to the requested output or ``VIDIOC_S_AUDOUT`` ioctl. Drivers switch to the requested output or
return the ``EINVAL`` error code when the index is out of bounds. This is a return the ``EINVAL`` error code when the index is out of bounds. This is a
write-only ioctl, it does not return the current audio output attributes write-only ioctl, it does not return the current audio output attributes
...@@ -56,7 +56,7 @@ as ``VIDIOC_G_AUDOUT`` does. ...@@ -56,7 +56,7 @@ as ``VIDIOC_G_AUDOUT`` does.
to a sound card are not audio outputs in this sense. to a sound card are not audio outputs in this sense.
.. _v4l2-audioout: .. c:type:: v4l2_audioout
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
......
...@@ -35,13 +35,13 @@ Description ...@@ -35,13 +35,13 @@ Description
=========== ===========
To query the cropping rectangle size and position applications set the To query the cropping rectangle size and position applications set the
``type`` field of a :ref:`struct v4l2_crop <v4l2-crop>` structure to the ``type`` field of a :c:type:`struct v4l2_crop <v4l2_crop>` structure to the
respective buffer (stream) type and call the :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` ioctl respective buffer (stream) type and call the :ref:`VIDIOC_G_CROP <VIDIOC_G_CROP>` ioctl
with a pointer to this structure. The driver fills the rest of the with a pointer to this structure. The driver fills the rest of the
structure or returns the ``EINVAL`` error code if cropping is not supported. structure or returns the ``EINVAL`` error code if cropping is not supported.
To change the cropping rectangle applications initialize the ``type`` To change the cropping rectangle applications initialize the ``type``
and struct :ref:`v4l2_rect <v4l2-rect>` substructure named ``c`` of a and struct :c:type:`v4l2_rect` substructure named ``c`` of a
v4l2_crop structure and call the :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` ioctl with a pointer v4l2_crop structure and call the :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` ioctl with a pointer
to this structure. to this structure.
...@@ -75,7 +75,7 @@ When cropping is not supported then no parameters are changed and ...@@ -75,7 +75,7 @@ When cropping is not supported then no parameters are changed and
:ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` returns the ``EINVAL`` error code. :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` returns the ``EINVAL`` error code.
.. _v4l2-crop: .. c:type:: v4l2_crop
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -98,12 +98,12 @@ When cropping is not supported then no parameters are changed and ...@@ -98,12 +98,12 @@ When cropping is not supported then no parameters are changed and
- .. row 2 - .. row 2
- struct :ref:`v4l2_rect <v4l2-rect>` - struct :c:type:`v4l2_rect`
- ``c`` - ``c``
- Cropping rectangle. The same co-ordinate system as for struct - Cropping rectangle. The same co-ordinate system as for struct
:ref:`v4l2_cropcap <v4l2-cropcap>` ``bounds`` is used. :c:type:`v4l2_cropcap` ``bounds`` is used.
Return Value Return Value
......
...@@ -35,10 +35,10 @@ Description ...@@ -35,10 +35,10 @@ Description
=========== ===========
To get the current value of a control applications initialize the ``id`` To get the current value of a control applications initialize the ``id``
field of a struct :ref:`struct v4l2_control <v4l2-control>` and call the field of a struct :c:type:`struct v4l2_control <v4l2_control>` and call the
:ref:`VIDIOC_G_CTRL <VIDIOC_G_CTRL>` ioctl with a pointer to this structure. To change the :ref:`VIDIOC_G_CTRL <VIDIOC_G_CTRL>` ioctl with a pointer to this structure. To change the
value of a control applications initialize the ``id`` and ``value`` value of a control applications initialize the ``id`` and ``value``
fields of a struct :ref:`struct v4l2_control <v4l2-control>` and call the fields of a struct :c:type:`struct v4l2_control <v4l2_control>` and call the
:ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` ioctl. :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` ioctl.
When the ``id`` is invalid drivers return an ``EINVAL`` error code. When the When the ``id`` is invalid drivers return an ``EINVAL`` error code. When the
...@@ -55,7 +55,7 @@ These ioctls work only with user controls. For other control classes the ...@@ -55,7 +55,7 @@ These ioctls work only with user controls. For other control classes the
:ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` must be used. :ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` must be used.
.. _v4l2-control: .. c:type:: v4l2_control
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -90,13 +90,13 @@ appropriately. The generic error codes are described at the ...@@ -90,13 +90,13 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_control <v4l2-control>` ``id`` is invalid The struct :c:type:`v4l2_control` ``id`` is invalid
or the ``value`` is inappropriate for the given control (i.e. if a or the ``value`` is inappropriate for the given control (i.e. if a
menu item is selected that is not supported by the driver according menu item is selected that is not supported by the driver according
to :ref:`VIDIOC_QUERYMENU <VIDIOC_QUERYCTRL>`). to :ref:`VIDIOC_QUERYMENU <VIDIOC_QUERYCTRL>`).
ERANGE ERANGE
The struct :ref:`v4l2_control <v4l2-control>` ``value`` is out of The struct :c:type:`v4l2_control` ``value`` is out of
bounds. bounds.
EBUSY EBUSY
......
...@@ -44,8 +44,8 @@ To set DV timings for the input or output, applications use the ...@@ -44,8 +44,8 @@ To set DV timings for the input or output, applications use the
:ref:`VIDIOC_S_DV_TIMINGS <VIDIOC_G_DV_TIMINGS>` ioctl and to get the current timings, :ref:`VIDIOC_S_DV_TIMINGS <VIDIOC_G_DV_TIMINGS>` ioctl and to get the current timings,
applications use the :ref:`VIDIOC_G_DV_TIMINGS <VIDIOC_G_DV_TIMINGS>` ioctl. The detailed timing applications use the :ref:`VIDIOC_G_DV_TIMINGS <VIDIOC_G_DV_TIMINGS>` ioctl. The detailed timing
information is filled in using the structure struct information is filled in using the structure struct
:ref:`v4l2_dv_timings <v4l2-dv-timings>`. These ioctls take a :c:type:`v4l2_dv_timings`. These ioctls take a
pointer to the struct :ref:`v4l2_dv_timings <v4l2-dv-timings>` pointer to the struct :c:type:`v4l2_dv_timings`
structure as argument. If the ioctl is not supported or the timing structure as argument. If the ioctl is not supported or the timing
values are not correct, the driver returns ``EINVAL`` error code. values are not correct, the driver returns ``EINVAL`` error code.
...@@ -76,7 +76,7 @@ EBUSY ...@@ -76,7 +76,7 @@ EBUSY
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-bt-timings: .. c:type:: v4l2_bt_timings
.. flat-table:: struct v4l2_bt_timings .. flat-table:: struct v4l2_bt_timings
:header-rows: 0 :header-rows: 0
...@@ -239,7 +239,7 @@ EBUSY ...@@ -239,7 +239,7 @@ EBUSY
.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{7.0cm}|p{3.5cm}| .. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{7.0cm}|p{3.5cm}|
.. _v4l2-dv-timings: .. c:type:: v4l2_dv_timings
.. flat-table:: struct v4l2_dv_timings .. flat-table:: struct v4l2_dv_timings
:header-rows: 0 :header-rows: 0
...@@ -266,7 +266,7 @@ EBUSY ...@@ -266,7 +266,7 @@ EBUSY
- .. row 3 - .. row 3
- -
- struct :ref:`v4l2_bt_timings <v4l2-bt-timings>` - struct :c:type:`v4l2_bt_timings`
- ``bt`` - ``bt``
......
...@@ -37,7 +37,7 @@ driver, which is useful for random access into the stream without ...@@ -37,7 +37,7 @@ driver, which is useful for random access into the stream without
decoding it. decoding it.
To read the data applications must call :ref:`VIDIOC_G_ENC_INDEX <VIDIOC_G_ENC_INDEX>` with a To read the data applications must call :ref:`VIDIOC_G_ENC_INDEX <VIDIOC_G_ENC_INDEX>` with a
pointer to a struct :ref:`v4l2_enc_idx <v4l2-enc-idx>`. On success pointer to a struct :c:type:`v4l2_enc_idx`. On success
the driver fills the ``entry`` array, stores the number of elements the driver fills the ``entry`` array, stores the number of elements
written in the ``entries`` field, and initializes the ``entries_cap`` written in the ``entries`` field, and initializes the ``entries_cap``
field. field.
...@@ -57,7 +57,7 @@ video elementary streams. ...@@ -57,7 +57,7 @@ video elementary streams.
.. tabularcolumns:: |p{3.5cm}|p{5.6cm}|p{8.4cm}| .. tabularcolumns:: |p{3.5cm}|p{5.6cm}|p{8.4cm}|
.. _v4l2-enc-idx: .. c:type:: v4l2_enc_idx
.. flat-table:: struct v4l2_enc_idx .. flat-table:: struct v4l2_enc_idx
:header-rows: 0 :header-rows: 0
...@@ -93,7 +93,7 @@ video elementary streams. ...@@ -93,7 +93,7 @@ video elementary streams.
- .. row 4 - .. row 4
- struct :ref:`v4l2_enc_idx_entry <v4l2-enc-idx-entry>` - struct :c:type:`v4l2_enc_idx_entry`
- ``entry``\ [``V4L2_ENC_IDX_ENTRIES``] - ``entry``\ [``V4L2_ENC_IDX_ENTRIES``]
...@@ -105,7 +105,7 @@ video elementary streams. ...@@ -105,7 +105,7 @@ video elementary streams.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-enc-idx-entry: .. c:type:: v4l2_enc_idx_entry
.. flat-table:: struct v4l2_enc_idx_entry .. flat-table:: struct v4l2_enc_idx_entry
:header-rows: 0 :header-rows: 0
......
...@@ -46,13 +46,13 @@ to the same control class. ...@@ -46,13 +46,13 @@ to the same control class.
Applications must always fill in the ``count``, ``which``, ``controls`` Applications must always fill in the ``count``, ``which``, ``controls``
and ``reserved`` fields of struct and ``reserved`` fields of struct
:ref:`v4l2_ext_controls <v4l2-ext-controls>`, and initialize the :c:type:`v4l2_ext_controls`, and initialize the
struct :ref:`v4l2_ext_control <v4l2-ext-control>` array pointed to struct :c:type:`v4l2_ext_control` array pointed to
by the ``controls`` fields. by the ``controls`` fields.
To get the current value of a set of controls applications initialize To get the current value of a set of controls applications initialize
the ``id``, ``size`` and ``reserved2`` fields of each struct the ``id``, ``size`` and ``reserved2`` fields of each struct
:ref:`v4l2_ext_control <v4l2-ext-control>` and call the :c:type:`v4l2_ext_control` and call the
:ref:`VIDIOC_G_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` ioctl. String controls controls must also set the :ref:`VIDIOC_G_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` ioctl. String controls controls must also set the
``string`` field. Controls of compound types ``string`` field. Controls of compound types
(``V4L2_CTRL_FLAG_HAS_PAYLOAD`` is set) must set the ``ptr`` field. (``V4L2_CTRL_FLAG_HAS_PAYLOAD`` is set) must set the ``ptr`` field.
...@@ -74,14 +74,14 @@ by calling :ref:`VIDIOC_QUERY_EXT_CTRL <VIDIOC_QUERYCTRL>`. ...@@ -74,14 +74,14 @@ by calling :ref:`VIDIOC_QUERY_EXT_CTRL <VIDIOC_QUERYCTRL>`.
To change the value of a set of controls applications initialize the To change the value of a set of controls applications initialize the
``id``, ``size``, ``reserved2`` and ``value/value64/string/ptr`` fields ``id``, ``size``, ``reserved2`` and ``value/value64/string/ptr`` fields
of each struct :ref:`v4l2_ext_control <v4l2-ext-control>` and call of each struct :c:type:`v4l2_ext_control` and call
the :ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` ioctl. The controls will only be set if *all* the :ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` ioctl. The controls will only be set if *all*
control values are valid. control values are valid.
To check if a set of controls have correct values applications To check if a set of controls have correct values applications
initialize the ``id``, ``size``, ``reserved2`` and initialize the ``id``, ``size``, ``reserved2`` and
``value/value64/string/ptr`` fields of each struct ``value/value64/string/ptr`` fields of each struct
:ref:`v4l2_ext_control <v4l2-ext-control>` and call the :c:type:`v4l2_ext_control` and call the
:ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` ioctl. It is up to the driver whether wrong :ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` ioctl. It is up to the driver whether wrong
values are automatically adjusted to a valid value or if an error is values are automatically adjusted to a valid value or if an error is
returned. returned.
...@@ -90,7 +90,7 @@ When the ``id`` or ``which`` is invalid drivers return an ``EINVAL`` error ...@@ -90,7 +90,7 @@ When the ``id`` or ``which`` is invalid drivers return an ``EINVAL`` error
code. When the value is out of bounds drivers can choose to take the code. When the value is out of bounds drivers can choose to take the
closest valid value or return an ``ERANGE`` error code, whatever seems more closest valid value or return an ``ERANGE`` error code, whatever seems more
appropriate. In the first case the new value is set in struct appropriate. In the first case the new value is set in struct
:ref:`v4l2_ext_control <v4l2-ext-control>`. If the new control value :c:type:`v4l2_ext_control`. If the new control value
is inappropriate (e.g. the given menu index is not supported by the menu is inappropriate (e.g. the given menu index is not supported by the menu
control), then this will also result in an ``EINVAL`` error code error. control), then this will also result in an ``EINVAL`` error code error.
...@@ -102,7 +102,7 @@ still cause this situation. ...@@ -102,7 +102,7 @@ still cause this situation.
.. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{1.5cm}|p{11.8cm}| .. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{1.5cm}|p{11.8cm}|
.. _v4l2-ext-control: .. c:type:: v4l2_ext_control
.. cssclass: longtable .. cssclass: longtable
...@@ -236,7 +236,7 @@ still cause this situation. ...@@ -236,7 +236,7 @@ still cause this situation.
.. tabularcolumns:: |p{4.0cm}|p{2.0cm}|p{2.0cm}|p{8.5cm}| .. tabularcolumns:: |p{4.0cm}|p{2.0cm}|p{2.0cm}|p{8.5cm}|
.. _v4l2-ext-controls: .. c:type:: v4l2_ext_controls
.. cssclass:: longtable .. cssclass:: longtable
...@@ -362,7 +362,7 @@ still cause this situation. ...@@ -362,7 +362,7 @@ still cause this situation.
- .. row 7 - .. row 7
- struct :ref:`v4l2_ext_control <v4l2-ext-control>` * - struct :c:type:`v4l2_ext_control` *
- ``controls`` - ``controls``
...@@ -483,17 +483,17 @@ appropriately. The generic error codes are described at the ...@@ -483,17 +483,17 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_ext_control <v4l2-ext-control>` ``id`` is The struct :c:type:`v4l2_ext_control` ``id`` is
invalid, the struct :ref:`v4l2_ext_controls <v4l2-ext-controls>` invalid, the struct :c:type:`v4l2_ext_controls`
``which`` is invalid, or the struct ``which`` is invalid, or the struct
:ref:`v4l2_ext_control <v4l2-ext-control>` ``value`` was :c:type:`v4l2_ext_control` ``value`` was
inappropriate (e.g. the given menu index is not supported by the inappropriate (e.g. the given menu index is not supported by the
driver). This error code is also returned by the driver). This error code is also returned by the
:ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` and :ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` ioctls if two or :ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` and :ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` ioctls if two or
more control values are in conflict. more control values are in conflict.
ERANGE ERANGE
The struct :ref:`v4l2_ext_control <v4l2-ext-control>` ``value`` The struct :c:type:`v4l2_ext_control` ``value``
is out of bounds. is out of bounds.
EBUSY EBUSY
......
...@@ -49,13 +49,13 @@ VGA signal or graphics into a video signal. *Video Output Overlays* are ...@@ -49,13 +49,13 @@ VGA signal or graphics into a video signal. *Video Output Overlays* are
always non-destructive. always non-destructive.
To get the current parameters applications call the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` To get the current parameters applications call the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>`
ioctl with a pointer to a :ref:`struct v4l2_framebuffer <v4l2-framebuffer>` ioctl with a pointer to a :c:type:`struct v4l2_framebuffer <v4l2_framebuffer>`
structure. The driver fills all fields of the structure or returns an structure. The driver fills all fields of the structure or returns an
EINVAL error code when overlays are not supported. EINVAL error code when overlays are not supported.
To set the parameters for a *Video Output Overlay*, applications must To set the parameters for a *Video Output Overlay*, applications must
initialize the ``flags`` field of a struct initialize the ``flags`` field of a struct
:ref:`struct v4l2_framebuffer <v4l2-framebuffer>`. Since the framebuffer is :c:type:`struct v4l2_framebuffer <v4l2_framebuffer>`. Since the framebuffer is
implemented on the TV card all other parameters are determined by the implemented on the TV card all other parameters are determined by the
driver. When an application calls :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` with a pointer to driver. When an application calls :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` with a pointer to
this structure, the driver prepares for the overlay and returns the this structure, the driver prepares for the overlay and returns the
...@@ -77,7 +77,7 @@ destructive video overlay. ...@@ -77,7 +77,7 @@ destructive video overlay.
.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}| .. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}|
.. _v4l2-framebuffer: .. c:type:: v4l2_framebuffer
.. cssclass:: longtable .. cssclass:: longtable
...@@ -172,7 +172,7 @@ destructive video overlay. ...@@ -172,7 +172,7 @@ destructive video overlay.
- -
- -
- For *non-destructive Video Overlays* this field only defines a - For *non-destructive Video Overlays* this field only defines a
format for the struct :ref:`v4l2_window <v4l2-window>` format for the struct :c:type:`v4l2_window`
``chromakey`` field. ``chromakey`` field.
- .. row 10 - .. row 10
...@@ -207,7 +207,7 @@ destructive video overlay. ...@@ -207,7 +207,7 @@ destructive video overlay.
- Drivers and applications shall ignore this field. If applicable, - Drivers and applications shall ignore this field. If applicable,
the field order is selected with the the field order is selected with the
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, using the ``field`` :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, using the ``field``
field of struct :ref:`v4l2_window <v4l2-window>`. field of struct :c:type:`v4l2_window`.
- .. row 13 - .. row 13
...@@ -422,7 +422,7 @@ destructive video overlay. ...@@ -422,7 +422,7 @@ destructive video overlay.
- 0x0004 - 0x0004
- Use chroma-keying. The chroma-key color is determined by the - Use chroma-keying. The chroma-key color is determined by the
``chromakey`` field of struct :ref:`v4l2_window <v4l2-window>` ``chromakey`` field of struct :c:type:`v4l2_window`
and negotiated with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` and negotiated with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`
ioctl, see :ref:`overlay` and :ref:`osd`. ioctl, see :ref:`overlay` and :ref:`osd`.
...@@ -454,7 +454,7 @@ destructive video overlay. ...@@ -454,7 +454,7 @@ destructive video overlay.
images. The blend function is: output = (framebuffer pixel * alpha images. The blend function is: output = (framebuffer pixel * alpha
+ video pixel * (255 - alpha)) / 255. The alpha value is + video pixel * (255 - alpha)) / 255. The alpha value is
determined by the ``global_alpha`` field of struct determined by the ``global_alpha`` field of struct
:ref:`v4l2_window <v4l2-window>` and negotiated with the :c:type:`v4l2_window` and negotiated with the
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, see :ref:`overlay` :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, see :ref:`overlay`
and :ref:`osd`. and :ref:`osd`.
...@@ -478,11 +478,11 @@ destructive video overlay. ...@@ -478,11 +478,11 @@ destructive video overlay.
- Use source chroma-keying. The source chroma-key color is - Use source chroma-keying. The source chroma-key color is
determined by the ``chromakey`` field of struct determined by the ``chromakey`` field of struct
:ref:`v4l2_window <v4l2-window>` and negotiated with the :c:type:`v4l2_window` and negotiated with the
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, see :ref:`overlay` :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl, see :ref:`overlay`
and :ref:`osd`. Both chroma-keying are mutual exclusive to each and :ref:`osd`. Both chroma-keying are mutual exclusive to each
other, so same ``chromakey`` field of struct other, so same ``chromakey`` field of struct
:ref:`v4l2_window <v4l2-window>` is being used. :c:type:`v4l2_window` is being used.
Return Value Return Value
......
...@@ -40,15 +40,15 @@ These ioctls are used to negotiate the format of data (typically image ...@@ -40,15 +40,15 @@ These ioctls are used to negotiate the format of data (typically image
format) exchanged between driver and application. format) exchanged between driver and application.
To query the current parameters applications set the ``type`` field of a To query the current parameters applications set the ``type`` field of a
struct :ref:`struct v4l2_format <v4l2-format>` to the respective buffer (stream) struct :c:type:`struct v4l2_format <v4l2_format>` to the respective buffer (stream)
type. For example video capture devices use type. For example video capture devices use
``V4L2_BUF_TYPE_VIDEO_CAPTURE`` or ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` or
``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE``. When the application calls the ``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE``. When the application calls the
:ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this structure the driver fills :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` ioctl with a pointer to this structure the driver fills
the respective member of the ``fmt`` union. In case of video capture the respective member of the ``fmt`` union. In case of video capture
devices that is either the struct devices that is either the struct
:ref:`v4l2_pix_format <v4l2-pix-format>` ``pix`` or the struct :c:type:`v4l2_pix_format` ``pix`` or the struct
:ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` ``pix_mp`` :c:type:`v4l2_pix_format_mplane` ``pix_mp``
member. When the requested buffer type is not supported drivers return member. When the requested buffer type is not supported drivers return
an ``EINVAL`` error code. an ``EINVAL`` error code.
...@@ -58,7 +58,7 @@ For details see the documentation of the various devices types in ...@@ -58,7 +58,7 @@ For details see the documentation of the various devices types in
:ref:`devices`. Good practice is to query the current parameters :ref:`devices`. Good practice is to query the current parameters
first, and to modify only those parameters not suitable for the first, and to modify only those parameters not suitable for the
application. When the application calls the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl with application. When the application calls the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl with
a pointer to a :ref:`struct v4l2_format <v4l2-format>` structure the driver a pointer to a :c:type:`struct v4l2_format <v4l2_format>` structure the driver
checks and adjusts the parameters against hardware abilities. Drivers checks and adjusts the parameters against hardware abilities. Drivers
should not return an error code unless the ``type`` field is invalid, should not return an error code unless the ``type`` field is invalid,
this is a mechanism to fathom device capabilities and to approach this is a mechanism to fathom device capabilities and to approach
...@@ -85,7 +85,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical ...@@ -85,7 +85,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical
:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` returns for the same input or output. :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` returns for the same input or output.
.. _v4l2-format: .. c:type:: v4l2_format
.. tabularcolumns:: |p{1.2cm}|p{4.3cm}|p{3.0cm}|p{9.0cm}| .. tabularcolumns:: |p{1.2cm}|p{4.3cm}|p{3.0cm}|p{9.0cm}|
...@@ -112,7 +112,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical ...@@ -112,7 +112,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical
- .. row 3 - .. row 3
- -
- struct :ref:`v4l2_pix_format <v4l2-pix-format>` - struct :c:type:`v4l2_pix_format`
- ``pix`` - ``pix``
...@@ -122,7 +122,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical ...@@ -122,7 +122,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical
- .. row 4 - .. row 4
- -
- struct :ref:`v4l2_pix_format_mplane <v4l2-pix-format-mplane>` - struct :c:type:`v4l2_pix_format_mplane`
- ``pix_mp`` - ``pix_mp``
...@@ -133,7 +133,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical ...@@ -133,7 +133,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical
- .. row 5 - .. row 5
- -
- struct :ref:`v4l2_window <v4l2-window>` - struct :c:type:`v4l2_window`
- ``win`` - ``win``
...@@ -143,7 +143,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical ...@@ -143,7 +143,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical
- .. row 6 - .. row 6
- -
- struct :ref:`v4l2_vbi_format <v4l2-vbi-format>` - struct :c:type:`v4l2_vbi_format`
- ``vbi`` - ``vbi``
...@@ -154,7 +154,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical ...@@ -154,7 +154,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical
- .. row 7 - .. row 7
- -
- struct :ref:`v4l2_sliced_vbi_format <v4l2-sliced-vbi-format>` - struct :c:type:`v4l2_sliced_vbi_format`
- ``sliced`` - ``sliced``
...@@ -164,7 +164,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical ...@@ -164,7 +164,7 @@ The format as returned by :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` must be identical
- .. row 8 - .. row 8
- -
- struct :ref:`v4l2_sdr_format <v4l2-sdr-format>` - struct :c:type:`v4l2_sdr_format`
- ``sdr`` - ``sdr``
...@@ -189,5 +189,5 @@ appropriately. The generic error codes are described at the ...@@ -189,5 +189,5 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_format <v4l2-format>` ``type`` field is The struct :c:type:`v4l2_format` ``type`` field is
invalid or the requested buffer type not supported. invalid or the requested buffer type not supported.
...@@ -36,7 +36,7 @@ Description ...@@ -36,7 +36,7 @@ Description
To get the current tuner or modulator radio frequency applications set To get the current tuner or modulator radio frequency applications set
the ``tuner`` field of a struct the ``tuner`` field of a struct
:ref:`v4l2_frequency <v4l2-frequency>` to the respective tuner or :c:type:`v4l2_frequency` to the respective tuner or
modulator number (only input devices have tuners, only output devices modulator number (only input devices have tuners, only output devices
have modulators), zero out the ``reserved`` array and call the have modulators), zero out the ``reserved`` array and call the
:ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl with a pointer to this structure. The :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl with a pointer to this structure. The
...@@ -44,7 +44,7 @@ driver stores the current frequency in the ``frequency`` field. ...@@ -44,7 +44,7 @@ driver stores the current frequency in the ``frequency`` field.
To change the current tuner or modulator radio frequency applications To change the current tuner or modulator radio frequency applications
initialize the ``tuner``, ``type`` and ``frequency`` fields, and the initialize the ``tuner``, ``type`` and ``frequency`` fields, and the
``reserved`` array of a struct :ref:`v4l2_frequency <v4l2-frequency>` ``reserved`` array of a struct :c:type:`v4l2_frequency`
and call the :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl with a pointer to this and call the :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl with a pointer to this
structure. When the requested frequency is not possible the driver structure. When the requested frequency is not possible the driver
assumes the closest possible value. However :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` is a assumes the closest possible value. However :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` is a
...@@ -53,7 +53,7 @@ write-only ioctl, it does not return the actual new frequency. ...@@ -53,7 +53,7 @@ write-only ioctl, it does not return the actual new frequency.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-frequency: .. c:type:: v4l2_frequency
.. flat-table:: struct v4l2_frequency .. flat-table:: struct v4l2_frequency
:header-rows: 0 :header-rows: 0
...@@ -68,10 +68,10 @@ write-only ioctl, it does not return the actual new frequency. ...@@ -68,10 +68,10 @@ write-only ioctl, it does not return the actual new frequency.
- ``tuner`` - ``tuner``
- The tuner or modulator index number. This is the same value as in - The tuner or modulator index number. This is the same value as in
the struct :ref:`v4l2_input <v4l2-input>` ``tuner`` field and the struct :c:type:`v4l2_input` ``tuner`` field and
the struct :ref:`v4l2_tuner <v4l2-tuner>` ``index`` field, or the struct :c:type:`v4l2_tuner` ``index`` field, or
the struct :ref:`v4l2_output <v4l2-output>` ``modulator`` field the struct :c:type:`v4l2_output` ``modulator`` field
and the struct :ref:`v4l2_modulator <v4l2-modulator>` ``index`` and the struct :c:type:`v4l2_modulator` ``index``
field. field.
- .. row 2 - .. row 2
...@@ -81,7 +81,7 @@ write-only ioctl, it does not return the actual new frequency. ...@@ -81,7 +81,7 @@ write-only ioctl, it does not return the actual new frequency.
- ``type`` - ``type``
- The tuner type. This is the same value as in the struct - The tuner type. This is the same value as in the struct
:ref:`v4l2_tuner <v4l2-tuner>` ``type`` field. The type must be :c:type:`v4l2_tuner` ``type`` field. The type must be
set to ``V4L2_TUNER_RADIO`` for ``/dev/radioX`` device nodes, and set to ``V4L2_TUNER_RADIO`` for ``/dev/radioX`` device nodes, and
to ``V4L2_TUNER_ANALOG_TV`` for all others. Set this field to to ``V4L2_TUNER_ANALOG_TV`` for all others. Set this field to
``V4L2_TUNER_RADIO`` for modulators (currently only radio ``V4L2_TUNER_RADIO`` for modulators (currently only radio
...@@ -94,8 +94,8 @@ write-only ioctl, it does not return the actual new frequency. ...@@ -94,8 +94,8 @@ write-only ioctl, it does not return the actual new frequency.
- ``frequency`` - ``frequency``
- Tuning frequency in units of 62.5 kHz, or if the struct - Tuning frequency in units of 62.5 kHz, or if the struct
:ref:`v4l2_tuner <v4l2-tuner>` or struct :c:type:`v4l2_tuner` or struct
:ref:`v4l2_modulator <v4l2-modulator>` ``capability`` flag :c:type:`v4l2_modulator` ``capability`` flag
``V4L2_TUNER_CAP_LOW`` is set, in units of 62.5 Hz. A 1 Hz unit is ``V4L2_TUNER_CAP_LOW`` is set, in units of 62.5 Hz. A 1 Hz unit is
used when the ``capability`` flag ``V4L2_TUNER_CAP_1HZ`` is set. used when the ``capability`` flag ``V4L2_TUNER_CAP_1HZ`` is set.
......
...@@ -37,7 +37,7 @@ Description ...@@ -37,7 +37,7 @@ Description
To query the current video input applications call the To query the current video input applications call the
:ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` ioctl with a pointer to an integer where the driver :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` ioctl with a pointer to an integer where the driver
stores the number of the input, as in the struct stores the number of the input, as in the struct
:ref:`v4l2_input <v4l2-input>` ``index`` field. This ioctl will fail :c:type:`v4l2_input` ``index`` field. This ioctl will fail
only when there are no video inputs, returning ``EINVAL``. only when there are no video inputs, returning ``EINVAL``.
To select a video input applications store the number of the desired To select a video input applications store the number of the desired
......
...@@ -56,7 +56,7 @@ encoding. You usually do want to add them. ...@@ -56,7 +56,7 @@ encoding. You usually do want to add them.
.. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{13.3cm}| .. tabularcolumns:: |p{1.2cm}|p{3.0cm}|p{13.3cm}|
.. _v4l2-jpegcompression: .. c:type:: v4l2_jpegcompression
.. flat-table:: struct v4l2_jpegcompression .. flat-table:: struct v4l2_jpegcompression
:header-rows: 0 :header-rows: 0
......
...@@ -36,7 +36,7 @@ Description ...@@ -36,7 +36,7 @@ Description
To query the attributes of a modulator applications initialize the To query the attributes of a modulator applications initialize the
``index`` field and zero out the ``reserved`` array of a struct ``index`` field and zero out the ``reserved`` array of a struct
:ref:`v4l2_modulator <v4l2-modulator>` and call the :c:type:`v4l2_modulator` and call the
:ref:`VIDIOC_G_MODULATOR <VIDIOC_G_MODULATOR>` ioctl with a pointer to this structure. Drivers :ref:`VIDIOC_G_MODULATOR <VIDIOC_G_MODULATOR>` ioctl with a pointer to this structure. Drivers
fill the rest of the structure or return an ``EINVAL`` error code when the fill the rest of the structure or return an ``EINVAL`` error code when the
index is out of bounds. To enumerate all modulators applications shall index is out of bounds. To enumerate all modulators applications shall
...@@ -62,7 +62,7 @@ To change the radio frequency the ...@@ -62,7 +62,7 @@ To change the radio frequency the
.. tabularcolumns:: |p{2.9cm}|p{2.9cm}|p{5.8cm}|p{2.9cm}|p{3.0cm}| .. tabularcolumns:: |p{2.9cm}|p{2.9cm}|p{5.8cm}|p{2.9cm}|p{3.0cm}|
.. _v4l2-modulator: .. c:type:: v4l2_modulator
.. flat-table:: struct v4l2_modulator .. flat-table:: struct v4l2_modulator
:header-rows: 0 :header-rows: 0
...@@ -95,7 +95,7 @@ To change the radio frequency the ...@@ -95,7 +95,7 @@ To change the radio frequency the
- ``capability`` - ``capability``
- Modulator capability flags. No flags are defined for this field, - Modulator capability flags. No flags are defined for this field,
the tuner flags in struct :ref:`v4l2_tuner <v4l2-tuner>` are the tuner flags in struct :c:type:`v4l2_tuner` are
used accordingly. The audio flags indicate the ability to encode used accordingly. The audio flags indicate the ability to encode
audio subprograms. They will *not* change for example with the audio subprograms. They will *not* change for example with the
current video standard. current video standard.
...@@ -260,5 +260,5 @@ appropriately. The generic error codes are described at the ...@@ -260,5 +260,5 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_modulator <v4l2-modulator>` ``index`` is The struct :c:type:`v4l2_modulator` ``index`` is
out of bounds. out of bounds.
...@@ -37,7 +37,7 @@ Description ...@@ -37,7 +37,7 @@ Description
To query the current video output applications call the To query the current video output applications call the
:ref:`VIDIOC_G_OUTPUT <VIDIOC_G_OUTPUT>` ioctl with a pointer to an integer where the driver :ref:`VIDIOC_G_OUTPUT <VIDIOC_G_OUTPUT>` ioctl with a pointer to an integer where the driver
stores the number of the output, as in the struct stores the number of the output, as in the struct
:ref:`v4l2_output <v4l2-output>` ``index`` field. This ioctl will :c:type:`v4l2_output` ``index`` field. This ioctl will
fail only when there are no video outputs, returning the ``EINVAL`` error fail only when there are no video outputs, returning the ``EINVAL`` error
code. code.
......
...@@ -47,13 +47,13 @@ section discussing the :ref:`read() <func-read>` function. ...@@ -47,13 +47,13 @@ section discussing the :ref:`read() <func-read>` function.
To get and set the streaming parameters applications call the To get and set the streaming parameters applications call the
:ref:`VIDIOC_G_PARM <VIDIOC_G_PARM>` and :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` ioctl, respectively. They take a :ref:`VIDIOC_G_PARM <VIDIOC_G_PARM>` and :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` ioctl, respectively. They take a
pointer to a struct :ref:`struct v4l2_streamparm <v4l2-streamparm>` which contains a pointer to a struct :c:type:`struct v4l2_streamparm <v4l2_streamparm>` which contains a
union holding separate parameters for input and output devices. union holding separate parameters for input and output devices.
.. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}| .. tabularcolumns:: |p{3.5cm}|p{3.5cm}|p{3.5cm}|p{7.0cm}|
.. _v4l2-streamparm: .. c:type:: v4l2_streamparm
.. flat-table:: struct v4l2_streamparm .. flat-table:: struct v4l2_streamparm
:header-rows: 0 :header-rows: 0
...@@ -69,7 +69,7 @@ union holding separate parameters for input and output devices. ...@@ -69,7 +69,7 @@ union holding separate parameters for input and output devices.
- -
- The buffer (stream) type, same as struct - The buffer (stream) type, same as struct
:ref:`v4l2_format <v4l2-format>` ``type``, set by the :c:type:`v4l2_format` ``type``, set by the
application. See :ref:`v4l2-buf-type` application. See :ref:`v4l2-buf-type`
- .. row 2 - .. row 2
...@@ -84,7 +84,7 @@ union holding separate parameters for input and output devices. ...@@ -84,7 +84,7 @@ union holding separate parameters for input and output devices.
- .. row 3 - .. row 3
- -
- struct :ref:`v4l2_captureparm <v4l2-captureparm>` - struct :c:type:`v4l2_captureparm`
- ``capture`` - ``capture``
...@@ -94,7 +94,7 @@ union holding separate parameters for input and output devices. ...@@ -94,7 +94,7 @@ union holding separate parameters for input and output devices.
- .. row 4 - .. row 4
- -
- struct :ref:`v4l2_outputparm <v4l2-outputparm>` - struct :c:type:`v4l2_outputparm`
- ``output`` - ``output``
...@@ -114,7 +114,7 @@ union holding separate parameters for input and output devices. ...@@ -114,7 +114,7 @@ union holding separate parameters for input and output devices.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-captureparm: .. c:type:: v4l2_captureparm
.. flat-table:: struct v4l2_captureparm .. flat-table:: struct v4l2_captureparm
:header-rows: 0 :header-rows: 0
...@@ -140,7 +140,7 @@ union holding separate parameters for input and output devices. ...@@ -140,7 +140,7 @@ union holding separate parameters for input and output devices.
- .. row 3 - .. row 3
- struct :ref:`v4l2_fract <v4l2-fract>` - struct :c:type:`v4l2_fract`
- ``timeperframe`` - ``timeperframe``
...@@ -151,7 +151,7 @@ union holding separate parameters for input and output devices. ...@@ -151,7 +151,7 @@ union holding separate parameters for input and output devices.
Applications store here the desired frame period, drivers return Applications store here the desired frame period, drivers return
the actual frame period, which must be greater or equal to the the actual frame period, which must be greater or equal to the
nominal frame period determined by the current video standard nominal frame period determined by the current video standard
(struct :ref:`v4l2_standard <v4l2-standard>` ``frameperiod`` (struct :c:type:`v4l2_standard` ``frameperiod``
field). Changing the video standard (also implicitly by switching field). Changing the video standard (also implicitly by switching
the video input) may reset this parameter to the nominal frame the video input) may reset this parameter to the nominal frame
period. To reset manually applications can just set this field to period. To reset manually applications can just set this field to
...@@ -197,7 +197,7 @@ union holding separate parameters for input and output devices. ...@@ -197,7 +197,7 @@ union holding separate parameters for input and output devices.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-outputparm: .. c:type:: v4l2_outputparm
.. flat-table:: struct v4l2_outputparm .. flat-table:: struct v4l2_outputparm
:header-rows: 0 :header-rows: 0
...@@ -223,7 +223,7 @@ union holding separate parameters for input and output devices. ...@@ -223,7 +223,7 @@ union holding separate parameters for input and output devices.
- .. row 3 - .. row 3
- struct :ref:`v4l2_fract <v4l2-fract>` - struct :c:type:`v4l2_fract`
- ``timeperframe`` - ``timeperframe``
...@@ -241,7 +241,7 @@ union holding separate parameters for input and output devices. ...@@ -241,7 +241,7 @@ union holding separate parameters for input and output devices.
Applications store here the desired frame period, drivers return Applications store here the desired frame period, drivers return
the actual frame period, which must be greater or equal to the the actual frame period, which must be greater or equal to the
nominal frame period determined by the current video standard nominal frame period determined by the current video standard
(struct :ref:`v4l2_standard <v4l2-standard>` ``frameperiod`` (struct :c:type:`v4l2_standard` ``frameperiod``
field). Changing the video standard (also implicitly by switching field). Changing the video standard (also implicitly by switching
the video output) may reset this parameter to the nominal frame the video output) may reset this parameter to the nominal frame
period. To reset manually applications can just set this field to period. To reset manually applications can just set this field to
......
...@@ -41,43 +41,43 @@ Description ...@@ -41,43 +41,43 @@ Description
The ioctls are used to query and configure selection rectangles. The ioctls are used to query and configure selection rectangles.
To query the cropping (composing) rectangle set struct To query the cropping (composing) rectangle set struct
:ref:`v4l2_selection <v4l2-selection>` ``type`` field to the :c:type:`v4l2_selection` ``type`` field to the
respective buffer type. Do not use the multiplanar buffer types. Use respective buffer type. Do not use the multiplanar buffer types. Use
``V4L2_BUF_TYPE_VIDEO_CAPTURE`` instead of ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` instead of
``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE`` and use ``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE`` and use
``V4L2_BUF_TYPE_VIDEO_OUTPUT`` instead of ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` instead of
``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE``. The next step is setting the ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE``. The next step is setting the
value of struct :ref:`v4l2_selection <v4l2-selection>` ``target`` value of struct :c:type:`v4l2_selection` ``target``
field to ``V4L2_SEL_TGT_CROP`` (``V4L2_SEL_TGT_COMPOSE``). Please refer field to ``V4L2_SEL_TGT_CROP`` (``V4L2_SEL_TGT_COMPOSE``). Please refer
to table :ref:`v4l2-selections-common` or :ref:`selection-api` for to table :ref:`v4l2-selections-common` or :ref:`selection-api` for
additional targets. The ``flags`` and ``reserved`` fields of struct additional targets. The ``flags`` and ``reserved`` fields of struct
:ref:`v4l2_selection <v4l2-selection>` are ignored and they must be :c:type:`v4l2_selection` are ignored and they must be
filled with zeros. The driver fills the rest of the structure or returns filled with zeros. The driver fills the rest of the structure or returns
EINVAL error code if incorrect buffer type or target was used. If EINVAL error code if incorrect buffer type or target was used. If
cropping (composing) is not supported then the active rectangle is not cropping (composing) is not supported then the active rectangle is not
mutable and it is always equal to the bounds rectangle. Finally, the mutable and it is always equal to the bounds rectangle. Finally, the
struct :ref:`v4l2_rect <v4l2-rect>` ``r`` rectangle is filled with struct :c:type:`v4l2_rect` ``r`` rectangle is filled with
the current cropping (composing) coordinates. The coordinates are the current cropping (composing) coordinates. The coordinates are
expressed in driver-dependent units. The only exception are rectangles expressed in driver-dependent units. The only exception are rectangles
for images in raw formats, whose coordinates are always expressed in for images in raw formats, whose coordinates are always expressed in
pixels. pixels.
To change the cropping (composing) rectangle set the struct To change the cropping (composing) rectangle set the struct
:ref:`v4l2_selection <v4l2-selection>` ``type`` field to the :c:type:`v4l2_selection` ``type`` field to the
respective buffer type. Do not use multiplanar buffers. Use respective buffer type. Do not use multiplanar buffers. Use
``V4L2_BUF_TYPE_VIDEO_CAPTURE`` instead of ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` instead of
``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE``. Use ``V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE``. Use
``V4L2_BUF_TYPE_VIDEO_OUTPUT`` instead of ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` instead of
``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE``. The next step is setting the ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE``. The next step is setting the
value of struct :ref:`v4l2_selection <v4l2-selection>` ``target`` to value of struct :c:type:`v4l2_selection` ``target`` to
``V4L2_SEL_TGT_CROP`` (``V4L2_SEL_TGT_COMPOSE``). Please refer to table ``V4L2_SEL_TGT_CROP`` (``V4L2_SEL_TGT_COMPOSE``). Please refer to table
:ref:`v4l2-selections-common` or :ref:`selection-api` for additional :ref:`v4l2-selections-common` or :ref:`selection-api` for additional
targets. The struct :ref:`v4l2_rect <v4l2-rect>` ``r`` rectangle need targets. The struct :c:type:`v4l2_rect` ``r`` rectangle need
to be set to the desired active area. Field struct to be set to the desired active area. Field struct
:ref:`v4l2_selection <v4l2-selection>` ``reserved`` is ignored and :c:type:`v4l2_selection` ``reserved`` is ignored and
must be filled with zeros. The driver may adjust coordinates of the must be filled with zeros. The driver may adjust coordinates of the
requested rectangle. An application may introduce constraints to control requested rectangle. An application may introduce constraints to control
rounding behaviour. The struct :ref:`v4l2_selection <v4l2-selection>` rounding behaviour. The struct :c:type:`v4l2_selection`
``flags`` field must be set to one of the following: ``flags`` field must be set to one of the following:
- ``0`` - The driver can adjust the rectangle size freely and shall - ``0`` - The driver can adjust the rectangle size freely and shall
...@@ -102,7 +102,7 @@ horizontal and vertical offset and sizes are chosen according to ...@@ -102,7 +102,7 @@ horizontal and vertical offset and sizes are chosen according to
following priority: following priority:
1. Satisfy constraints from struct 1. Satisfy constraints from struct
:ref:`v4l2_selection <v4l2-selection>` ``flags``. :c:type:`v4l2_selection` ``flags``.
2. Adjust width, height, left, and top to hardware limits and 2. Adjust width, height, left, and top to hardware limits and
alignments. alignments.
...@@ -115,7 +115,7 @@ following priority: ...@@ -115,7 +115,7 @@ following priority:
5. Keep horizontal and vertical offset as close as possible to original 5. Keep horizontal and vertical offset as close as possible to original
ones. ones.
On success the struct :ref:`v4l2_rect <v4l2-rect>` ``r`` field On success the struct :c:type:`v4l2_rect` ``r`` field
contains the adjusted rectangle. When the parameters are unsuitable the contains the adjusted rectangle. When the parameters are unsuitable the
application may modify the cropping (composing) or image parameters and application may modify the cropping (composing) or image parameters and
repeat the cycle until satisfactory parameters have been negotiated. If repeat the cycle until satisfactory parameters have been negotiated. If
...@@ -140,7 +140,7 @@ Selection targets and flags are documented in ...@@ -140,7 +140,7 @@ Selection targets and flags are documented in
.. _v4l2-selection: .. c:type:: v4l2_selection
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -179,7 +179,7 @@ Selection targets and flags are documented in ...@@ -179,7 +179,7 @@ Selection targets and flags are documented in
- .. row 4 - .. row 4
- struct :ref:`v4l2_rect <v4l2-rect>` - struct :c:type:`v4l2_rect`
- ``r`` - ``r``
...@@ -207,7 +207,7 @@ EINVAL ...@@ -207,7 +207,7 @@ EINVAL
supported, or the ``flags`` argument is not valid. supported, or the ``flags`` argument is not valid.
ERANGE ERANGE
It is not possible to adjust struct :ref:`v4l2_rect <v4l2-rect>` It is not possible to adjust struct :c:type:`v4l2_rect`
``r`` rectangle to satisfy all constraints given in the ``flags`` ``r`` rectangle to satisfy all constraints given in the ``flags``
argument. argument.
......
...@@ -33,7 +33,7 @@ Description ...@@ -33,7 +33,7 @@ Description
To find out which data services are supported by a sliced VBI capture or To find out which data services are supported by a sliced VBI capture or
output device, applications initialize the ``type`` field of a struct output device, applications initialize the ``type`` field of a struct
:ref:`v4l2_sliced_vbi_cap <v4l2-sliced-vbi-cap>`, clear the :c:type:`v4l2_sliced_vbi_cap`, clear the
``reserved`` array and call the :ref:`VIDIOC_G_SLICED_VBI_CAP <VIDIOC_G_SLICED_VBI_CAP>` ioctl. The ``reserved`` array and call the :ref:`VIDIOC_G_SLICED_VBI_CAP <VIDIOC_G_SLICED_VBI_CAP>` ioctl. The
driver fills in the remaining fields or returns an ``EINVAL`` error code if driver fills in the remaining fields or returns an ``EINVAL`` error code if
the sliced VBI API is unsupported or ``type`` is invalid. the sliced VBI API is unsupported or ``type`` is invalid.
...@@ -44,7 +44,7 @@ the sliced VBI API is unsupported or ``type`` is invalid. ...@@ -44,7 +44,7 @@ the sliced VBI API is unsupported or ``type`` is invalid.
to write-read, in Linux 2.6.19. to write-read, in Linux 2.6.19.
.. _v4l2-sliced-vbi-cap: .. c:type:: v4l2_sliced_vbi_cap
.. tabularcolumns:: |p{1.2cm}|p{4.2cm}|p{4.1cm}|p{4.0cm}|p{4.0cm}| .. tabularcolumns:: |p{1.2cm}|p{4.2cm}|p{4.1cm}|p{4.0cm}|p{4.0cm}|
......
...@@ -38,9 +38,9 @@ To query and select the current video standard applications use the ...@@ -38,9 +38,9 @@ To query and select the current video standard applications use the
:ref:`VIDIOC_G_STD <VIDIOC_G_STD>` and :ref:`VIDIOC_S_STD <VIDIOC_G_STD>` ioctls which take a pointer to a :ref:`VIDIOC_G_STD <VIDIOC_G_STD>` and :ref:`VIDIOC_S_STD <VIDIOC_G_STD>` ioctls which take a pointer to a
:ref:`v4l2_std_id <v4l2-std-id>` type as argument. :ref:`VIDIOC_G_STD <VIDIOC_G_STD>` :ref:`v4l2_std_id <v4l2-std-id>` type as argument. :ref:`VIDIOC_G_STD <VIDIOC_G_STD>`
can return a single flag or a set of flags as in struct can return a single flag or a set of flags as in struct
:ref:`v4l2_standard <v4l2-standard>` field ``id``. The flags must be :c:type:`v4l2_standard` field ``id``. The flags must be
unambiguous such that they appear in only one enumerated unambiguous such that they appear in only one enumerated
:ref:`struct v4l2_standard <v4l2-standard>` structure. :c:type:`struct v4l2_standard <v4l2_standard>` structure.
:ref:`VIDIOC_S_STD <VIDIOC_G_STD>` accepts one or more flags, being a write-only ioctl it :ref:`VIDIOC_S_STD <VIDIOC_G_STD>` accepts one or more flags, being a write-only ioctl it
does not return the actual new standard as :ref:`VIDIOC_G_STD <VIDIOC_G_STD>` does. When does not return the actual new standard as :ref:`VIDIOC_G_STD <VIDIOC_G_STD>` does. When
......
...@@ -36,7 +36,7 @@ Description ...@@ -36,7 +36,7 @@ Description
To query the attributes of a tuner applications initialize the ``index`` To query the attributes of a tuner applications initialize the ``index``
field and zero out the ``reserved`` array of a struct field and zero out the ``reserved`` array of a struct
:ref:`v4l2_tuner <v4l2-tuner>` and call the ``VIDIOC_G_TUNER`` ioctl :c:type:`v4l2_tuner` and call the ``VIDIOC_G_TUNER`` ioctl
with a pointer to this structure. Drivers fill the rest of the structure with a pointer to this structure. Drivers fill the rest of the structure
or return an ``EINVAL`` error code when the index is out of bounds. To or return an ``EINVAL`` error code when the index is out of bounds. To
enumerate all tuners applications shall begin at index zero, enumerate all tuners applications shall begin at index zero,
...@@ -61,7 +61,7 @@ To change the radio frequency the ...@@ -61,7 +61,7 @@ To change the radio frequency the
.. tabularcolumns:: |p{1.3cm}|p{3.0cm}|p{6.6cm}|p{6.6cm}| .. tabularcolumns:: |p{1.3cm}|p{3.0cm}|p{6.6cm}|p{6.6cm}|
.. _v4l2-tuner: .. c:type:: v4l2_tuner
.. cssclass:: longtable .. cssclass:: longtable
...@@ -116,7 +116,7 @@ To change the radio frequency the ...@@ -116,7 +116,7 @@ To change the radio frequency the
If multiple frequency bands are supported, then ``capability`` is If multiple frequency bands are supported, then ``capability`` is
the union of all ``capability`` fields of each struct the union of all ``capability`` fields of each struct
:ref:`v4l2_frequency_band <v4l2-frequency-band>`. :c:type:`v4l2_frequency_band`.
- .. row 5 - .. row 5
...@@ -226,7 +226,7 @@ To change the radio frequency the ...@@ -226,7 +226,7 @@ To change the radio frequency the
received audio programs do not match. received audio programs do not match.
Currently this is the only field of struct Currently this is the only field of struct
:ref:`struct v4l2_tuner <v4l2-tuner>` applications can change. :c:type:`struct v4l2_tuner <v4l2_tuner>` applications can change.
- .. row 15 - .. row 15
...@@ -337,7 +337,7 @@ To change the radio frequency the ...@@ -337,7 +337,7 @@ To change the radio frequency the
multi-standard because the video standard is automatically multi-standard because the video standard is automatically
determined from the frequency band.) The set of supported video determined from the frequency band.) The set of supported video
standards is available from the struct standards is available from the struct
:ref:`v4l2_input <v4l2-input>` pointing to this tuner, see the :c:type:`v4l2_input` pointing to this tuner, see the
description of ioctl :ref:`VIDIOC_ENUMINPUT` description of ioctl :ref:`VIDIOC_ENUMINPUT`
for details. Only ``V4L2_TUNER_ANALOG_TV`` tuners can have this for details. Only ``V4L2_TUNER_ANALOG_TV`` tuners can have this
capability. capability.
...@@ -730,7 +730,7 @@ appropriately. The generic error codes are described at the ...@@ -730,7 +730,7 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
EINVAL EINVAL
The struct :ref:`v4l2_tuner <v4l2-tuner>` ``index`` is out of The struct :c:type:`v4l2_tuner` ``index`` is out of
bounds. bounds.
.. [#f1] .. [#f1]
......
...@@ -40,7 +40,7 @@ operations are not required, the application can use one of ...@@ -40,7 +40,7 @@ operations are not required, the application can use one of
``V4L2_BUF_FLAG_NO_CACHE_INVALIDATE`` and ``V4L2_BUF_FLAG_NO_CACHE_INVALIDATE`` and
``V4L2_BUF_FLAG_NO_CACHE_CLEAN`` flags to skip the respective step. ``V4L2_BUF_FLAG_NO_CACHE_CLEAN`` flags to skip the respective step.
The :ref:`struct v4l2_buffer <v4l2-buffer>` structure is specified in The :c:type:`struct v4l2_buffer <v4l2_buffer>` structure is specified in
:ref:`buffer`. :ref:`buffer`.
......
...@@ -39,14 +39,14 @@ Applications call the ``VIDIOC_QBUF`` ioctl to enqueue an empty ...@@ -39,14 +39,14 @@ Applications call the ``VIDIOC_QBUF`` ioctl to enqueue an empty
The semantics depend on the selected I/O method. The semantics depend on the selected I/O method.
To enqueue a buffer applications set the ``type`` field of a struct To enqueue a buffer applications set the ``type`` field of a struct
:ref:`v4l2_buffer <v4l2-buffer>` to the same buffer type as was :c:type:`v4l2_buffer` to the same buffer type as was
previously used with struct :ref:`v4l2_format <v4l2-format>` ``type`` previously used with struct :c:type:`v4l2_format` ``type``
and struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``. and struct :c:type:`v4l2_requestbuffers` ``type``.
Applications must also set the ``index`` field. Valid index numbers Applications must also set the ``index`` field. Valid index numbers
range from zero to the number of buffers allocated with range from zero to the number of buffers allocated with
:ref:`VIDIOC_REQBUFS` (struct :ref:`VIDIOC_REQBUFS` (struct
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``count``) minus :c:type:`v4l2_requestbuffers` ``count``) minus
one. The contents of the struct :ref:`struct v4l2_buffer <v4l2-buffer>` returned one. The contents of the struct :c:type:`struct v4l2_buffer <v4l2_buffer>` returned
by a :ref:`VIDIOC_QUERYBUF` ioctl will do as well. by a :ref:`VIDIOC_QUERYBUF` ioctl will do as well.
When the buffer is intended for output (``type`` is When the buffer is intended for output (``type`` is
``V4L2_BUF_TYPE_VIDEO_OUTPUT``, ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE``, ``V4L2_BUF_TYPE_VIDEO_OUTPUT``, ``V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE``,
...@@ -56,7 +56,7 @@ for details. Applications must also set ``flags`` to 0. The ...@@ -56,7 +56,7 @@ for details. Applications must also set ``flags`` to 0. The
``reserved2`` and ``reserved`` fields must be set to 0. When using the ``reserved2`` and ``reserved`` fields must be set to 0. When using the
:ref:`multi-planar API <planar-apis>`, the ``m.planes`` field must :ref:`multi-planar API <planar-apis>`, the ``m.planes`` field must
contain a userspace pointer to a filled-in array of struct contain a userspace pointer to a filled-in array of struct
:ref:`v4l2_plane <v4l2-plane>` and the ``length`` field must be set :c:type:`v4l2_plane` and the ``length`` field must be set
to the number of elements in that array. to the number of elements in that array.
To enqueue a :ref:`memory mapped <mmap>` buffer applications set the To enqueue a :ref:`memory mapped <mmap>` buffer applications set the
...@@ -70,7 +70,7 @@ To enqueue a :ref:`user pointer <userp>` buffer applications set the ...@@ -70,7 +70,7 @@ To enqueue a :ref:`user pointer <userp>` buffer applications set the
``memory`` field to ``V4L2_MEMORY_USERPTR``, the ``m.userptr`` field to ``memory`` field to ``V4L2_MEMORY_USERPTR``, the ``m.userptr`` field to
the address of the buffer and ``length`` to its size. When the the address of the buffer and ``length`` to its size. When the
multi-planar API is used, ``m.userptr`` and ``length`` members of the multi-planar API is used, ``m.userptr`` and ``length`` members of the
passed array of struct :ref:`v4l2_plane <v4l2-plane>` have to be used passed array of struct :c:type:`v4l2_plane` have to be used
instead. When ``VIDIOC_QBUF`` is called with a pointer to this structure instead. When ``VIDIOC_QBUF`` is called with a pointer to this structure
the driver sets the ``V4L2_BUF_FLAG_QUEUED`` flag and clears the the driver sets the ``V4L2_BUF_FLAG_QUEUED`` flag and clears the
``V4L2_BUF_FLAG_MAPPED`` and ``V4L2_BUF_FLAG_DONE`` flags in the ``V4L2_BUF_FLAG_MAPPED`` and ``V4L2_BUF_FLAG_DONE`` flags in the
...@@ -85,7 +85,7 @@ To enqueue a :ref:`DMABUF <dmabuf>` buffer applications set the ...@@ -85,7 +85,7 @@ To enqueue a :ref:`DMABUF <dmabuf>` buffer applications set the
``memory`` field to ``V4L2_MEMORY_DMABUF`` and the ``m.fd`` field to a ``memory`` field to ``V4L2_MEMORY_DMABUF`` and the ``m.fd`` field to a
file descriptor associated with a DMABUF buffer. When the multi-planar file descriptor associated with a DMABUF buffer. When the multi-planar
API is used the ``m.fd`` fields of the passed array of struct API is used the ``m.fd`` fields of the passed array of struct
:ref:`v4l2_plane <v4l2-plane>` have to be used instead. When :c:type:`v4l2_plane` have to be used instead. When
``VIDIOC_QBUF`` is called with a pointer to this structure the driver ``VIDIOC_QBUF`` is called with a pointer to this structure the driver
sets the ``V4L2_BUF_FLAG_QUEUED`` flag and clears the sets the ``V4L2_BUF_FLAG_QUEUED`` flag and clears the
``V4L2_BUF_FLAG_MAPPED`` and ``V4L2_BUF_FLAG_DONE`` flags in the ``V4L2_BUF_FLAG_MAPPED`` and ``V4L2_BUF_FLAG_DONE`` flags in the
...@@ -100,7 +100,7 @@ device is closed. ...@@ -100,7 +100,7 @@ device is closed.
Applications call the ``VIDIOC_DQBUF`` ioctl to dequeue a filled Applications call the ``VIDIOC_DQBUF`` ioctl to dequeue a filled
(capturing) or displayed (output) buffer from the driver's outgoing (capturing) or displayed (output) buffer from the driver's outgoing
queue. They just set the ``type``, ``memory`` and ``reserved`` fields of queue. They just set the ``type``, ``memory`` and ``reserved`` fields of
a struct :ref:`v4l2_buffer <v4l2-buffer>` as above, when a struct :c:type:`v4l2_buffer` as above, when
``VIDIOC_DQBUF`` is called with a pointer to this structure the driver ``VIDIOC_DQBUF`` is called with a pointer to this structure the driver
fills the remaining fields or returns an error code. The driver may also fills the remaining fields or returns an error code. The driver may also
set ``V4L2_BUF_FLAG_ERROR`` in the ``flags`` field. It indicates a set ``V4L2_BUF_FLAG_ERROR`` in the ``flags`` field. It indicates a
...@@ -114,7 +114,7 @@ queue. When the ``O_NONBLOCK`` flag was given to the ...@@ -114,7 +114,7 @@ queue. When the ``O_NONBLOCK`` flag was given to the
:ref:`open() <func-open>` function, ``VIDIOC_DQBUF`` returns :ref:`open() <func-open>` function, ``VIDIOC_DQBUF`` returns
immediately with an ``EAGAIN`` error code when no buffer is available. immediately with an ``EAGAIN`` error code when no buffer is available.
The :ref:`struct v4l2_buffer <v4l2-buffer>` structure is specified in The :c:type:`struct v4l2_buffer <v4l2_buffer>` structure is specified in
:ref:`buffer`. :ref:`buffer`.
......
...@@ -37,7 +37,7 @@ Description ...@@ -37,7 +37,7 @@ Description
The hardware may be able to detect the current DV timings automatically, The hardware may be able to detect the current DV timings automatically,
similar to sensing the video standard. To do so, applications call similar to sensing the video standard. To do so, applications call
:ref:`VIDIOC_QUERY_DV_TIMINGS` with a pointer to a struct :ref:`VIDIOC_QUERY_DV_TIMINGS` with a pointer to a struct
:ref:`v4l2_dv_timings <v4l2-dv-timings>`. Once the hardware detects :c:type:`v4l2_dv_timings`. Once the hardware detects
the timings, it will fill in the timings structure. the timings, it will fill in the timings structure.
.. note:: .. note::
......
...@@ -36,17 +36,17 @@ be used to query the status of a buffer at any time after buffers have ...@@ -36,17 +36,17 @@ be used to query the status of a buffer at any time after buffers have
been allocated with the :ref:`VIDIOC_REQBUFS` ioctl. been allocated with the :ref:`VIDIOC_REQBUFS` ioctl.
Applications set the ``type`` field of a struct Applications set the ``type`` field of a struct
:ref:`v4l2_buffer <v4l2-buffer>` to the same buffer type as was :c:type:`v4l2_buffer` to the same buffer type as was
previously used with struct :ref:`v4l2_format <v4l2-format>` ``type`` previously used with struct :c:type:`v4l2_format` ``type``
and struct :ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``, and struct :c:type:`v4l2_requestbuffers` ``type``,
and the ``index`` field. Valid index numbers range from zero to the and the ``index`` field. Valid index numbers range from zero to the
number of buffers allocated with number of buffers allocated with
:ref:`VIDIOC_REQBUFS` (struct :ref:`VIDIOC_REQBUFS` (struct
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``count``) minus :c:type:`v4l2_requestbuffers` ``count``) minus
one. The ``reserved`` and ``reserved2`` fields must be set to 0. When one. The ``reserved`` and ``reserved2`` fields must be set to 0. When
using the :ref:`multi-planar API <planar-apis>`, the ``m.planes`` using the :ref:`multi-planar API <planar-apis>`, the ``m.planes``
field must contain a userspace pointer to an array of struct field must contain a userspace pointer to an array of struct
:ref:`v4l2_plane <v4l2-plane>` and the ``length`` field has to be set :c:type:`v4l2_plane` and the ``length`` field has to be set
to the number of elements in that array. After calling to the number of elements in that array. After calling
:ref:`VIDIOC_QUERYBUF` with a pointer to this structure drivers return an :ref:`VIDIOC_QUERYBUF` with a pointer to this structure drivers return an
error code or fill the rest of the structure. error code or fill the rest of the structure.
...@@ -59,11 +59,11 @@ set to the current I/O method. For the single-planar API, the ...@@ -59,11 +59,11 @@ set to the current I/O method. For the single-planar API, the
device memory, the ``length`` field its size. For the multi-planar API, device memory, the ``length`` field its size. For the multi-planar API,
fields ``m.mem_offset`` and ``length`` in the ``m.planes`` array fields ``m.mem_offset`` and ``length`` in the ``m.planes`` array
elements will be used instead and the ``length`` field of struct elements will be used instead and the ``length`` field of struct
:ref:`v4l2_buffer <v4l2-buffer>` is set to the number of filled-in :c:type:`v4l2_buffer` is set to the number of filled-in
array elements. The driver may or may not set the remaining fields and array elements. The driver may or may not set the remaining fields and
flags, they are meaningless in this context. flags, they are meaningless in this context.
The :ref:`struct v4l2_buffer <v4l2-buffer>` structure is specified in The :c:type:`struct v4l2_buffer <v4l2_buffer>` structure is specified in
:ref:`buffer`. :ref:`buffer`.
......
...@@ -34,14 +34,14 @@ Description ...@@ -34,14 +34,14 @@ Description
All V4L2 devices support the ``VIDIOC_QUERYCAP`` ioctl. It is used to All V4L2 devices support the ``VIDIOC_QUERYCAP`` ioctl. It is used to
identify kernel devices compatible with this specification and to obtain identify kernel devices compatible with this specification and to obtain
information about driver and hardware capabilities. The ioctl takes a information about driver and hardware capabilities. The ioctl takes a
pointer to a struct :ref:`v4l2_capability <v4l2-capability>` which is pointer to a struct :c:type:`v4l2_capability` which is
filled by the driver. When the driver is not compatible with this filled by the driver. When the driver is not compatible with this
specification the ioctl returns an ``EINVAL`` error code. specification the ioctl returns an ``EINVAL`` error code.
.. tabularcolumns:: |p{1.5cm}|p{2.5cm}|p{13cm}| .. tabularcolumns:: |p{1.5cm}|p{2.5cm}|p{13cm}|
.. _v4l2-capability: .. c:type:: v4l2_capability
.. flat-table:: struct v4l2_capability .. flat-table:: struct v4l2_capability
:header-rows: 0 :header-rows: 0
...@@ -373,7 +373,7 @@ specification the ioctl returns an ``EINVAL`` error code. ...@@ -373,7 +373,7 @@ specification the ioctl returns an ``EINVAL`` error code.
- 0x00200000 - 0x00200000
- The device supports the struct - The device supports the struct
:ref:`v4l2_pix_format <v4l2-pix-format>` extended fields. :c:type:`v4l2_pix_format` extended fields.
- .. row 22 - .. row 22
...@@ -435,6 +435,6 @@ appropriately. The generic error codes are described at the ...@@ -435,6 +435,6 @@ appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter. :ref:`Generic Error Codes <gen-errors>` chapter.
.. [#f1] .. [#f1]
The struct :ref:`v4l2_framebuffer <v4l2-framebuffer>` lacks an The struct :c:type:`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.
...@@ -592,7 +592,7 @@ See also the examples in :ref:`control`. ...@@ -592,7 +592,7 @@ See also the examples in :ref:`control`.
pass a string of length 8 to pass a string of length 8 to
:ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` you need to :ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` you need to
set the ``size`` field of struct set the ``size`` field of struct
:ref:`v4l2_ext_control <v4l2-ext-control>` to 9. For :c:type:`v4l2_ext_control` to 9. For
:ref:`VIDIOC_G_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` you can set :ref:`VIDIOC_G_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` you can set
the ``size`` field to ``maximum`` + 1. Which character encoding is the ``size`` field to ``maximum`` + 1. Which character encoding is
used will depend on the string control itself and should be part used will depend on the string control itself and should be part
...@@ -769,7 +769,7 @@ See also the examples in :ref:`control`. ...@@ -769,7 +769,7 @@ See also the examples in :ref:`control`.
- This control has a pointer type, so its value has to be accessed - This control has a pointer type, so its value has to be accessed
using one of the pointer fields of struct using one of the pointer fields of struct
:ref:`v4l2_ext_control <v4l2-ext-control>`. This flag is set :c:type:`v4l2_ext_control`. This flag is set
for controls that are an array, string, or have a compound type. for controls that are an array, string, or have a compound type.
In all cases you have to set a pointer to memory containing the In all cases you have to set a pointer to memory containing the
payload of the control. payload of the control.
......
...@@ -43,7 +43,7 @@ configures the driver into DMABUF I/O mode without performing any direct ...@@ -43,7 +43,7 @@ configures the driver into DMABUF I/O mode without performing any direct
allocation. allocation.
To allocate device buffers applications initialize all fields of the To allocate device buffers applications initialize all fields of the
:ref:`struct v4l2_requestbuffers <v4l2-requestbuffers>` structure. They set the ``type`` :c:type:`struct v4l2_requestbuffers <v4l2_requestbuffers>` structure. They set the ``type``
field to the respective stream or buffer type, the ``count`` field to field to the respective stream or buffer type, the ``count`` field to
the desired number of buffers, ``memory`` must be set to the requested the desired number of buffers, ``memory`` must be set to the requested
I/O method and the ``reserved`` array must be zeroed. When the ioctl is I/O method and the ``reserved`` array must be zeroed. When the ioctl is
...@@ -65,7 +65,7 @@ any DMA in progress, an implicit ...@@ -65,7 +65,7 @@ any DMA in progress, an implicit
:ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>`. :ref:`VIDIOC_STREAMOFF <VIDIOC_STREAMON>`.
.. _v4l2-requestbuffers: .. c:type:: v4l2_requestbuffers
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
...@@ -90,7 +90,7 @@ any DMA in progress, an implicit ...@@ -90,7 +90,7 @@ any DMA in progress, an implicit
- ``type`` - ``type``
- Type of the stream or buffers, this is the same as the struct - Type of the stream or buffers, this is the same as the struct
:ref:`v4l2_format <v4l2-format>` ``type`` field. See :c:type:`v4l2_format` ``type`` field. See
:ref:`v4l2-buf-type` for valid values. :ref:`v4l2-buf-type` for valid values.
- .. row 3 - .. row 3
......
...@@ -35,12 +35,12 @@ Start a hardware frequency seek from the current frequency. To do this ...@@ -35,12 +35,12 @@ Start a hardware frequency seek from the current frequency. To do this
applications initialize the ``tuner``, ``type``, ``seek_upward``, applications initialize the ``tuner``, ``type``, ``seek_upward``,
``wrap_around``, ``spacing``, ``rangelow`` and ``rangehigh`` fields, and ``wrap_around``, ``spacing``, ``rangelow`` and ``rangehigh`` fields, and
zero out the ``reserved`` array of a struct zero out the ``reserved`` array of a struct
:ref:`v4l2_hw_freq_seek <v4l2-hw-freq-seek>` and call the :c:type:`v4l2_hw_freq_seek` and call the
``VIDIOC_S_HW_FREQ_SEEK`` ioctl with a pointer to this structure. ``VIDIOC_S_HW_FREQ_SEEK`` ioctl with a pointer to this structure.
The ``rangelow`` and ``rangehigh`` fields can be set to a non-zero value The ``rangelow`` and ``rangehigh`` fields can be set to a non-zero value
to tell the driver to search a specific band. If the struct to tell the driver to search a specific band. If the struct
:ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field has the :c:type:`v4l2_tuner` ``capability`` field has the
``V4L2_TUNER_CAP_HWSEEK_PROG_LIM`` flag set, these values must fall ``V4L2_TUNER_CAP_HWSEEK_PROG_LIM`` flag set, these values must fall
within one of the bands returned by within one of the bands returned by
:ref:`VIDIOC_ENUM_FREQ_BANDS`. If the :ref:`VIDIOC_ENUM_FREQ_BANDS`. If the
...@@ -61,7 +61,7 @@ error code is returned and no seek takes place. ...@@ -61,7 +61,7 @@ error code is returned and no seek takes place.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-hw-freq-seek: .. c:type:: v4l2_hw_freq_seek
.. flat-table:: struct v4l2_hw_freq_seek .. flat-table:: struct v4l2_hw_freq_seek
:header-rows: 0 :header-rows: 0
...@@ -76,8 +76,8 @@ error code is returned and no seek takes place. ...@@ -76,8 +76,8 @@ error code is returned and no seek takes place.
- ``tuner`` - ``tuner``
- The tuner index number. This is the same value as in the struct - The tuner index number. This is the same value as in the struct
:ref:`v4l2_input <v4l2-input>` ``tuner`` field and the struct :c:type:`v4l2_input` ``tuner`` field and the struct
:ref:`v4l2_tuner <v4l2-tuner>` ``index`` field. :c:type:`v4l2_tuner` ``index`` field.
- .. row 2 - .. row 2
...@@ -86,7 +86,7 @@ error code is returned and no seek takes place. ...@@ -86,7 +86,7 @@ error code is returned and no seek takes place.
- ``type`` - ``type``
- The tuner type. This is the same value as in the struct - The tuner type. This is the same value as in the struct
:ref:`v4l2_tuner <v4l2-tuner>` ``type`` field. See :c:type:`v4l2_tuner` ``type`` field. See
:ref:`v4l2-tuner-type` :ref:`v4l2-tuner-type`
- .. row 3 - .. row 3
...@@ -105,7 +105,7 @@ error code is returned and no seek takes place. ...@@ -105,7 +105,7 @@ error code is returned and no seek takes place.
- ``wrap_around`` - ``wrap_around``
- If non-zero, wrap around when at the end of the frequency range, - If non-zero, wrap around when at the end of the frequency range,
else stop seeking. The struct :ref:`v4l2_tuner <v4l2-tuner>` else stop seeking. The struct :c:type:`v4l2_tuner`
``capability`` field will tell you what the hardware supports. ``capability`` field will tell you what the hardware supports.
- .. row 5 - .. row 5
...@@ -126,9 +126,9 @@ error code is returned and no seek takes place. ...@@ -126,9 +126,9 @@ error code is returned and no seek takes place.
- If non-zero, the lowest tunable frequency of the band to search in - If non-zero, the lowest tunable frequency of the band to search in
units of 62.5 kHz, or if the struct units of 62.5 kHz, or if the struct
:ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field has the :c:type:`v4l2_tuner` ``capability`` field has the
``V4L2_TUNER_CAP_LOW`` flag set, in units of 62.5 Hz or if the ``V4L2_TUNER_CAP_LOW`` flag set, in units of 62.5 Hz or if the
struct :ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field has struct :c:type:`v4l2_tuner` ``capability`` field has
the ``V4L2_TUNER_CAP_1HZ`` flag set, in units of 1 Hz. If the ``V4L2_TUNER_CAP_1HZ`` flag set, in units of 1 Hz. If
``rangelow`` is zero a reasonable default value is used. ``rangelow`` is zero a reasonable default value is used.
...@@ -140,9 +140,9 @@ error code is returned and no seek takes place. ...@@ -140,9 +140,9 @@ error code is returned and no seek takes place.
- If non-zero, the highest tunable frequency of the band to search - If non-zero, the highest tunable frequency of the band to search
in units of 62.5 kHz, or if the struct in units of 62.5 kHz, or if the struct
:ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field has the :c:type:`v4l2_tuner` ``capability`` field has the
``V4L2_TUNER_CAP_LOW`` flag set, in units of 62.5 Hz or if the ``V4L2_TUNER_CAP_LOW`` flag set, in units of 62.5 Hz or if the
struct :ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field has struct :c:type:`v4l2_tuner` ``capability`` field has
the ``V4L2_TUNER_CAP_1HZ`` flag set, in units of 1 Hz. If the ``V4L2_TUNER_CAP_1HZ`` flag set, in units of 1 Hz. If
``rangehigh`` is zero a reasonable default value is used. ``rangehigh`` is zero a reasonable default value is used.
......
...@@ -69,7 +69,7 @@ accordingly. ...@@ -69,7 +69,7 @@ accordingly.
Both ioctls take a pointer to an integer, the desired buffer or stream Both ioctls take a pointer to an integer, the desired buffer or stream
type. This is the same as struct type. This is the same as struct
:ref:`v4l2_requestbuffers <v4l2-requestbuffers>` ``type``. :c:type:`v4l2_requestbuffers` ``type``.
If ``VIDIOC_STREAMON`` is called when streaming is already in progress, If ``VIDIOC_STREAMON`` is called when streaming is already in progress,
or if ``VIDIOC_STREAMOFF`` is called when streaming is already stopped, or if ``VIDIOC_STREAMOFF`` is called when streaming is already stopped,
......
...@@ -113,7 +113,7 @@ multiple pads of the same sub-device is not defined. ...@@ -113,7 +113,7 @@ multiple pads of the same sub-device is not defined.
- .. row 6 - .. row 6
- struct :ref:`v4l2_fract <v4l2-fract>` - struct :c:type:`v4l2_fract`
- ``interval`` - ``interval``
......
...@@ -100,7 +100,7 @@ modified format should be as close as possible to the original request. ...@@ -100,7 +100,7 @@ modified format should be as close as possible to the original request.
- .. row 3 - .. row 3
- struct :ref:`v4l2_rect <v4l2-rect>` - struct :c:type:`v4l2_rect`
- ``rect`` - ``rect``
......
...@@ -87,7 +87,7 @@ the same sub-device is not defined. ...@@ -87,7 +87,7 @@ the same sub-device is not defined.
- .. row 2 - .. row 2
- struct :ref:`v4l2_fract <v4l2-fract>` - struct :c:type:`v4l2_fract`
- ``interval`` - ``interval``
......
...@@ -110,7 +110,7 @@ Selection targets and flags are documented in ...@@ -110,7 +110,7 @@ Selection targets and flags are documented in
- .. row 5 - .. row 5
- struct :ref:`v4l2_rect <v4l2-rect>` - struct :c:type:`v4l2_rect`
- ``r`` - ``r``
......
...@@ -41,7 +41,7 @@ using the :ref:`VIDIOC_DQEVENT` ioctl. ...@@ -41,7 +41,7 @@ using the :ref:`VIDIOC_DQEVENT` ioctl.
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
.. _v4l2-event-subscription: .. c:type:: v4l2_event_subscription
.. flat-table:: struct v4l2_event_subscription .. flat-table:: struct v4l2_event_subscription
:header-rows: 0 :header-rows: 0
......
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