162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 262306a36Sopenharmony_ci.. c:namespace:: V4L 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci.. _hist-v4l2: 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci*********************** 762306a36Sopenharmony_ciChanges of the V4L2 API 862306a36Sopenharmony_ci*********************** 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ciSoon after the V4L API was added to the kernel it was criticised as too 1162306a36Sopenharmony_ciinflexible. In August 1998 Bill Dirks proposed a number of improvements 1262306a36Sopenharmony_ciand began to work on documentation, example drivers and applications. 1362306a36Sopenharmony_ciWith the help of other volunteers this eventually became the V4L2 API, 1462306a36Sopenharmony_cinot just an extension but a replacement for the V4L API. However it took 1562306a36Sopenharmony_cianother four years and two stable kernel releases until the new API was 1662306a36Sopenharmony_cifinally accepted for inclusion into the kernel in its present form. 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciEarly Versions 1962306a36Sopenharmony_ci============== 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci1998-08-20: First version. 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci1998-08-27: The :c:func:`select()` function was introduced. 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci1998-09-10: New video standard interface. 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci1998-09-18: The ``VIDIOC_NONCAP`` ioctl was replaced by the otherwise 2862306a36Sopenharmony_cimeaningless ``O_TRUNC`` :c:func:`open()` flag, and the 2962306a36Sopenharmony_cialiases ``O_NONCAP`` and ``O_NOIO`` were defined. Applications can set 3062306a36Sopenharmony_cithis flag if they intend to access controls only, as opposed to capture 3162306a36Sopenharmony_ciapplications which need exclusive access. The ``VIDEO_STD_XXX`` 3262306a36Sopenharmony_ciidentifiers are now ordinals instead of flags, and the 3362306a36Sopenharmony_ci``video_std_construct()`` helper function takes id and 3462306a36Sopenharmony_citransmission arguments. 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci1998-09-28: Revamped video standard. Made video controls individually 3762306a36Sopenharmony_cienumerable. 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci1998-10-02: The ``id`` field was removed from 4062306a36Sopenharmony_cistruct ``video_standard`` and the color subcarrier fields were 4162306a36Sopenharmony_cirenamed. The :ref:`VIDIOC_QUERYSTD` ioctl was 4262306a36Sopenharmony_cirenamed to :ref:`VIDIOC_ENUMSTD`, 4362306a36Sopenharmony_ci:ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` to 4462306a36Sopenharmony_ci:ref:`VIDIOC_ENUMINPUT`. A first draft of the 4562306a36Sopenharmony_ciCodec API was released. 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci1998-11-08: Many minor changes. Most symbols have been renamed. Some 4862306a36Sopenharmony_cimaterial changes to struct v4l2_capability. 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci1998-11-12: The read/write direction of some ioctls was misdefined. 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci1998-11-14: ``V4L2_PIX_FMT_RGB24`` changed to ``V4L2_PIX_FMT_BGR24``, 5362306a36Sopenharmony_ciand ``V4L2_PIX_FMT_RGB32`` changed to ``V4L2_PIX_FMT_BGR32``. Audio 5462306a36Sopenharmony_cicontrols are now accessible with the 5562306a36Sopenharmony_ci:ref:`VIDIOC_G_CTRL <VIDIOC_G_CTRL>` and 5662306a36Sopenharmony_ci:ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` ioctls under names starting 5762306a36Sopenharmony_ciwith ``V4L2_CID_AUDIO``. The ``V4L2_MAJOR`` define was removed from 5862306a36Sopenharmony_ci``videodev.h`` since it was only used once in the ``videodev`` kernel 5962306a36Sopenharmony_cimodule. The ``YUV422`` and ``YUV411`` planar image formats were added. 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci1998-11-28: A few ioctl symbols changed. Interfaces for codecs and video 6262306a36Sopenharmony_cioutput devices were added. 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci1999-01-14: A raw VBI capture interface was added. 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci1999-01-19: The ``VIDIOC_NEXTBUF`` ioctl was removed. 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ciV4L2 Version 0.16 1999-01-31 6962306a36Sopenharmony_ci============================ 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci1999-01-27: There is now one QBUF ioctl, VIDIOC_QWBUF and VIDIOC_QRBUF 7262306a36Sopenharmony_ciare gone. VIDIOC_QBUF takes a v4l2_buffer as a parameter. Added 7362306a36Sopenharmony_cidigital zoom (cropping) controls. 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ciV4L2 Version 0.18 1999-03-16 7662306a36Sopenharmony_ci============================ 7762306a36Sopenharmony_ci 7862306a36Sopenharmony_ciAdded a v4l to V4L2 ioctl compatibility layer to videodev.c. Driver 7962306a36Sopenharmony_ciwriters, this changes how you implement your ioctl handler. See the 8062306a36Sopenharmony_ciDriver Writer's Guide. Added some more control id codes. 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ciV4L2 Version 0.19 1999-06-05 8362306a36Sopenharmony_ci============================ 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci1999-03-18: Fill in the category and catname fields of v4l2_queryctrl 8662306a36Sopenharmony_ciobjects before passing them to the driver. Required a minor change to 8762306a36Sopenharmony_cithe VIDIOC_QUERYCTRL handlers in the sample drivers. 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci1999-03-31: Better compatibility for v4l memory capture ioctls. Requires 9062306a36Sopenharmony_cichanges to drivers to fully support new compatibility features, see 9162306a36Sopenharmony_ciDriver Writer's Guide and v4l2cap.c. Added new control IDs: 9262306a36Sopenharmony_ciV4L2_CID_HFLIP, _VFLIP. Changed V4L2_PIX_FMT_YUV422P to _YUV422P, 9362306a36Sopenharmony_ciand _YUV411P to _YUV411P. 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci1999-04-04: Added a few more control IDs. 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci1999-04-07: Added the button control type. 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci1999-05-02: Fixed a typo in videodev.h, and added the 10062306a36Sopenharmony_ciV4L2_CTRL_FLAG_GRAYED (later V4L2_CTRL_FLAG_GRABBED) flag. 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci1999-05-20: Definition of VIDIOC_G_CTRL was wrong causing a 10362306a36Sopenharmony_cimalfunction of this ioctl. 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci1999-06-05: Changed the value of V4L2_CID_WHITENESS. 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ciV4L2 Version 0.20 (1999-09-10) 10862306a36Sopenharmony_ci============================== 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ciVersion 0.20 introduced a number of changes which were *not backward 11162306a36Sopenharmony_cicompatible* with 0.19 and earlier versions. Purpose of these changes was 11262306a36Sopenharmony_cito simplify the API, while making it more extensible and following 11362306a36Sopenharmony_cicommon Linux driver API conventions. 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci1. Some typos in ``V4L2_FMT_FLAG`` symbols were fixed. struct v4l2_clip 11662306a36Sopenharmony_ci was changed for compatibility with v4l. (1999-08-30) 11762306a36Sopenharmony_ci 11862306a36Sopenharmony_ci2. ``V4L2_TUNER_SUB_LANG1`` was added. (1999-09-05) 11962306a36Sopenharmony_ci 12062306a36Sopenharmony_ci3. All ioctl() commands that used an integer argument now take a pointer 12162306a36Sopenharmony_ci to an integer. Where it makes sense, ioctls will return the actual 12262306a36Sopenharmony_ci new value in the integer pointed to by the argument, a common 12362306a36Sopenharmony_ci convention in the V4L2 API. The affected ioctls are: VIDIOC_PREVIEW, 12462306a36Sopenharmony_ci VIDIOC_STREAMON, VIDIOC_STREAMOFF, VIDIOC_S_FREQ, 12562306a36Sopenharmony_ci VIDIOC_S_INPUT, VIDIOC_S_OUTPUT, VIDIOC_S_EFFECT. For example 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci .. code-block:: c 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci err = ioctl (fd, VIDIOC_XXX, V4L2_XXX); 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci becomes 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci .. code-block:: c 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci int a = V4L2_XXX; err = ioctl(fd, VIDIOC_XXX, &a); 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci4. All the different get- and set-format commands were swept into one 13862306a36Sopenharmony_ci :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and 13962306a36Sopenharmony_ci :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl taking a union and a 14062306a36Sopenharmony_ci type field selecting the union member as parameter. Purpose is to 14162306a36Sopenharmony_ci simplify the API by eliminating several ioctls and to allow new and 14262306a36Sopenharmony_ci driver private data streams without adding new ioctls. 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_ci This change obsoletes the following ioctls: ``VIDIOC_S_INFMT``, 14562306a36Sopenharmony_ci ``VIDIOC_G_INFMT``, ``VIDIOC_S_OUTFMT``, ``VIDIOC_G_OUTFMT``, 14662306a36Sopenharmony_ci ``VIDIOC_S_VBIFMT`` and ``VIDIOC_G_VBIFMT``. The image format 14762306a36Sopenharmony_ci struct v4l2_format was renamed to struct v4l2_pix_format, while 14862306a36Sopenharmony_ci struct v4l2_format is now the enveloping structure 14962306a36Sopenharmony_ci for all format negotiations. 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci5. Similar to the changes above, the ``VIDIOC_G_PARM`` and 15262306a36Sopenharmony_ci ``VIDIOC_S_PARM`` ioctls were merged with ``VIDIOC_G_OUTPARM`` and 15362306a36Sopenharmony_ci ``VIDIOC_S_OUTPARM``. A ``type`` field in the new struct v4l2_streamparm 15462306a36Sopenharmony_ci selects the respective union member. 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci This change obsoletes the ``VIDIOC_G_OUTPARM`` and 15762306a36Sopenharmony_ci ``VIDIOC_S_OUTPARM`` ioctls. 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci6. Control enumeration was simplified, and two new control flags were 16062306a36Sopenharmony_ci introduced and one dropped. The ``catname`` field was replaced by a 16162306a36Sopenharmony_ci ``group`` field. 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci Drivers can now flag unsupported and temporarily unavailable controls 16462306a36Sopenharmony_ci with ``V4L2_CTRL_FLAG_DISABLED`` and ``V4L2_CTRL_FLAG_GRABBED`` 16562306a36Sopenharmony_ci respectively. The ``group`` name indicates a possibly narrower 16662306a36Sopenharmony_ci classification than the ``category``. In other words, there may be 16762306a36Sopenharmony_ci multiple groups within a category. Controls within a group would 16862306a36Sopenharmony_ci typically be drawn within a group box. Controls in different 16962306a36Sopenharmony_ci categories might have a greater separation, or may even appear in 17062306a36Sopenharmony_ci separate windows. 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci7. The struct v4l2_buffer ``timestamp`` was 17362306a36Sopenharmony_ci changed to a 64 bit integer, containing the sampling or output time 17462306a36Sopenharmony_ci of the frame in nanoseconds. Additionally timestamps will be in 17562306a36Sopenharmony_ci absolute system time, not starting from zero at the beginning of a 17662306a36Sopenharmony_ci stream. The data type name for timestamps is stamp_t, defined as a 17762306a36Sopenharmony_ci signed 64-bit integer. Output devices should not send a buffer out 17862306a36Sopenharmony_ci until the time in the timestamp field has arrived. I would like to 17962306a36Sopenharmony_ci follow SGI's lead, and adopt a multimedia timestamping system like 18062306a36Sopenharmony_ci their UST (Unadjusted System Time). See 18162306a36Sopenharmony_ci http://web.archive.org/web/\*/http://reality.sgi.com 18262306a36Sopenharmony_ci /cpirazzi_engr/lg/time/intro.html. UST uses timestamps that are 18362306a36Sopenharmony_ci 64-bit signed integers (not struct timeval's) and given in nanosecond 18462306a36Sopenharmony_ci units. The UST clock starts at zero when the system is booted and 18562306a36Sopenharmony_ci runs continuously and uniformly. It takes a little over 292 years for 18662306a36Sopenharmony_ci UST to overflow. There is no way to set the UST clock. The regular 18762306a36Sopenharmony_ci Linux time-of-day clock can be changed periodically, which would 18862306a36Sopenharmony_ci cause errors if it were being used for timestamping a multimedia 18962306a36Sopenharmony_ci stream. A real UST style clock will require some support in the 19062306a36Sopenharmony_ci kernel that is not there yet. But in anticipation, I will change the 19162306a36Sopenharmony_ci timestamp field to a 64-bit integer, and I will change the 19262306a36Sopenharmony_ci v4l2_masterclock_gettime() function (used only by drivers) to 19362306a36Sopenharmony_ci return a 64-bit integer. 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ci8. A ``sequence`` field was added to struct v4l2_buffer. The ``sequence`` 19662306a36Sopenharmony_ci field counts captured frames, it is ignored by output devices. When a 19762306a36Sopenharmony_ci capture driver drops a frame, the sequence number of that frame is skipped. 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ciV4L2 Version 0.20 incremental changes 20062306a36Sopenharmony_ci===================================== 20162306a36Sopenharmony_ci 20262306a36Sopenharmony_ci1999-12-23: In struct v4l2_vbi_format the 20362306a36Sopenharmony_ci``reserved1`` field became ``offset``. Previously drivers were required 20462306a36Sopenharmony_cito clear the ``reserved1`` field. 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci2000-01-13: The ``V4L2_FMT_FLAG_NOT_INTERLACED`` flag was added. 20762306a36Sopenharmony_ci 20862306a36Sopenharmony_ci2000-07-31: The ``linux/poll.h`` header is now included by 20962306a36Sopenharmony_ci``videodev.h`` for compatibility with the original ``videodev.h`` file. 21062306a36Sopenharmony_ci 21162306a36Sopenharmony_ci2000-11-20: ``V4L2_TYPE_VBI_OUTPUT`` and ``V4L2_PIX_FMT_Y41P`` were 21262306a36Sopenharmony_ciadded. 21362306a36Sopenharmony_ci 21462306a36Sopenharmony_ci2000-11-25: ``V4L2_TYPE_VBI_INPUT`` was added. 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci2000-12-04: A couple typos in symbol names were fixed. 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci2001-01-18: To avoid namespace conflicts the ``fourcc`` macro defined in 21962306a36Sopenharmony_cithe ``videodev.h`` header file was renamed to ``v4l2_fourcc``. 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci2001-01-25: A possible driver-level compatibility problem between the 22262306a36Sopenharmony_ci``videodev.h`` file in Linux 2.4.0 and the ``videodev.h`` file included 22362306a36Sopenharmony_ciin the ``videodevX`` patch was fixed. Users of an earlier version of 22462306a36Sopenharmony_ci``videodevX`` on Linux 2.4.0 should recompile their V4L and V4L2 22562306a36Sopenharmony_cidrivers. 22662306a36Sopenharmony_ci 22762306a36Sopenharmony_ci2001-01-26: A possible kernel-level incompatibility between the 22862306a36Sopenharmony_ci``videodev.h`` file in the ``videodevX`` patch and the ``videodev.h`` 22962306a36Sopenharmony_cifile in Linux 2.2.x with devfs patches applied was fixed. 23062306a36Sopenharmony_ci 23162306a36Sopenharmony_ci2001-03-02: Certain V4L ioctls which pass data in both direction 23262306a36Sopenharmony_cialthough they are defined with read-only parameter, did not work 23362306a36Sopenharmony_cicorrectly through the backward compatibility layer. [Solution?] 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_ci2001-04-13: Big endian 16-bit RGB formats were added. 23662306a36Sopenharmony_ci 23762306a36Sopenharmony_ci2001-09-17: New YUV formats and the 23862306a36Sopenharmony_ci:ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` and 23962306a36Sopenharmony_ci:ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctls were added. 24062306a36Sopenharmony_ci(The old ``VIDIOC_G_FREQ`` and ``VIDIOC_S_FREQ`` ioctls did not take 24162306a36Sopenharmony_cimultiple tuners into account.) 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_ci2000-09-18: ``V4L2_BUF_TYPE_VBI`` was added. This may *break 24462306a36Sopenharmony_cicompatibility* as the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and 24562306a36Sopenharmony_ci:ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls may fail now if the 24662306a36Sopenharmony_cistruct ``v4l2_fmt`` ``type`` field does not contain 24762306a36Sopenharmony_ci``V4L2_BUF_TYPE_VBI``. In the documentation of the struct v4l2_vbi_format`, 24862306a36Sopenharmony_cithe ``offset`` field the ambiguous phrase "rising edge" was changed to 24962306a36Sopenharmony_ci"leading edge". 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_ciV4L2 Version 0.20 2000-11-23 25262306a36Sopenharmony_ci============================ 25362306a36Sopenharmony_ci 25462306a36Sopenharmony_ciA number of changes were made to the raw VBI interface. 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ci1. Figures clarifying the line numbering scheme were added to the V4L2 25762306a36Sopenharmony_ci API specification. The ``start``\ [0] and ``start``\ [1] fields no 25862306a36Sopenharmony_ci longer count line numbers beginning at zero. Rationale: a) The 25962306a36Sopenharmony_ci previous definition was unclear. b) The ``start``\ [] values are 26062306a36Sopenharmony_ci ordinal numbers. c) There is no point in inventing a new line 26162306a36Sopenharmony_ci numbering scheme. We now use line number as defined by ITU-R, period. 26262306a36Sopenharmony_ci Compatibility: Add one to the start values. Applications depending on 26362306a36Sopenharmony_ci the previous semantics may not function correctly. 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ci2. The restriction "count[0] > 0 and count[1] > 0" has been relaxed to 26662306a36Sopenharmony_ci "(count[0] + count[1]) > 0". Rationale: Drivers may allocate 26762306a36Sopenharmony_ci resources at scan line granularity and some data services are 26862306a36Sopenharmony_ci transmitted only on the first field. The comment that both ``count`` 26962306a36Sopenharmony_ci values will usually be equal is misleading and pointless and has been 27062306a36Sopenharmony_ci removed. This change *breaks compatibility* with earlier versions: 27162306a36Sopenharmony_ci Drivers may return ``EINVAL``, applications may not function correctly. 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ci3. Drivers are again permitted to return negative (unknown) start values 27462306a36Sopenharmony_ci as proposed earlier. Why this feature was dropped is unclear. This 27562306a36Sopenharmony_ci change may *break compatibility* with applications depending on the 27662306a36Sopenharmony_ci start values being positive. The use of ``EBUSY`` and ``EINVAL`` 27762306a36Sopenharmony_ci error codes with the :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl was 27862306a36Sopenharmony_ci clarified. The ``EBUSY`` error code was finally documented, and the 27962306a36Sopenharmony_ci ``reserved2`` field which was previously mentioned only in the 28062306a36Sopenharmony_ci ``videodev.h`` header file. 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci4. New buffer types ``V4L2_TYPE_VBI_INPUT`` and ``V4L2_TYPE_VBI_OUTPUT`` 28362306a36Sopenharmony_ci were added. The former is an alias for the old ``V4L2_TYPE_VBI``, the 28462306a36Sopenharmony_ci latter was missing in the ``videodev.h`` file. 28562306a36Sopenharmony_ci 28662306a36Sopenharmony_ciV4L2 Version 0.20 2002-07-25 28762306a36Sopenharmony_ci============================ 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_ciAdded sliced VBI interface proposal. 29062306a36Sopenharmony_ci 29162306a36Sopenharmony_ciV4L2 in Linux 2.5.46, 2002-10 29262306a36Sopenharmony_ci============================= 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_ciAround October-November 2002, prior to an announced feature freeze of 29562306a36Sopenharmony_ciLinux 2.5, the API was revised, drawing from experience with V4L2 0.20. 29662306a36Sopenharmony_ciThis unnamed version was finally merged into Linux 2.5.46. 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ci1. As specified in :ref:`related`, drivers must make related device 29962306a36Sopenharmony_ci functions available under all minor device numbers. 30062306a36Sopenharmony_ci 30162306a36Sopenharmony_ci2. The :c:func:`open()` function requires access mode 30262306a36Sopenharmony_ci ``O_RDWR`` regardless of the device type. All V4L2 drivers 30362306a36Sopenharmony_ci exchanging data with applications must support the ``O_NONBLOCK`` 30462306a36Sopenharmony_ci flag. The ``O_NOIO`` flag, a V4L2 symbol which aliased the 30562306a36Sopenharmony_ci meaningless ``O_TRUNC`` to indicate accesses without data exchange 30662306a36Sopenharmony_ci (panel applications) was dropped. Drivers must stay in "panel mode" 30762306a36Sopenharmony_ci until the application attempts to initiate a data exchange, see 30862306a36Sopenharmony_ci :ref:`open`. 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_ci3. The struct v4l2_capability changed 31162306a36Sopenharmony_ci dramatically. Note that also the size of the structure changed, 31262306a36Sopenharmony_ci which is encoded in the ioctl request code, thus older V4L2 devices 31362306a36Sopenharmony_ci will respond with an ``EINVAL`` error code to the new 31462306a36Sopenharmony_ci :ref:`VIDIOC_QUERYCAP` ioctl. 31562306a36Sopenharmony_ci 31662306a36Sopenharmony_ci There are new fields to identify the driver, a new RDS device 31762306a36Sopenharmony_ci function ``V4L2_CAP_RDS_CAPTURE``, the ``V4L2_CAP_AUDIO`` flag 31862306a36Sopenharmony_ci indicates if the device has any audio connectors, another I/O 31962306a36Sopenharmony_ci capability V4L2_CAP_ASYNCIO can be flagged. In response to these 32062306a36Sopenharmony_ci changes the ``type`` field became a bit set and was merged into the 32162306a36Sopenharmony_ci ``flags`` field. ``V4L2_FLAG_TUNER`` was renamed to 32262306a36Sopenharmony_ci ``V4L2_CAP_TUNER``, ``V4L2_CAP_VIDEO_OVERLAY`` replaced 32362306a36Sopenharmony_ci ``V4L2_FLAG_PREVIEW`` and ``V4L2_CAP_VBI_CAPTURE`` and 32462306a36Sopenharmony_ci ``V4L2_CAP_VBI_OUTPUT`` replaced ``V4L2_FLAG_DATA_SERVICE``. 32562306a36Sopenharmony_ci ``V4L2_FLAG_READ`` and ``V4L2_FLAG_WRITE`` were merged into 32662306a36Sopenharmony_ci ``V4L2_CAP_READWRITE``. 32762306a36Sopenharmony_ci 32862306a36Sopenharmony_ci The redundant fields ``inputs``, ``outputs`` and ``audios`` were 32962306a36Sopenharmony_ci removed. These properties can be determined as described in 33062306a36Sopenharmony_ci :ref:`video` and :ref:`audio`. 33162306a36Sopenharmony_ci 33262306a36Sopenharmony_ci The somewhat volatile and therefore barely useful fields 33362306a36Sopenharmony_ci ``maxwidth``, ``maxheight``, ``minwidth``, ``minheight``, 33462306a36Sopenharmony_ci ``maxframerate`` were removed. This information is available as 33562306a36Sopenharmony_ci described in :ref:`format` and :ref:`standard`. 33662306a36Sopenharmony_ci 33762306a36Sopenharmony_ci ``V4L2_FLAG_SELECT`` was removed. We believe the select() function 33862306a36Sopenharmony_ci is important enough to require support of it in all V4L2 drivers 33962306a36Sopenharmony_ci exchanging data with applications. The redundant 34062306a36Sopenharmony_ci ``V4L2_FLAG_MONOCHROME`` flag was removed, this information is 34162306a36Sopenharmony_ci available as described in :ref:`format`. 34262306a36Sopenharmony_ci 34362306a36Sopenharmony_ci4. In struct v4l2_input the ``assoc_audio`` 34462306a36Sopenharmony_ci field and the ``capability`` field and its only flag 34562306a36Sopenharmony_ci ``V4L2_INPUT_CAP_AUDIO`` was replaced by the new ``audioset`` field. 34662306a36Sopenharmony_ci Instead of linking one video input to one audio input this field 34762306a36Sopenharmony_ci reports all audio inputs this video input combines with. 34862306a36Sopenharmony_ci 34962306a36Sopenharmony_ci New fields are ``tuner`` (reversing the former link from tuners to 35062306a36Sopenharmony_ci video inputs), ``std`` and ``status``. 35162306a36Sopenharmony_ci 35262306a36Sopenharmony_ci Accordingly struct v4l2_output lost its 35362306a36Sopenharmony_ci ``capability`` and ``assoc_audio`` fields. ``audioset``, 35462306a36Sopenharmony_ci ``modulator`` and ``std`` where added instead. 35562306a36Sopenharmony_ci 35662306a36Sopenharmony_ci5. The struct v4l2_audio field ``audio`` was 35762306a36Sopenharmony_ci renamed to ``index``, for consistency with other structures. A new 35862306a36Sopenharmony_ci capability flag ``V4L2_AUDCAP_STEREO`` was added to indicated if the 35962306a36Sopenharmony_ci audio input in question supports stereo sound. 36062306a36Sopenharmony_ci ``V4L2_AUDCAP_EFFECTS`` and the corresponding ``V4L2_AUDMODE`` flags 36162306a36Sopenharmony_ci where removed. This can be easily implemented using controls. 36262306a36Sopenharmony_ci (However the same applies to AVL which is still there.) 36362306a36Sopenharmony_ci 36462306a36Sopenharmony_ci Again for consistency the struct v4l2_audioout field ``audio`` was renamed 36562306a36Sopenharmony_ci to ``index``. 36662306a36Sopenharmony_ci 36762306a36Sopenharmony_ci6. The struct v4l2_tuner ``input`` field was 36862306a36Sopenharmony_ci replaced by an ``index`` field, permitting devices with multiple 36962306a36Sopenharmony_ci tuners. The link between video inputs and tuners is now reversed, 37062306a36Sopenharmony_ci inputs point to their tuner. The ``std`` substructure became a 37162306a36Sopenharmony_ci simple set (more about this below) and moved into struct v4l2_input. 37262306a36Sopenharmony_ci A ``type`` field was added. 37362306a36Sopenharmony_ci 37462306a36Sopenharmony_ci Accordingly in struct v4l2_modulator the 37562306a36Sopenharmony_ci ``output`` was replaced by an ``index`` field. 37662306a36Sopenharmony_ci 37762306a36Sopenharmony_ci In struct v4l2_frequency the ``port`` 37862306a36Sopenharmony_ci field was replaced by a ``tuner`` field containing the respective 37962306a36Sopenharmony_ci tuner or modulator index number. A tuner ``type`` field was added 38062306a36Sopenharmony_ci and the ``reserved`` field became larger for future extensions 38162306a36Sopenharmony_ci (satellite tuners in particular). 38262306a36Sopenharmony_ci 38362306a36Sopenharmony_ci7. The idea of completely transparent video standards was dropped. 38462306a36Sopenharmony_ci Experience showed that applications must be able to work with video 38562306a36Sopenharmony_ci standards beyond presenting the user a menu. Instead of enumerating 38662306a36Sopenharmony_ci supported standards with an ioctl applications can now refer to 38762306a36Sopenharmony_ci standards by :ref:`v4l2_std_id <v4l2-std-id>` and symbols 38862306a36Sopenharmony_ci defined in the ``videodev2.h`` header file. For details see 38962306a36Sopenharmony_ci :ref:`standard`. The :ref:`VIDIOC_G_STD <VIDIOC_G_STD>` and 39062306a36Sopenharmony_ci :ref:`VIDIOC_S_STD <VIDIOC_G_STD>` now take a pointer to this 39162306a36Sopenharmony_ci type as argument. :ref:`VIDIOC_QUERYSTD` was 39262306a36Sopenharmony_ci added to autodetect the received standard, if the hardware has this 39362306a36Sopenharmony_ci capability. In struct v4l2_standard an 39462306a36Sopenharmony_ci ``index`` field was added for 39562306a36Sopenharmony_ci :ref:`VIDIOC_ENUMSTD`. A 39662306a36Sopenharmony_ci :ref:`v4l2_std_id <v4l2-std-id>` field named ``id`` was added as 39762306a36Sopenharmony_ci machine readable identifier, also replacing the ``transmission`` 39862306a36Sopenharmony_ci field. The misleading ``framerate`` field was renamed to 39962306a36Sopenharmony_ci ``frameperiod``. The now obsolete ``colorstandard`` information, 40062306a36Sopenharmony_ci originally needed to distguish between variations of standards, were 40162306a36Sopenharmony_ci removed. 40262306a36Sopenharmony_ci 40362306a36Sopenharmony_ci Struct ``v4l2_enumstd`` ceased to be. 40462306a36Sopenharmony_ci :ref:`VIDIOC_ENUMSTD` now takes a pointer to a 40562306a36Sopenharmony_ci struct v4l2_standard directly. The 40662306a36Sopenharmony_ci information which standards are supported by a particular video 40762306a36Sopenharmony_ci input or output moved into struct v4l2_input 40862306a36Sopenharmony_ci and struct v4l2_output fields named ``std``, 40962306a36Sopenharmony_ci respectively. 41062306a36Sopenharmony_ci 41162306a36Sopenharmony_ci8. The struct :ref:`v4l2_queryctrl <v4l2-queryctrl>` fields 41262306a36Sopenharmony_ci ``category`` and ``group`` did not catch on and/or were not 41362306a36Sopenharmony_ci implemented as expected and therefore removed. 41462306a36Sopenharmony_ci 41562306a36Sopenharmony_ci9. The :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` ioctl was added to 41662306a36Sopenharmony_ci negotiate data formats as with 41762306a36Sopenharmony_ci :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`, but without the overhead of 41862306a36Sopenharmony_ci programming the hardware and regardless of I/O in progress. 41962306a36Sopenharmony_ci 42062306a36Sopenharmony_ci In struct v4l2_format the ``fmt`` union was 42162306a36Sopenharmony_ci extended to contain struct v4l2_window. All 42262306a36Sopenharmony_ci image format negotiations are now possible with ``VIDIOC_G_FMT``, 42362306a36Sopenharmony_ci ``VIDIOC_S_FMT`` and ``VIDIOC_TRY_FMT``; ioctl. The ``VIDIOC_G_WIN`` 42462306a36Sopenharmony_ci and ``VIDIOC_S_WIN`` ioctls to prepare for a video overlay were 42562306a36Sopenharmony_ci removed. The ``type`` field changed to type enum v4l2_buf_type and 42662306a36Sopenharmony_ci the buffer type names changed as follows. 42762306a36Sopenharmony_ci 42862306a36Sopenharmony_ci 42962306a36Sopenharmony_ci .. flat-table:: 43062306a36Sopenharmony_ci :header-rows: 1 43162306a36Sopenharmony_ci :stub-columns: 0 43262306a36Sopenharmony_ci 43362306a36Sopenharmony_ci * - Old defines 43462306a36Sopenharmony_ci - enum v4l2_buf_type 43562306a36Sopenharmony_ci * - ``V4L2_BUF_TYPE_CAPTURE`` 43662306a36Sopenharmony_ci - ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` 43762306a36Sopenharmony_ci * - ``V4L2_BUF_TYPE_CODECIN`` 43862306a36Sopenharmony_ci - Omitted for now 43962306a36Sopenharmony_ci * - ``V4L2_BUF_TYPE_CODECOUT`` 44062306a36Sopenharmony_ci - Omitted for now 44162306a36Sopenharmony_ci * - ``V4L2_BUF_TYPE_EFFECTSIN`` 44262306a36Sopenharmony_ci - Omitted for now 44362306a36Sopenharmony_ci * - ``V4L2_BUF_TYPE_EFFECTSIN2`` 44462306a36Sopenharmony_ci - Omitted for now 44562306a36Sopenharmony_ci * - ``V4L2_BUF_TYPE_EFFECTSOUT`` 44662306a36Sopenharmony_ci - Omitted for now 44762306a36Sopenharmony_ci * - ``V4L2_BUF_TYPE_VIDEOOUT`` 44862306a36Sopenharmony_ci - ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` 44962306a36Sopenharmony_ci * - ``-`` 45062306a36Sopenharmony_ci - ``V4L2_BUF_TYPE_VIDEO_OVERLAY`` 45162306a36Sopenharmony_ci * - ``-`` 45262306a36Sopenharmony_ci - ``V4L2_BUF_TYPE_VBI_CAPTURE`` 45362306a36Sopenharmony_ci * - ``-`` 45462306a36Sopenharmony_ci - ``V4L2_BUF_TYPE_VBI_OUTPUT`` 45562306a36Sopenharmony_ci * - ``-`` 45662306a36Sopenharmony_ci - ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` 45762306a36Sopenharmony_ci * - ``-`` 45862306a36Sopenharmony_ci - ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT`` 45962306a36Sopenharmony_ci * - ``V4L2_BUF_TYPE_PRIVATE_BASE`` 46062306a36Sopenharmony_ci - ``V4L2_BUF_TYPE_PRIVATE`` (but this is deprecated) 46162306a36Sopenharmony_ci 46262306a36Sopenharmony_ci10. In struct v4l2_fmtdesc a enum v4l2_buf_type field named ``type`` was 46362306a36Sopenharmony_ci added as in struct v4l2_format. The ``VIDIOC_ENUM_FBUFFMT`` ioctl is no 46462306a36Sopenharmony_ci longer needed and was removed. These calls can be replaced by 46562306a36Sopenharmony_ci :ref:`VIDIOC_ENUM_FMT` with type ``V4L2_BUF_TYPE_VIDEO_OVERLAY``. 46662306a36Sopenharmony_ci 46762306a36Sopenharmony_ci11. In struct v4l2_pix_format the ``depth`` 46862306a36Sopenharmony_ci field was removed, assuming applications which recognize the format 46962306a36Sopenharmony_ci by its four-character-code already know the color depth, and others 47062306a36Sopenharmony_ci do not care about it. The same rationale lead to the removal of the 47162306a36Sopenharmony_ci ``V4L2_FMT_FLAG_COMPRESSED`` flag. The 47262306a36Sopenharmony_ci ``V4L2_FMT_FLAG_SWCONVECOMPRESSED`` flag was removed because drivers 47362306a36Sopenharmony_ci are not supposed to convert images in kernel space. A user library 47462306a36Sopenharmony_ci of conversion functions should be provided instead. The 47562306a36Sopenharmony_ci ``V4L2_FMT_FLAG_BYTESPERLINE`` flag was redundant. Applications can 47662306a36Sopenharmony_ci set the ``bytesperline`` field to zero to get a reasonable default. 47762306a36Sopenharmony_ci Since the remaining flags were replaced as well, the ``flags`` field 47862306a36Sopenharmony_ci itself was removed. 47962306a36Sopenharmony_ci 48062306a36Sopenharmony_ci The interlace flags were replaced by a enum v4l2_field value in a 48162306a36Sopenharmony_ci newly added ``field`` field. 48262306a36Sopenharmony_ci 48362306a36Sopenharmony_ci .. flat-table:: 48462306a36Sopenharmony_ci :header-rows: 1 48562306a36Sopenharmony_ci :stub-columns: 0 48662306a36Sopenharmony_ci 48762306a36Sopenharmony_ci * - Old flag 48862306a36Sopenharmony_ci - enum v4l2_field 48962306a36Sopenharmony_ci * - ``V4L2_FMT_FLAG_NOT_INTERLACED`` 49062306a36Sopenharmony_ci - ? 49162306a36Sopenharmony_ci * - ``V4L2_FMT_FLAG_INTERLACED`` = ``V4L2_FMT_FLAG_COMBINED`` 49262306a36Sopenharmony_ci - ``V4L2_FIELD_INTERLACED`` 49362306a36Sopenharmony_ci * - ``V4L2_FMT_FLAG_TOPFIELD`` = ``V4L2_FMT_FLAG_ODDFIELD`` 49462306a36Sopenharmony_ci - ``V4L2_FIELD_TOP`` 49562306a36Sopenharmony_ci * - ``V4L2_FMT_FLAG_BOTFIELD`` = ``V4L2_FMT_FLAG_EVENFIELD`` 49662306a36Sopenharmony_ci - ``V4L2_FIELD_BOTTOM`` 49762306a36Sopenharmony_ci * - ``-`` 49862306a36Sopenharmony_ci - ``V4L2_FIELD_SEQ_TB`` 49962306a36Sopenharmony_ci * - ``-`` 50062306a36Sopenharmony_ci - ``V4L2_FIELD_SEQ_BT`` 50162306a36Sopenharmony_ci * - ``-`` 50262306a36Sopenharmony_ci - ``V4L2_FIELD_ALTERNATE`` 50362306a36Sopenharmony_ci 50462306a36Sopenharmony_ci The color space flags were replaced by a enum v4l2_colorspace value in 50562306a36Sopenharmony_ci a newly added ``colorspace`` field, where one of 50662306a36Sopenharmony_ci ``V4L2_COLORSPACE_SMPTE170M``, ``V4L2_COLORSPACE_BT878``, 50762306a36Sopenharmony_ci ``V4L2_COLORSPACE_470_SYSTEM_M`` or 50862306a36Sopenharmony_ci ``V4L2_COLORSPACE_470_SYSTEM_BG`` replaces ``V4L2_FMT_CS_601YUV``. 50962306a36Sopenharmony_ci 51062306a36Sopenharmony_ci12. In struct v4l2_requestbuffers the 51162306a36Sopenharmony_ci ``type`` field was properly defined as enum v4l2_buf_type. Buffer types 51262306a36Sopenharmony_ci changed as mentioned above. A new ``memory`` field of type 51362306a36Sopenharmony_ci enum v4l2_memory was added to distinguish between 51462306a36Sopenharmony_ci I/O methods using buffers allocated by the driver or the 51562306a36Sopenharmony_ci application. See :ref:`io` for details. 51662306a36Sopenharmony_ci 51762306a36Sopenharmony_ci13. In struct v4l2_buffer the ``type`` field was 51862306a36Sopenharmony_ci properly defined as enum v4l2_buf_type. 51962306a36Sopenharmony_ci Buffer types changed as mentioned above. A ``field`` field of type 52062306a36Sopenharmony_ci enum v4l2_field was added to indicate if a 52162306a36Sopenharmony_ci buffer contains a top or bottom field. The old field flags were 52262306a36Sopenharmony_ci removed. Since no unadjusted system time clock was added to the 52362306a36Sopenharmony_ci kernel as planned, the ``timestamp`` field changed back from type 52462306a36Sopenharmony_ci stamp_t, an unsigned 64 bit integer expressing the sample time in 52562306a36Sopenharmony_ci nanoseconds, to struct timeval. With the addition 52662306a36Sopenharmony_ci of a second memory mapping method the ``offset`` field moved into 52762306a36Sopenharmony_ci union ``m``, and a new ``memory`` field of type enum v4l2_memory 52862306a36Sopenharmony_ci was added to distinguish between 52962306a36Sopenharmony_ci I/O methods. See :ref:`io` for details. 53062306a36Sopenharmony_ci 53162306a36Sopenharmony_ci The ``V4L2_BUF_REQ_CONTIG`` flag was used by the V4L compatibility 53262306a36Sopenharmony_ci layer, after changes to this code it was no longer needed. The 53362306a36Sopenharmony_ci ``V4L2_BUF_ATTR_DEVICEMEM`` flag would indicate if the buffer was 53462306a36Sopenharmony_ci indeed allocated in device memory rather than DMA-able system 53562306a36Sopenharmony_ci memory. It was barely useful and so was removed. 53662306a36Sopenharmony_ci 53762306a36Sopenharmony_ci14. In struct v4l2_framebuffer the 53862306a36Sopenharmony_ci ``base[3]`` array anticipating double- and triple-buffering in 53962306a36Sopenharmony_ci off-screen video memory, however without defining a synchronization 54062306a36Sopenharmony_ci mechanism, was replaced by a single pointer. The 54162306a36Sopenharmony_ci ``V4L2_FBUF_CAP_SCALEUP`` and ``V4L2_FBUF_CAP_SCALEDOWN`` flags were 54262306a36Sopenharmony_ci removed. Applications can determine this capability more accurately 54362306a36Sopenharmony_ci using the new cropping and scaling interface. The 54462306a36Sopenharmony_ci ``V4L2_FBUF_CAP_CLIPPING`` flag was replaced by 54562306a36Sopenharmony_ci ``V4L2_FBUF_CAP_LIST_CLIPPING`` and 54662306a36Sopenharmony_ci ``V4L2_FBUF_CAP_BITMAP_CLIPPING``. 54762306a36Sopenharmony_ci 54862306a36Sopenharmony_ci15. In struct v4l2_clip the ``x``, ``y``, 54962306a36Sopenharmony_ci ``width`` and ``height`` field moved into a ``c`` substructure of 55062306a36Sopenharmony_ci type struct v4l2_rect. The ``x`` and ``y`` 55162306a36Sopenharmony_ci fields were renamed to ``left`` and ``top``, i. e. offsets to a 55262306a36Sopenharmony_ci context dependent origin. 55362306a36Sopenharmony_ci 55462306a36Sopenharmony_ci16. In struct v4l2_window the ``x``, ``y``, 55562306a36Sopenharmony_ci ``width`` and ``height`` field moved into a ``w`` substructure as 55662306a36Sopenharmony_ci above. A ``field`` field of type enum v4l2_field was added to 55762306a36Sopenharmony_ci distinguish between field and frame (interlaced) overlay. 55862306a36Sopenharmony_ci 55962306a36Sopenharmony_ci17. The digital zoom interface, including struct ``v4l2_zoomcap``, 56062306a36Sopenharmony_ci struct ``v4l2_zoom``, ``V4L2_ZOOM_NONCAP`` and 56162306a36Sopenharmony_ci ``V4L2_ZOOM_WHILESTREAMING`` was replaced by a new cropping and 56262306a36Sopenharmony_ci scaling interface. The previously unused 56362306a36Sopenharmony_ci struct v4l2_cropcap and struct v4l2_crop 56462306a36Sopenharmony_ci where redefined for this purpose. See :ref:`crop` for details. 56562306a36Sopenharmony_ci 56662306a36Sopenharmony_ci18. In struct v4l2_vbi_format the 56762306a36Sopenharmony_ci ``SAMPLE_FORMAT`` field now contains a four-character-code as used 56862306a36Sopenharmony_ci to identify video image formats and ``V4L2_PIX_FMT_GREY`` replaces 56962306a36Sopenharmony_ci the ``V4L2_VBI_SF_UBYTE`` define. The ``reserved`` field was 57062306a36Sopenharmony_ci extended. 57162306a36Sopenharmony_ci 57262306a36Sopenharmony_ci19. In struct v4l2_captureparm the type of 57362306a36Sopenharmony_ci the ``timeperframe`` field changed from unsigned long to 57462306a36Sopenharmony_ci struct v4l2_fract. This allows the accurate 57562306a36Sopenharmony_ci expression of multiples of the NTSC-M frame rate 30000 / 1001. A new 57662306a36Sopenharmony_ci field ``readbuffers`` was added to control the driver behaviour in 57762306a36Sopenharmony_ci read I/O mode. 57862306a36Sopenharmony_ci 57962306a36Sopenharmony_ci Similar changes were made to struct v4l2_outputparm. 58062306a36Sopenharmony_ci 58162306a36Sopenharmony_ci20. The struct ``v4l2_performance`` and 58262306a36Sopenharmony_ci ``VIDIOC_G_PERF`` ioctl were dropped. Except when using the 58362306a36Sopenharmony_ci :ref:`read/write I/O method <rw>`, which is limited anyway, this 58462306a36Sopenharmony_ci information is already available to applications. 58562306a36Sopenharmony_ci 58662306a36Sopenharmony_ci21. The example transformation from RGB to YCbCr color space in the old 58762306a36Sopenharmony_ci V4L2 documentation was inaccurate, this has been corrected in 58862306a36Sopenharmony_ci :ref:`pixfmt`. 58962306a36Sopenharmony_ci 59062306a36Sopenharmony_ciV4L2 2003-06-19 59162306a36Sopenharmony_ci=============== 59262306a36Sopenharmony_ci 59362306a36Sopenharmony_ci1. A new capability flag ``V4L2_CAP_RADIO`` was added for radio devices. 59462306a36Sopenharmony_ci Prior to this change radio devices would identify solely by having 59562306a36Sopenharmony_ci exactly one tuner whose type field reads ``V4L2_TUNER_RADIO``. 59662306a36Sopenharmony_ci 59762306a36Sopenharmony_ci2. An optional driver access priority mechanism was added, see 59862306a36Sopenharmony_ci :ref:`app-pri` for details. 59962306a36Sopenharmony_ci 60062306a36Sopenharmony_ci3. The audio input and output interface was found to be incomplete. 60162306a36Sopenharmony_ci 60262306a36Sopenharmony_ci Previously the :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` ioctl would 60362306a36Sopenharmony_ci enumerate the available audio inputs. An ioctl to determine the 60462306a36Sopenharmony_ci current audio input, if more than one combines with the current video 60562306a36Sopenharmony_ci input, did not exist. So ``VIDIOC_G_AUDIO`` was renamed to 60662306a36Sopenharmony_ci ``VIDIOC_G_AUDIO_OLD``, this ioctl was removed on Kernel 2.6.39. The 60762306a36Sopenharmony_ci :ref:`VIDIOC_ENUMAUDIO` ioctl was added to 60862306a36Sopenharmony_ci enumerate audio inputs, while 60962306a36Sopenharmony_ci :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` now reports the current 61062306a36Sopenharmony_ci audio input. 61162306a36Sopenharmony_ci 61262306a36Sopenharmony_ci The same changes were made to 61362306a36Sopenharmony_ci :ref:`VIDIOC_G_AUDOUT <VIDIOC_G_AUDOUT>` and 61462306a36Sopenharmony_ci :ref:`VIDIOC_ENUMAUDOUT <VIDIOC_ENUMAUDOUT>`. 61562306a36Sopenharmony_ci 61662306a36Sopenharmony_ci Until further the "videodev" module will automatically translate 61762306a36Sopenharmony_ci between the old and new ioctls, but drivers and applications must be 61862306a36Sopenharmony_ci updated to successfully compile again. 61962306a36Sopenharmony_ci 62062306a36Sopenharmony_ci4. The :ref:`VIDIOC_OVERLAY` ioctl was incorrectly 62162306a36Sopenharmony_ci defined with write-read parameter. It was changed to write-only, 62262306a36Sopenharmony_ci while the write-read version was renamed to ``VIDIOC_OVERLAY_OLD``. 62362306a36Sopenharmony_ci The old ioctl was removed on Kernel 2.6.39. Until further the 62462306a36Sopenharmony_ci "videodev" kernel module will automatically translate to the new 62562306a36Sopenharmony_ci version, so drivers must be recompiled, but not applications. 62662306a36Sopenharmony_ci 62762306a36Sopenharmony_ci5. :ref:`overlay` incorrectly stated that clipping rectangles define 62862306a36Sopenharmony_ci regions where the video can be seen. Correct is that clipping 62962306a36Sopenharmony_ci rectangles define regions where *no* video shall be displayed and so 63062306a36Sopenharmony_ci the graphics surface can be seen. 63162306a36Sopenharmony_ci 63262306a36Sopenharmony_ci6. The :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` and 63362306a36Sopenharmony_ci :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` ioctls were defined with 63462306a36Sopenharmony_ci write-only parameter, inconsistent with other ioctls modifying their 63562306a36Sopenharmony_ci argument. They were changed to write-read, while a ``_OLD`` suffix 63662306a36Sopenharmony_ci was added to the write-only versions. The old ioctls were removed on 63762306a36Sopenharmony_ci Kernel 2.6.39. Drivers and applications assuming a constant parameter 63862306a36Sopenharmony_ci need an update. 63962306a36Sopenharmony_ci 64062306a36Sopenharmony_ciV4L2 2003-11-05 64162306a36Sopenharmony_ci=============== 64262306a36Sopenharmony_ci 64362306a36Sopenharmony_ci1. In :ref:`pixfmt-rgb` the following pixel formats were incorrectly 64462306a36Sopenharmony_ci transferred from Bill Dirks' V4L2 specification. Descriptions below 64562306a36Sopenharmony_ci refer to bytes in memory, in ascending address order. 64662306a36Sopenharmony_ci 64762306a36Sopenharmony_ci 64862306a36Sopenharmony_ci .. flat-table:: 64962306a36Sopenharmony_ci :header-rows: 1 65062306a36Sopenharmony_ci :stub-columns: 0 65162306a36Sopenharmony_ci 65262306a36Sopenharmony_ci * - Symbol 65362306a36Sopenharmony_ci - In this document prior to revision 0.5 65462306a36Sopenharmony_ci - Corrected 65562306a36Sopenharmony_ci * - ``V4L2_PIX_FMT_RGB24`` 65662306a36Sopenharmony_ci - B, G, R 65762306a36Sopenharmony_ci - R, G, B 65862306a36Sopenharmony_ci * - ``V4L2_PIX_FMT_BGR24`` 65962306a36Sopenharmony_ci - R, G, B 66062306a36Sopenharmony_ci - B, G, R 66162306a36Sopenharmony_ci * - ``V4L2_PIX_FMT_RGB32`` 66262306a36Sopenharmony_ci - B, G, R, X 66362306a36Sopenharmony_ci - R, G, B, X 66462306a36Sopenharmony_ci * - ``V4L2_PIX_FMT_BGR32`` 66562306a36Sopenharmony_ci - R, G, B, X 66662306a36Sopenharmony_ci - B, G, R, X 66762306a36Sopenharmony_ci 66862306a36Sopenharmony_ci The ``V4L2_PIX_FMT_BGR24`` example was always correct. 66962306a36Sopenharmony_ci 67062306a36Sopenharmony_ci In :ref:`v4l-image-properties` the mapping of the V4L 67162306a36Sopenharmony_ci ``VIDEO_PALETTE_RGB24`` and ``VIDEO_PALETTE_RGB32`` formats to V4L2 67262306a36Sopenharmony_ci pixel formats was accordingly corrected. 67362306a36Sopenharmony_ci 67462306a36Sopenharmony_ci2. Unrelated to the fixes above, drivers may still interpret some V4L2 67562306a36Sopenharmony_ci RGB pixel formats differently. These issues have yet to be addressed, 67662306a36Sopenharmony_ci for details see :ref:`pixfmt-rgb`. 67762306a36Sopenharmony_ci 67862306a36Sopenharmony_ciV4L2 in Linux 2.6.6, 2004-05-09 67962306a36Sopenharmony_ci=============================== 68062306a36Sopenharmony_ci 68162306a36Sopenharmony_ci1. The :ref:`VIDIOC_CROPCAP` ioctl was incorrectly 68262306a36Sopenharmony_ci defined with read-only parameter. It is now defined as write-read 68362306a36Sopenharmony_ci ioctl, while the read-only version was renamed to 68462306a36Sopenharmony_ci ``VIDIOC_CROPCAP_OLD``. The old ioctl was removed on Kernel 2.6.39. 68562306a36Sopenharmony_ci 68662306a36Sopenharmony_ciV4L2 in Linux 2.6.8 68762306a36Sopenharmony_ci=================== 68862306a36Sopenharmony_ci 68962306a36Sopenharmony_ci1. A new field ``input`` (former ``reserved[0]``) was added to the 69062306a36Sopenharmony_ci struct v4l2_buffer. Purpose of this 69162306a36Sopenharmony_ci field is to alternate between video inputs (e. g. cameras) in step 69262306a36Sopenharmony_ci with the video capturing process. This function must be enabled with 69362306a36Sopenharmony_ci the new ``V4L2_BUF_FLAG_INPUT`` flag. The ``flags`` field is no 69462306a36Sopenharmony_ci longer read-only. 69562306a36Sopenharmony_ci 69662306a36Sopenharmony_ciV4L2 spec erratum 2004-08-01 69762306a36Sopenharmony_ci============================ 69862306a36Sopenharmony_ci 69962306a36Sopenharmony_ci1. The return value of the :ref:`func-open` function was incorrectly 70062306a36Sopenharmony_ci documented. 70162306a36Sopenharmony_ci 70262306a36Sopenharmony_ci2. Audio output ioctls end in -AUDOUT, not -AUDIOOUT. 70362306a36Sopenharmony_ci 70462306a36Sopenharmony_ci3. In the Current Audio Input example the ``VIDIOC_G_AUDIO`` ioctl took 70562306a36Sopenharmony_ci the wrong argument. 70662306a36Sopenharmony_ci 70762306a36Sopenharmony_ci4. The documentation of the :ref:`VIDIOC_QBUF` and 70862306a36Sopenharmony_ci :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctls did not mention the 70962306a36Sopenharmony_ci struct v4l2_buffer ``memory`` field. It was 71062306a36Sopenharmony_ci also missing from examples. Also on the ``VIDIOC_DQBUF`` page the ``EIO`` 71162306a36Sopenharmony_ci error code was not documented. 71262306a36Sopenharmony_ci 71362306a36Sopenharmony_ciV4L2 in Linux 2.6.14 71462306a36Sopenharmony_ci==================== 71562306a36Sopenharmony_ci 71662306a36Sopenharmony_ci1. A new sliced VBI interface was added. It is documented in 71762306a36Sopenharmony_ci :ref:`sliced` and replaces the interface first proposed in V4L2 71862306a36Sopenharmony_ci specification 0.8. 71962306a36Sopenharmony_ci 72062306a36Sopenharmony_ciV4L2 in Linux 2.6.15 72162306a36Sopenharmony_ci==================== 72262306a36Sopenharmony_ci 72362306a36Sopenharmony_ci1. The :ref:`VIDIOC_LOG_STATUS` ioctl was added. 72462306a36Sopenharmony_ci 72562306a36Sopenharmony_ci2. New video standards ``V4L2_STD_NTSC_443``, ``V4L2_STD_SECAM_LC``, 72662306a36Sopenharmony_ci ``V4L2_STD_SECAM_DK`` (a set of SECAM D, K and K1), and 72762306a36Sopenharmony_ci ``V4L2_STD_ATSC`` (a set of ``V4L2_STD_ATSC_8_VSB`` and 72862306a36Sopenharmony_ci ``V4L2_STD_ATSC_16_VSB``) were defined. Note the ``V4L2_STD_525_60`` 72962306a36Sopenharmony_ci set now includes ``V4L2_STD_NTSC_443``. See also 73062306a36Sopenharmony_ci :ref:`v4l2-std-id`. 73162306a36Sopenharmony_ci 73262306a36Sopenharmony_ci3. The ``VIDIOC_G_COMP`` and ``VIDIOC_S_COMP`` ioctl were renamed to 73362306a36Sopenharmony_ci ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGCOMP`` respectively. Their 73462306a36Sopenharmony_ci argument was replaced by a struct 73562306a36Sopenharmony_ci ``v4l2_mpeg_compression`` pointer. (The 73662306a36Sopenharmony_ci ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGCOMP`` ioctls where removed 73762306a36Sopenharmony_ci in Linux 2.6.25.) 73862306a36Sopenharmony_ci 73962306a36Sopenharmony_ciV4L2 spec erratum 2005-11-27 74062306a36Sopenharmony_ci============================ 74162306a36Sopenharmony_ci 74262306a36Sopenharmony_ciThe capture example in :ref:`capture-example` called the 74362306a36Sopenharmony_ci:ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` ioctl without checking if 74462306a36Sopenharmony_cicropping is supported. In the video standard selection example in 74562306a36Sopenharmony_ci:ref:`standard` the :ref:`VIDIOC_S_STD <VIDIOC_G_STD>` call used 74662306a36Sopenharmony_cithe wrong argument type. 74762306a36Sopenharmony_ci 74862306a36Sopenharmony_ciV4L2 spec erratum 2006-01-10 74962306a36Sopenharmony_ci============================ 75062306a36Sopenharmony_ci 75162306a36Sopenharmony_ci1. The ``V4L2_IN_ST_COLOR_KILL`` flag in struct v4l2_input not only 75262306a36Sopenharmony_ci indicates if the color killer is enabled, but also if it is active. 75362306a36Sopenharmony_ci (The color killer disables color decoding when it detects no color 75462306a36Sopenharmony_ci in the video signal to improve the image quality.) 75562306a36Sopenharmony_ci 75662306a36Sopenharmony_ci2. :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` is a write-read ioctl, not 75762306a36Sopenharmony_ci write-only as stated on its reference page. The ioctl changed in 2003 75862306a36Sopenharmony_ci as noted above. 75962306a36Sopenharmony_ci 76062306a36Sopenharmony_ciV4L2 spec erratum 2006-02-03 76162306a36Sopenharmony_ci============================ 76262306a36Sopenharmony_ci 76362306a36Sopenharmony_ci1. In struct v4l2_captureparm and struct v4l2_outputparm the ``timeperframe`` 76462306a36Sopenharmony_ci field gives the time in seconds, not microseconds. 76562306a36Sopenharmony_ci 76662306a36Sopenharmony_ciV4L2 spec erratum 2006-02-04 76762306a36Sopenharmony_ci============================ 76862306a36Sopenharmony_ci 76962306a36Sopenharmony_ci1. The ``clips`` field in struct v4l2_window 77062306a36Sopenharmony_ci must point to an array of struct v4l2_clip, not 77162306a36Sopenharmony_ci a linked list, because drivers ignore the 77262306a36Sopenharmony_ci struct v4l2_clip. ``next`` pointer. 77362306a36Sopenharmony_ci 77462306a36Sopenharmony_ciV4L2 in Linux 2.6.17 77562306a36Sopenharmony_ci==================== 77662306a36Sopenharmony_ci 77762306a36Sopenharmony_ci1. New video standard macros were added: ``V4L2_STD_NTSC_M_KR`` (NTSC M 77862306a36Sopenharmony_ci South Korea), and the sets ``V4L2_STD_MN``, ``V4L2_STD_B``, 77962306a36Sopenharmony_ci ``V4L2_STD_GH`` and ``V4L2_STD_DK``. The ``V4L2_STD_NTSC`` and 78062306a36Sopenharmony_ci ``V4L2_STD_SECAM`` sets now include ``V4L2_STD_NTSC_M_KR`` and 78162306a36Sopenharmony_ci ``V4L2_STD_SECAM_LC`` respectively. 78262306a36Sopenharmony_ci 78362306a36Sopenharmony_ci2. A new ``V4L2_TUNER_MODE_LANG1_LANG2`` was defined to record both 78462306a36Sopenharmony_ci languages of a bilingual program. The use of 78562306a36Sopenharmony_ci ``V4L2_TUNER_MODE_STEREO`` for this purpose is deprecated now. See 78662306a36Sopenharmony_ci the :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` section for details. 78762306a36Sopenharmony_ci 78862306a36Sopenharmony_ciV4L2 spec erratum 2006-09-23 (Draft 0.15) 78962306a36Sopenharmony_ci========================================= 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_ci1. In various places ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE`` and 79262306a36Sopenharmony_ci ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT`` of the sliced VBI interface were 79362306a36Sopenharmony_ci not mentioned along with other buffer types. 79462306a36Sopenharmony_ci 79562306a36Sopenharmony_ci2. In :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` it was clarified that the 79662306a36Sopenharmony_ci struct v4l2_audio ``mode`` field is a flags field. 79762306a36Sopenharmony_ci 79862306a36Sopenharmony_ci3. :ref:`VIDIOC_QUERYCAP` did not mention the sliced VBI and radio 79962306a36Sopenharmony_ci capability flags. 80062306a36Sopenharmony_ci 80162306a36Sopenharmony_ci4. In :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` it was clarified that 80262306a36Sopenharmony_ci applications must initialize the tuner ``type`` field of 80362306a36Sopenharmony_ci struct v4l2_frequency before calling 80462306a36Sopenharmony_ci :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>`. 80562306a36Sopenharmony_ci 80662306a36Sopenharmony_ci5. The ``reserved`` array in struct v4l2_requestbuffers has 2 elements, 80762306a36Sopenharmony_ci not 32. 80862306a36Sopenharmony_ci 80962306a36Sopenharmony_ci6. In :ref:`output` and :ref:`raw-vbi` the device file names 81062306a36Sopenharmony_ci ``/dev/vout`` which never caught on were replaced by ``/dev/video``. 81162306a36Sopenharmony_ci 81262306a36Sopenharmony_ci7. With Linux 2.6.15 the possible range for VBI device minor numbers was 81362306a36Sopenharmony_ci extended from 224-239 to 224-255. Accordingly device file names 81462306a36Sopenharmony_ci ``/dev/vbi0`` to ``/dev/vbi31`` are possible now. 81562306a36Sopenharmony_ci 81662306a36Sopenharmony_ciV4L2 in Linux 2.6.18 81762306a36Sopenharmony_ci==================== 81862306a36Sopenharmony_ci 81962306a36Sopenharmony_ci1. New ioctls :ref:`VIDIOC_G_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>`, 82062306a36Sopenharmony_ci :ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` and 82162306a36Sopenharmony_ci :ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` were added, a 82262306a36Sopenharmony_ci flag to skip unsupported controls with 82362306a36Sopenharmony_ci :ref:`VIDIOC_QUERYCTRL`, new control types 82462306a36Sopenharmony_ci ``V4L2_CTRL_TYPE_INTEGER64`` and ``V4L2_CTRL_TYPE_CTRL_CLASS`` 82562306a36Sopenharmony_ci (enum v4l2_ctrl_type), and new control flags 82662306a36Sopenharmony_ci ``V4L2_CTRL_FLAG_READ_ONLY``, ``V4L2_CTRL_FLAG_UPDATE``, 82762306a36Sopenharmony_ci ``V4L2_CTRL_FLAG_INACTIVE`` and ``V4L2_CTRL_FLAG_SLIDER`` 82862306a36Sopenharmony_ci (:ref:`control-flags`). See :ref:`extended-controls` for details. 82962306a36Sopenharmony_ci 83062306a36Sopenharmony_ciV4L2 in Linux 2.6.19 83162306a36Sopenharmony_ci==================== 83262306a36Sopenharmony_ci 83362306a36Sopenharmony_ci1. In struct v4l2_sliced_vbi_cap a 83462306a36Sopenharmony_ci buffer type field was added replacing a reserved field. Note on 83562306a36Sopenharmony_ci architectures where the size of enum types differs from int types the 83662306a36Sopenharmony_ci size of the structure changed. The 83762306a36Sopenharmony_ci :ref:`VIDIOC_G_SLICED_VBI_CAP <VIDIOC_G_SLICED_VBI_CAP>` ioctl 83862306a36Sopenharmony_ci was redefined from being read-only to write-read. Applications must 83962306a36Sopenharmony_ci initialize the type field and clear the reserved fields now. These 84062306a36Sopenharmony_ci changes may *break the compatibility* with older drivers and 84162306a36Sopenharmony_ci applications. 84262306a36Sopenharmony_ci 84362306a36Sopenharmony_ci2. The ioctls :ref:`VIDIOC_ENUM_FRAMESIZES` 84462306a36Sopenharmony_ci and 84562306a36Sopenharmony_ci :ref:`VIDIOC_ENUM_FRAMEINTERVALS` 84662306a36Sopenharmony_ci were added. 84762306a36Sopenharmony_ci 84862306a36Sopenharmony_ci3. A new pixel format ``V4L2_PIX_FMT_RGB444`` (:ref:`pixfmt-rgb`) was 84962306a36Sopenharmony_ci added. 85062306a36Sopenharmony_ci 85162306a36Sopenharmony_ciV4L2 spec erratum 2006-10-12 (Draft 0.17) 85262306a36Sopenharmony_ci========================================= 85362306a36Sopenharmony_ci 85462306a36Sopenharmony_ci1. ``V4L2_PIX_FMT_HM12`` (:ref:`reserved-formats`) is a YUV 4:2:0, not 85562306a36Sopenharmony_ci 4:2:2 format. 85662306a36Sopenharmony_ci 85762306a36Sopenharmony_ciV4L2 in Linux 2.6.21 85862306a36Sopenharmony_ci==================== 85962306a36Sopenharmony_ci 86062306a36Sopenharmony_ci1. The ``videodev2.h`` header file is now dual licensed under GNU 86162306a36Sopenharmony_ci General Public License version two or later, and under a 3-clause 86262306a36Sopenharmony_ci BSD-style license. 86362306a36Sopenharmony_ci 86462306a36Sopenharmony_ciV4L2 in Linux 2.6.22 86562306a36Sopenharmony_ci==================== 86662306a36Sopenharmony_ci 86762306a36Sopenharmony_ci1. Two new field orders ``V4L2_FIELD_INTERLACED_TB`` and 86862306a36Sopenharmony_ci ``V4L2_FIELD_INTERLACED_BT`` were added. See enum v4l2_field for 86962306a36Sopenharmony_ci details. 87062306a36Sopenharmony_ci 87162306a36Sopenharmony_ci2. Three new clipping/blending methods with a global or straight or 87262306a36Sopenharmony_ci inverted local alpha value were added to the video overlay interface. 87362306a36Sopenharmony_ci See the description of the :ref:`VIDIOC_G_FBUF <VIDIOC_G_FBUF>` 87462306a36Sopenharmony_ci and :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` ioctls for details. 87562306a36Sopenharmony_ci 87662306a36Sopenharmony_ci A new ``global_alpha`` field was added to struct v4l2_window, 87762306a36Sopenharmony_ci extending the structure. This may **break compatibility** with 87862306a36Sopenharmony_ci applications using a struct v4l2_window directly. However the 87962306a36Sopenharmony_ci :ref:`VIDIOC_G/S/TRY_FMT <VIDIOC_G_FMT>` ioctls, which take a 88062306a36Sopenharmony_ci pointer to a struct v4l2_format parent structure 88162306a36Sopenharmony_ci with padding bytes at the end, are not affected. 88262306a36Sopenharmony_ci 88362306a36Sopenharmony_ci3. The format of the ``chromakey`` field in struct v4l2_window changed from 88462306a36Sopenharmony_ci "host order RGB32" to a pixel value in the same format as the framebuffer. 88562306a36Sopenharmony_ci This may **break compatibility** with existing applications. Drivers 88662306a36Sopenharmony_ci supporting the "host order RGB32" format are not known. 88762306a36Sopenharmony_ci 88862306a36Sopenharmony_ciV4L2 in Linux 2.6.24 88962306a36Sopenharmony_ci==================== 89062306a36Sopenharmony_ci 89162306a36Sopenharmony_ci1. The pixel formats ``V4L2_PIX_FMT_PAL8``, ``V4L2_PIX_FMT_YUV444``, 89262306a36Sopenharmony_ci ``V4L2_PIX_FMT_YUV555``, ``V4L2_PIX_FMT_YUV565`` and 89362306a36Sopenharmony_ci ``V4L2_PIX_FMT_YUV32`` were added. 89462306a36Sopenharmony_ci 89562306a36Sopenharmony_ciV4L2 in Linux 2.6.25 89662306a36Sopenharmony_ci==================== 89762306a36Sopenharmony_ci 89862306a36Sopenharmony_ci1. The pixel formats :ref:`V4L2_PIX_FMT_Y16 <V4L2-PIX-FMT-Y16>` and 89962306a36Sopenharmony_ci :ref:`V4L2_PIX_FMT_SBGGR16 <V4L2-PIX-FMT-SBGGR16>` were added. 90062306a36Sopenharmony_ci 90162306a36Sopenharmony_ci2. New :ref:`controls <control>` ``V4L2_CID_POWER_LINE_FREQUENCY``, 90262306a36Sopenharmony_ci ``V4L2_CID_HUE_AUTO``, ``V4L2_CID_WHITE_BALANCE_TEMPERATURE``, 90362306a36Sopenharmony_ci ``V4L2_CID_SHARPNESS`` and ``V4L2_CID_BACKLIGHT_COMPENSATION`` were 90462306a36Sopenharmony_ci added. The controls ``V4L2_CID_BLACK_LEVEL``, ``V4L2_CID_WHITENESS``, 90562306a36Sopenharmony_ci ``V4L2_CID_HCENTER`` and ``V4L2_CID_VCENTER`` were deprecated. 90662306a36Sopenharmony_ci 90762306a36Sopenharmony_ci3. A :ref:`Camera controls class <camera-controls>` was added, with 90862306a36Sopenharmony_ci the new controls ``V4L2_CID_EXPOSURE_AUTO``, 90962306a36Sopenharmony_ci ``V4L2_CID_EXPOSURE_ABSOLUTE``, ``V4L2_CID_EXPOSURE_AUTO_PRIORITY``, 91062306a36Sopenharmony_ci ``V4L2_CID_PAN_RELATIVE``, ``V4L2_CID_TILT_RELATIVE``, 91162306a36Sopenharmony_ci ``V4L2_CID_PAN_RESET``, ``V4L2_CID_TILT_RESET``, 91262306a36Sopenharmony_ci ``V4L2_CID_PAN_ABSOLUTE``, ``V4L2_CID_TILT_ABSOLUTE``, 91362306a36Sopenharmony_ci ``V4L2_CID_FOCUS_ABSOLUTE``, ``V4L2_CID_FOCUS_RELATIVE`` and 91462306a36Sopenharmony_ci ``V4L2_CID_FOCUS_AUTO``. 91562306a36Sopenharmony_ci 91662306a36Sopenharmony_ci4. The ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGCOMP`` ioctls, which 91762306a36Sopenharmony_ci were superseded by the :ref:`extended controls <extended-controls>` 91862306a36Sopenharmony_ci interface in Linux 2.6.18, where finally removed from the 91962306a36Sopenharmony_ci ``videodev2.h`` header file. 92062306a36Sopenharmony_ci 92162306a36Sopenharmony_ciV4L2 in Linux 2.6.26 92262306a36Sopenharmony_ci==================== 92362306a36Sopenharmony_ci 92462306a36Sopenharmony_ci1. The pixel formats ``V4L2_PIX_FMT_Y16`` and ``V4L2_PIX_FMT_SBGGR16`` 92562306a36Sopenharmony_ci were added. 92662306a36Sopenharmony_ci 92762306a36Sopenharmony_ci2. Added user controls ``V4L2_CID_CHROMA_AGC`` and 92862306a36Sopenharmony_ci ``V4L2_CID_COLOR_KILLER``. 92962306a36Sopenharmony_ci 93062306a36Sopenharmony_ciV4L2 in Linux 2.6.27 93162306a36Sopenharmony_ci==================== 93262306a36Sopenharmony_ci 93362306a36Sopenharmony_ci1. The :ref:`VIDIOC_S_HW_FREQ_SEEK` ioctl 93462306a36Sopenharmony_ci and the ``V4L2_CAP_HW_FREQ_SEEK`` capability were added. 93562306a36Sopenharmony_ci 93662306a36Sopenharmony_ci2. The pixel formats ``V4L2_PIX_FMT_YVYU``, ``V4L2_PIX_FMT_PCA501``, 93762306a36Sopenharmony_ci ``V4L2_PIX_FMT_PCA505``, ``V4L2_PIX_FMT_PCA508``, 93862306a36Sopenharmony_ci ``V4L2_PIX_FMT_PCA561``, ``V4L2_PIX_FMT_SGBRG8``, 93962306a36Sopenharmony_ci ``V4L2_PIX_FMT_PAC207`` and ``V4L2_PIX_FMT_PJPG`` were added. 94062306a36Sopenharmony_ci 94162306a36Sopenharmony_ciV4L2 in Linux 2.6.28 94262306a36Sopenharmony_ci==================== 94362306a36Sopenharmony_ci 94462306a36Sopenharmony_ci1. Added ``V4L2_MPEG_AUDIO_ENCODING_AAC`` and 94562306a36Sopenharmony_ci ``V4L2_MPEG_AUDIO_ENCODING_AC3`` MPEG audio encodings. 94662306a36Sopenharmony_ci 94762306a36Sopenharmony_ci2. Added ``V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC`` MPEG video encoding. 94862306a36Sopenharmony_ci 94962306a36Sopenharmony_ci3. The pixel formats ``V4L2_PIX_FMT_SGRBG10`` and 95062306a36Sopenharmony_ci ``V4L2_PIX_FMT_SGRBG10DPCM8`` were added. 95162306a36Sopenharmony_ci 95262306a36Sopenharmony_ciV4L2 in Linux 2.6.29 95362306a36Sopenharmony_ci==================== 95462306a36Sopenharmony_ci 95562306a36Sopenharmony_ci1. The ``VIDIOC_G_CHIP_IDENT`` ioctl was renamed to 95662306a36Sopenharmony_ci ``VIDIOC_G_CHIP_IDENT_OLD`` and ``VIDIOC_DBG_G_CHIP_IDENT`` was 95762306a36Sopenharmony_ci introduced in its place. The old struct ``v4l2_chip_ident`` was renamed to 95862306a36Sopenharmony_ci struct ``v4l2_chip_ident_old``. 95962306a36Sopenharmony_ci 96062306a36Sopenharmony_ci2. The pixel formats ``V4L2_PIX_FMT_VYUY``, ``V4L2_PIX_FMT_NV16`` and 96162306a36Sopenharmony_ci ``V4L2_PIX_FMT_NV61`` were added. 96262306a36Sopenharmony_ci 96362306a36Sopenharmony_ci3. Added camera controls ``V4L2_CID_ZOOM_ABSOLUTE``, 96462306a36Sopenharmony_ci ``V4L2_CID_ZOOM_RELATIVE``, ``V4L2_CID_ZOOM_CONTINUOUS`` and 96562306a36Sopenharmony_ci ``V4L2_CID_PRIVACY``. 96662306a36Sopenharmony_ci 96762306a36Sopenharmony_ciV4L2 in Linux 2.6.30 96862306a36Sopenharmony_ci==================== 96962306a36Sopenharmony_ci 97062306a36Sopenharmony_ci1. New control flag ``V4L2_CTRL_FLAG_WRITE_ONLY`` was added. 97162306a36Sopenharmony_ci 97262306a36Sopenharmony_ci2. New control ``V4L2_CID_COLORFX`` was added. 97362306a36Sopenharmony_ci 97462306a36Sopenharmony_ciV4L2 in Linux 2.6.32 97562306a36Sopenharmony_ci==================== 97662306a36Sopenharmony_ci 97762306a36Sopenharmony_ci1. In order to be easier to compare a V4L2 API and a kernel version, now 97862306a36Sopenharmony_ci V4L2 API is numbered using the Linux Kernel version numeration. 97962306a36Sopenharmony_ci 98062306a36Sopenharmony_ci2. Finalized the RDS capture API. See :ref:`rds` for more information. 98162306a36Sopenharmony_ci 98262306a36Sopenharmony_ci3. Added new capabilities for modulators and RDS encoders. 98362306a36Sopenharmony_ci 98462306a36Sopenharmony_ci4. Add description for libv4l API. 98562306a36Sopenharmony_ci 98662306a36Sopenharmony_ci5. Added support for string controls via new type 98762306a36Sopenharmony_ci ``V4L2_CTRL_TYPE_STRING``. 98862306a36Sopenharmony_ci 98962306a36Sopenharmony_ci6. Added ``V4L2_CID_BAND_STOP_FILTER`` documentation. 99062306a36Sopenharmony_ci 99162306a36Sopenharmony_ci7. Added FM Modulator (FM TX) Extended Control Class: 99262306a36Sopenharmony_ci ``V4L2_CTRL_CLASS_FM_TX`` and their Control IDs. 99362306a36Sopenharmony_ci 99462306a36Sopenharmony_ci8. Added FM Receiver (FM RX) Extended Control Class: 99562306a36Sopenharmony_ci ``V4L2_CTRL_CLASS_FM_RX`` and their Control IDs. 99662306a36Sopenharmony_ci 99762306a36Sopenharmony_ci9. Added Remote Controller chapter, describing the default Remote 99862306a36Sopenharmony_ci Controller mapping for media devices. 99962306a36Sopenharmony_ci 100062306a36Sopenharmony_ciV4L2 in Linux 2.6.33 100162306a36Sopenharmony_ci==================== 100262306a36Sopenharmony_ci 100362306a36Sopenharmony_ci1. Added support for Digital Video timings in order to support HDTV 100462306a36Sopenharmony_ci receivers and transmitters. 100562306a36Sopenharmony_ci 100662306a36Sopenharmony_ciV4L2 in Linux 2.6.34 100762306a36Sopenharmony_ci==================== 100862306a36Sopenharmony_ci 100962306a36Sopenharmony_ci1. Added ``V4L2_CID_IRIS_ABSOLUTE`` and ``V4L2_CID_IRIS_RELATIVE`` 101062306a36Sopenharmony_ci controls to the :ref:`Camera controls class <camera-controls>`. 101162306a36Sopenharmony_ci 101262306a36Sopenharmony_ciV4L2 in Linux 2.6.37 101362306a36Sopenharmony_ci==================== 101462306a36Sopenharmony_ci 101562306a36Sopenharmony_ci1. Remove the vtx (videotext/teletext) API. This API was no longer used 101662306a36Sopenharmony_ci and no hardware exists to verify the API. Nor were any userspace 101762306a36Sopenharmony_ci applications found that used it. It was originally scheduled for 101862306a36Sopenharmony_ci removal in 2.6.35. 101962306a36Sopenharmony_ci 102062306a36Sopenharmony_ciV4L2 in Linux 2.6.39 102162306a36Sopenharmony_ci==================== 102262306a36Sopenharmony_ci 102362306a36Sopenharmony_ci1. The old VIDIOC_*_OLD symbols and V4L1 support were removed. 102462306a36Sopenharmony_ci 102562306a36Sopenharmony_ci2. Multi-planar API added. Does not affect the compatibility of current 102662306a36Sopenharmony_ci drivers and applications. See :ref:`multi-planar API <planar-apis>` 102762306a36Sopenharmony_ci for details. 102862306a36Sopenharmony_ci 102962306a36Sopenharmony_ciV4L2 in Linux 3.1 103062306a36Sopenharmony_ci================= 103162306a36Sopenharmony_ci 103262306a36Sopenharmony_ci1. VIDIOC_QUERYCAP now returns a per-subsystem version instead of a 103362306a36Sopenharmony_ci per-driver one. 103462306a36Sopenharmony_ci 103562306a36Sopenharmony_ci Standardize an error code for invalid ioctl. 103662306a36Sopenharmony_ci 103762306a36Sopenharmony_ci Added V4L2_CTRL_TYPE_BITMASK. 103862306a36Sopenharmony_ci 103962306a36Sopenharmony_ciV4L2 in Linux 3.2 104062306a36Sopenharmony_ci================= 104162306a36Sopenharmony_ci 104262306a36Sopenharmony_ci1. V4L2_CTRL_FLAG_VOLATILE was added to signal volatile controls to 104362306a36Sopenharmony_ci userspace. 104462306a36Sopenharmony_ci 104562306a36Sopenharmony_ci2. Add selection API for extended control over cropping and composing. 104662306a36Sopenharmony_ci Does not affect the compatibility of current drivers and 104762306a36Sopenharmony_ci applications. See :ref:`selection API <selection-api>` for details. 104862306a36Sopenharmony_ci 104962306a36Sopenharmony_ciV4L2 in Linux 3.3 105062306a36Sopenharmony_ci================= 105162306a36Sopenharmony_ci 105262306a36Sopenharmony_ci1. Added ``V4L2_CID_ALPHA_COMPONENT`` control to the 105362306a36Sopenharmony_ci :ref:`User controls class <control>`. 105462306a36Sopenharmony_ci 105562306a36Sopenharmony_ci2. Added the device_caps field to struct v4l2_capabilities and added 105662306a36Sopenharmony_ci the new V4L2_CAP_DEVICE_CAPS capability. 105762306a36Sopenharmony_ci 105862306a36Sopenharmony_ciV4L2 in Linux 3.4 105962306a36Sopenharmony_ci================= 106062306a36Sopenharmony_ci 106162306a36Sopenharmony_ci1. Added :ref:`JPEG compression control class <jpeg-controls>`. 106262306a36Sopenharmony_ci 106362306a36Sopenharmony_ci2. Extended the DV Timings API: 106462306a36Sopenharmony_ci :ref:`VIDIOC_ENUM_DV_TIMINGS`, 106562306a36Sopenharmony_ci :ref:`VIDIOC_QUERY_DV_TIMINGS` and 106662306a36Sopenharmony_ci :ref:`VIDIOC_DV_TIMINGS_CAP`. 106762306a36Sopenharmony_ci 106862306a36Sopenharmony_ciV4L2 in Linux 3.5 106962306a36Sopenharmony_ci================= 107062306a36Sopenharmony_ci 107162306a36Sopenharmony_ci1. Added integer menus, the new type will be 107262306a36Sopenharmony_ci V4L2_CTRL_TYPE_INTEGER_MENU. 107362306a36Sopenharmony_ci 107462306a36Sopenharmony_ci2. Added selection API for V4L2 subdev interface: 107562306a36Sopenharmony_ci :ref:`VIDIOC_SUBDEV_G_SELECTION` and 107662306a36Sopenharmony_ci :ref:`VIDIOC_SUBDEV_S_SELECTION <VIDIOC_SUBDEV_G_SELECTION>`. 107762306a36Sopenharmony_ci 107862306a36Sopenharmony_ci3. Added ``V4L2_COLORFX_ANTIQUE``, ``V4L2_COLORFX_ART_FREEZE``, 107962306a36Sopenharmony_ci ``V4L2_COLORFX_AQUA``, ``V4L2_COLORFX_SILHOUETTE``, 108062306a36Sopenharmony_ci ``V4L2_COLORFX_SOLARIZATION``, ``V4L2_COLORFX_VIVID`` and 108162306a36Sopenharmony_ci ``V4L2_COLORFX_ARBITRARY_CBCR`` menu items to the 108262306a36Sopenharmony_ci ``V4L2_CID_COLORFX`` control. 108362306a36Sopenharmony_ci 108462306a36Sopenharmony_ci4. Added ``V4L2_CID_COLORFX_CBCR`` control. 108562306a36Sopenharmony_ci 108662306a36Sopenharmony_ci5. Added camera controls ``V4L2_CID_AUTO_EXPOSURE_BIAS``, 108762306a36Sopenharmony_ci ``V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE``, 108862306a36Sopenharmony_ci ``V4L2_CID_IMAGE_STABILIZATION``, ``V4L2_CID_ISO_SENSITIVITY``, 108962306a36Sopenharmony_ci ``V4L2_CID_ISO_SENSITIVITY_AUTO``, ``V4L2_CID_EXPOSURE_METERING``, 109062306a36Sopenharmony_ci ``V4L2_CID_SCENE_MODE``, ``V4L2_CID_3A_LOCK``, 109162306a36Sopenharmony_ci ``V4L2_CID_AUTO_FOCUS_START``, ``V4L2_CID_AUTO_FOCUS_STOP``, 109262306a36Sopenharmony_ci ``V4L2_CID_AUTO_FOCUS_STATUS`` and ``V4L2_CID_AUTO_FOCUS_RANGE``. 109362306a36Sopenharmony_ci 109462306a36Sopenharmony_ciV4L2 in Linux 3.6 109562306a36Sopenharmony_ci================= 109662306a36Sopenharmony_ci 109762306a36Sopenharmony_ci1. Replaced ``input`` in struct v4l2_buffer by 109862306a36Sopenharmony_ci ``reserved2`` and removed ``V4L2_BUF_FLAG_INPUT``. 109962306a36Sopenharmony_ci 110062306a36Sopenharmony_ci2. Added V4L2_CAP_VIDEO_M2M and V4L2_CAP_VIDEO_M2M_MPLANE 110162306a36Sopenharmony_ci capabilities. 110262306a36Sopenharmony_ci 110362306a36Sopenharmony_ci3. Added support for frequency band enumerations: 110462306a36Sopenharmony_ci :ref:`VIDIOC_ENUM_FREQ_BANDS`. 110562306a36Sopenharmony_ci 110662306a36Sopenharmony_ciV4L2 in Linux 3.9 110762306a36Sopenharmony_ci================= 110862306a36Sopenharmony_ci 110962306a36Sopenharmony_ci1. Added timestamp types to ``flags`` field in 111062306a36Sopenharmony_ci struct v4l2_buffer. See :ref:`buffer-flags`. 111162306a36Sopenharmony_ci 111262306a36Sopenharmony_ci2. Added ``V4L2_EVENT_CTRL_CH_RANGE`` control event changes flag. See 111362306a36Sopenharmony_ci :ref:`ctrl-changes-flags`. 111462306a36Sopenharmony_ci 111562306a36Sopenharmony_ciV4L2 in Linux 3.10 111662306a36Sopenharmony_ci================== 111762306a36Sopenharmony_ci 111862306a36Sopenharmony_ci1. Removed obsolete and unused DV_PRESET ioctls VIDIOC_G_DV_PRESET, 111962306a36Sopenharmony_ci VIDIOC_S_DV_PRESET, VIDIOC_QUERY_DV_PRESET and 112062306a36Sopenharmony_ci VIDIOC_ENUM_DV_PRESET. Remove the related v4l2_input/output 112162306a36Sopenharmony_ci capability flags V4L2_IN_CAP_PRESETS and V4L2_OUT_CAP_PRESETS. 112262306a36Sopenharmony_ci 112362306a36Sopenharmony_ci2. Added new debugging ioctl 112462306a36Sopenharmony_ci :ref:`VIDIOC_DBG_G_CHIP_INFO`. 112562306a36Sopenharmony_ci 112662306a36Sopenharmony_ciV4L2 in Linux 3.11 112762306a36Sopenharmony_ci================== 112862306a36Sopenharmony_ci 112962306a36Sopenharmony_ci1. Remove obsolete ``VIDIOC_DBG_G_CHIP_IDENT`` ioctl. 113062306a36Sopenharmony_ci 113162306a36Sopenharmony_ciV4L2 in Linux 3.14 113262306a36Sopenharmony_ci================== 113362306a36Sopenharmony_ci 113462306a36Sopenharmony_ci1. In struct v4l2_rect, the type of ``width`` and 113562306a36Sopenharmony_ci ``height`` fields changed from _s32 to _u32. 113662306a36Sopenharmony_ci 113762306a36Sopenharmony_ciV4L2 in Linux 3.15 113862306a36Sopenharmony_ci================== 113962306a36Sopenharmony_ci 114062306a36Sopenharmony_ci1. Added Software Defined Radio (SDR) Interface. 114162306a36Sopenharmony_ci 114262306a36Sopenharmony_ciV4L2 in Linux 3.16 114362306a36Sopenharmony_ci================== 114462306a36Sopenharmony_ci 114562306a36Sopenharmony_ci1. Added event V4L2_EVENT_SOURCE_CHANGE. 114662306a36Sopenharmony_ci 114762306a36Sopenharmony_ciV4L2 in Linux 3.17 114862306a36Sopenharmony_ci================== 114962306a36Sopenharmony_ci 115062306a36Sopenharmony_ci1. Extended struct v4l2_pix_format. Added 115162306a36Sopenharmony_ci format flags. 115262306a36Sopenharmony_ci 115362306a36Sopenharmony_ci2. Added compound control types and 115462306a36Sopenharmony_ci :ref:`VIDIOC_QUERY_EXT_CTRL <VIDIOC_QUERYCTRL>`. 115562306a36Sopenharmony_ci 115662306a36Sopenharmony_ciV4L2 in Linux 3.18 115762306a36Sopenharmony_ci================== 115862306a36Sopenharmony_ci 115962306a36Sopenharmony_ci1. Added ``V4L2_CID_PAN_SPEED`` and ``V4L2_CID_TILT_SPEED`` camera 116062306a36Sopenharmony_ci controls. 116162306a36Sopenharmony_ci 116262306a36Sopenharmony_ciV4L2 in Linux 3.19 116362306a36Sopenharmony_ci================== 116462306a36Sopenharmony_ci 116562306a36Sopenharmony_ci1. Rewrote Colorspace chapter, added new enum v4l2_ycbcr_encoding 116662306a36Sopenharmony_ci and enum v4l2_quantization fields to struct v4l2_pix_format, 116762306a36Sopenharmony_ci struct v4l2_pix_format_mplane and struct v4l2_mbus_framefmt. 116862306a36Sopenharmony_ci 116962306a36Sopenharmony_ciV4L2 in Linux 4.4 117062306a36Sopenharmony_ci================= 117162306a36Sopenharmony_ci 117262306a36Sopenharmony_ci1. Renamed ``V4L2_TUNER_ADC`` to ``V4L2_TUNER_SDR``. The use of 117362306a36Sopenharmony_ci ``V4L2_TUNER_ADC`` is deprecated now. 117462306a36Sopenharmony_ci 117562306a36Sopenharmony_ci2. Added ``V4L2_CID_RF_TUNER_RF_GAIN`` RF Tuner control. 117662306a36Sopenharmony_ci 117762306a36Sopenharmony_ci3. Added transmitter support for Software Defined Radio (SDR) Interface. 117862306a36Sopenharmony_ci 117962306a36Sopenharmony_ci.. _other: 118062306a36Sopenharmony_ci 118162306a36Sopenharmony_ciRelation of V4L2 to other Linux multimedia APIs 118262306a36Sopenharmony_ci=============================================== 118362306a36Sopenharmony_ci 118462306a36Sopenharmony_ci.. _xvideo: 118562306a36Sopenharmony_ci 118662306a36Sopenharmony_ciX Video Extension 118762306a36Sopenharmony_ci----------------- 118862306a36Sopenharmony_ci 118962306a36Sopenharmony_ciThe X Video Extension (abbreviated XVideo or just Xv) is an extension of 119062306a36Sopenharmony_cithe X Window system, implemented for example by the XFree86 project. Its 119162306a36Sopenharmony_ciscope is similar to V4L2, an API to video capture and output devices for 119262306a36Sopenharmony_ciX clients. Xv allows applications to display live video in a window, 119362306a36Sopenharmony_cisend window contents to a TV output, and capture or output still images 119462306a36Sopenharmony_ciin XPixmaps [#f1]_. With their implementation XFree86 makes the extension 119562306a36Sopenharmony_ciavailable across many operating systems and architectures. 119662306a36Sopenharmony_ci 119762306a36Sopenharmony_ciBecause the driver is embedded into the X server Xv has a number of 119862306a36Sopenharmony_ciadvantages over the V4L2 :ref:`video overlay interface <overlay>`. The 119962306a36Sopenharmony_cidriver can easily determine the overlay target, i. e. visible graphics 120062306a36Sopenharmony_cimemory or off-screen buffers for a destructive overlay. It can program 120162306a36Sopenharmony_cithe RAMDAC for a non-destructive overlay, scaling or color-keying, or 120262306a36Sopenharmony_cithe clipping functions of the video capture hardware, always in sync 120362306a36Sopenharmony_ciwith drawing operations or windows moving or changing their stacking 120462306a36Sopenharmony_ciorder. 120562306a36Sopenharmony_ci 120662306a36Sopenharmony_ciTo combine the advantages of Xv and V4L a special Xv driver exists in 120762306a36Sopenharmony_ciXFree86 and XOrg, just programming any overlay capable Video4Linux 120862306a36Sopenharmony_cidevice it finds. To enable it ``/etc/X11/XF86Config`` must contain these 120962306a36Sopenharmony_cilines: 121062306a36Sopenharmony_ci 121162306a36Sopenharmony_ci:: 121262306a36Sopenharmony_ci 121362306a36Sopenharmony_ci Section "Module" 121462306a36Sopenharmony_ci Load "v4l" 121562306a36Sopenharmony_ci EndSection 121662306a36Sopenharmony_ci 121762306a36Sopenharmony_ciAs of XFree86 4.2 this driver still supports only V4L ioctls, however it 121862306a36Sopenharmony_cishould work just fine with all V4L2 devices through the V4L2 121962306a36Sopenharmony_cibackward-compatibility layer. Since V4L2 permits multiple opens it is 122062306a36Sopenharmony_cipossible (if supported by the V4L2 driver) to capture video while an X 122162306a36Sopenharmony_ciclient requested video overlay. Restrictions of simultaneous capturing 122262306a36Sopenharmony_ciand overlay are discussed in :ref:`overlay` apply. 122362306a36Sopenharmony_ci 122462306a36Sopenharmony_ciOnly marginally related to V4L2, XFree86 extended Xv to support hardware 122562306a36Sopenharmony_ciYUV to RGB conversion and scaling for faster video playback, and added 122662306a36Sopenharmony_cian interface to MPEG-2 decoding hardware. This API is useful to display 122762306a36Sopenharmony_ciimages captured with V4L2 devices. 122862306a36Sopenharmony_ci 122962306a36Sopenharmony_ciDigital Video 123062306a36Sopenharmony_ci------------- 123162306a36Sopenharmony_ci 123262306a36Sopenharmony_ciV4L2 does not support digital terrestrial, cable or satellite broadcast. 123362306a36Sopenharmony_ciA separate project aiming at digital receivers exists. You can find its 123462306a36Sopenharmony_cihomepage at `https://linuxtv.org <https://linuxtv.org>`__. The Linux 123562306a36Sopenharmony_ciDVB API has no connection to the V4L2 API except that drivers for hybrid 123662306a36Sopenharmony_cihardware may support both. 123762306a36Sopenharmony_ci 123862306a36Sopenharmony_ciAudio Interfaces 123962306a36Sopenharmony_ci---------------- 124062306a36Sopenharmony_ci 124162306a36Sopenharmony_ci[to do - OSS/ALSA] 124262306a36Sopenharmony_ci 124362306a36Sopenharmony_ci.. _experimental: 124462306a36Sopenharmony_ci 124562306a36Sopenharmony_ciExperimental API Elements 124662306a36Sopenharmony_ci========================= 124762306a36Sopenharmony_ci 124862306a36Sopenharmony_ciThe following V4L2 API elements are currently experimental and may 124962306a36Sopenharmony_cichange in the future. 125062306a36Sopenharmony_ci 125162306a36Sopenharmony_ci- :ref:`VIDIOC_DBG_G_REGISTER` and 125262306a36Sopenharmony_ci :ref:`VIDIOC_DBG_S_REGISTER <VIDIOC_DBG_G_REGISTER>` ioctls. 125362306a36Sopenharmony_ci 125462306a36Sopenharmony_ci- :ref:`VIDIOC_DBG_G_CHIP_INFO` ioctl. 125562306a36Sopenharmony_ci 125662306a36Sopenharmony_ci.. _obsolete: 125762306a36Sopenharmony_ci 125862306a36Sopenharmony_ciObsolete API Elements 125962306a36Sopenharmony_ci===================== 126062306a36Sopenharmony_ci 126162306a36Sopenharmony_ciThe following V4L2 API elements were superseded by new interfaces and 126262306a36Sopenharmony_cishould not be implemented in new drivers. 126362306a36Sopenharmony_ci 126462306a36Sopenharmony_ci- ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGCOMP`` ioctls. Use Extended 126562306a36Sopenharmony_ci Controls, :ref:`extended-controls`. 126662306a36Sopenharmony_ci 126762306a36Sopenharmony_ci- VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET, 126862306a36Sopenharmony_ci VIDIOC_ENUM_DV_PRESETS and VIDIOC_QUERY_DV_PRESET ioctls. Use 126962306a36Sopenharmony_ci the DV Timings API (:ref:`dv-timings`). 127062306a36Sopenharmony_ci 127162306a36Sopenharmony_ci- ``VIDIOC_SUBDEV_G_CROP`` and ``VIDIOC_SUBDEV_S_CROP`` ioctls. Use 127262306a36Sopenharmony_ci ``VIDIOC_SUBDEV_G_SELECTION`` and ``VIDIOC_SUBDEV_S_SELECTION``, 127362306a36Sopenharmony_ci :ref:`VIDIOC_SUBDEV_G_SELECTION`. 127462306a36Sopenharmony_ci 127562306a36Sopenharmony_ci.. [#f1] 127662306a36Sopenharmony_ci This is not implemented in XFree86. 1277