414 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			414 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
 | |
| .. include:: <isonum.txt>
 | |
| 
 | |
| .. _v4l2spec:
 | |
| 
 | |
| ############################
 | |
| Part I - Video for Linux API
 | |
| ############################
 | |
| 
 | |
| This part describes the Video for Linux API version 2 (V4L2 API) specification.
 | |
| 
 | |
| **Revision 4.5**
 | |
| 
 | |
| .. toctree::
 | |
|     :caption: Table of Contents
 | |
|     :numbered:
 | |
|     :maxdepth: 5
 | |
| 
 | |
|     common
 | |
|     pixfmt
 | |
|     io
 | |
|     devices
 | |
|     libv4l
 | |
|     compat
 | |
|     user-func
 | |
|     common-defs
 | |
|     videodev
 | |
|     capture-example
 | |
|     v4l2grab-example
 | |
|     biblio
 | |
| 
 | |
| 
 | |
| **********************
 | |
| Revision and Copyright
 | |
| **********************
 | |
| 
 | |
| Authors, in alphabetical order:
 | |
| 
 | |
| - Ailus, Sakari <sakari.ailus@iki.fi>
 | |
| 
 | |
|   - Subdev selections API.
 | |
| 
 | |
| - Carvalho Chehab, Mauro <mchehab+samsung@kernel.org>
 | |
| 
 | |
|   - Documented libv4l, designed and added v4l2grab example, Remote Controller chapter.
 | |
| 
 | |
| - Dirks, Bill
 | |
| 
 | |
|   - Original author of the V4L2 API and documentation.
 | |
| 
 | |
| - Figa, Tomasz <tfiga@chromium.org>
 | |
| 
 | |
|   - Documented the memory-to-memory decoder interface.
 | |
|   - Documented the memory-to-memory encoder interface.
 | |
| 
 | |
| - H Schimek, Michael <mschimek@gmx.at>
 | |
| 
 | |
|   - Original author of the V4L2 API and documentation.
 | |
| 
 | |
| - Karicheri, Muralidharan <m-karicheri2@ti.com>
 | |
| 
 | |
|   - Documented the Digital Video timings API.
 | |
| 
 | |
| - Osciak, Pawel <posciak@chromium.org>
 | |
| 
 | |
|   - Documented the memory-to-memory decoder interface.
 | |
|   - Documented the memory-to-memory encoder interface.
 | |
| 
 | |
| - Osciak, Pawel <pawel@osciak.com>
 | |
| 
 | |
|   - Designed and documented the multi-planar API.
 | |
| 
 | |
| - Palosaari, Antti <crope@iki.fi>
 | |
| 
 | |
|   - SDR API.
 | |
| 
 | |
| - Ribalda, Ricardo
 | |
| 
 | |
|   - Introduce HSV formats and other minor changes.
 | |
| 
 | |
| - Rubli, Martin
 | |
| 
 | |
|   - Designed and documented the VIDIOC_ENUM_FRAMESIZES and VIDIOC_ENUM_FRAMEINTERVALS ioctls.
 | |
| 
 | |
| - Walls, Andy <awalls@md.metrocast.net>
 | |
| 
 | |
|   - Documented the fielded V4L2_MPEG_STREAM_VBI_FMT_IVTV MPEG stream embedded, sliced VBI data format in this specification.
 | |
| 
 | |
| - Verkuil, Hans <hverkuil@xs4all.nl>
 | |
| 
 | |
|   - Designed and documented the VIDIOC_LOG_STATUS ioctl, the extended control ioctls, major parts of the sliced VBI API, the MPEG encoder and decoder APIs and the DV Timings API.
 | |
| 
 | |
| **Copyright** |copy| 1999-2018: Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab, Pawel Osciak, Sakari Ailus & Antti Palosaari, Tomasz Figa
 | |
| 
 | |
| Except when explicitly stated as GPL, programming examples within this
 | |
| part can be used and distributed without restrictions.
 | |
| 
 | |
| ****************
 | |
| Revision History
 | |
| ****************
 | |
| 
 | |
| :revision: 4.10 / 2016-07-15 (*rr*)
 | |
| 
 | |
| Introduce HSV formats.
 | |
| 
 | |
| 
 | |
| :revision: 4.5 / 2015-10-29 (*rr*)
 | |
| 
 | |
| Extend VIDIOC_G_EXT_CTRLS;. Replace ctrl_class with a new union with
 | |
| ctrl_class and which. Which is used to select the current value of the
 | |
| control or the default value.
 | |
| 
 | |
| 
 | |
| :revision: 4.4 / 2015-05-26 (*ap*)
 | |
| 
 | |
| Renamed V4L2_TUNER_ADC to V4L2_TUNER_SDR. Added
 | |
| V4L2_CID_RF_TUNER_RF_GAIN control. Added transmitter support for
 | |
| Software Defined Radio (SDR) Interface.
 | |
| 
 | |
| 
 | |
| :revision: 4.1 / 2015-02-13 (*mcc*)
 | |
| 
 | |
| Fix documentation for media controller device nodes and add support for
 | |
| DVB device nodes. Add support for Tuner sub-device.
 | |
| 
 | |
| 
 | |
| :revision: 3.19 / 2014-12-05 (*hv*)
 | |
| 
 | |
| Rewrote Colorspace chapter, added new enum
 | |
| :c:type:`v4l2_ycbcr_encoding` and enum
 | |
| :c:type:`v4l2_quantization` fields to struct
 | |
| :c:type:`v4l2_pix_format`, struct
 | |
| :c:type:`v4l2_pix_format_mplane` and struct
 | |
| :c:type:`v4l2_mbus_framefmt`.
 | |
| 
 | |
| 
 | |
| :revision: 3.17 / 2014-08-04 (*lp, hv*)
 | |
| 
 | |
| Extended struct :c:type:`v4l2_pix_format`. Added
 | |
| format flags. Added compound control types and VIDIOC_QUERY_EXT_CTRL.
 | |
| 
 | |
| 
 | |
| :revision: 3.15 / 2014-02-03 (*hv, ap*)
 | |
| 
 | |
| Update several sections of "Common API Elements": "Opening and Closing
 | |
| Devices" "Querying Capabilities", "Application Priority", "Video Inputs
 | |
| and Outputs", "Audio Inputs and Outputs" "Tuners and Modulators", "Video
 | |
| Standards" and "Digital Video (DV) Timings". Added SDR API.
 | |
| 
 | |
| 
 | |
| :revision: 3.14 / 2013-11-25 (*rr*)
 | |
| 
 | |
| Set width and height as unsigned on v4l2_rect.
 | |
| 
 | |
| 
 | |
| :revision: 3.11 / 2013-05-26 (*hv*)
 | |
| 
 | |
| Remove obsolete VIDIOC_DBG_G_CHIP_IDENT ioctl.
 | |
| 
 | |
| 
 | |
| :revision: 3.10 / 2013-03-25 (*hv*)
 | |
| 
 | |
| Remove obsolete and unused DV_PRESET ioctls: VIDIOC_G_DV_PRESET,
 | |
| VIDIOC_S_DV_PRESET, VIDIOC_QUERY_DV_PRESET and
 | |
| VIDIOC_ENUM_DV_PRESET. Remove the related v4l2_input/output
 | |
| capability flags V4L2_IN_CAP_PRESETS and V4L2_OUT_CAP_PRESETS.
 | |
| Added VIDIOC_DBG_G_CHIP_INFO.
 | |
| 
 | |
| 
 | |
| :revision: 3.9 / 2012-12-03 (*sa, sn*)
 | |
| 
 | |
| Added timestamp types to v4l2_buffer. Added
 | |
| V4L2_EVENT_CTRL_CH_RANGE control event changes flag.
 | |
| 
 | |
| 
 | |
| :revision: 3.6 / 2012-07-02 (*hv*)
 | |
| 
 | |
| Added VIDIOC_ENUM_FREQ_BANDS.
 | |
| 
 | |
| 
 | |
| :revision: 3.5 / 2012-05-07 (*sa, sn, hv*)
 | |
| 
 | |
| Added V4L2_CTRL_TYPE_INTEGER_MENU and V4L2 subdev selections API.
 | |
| Improved the description of V4L2_CID_COLORFX control, added
 | |
| V4L2_CID_COLORFX_CBCR control. Added camera controls
 | |
| V4L2_CID_AUTO_EXPOSURE_BIAS,
 | |
| V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE,
 | |
| V4L2_CID_IMAGE_STABILIZATION, V4L2_CID_ISO_SENSITIVITY,
 | |
| V4L2_CID_ISO_SENSITIVITY_AUTO, V4L2_CID_EXPOSURE_METERING,
 | |
| V4L2_CID_SCENE_MODE, V4L2_CID_3A_LOCK,
 | |
| V4L2_CID_AUTO_FOCUS_START, V4L2_CID_AUTO_FOCUS_STOP,
 | |
| V4L2_CID_AUTO_FOCUS_STATUS and V4L2_CID_AUTO_FOCUS_RANGE. Added
 | |
| VIDIOC_ENUM_DV_TIMINGS, VIDIOC_QUERY_DV_TIMINGS and
 | |
| VIDIOC_DV_TIMINGS_CAP.
 | |
| 
 | |
| 
 | |
| :revision: 3.4 / 2012-01-25 (*sn*)
 | |
| 
 | |
| Added :ref:`JPEG compression control class. <jpeg-controls>`
 | |
| 
 | |
| 
 | |
| :revision: 3.3 / 2012-01-11 (*hv*)
 | |
| 
 | |
| Added device_caps field to struct v4l2_capabilities.
 | |
| 
 | |
| 
 | |
| :revision: 3.2 / 2011-08-26 (*hv*)
 | |
| 
 | |
| Added V4L2_CTRL_FLAG_VOLATILE.
 | |
| 
 | |
| 
 | |
| :revision: 3.1 / 2011-06-27 (*mcc, po, hv*)
 | |
| 
 | |
| Documented that VIDIOC_QUERYCAP now returns a per-subsystem version
 | |
| instead of a per-driver one. Standardize an error code for invalid
 | |
| ioctl. Added V4L2_CTRL_TYPE_BITMASK.
 | |
| 
 | |
| 
 | |
| :revision: 2.6.39 / 2011-03-01 (*mcc, po*)
 | |
| 
 | |
| Removed VIDIOC_*_OLD from videodev2.h header and update it to reflect
 | |
| latest changes. Added the :ref:`multi-planar API <planar-apis>`.
 | |
| 
 | |
| 
 | |
| :revision: 2.6.37 / 2010-08-06 (*hv*)
 | |
| 
 | |
| Removed obsolete vtx (videotext) API.
 | |
| 
 | |
| 
 | |
| :revision: 2.6.33 / 2009-12-03 (*mk*)
 | |
| 
 | |
| Added documentation for the Digital Video timings API.
 | |
| 
 | |
| 
 | |
| :revision: 2.6.32 / 2009-08-31 (*mcc*)
 | |
| 
 | |
| Now, revisions will match the kernel version where the V4L2 API changes
 | |
| will be used by the Linux Kernel. Also added Remote Controller chapter.
 | |
| 
 | |
| 
 | |
| :revision: 0.29 / 2009-08-26 (*ev*)
 | |
| 
 | |
| Added documentation for string controls and for FM Transmitter controls.
 | |
| 
 | |
| 
 | |
| :revision: 0.28 / 2009-08-26 (*gl*)
 | |
| 
 | |
| Added V4L2_CID_BAND_STOP_FILTER documentation.
 | |
| 
 | |
| 
 | |
| :revision: 0.27 / 2009-08-15 (*mcc*)
 | |
| 
 | |
| Added libv4l and Remote Controller documentation; added v4l2grab and
 | |
| keytable application examples.
 | |
| 
 | |
| 
 | |
| :revision: 0.26 / 2009-07-23 (*hv*)
 | |
| 
 | |
| Finalized the RDS capture API. Added modulator and RDS encoder
 | |
| capabilities. Added support for string controls.
 | |
| 
 | |
| 
 | |
| :revision: 0.25 / 2009-01-18 (*hv*)
 | |
| 
 | |
| Added pixel formats VYUY, NV16 and NV61, and changed the debug ioctls
 | |
| VIDIOC_DBG_G/S_REGISTER and VIDIOC_DBG_G_CHIP_IDENT. Added camera
 | |
| controls V4L2_CID_ZOOM_ABSOLUTE, V4L2_CID_ZOOM_RELATIVE,
 | |
| V4L2_CID_ZOOM_CONTINUOUS and V4L2_CID_PRIVACY.
 | |
| 
 | |
| 
 | |
| :revision: 0.24 / 2008-03-04 (*mhs*)
 | |
| 
 | |
| Added pixel formats Y16 and SBGGR16, new controls and a camera controls
 | |
| class. Removed VIDIOC_G/S_MPEGCOMP.
 | |
| 
 | |
| 
 | |
| :revision: 0.23 / 2007-08-30 (*mhs*)
 | |
| 
 | |
| Fixed a typo in VIDIOC_DBG_G/S_REGISTER. Clarified the byte order of
 | |
| packed pixel formats.
 | |
| 
 | |
| 
 | |
| :revision: 0.22 / 2007-08-29 (*mhs*)
 | |
| 
 | |
| Added the Video Output Overlay interface, new MPEG controls,
 | |
| V4L2_FIELD_INTERLACED_TB and V4L2_FIELD_INTERLACED_BT,
 | |
| VIDIOC_DBG_G/S_REGISTER, VIDIOC\_(TRY\_)ENCODER_CMD,
 | |
| VIDIOC_G_CHIP_IDENT, VIDIOC_G_ENC_INDEX, new pixel formats.
 | |
| Clarifications in the cropping chapter, about RGB pixel formats, the
 | |
| mmap(), poll(), select(), read() and write() functions. Typographical
 | |
| fixes.
 | |
| 
 | |
| 
 | |
| :revision: 0.21 / 2006-12-19 (*mhs*)
 | |
| 
 | |
| Fixed a link in the VIDIOC_G_EXT_CTRLS section.
 | |
| 
 | |
| 
 | |
| :revision: 0.20 / 2006-11-24 (*mhs*)
 | |
| 
 | |
| Clarified the purpose of the audioset field in struct v4l2_input and
 | |
| v4l2_output.
 | |
| 
 | |
| 
 | |
| :revision: 0.19 / 2006-10-19 (*mhs*)
 | |
| 
 | |
| Documented V4L2_PIX_FMT_RGB444.
 | |
| 
 | |
| 
 | |
| :revision: 0.18 / 2006-10-18 (*mhs*)
 | |
| 
 | |
| Added the description of extended controls by Hans Verkuil. Linked
 | |
| V4L2_PIX_FMT_MPEG to V4L2_CID_MPEG_STREAM_TYPE.
 | |
| 
 | |
| 
 | |
| :revision: 0.17 / 2006-10-12 (*mhs*)
 | |
| 
 | |
| Corrected V4L2_PIX_FMT_HM12 description.
 | |
| 
 | |
| 
 | |
| :revision: 0.16 / 2006-10-08 (*mhs*)
 | |
| 
 | |
| VIDIOC_ENUM_FRAMESIZES and VIDIOC_ENUM_FRAMEINTERVALS are now part
 | |
| of the API.
 | |
| 
 | |
| 
 | |
| :revision: 0.15 / 2006-09-23 (*mhs*)
 | |
| 
 | |
| Cleaned up the bibliography, added BT.653 and BT.1119.
 | |
| capture.c/start_capturing() for user pointer I/O did not initialize the
 | |
| buffer index. Documented the V4L MPEG and MJPEG VID_TYPEs and
 | |
| V4L2_PIX_FMT_SBGGR8. Updated the list of reserved pixel formats. See
 | |
| the history chapter for API changes.
 | |
| 
 | |
| 
 | |
| :revision: 0.14 / 2006-09-14 (*mr*)
 | |
| 
 | |
| Added VIDIOC_ENUM_FRAMESIZES and VIDIOC_ENUM_FRAMEINTERVALS proposal
 | |
| for frame format enumeration of digital devices.
 | |
| 
 | |
| 
 | |
| :revision: 0.13 / 2006-04-07 (*mhs*)
 | |
| 
 | |
| Corrected the description of struct v4l2_window clips. New V4L2_STD\_
 | |
| and V4L2_TUNER_MODE_LANG1_LANG2 defines.
 | |
| 
 | |
| 
 | |
| :revision: 0.12 / 2006-02-03 (*mhs*)
 | |
| 
 | |
| Corrected the description of struct v4l2_captureparm and
 | |
| v4l2_outputparm.
 | |
| 
 | |
| 
 | |
| :revision: 0.11 / 2006-01-27 (*mhs*)
 | |
| 
 | |
| Improved the description of struct v4l2_tuner.
 | |
| 
 | |
| 
 | |
| :revision: 0.10 / 2006-01-10 (*mhs*)
 | |
| 
 | |
| VIDIOC_G_INPUT and VIDIOC_S_PARM clarifications.
 | |
| 
 | |
| 
 | |
| :revision: 0.9 / 2005-11-27 (*mhs*)
 | |
| 
 | |
| Improved the 525 line numbering diagram. Hans Verkuil and I rewrote the
 | |
| sliced VBI section. He also contributed a VIDIOC_LOG_STATUS page.
 | |
| Fixed VIDIOC_S_STD call in the video standard selection example.
 | |
| Various updates.
 | |
| 
 | |
| 
 | |
| :revision: 0.8 / 2004-10-04 (*mhs*)
 | |
| 
 | |
| Somehow a piece of junk slipped into the capture example, removed.
 | |
| 
 | |
| 
 | |
| :revision: 0.7 / 2004-09-19 (*mhs*)
 | |
| 
 | |
| Fixed video standard selection, control enumeration, downscaling and
 | |
| aspect example. Added read and user pointer i/o to video capture
 | |
| example.
 | |
| 
 | |
| 
 | |
| :revision: 0.6 / 2004-08-01 (*mhs*)
 | |
| 
 | |
| v4l2_buffer changes, added video capture example, various corrections.
 | |
| 
 | |
| 
 | |
| :revision: 0.5 / 2003-11-05 (*mhs*)
 | |
| 
 | |
| Pixel format erratum.
 | |
| 
 | |
| 
 | |
| :revision: 0.4 / 2003-09-17 (*mhs*)
 | |
| 
 | |
| Corrected source and Makefile to generate a PDF. SGML fixes. Added
 | |
| latest API changes. Closed gaps in the history chapter.
 | |
| 
 | |
| 
 | |
| :revision: 0.3 / 2003-02-05 (*mhs*)
 | |
| 
 | |
| Another draft, more corrections.
 | |
| 
 | |
| 
 | |
| :revision: 0.2 / 2003-01-15 (*mhs*)
 | |
| 
 | |
| Second draft, with corrections pointed out by Gerd Knorr.
 | |
| 
 | |
| 
 | |
| :revision: 0.1 / 2002-12-01 (*mhs*)
 | |
| 
 | |
| First draft, based on documentation by Bill Dirks and discussions on the
 | |
| V4L mailing list.
 |