1 .. SPDX-License-Identifier: GFDL-1.1-no-invari 2 .. c:namespace:: V4L 3 4 .. _hist-v4l2: 5 6 *********************** 7 Changes of the V4L2 API 8 *********************** 9 10 Soon after the V4L API was added to the kernel 11 inflexible. In August 1998 Bill Dirks proposed 12 and began to work on documentation, example dr 13 With the help of other volunteers this eventua 14 not just an extension but a replacement for th 15 another four years and two stable kernel relea 16 finally accepted for inclusion into the kernel 17 18 Early Versions 19 ============== 20 21 1998-08-20: First version. 22 23 1998-08-27: The :c:func:`select()` function wa 24 25 1998-09-10: New video standard interface. 26 27 1998-09-18: The ``VIDIOC_NONCAP`` ioctl was re 28 meaningless ``O_TRUNC`` :c:func:`open()` flag, 29 aliases ``O_NONCAP`` and ``O_NOIO`` were defin 30 this flag if they intend to access controls on 31 applications which need exclusive access. The 32 identifiers are now ordinals instead of flags, 33 ``video_std_construct()`` helper function take 34 transmission arguments. 35 36 1998-09-28: Revamped video standard. Made vide 37 enumerable. 38 39 1998-10-02: The ``id`` field was removed from 40 struct ``video_standard`` and the color subcar 41 renamed. The :ref:`VIDIOC_QUERYSTD` ioctl was 42 renamed to :ref:`VIDIOC_ENUMSTD`, 43 :ref:`VIDIOC_G_INPUT <VIDIOC_G_INPUT>` to 44 :ref:`VIDIOC_ENUMINPUT`. A first draft of the 45 Codec API was released. 46 47 1998-11-08: Many minor changes. Most symbols h 48 material changes to struct v4l2_capability. 49 50 1998-11-12: The read/write direction of some i 51 52 1998-11-14: ``V4L2_PIX_FMT_RGB24`` changed to 53 and ``V4L2_PIX_FMT_RGB32`` changed to ``V4L2_P 54 controls are now accessible with the 55 :ref:`VIDIOC_G_CTRL <VIDIOC_G_CTRL>` and 56 :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` ioctls un 57 with ``V4L2_CID_AUDIO``. The ``V4L2_MAJOR`` de 58 ``videodev.h`` since it was only used once in 59 module. The ``YUV422`` and ``YUV411`` planar i 60 61 1998-11-28: A few ioctl symbols changed. Inter 62 output devices were added. 63 64 1999-01-14: A raw VBI capture interface was ad 65 66 1999-01-19: The ``VIDIOC_NEXTBUF`` ioctl was r 67 68 V4L2 Version 0.16 1999-01-31 69 ============================ 70 71 1999-01-27: There is now one QBUF ioctl, VIDIO 72 are gone. VIDIOC_QBUF takes a v4l2_buffer as a 73 digital zoom (cropping) controls. 74 75 V4L2 Version 0.18 1999-03-16 76 ============================ 77 78 Added a v4l to V4L2 ioctl compatibility layer 79 writers, this changes how you implement your i 80 Driver Writer's Guide. Added some more control 81 82 V4L2 Version 0.19 1999-06-05 83 ============================ 84 85 1999-03-18: Fill in the category and catname f 86 objects before passing them to the driver. Req 87 the VIDIOC_QUERYCTRL handlers in the sample dr 88 89 1999-03-31: Better compatibility for v4l memor 90 changes to drivers to fully support new compat 91 Driver Writer's Guide and v4l2cap.c. Added new 92 V4L2_CID_HFLIP, _VFLIP. Changed V4L2_PIX_FMT_Y 93 and _YUV411P to _YUV411P. 94 95 1999-04-04: Added a few more control IDs. 96 97 1999-04-07: Added the button control type. 98 99 1999-05-02: Fixed a typo in videodev.h, and ad 100 V4L2_CTRL_FLAG_GRAYED (later V4L2_CTRL_FLAG_GR 101 102 1999-05-20: Definition of VIDIOC_G_CTRL was wr 103 malfunction of this ioctl. 104 105 1999-06-05: Changed the value of V4L2_CID_WHIT 106 107 V4L2 Version 0.20 (1999-09-10) 108 ============================== 109 110 Version 0.20 introduced a number of changes wh 111 compatible* with 0.19 and earlier versions. Pu 112 to simplify the API, while making it more exte 113 common Linux driver API conventions. 114 115 1. Some typos in ``V4L2_FMT_FLAG`` symbols wer 116 was changed for compatibility with v4l. (19 117 118 2. ``V4L2_TUNER_SUB_LANG1`` was added. (1999-0 119 120 3. All ioctl() commands that used an integer a 121 to an integer. Where it makes sense, ioctls 122 new value in the integer pointed to by the 123 convention in the V4L2 API. The affected io 124 VIDIOC_STREAMON, VIDIOC_STREAMOFF, VIDIOC_S 125 VIDIOC_S_INPUT, VIDIOC_S_OUTPUT, VIDIOC_S_E 126 127 .. code-block:: c 128 129 err = ioctl (fd, VIDIOC_XXX, V4L2_XXX); 130 131 becomes 132 133 .. code-block:: c 134 135 int a = V4L2_XXX; err = ioctl(fd, VIDIO 136 137 4. All the different get- and set-format comma 138 :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and 139 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctl ta 140 type field selecting the union member as pa 141 simplify the API by eliminating several ioc 142 driver private data streams without adding 143 144 This change obsoletes the following ioctls: 145 ``VIDIOC_G_INFMT``, ``VIDIOC_S_OUTFMT``, `` 146 ``VIDIOC_S_VBIFMT`` and ``VIDIOC_G_VBIFMT`` 147 struct v4l2_format was renamed to struct v4 148 struct v4l2_format is now the enveloping st 149 for all format negotiations. 150 151 5. Similar to the changes above, the ``VIDIOC_ 152 ``VIDIOC_S_PARM`` ioctls were merged with ` 153 ``VIDIOC_S_OUTPARM``. A ``type`` field in t 154 selects the respective union member. 155 156 This change obsoletes the ``VIDIOC_G_OUTPAR 157 ``VIDIOC_S_OUTPARM`` ioctls. 158 159 6. Control enumeration was simplified, and two 160 introduced and one dropped. The ``catname`` 161 ``group`` field. 162 163 Drivers can now flag unsupported and tempor 164 with ``V4L2_CTRL_FLAG_DISABLED`` and ``V4L2 165 respectively. The ``group`` name indicates 166 classification than the ``category``. In ot 167 multiple groups within a category. Controls 168 typically be drawn within a group box. Cont 169 categories might have a greater separation, 170 separate windows. 171 172 7. The struct v4l2_buffer ``timestamp`` was 173 changed to a 64 bit integer, containing the 174 of the frame in nanoseconds. Additionally t 175 absolute system time, not starting from zer 176 stream. The data type name for timestamps i 177 signed 64-bit integer. Output devices shoul 178 until the time in the timestamp field has a 179 follow SGI's lead, and adopt a multimedia t 180 their UST (Unadjusted System Time). See 181 http://web.archive.org/web/\*/http://realit 182 /cpirazzi_engr/lg/time/intro.html. UST uses 183 64-bit signed integers (not struct timeval' 184 units. The UST clock starts at zero when th 185 runs continuously and uniformly. It takes a 186 UST to overflow. There is no way to set the 187 Linux time-of-day clock can be changed peri 188 cause errors if it were being used for time 189 stream. A real UST style clock will require 190 kernel that is not there yet. But in antici 191 timestamp field to a 64-bit integer, and I 192 v4l2_masterclock_gettime() function (used o 193 return a 64-bit integer. 194 195 8. A ``sequence`` field was added to struct v4 196 field counts captured frames, it is ignored 197 capture driver drops a frame, the sequence 198 199 V4L2 Version 0.20 incremental changes 200 ===================================== 201 202 1999-12-23: In struct v4l2_vbi_format the 203 ``reserved1`` field became ``offset``. Previou 204 to clear the ``reserved1`` field. 205 206 2000-01-13: The ``V4L2_FMT_FLAG_NOT_INTERLACED 207 208 2000-07-31: The ``linux/poll.h`` header is now 209 ``videodev.h`` for compatibility with the orig 210 211 2000-11-20: ``V4L2_TYPE_VBI_OUTPUT`` and ``V4L 212 added. 213 214 2000-11-25: ``V4L2_TYPE_VBI_INPUT`` was added. 215 216 2000-12-04: A couple typos in symbol names wer 217 218 2001-01-18: To avoid namespace conflicts the ` 219 the ``videodev.h`` header file was renamed to 220 221 2001-01-25: A possible driver-level compatibil 222 ``videodev.h`` file in Linux 2.4.0 and the ``v 223 in the ``videodevX`` patch was fixed. Users of 224 ``videodevX`` on Linux 2.4.0 should recompile 225 drivers. 226 227 2001-01-26: A possible kernel-level incompatib 228 ``videodev.h`` file in the ``videodevX`` patch 229 file in Linux 2.2.x with devfs patches applied 230 231 2001-03-02: Certain V4L ioctls which pass data 232 although they are defined with read-only param 233 correctly through the backward compatibility l 234 235 2001-04-13: Big endian 16-bit RGB formats were 236 237 2001-09-17: New YUV formats and the 238 :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` 239 :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` 240 (The old ``VIDIOC_G_FREQ`` and ``VIDIOC_S_FREQ 241 multiple tuners into account.) 242 243 2000-09-18: ``V4L2_BUF_TYPE_VBI`` was added. T 244 compatibility* as the :ref:`VIDIOC_G_FMT <VIDI 245 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>` ioctls may 246 struct ``v4l2_fmt`` ``type`` field does not co 247 ``V4L2_BUF_TYPE_VBI``. In the documentation of 248 the ``offset`` field the ambiguous phrase "ris 249 "leading edge". 250 251 V4L2 Version 0.20 2000-11-23 252 ============================ 253 254 A number of changes were made to the raw VBI i 255 256 1. Figures clarifying the line numbering schem 257 API specification. The ``start``\ [0] and ` 258 longer count line numbers beginning at zero 259 previous definition was unclear. b) The ``s 260 ordinal numbers. c) There is no point in in 261 numbering scheme. We now use line number as 262 Compatibility: Add one to the start values. 263 the previous semantics may not function cor 264 265 2. The restriction "count[0] > 0 and count[1] 266 "(count[0] + count[1]) > 0". Rationale: Dri 267 resources at scan line granularity and some 268 transmitted only on the first field. The co 269 values will usually be equal is misleading 270 removed. This change *breaks compatibility* 271 Drivers may return ``EINVAL``, applications 272 273 3. Drivers are again permitted to return negat 274 as proposed earlier. Why this feature was d 275 change may *break compatibility* with appli 276 start values being positive. The use of ``E 277 error codes with the :ref:`VIDIOC_S_FMT <VI 278 clarified. The ``EBUSY`` error code was fin 279 ``reserved2`` field which was previously me 280 ``videodev.h`` header file. 281 282 4. New buffer types ``V4L2_TYPE_VBI_INPUT`` an 283 were added. The former is an alias for the 284 latter was missing in the ``videodev.h`` fi 285 286 V4L2 Version 0.20 2002-07-25 287 ============================ 288 289 Added sliced VBI interface proposal. 290 291 V4L2 in Linux 2.5.46, 2002-10 292 ============================= 293 294 Around October-November 2002, prior to an anno 295 Linux 2.5, the API was revised, drawing from e 296 This unnamed version was finally merged into L 297 298 1. As specified in :ref:`related`, drivers mu 299 functions available under all minor device 300 301 2. The :c:func:`open()` function requires acc 302 ``O_RDWR`` regardless of the device type. 303 exchanging data with applications must sup 304 flag. The ``O_NOIO`` flag, a V4L2 symbol w 305 meaningless ``O_TRUNC`` to indicate access 306 (panel applications) was dropped. Drivers 307 until the application attempts to initiate 308 :ref:`open`. 309 310 3. The struct v4l2_capability changed 311 dramatically. Note that also the size of t 312 which is encoded in the ioctl request code 313 will respond with an ``EINVAL`` error code 314 :ref:`VIDIOC_QUERYCAP` ioctl. 315 316 There are new fields to identify the drive 317 function ``V4L2_CAP_RDS_CAPTURE``, the ``V 318 indicates if the device has any audio conn 319 capability V4L2_CAP_ASYNCIO can be flagged 320 changes the ``type`` field became a bit se 321 ``flags`` field. ``V4L2_FLAG_TUNER`` was r 322 ``V4L2_CAP_TUNER``, ``V4L2_CAP_VIDEO_OVERL 323 ``V4L2_FLAG_PREVIEW`` and ``V4L2_CAP_VBI_C 324 ``V4L2_CAP_VBI_OUTPUT`` replaced ``V4L2_FL 325 ``V4L2_FLAG_READ`` and ``V4L2_FLAG_WRITE`` 326 ``V4L2_CAP_READWRITE``. 327 328 The redundant fields ``inputs``, ``outputs 329 removed. These properties can be determine 330 :ref:`video` and :ref:`audio`. 331 332 The somewhat volatile and therefore barely 333 ``maxwidth``, ``maxheight``, ``minwidth``, 334 ``maxframerate`` were removed. This inform 335 described in :ref:`format` and :ref:`stand 336 337 ``V4L2_FLAG_SELECT`` was removed. We belie 338 is important enough to require support of 339 exchanging data with applications. The red 340 ``V4L2_FLAG_MONOCHROME`` flag was removed, 341 available as described in :ref:`format`. 342 343 4. In struct v4l2_input the ``assoc_audio`` 344 field and the ``capability`` field and its 345 ``V4L2_INPUT_CAP_AUDIO`` was replaced by t 346 Instead of linking one video input to one 347 reports all audio inputs this video input 348 349 New fields are ``tuner`` (reversing the fo 350 video inputs), ``std`` and ``status``. 351 352 Accordingly struct v4l2_output lost its 353 ``capability`` and ``assoc_audio`` fields. 354 ``modulator`` and ``std`` where added inst 355 356 5. The struct v4l2_audio field ``audio`` was 357 renamed to ``index``, for consistency with 358 capability flag ``V4L2_AUDCAP_STEREO`` was 359 audio input in question supports stereo so 360 ``V4L2_AUDCAP_EFFECTS`` and the correspond 361 where removed. This can be easily implemen 362 (However the same applies to AVL which is 363 364 Again for consistency the struct v4l2_audi 365 to ``index``. 366 367 6. The struct v4l2_tuner ``input`` field was 368 replaced by an ``index`` field, permitting 369 tuners. The link between video inputs and 370 inputs point to their tuner. The ``std`` s 371 simple set (more about this below) and mov 372 A ``type`` field was added. 373 374 Accordingly in struct v4l2_modulator the 375 ``output`` was replaced by an ``index`` fi 376 377 In struct v4l2_frequency the ``port`` 378 field was replaced by a ``tuner`` field co 379 tuner or modulator index number. A tuner ` 380 and the ``reserved`` field became larger f 381 (satellite tuners in particular). 382 383 7. The idea of completely transparent video s 384 Experience showed that applications must b 385 standards beyond presenting the user a men 386 supported standards with an ioctl applicat 387 standards by :ref:`v4l2_std_id <v4l2-std-i 388 defined in the ``videodev2.h`` header file 389 :ref:`standard`. The :ref:`VIDIOC_G_STD <V 390 :ref:`VIDIOC_S_STD <VIDIOC_G_STD>` now tak 391 type as argument. :ref:`VIDIOC_QUERYSTD` w 392 added to autodetect the received standard, 393 capability. In struct v4l2_standard an 394 ``index`` field was added for 395 :ref:`VIDIOC_ENUMSTD`. A 396 :ref:`v4l2_std_id <v4l2-std-id>` field nam 397 machine readable identifier, also replacin 398 field. The misleading ``framerate`` field 399 ``frameperiod``. The now obsolete ``colors 400 originally needed to distguish between var 401 removed. 402 403 Struct ``v4l2_enumstd`` ceased to be. 404 :ref:`VIDIOC_ENUMSTD` now takes a pointer 405 struct v4l2_standard directly. The 406 information which standards are supported 407 input or output moved into struct v4l2_inp 408 and struct v4l2_output fields named ``std` 409 respectively. 410 411 8. The struct :ref:`v4l2_queryctrl <v4l2-quer 412 ``category`` and ``group`` did not catch o 413 implemented as expected and therefore remo 414 415 9. The :ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` i 416 negotiate data formats as with 417 :ref:`VIDIOC_S_FMT <VIDIOC_G_FMT>`, but wi 418 programming the hardware and regardless of 419 420 In struct v4l2_format the ``fmt`` union wa 421 extended to contain struct v4l2_window. Al 422 image format negotiations are now possible 423 ``VIDIOC_S_FMT`` and ``VIDIOC_TRY_FMT``; i 424 and ``VIDIOC_S_WIN`` ioctls to prepare for 425 removed. The ``type`` field changed to typ 426 the buffer type names changed as follows. 427 428 429 .. flat-table:: 430 :header-rows: 1 431 :stub-columns: 0 432 433 * - Old defines 434 - enum v4l2_buf_type 435 * - ``V4L2_BUF_TYPE_CAPTURE`` 436 - ``V4L2_BUF_TYPE_VIDEO_CAPTURE`` 437 * - ``V4L2_BUF_TYPE_CODECIN`` 438 - Omitted for now 439 * - ``V4L2_BUF_TYPE_CODECOUT`` 440 - Omitted for now 441 * - ``V4L2_BUF_TYPE_EFFECTSIN`` 442 - Omitted for now 443 * - ``V4L2_BUF_TYPE_EFFECTSIN2`` 444 - Omitted for now 445 * - ``V4L2_BUF_TYPE_EFFECTSOUT`` 446 - Omitted for now 447 * - ``V4L2_BUF_TYPE_VIDEOOUT`` 448 - ``V4L2_BUF_TYPE_VIDEO_OUTPUT`` 449 * - ``-`` 450 - ``V4L2_BUF_TYPE_VIDEO_OVERLAY`` 451 * - ``-`` 452 - ``V4L2_BUF_TYPE_VBI_CAPTURE`` 453 * - ``-`` 454 - ``V4L2_BUF_TYPE_VBI_OUTPUT`` 455 * - ``-`` 456 - ``V4L2_BUF_TYPE_SLICED_VBI_CAPTURE 457 * - ``-`` 458 - ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT` 459 * - ``V4L2_BUF_TYPE_PRIVATE_BASE`` 460 - ``V4L2_BUF_TYPE_PRIVATE`` (but thi 461 462 10. In struct v4l2_fmtdesc a enum v4l2_buf_typ 463 added as in struct v4l2_format. The ``VIDI 464 longer needed and was removed. These calls 465 :ref:`VIDIOC_ENUM_FMT` with type ``V4L2_BU 466 467 11. In struct v4l2_pix_format the ``depth`` 468 field was removed, assuming applications w 469 by its four-character-code already know th 470 do not care about it. The same rationale l 471 ``V4L2_FMT_FLAG_COMPRESSED`` flag. The 472 ``V4L2_FMT_FLAG_SWCONVECOMPRESSED`` flag w 473 are not supposed to convert images in kern 474 of conversion functions should be provided 475 ``V4L2_FMT_FLAG_BYTESPERLINE`` flag was re 476 set the ``bytesperline`` field to zero to 477 Since the remaining flags were replaced as 478 itself was removed. 479 480 The interlace flags were replaced by a enu 481 newly added ``field`` field. 482 483 .. flat-table:: 484 :header-rows: 1 485 :stub-columns: 0 486 487 * - Old flag 488 - enum v4l2_field 489 * - ``V4L2_FMT_FLAG_NOT_INTERLACED`` 490 - ? 491 * - ``V4L2_FMT_FLAG_INTERLACED`` = ``V 492 - ``V4L2_FIELD_INTERLACED`` 493 * - ``V4L2_FMT_FLAG_TOPFIELD`` = ``V4L 494 - ``V4L2_FIELD_TOP`` 495 * - ``V4L2_FMT_FLAG_BOTFIELD`` = ``V4L 496 - ``V4L2_FIELD_BOTTOM`` 497 * - ``-`` 498 - ``V4L2_FIELD_SEQ_TB`` 499 * - ``-`` 500 - ``V4L2_FIELD_SEQ_BT`` 501 * - ``-`` 502 - ``V4L2_FIELD_ALTERNATE`` 503 504 The color space flags were replaced by a e 505 a newly added ``colorspace`` field, where 506 ``V4L2_COLORSPACE_SMPTE170M``, ``V4L2_COLO 507 ``V4L2_COLORSPACE_470_SYSTEM_M`` or 508 ``V4L2_COLORSPACE_470_SYSTEM_BG`` replaces 509 510 12. In struct v4l2_requestbuffers the 511 ``type`` field was properly defined as enu 512 changed as mentioned above. A new ``memory 513 enum v4l2_memory was added to distinguish 514 I/O methods using buffers allocated by the 515 application. See :ref:`io` for details. 516 517 13. In struct v4l2_buffer the ``type`` field w 518 properly defined as enum v4l2_buf_type. 519 Buffer types changed as mentioned above. A 520 enum v4l2_field was added to indicate if a 521 buffer contains a top or bottom field. The 522 removed. Since no unadjusted system time c 523 kernel as planned, the ``timestamp`` field 524 stamp_t, an unsigned 64 bit integer expres 525 nanoseconds, to struct timeval. With the a 526 of a second memory mapping method the ``of 527 union ``m``, and a new ``memory`` field of 528 was added to distinguish between 529 I/O methods. See :ref:`io` for details. 530 531 The ``V4L2_BUF_REQ_CONTIG`` flag was used 532 layer, after changes to this code it was n 533 ``V4L2_BUF_ATTR_DEVICEMEM`` flag would ind 534 indeed allocated in device memory rather t 535 memory. It was barely useful and so was re 536 537 14. In struct v4l2_framebuffer the 538 ``base[3]`` array anticipating double- and 539 off-screen video memory, however without d 540 mechanism, was replaced by a single pointe 541 ``V4L2_FBUF_CAP_SCALEUP`` and ``V4L2_FBUF_ 542 removed. Applications can determine this c 543 using the new cropping and scaling interfa 544 ``V4L2_FBUF_CAP_CLIPPING`` flag was replac 545 ``V4L2_FBUF_CAP_LIST_CLIPPING`` and 546 ``V4L2_FBUF_CAP_BITMAP_CLIPPING``. 547 548 15. In struct v4l2_clip the ``x``, ``y``, 549 ``width`` and ``height`` field moved into 550 type struct v4l2_rect. The ``x`` and ``y`` 551 fields were renamed to ``left`` and ``top` 552 context dependent origin. 553 554 16. In struct v4l2_window the ``x``, ``y``, 555 ``width`` and ``height`` field moved into 556 above. A ``field`` field of type enum v4l2 557 distinguish between field and frame (inter 558 559 17. The digital zoom interface, including stru 560 struct ``v4l2_zoom``, ``V4L2_ZOOM_NONCAP`` 561 ``V4L2_ZOOM_WHILESTREAMING`` was replaced 562 scaling interface. The previously unused 563 struct v4l2_cropcap and struct v4l2_crop 564 where redefined for this purpose. See :ref 565 566 18. In struct v4l2_vbi_format the 567 ``SAMPLE_FORMAT`` field now contains a fou 568 to identify video image formats and ``V4L2 569 the ``V4L2_VBI_SF_UBYTE`` define. The ``re 570 extended. 571 572 19. In struct v4l2_captureparm the type of 573 the ``timeperframe`` field changed from un 574 struct v4l2_fract. This allows the accurat 575 expression of multiples of the NTSC-M fram 576 field ``readbuffers`` was added to control 577 read I/O mode. 578 579 Similar changes were made to struct v4l2_o 580 581 20. The struct ``v4l2_performance`` and 582 ``VIDIOC_G_PERF`` ioctl were dropped. Exce 583 :ref:`read/write I/O method <rw>`, which i 584 information is already available to applic 585 586 21. The example transformation from RGB to YCb 587 V4L2 documentation was inaccurate, this ha 588 :ref:`pixfmt`. 589 590 V4L2 2003-06-19 591 =============== 592 593 1. A new capability flag ``V4L2_CAP_RADIO`` wa 594 Prior to this change radio devices would id 595 exactly one tuner whose type field reads `` 596 597 2. An optional driver access priority mechanis 598 :ref:`app-pri` for details. 599 600 3. The audio input and output interface was fo 601 602 Previously the :ref:`VIDIOC_G_AUDIO <VIDIOC 603 enumerate the available audio inputs. An io 604 current audio input, if more than one combi 605 input, did not exist. So ``VIDIOC_G_AUDIO`` 606 ``VIDIOC_G_AUDIO_OLD``, this ioctl was remo 607 :ref:`VIDIOC_ENUMAUDIO` ioctl was added to 608 enumerate audio inputs, while 609 :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` now 610 audio input. 611 612 The same changes were made to 613 :ref:`VIDIOC_G_AUDOUT <VIDIOC_G_AUDOUT>` an 614 :ref:`VIDIOC_ENUMAUDOUT <VIDIOC_ENUMAUDOUT> 615 616 Until further the "videodev" module will au 617 between the old and new ioctls, but drivers 618 updated to successfully compile again. 619 620 4. The :ref:`VIDIOC_OVERLAY` ioctl was incorre 621 defined with write-read parameter. It was c 622 while the write-read version was renamed to 623 The old ioctl was removed on Kernel 2.6.39. 624 "videodev" kernel module will automatically 625 version, so drivers must be recompiled, but 626 627 5. :ref:`overlay` incorrectly stated that clip 628 regions where the video can be seen. Correc 629 rectangles define regions where *no* video 630 the graphics surface can be seen. 631 632 6. The :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` an 633 :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` ioctls 634 write-only parameter, inconsistent with oth 635 argument. They were changed to write-read, 636 was added to the write-only versions. The o 637 Kernel 2.6.39. Drivers and applications ass 638 need an update. 639 640 V4L2 2003-11-05 641 =============== 642 643 1. In :ref:`pixfmt-rgb` the following pixel fo 644 transferred from Bill Dirks' V4L2 specifica 645 refer to bytes in memory, in ascending addr 646 647 648 .. flat-table:: 649 :header-rows: 1 650 :stub-columns: 0 651 652 * - Symbol 653 - In this document prior to revision 654 - Corrected 655 * - ``V4L2_PIX_FMT_RGB24`` 656 - B, G, R 657 - R, G, B 658 * - ``V4L2_PIX_FMT_BGR24`` 659 - R, G, B 660 - B, G, R 661 * - ``V4L2_PIX_FMT_RGB32`` 662 - B, G, R, X 663 - R, G, B, X 664 * - ``V4L2_PIX_FMT_BGR32`` 665 - R, G, B, X 666 - B, G, R, X 667 668 The ``V4L2_PIX_FMT_BGR24`` example was alwa 669 670 In :ref:`v4l-image-properties` the mapping 671 ``VIDEO_PALETTE_RGB24`` and ``VIDEO_PALETTE 672 pixel formats was accordingly corrected. 673 674 2. Unrelated to the fixes above, drivers may s 675 RGB pixel formats differently. These issues 676 for details see :ref:`pixfmt-rgb`. 677 678 V4L2 in Linux 2.6.6, 2004-05-09 679 =============================== 680 681 1. The :ref:`VIDIOC_CROPCAP` ioctl was incorre 682 defined with read-only parameter. It is now 683 ioctl, while the read-only version was rena 684 ``VIDIOC_CROPCAP_OLD``. The old ioctl was r 685 686 V4L2 in Linux 2.6.8 687 =================== 688 689 1. A new field ``input`` (former ``reserved[0] 690 struct v4l2_buffer. Purpose of this 691 field is to alternate between video inputs 692 with the video capturing process. This func 693 the new ``V4L2_BUF_FLAG_INPUT`` flag. The ` 694 longer read-only. 695 696 V4L2 spec erratum 2004-08-01 697 ============================ 698 699 1. The return value of the :ref:`func-open` fu 700 documented. 701 702 2. Audio output ioctls end in -AUDOUT, not -AU 703 704 3. In the Current Audio Input example the ``VI 705 the wrong argument. 706 707 4. The documentation of the :ref:`VIDIOC_QBUF` 708 :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctls di 709 struct v4l2_buffer ``memory`` field. It was 710 also missing from examples. Also on the ``V 711 error code was not documented. 712 713 V4L2 in Linux 2.6.14 714 ==================== 715 716 1. A new sliced VBI interface was added. It is 717 :ref:`sliced` and replaces the interface fi 718 specification 0.8. 719 720 V4L2 in Linux 2.6.15 721 ==================== 722 723 1. The :ref:`VIDIOC_LOG_STATUS` ioctl was adde 724 725 2. New video standards ``V4L2_STD_NTSC_443``, 726 ``V4L2_STD_SECAM_DK`` (a set of SECAM D, K 727 ``V4L2_STD_ATSC`` (a set of ``V4L2_STD_ATSC 728 ``V4L2_STD_ATSC_16_VSB``) were defined. Not 729 set now includes ``V4L2_STD_NTSC_443``. See 730 :ref:`v4l2-std-id`. 731 732 3. The ``VIDIOC_G_COMP`` and ``VIDIOC_S_COMP`` 733 ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGCO 734 argument was replaced by a struct 735 ``v4l2_mpeg_compression`` pointer. (The 736 ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGCO 737 in Linux 2.6.25.) 738 739 V4L2 spec erratum 2005-11-27 740 ============================ 741 742 The capture example in :ref:`capture-example` 743 :ref:`VIDIOC_S_CROP <VIDIOC_G_CROP>` ioctl wit 744 cropping is supported. In the video standard s 745 :ref:`standard` the :ref:`VIDIOC_S_STD <VIDIOC 746 the wrong argument type. 747 748 V4L2 spec erratum 2006-01-10 749 ============================ 750 751 1. The ``V4L2_IN_ST_COLOR_KILL`` flag in struc 752 indicates if the color killer is enabled, b 753 (The color killer disables color decoding w 754 in the video signal to improve the image qu 755 756 2. :ref:`VIDIOC_S_PARM <VIDIOC_G_PARM>` is a w 757 write-only as stated on its reference page. 758 as noted above. 759 760 V4L2 spec erratum 2006-02-03 761 ============================ 762 763 1. In struct v4l2_captureparm and struct v4l2_ 764 field gives the time in seconds, not micros 765 766 V4L2 spec erratum 2006-02-04 767 ============================ 768 769 1. The ``clips`` field in struct v4l2_window 770 must point to an array of struct v4l2_clip, 771 a linked list, because drivers ignore the 772 struct v4l2_clip. ``next`` pointer. 773 774 V4L2 in Linux 2.6.17 775 ==================== 776 777 1. New video standard macros were added: ``V4L 778 South Korea), and the sets ``V4L2_STD_MN``, 779 ``V4L2_STD_GH`` and ``V4L2_STD_DK``. The `` 780 ``V4L2_STD_SECAM`` sets now include ``V4L2_ 781 ``V4L2_STD_SECAM_LC`` respectively. 782 783 2. A new ``V4L2_TUNER_MODE_LANG1_LANG2`` was d 784 languages of a bilingual program. The use o 785 ``V4L2_TUNER_MODE_STEREO`` for this purpose 786 the :ref:`VIDIOC_G_TUNER <VIDIOC_G_TUNER>` 787 788 V4L2 spec erratum 2006-09-23 (Draft 0.15) 789 ========================================= 790 791 1. In various places ``V4L2_BUF_TYPE_SLICED_VB 792 ``V4L2_BUF_TYPE_SLICED_VBI_OUTPUT`` of the 793 not mentioned along with other buffer types 794 795 2. In :ref:`VIDIOC_G_AUDIO <VIDIOC_G_AUDIO>` i 796 struct v4l2_audio ``mode`` field is a flags 797 798 3. :ref:`VIDIOC_QUERYCAP` did not mention the 799 capability flags. 800 801 4. In :ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQU 802 applications must initialize the tuner ``ty 803 struct v4l2_frequency before calling 804 :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENC 805 806 5. The ``reserved`` array in struct v4l2_reque 807 not 32. 808 809 6. In :ref:`output` and :ref:`raw-vbi` the dev 810 ``/dev/vout`` which never caught on were re 811 812 7. With Linux 2.6.15 the possible range for VB 813 extended from 224-239 to 224-255. According 814 ``/dev/vbi0`` to ``/dev/vbi31`` are possibl 815 816 V4L2 in Linux 2.6.18 817 ==================== 818 819 1. New ioctls :ref:`VIDIOC_G_EXT_CTRLS <VIDIOC 820 :ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRL 821 :ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CT 822 flag to skip unsupported controls with 823 :ref:`VIDIOC_QUERYCTRL`, new control types 824 ``V4L2_CTRL_TYPE_INTEGER64`` and ``V4L2_CTR 825 (enum v4l2_ctrl_type), and new control flag 826 ``V4L2_CTRL_FLAG_READ_ONLY``, ``V4L2_CTRL_F 827 ``V4L2_CTRL_FLAG_INACTIVE`` and ``V4L2_CTRL 828 (:ref:`control-flags`). See :ref:`extended- 829 830 V4L2 in Linux 2.6.19 831 ==================== 832 833 1. In struct v4l2_sliced_vbi_cap a 834 buffer type field was added replacing a res 835 architectures where the size of enum types 836 size of the structure changed. The 837 :ref:`VIDIOC_G_SLICED_VBI_CAP <VIDIOC_G_SLI 838 was redefined from being read-only to write 839 initialize the type field and clear the res 840 changes may *break the compatibility* with 841 applications. 842 843 2. The ioctls :ref:`VIDIOC_ENUM_FRAMESIZES` 844 and 845 :ref:`VIDIOC_ENUM_FRAMEINTERVALS` 846 were added. 847 848 3. A new pixel format ``V4L2_PIX_FMT_RGB444`` 849 added. 850 851 V4L2 spec erratum 2006-10-12 (Draft 0.17) 852 ========================================= 853 854 1. ``V4L2_PIX_FMT_HM12`` (:ref:`reserved-forma 855 4:2:2 format. 856 857 V4L2 in Linux 2.6.21 858 ==================== 859 860 1. The ``videodev2.h`` header file is now dual 861 General Public License version two or later 862 BSD-style license. 863 864 V4L2 in Linux 2.6.22 865 ==================== 866 867 1. Two new field orders ``V4L2_FIELD_INTERLACE 868 ``V4L2_FIELD_INTERLACED_BT`` were added. Se 869 details. 870 871 2. Three new clipping/blending methods with a 872 inverted local alpha value were added to th 873 See the description of the :ref:`VIDIOC_G_F 874 and :ref:`VIDIOC_S_FBUF <VIDIOC_G_FBUF>` io 875 876 A new ``global_alpha`` field was added to s 877 extending the structure. This may **break c 878 applications using a struct v4l2_window dir 879 :ref:`VIDIOC_G/S/TRY_FMT <VIDIOC_G_FMT>` io 880 pointer to a struct v4l2_format parent stru 881 with padding bytes at the end, are not affe 882 883 3. The format of the ``chromakey`` field in st 884 "host order RGB32" to a pixel value in the 885 This may **break compatibility** with exist 886 supporting the "host order RGB32" format ar 887 888 V4L2 in Linux 2.6.24 889 ==================== 890 891 1. The pixel formats ``V4L2_PIX_FMT_PAL8``, `` 892 ``V4L2_PIX_FMT_YUV555``, ``V4L2_PIX_FMT_YUV 893 ``V4L2_PIX_FMT_YUV32`` were added. 894 895 V4L2 in Linux 2.6.25 896 ==================== 897 898 1. The pixel formats :ref:`V4L2_PIX_FMT_Y16 <V 899 :ref:`V4L2_PIX_FMT_SBGGR16 <V4L2-PIX-FMT-SB 900 901 2. New :ref:`controls <control>` ``V4L2_CID_PO 902 ``V4L2_CID_HUE_AUTO``, ``V4L2_CID_WHITE_BAL 903 ``V4L2_CID_SHARPNESS`` and ``V4L2_CID_BACKL 904 added. The controls ``V4L2_CID_BLACK_LEVEL` 905 ``V4L2_CID_HCENTER`` and ``V4L2_CID_VCENTER 906 907 3. A :ref:`Camera controls class <camera-contr 908 the new controls ``V4L2_CID_EXPOSURE_AUTO`` 909 ``V4L2_CID_EXPOSURE_ABSOLUTE``, ``V4L2_CID_ 910 ``V4L2_CID_PAN_RELATIVE``, ``V4L2_CID_TILT_ 911 ``V4L2_CID_PAN_RESET``, ``V4L2_CID_TILT_RES 912 ``V4L2_CID_PAN_ABSOLUTE``, ``V4L2_CID_TILT_ 913 ``V4L2_CID_FOCUS_ABSOLUTE``, ``V4L2_CID_FOC 914 ``V4L2_CID_FOCUS_AUTO``. 915 916 4. The ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MP 917 were superseded by the :ref:`extended contr 918 interface in Linux 2.6.18, where finally re 919 ``videodev2.h`` header file. 920 921 V4L2 in Linux 2.6.26 922 ==================== 923 924 1. The pixel formats ``V4L2_PIX_FMT_Y16`` and 925 were added. 926 927 2. Added user controls ``V4L2_CID_CHROMA_AGC`` 928 ``V4L2_CID_COLOR_KILLER``. 929 930 V4L2 in Linux 2.6.27 931 ==================== 932 933 1. The :ref:`VIDIOC_S_HW_FREQ_SEEK` ioctl 934 and the ``V4L2_CAP_HW_FREQ_SEEK`` capabilit 935 936 2. The pixel formats ``V4L2_PIX_FMT_YVYU``, `` 937 ``V4L2_PIX_FMT_PCA505``, ``V4L2_PIX_FMT_PCA 938 ``V4L2_PIX_FMT_PCA561``, ``V4L2_PIX_FMT_SGB 939 ``V4L2_PIX_FMT_PAC207`` and ``V4L2_PIX_FMT_ 940 941 V4L2 in Linux 2.6.28 942 ==================== 943 944 1. Added ``V4L2_MPEG_AUDIO_ENCODING_AAC`` and 945 ``V4L2_MPEG_AUDIO_ENCODING_AC3`` MPEG audio 946 947 2. Added ``V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC 948 949 3. The pixel formats ``V4L2_PIX_FMT_SGRBG10`` 950 ``V4L2_PIX_FMT_SGRBG10DPCM8`` were added. 951 952 V4L2 in Linux 2.6.29 953 ==================== 954 955 1. The ``VIDIOC_G_CHIP_IDENT`` ioctl was renam 956 ``VIDIOC_G_CHIP_IDENT_OLD`` and ``VIDIOC_DB 957 introduced in its place. The old struct ``v 958 struct ``v4l2_chip_ident_old``. 959 960 2. The pixel formats ``V4L2_PIX_FMT_VYUY``, `` 961 ``V4L2_PIX_FMT_NV61`` were added. 962 963 3. Added camera controls ``V4L2_CID_ZOOM_ABSOL 964 ``V4L2_CID_ZOOM_RELATIVE``, ``V4L2_CID_ZOOM 965 ``V4L2_CID_PRIVACY``. 966 967 V4L2 in Linux 2.6.30 968 ==================== 969 970 1. New control flag ``V4L2_CTRL_FLAG_WRITE_ONL 971 972 2. New control ``V4L2_CID_COLORFX`` was added. 973 974 V4L2 in Linux 2.6.32 975 ==================== 976 977 1. In order to be easier to compare a V4L2 API 978 V4L2 API is numbered using the Linux Kernel 979 980 2. Finalized the RDS capture API. See :ref:`rd 981 982 3. Added new capabilities for modulators and R 983 984 4. Add description for libv4l API. 985 986 5. Added support for string controls via new t 987 ``V4L2_CTRL_TYPE_STRING``. 988 989 6. Added ``V4L2_CID_BAND_STOP_FILTER`` documen 990 991 7. Added FM Modulator (FM TX) Extended Control 992 ``V4L2_CTRL_CLASS_FM_TX`` and their Control 993 994 8. Added FM Receiver (FM RX) Extended Control 995 ``V4L2_CTRL_CLASS_FM_RX`` and their Control 996 997 9. Added Remote Controller chapter, describing 998 Controller mapping for media devices. 999 1000 V4L2 in Linux 2.6.33 1001 ==================== 1002 1003 1. Added support for Digital Video timings in 1004 receivers and transmitters. 1005 1006 V4L2 in Linux 2.6.34 1007 ==================== 1008 1009 1. Added ``V4L2_CID_IRIS_ABSOLUTE`` and ``V4L 1010 controls to the :ref:`Camera controls clas 1011 1012 V4L2 in Linux 2.6.37 1013 ==================== 1014 1015 1. Remove the vtx (videotext/teletext) API. T 1016 and no hardware exists to verify the API. 1017 applications found that used it. It was or 1018 removal in 2.6.35. 1019 1020 V4L2 in Linux 2.6.39 1021 ==================== 1022 1023 1. The old VIDIOC_*_OLD symbols and V4L1 supp 1024 1025 2. Multi-planar API added. Does not affect th 1026 drivers and applications. See :ref:`multi- 1027 for details. 1028 1029 V4L2 in Linux 3.1 1030 ================= 1031 1032 1. VIDIOC_QUERYCAP now returns a per-subsyste 1033 per-driver one. 1034 1035 Standardize an error code for invalid ioct 1036 1037 Added V4L2_CTRL_TYPE_BITMASK. 1038 1039 V4L2 in Linux 3.2 1040 ================= 1041 1042 1. V4L2_CTRL_FLAG_VOLATILE was added to signa 1043 userspace. 1044 1045 2. Add selection API for extended control ove 1046 Does not affect the compatibility of curre 1047 applications. See :ref:`selection API <sel 1048 1049 V4L2 in Linux 3.3 1050 ================= 1051 1052 1. Added ``V4L2_CID_ALPHA_COMPONENT`` control 1053 :ref:`User controls class <control>`. 1054 1055 2. Added the device_caps field to struct v4l2 1056 the new V4L2_CAP_DEVICE_CAPS capability. 1057 1058 V4L2 in Linux 3.4 1059 ================= 1060 1061 1. Added :ref:`JPEG compression control class 1062 1063 2. Extended the DV Timings API: 1064 :ref:`VIDIOC_ENUM_DV_TIMINGS`, 1065 :ref:`VIDIOC_QUERY_DV_TIMINGS` and 1066 :ref:`VIDIOC_DV_TIMINGS_CAP`. 1067 1068 V4L2 in Linux 3.5 1069 ================= 1070 1071 1. Added integer menus, the new type will be 1072 V4L2_CTRL_TYPE_INTEGER_MENU. 1073 1074 2. Added selection API for V4L2 subdev interf 1075 :ref:`VIDIOC_SUBDEV_G_SELECTION` and 1076 :ref:`VIDIOC_SUBDEV_S_SELECTION <VIDIOC_SU 1077 1078 3. Added ``V4L2_COLORFX_ANTIQUE``, ``V4L2_COL 1079 ``V4L2_COLORFX_AQUA``, ``V4L2_COLORFX_SILH 1080 ``V4L2_COLORFX_SOLARIZATION``, ``V4L2_COLO 1081 ``V4L2_COLORFX_ARBITRARY_CBCR`` menu items 1082 ``V4L2_CID_COLORFX`` control. 1083 1084 4. Added ``V4L2_CID_COLORFX_CBCR`` control. 1085 1086 5. Added camera controls ``V4L2_CID_AUTO_EXPO 1087 ``V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE``, 1088 ``V4L2_CID_IMAGE_STABILIZATION``, ``V4L2_C 1089 ``V4L2_CID_ISO_SENSITIVITY_AUTO``, ``V4L2_ 1090 ``V4L2_CID_SCENE_MODE``, ``V4L2_CID_3A_LOC 1091 ``V4L2_CID_AUTO_FOCUS_START``, ``V4L2_CID_ 1092 ``V4L2_CID_AUTO_FOCUS_STATUS`` and ``V4L2_ 1093 1094 V4L2 in Linux 3.6 1095 ================= 1096 1097 1. Replaced ``input`` in struct v4l2_buffer b 1098 ``reserved2`` and removed ``V4L2_BUF_FLAG_ 1099 1100 2. Added V4L2_CAP_VIDEO_M2M and V4L2_CAP_VIDE 1101 capabilities. 1102 1103 3. Added support for frequency band enumerati 1104 :ref:`VIDIOC_ENUM_FREQ_BANDS`. 1105 1106 V4L2 in Linux 3.9 1107 ================= 1108 1109 1. Added timestamp types to ``flags`` field i 1110 struct v4l2_buffer. See :ref:`buffer-flags 1111 1112 2. Added ``V4L2_EVENT_CTRL_CH_RANGE`` control 1113 :ref:`ctrl-changes-flags`. 1114 1115 V4L2 in Linux 3.10 1116 ================== 1117 1118 1. Removed obsolete and unused DV_PRESET ioct 1119 VIDIOC_S_DV_PRESET, VIDIOC_QUERY_DV_PRESET 1120 VIDIOC_ENUM_DV_PRESET. Remove the related 1121 capability flags V4L2_IN_CAP_PRESETS and V 1122 1123 2. Added new debugging ioctl 1124 :ref:`VIDIOC_DBG_G_CHIP_INFO`. 1125 1126 V4L2 in Linux 3.11 1127 ================== 1128 1129 1. Remove obsolete ``VIDIOC_DBG_G_CHIP_IDENT` 1130 1131 V4L2 in Linux 3.14 1132 ================== 1133 1134 1. In struct v4l2_rect, the type of ``width`` 1135 ``height`` fields changed from _s32 to _u3 1136 1137 V4L2 in Linux 3.15 1138 ================== 1139 1140 1. Added Software Defined Radio (SDR) Interfa 1141 1142 V4L2 in Linux 3.16 1143 ================== 1144 1145 1. Added event V4L2_EVENT_SOURCE_CHANGE. 1146 1147 V4L2 in Linux 3.17 1148 ================== 1149 1150 1. Extended struct v4l2_pix_format. Added 1151 format flags. 1152 1153 2. Added compound control types and 1154 :ref:`VIDIOC_QUERY_EXT_CTRL <VIDIOC_QUERYC 1155 1156 V4L2 in Linux 3.18 1157 ================== 1158 1159 1. Added ``V4L2_CID_PAN_SPEED`` and ``V4L2_CI 1160 controls. 1161 1162 V4L2 in Linux 3.19 1163 ================== 1164 1165 1. Rewrote Colorspace chapter, added new enum 1166 and enum v4l2_quantization fields to struc 1167 struct v4l2_pix_format_mplane and struct v 1168 1169 V4L2 in Linux 4.4 1170 ================= 1171 1172 1. Renamed ``V4L2_TUNER_ADC`` to ``V4L2_TUNER 1173 ``V4L2_TUNER_ADC`` is deprecated now. 1174 1175 2. Added ``V4L2_CID_RF_TUNER_RF_GAIN`` RF Tun 1176 1177 3. Added transmitter support for Software Def 1178 1179 .. _other: 1180 1181 Relation of V4L2 to other Linux multimedia AP 1182 ============================================= 1183 1184 .. _xvideo: 1185 1186 X Video Extension 1187 ----------------- 1188 1189 The X Video Extension (abbreviated XVideo or 1190 the X Window system, implemented for example 1191 scope is similar to V4L2, an API to video cap 1192 X clients. Xv allows applications to display 1193 send window contents to a TV output, and capt 1194 in XPixmaps [#f1]_. With their implementation 1195 available across many operating systems and a 1196 1197 Because the driver is embedded into the X ser 1198 advantages over the V4L2 :ref:`video overlay 1199 driver can easily determine the overlay targe 1200 memory or off-screen buffers for a destructiv 1201 the RAMDAC for a non-destructive overlay, sca 1202 the clipping functions of the video capture h 1203 with drawing operations or windows moving or 1204 order. 1205 1206 To combine the advantages of Xv and V4L a spe 1207 XFree86 and XOrg, just programming any overla 1208 device it finds. To enable it ``/etc/X11/XF86 1209 lines: 1210 1211 :: 1212 1213 Section "Module" 1214 Load "v4l" 1215 EndSection 1216 1217 As of XFree86 4.2 this driver still supports 1218 should work just fine with all V4L2 devices t 1219 backward-compatibility layer. Since V4L2 perm 1220 possible (if supported by the V4L2 driver) to 1221 client requested video overlay. Restrictions 1222 and overlay are discussed in :ref:`overlay` a 1223 1224 Only marginally related to V4L2, XFree86 exte 1225 YUV to RGB conversion and scaling for faster 1226 an interface to MPEG-2 decoding hardware. Thi 1227 images captured with V4L2 devices. 1228 1229 Digital Video 1230 ------------- 1231 1232 V4L2 does not support digital terrestrial, ca 1233 A separate project aiming at digital receiver 1234 homepage at `https://linuxtv.org <https://lin 1235 DVB API has no connection to the V4L2 API exc 1236 hardware may support both. 1237 1238 Audio Interfaces 1239 ---------------- 1240 1241 [to do - OSS/ALSA] 1242 1243 .. _experimental: 1244 1245 Experimental API Elements 1246 ========================= 1247 1248 The following V4L2 API elements are currently 1249 change in the future. 1250 1251 - :ref:`VIDIOC_DBG_G_REGISTER` and 1252 :ref:`VIDIOC_DBG_S_REGISTER <VIDIOC_DBG_G_ 1253 1254 - :ref:`VIDIOC_DBG_G_CHIP_INFO` ioctl. 1255 1256 .. _obsolete: 1257 1258 Obsolete API Elements 1259 ===================== 1260 1261 The following V4L2 API elements were supersed 1262 should not be implemented in new drivers. 1263 1264 - ``VIDIOC_G_MPEGCOMP`` and ``VIDIOC_S_MPEGC 1265 Controls, :ref:`extended-controls`. 1266 1267 - VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET, 1268 VIDIOC_ENUM_DV_PRESETS and VIDIOC_QUERY_DV 1269 the DV Timings API (:ref:`dv-timings`). 1270 1271 - ``VIDIOC_SUBDEV_G_CROP`` and ``VIDIOC_SUBD 1272 ``VIDIOC_SUBDEV_G_SELECTION`` and ``VIDIOC 1273 :ref:`VIDIOC_SUBDEV_G_SELECTION`. 1274 1275 .. [#f1] 1276 This is not implemented in XFree86.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.