Home | History | Annotate | Download | only in spec
      1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
      2 <HTML
      3 ><HEAD
      4 ><TITLE
      5 >Changes of the V4L2 API</TITLE
      6 ><META
      7 NAME="GENERATOR"
      8 CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
      9 REL="HOME"
     10 TITLE="Video for Linux Two API Specification"
     11 HREF="book1.htm"><LINK
     12 REL="UP"
     13 TITLE="Changes"
     14 HREF="c14595.htm"><LINK
     15 REL="PREVIOUS"
     16 TITLE="Changes"
     17 HREF="c14595.htm"><LINK
     18 REL="NEXT"
     19 TITLE="Relation of V4L2 to other Linux multimedia APIs"
     20 HREF="x16430.htm"></HEAD
     21 ><BODY
     22 CLASS="SECTION"
     23 BGCOLOR="#FFFFFF"
     24 TEXT="#000000"
     25 LINK="#0000FF"
     26 VLINK="#840084"
     27 ALINK="#0000FF"
     28 ><DIV
     29 CLASS="NAVHEADER"
     30 ><TABLE
     31 SUMMARY="Header navigation table"
     32 WIDTH="100%"
     33 BORDER="0"
     34 CELLPADDING="0"
     35 CELLSPACING="0"
     36 ><TR
     37 ><TH
     38 COLSPAN="3"
     39 ALIGN="center"
     40 >Video for Linux Two API Specification: Revision 0.24</TH
     41 ></TR
     42 ><TR
     43 ><TD
     44 WIDTH="10%"
     45 ALIGN="left"
     46 VALIGN="bottom"
     47 ><A
     48 HREF="c14595.htm"
     49 ACCESSKEY="P"
     50 >Prev</A
     51 ></TD
     52 ><TD
     53 WIDTH="80%"
     54 ALIGN="center"
     55 VALIGN="bottom"
     56 >Chapter 6. Changes</TD
     57 ><TD
     58 WIDTH="10%"
     59 ALIGN="right"
     60 VALIGN="bottom"
     61 ><A
     62 HREF="x16430.htm"
     63 ACCESSKEY="N"
     64 >Next</A
     65 ></TD
     66 ></TR
     67 ></TABLE
     68 ><HR
     69 ALIGN="LEFT"
     70 WIDTH="100%"></DIV
     71 ><DIV
     72 CLASS="SECTION"
     73 ><H1
     74 CLASS="SECTION"
     75 ><A
     76 NAME="HIST-V4L2"
     77 >6.2. Changes of the V4L2 API</A
     78 ></H1
     79 ><P
     80 >Soon after the V4L API was added to the kernel it was
     81 criticised as too inflexible. In August 1998 Bill Dirks proposed a
     82 number of improvements and began to work on documentation, example
     83 drivers and applications. With the help of other volunteers this
     84 eventually became the V4L2 API, not just an extension but a
     85 replacement for the V4L API. However it took another four years and
     86 two stable kernel releases until the new API was finally accepted for
     87 inclusion into the kernel in its present form.</P
     88 ><DIV
     89 CLASS="SECTION"
     90 ><H2
     91 CLASS="SECTION"
     92 ><A
     93 NAME="AEN15449"
     94 >6.2.1. Early Versions</A
     95 ></H2
     96 ><P
     97 >1998-08-20: First version.</P
     98 ><P
     99 >1998-08-27: The <A
    100 HREF="r14390.htm"
    101 ><CODE
    102 CLASS="FUNCTION"
    103 >select()</CODE
    104 ></A
    105 > function was introduced.</P
    106 ><P
    107 >1998-09-10: New video standard interface.</P
    108 ><P
    109 >1998-09-18: The <CODE
    110 CLASS="CONSTANT"
    111 >VIDIOC_NONCAP</CODE
    112 > ioctl
    113 was replaced by the otherwise meaningless <CODE
    114 CLASS="CONSTANT"
    115 >O_TRUNC</CODE
    116 >
    117 <A
    118 HREF="r14090.htm"
    119 ><CODE
    120 CLASS="FUNCTION"
    121 >open()</CODE
    122 ></A
    123 > flag, and the aliases <CODE
    124 CLASS="CONSTANT"
    125 >O_NONCAP</CODE
    126 > and
    127 <CODE
    128 CLASS="CONSTANT"
    129 >O_NOIO</CODE
    130 > were defined. Applications can set this
    131 flag if they intend to access controls only, as opposed to capture
    132 applications which need exclusive access. The
    133 <CODE
    134 CLASS="CONSTANT"
    135 >VIDEO_STD_XXX</CODE
    136 > identifiers are now ordinals
    137 instead of flags, and the <CODE
    138 CLASS="FUNCTION"
    139 >video_std_construct()</CODE
    140 >
    141 helper function takes id and transmission arguments.</P
    142 ><P
    143 >1998-09-28: Revamped video standard. Made video controls
    144 individually enumerable.</P
    145 ><P
    146 >1998-10-02: The <CODE
    147 CLASS="STRUCTFIELD"
    148 >id</CODE
    149 > field was
    150 removed from struct <CODE
    151 CLASS="STRUCTNAME"
    152 >video_standard</CODE
    153 > and the
    154 color subcarrier fields were renamed. The <A
    155 HREF="r13641.htm"
    156 ><CODE
    157 CLASS="CONSTANT"
    158 >VIDIOC_QUERYSTD</CODE
    159 ></A
    160 > ioctl was
    161 renamed to <A
    162 HREF="r9288.htm"
    163 ><CODE
    164 CLASS="CONSTANT"
    165 >VIDIOC_ENUMSTD</CODE
    166 ></A
    167 >, <A
    168 HREF="r11217.htm"
    169 ><CODE
    170 CLASS="CONSTANT"
    171 >VIDIOC_G_INPUT</CODE
    172 ></A
    173 > to <A
    174 HREF="r8936.htm"
    175 ><CODE
    176 CLASS="CONSTANT"
    177 >VIDIOC_ENUMINPUT</CODE
    178 ></A
    179 >. A
    180 first draft of the Codec API was released.</P
    181 ><P
    182 >1998-11-08: Many minor changes. Most symbols have been
    183 renamed. Some material changes to struct&nbsp;<A
    184 HREF="r13105.htm#V4L2-CAPABILITY"
    185 >v4l2_capability</A
    186 >.</P
    187 ><P
    188 >1998-11-12: The read/write directon of some ioctls was misdefined.</P
    189 ><P
    190 >1998-11-14: <CODE
    191 CLASS="CONSTANT"
    192 >V4L2_PIX_FMT_RGB24</CODE
    193 >
    194 changed to <CODE
    195 CLASS="CONSTANT"
    196 >V4L2_PIX_FMT_BGR24</CODE
    197 >, and
    198 <CODE
    199 CLASS="CONSTANT"
    200 >V4L2_PIX_FMT_RGB32</CODE
    201 > changed to
    202 <CODE
    203 CLASS="CONSTANT"
    204 >V4L2_PIX_FMT_BGR32</CODE
    205 >. Audio controls are now
    206 accessible with the <A
    207 HREF="r10104.htm"
    208 ><CODE
    209 CLASS="CONSTANT"
    210 >VIDIOC_G_CTRL</CODE
    211 ></A
    212 > and <A
    213 HREF="r10104.htm"
    214 ><CODE
    215 CLASS="CONSTANT"
    216 >VIDIOC_S_CTRL</CODE
    217 ></A
    218 > ioctls under
    219 names starting with <CODE
    220 CLASS="CONSTANT"
    221 >V4L2_CID_AUDIO</CODE
    222 >. The
    223 <CODE
    224 CLASS="CONSTANT"
    225 >V4L2_MAJOR</CODE
    226 > define was removed from
    227 <TT
    228 CLASS="FILENAME"
    229 >videodev.h</TT
    230 > since it was only used once in the
    231 <TT
    232 CLASS="FILENAME"
    233 >videodev</TT
    234 > kernel module. The
    235 <CODE
    236 CLASS="CONSTANT"
    237 >YUV422</CODE
    238 > and <CODE
    239 CLASS="CONSTANT"
    240 >YUV411</CODE
    241 > planar
    242 image formats were added.</P
    243 ><P
    244 >1998-11-28: A few ioctl symbols changed. Interfaces for codecs and
    245 video output devices were added.</P
    246 ><P
    247 >1999-01-14: A raw VBI capture interface was added.</P
    248 ><P
    249 >1999-01-19: The <CODE
    250 CLASS="CONSTANT"
    251 >VIDIOC_NEXTBUF</CODE
    252 > ioctl
    253       was removed.</P
    254 ></DIV
    255 ><DIV
    256 CLASS="SECTION"
    257 ><H2
    258 CLASS="SECTION"
    259 ><A
    260 NAME="AEN15499"
    261 >6.2.2. V4L2 Version 0.16 1999-01-31</A
    262 ></H2
    263 ><P
    264 >1999-01-27: There is now one QBUF ioctl, VIDIOC_QWBUF and VIDIOC_QRBUF
    265 are gone. VIDIOC_QBUF takes a v4l2_buffer as a parameter. Added
    266 digital zoom (cropping) controls.</P
    267 ></DIV
    268 ><DIV
    269 CLASS="SECTION"
    270 ><H2
    271 CLASS="SECTION"
    272 ><A
    273 NAME="AEN15502"
    274 >6.2.3. V4L2 Version 0.18 1999-03-16</A
    275 ></H2
    276 ><P
    277 >Added a v4l to V4L2 ioctl compatibility layer to
    278 videodev.c. Driver writers, this changes how you implement your ioctl
    279 handler. See the Driver Writer's Guide. Added some more control id
    280 codes.</P
    281 ></DIV
    282 ><DIV
    283 CLASS="SECTION"
    284 ><H2
    285 CLASS="SECTION"
    286 ><A
    287 NAME="AEN15505"
    288 >6.2.4. V4L2 Version 0.19 1999-06-05</A
    289 ></H2
    290 ><P
    291 >1999-03-18: Fill in the category and catname fields of
    292 v4l2_queryctrl objects before passing them to the driver. Required a
    293 minor change to the VIDIOC_QUERYCTRL handlers in the sample
    294 drivers.</P
    295 ><P
    296 >1999-03-31: Better compatibility for v4l memory capture
    297 ioctls. Requires changes to drivers to fully support new compatibility
    298 features, see Driver Writer's Guide and v4l2cap.c. Added new control
    299 IDs: V4L2_CID_HFLIP, _VFLIP. Changed V4L2_PIX_FMT_YUV422P to _YUV422P,
    300 and _YUV411P to _YUV411P.</P
    301 ><P
    302 >1999-04-04: Added a few more control IDs.</P
    303 ><P
    304 >1999-04-07: Added the button control type.</P
    305 ><P
    306 >1999-05-02: Fixed a typo in videodev.h, and added the
    307 V4L2_CTRL_FLAG_GRAYED (later V4L2_CTRL_FLAG_GRABBED) flag.</P
    308 ><P
    309 >1999-05-20: Definition of VIDIOC_G_CTRL was wrong causing
    310 a malfunction of this ioctl.</P
    311 ><P
    312 >1999-06-05: Changed the value of
    313 V4L2_CID_WHITENESS.</P
    314 ></DIV
    315 ><DIV
    316 CLASS="SECTION"
    317 ><H2
    318 CLASS="SECTION"
    319 ><A
    320 NAME="AEN15514"
    321 >6.2.5. V4L2 Version 0.20 (1999-09-10)</A
    322 ></H2
    323 ><P
    324 >Version 0.20 introduced a number of changes which were
    325 <SPAN
    326 CLASS="emphasis"
    327 ><I
    328 CLASS="EMPHASIS"
    329 >not backward compatible</I
    330 ></SPAN
    331 > with 0.19 and earlier
    332 versions. Purpose of these changes was to simplify the API, while
    333 making it more extensible and following common Linux driver API
    334 conventions.</P
    335 ><P
    336 ></P
    337 ><OL
    338 TYPE="1"
    339 ><LI
    340 ><P
    341 >Some typos in <CODE
    342 CLASS="CONSTANT"
    343 >V4L2_FMT_FLAG</CODE
    344 >
    345 symbols were fixed. struct&nbsp;<A
    346 HREF="x6570.htm#V4L2-CLIP"
    347 >v4l2_clip</A
    348 > was changed for compatibility with
    349 v4l. (1999-08-30)</P
    350 ></LI
    351 ><LI
    352 ><P
    353 ><CODE
    354 CLASS="CONSTANT"
    355 >V4L2_TUNER_SUB_LANG1</CODE
    356 > was added.
    357 (1999-09-05)</P
    358 ></LI
    359 ><LI
    360 ><P
    361 >All ioctl() commands that used an integer argument now
    362 take a pointer to an integer. Where it makes sense, ioctls will return
    363 the actual new value in the integer pointed to by the argument, a
    364 common convention in the V4L2 API. The affected ioctls are:
    365 VIDIOC_PREVIEW, VIDIOC_STREAMON, VIDIOC_STREAMOFF, VIDIOC_S_FREQ,
    366 VIDIOC_S_INPUT, VIDIOC_S_OUTPUT, VIDIOC_S_EFFECT. For example
    367 <PRE
    368 CLASS="PROGRAMLISTING"
    369 >err = ioctl (fd, VIDIOC_XXX, V4L2_XXX);</PRE
    370 > becomes <PRE
    371 CLASS="PROGRAMLISTING"
    372 >int a = V4L2_XXX; err = ioctl(fd, VIDIOC_XXX, &amp;a);</PRE
    373 >
    374           </P
    375 ></LI
    376 ><LI
    377 ><P
    378 >All the different get- and set-format commands were
    379 swept into one <A
    380 HREF="r10944.htm"
    381 ><CODE
    382 CLASS="CONSTANT"
    383 >VIDIOC_G_FMT</CODE
    384 ></A
    385 > and <A
    386 HREF="r10944.htm"
    387 ><CODE
    388 CLASS="CONSTANT"
    389 >VIDIOC_S_FMT</CODE
    390 ></A
    391 > ioctl taking a union
    392 and a type field selecting the union member as parameter. Purpose is to
    393 simplify the API by eliminating several ioctls and to allow new and
    394 driver private data streams without adding new ioctls.</P
    395 ><P
    396 >This change obsoletes the following ioctls:
    397 <CODE
    398 CLASS="CONSTANT"
    399 >VIDIOC_S_INFMT</CODE
    400 >,
    401 <CODE
    402 CLASS="CONSTANT"
    403 >VIDIOC_G_INFMT</CODE
    404 >,
    405 <CODE
    406 CLASS="CONSTANT"
    407 >VIDIOC_S_OUTFMT</CODE
    408 >,
    409 <CODE
    410 CLASS="CONSTANT"
    411 >VIDIOC_G_OUTFMT</CODE
    412 >,
    413 <CODE
    414 CLASS="CONSTANT"
    415 >VIDIOC_S_VBIFMT</CODE
    416 > and
    417 <CODE
    418 CLASS="CONSTANT"
    419 >VIDIOC_G_VBIFMT</CODE
    420 >. The image format structure
    421 <CODE
    422 CLASS="STRUCTNAME"
    423 >v4l2_format</CODE
    424 > was renamed to struct&nbsp;<A
    425 HREF="c2030.htm#V4L2-PIX-FORMAT"
    426 >v4l2_pix_format</A
    427 >,
    428 while struct&nbsp;<A
    429 HREF="r10944.htm#V4L2-FORMAT"
    430 >v4l2_format</A
    431 > is now the envelopping structure for all format
    432 negotiations.</P
    433 ></LI
    434 ><LI
    435 ><P
    436 >Similar to the changes above, the
    437 <CODE
    438 CLASS="CONSTANT"
    439 >VIDIOC_G_PARM</CODE
    440 > and
    441 <CODE
    442 CLASS="CONSTANT"
    443 >VIDIOC_S_PARM</CODE
    444 > ioctls were merged with
    445 <CODE
    446 CLASS="CONSTANT"
    447 >VIDIOC_G_OUTPARM</CODE
    448 > and
    449 <CODE
    450 CLASS="CONSTANT"
    451 >VIDIOC_S_OUTPARM</CODE
    452 >. A
    453 <CODE
    454 CLASS="STRUCTFIELD"
    455 >type</CODE
    456 > field in the new struct&nbsp;<A
    457 HREF="r11680.htm#V4L2-STREAMPARM"
    458 >v4l2_streamparm</A
    459 >
    460 selects the respective union member.</P
    461 ><P
    462 >This change obsoletes the
    463 <CODE
    464 CLASS="CONSTANT"
    465 >VIDIOC_G_OUTPARM</CODE
    466 > and
    467 <CODE
    468 CLASS="CONSTANT"
    469 >VIDIOC_S_OUTPARM</CODE
    470 > ioctls.</P
    471 ></LI
    472 ><LI
    473 ><P
    474 >Control enumeration was simplified, and two new
    475 control flags were introduced and one dropped. The
    476 <CODE
    477 CLASS="STRUCTFIELD"
    478 >catname</CODE
    479 > field was replaced by a
    480 <CODE
    481 CLASS="STRUCTFIELD"
    482 >group</CODE
    483 > field.</P
    484 ><P
    485 >Drivers can now flag unsupported and temporarily
    486 unavailable controls with <CODE
    487 CLASS="CONSTANT"
    488 >V4L2_CTRL_FLAG_DISABLED</CODE
    489 >
    490 and <CODE
    491 CLASS="CONSTANT"
    492 >V4L2_CTRL_FLAG_GRABBED</CODE
    493 > respectively. The
    494 <CODE
    495 CLASS="STRUCTFIELD"
    496 >group</CODE
    497 > name indicates a possibly narrower
    498 classification than the <CODE
    499 CLASS="STRUCTFIELD"
    500 >category</CODE
    501 >. In other
    502 words, there may be multiple groups within a category. Controls within
    503 a group would typically be drawn within a group box. Controls in
    504 different categories might have a greater separation, or may even
    505 appear in separate windows.</P
    506 ></LI
    507 ><LI
    508 ><P
    509 >The struct&nbsp;<A
    510 HREF="x5953.htm#V4L2-BUFFER"
    511 >v4l2_buffer</A
    512 > <CODE
    513 CLASS="STRUCTFIELD"
    514 >timestamp</CODE
    515 >
    516 was changed to a 64 bit integer, containing the sampling or output
    517 time of the frame in nanoseconds. Additionally timestamps will be in
    518 absolute system time, not starting from zero at the beginning of a
    519 stream. The data type name for timestamps is stamp_t, defined as a
    520 signed 64-bit integer. Output devices should not send a buffer out
    521 until the time in the timestamp field has arrived. I would like to
    522 follow SGI's lead, and adopt a multimedia timestamping system like
    523 their UST (Unadjusted System Time). See
    524 http://reality.sgi.com/cpirazzi_engr/lg/time/intro.html. [This link is
    525 no longer valid.] UST uses timestamps that are 64-bit signed integers
    526 (not struct timeval's) and given in nanosecond units. The UST clock
    527 starts at zero when the system is booted and runs continuously and
    528 uniformly. It takes a little over 292 years for UST to overflow. There
    529 is no way to set the UST clock. The regular Linux time-of-day clock
    530 can be changed periodically, which would cause errors if it were being
    531 used for timestamping a multimedia stream. A real UST style clock will
    532 require some support in the kernel that is not there yet. But in
    533 anticipation, I will change the timestamp field to a 64-bit integer,
    534 and I will change the v4l2_masterclock_gettime() function (used only
    535 by drivers) to return a 64-bit integer.</P
    536 ></LI
    537 ><LI
    538 ><P
    539 >A <CODE
    540 CLASS="STRUCTFIELD"
    541 >sequence</CODE
    542 > field was added
    543 to struct&nbsp;<A
    544 HREF="x5953.htm#V4L2-BUFFER"
    545 >v4l2_buffer</A
    546 >. The <CODE
    547 CLASS="STRUCTFIELD"
    548 >sequence</CODE
    549 > field counts
    550 captured frames, it is ignored by output devices. When a capture
    551 driver drops a frame, the sequence number of that frame is
    552 skipped.</P
    553 ></LI
    554 ></OL
    555 ></DIV
    556 ><DIV
    557 CLASS="SECTION"
    558 ><H2
    559 CLASS="SECTION"
    560 ><A
    561 NAME="AEN15575"
    562 >6.2.6. V4L2 Version 0.20 incremental changes</A
    563 ></H2
    564 ><P
    565 >1999-12-23: In struct&nbsp;<A
    566 HREF="x7013.htm#V4L2-VBI-FORMAT"
    567 >v4l2_vbi_format</A
    568 > the
    569 <CODE
    570 CLASS="STRUCTFIELD"
    571 >reserved1</CODE
    572 > field became
    573 <CODE
    574 CLASS="STRUCTFIELD"
    575 >offset</CODE
    576 >. Previously drivers were required to
    577 clear the <CODE
    578 CLASS="STRUCTFIELD"
    579 >reserved1</CODE
    580 > field.</P
    581 ><P
    582 >2000-01-13: The
    583       <CODE
    584 CLASS="CONSTANT"
    585 >V4L2_FMT_FLAG_NOT_INTERLACED</CODE
    586 > flag was added.</P
    587 ><P
    588 >2000-07-31: The <TT
    589 CLASS="FILENAME"
    590 >linux/poll.h</TT
    591 > header
    592 is now included by <TT
    593 CLASS="FILENAME"
    594 >videodev.h</TT
    595 > for compatibility
    596 with the original <TT
    597 CLASS="FILENAME"
    598 >videodev.h</TT
    599 > file.</P
    600 ><P
    601 >2000-11-20: <CODE
    602 CLASS="CONSTANT"
    603 >V4L2_TYPE_VBI_OUTPUT</CODE
    604 > and
    605 <CODE
    606 CLASS="CONSTANT"
    607 >V4L2_PIX_FMT_Y41P</CODE
    608 > were added.</P
    609 ><P
    610 >2000-11-25: <CODE
    611 CLASS="CONSTANT"
    612 >V4L2_TYPE_VBI_INPUT</CODE
    613 > was
    614 added.</P
    615 ><P
    616 >2000-12-04: A couple typos in symbol names were fixed.</P
    617 ><P
    618 >2001-01-18: To avoid namespace conflicts the
    619 <CODE
    620 CLASS="CONSTANT"
    621 >fourcc</CODE
    622 > macro defined in the
    623 <TT
    624 CLASS="FILENAME"
    625 >videodev.h</TT
    626 > header file was renamed to
    627 <CODE
    628 CLASS="CONSTANT"
    629 >v4l2_fourcc</CODE
    630 >.</P
    631 ><P
    632 >2001-01-25: A possible driver-level compatibility problem
    633 between the <TT
    634 CLASS="FILENAME"
    635 >videodev.h</TT
    636 > file in Linux 2.4.0 and
    637 the <TT
    638 CLASS="FILENAME"
    639 >videodev.h</TT
    640 > file included in the
    641 <TT
    642 CLASS="FILENAME"
    643 >videodevX</TT
    644 > patch was fixed. Users of an earlier
    645 version of <TT
    646 CLASS="FILENAME"
    647 >videodevX</TT
    648 > on Linux 2.4.0 should
    649 recompile their V4L and V4L2 drivers.</P
    650 ><P
    651 >2001-01-26: A possible kernel-level incompatibility
    652 between the <TT
    653 CLASS="FILENAME"
    654 >videodev.h</TT
    655 > file in the
    656 <TT
    657 CLASS="FILENAME"
    658 >videodevX</TT
    659 > patch and the
    660 <TT
    661 CLASS="FILENAME"
    662 >videodev.h</TT
    663 > file in Linux 2.2.x with devfs patches
    664 applied was fixed.</P
    665 ><P
    666 >2001-03-02: Certain V4L ioctls which pass data in both
    667 direction although they are defined with read-only parameter, did not
    668 work correctly through the backward compatibility layer.
    669 [Solution?]</P
    670 ><P
    671 >2001-04-13: Big endian 16-bit RGB formats were added.</P
    672 ><P
    673 >2001-09-17: New YUV formats and the <A
    674 HREF="r11094.htm"
    675 ><CODE
    676 CLASS="CONSTANT"
    677 >VIDIOC_G_FREQUENCY</CODE
    678 ></A
    679 > and
    680 <A
    681 HREF="r11094.htm"
    682 ><CODE
    683 CLASS="CONSTANT"
    684 >VIDIOC_S_FREQUENCY</CODE
    685 ></A
    686 > ioctls were added. (The old
    687 <CODE
    688 CLASS="CONSTANT"
    689 >VIDIOC_G_FREQ</CODE
    690 > and
    691 <CODE
    692 CLASS="CONSTANT"
    693 >VIDIOC_S_FREQ</CODE
    694 > ioctls did not take multiple tuners
    695 into account.)</P
    696 ><P
    697 >2000-09-18: <CODE
    698 CLASS="CONSTANT"
    699 >V4L2_BUF_TYPE_VBI</CODE
    700 > was
    701 added. This may <SPAN
    702 CLASS="emphasis"
    703 ><I
    704 CLASS="EMPHASIS"
    705 >break compatibility</I
    706 ></SPAN
    707 > as the
    708 <A
    709 HREF="r10944.htm"
    710 ><CODE
    711 CLASS="CONSTANT"
    712 >VIDIOC_G_FMT</CODE
    713 ></A
    714 > and <A
    715 HREF="r10944.htm"
    716 ><CODE
    717 CLASS="CONSTANT"
    718 >VIDIOC_S_FMT</CODE
    719 ></A
    720 > ioctls may fail now if the struct
    721 <CODE
    722 CLASS="STRUCTNAME"
    723 >v4l2_fmt</CODE
    724 > <CODE
    725 CLASS="STRUCTFIELD"
    726 >type</CODE
    727 >
    728 field does not contain <CODE
    729 CLASS="CONSTANT"
    730 >V4L2_BUF_TYPE_VBI</CODE
    731 >. In the
    732 documentation of the struct&nbsp;<A
    733 HREF="x7013.htm#V4L2-VBI-FORMAT"
    734 >v4l2_vbi_format</A
    735 >
    736 <CODE
    737 CLASS="STRUCTFIELD"
    738 >offset</CODE
    739 > field the ambiguous phrase "rising
    740 edge" was changed to "leading edge".</P
    741 ></DIV
    742 ><DIV
    743 CLASS="SECTION"
    744 ><H2
    745 CLASS="SECTION"
    746 ><A
    747 NAME="AEN15628"
    748 >6.2.7. V4L2 Version 0.20 2000-11-23</A
    749 ></H2
    750 ><P
    751 >A number of changes were made to the raw VBI
    752 interface.</P
    753 ><P
    754 ></P
    755 ><OL
    756 TYPE="1"
    757 ><LI
    758 ><P
    759 >Figures clarifying the line numbering scheme were
    760 added to the V4L2 API specification. The
    761 <CODE
    762 CLASS="STRUCTFIELD"
    763 >start</CODE
    764 >[0] and
    765 <CODE
    766 CLASS="STRUCTFIELD"
    767 >start</CODE
    768 >[1] fields no longer count line
    769 numbers beginning at zero. Rationale: a) The previous definition was
    770 unclear. b) The <CODE
    771 CLASS="STRUCTFIELD"
    772 >start</CODE
    773 >[] values are ordinal
    774 numbers. c) There is no point in inventing a new line numbering
    775 scheme. We now use line number as defined by ITU-R, period.
    776 Compatibility: Add one to the start values. Applications depending on
    777 the previous semantics may not function correctly.</P
    778 ></LI
    779 ><LI
    780 ><P
    781 >The restriction "count[0] &gt; 0 and count[1] &gt; 0"
    782 has been relaxed  to "(count[0] + count[1]) &gt; 0". Rationale:
    783 Drivers may allocate resources at scan line granularity and some data
    784 services are transmitted only on the first field. The comment that
    785 both <CODE
    786 CLASS="STRUCTFIELD"
    787 >count</CODE
    788 > values will usually be equal is
    789 misleading and pointless and has been removed. This change
    790 <SPAN
    791 CLASS="emphasis"
    792 ><I
    793 CLASS="EMPHASIS"
    794 >breaks compatibility</I
    795 ></SPAN
    796 > with earlier versions:
    797 Drivers may return EINVAL, applications may not function
    798 correctly.</P
    799 ></LI
    800 ><LI
    801 ><P
    802 >Drivers are again permitted to return negative
    803 (unknown) start values as proposed earlier. Why this feature was
    804 dropped is unclear. This change may <SPAN
    805 CLASS="emphasis"
    806 ><I
    807 CLASS="EMPHASIS"
    808 >break
    809 compatibility</I
    810 ></SPAN
    811 > with applications depending on the start
    812 values being positive. The use of <CODE
    813 CLASS="CONSTANT"
    814 >EBUSY</CODE
    815 > and
    816 <CODE
    817 CLASS="CONSTANT"
    818 >EINVAL</CODE
    819 > error codes with the <A
    820 HREF="r10944.htm"
    821 ><CODE
    822 CLASS="CONSTANT"
    823 >VIDIOC_S_FMT</CODE
    824 ></A
    825 > ioctl
    826 was clarified. The <SPAN
    827 CLASS="ERRORCODE"
    828 >EBUSY</SPAN
    829 > error code was finally documented, and the
    830 <CODE
    831 CLASS="STRUCTFIELD"
    832 >reserved2</CODE
    833 > field which was previously
    834 mentioned only in the <TT
    835 CLASS="FILENAME"
    836 >videodev.h</TT
    837 > header
    838 file.</P
    839 ></LI
    840 ><LI
    841 ><P
    842 >New buffer types
    843 <CODE
    844 CLASS="CONSTANT"
    845 >V4L2_TYPE_VBI_INPUT</CODE
    846 > and
    847 <CODE
    848 CLASS="CONSTANT"
    849 >V4L2_TYPE_VBI_OUTPUT</CODE
    850 > were added. The former is an
    851 alias for the old <CODE
    852 CLASS="CONSTANT"
    853 >V4L2_TYPE_VBI</CODE
    854 >, the latter was
    855 missing in the <TT
    856 CLASS="FILENAME"
    857 >videodev.h</TT
    858 > file.</P
    859 ></LI
    860 ></OL
    861 ></DIV
    862 ><DIV
    863 CLASS="SECTION"
    864 ><H2
    865 CLASS="SECTION"
    866 ><A
    867 NAME="AEN15657"
    868 >6.2.8. V4L2 Version 0.20 2002-07-25</A
    869 ></H2
    870 ><P
    871 >Added sliced VBI interface proposal.</P
    872 ></DIV
    873 ><DIV
    874 CLASS="SECTION"
    875 ><H2
    876 CLASS="SECTION"
    877 ><A
    878 NAME="AEN15660"
    879 >6.2.9. V4L2 in Linux 2.5.46, 2002-10</A
    880 ></H2
    881 ><P
    882 >Around October-November 2002, prior to an announced
    883 feature freeze of Linux 2.5, the API was revised, drawing from
    884 experience with V4L2 0.20. This unnamed version was finally merged
    885 into Linux 2.5.46.</P
    886 ><P
    887 ></P
    888 ><OL
    889 TYPE="1"
    890 ><LI
    891 ><P
    892 >As specified in <A
    893 HREF="c174.htm#RELATED"
    894 >Section 1.1.2</A
    895 >, drivers
    896 must make related device functions available under all minor device
    897 numbers.</P
    898 ></LI
    899 ><LI
    900 ><P
    901 >The <A
    902 HREF="r14090.htm"
    903 ><CODE
    904 CLASS="FUNCTION"
    905 >open()</CODE
    906 ></A
    907 > function requires access mode
    908 <CODE
    909 CLASS="CONSTANT"
    910 >O_RDWR</CODE
    911 > regardless of the device type. All V4L2
    912 drivers exchanging data with applications must support the
    913 <CODE
    914 CLASS="CONSTANT"
    915 >O_NONBLOCK</CODE
    916 > flag. The <CODE
    917 CLASS="CONSTANT"
    918 >O_NOIO</CODE
    919 >
    920 flag, a V4L2 symbol which aliased the meaningless
    921 <CODE
    922 CLASS="CONSTANT"
    923 >O_TRUNC</CODE
    924 > to indicate accesses without data
    925 exchange (panel applications) was dropped. Drivers must stay in "panel
    926 mode" until the application attempts to initiate a data exchange, see
    927 <A
    928 HREF="c174.htm#OPEN"
    929 >Section 1.1</A
    930 >.</P
    931 ></LI
    932 ><LI
    933 ><P
    934 >The struct&nbsp;<A
    935 HREF="r13105.htm#V4L2-CAPABILITY"
    936 >v4l2_capability</A
    937 > changed dramatically. Note that
    938 also the size of the structure changed, which is encoded in the ioctl
    939 request code, thus older V4L2 devices will respond with an <SPAN
    940 CLASS="ERRORCODE"
    941 >EINVAL</SPAN
    942 > error code to
    943 the new <A
    944 HREF="r13105.htm"
    945 ><CODE
    946 CLASS="CONSTANT"
    947 >VIDIOC_QUERYCAP</CODE
    948 ></A
    949 > ioctl.</P
    950 ><P
    951 >There are new fields to identify the driver, a new (as
    952 of yet unspecified) device function
    953 <CODE
    954 CLASS="CONSTANT"
    955 >V4L2_CAP_RDS_CAPTURE</CODE
    956 >, the
    957 <CODE
    958 CLASS="CONSTANT"
    959 >V4L2_CAP_AUDIO</CODE
    960 > flag indicates if the device has
    961 any audio connectors, another I/O capability
    962 <CODE
    963 CLASS="CONSTANT"
    964 >V4L2_CAP_ASYNCIO</CODE
    965 > can be flagged. In response to
    966 these changes the <CODE
    967 CLASS="STRUCTFIELD"
    968 >type</CODE
    969 > field became a bit
    970 set and was merged into the <CODE
    971 CLASS="STRUCTFIELD"
    972 >flags</CODE
    973 > field.
    974 <CODE
    975 CLASS="CONSTANT"
    976 >V4L2_FLAG_TUNER</CODE
    977 > was renamed to
    978 <CODE
    979 CLASS="CONSTANT"
    980 >V4L2_CAP_TUNER</CODE
    981 >,
    982 <CODE
    983 CLASS="CONSTANT"
    984 >V4L2_CAP_VIDEO_OVERLAY</CODE
    985 > replaced
    986 <CODE
    987 CLASS="CONSTANT"
    988 >V4L2_FLAG_PREVIEW</CODE
    989 > and
    990 <CODE
    991 CLASS="CONSTANT"
    992 >V4L2_CAP_VBI_CAPTURE</CODE
    993 > and
    994 <CODE
    995 CLASS="CONSTANT"
    996 >V4L2_CAP_VBI_OUTPUT</CODE
    997 > replaced
    998 <CODE
    999 CLASS="CONSTANT"
   1000 >V4L2_FLAG_DATA_SERVICE</CODE
   1001 >.
   1002 <CODE
   1003 CLASS="CONSTANT"
   1004 >V4L2_FLAG_READ</CODE
   1005 > and
   1006 <CODE
   1007 CLASS="CONSTANT"
   1008 >V4L2_FLAG_WRITE</CODE
   1009 > were merged into
   1010 <CODE
   1011 CLASS="CONSTANT"
   1012 >V4L2_CAP_READWRITE</CODE
   1013 >.</P
   1014 ><P
   1015 >The redundant fields
   1016 <CODE
   1017 CLASS="STRUCTFIELD"
   1018 >inputs</CODE
   1019 >, <CODE
   1020 CLASS="STRUCTFIELD"
   1021 >outputs</CODE
   1022 >
   1023 and <CODE
   1024 CLASS="STRUCTFIELD"
   1025 >audios</CODE
   1026 > were removed. These properties
   1027 can be determined as described in <A
   1028 HREF="x309.htm"
   1029 >Section 1.4</A
   1030 > and <A
   1031 HREF="x341.htm"
   1032 >Section 1.5</A
   1033 >.</P
   1034 ><P
   1035 >The somewhat volatile and therefore barely useful
   1036 fields <CODE
   1037 CLASS="STRUCTFIELD"
   1038 >maxwidth</CODE
   1039 >,
   1040 <CODE
   1041 CLASS="STRUCTFIELD"
   1042 >maxheight</CODE
   1043 >,
   1044 <CODE
   1045 CLASS="STRUCTFIELD"
   1046 >minwidth</CODE
   1047 >,
   1048 <CODE
   1049 CLASS="STRUCTFIELD"
   1050 >minheight</CODE
   1051 >,
   1052 <CODE
   1053 CLASS="STRUCTFIELD"
   1054 >maxframerate</CODE
   1055 > were removed. This information
   1056 is available as described in <A
   1057 HREF="x1859.htm"
   1058 >Section 1.10</A
   1059 > and
   1060 <A
   1061 HREF="x448.htm"
   1062 >Section 1.7</A
   1063 >.</P
   1064 ><P
   1065 ><CODE
   1066 CLASS="CONSTANT"
   1067 >V4L2_FLAG_SELECT</CODE
   1068 > was removed. We
   1069 believe the select() function is important enough to require support
   1070 of it in all V4L2 drivers exchanging data with applications. The
   1071 redundant <CODE
   1072 CLASS="CONSTANT"
   1073 >V4L2_FLAG_MONOCHROME</CODE
   1074 > flag was removed,
   1075 this information is available as described in <A
   1076 HREF="x1859.htm"
   1077 >Section 1.10</A
   1078 >.</P
   1079 ></LI
   1080 ><LI
   1081 ><P
   1082 >In struct&nbsp;<A
   1083 HREF="r8936.htm#V4L2-INPUT"
   1084 >v4l2_input</A
   1085 > the
   1086 <CODE
   1087 CLASS="STRUCTFIELD"
   1088 >assoc_audio</CODE
   1089 > field and the
   1090 <CODE
   1091 CLASS="STRUCTFIELD"
   1092 >capability</CODE
   1093 > field and its only flag
   1094 <CODE
   1095 CLASS="CONSTANT"
   1096 >V4L2_INPUT_CAP_AUDIO</CODE
   1097 > was replaced by the new
   1098 <CODE
   1099 CLASS="STRUCTFIELD"
   1100 >audioset</CODE
   1101 > field. Instead of linking one
   1102 video input to one audio input this field reports all audio inputs
   1103 this video input combines with.</P
   1104 ><P
   1105 >New fields are <CODE
   1106 CLASS="STRUCTFIELD"
   1107 >tuner</CODE
   1108 >
   1109 (reversing the former link from tuners to video inputs),
   1110 <CODE
   1111 CLASS="STRUCTFIELD"
   1112 >std</CODE
   1113 > and
   1114 <CODE
   1115 CLASS="STRUCTFIELD"
   1116 >status</CODE
   1117 >.</P
   1118 ><P
   1119 >Accordingly struct&nbsp;<A
   1120 HREF="r9149.htm#V4L2-OUTPUT"
   1121 >v4l2_output</A
   1122 > lost its
   1123 <CODE
   1124 CLASS="STRUCTFIELD"
   1125 >capability</CODE
   1126 > and
   1127 <CODE
   1128 CLASS="STRUCTFIELD"
   1129 >assoc_audio</CODE
   1130 > fields.
   1131 <CODE
   1132 CLASS="STRUCTFIELD"
   1133 >audioset</CODE
   1134 >,
   1135 <CODE
   1136 CLASS="STRUCTFIELD"
   1137 >modulator</CODE
   1138 > and
   1139 <CODE
   1140 CLASS="STRUCTFIELD"
   1141 >std</CODE
   1142 > where added instead.</P
   1143 ></LI
   1144 ><LI
   1145 ><P
   1146 >The struct&nbsp;<A
   1147 HREF="r9539.htm#V4L2-AUDIO"
   1148 >v4l2_audio</A
   1149 > field
   1150 <CODE
   1151 CLASS="STRUCTFIELD"
   1152 >audio</CODE
   1153 > was renamed to
   1154 <CODE
   1155 CLASS="STRUCTFIELD"
   1156 >index</CODE
   1157 >, for consistency with other
   1158 structures. A new capability flag
   1159 <CODE
   1160 CLASS="CONSTANT"
   1161 >V4L2_AUDCAP_STEREO</CODE
   1162 > was added to indicated if the
   1163 audio input in question supports stereo sound.
   1164 <CODE
   1165 CLASS="CONSTANT"
   1166 >V4L2_AUDCAP_EFFECTS</CODE
   1167 > and the corresponding
   1168 <CODE
   1169 CLASS="CONSTANT"
   1170 >V4L2_AUDMODE</CODE
   1171 > flags where removed. This can be
   1172 easily implemented using controls. (However the same applies to AVL
   1173 which is still there.)</P
   1174 ><P
   1175 >Again for consistency the struct&nbsp;<A
   1176 HREF="r9688.htm#V4L2-AUDIOOUT"
   1177 >v4l2_audioout</A
   1178 > field
   1179 <CODE
   1180 CLASS="STRUCTFIELD"
   1181 >audio</CODE
   1182 > was renamed to
   1183 <CODE
   1184 CLASS="STRUCTFIELD"
   1185 >index</CODE
   1186 >.</P
   1187 ></LI
   1188 ><LI
   1189 ><P
   1190 >The struct&nbsp;<A
   1191 HREF="r12342.htm#V4L2-TUNER"
   1192 >v4l2_tuner</A
   1193 >
   1194 <CODE
   1195 CLASS="STRUCTFIELD"
   1196 >input</CODE
   1197 > field was replaced by an
   1198 <CODE
   1199 CLASS="STRUCTFIELD"
   1200 >index</CODE
   1201 > field, permitting devices with
   1202 multiple tuners. The link between video inputs and tuners is now
   1203 reversed, inputs point to their tuner. The
   1204 <CODE
   1205 CLASS="STRUCTFIELD"
   1206 >std</CODE
   1207 > substructure became a
   1208 simple set (more about this below) and moved into struct&nbsp;<A
   1209 HREF="r8936.htm#V4L2-INPUT"
   1210 >v4l2_input</A
   1211 >. A
   1212 <CODE
   1213 CLASS="STRUCTFIELD"
   1214 >type</CODE
   1215 > field was added.</P
   1216 ><P
   1217 >Accordingly in struct&nbsp;<A
   1218 HREF="r11430.htm#V4L2-MODULATOR"
   1219 >v4l2_modulator</A
   1220 > the
   1221 <CODE
   1222 CLASS="STRUCTFIELD"
   1223 >output</CODE
   1224 > was replaced by an
   1225 <CODE
   1226 CLASS="STRUCTFIELD"
   1227 >index</CODE
   1228 > field.</P
   1229 ><P
   1230 >In struct&nbsp;<A
   1231 HREF="r11094.htm#V4L2-FREQUENCY"
   1232 >v4l2_frequency</A
   1233 > the
   1234 <CODE
   1235 CLASS="STRUCTFIELD"
   1236 >port</CODE
   1237 > field was replaced by a
   1238 <CODE
   1239 CLASS="STRUCTFIELD"
   1240 >tuner</CODE
   1241 > field containing the respective tuner
   1242 or modulator index number. A tuner <CODE
   1243 CLASS="STRUCTFIELD"
   1244 >type</CODE
   1245 >
   1246 field was added and the <CODE
   1247 CLASS="STRUCTFIELD"
   1248 >reserved</CODE
   1249 > field
   1250 became larger for future extensions (satellite tuners in
   1251 particular).</P
   1252 ></LI
   1253 ><LI
   1254 ><P
   1255 >The idea of completely transparent video standards was
   1256 dropped. Experience showed that applications must be able to work with
   1257 video standards beyond presenting the user a menu. Instead of
   1258 enumerating supported standards with an ioctl applications can now
   1259 refer to standards by <A
   1260 HREF="r9288.htm#V4L2-STD-ID"
   1261 >v4l2_std_id</A
   1262 > and symbols defined in the
   1263 <TT
   1264 CLASS="FILENAME"
   1265 >videodev2.h</TT
   1266 > header file. For details see <A
   1267 HREF="x448.htm"
   1268 >Section 1.7</A
   1269 >. The <A
   1270 HREF="r12265.htm"
   1271 ><CODE
   1272 CLASS="CONSTANT"
   1273 >VIDIOC_G_STD</CODE
   1274 ></A
   1275 > and
   1276 <A
   1277 HREF="r12265.htm"
   1278 ><CODE
   1279 CLASS="CONSTANT"
   1280 >VIDIOC_S_STD</CODE
   1281 ></A
   1282 > now take a pointer to this type as argument.
   1283 <A
   1284 HREF="r13641.htm"
   1285 ><CODE
   1286 CLASS="CONSTANT"
   1287 >VIDIOC_QUERYSTD</CODE
   1288 ></A
   1289 > was added to autodetect the received standard, if
   1290 the hardware has this capability. In struct&nbsp;<A
   1291 HREF="r9288.htm#V4L2-STANDARD"
   1292 >v4l2_standard</A
   1293 > an
   1294 <CODE
   1295 CLASS="STRUCTFIELD"
   1296 >index</CODE
   1297 > field was added for <A
   1298 HREF="r9288.htm"
   1299 ><CODE
   1300 CLASS="CONSTANT"
   1301 >VIDIOC_ENUMSTD</CODE
   1302 ></A
   1303 >.
   1304 A <A
   1305 HREF="r9288.htm#V4L2-STD-ID"
   1306 >v4l2_std_id</A
   1307 > field named <CODE
   1308 CLASS="STRUCTFIELD"
   1309 >id</CODE
   1310 > was added as
   1311 machine readable identifier, also replacing the
   1312 <CODE
   1313 CLASS="STRUCTFIELD"
   1314 >transmission</CODE
   1315 > field. The misleading
   1316 <CODE
   1317 CLASS="STRUCTFIELD"
   1318 >framerate</CODE
   1319 > field was renamed
   1320 to <CODE
   1321 CLASS="STRUCTFIELD"
   1322 >frameperiod</CODE
   1323 >. The now obsolete
   1324 <CODE
   1325 CLASS="STRUCTFIELD"
   1326 >colorstandard</CODE
   1327 > information, originally
   1328 needed to distguish between variations of standards, were
   1329 removed.</P
   1330 ><P
   1331 >Struct <CODE
   1332 CLASS="STRUCTNAME"
   1333 >v4l2_enumstd</CODE
   1334 > ceased to
   1335 be. <A
   1336 HREF="r9288.htm"
   1337 ><CODE
   1338 CLASS="CONSTANT"
   1339 >VIDIOC_ENUMSTD</CODE
   1340 ></A
   1341 > now takes a pointer to a struct&nbsp;<A
   1342 HREF="r9288.htm#V4L2-STANDARD"
   1343 >v4l2_standard</A
   1344 >
   1345 directly. The information which standards are supported by a
   1346 particular video input or output moved into struct&nbsp;<A
   1347 HREF="r8936.htm#V4L2-INPUT"
   1348 >v4l2_input</A
   1349 > and
   1350 struct&nbsp;<A
   1351 HREF="r9149.htm#V4L2-OUTPUT"
   1352 >v4l2_output</A
   1353 > fields named <CODE
   1354 CLASS="STRUCTFIELD"
   1355 >std</CODE
   1356 >,
   1357 respectively.</P
   1358 ></LI
   1359 ><LI
   1360 ><P
   1361 >The struct&nbsp;<A
   1362 HREF="r13317.htm#V4L2-QUERYCTRL"
   1363 >v4l2_queryctrl</A
   1364 > fields
   1365 <CODE
   1366 CLASS="STRUCTFIELD"
   1367 >category</CODE
   1368 > and
   1369 <CODE
   1370 CLASS="STRUCTFIELD"
   1371 >group</CODE
   1372 > did not catch on and/or were not
   1373 implemented as expected and therefore removed.</P
   1374 ></LI
   1375 ><LI
   1376 ><P
   1377 >The <A
   1378 HREF="r10944.htm"
   1379 ><CODE
   1380 CLASS="CONSTANT"
   1381 >VIDIOC_TRY_FMT</CODE
   1382 ></A
   1383 > ioctl was added to negotiate data
   1384 formats as with <A
   1385 HREF="r10944.htm"
   1386 ><CODE
   1387 CLASS="CONSTANT"
   1388 >VIDIOC_S_FMT</CODE
   1389 ></A
   1390 >, but without the overhead of
   1391 programming the hardware and regardless of I/O in progress.</P
   1392 ><P
   1393 >In struct&nbsp;<A
   1394 HREF="r10944.htm#V4L2-FORMAT"
   1395 >v4l2_format</A
   1396 > the <CODE
   1397 CLASS="STRUCTFIELD"
   1398 >fmt</CODE
   1399 >
   1400 union was extended to contain struct&nbsp;<A
   1401 HREF="x6570.htm#V4L2-WINDOW"
   1402 >v4l2_window</A
   1403 >. All image format
   1404 negotiations are now possible with <CODE
   1405 CLASS="CONSTANT"
   1406 >VIDIOC_G_FMT</CODE
   1407 >,
   1408 <CODE
   1409 CLASS="CONSTANT"
   1410 >VIDIOC_S_FMT</CODE
   1411 > and
   1412 <CODE
   1413 CLASS="CONSTANT"
   1414 >VIDIOC_TRY_FMT</CODE
   1415 >; ioctl. The
   1416 <CODE
   1417 CLASS="CONSTANT"
   1418 >VIDIOC_G_WIN</CODE
   1419 > and
   1420 <CODE
   1421 CLASS="CONSTANT"
   1422 >VIDIOC_S_WIN</CODE
   1423 > ioctls to prepare for a video
   1424 overlay were removed. The <CODE
   1425 CLASS="STRUCTFIELD"
   1426 >type</CODE
   1427 > field
   1428 changed to type enum&nbsp;<A
   1429 HREF="x5953.htm#V4L2-BUF-TYPE"
   1430 >v4l2_buf_type</A
   1431 > and the buffer type names changed as
   1432 follows.<DIV
   1433 CLASS="INFORMALTABLE"
   1434 ><P
   1435 ></P
   1436 ><A
   1437 NAME="AEN15815"
   1438 ></A
   1439 ><TABLE
   1440 BORDER="1"
   1441 CLASS="CALSTABLE"
   1442 ><COL><COL><THEAD
   1443 ><TR
   1444 ><TH
   1445 >Old defines</TH
   1446 ><TH
   1447 >enum&nbsp;<A
   1448 HREF="x5953.htm#V4L2-BUF-TYPE"
   1449 >v4l2_buf_type</A
   1450 ></TH
   1451 ></TR
   1452 ></THEAD
   1453 ><TBODY
   1454 VALIGN="TOP"
   1455 ><TR
   1456 ><TD
   1457 ><CODE
   1458 CLASS="CONSTANT"
   1459 >V4L2_BUF_TYPE_CAPTURE</CODE
   1460 ></TD
   1461 ><TD
   1462 ><CODE
   1463 CLASS="CONSTANT"
   1464 >V4L2_BUF_TYPE_VIDEO_CAPTURE</CODE
   1465 ></TD
   1466 ></TR
   1467 ><TR
   1468 ><TD
   1469 ><CODE
   1470 CLASS="CONSTANT"
   1471 >V4L2_BUF_TYPE_CODECIN</CODE
   1472 ></TD
   1473 ><TD
   1474 >Omitted for now</TD
   1475 ></TR
   1476 ><TR
   1477 ><TD
   1478 ><CODE
   1479 CLASS="CONSTANT"
   1480 >V4L2_BUF_TYPE_CODECOUT</CODE
   1481 ></TD
   1482 ><TD
   1483 >Omitted for now</TD
   1484 ></TR
   1485 ><TR
   1486 ><TD
   1487 ><CODE
   1488 CLASS="CONSTANT"
   1489 >V4L2_BUF_TYPE_EFFECTSIN</CODE
   1490 ></TD
   1491 ><TD
   1492 >Omitted for now</TD
   1493 ></TR
   1494 ><TR
   1495 ><TD
   1496 ><CODE
   1497 CLASS="CONSTANT"
   1498 >V4L2_BUF_TYPE_EFFECTSIN2</CODE
   1499 ></TD
   1500 ><TD
   1501 >Omitted for now</TD
   1502 ></TR
   1503 ><TR
   1504 ><TD
   1505 ><CODE
   1506 CLASS="CONSTANT"
   1507 >V4L2_BUF_TYPE_EFFECTSOUT</CODE
   1508 ></TD
   1509 ><TD
   1510 >Omitted for now</TD
   1511 ></TR
   1512 ><TR
   1513 ><TD
   1514 ><CODE
   1515 CLASS="CONSTANT"
   1516 >V4L2_BUF_TYPE_VIDEOOUT</CODE
   1517 ></TD
   1518 ><TD
   1519 ><CODE
   1520 CLASS="CONSTANT"
   1521 >V4L2_BUF_TYPE_VIDEO_OUTPUT</CODE
   1522 ></TD
   1523 ></TR
   1524 ><TR
   1525 ><TD
   1526 ><CODE
   1527 CLASS="CONSTANT"
   1528 >-</CODE
   1529 ></TD
   1530 ><TD
   1531 ><CODE
   1532 CLASS="CONSTANT"
   1533 >V4L2_BUF_TYPE_VIDEO_OVERLAY</CODE
   1534 ></TD
   1535 ></TR
   1536 ><TR
   1537 ><TD
   1538 ><CODE
   1539 CLASS="CONSTANT"
   1540 >-</CODE
   1541 ></TD
   1542 ><TD
   1543 ><CODE
   1544 CLASS="CONSTANT"
   1545 >V4L2_BUF_TYPE_VBI_CAPTURE</CODE
   1546 ></TD
   1547 ></TR
   1548 ><TR
   1549 ><TD
   1550 ><CODE
   1551 CLASS="CONSTANT"
   1552 >-</CODE
   1553 ></TD
   1554 ><TD
   1555 ><CODE
   1556 CLASS="CONSTANT"
   1557 >V4L2_BUF_TYPE_VBI_OUTPUT</CODE
   1558 ></TD
   1559 ></TR
   1560 ><TR
   1561 ><TD
   1562 ><CODE
   1563 CLASS="CONSTANT"
   1564 >-</CODE
   1565 ></TD
   1566 ><TD
   1567 ><CODE
   1568 CLASS="CONSTANT"
   1569 >V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</CODE
   1570 ></TD
   1571 ></TR
   1572 ><TR
   1573 ><TD
   1574 ><CODE
   1575 CLASS="CONSTANT"
   1576 >-</CODE
   1577 ></TD
   1578 ><TD
   1579 ><CODE
   1580 CLASS="CONSTANT"
   1581 >V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</CODE
   1582 ></TD
   1583 ></TR
   1584 ><TR
   1585 ><TD
   1586 ><CODE
   1587 CLASS="CONSTANT"
   1588 >V4L2_BUF_TYPE_PRIVATE_BASE</CODE
   1589 ></TD
   1590 ><TD
   1591 ><CODE
   1592 CLASS="CONSTANT"
   1593 >V4L2_BUF_TYPE_PRIVATE</CODE
   1594 ></TD
   1595 ></TR
   1596 ></TBODY
   1597 ></TABLE
   1598 ><P
   1599 ></P
   1600 ></DIV
   1601 ></P
   1602 ></LI
   1603 ><LI
   1604 ><P
   1605 >In struct&nbsp;<A
   1606 HREF="r8367.htm#V4L2-FMTDESC"
   1607 >v4l2_fmtdesc</A
   1608 > a enum&nbsp;<A
   1609 HREF="x5953.htm#V4L2-BUF-TYPE"
   1610 >v4l2_buf_type</A
   1611 > field named
   1612 <CODE
   1613 CLASS="STRUCTFIELD"
   1614 >type</CODE
   1615 > was added as in struct&nbsp;<A
   1616 HREF="r10944.htm#V4L2-FORMAT"
   1617 >v4l2_format</A
   1618 >. The
   1619 <CODE
   1620 CLASS="CONSTANT"
   1621 >VIDIOC_ENUM_FBUFFMT</CODE
   1622 > ioctl is no longer needed and
   1623 was removed. These calls can be replaced by <A
   1624 HREF="r8367.htm"
   1625 ><CODE
   1626 CLASS="CONSTANT"
   1627 >VIDIOC_ENUM_FMT</CODE
   1628 ></A
   1629 > with
   1630 type <CODE
   1631 CLASS="CONSTANT"
   1632 >V4L2_BUF_TYPE_VIDEO_OVERLAY</CODE
   1633 >.</P
   1634 ></LI
   1635 ><LI
   1636 ><P
   1637 >In struct&nbsp;<A
   1638 HREF="c2030.htm#V4L2-PIX-FORMAT"
   1639 >v4l2_pix_format</A
   1640 > the
   1641 <CODE
   1642 CLASS="STRUCTFIELD"
   1643 >depth</CODE
   1644 > field was removed, assuming
   1645 applications which recognize the format by its four-character-code
   1646 already know the color depth, and others do not care about it. The
   1647 same rationale lead to the removal of the
   1648 <CODE
   1649 CLASS="CONSTANT"
   1650 >V4L2_FMT_FLAG_COMPRESSED</CODE
   1651 > flag. The
   1652 <CODE
   1653 CLASS="CONSTANT"
   1654 >V4L2_FMT_FLAG_SWCONVECOMPRESSED</CODE
   1655 > flag was removed
   1656 because drivers are not supposed to convert images in kernel space. A
   1657 user library of conversion functions should be provided instead. The
   1658 <CODE
   1659 CLASS="CONSTANT"
   1660 >V4L2_FMT_FLAG_BYTESPERLINE</CODE
   1661 > flag was redundant.
   1662 Applications can set the <CODE
   1663 CLASS="STRUCTFIELD"
   1664 >bytesperline</CODE
   1665 > field
   1666 to zero to get a reasonable default. Since the remaining flags were
   1667 replaced as well, the <CODE
   1668 CLASS="STRUCTFIELD"
   1669 >flags</CODE
   1670 > field itself
   1671 was removed.</P
   1672 ><P
   1673 >The interlace flags were replaced by a enum&nbsp;<A
   1674 HREF="x6386.htm#V4L2-FIELD"
   1675 >v4l2_field</A
   1676 >
   1677 value in a newly added <CODE
   1678 CLASS="STRUCTFIELD"
   1679 >field</CODE
   1680 >
   1681 field.<DIV
   1682 CLASS="INFORMALTABLE"
   1683 ><P
   1684 ></P
   1685 ><A
   1686 NAME="AEN15905"
   1687 ></A
   1688 ><TABLE
   1689 BORDER="1"
   1690 CLASS="CALSTABLE"
   1691 ><COL><COL><THEAD
   1692 ><TR
   1693 ><TH
   1694 >Old flag</TH
   1695 ><TH
   1696 >enum&nbsp;<A
   1697 HREF="x6386.htm#V4L2-FIELD"
   1698 >v4l2_field</A
   1699 ></TH
   1700 ></TR
   1701 ></THEAD
   1702 ><TBODY
   1703 VALIGN="TOP"
   1704 ><TR
   1705 ><TD
   1706 ><CODE
   1707 CLASS="CONSTANT"
   1708 >V4L2_FMT_FLAG_NOT_INTERLACED</CODE
   1709 ></TD
   1710 ><TD
   1711 >?</TD
   1712 ></TR
   1713 ><TR
   1714 ><TD
   1715 ><CODE
   1716 CLASS="CONSTANT"
   1717 >V4L2_FMT_FLAG_INTERLACED</CODE
   1718 >
   1719 = <CODE
   1720 CLASS="CONSTANT"
   1721 >V4L2_FMT_FLAG_COMBINED</CODE
   1722 ></TD
   1723 ><TD
   1724 ><CODE
   1725 CLASS="CONSTANT"
   1726 >V4L2_FIELD_INTERLACED</CODE
   1727 ></TD
   1728 ></TR
   1729 ><TR
   1730 ><TD
   1731 ><CODE
   1732 CLASS="CONSTANT"
   1733 >V4L2_FMT_FLAG_TOPFIELD</CODE
   1734 >
   1735 = <CODE
   1736 CLASS="CONSTANT"
   1737 >V4L2_FMT_FLAG_ODDFIELD</CODE
   1738 ></TD
   1739 ><TD
   1740 ><CODE
   1741 CLASS="CONSTANT"
   1742 >V4L2_FIELD_TOP</CODE
   1743 ></TD
   1744 ></TR
   1745 ><TR
   1746 ><TD
   1747 ><CODE
   1748 CLASS="CONSTANT"
   1749 >V4L2_FMT_FLAG_BOTFIELD</CODE
   1750 >
   1751 = <CODE
   1752 CLASS="CONSTANT"
   1753 >V4L2_FMT_FLAG_EVENFIELD</CODE
   1754 ></TD
   1755 ><TD
   1756 ><CODE
   1757 CLASS="CONSTANT"
   1758 >V4L2_FIELD_BOTTOM</CODE
   1759 ></TD
   1760 ></TR
   1761 ><TR
   1762 ><TD
   1763 ><CODE
   1764 CLASS="CONSTANT"
   1765 >-</CODE
   1766 ></TD
   1767 ><TD
   1768 ><CODE
   1769 CLASS="CONSTANT"
   1770 >V4L2_FIELD_SEQ_TB</CODE
   1771 ></TD
   1772 ></TR
   1773 ><TR
   1774 ><TD
   1775 ><CODE
   1776 CLASS="CONSTANT"
   1777 >-</CODE
   1778 ></TD
   1779 ><TD
   1780 ><CODE
   1781 CLASS="CONSTANT"
   1782 >V4L2_FIELD_SEQ_BT</CODE
   1783 ></TD
   1784 ></TR
   1785 ><TR
   1786 ><TD
   1787 ><CODE
   1788 CLASS="CONSTANT"
   1789 >-</CODE
   1790 ></TD
   1791 ><TD
   1792 ><CODE
   1793 CLASS="CONSTANT"
   1794 >V4L2_FIELD_ALTERNATE</CODE
   1795 ></TD
   1796 ></TR
   1797 ></TBODY
   1798 ></TABLE
   1799 ><P
   1800 ></P
   1801 ></DIV
   1802 ></P
   1803 ><P
   1804 >The color space flags were replaced by a
   1805 enum&nbsp;<A
   1806 HREF="x2123.htm#V4L2-COLORSPACE"
   1807 >v4l2_colorspace</A
   1808 > value in a newly added
   1809 <CODE
   1810 CLASS="STRUCTFIELD"
   1811 >colorspace</CODE
   1812 > field, where one of
   1813 <CODE
   1814 CLASS="CONSTANT"
   1815 >V4L2_COLORSPACE_SMPTE170M</CODE
   1816 >,
   1817 <CODE
   1818 CLASS="CONSTANT"
   1819 >V4L2_COLORSPACE_BT878</CODE
   1820 >,
   1821 <CODE
   1822 CLASS="CONSTANT"
   1823 >V4L2_COLORSPACE_470_SYSTEM_M</CODE
   1824 > or
   1825 <CODE
   1826 CLASS="CONSTANT"
   1827 >V4L2_COLORSPACE_470_SYSTEM_BG</CODE
   1828 > replaces
   1829 <CODE
   1830 CLASS="CONSTANT"
   1831 >V4L2_FMT_CS_601YUV</CODE
   1832 >.</P
   1833 ></LI
   1834 ><LI
   1835 ><P
   1836 >In struct&nbsp;<A
   1837 HREF="r13696.htm#V4L2-REQUESTBUFFERS"
   1838 >v4l2_requestbuffers</A
   1839 > the
   1840 <CODE
   1841 CLASS="STRUCTFIELD"
   1842 >type</CODE
   1843 > field was properly defined as
   1844 enum&nbsp;<A
   1845 HREF="x5953.htm#V4L2-BUF-TYPE"
   1846 >v4l2_buf_type</A
   1847 >. Buffer types changed as mentioned above. A new
   1848 <CODE
   1849 CLASS="STRUCTFIELD"
   1850 >memory</CODE
   1851 > field of type enum&nbsp;<A
   1852 HREF="x5953.htm#V4L2-MEMORY"
   1853 >v4l2_memory</A
   1854 > was
   1855 added to distinguish between I/O methods using buffers allocated
   1856 by the driver or the application. See <A
   1857 HREF="c5742.htm"
   1858 >Chapter 3</A
   1859 > for
   1860 details.</P
   1861 ></LI
   1862 ><LI
   1863 ><P
   1864 >In struct&nbsp;<A
   1865 HREF="x5953.htm#V4L2-BUFFER"
   1866 >v4l2_buffer</A
   1867 > the <CODE
   1868 CLASS="STRUCTFIELD"
   1869 >type</CODE
   1870 >
   1871 field was properly defined as enum&nbsp;<A
   1872 HREF="x5953.htm#V4L2-BUF-TYPE"
   1873 >v4l2_buf_type</A
   1874 >. Buffer types changed as
   1875 mentioned above. A <CODE
   1876 CLASS="STRUCTFIELD"
   1877 >field</CODE
   1878 > field of type
   1879 enum&nbsp;<A
   1880 HREF="x6386.htm#V4L2-FIELD"
   1881 >v4l2_field</A
   1882 > was added to indicate if a buffer contains a top or
   1883 bottom field. The old field flags were removed. Since no unadjusted
   1884 system time clock was added to the kernel as planned, the
   1885 <CODE
   1886 CLASS="STRUCTFIELD"
   1887 >timestamp</CODE
   1888 > field changed back from type
   1889 stamp_t, an unsigned 64 bit integer expressing the sample time in
   1890 nanoseconds, to struct <CODE
   1891 CLASS="STRUCTNAME"
   1892 >timeval</CODE
   1893 >. With the
   1894 addition of a second memory mapping method the
   1895 <CODE
   1896 CLASS="STRUCTFIELD"
   1897 >offset</CODE
   1898 > field moved into union
   1899 <CODE
   1900 CLASS="STRUCTFIELD"
   1901 >m</CODE
   1902 >, and a new
   1903 <CODE
   1904 CLASS="STRUCTFIELD"
   1905 >memory</CODE
   1906 > field of type enum&nbsp;<A
   1907 HREF="x5953.htm#V4L2-MEMORY"
   1908 >v4l2_memory</A
   1909 > was
   1910 added to distinguish between I/O methods. See <A
   1911 HREF="c5742.htm"
   1912 >Chapter 3</A
   1913 >
   1914 for details.</P
   1915 ><P
   1916 >The <CODE
   1917 CLASS="CONSTANT"
   1918 >V4L2_BUF_REQ_CONTIG</CODE
   1919 >
   1920 flag was used by the V4L compatibility layer, after changes to this
   1921 code it was no longer needed. The
   1922 <CODE
   1923 CLASS="CONSTANT"
   1924 >V4L2_BUF_ATTR_DEVICEMEM</CODE
   1925 > flag would indicate if
   1926 the buffer was indeed allocated in device memory rather than DMA-able
   1927 system memory. It was barely useful and so was removed.</P
   1928 ></LI
   1929 ><LI
   1930 ><P
   1931 >In struct&nbsp;<A
   1932 HREF="r10595.htm#V4L2-FRAMEBUFFER"
   1933 >v4l2_framebuffer</A
   1934 > the
   1935 <CODE
   1936 CLASS="STRUCTFIELD"
   1937 >base[3]</CODE
   1938 > array anticipating double- and
   1939 triple-buffering in off-screen video memory, however without defining
   1940 a synchronization mechanism, was replaced by a single pointer. The
   1941 <CODE
   1942 CLASS="CONSTANT"
   1943 >V4L2_FBUF_CAP_SCALEUP</CODE
   1944 > and
   1945 <CODE
   1946 CLASS="CONSTANT"
   1947 >V4L2_FBUF_CAP_SCALEDOWN</CODE
   1948 > flags were removed.
   1949 Applications can determine this capability more accurately using the
   1950 new cropping and scaling interface. The
   1951 <CODE
   1952 CLASS="CONSTANT"
   1953 >V4L2_FBUF_CAP_CLIPPING</CODE
   1954 > flag was replaced by
   1955 <CODE
   1956 CLASS="CONSTANT"
   1957 >V4L2_FBUF_CAP_LIST_CLIPPING</CODE
   1958 > and
   1959 <CODE
   1960 CLASS="CONSTANT"
   1961 >V4L2_FBUF_CAP_BITMAP_CLIPPING</CODE
   1962 >.</P
   1963 ></LI
   1964 ><LI
   1965 ><P
   1966 >In struct&nbsp;<A
   1967 HREF="x6570.htm#V4L2-CLIP"
   1968 >v4l2_clip</A
   1969 > the <CODE
   1970 CLASS="STRUCTFIELD"
   1971 >x</CODE
   1972 >,
   1973 <CODE
   1974 CLASS="STRUCTFIELD"
   1975 >y</CODE
   1976 >, <CODE
   1977 CLASS="STRUCTFIELD"
   1978 >width</CODE
   1979 > and
   1980 <CODE
   1981 CLASS="STRUCTFIELD"
   1982 >height</CODE
   1983 > field moved into a
   1984 <CODE
   1985 CLASS="STRUCTFIELD"
   1986 >c</CODE
   1987 > substructure of type struct&nbsp;<A
   1988 HREF="x6570.htm#V4L2-RECT"
   1989 >v4l2_rect</A
   1990 >. The
   1991 <CODE
   1992 CLASS="STRUCTFIELD"
   1993 >x</CODE
   1994 > and <CODE
   1995 CLASS="STRUCTFIELD"
   1996 >y</CODE
   1997 > fields
   1998 were renamed to <CODE
   1999 CLASS="STRUCTFIELD"
   2000 >left</CODE
   2001 > and
   2002 <CODE
   2003 CLASS="STRUCTFIELD"
   2004 >top</CODE
   2005 >, i.&nbsp;e. offsets to a context dependent
   2006 origin.</P
   2007 ></LI
   2008 ><LI
   2009 ><P
   2010 >In struct&nbsp;<A
   2011 HREF="x6570.htm#V4L2-WINDOW"
   2012 >v4l2_window</A
   2013 > the <CODE
   2014 CLASS="STRUCTFIELD"
   2015 >x</CODE
   2016 >,
   2017 <CODE
   2018 CLASS="STRUCTFIELD"
   2019 >y</CODE
   2020 >, <CODE
   2021 CLASS="STRUCTFIELD"
   2022 >width</CODE
   2023 > and
   2024 <CODE
   2025 CLASS="STRUCTFIELD"
   2026 >height</CODE
   2027 > field moved into a
   2028 <CODE
   2029 CLASS="STRUCTFIELD"
   2030 >w</CODE
   2031 > substructure as above. A
   2032 <CODE
   2033 CLASS="STRUCTFIELD"
   2034 >field</CODE
   2035 > field of type %v4l2-field; was added
   2036 to distinguish between field and frame (interlaced) overlay.</P
   2037 ></LI
   2038 ><LI
   2039 ><P
   2040 >The digital zoom interface, including struct
   2041 <CODE
   2042 CLASS="STRUCTNAME"
   2043 >v4l2_zoomcap</CODE
   2044 >, struct
   2045 <CODE
   2046 CLASS="STRUCTNAME"
   2047 >v4l2_zoom</CODE
   2048 >,
   2049 <CODE
   2050 CLASS="CONSTANT"
   2051 >V4L2_ZOOM_NONCAP</CODE
   2052 > and
   2053 <CODE
   2054 CLASS="CONSTANT"
   2055 >V4L2_ZOOM_WHILESTREAMING</CODE
   2056 > was replaced by a new
   2057 cropping and scaling interface. The previously unused struct
   2058 <CODE
   2059 CLASS="STRUCTNAME"
   2060 >v4l2_cropcap</CODE
   2061 > and
   2062 <CODE
   2063 CLASS="STRUCTNAME"
   2064 >v4l2_crop</CODE
   2065 > where redefined for this purpose.
   2066 See <A
   2067 HREF="x1904.htm"
   2068 >Section 1.11</A
   2069 > for details.</P
   2070 ></LI
   2071 ><LI
   2072 ><P
   2073 >In struct&nbsp;<A
   2074 HREF="x7013.htm#V4L2-VBI-FORMAT"
   2075 >v4l2_vbi_format</A
   2076 > the
   2077 <CODE
   2078 CLASS="STRUCTFIELD"
   2079 >SAMPLE_FORMAT</CODE
   2080 > field now contains a
   2081 four-character-code as used to identify video image formats and
   2082 <CODE
   2083 CLASS="CONSTANT"
   2084 >V4L2_PIX_FMT_GREY</CODE
   2085 > replaces the
   2086 <CODE
   2087 CLASS="CONSTANT"
   2088 >V4L2_VBI_SF_UBYTE</CODE
   2089 > define. The
   2090 <CODE
   2091 CLASS="STRUCTFIELD"
   2092 >reserved</CODE
   2093 > field was extended.</P
   2094 ></LI
   2095 ><LI
   2096 ><P
   2097 >In struct&nbsp;<A
   2098 HREF="r11680.htm#V4L2-CAPTUREPARM"
   2099 >v4l2_captureparm</A
   2100 > the type of the
   2101 <CODE
   2102 CLASS="STRUCTFIELD"
   2103 >timeperframe</CODE
   2104 > field changed from unsigned
   2105 long to struct&nbsp;<A
   2106 HREF="r9288.htm#V4L2-FRACT"
   2107 >v4l2_fract</A
   2108 >. This allows the accurate expression of multiples
   2109 of the NTSC-M frame rate 30000 / 1001. A new field
   2110 <CODE
   2111 CLASS="STRUCTFIELD"
   2112 >readbuffers</CODE
   2113 > was added to control the driver
   2114 behaviour in read I/O mode.</P
   2115 ><P
   2116 >Similar changes were made to struct&nbsp;<A
   2117 HREF="r11680.htm#V4L2-OUTPUTPARM"
   2118 >v4l2_outputparm</A
   2119 >.</P
   2120 ></LI
   2121 ><LI
   2122 ><P
   2123 >The struct <CODE
   2124 CLASS="STRUCTNAME"
   2125 >v4l2_performance</CODE
   2126 >
   2127 and <CODE
   2128 CLASS="CONSTANT"
   2129 >VIDIOC_G_PERF</CODE
   2130 > ioctl were dropped. Except when
   2131 using the <A
   2132 HREF="c5742.htm#RW"
   2133 >read/write I/O method</A
   2134 >, which is
   2135 limited anyway, this information is already available to
   2136 applications.</P
   2137 ></LI
   2138 ><LI
   2139 ><P
   2140 >The example transformation from RGB to YCbCr color
   2141 space in the old V4L2 documentation was inaccurate, this has been
   2142 corrected in <A
   2143 HREF="c2030.htm"
   2144 >Chapter 2</A
   2145 >.</P
   2146 ></LI
   2147 ></OL
   2148 ></DIV
   2149 ><DIV
   2150 CLASS="SECTION"
   2151 ><H2
   2152 CLASS="SECTION"
   2153 ><A
   2154 NAME="AEN16046"
   2155 >6.2.10. V4L2 2003-06-19</A
   2156 ></H2
   2157 ><P
   2158 ></P
   2159 ><OL
   2160 TYPE="1"
   2161 ><LI
   2162 ><P
   2163 >A new capability flag
   2164 <CODE
   2165 CLASS="CONSTANT"
   2166 >V4L2_CAP_RADIO</CODE
   2167 > was added for radio devices. Prior
   2168 to this change radio devices would identify solely by having exactly one
   2169 tuner whose type field reads <CODE
   2170 CLASS="CONSTANT"
   2171 >V4L2_TUNER_RADIO</CODE
   2172 >.</P
   2173 ></LI
   2174 ><LI
   2175 ><P
   2176 >An optional driver access priority mechanism was
   2177 added, see <A
   2178 HREF="x294.htm"
   2179 >Section 1.3</A
   2180 > for details.</P
   2181 ></LI
   2182 ><LI
   2183 ><P
   2184 >The audio input and output interface was found to be
   2185 incomplete.</P
   2186 ><P
   2187 >Previously the <A
   2188 HREF="r9539.htm"
   2189 ><CODE
   2190 CLASS="CONSTANT"
   2191 >VIDIOC_G_AUDIO</CODE
   2192 ></A
   2193 >
   2194 ioctl would enumerate the available audio inputs. An ioctl to
   2195 determine the current audio input, if more than one combines with the
   2196 current video input, did not exist. So
   2197 <CODE
   2198 CLASS="CONSTANT"
   2199 >VIDIOC_G_AUDIO</CODE
   2200 > was renamed to
   2201 <CODE
   2202 CLASS="CONSTANT"
   2203 >VIDIOC_G_AUDIO_OLD</CODE
   2204 >, this ioctl will be removed in
   2205 the future. The <A
   2206 HREF="r8242.htm"
   2207 ><CODE
   2208 CLASS="CONSTANT"
   2209 >VIDIOC_ENUMAUDIO</CODE
   2210 ></A
   2211 > ioctl was added to enumerate
   2212 audio inputs, while <A
   2213 HREF="r9539.htm"
   2214 ><CODE
   2215 CLASS="CONSTANT"
   2216 >VIDIOC_G_AUDIO</CODE
   2217 ></A
   2218 > now reports the current audio
   2219 input.</P
   2220 ><P
   2221 >The same changes were made to <A
   2222 HREF="r9688.htm"
   2223 ><CODE
   2224 CLASS="CONSTANT"
   2225 >VIDIOC_G_AUDOUT</CODE
   2226 ></A
   2227 > and
   2228 <A
   2229 HREF="r8304.htm"
   2230 ><CODE
   2231 CLASS="CONSTANT"
   2232 >VIDIOC_ENUMAUDOUT</CODE
   2233 ></A
   2234 >.</P
   2235 ><P
   2236 >Until further the "videodev" module will automatically
   2237 translate between the old and new ioctls, but drivers and applications
   2238 must be updated to successfully compile again.</P
   2239 ></LI
   2240 ><LI
   2241 ><P
   2242 >The <A
   2243 HREF="r12816.htm"
   2244 ><CODE
   2245 CLASS="CONSTANT"
   2246 >VIDIOC_OVERLAY</CODE
   2247 ></A
   2248 > ioctl was incorrectly defined with
   2249 write-read parameter. It was changed to write-only, while the write-read
   2250 version was renamed to <CODE
   2251 CLASS="CONSTANT"
   2252 >VIDIOC_OVERLAY_OLD</CODE
   2253 >. The old
   2254 ioctl will be removed in the future. Until further the "videodev"
   2255 kernel module will automatically translate to the new version, so drivers
   2256 must be recompiled, but not applications.</P
   2257 ></LI
   2258 ><LI
   2259 ><P
   2260 ><A
   2261 HREF="x6570.htm"
   2262 >Section 4.2</A
   2263 > incorrectly stated that
   2264 clipping rectangles define regions where the video can be seen.
   2265 Correct is that clipping rectangles define regions where
   2266 <SPAN
   2267 CLASS="emphasis"
   2268 ><I
   2269 CLASS="EMPHASIS"
   2270 >no</I
   2271 ></SPAN
   2272 > video shall be displayed and so the graphics
   2273 surface can be seen.</P
   2274 ></LI
   2275 ><LI
   2276 ><P
   2277 >The <A
   2278 HREF="r11680.htm"
   2279 ><CODE
   2280 CLASS="CONSTANT"
   2281 >VIDIOC_S_PARM</CODE
   2282 ></A
   2283 > and <A
   2284 HREF="r10104.htm"
   2285 ><CODE
   2286 CLASS="CONSTANT"
   2287 >VIDIOC_S_CTRL</CODE
   2288 ></A
   2289 > ioctls were
   2290 defined with write-only parameter, inconsistent with other ioctls
   2291 modifying their argument. They were changed to write-read, while a
   2292 <CODE
   2293 CLASS="CONSTANT"
   2294 >_OLD</CODE
   2295 > suffix was added to the write-only versions.
   2296 The old ioctls will be removed in the future. Drivers and
   2297 applications assuming a constant parameter need an update.</P
   2298 ></LI
   2299 ></OL
   2300 ></DIV
   2301 ><DIV
   2302 CLASS="SECTION"
   2303 ><H2
   2304 CLASS="SECTION"
   2305 ><A
   2306 NAME="AEN16089"
   2307 >6.2.11. V4L2 2003-11-05</A
   2308 ></H2
   2309 ><P
   2310 ></P
   2311 ><OL
   2312 TYPE="1"
   2313 ><LI
   2314 ><P
   2315 >In <A
   2316 HREF="x2490.htm"
   2317 >Section 2.4</A
   2318 > the following pixel
   2319 formats were incorrectly transferred from Bill Dirks' V4L2
   2320 specification. Descriptions below refer to bytes in memory, in
   2321 ascending address order.<DIV
   2322 CLASS="INFORMALTABLE"
   2323 ><P
   2324 ></P
   2325 ><A
   2326 NAME="AEN16095"
   2327 ></A
   2328 ><TABLE
   2329 BORDER="1"
   2330 CLASS="CALSTABLE"
   2331 ><COL><COL><COL><THEAD
   2332 ><TR
   2333 ><TH
   2334 >Symbol</TH
   2335 ><TH
   2336 >In this document prior to revision
   2337 0.5</TH
   2338 ><TH
   2339 >Corrected</TH
   2340 ></TR
   2341 ></THEAD
   2342 ><TBODY
   2343 VALIGN="TOP"
   2344 ><TR
   2345 ><TD
   2346 ><CODE
   2347 CLASS="CONSTANT"
   2348 >V4L2_PIX_FMT_RGB24</CODE
   2349 ></TD
   2350 ><TD
   2351 >B, G, R</TD
   2352 ><TD
   2353 >R, G, B</TD
   2354 ></TR
   2355 ><TR
   2356 ><TD
   2357 ><CODE
   2358 CLASS="CONSTANT"
   2359 >V4L2_PIX_FMT_BGR24</CODE
   2360 ></TD
   2361 ><TD
   2362 >R, G, B</TD
   2363 ><TD
   2364 >B, G, R</TD
   2365 ></TR
   2366 ><TR
   2367 ><TD
   2368 ><CODE
   2369 CLASS="CONSTANT"
   2370 >V4L2_PIX_FMT_RGB32</CODE
   2371 ></TD
   2372 ><TD
   2373 >B, G, R, X</TD
   2374 ><TD
   2375 >R, G, B, X</TD
   2376 ></TR
   2377 ><TR
   2378 ><TD
   2379 ><CODE
   2380 CLASS="CONSTANT"
   2381 >V4L2_PIX_FMT_BGR32</CODE
   2382 ></TD
   2383 ><TD
   2384 >R, G, B, X</TD
   2385 ><TD
   2386 >B, G, R, X</TD
   2387 ></TR
   2388 ></TBODY
   2389 ></TABLE
   2390 ><P
   2391 ></P
   2392 ></DIV
   2393 > The
   2394 <CODE
   2395 CLASS="CONSTANT"
   2396 >V4L2_PIX_FMT_BGR24</CODE
   2397 > example was always
   2398 correct.</P
   2399 ><P
   2400 >In <A
   2401 HREF="c14595.htm#V4L-IMAGE-PROPERTIES"
   2402 >Section 6.1.5</A
   2403 > the mapping
   2404 of the V4L <CODE
   2405 CLASS="CONSTANT"
   2406 >VIDEO_PALETTE_RGB24</CODE
   2407 > and
   2408 <CODE
   2409 CLASS="CONSTANT"
   2410 >VIDEO_PALETTE_RGB32</CODE
   2411 > formats to V4L2 pixel formats
   2412 was accordingly corrected.</P
   2413 ></LI
   2414 ><LI
   2415 ><P
   2416 >Unrelated to the fixes above, drivers may still
   2417 interpret some V4L2 RGB pixel formats differently. These issues have
   2418 yet to be addressed, for details see <A
   2419 HREF="x2490.htm"
   2420 >Section 2.4</A
   2421 >.</P
   2422 ></LI
   2423 ></OL
   2424 ></DIV
   2425 ><DIV
   2426 CLASS="SECTION"
   2427 ><H2
   2428 CLASS="SECTION"
   2429 ><A
   2430 NAME="AEN16131"
   2431 >6.2.12. V4L2 in Linux 2.6.6, 2004-05-09</A
   2432 ></H2
   2433 ><P
   2434 ></P
   2435 ><OL
   2436 TYPE="1"
   2437 ><LI
   2438 ><P
   2439 >The <A
   2440 HREF="r7771.htm"
   2441 ><CODE
   2442 CLASS="CONSTANT"
   2443 >VIDIOC_CROPCAP</CODE
   2444 ></A
   2445 > ioctl was incorrectly defined
   2446 with read-only parameter. It is now defined as write-read ioctl, while
   2447 the read-only version was renamed to
   2448 <CODE
   2449 CLASS="CONSTANT"
   2450 >VIDIOC_CROPCAP_OLD</CODE
   2451 >. The old ioctl will be removed
   2452 in the future.</P
   2453 ></LI
   2454 ></OL
   2455 ></DIV
   2456 ><DIV
   2457 CLASS="SECTION"
   2458 ><H2
   2459 CLASS="SECTION"
   2460 ><A
   2461 NAME="AEN16139"
   2462 >6.2.13. V4L2 in Linux 2.6.8</A
   2463 ></H2
   2464 ><P
   2465 ></P
   2466 ><OL
   2467 TYPE="1"
   2468 ><LI
   2469 ><P
   2470 >A new field <CODE
   2471 CLASS="STRUCTFIELD"
   2472 >input</CODE
   2473 > (former
   2474 <CODE
   2475 CLASS="STRUCTFIELD"
   2476 >reserved[0]</CODE
   2477 >) was added to the struct&nbsp;<A
   2478 HREF="x5953.htm#V4L2-BUFFER"
   2479 >v4l2_buffer</A
   2480 >
   2481 structure. Purpose of this field is to alternate between video inputs
   2482 (e.&nbsp;g. cameras) in step with the video capturing process. This function
   2483 must be enabled with the new <CODE
   2484 CLASS="CONSTANT"
   2485 >V4L2_BUF_FLAG_INPUT</CODE
   2486 >
   2487 flag. The <CODE
   2488 CLASS="STRUCTFIELD"
   2489 >flags</CODE
   2490 > field is no longer
   2491 read-only.</P
   2492 ></LI
   2493 ></OL
   2494 ></DIV
   2495 ><DIV
   2496 CLASS="SECTION"
   2497 ><H2
   2498 CLASS="SECTION"
   2499 ><A
   2500 NAME="AEN16149"
   2501 >6.2.14. V4L2 spec erratum 2004-08-01</A
   2502 ></H2
   2503 ><P
   2504 ></P
   2505 ><OL
   2506 TYPE="1"
   2507 ><LI
   2508 ><P
   2509 >The return value of the
   2510 <A
   2511 HREF="r14090.htm"
   2512 >V4L2 open()(2)</A
   2513 > function was incorrectly documented.</P
   2514 ></LI
   2515 ><LI
   2516 ><P
   2517 >Audio output ioctls end in -AUDOUT, not -AUDIOOUT.</P
   2518 ></LI
   2519 ><LI
   2520 ><P
   2521 >In the Current Audio Input example the
   2522 <CODE
   2523 CLASS="CONSTANT"
   2524 >VIDIOC_G_AUDIO</CODE
   2525 > ioctl took the wrong
   2526 argument.</P
   2527 ></LI
   2528 ><LI
   2529 ><P
   2530 >The documentation of the <A
   2531 HREF="r12878.htm"
   2532 ><CODE
   2533 CLASS="CONSTANT"
   2534 >VIDIOC_QBUF</CODE
   2535 ></A
   2536 > and
   2537 <A
   2538 HREF="r12878.htm"
   2539 ><CODE
   2540 CLASS="CONSTANT"
   2541 >VIDIOC_DQBUF</CODE
   2542 ></A
   2543 > ioctls did not mention the struct&nbsp;<A
   2544 HREF="x5953.htm#V4L2-BUFFER"
   2545 >v4l2_buffer</A
   2546 >
   2547 <CODE
   2548 CLASS="STRUCTFIELD"
   2549 >memory</CODE
   2550 > field. It was also missing from
   2551 examples. Also on the <CODE
   2552 CLASS="CONSTANT"
   2553 >VIDIOC_DQBUF</CODE
   2554 > page the <SPAN
   2555 CLASS="ERRORCODE"
   2556 >EIO</SPAN
   2557 > error code
   2558 was not documented.</P
   2559 ></LI
   2560 ></OL
   2561 ></DIV
   2562 ><DIV
   2563 CLASS="SECTION"
   2564 ><H2
   2565 CLASS="SECTION"
   2566 ><A
   2567 NAME="AEN16170"
   2568 >6.2.15. V4L2 in Linux 2.6.14</A
   2569 ></H2
   2570 ><P
   2571 ></P
   2572 ><OL
   2573 TYPE="1"
   2574 ><LI
   2575 ><P
   2576 >A new sliced VBI interface was added. It is documented
   2577 in <A
   2578 HREF="x7236.htm"
   2579 >Section 4.8</A
   2580 > and replaces the interface first
   2581 proposed in V4L2 specification 0.8.</P
   2582 ></LI
   2583 ></OL
   2584 ></DIV
   2585 ><DIV
   2586 CLASS="SECTION"
   2587 ><H2
   2588 CLASS="SECTION"
   2589 ><A
   2590 NAME="AEN16176"
   2591 >6.2.16. V4L2 in Linux 2.6.15</A
   2592 ></H2
   2593 ><P
   2594 ></P
   2595 ><OL
   2596 TYPE="1"
   2597 ><LI
   2598 ><P
   2599 >The <A
   2600 HREF="r12784.htm"
   2601 ><CODE
   2602 CLASS="CONSTANT"
   2603 >VIDIOC_LOG_STATUS</CODE
   2604 ></A
   2605 > ioctl was added.</P
   2606 ></LI
   2607 ><LI
   2608 ><P
   2609 >New video standards
   2610 <CODE
   2611 CLASS="CONSTANT"
   2612 >V4L2_STD_NTSC_443</CODE
   2613 >,
   2614 <CODE
   2615 CLASS="CONSTANT"
   2616 >V4L2_STD_SECAM_LC</CODE
   2617 >,
   2618 <CODE
   2619 CLASS="CONSTANT"
   2620 >V4L2_STD_SECAM_DK</CODE
   2621 > (a set of SECAM D, K and K1),
   2622 and <CODE
   2623 CLASS="CONSTANT"
   2624 >V4L2_STD_ATSC</CODE
   2625 > (a set of
   2626 <CODE
   2627 CLASS="CONSTANT"
   2628 >V4L2_STD_ATSC_8_VSB</CODE
   2629 > and
   2630 <CODE
   2631 CLASS="CONSTANT"
   2632 >V4L2_STD_ATSC_16_VSB</CODE
   2633 >) were defined. Note the
   2634 <CODE
   2635 CLASS="CONSTANT"
   2636 >V4L2_STD_525_60</CODE
   2637 > set now includes
   2638 <CODE
   2639 CLASS="CONSTANT"
   2640 >V4L2_STD_NTSC_443</CODE
   2641 >. See also <A
   2642 HREF="r9288.htm#V4L2-STD-ID"
   2643 >Table 3</A
   2644 >.</P
   2645 ></LI
   2646 ><LI
   2647 ><P
   2648 >The <CODE
   2649 CLASS="CONSTANT"
   2650 >VIDIOC_G_COMP</CODE
   2651 > and
   2652 <CODE
   2653 CLASS="CONSTANT"
   2654 >VIDIOC_S_COMP</CODE
   2655 > ioctl were renamed to
   2656 <CODE
   2657 CLASS="CONSTANT"
   2658 >VIDIOC_G_MPEGCOMP</CODE
   2659 > and
   2660 <CODE
   2661 CLASS="CONSTANT"
   2662 >VIDIOC_S_MPEGCOMP</CODE
   2663 > respectively. Their argument
   2664 was replaced by a struct
   2665 <CODE
   2666 CLASS="STRUCTNAME"
   2667 >v4l2_mpeg_compression</CODE
   2668 > pointer. (The
   2669 <CODE
   2670 CLASS="CONSTANT"
   2671 >VIDIOC_G_MPEGCOMP</CODE
   2672 > and
   2673 <CODE
   2674 CLASS="CONSTANT"
   2675 >VIDIOC_S_MPEGCOMP</CODE
   2676 > ioctls where removed in Linux
   2677 2.6.25.)</P
   2678 ></LI
   2679 ></OL
   2680 ></DIV
   2681 ><DIV
   2682 CLASS="SECTION"
   2683 ><H2
   2684 CLASS="SECTION"
   2685 ><A
   2686 NAME="AEN16203"
   2687 >6.2.17. V4L2 spec erratum 2005-11-27</A
   2688 ></H2
   2689 ><P
   2690 >The capture example in <A
   2691 HREF="a16706.htm"
   2692 >Appendix B</A
   2693 >
   2694 called the <A
   2695 HREF="r9994.htm"
   2696 ><CODE
   2697 CLASS="CONSTANT"
   2698 >VIDIOC_S_CROP</CODE
   2699 ></A
   2700 > ioctl without checking if cropping is
   2701 supported. In the video standard selection example in
   2702 <A
   2703 HREF="x448.htm"
   2704 >Section 1.7</A
   2705 > the <A
   2706 HREF="r12265.htm"
   2707 ><CODE
   2708 CLASS="CONSTANT"
   2709 >VIDIOC_S_STD</CODE
   2710 ></A
   2711 > call used the wrong
   2712 argument type.</P
   2713 ></DIV
   2714 ><DIV
   2715 CLASS="SECTION"
   2716 ><H2
   2717 CLASS="SECTION"
   2718 ><A
   2719 NAME="AEN16212"
   2720 >6.2.18. V4L2 spec erratum 2006-01-10</A
   2721 ></H2
   2722 ><P
   2723 ></P
   2724 ><OL
   2725 TYPE="1"
   2726 ><LI
   2727 ><P
   2728 >The <CODE
   2729 CLASS="CONSTANT"
   2730 >V4L2_IN_ST_COLOR_KILL</CODE
   2731 > flag in
   2732 struct&nbsp;<A
   2733 HREF="r8936.htm#V4L2-INPUT"
   2734 >v4l2_input</A
   2735 > not only indicates if the color killer is enabled, but
   2736 also if it is active. (The color killer disables color decoding when
   2737 it detects no color in the video signal to improve the image
   2738 quality.)</P
   2739 ></LI
   2740 ><LI
   2741 ><P
   2742 ><A
   2743 HREF="r11680.htm"
   2744 ><CODE
   2745 CLASS="CONSTANT"
   2746 >VIDIOC_S_PARM</CODE
   2747 ></A
   2748 > is a write-read ioctl, not write-only as
   2749 stated on its reference page. The ioctl changed in 2003 as noted above.</P
   2750 ></LI
   2751 ></OL
   2752 ></DIV
   2753 ><DIV
   2754 CLASS="SECTION"
   2755 ><H2
   2756 CLASS="SECTION"
   2757 ><A
   2758 NAME="AEN16223"
   2759 >6.2.19. V4L2 spec erratum 2006-02-03</A
   2760 ></H2
   2761 ><P
   2762 ></P
   2763 ><OL
   2764 TYPE="1"
   2765 ><LI
   2766 ><P
   2767 >In struct&nbsp;<A
   2768 HREF="r11680.htm#V4L2-CAPTUREPARM"
   2769 >v4l2_captureparm</A
   2770 > and struct&nbsp;<A
   2771 HREF="r11680.htm#V4L2-OUTPUTPARM"
   2772 >v4l2_outputparm</A
   2773 > the
   2774 <CODE
   2775 CLASS="STRUCTFIELD"
   2776 >timeperframe</CODE
   2777 > field gives the time in
   2778 seconds, not microseconds.</P
   2779 ></LI
   2780 ></OL
   2781 ></DIV
   2782 ><DIV
   2783 CLASS="SECTION"
   2784 ><H2
   2785 CLASS="SECTION"
   2786 ><A
   2787 NAME="AEN16231"
   2788 >6.2.20. V4L2 spec erratum 2006-02-04</A
   2789 ></H2
   2790 ><P
   2791 ></P
   2792 ><OL
   2793 TYPE="1"
   2794 ><LI
   2795 ><P
   2796 >The <CODE
   2797 CLASS="STRUCTFIELD"
   2798 >clips</CODE
   2799 > field in
   2800 struct&nbsp;<A
   2801 HREF="x6570.htm#V4L2-WINDOW"
   2802 >v4l2_window</A
   2803 > must point to an array of struct&nbsp;<A
   2804 HREF="x6570.htm#V4L2-CLIP"
   2805 >v4l2_clip</A
   2806 >, not a linked
   2807 list, because drivers ignore the struct
   2808 <CODE
   2809 CLASS="STRUCTNAME"
   2810 >v4l2_clip</CODE
   2811 >.<CODE
   2812 CLASS="STRUCTFIELD"
   2813 >next</CODE
   2814 >
   2815 pointer.</P
   2816 ></LI
   2817 ></OL
   2818 ></DIV
   2819 ><DIV
   2820 CLASS="SECTION"
   2821 ><H2
   2822 CLASS="SECTION"
   2823 ><A
   2824 NAME="AEN16241"
   2825 >6.2.21. V4L2 in Linux 2.6.17</A
   2826 ></H2
   2827 ><P
   2828 ></P
   2829 ><OL
   2830 TYPE="1"
   2831 ><LI
   2832 ><P
   2833 >New video standard macros were added:
   2834 <CODE
   2835 CLASS="CONSTANT"
   2836 >V4L2_STD_NTSC_M_KR</CODE
   2837 > (NTSC M South Korea), and the
   2838 sets <CODE
   2839 CLASS="CONSTANT"
   2840 >V4L2_STD_MN</CODE
   2841 >,
   2842 <CODE
   2843 CLASS="CONSTANT"
   2844 >V4L2_STD_B</CODE
   2845 >, <CODE
   2846 CLASS="CONSTANT"
   2847 >V4L2_STD_GH</CODE
   2848 > and
   2849 <CODE
   2850 CLASS="CONSTANT"
   2851 >V4L2_STD_DK</CODE
   2852 >. The
   2853 <CODE
   2854 CLASS="CONSTANT"
   2855 >V4L2_STD_NTSC</CODE
   2856 > and
   2857 <CODE
   2858 CLASS="CONSTANT"
   2859 >V4L2_STD_SECAM</CODE
   2860 > sets now include
   2861 <CODE
   2862 CLASS="CONSTANT"
   2863 >V4L2_STD_NTSC_M_KR</CODE
   2864 > and
   2865 <CODE
   2866 CLASS="CONSTANT"
   2867 >V4L2_STD_SECAM_LC</CODE
   2868 > respectively.</P
   2869 ></LI
   2870 ><LI
   2871 ><P
   2872 >A new <CODE
   2873 CLASS="CONSTANT"
   2874 >V4L2_TUNER_MODE_LANG1_LANG2</CODE
   2875 >
   2876 was defined to record both languages of a bilingual program. The
   2877 use of <CODE
   2878 CLASS="CONSTANT"
   2879 >V4L2_TUNER_MODE_STEREO</CODE
   2880 > for this purpose
   2881 is deprecated now. See the <A
   2882 HREF="r12342.htm"
   2883 ><CODE
   2884 CLASS="CONSTANT"
   2885 >VIDIOC_G_TUNER</CODE
   2886 ></A
   2887 > section for
   2888 details.</P
   2889 ></LI
   2890 ></OL
   2891 ></DIV
   2892 ><DIV
   2893 CLASS="SECTION"
   2894 ><H2
   2895 CLASS="SECTION"
   2896 ><A
   2897 NAME="AEN16261"
   2898 >6.2.22. V4L2 spec erratum 2006-09-23 (Draft 0.15)</A
   2899 ></H2
   2900 ><P
   2901 ></P
   2902 ><OL
   2903 TYPE="1"
   2904 ><LI
   2905 ><P
   2906 >In various places
   2907 <CODE
   2908 CLASS="CONSTANT"
   2909 >V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</CODE
   2910 > and
   2911 <CODE
   2912 CLASS="CONSTANT"
   2913 >V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</CODE
   2914 > of the sliced VBI
   2915 interface were not mentioned along with other buffer types.</P
   2916 ></LI
   2917 ><LI
   2918 ><P
   2919 >In <A
   2920 HREF="r9539.htm"
   2921 >ioctl VIDIOC_G_AUDIO, VIDIOC_S_AUDIO(2)</A
   2922 > it was clarified
   2923 that the struct&nbsp;<A
   2924 HREF="r9539.htm#V4L2-AUDIO"
   2925 >v4l2_audio</A
   2926 > <CODE
   2927 CLASS="STRUCTFIELD"
   2928 >mode</CODE
   2929 > field is a flags
   2930 field.</P
   2931 ></LI
   2932 ><LI
   2933 ><P
   2934 ><A
   2935 HREF="r13105.htm"
   2936 >ioctl VIDIOC_QUERYCAP(2)</A
   2937 > did not mention the
   2938 sliced VBI and radio capability flags.</P
   2939 ></LI
   2940 ><LI
   2941 ><P
   2942 >In <A
   2943 HREF="r11094.htm"
   2944 >ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY(2)</A
   2945 > it was
   2946 clarified that applications must initialize the tuner
   2947 <CODE
   2948 CLASS="STRUCTFIELD"
   2949 >type</CODE
   2950 > field of struct&nbsp;<A
   2951 HREF="r11094.htm#V4L2-FREQUENCY"
   2952 >v4l2_frequency</A
   2953 > before
   2954 calling <A
   2955 HREF="r11094.htm"
   2956 ><CODE
   2957 CLASS="CONSTANT"
   2958 >VIDIOC_S_FREQUENCY</CODE
   2959 ></A
   2960 >.</P
   2961 ></LI
   2962 ><LI
   2963 ><P
   2964 >The <CODE
   2965 CLASS="STRUCTFIELD"
   2966 >reserved</CODE
   2967 > array
   2968 in struct&nbsp;<A
   2969 HREF="r13696.htm#V4L2-REQUESTBUFFERS"
   2970 >v4l2_requestbuffers</A
   2971 > has 2 elements, not 32.</P
   2972 ></LI
   2973 ><LI
   2974 ><P
   2975 >In <A
   2976 HREF="x6831.htm"
   2977 >Section 4.3</A
   2978 > and <A
   2979 HREF="x7013.htm"
   2980 >Section 4.7</A
   2981 > the device file names
   2982 <TT
   2983 CLASS="FILENAME"
   2984 >/dev/vout</TT
   2985 > which never caught on were replaced
   2986 by <TT
   2987 CLASS="FILENAME"
   2988 >/dev/video</TT
   2989 >.</P
   2990 ></LI
   2991 ><LI
   2992 ><P
   2993 >With Linux 2.6.15 the possible range for VBI device minor
   2994 numbers was extended from 224-239 to 224-255. Accordingly device file names
   2995 <TT
   2996 CLASS="FILENAME"
   2997 >/dev/vbi0</TT
   2998 > to <TT
   2999 CLASS="FILENAME"
   3000 >/dev/vbi31</TT
   3001 > are
   3002 possible now.</P
   3003 ></LI
   3004 ></OL
   3005 ></DIV
   3006 ><DIV
   3007 CLASS="SECTION"
   3008 ><H2
   3009 CLASS="SECTION"
   3010 ><A
   3011 NAME="AEN16297"
   3012 >6.2.23. V4L2 in Linux 2.6.18</A
   3013 ></H2
   3014 ><P
   3015 ></P
   3016 ><OL
   3017 TYPE="1"
   3018 ><LI
   3019 ><P
   3020 >New ioctls <A
   3021 HREF="r10386.htm"
   3022 ><CODE
   3023 CLASS="CONSTANT"
   3024 >VIDIOC_G_EXT_CTRLS</CODE
   3025 ></A
   3026 >, <A
   3027 HREF="r10386.htm"
   3028 ><CODE
   3029 CLASS="CONSTANT"
   3030 >VIDIOC_S_EXT_CTRLS</CODE
   3031 ></A
   3032 >
   3033 and <A
   3034 HREF="r10386.htm"
   3035 ><CODE
   3036 CLASS="CONSTANT"
   3037 >VIDIOC_TRY_EXT_CTRLS</CODE
   3038 ></A
   3039 > were added, a flag to skip unsupported
   3040 controls with <A
   3041 HREF="r13317.htm"
   3042 ><CODE
   3043 CLASS="CONSTANT"
   3044 >VIDIOC_QUERYCTRL</CODE
   3045 ></A
   3046 >, new control types
   3047 <CODE
   3048 CLASS="CONSTANT"
   3049 >V4L2_CTRL_TYPE_INTEGER64</CODE
   3050 > and
   3051 <CODE
   3052 CLASS="CONSTANT"
   3053 >V4L2_CTRL_TYPE_CTRL_CLASS</CODE
   3054 > (<A
   3055 HREF="r13317.htm#V4L2-CTRL-TYPE"
   3056 >Table 3</A
   3057 >), and new control flags
   3058 <CODE
   3059 CLASS="CONSTANT"
   3060 >V4L2_CTRL_FLAG_READ_ONLY</CODE
   3061 >,
   3062 <CODE
   3063 CLASS="CONSTANT"
   3064 >V4L2_CTRL_FLAG_UPDATE</CODE
   3065 >,
   3066 <CODE
   3067 CLASS="CONSTANT"
   3068 >V4L2_CTRL_FLAG_INACTIVE</CODE
   3069 > and
   3070 <CODE
   3071 CLASS="CONSTANT"
   3072 >V4L2_CTRL_FLAG_SLIDER</CODE
   3073 > (<A
   3074 HREF="r13317.htm#CONTROL-FLAGS"
   3075 >Table 4</A
   3076 >). See <A
   3077 HREF="x802.htm"
   3078 >Section 1.9</A
   3079 > for details.</P
   3080 ></LI
   3081 ></OL
   3082 ></DIV
   3083 ><DIV
   3084 CLASS="SECTION"
   3085 ><H2
   3086 CLASS="SECTION"
   3087 ><A
   3088 NAME="AEN16319"
   3089 >6.2.24. V4L2 in Linux 2.6.19</A
   3090 ></H2
   3091 ><P
   3092 ></P
   3093 ><OL
   3094 TYPE="1"
   3095 ><LI
   3096 ><P
   3097 >In struct&nbsp;<A
   3098 HREF="r12051.htm#V4L2-SLICED-VBI-CAP"
   3099 >v4l2_sliced_vbi_cap</A
   3100 > a buffer type field was added
   3101 replacing a reserved field. Note on architectures where the size of
   3102 enum types differs from int types the size of the structure changed.
   3103 The <A
   3104 HREF="r12051.htm"
   3105 ><CODE
   3106 CLASS="CONSTANT"
   3107 >VIDIOC_G_SLICED_VBI_CAP</CODE
   3108 ></A
   3109 > ioctl was redefined from being read-only
   3110 to write-read. Applications must initialize the type field and clear
   3111 the reserved fields now. These changes may <SPAN
   3112 CLASS="emphasis"
   3113 ><I
   3114 CLASS="EMPHASIS"
   3115 >break the
   3116 compatibility</I
   3117 ></SPAN
   3118 > with older drivers and applications.</P
   3119 ></LI
   3120 ><LI
   3121 ><P
   3122 >The ioctls <A
   3123 HREF="r8494.htm"
   3124 ><CODE
   3125 CLASS="CONSTANT"
   3126 >VIDIOC_ENUM_FRAMESIZES</CODE
   3127 ></A
   3128 > and
   3129 <A
   3130 HREF="r8724.htm"
   3131 ><CODE
   3132 CLASS="CONSTANT"
   3133 >VIDIOC_ENUM_FRAMEINTERVALS</CODE
   3134 ></A
   3135 > were added.</P
   3136 ></LI
   3137 ><LI
   3138 ><P
   3139 >A new pixel format <CODE
   3140 CLASS="CONSTANT"
   3141 >V4L2_PIX_FMT_RGB444</CODE
   3142 > (<A
   3143 HREF="r2492.htm#RGB-FORMATS"
   3144 >Table 2-1</A
   3145 >) was added.</P
   3146 ></LI
   3147 ></OL
   3148 ></DIV
   3149 ><DIV
   3150 CLASS="SECTION"
   3151 ><H2
   3152 CLASS="SECTION"
   3153 ><A
   3154 NAME="AEN16338"
   3155 >6.2.25. V4L2 spec erratum 2006-10-12 (Draft 0.17)</A
   3156 ></H2
   3157 ><P
   3158 ></P
   3159 ><OL
   3160 TYPE="1"
   3161 ><LI
   3162 ><P
   3163 ><CODE
   3164 CLASS="CONSTANT"
   3165 >V4L2_PIX_FMT_HM12</CODE
   3166 > (<A
   3167 HREF="x5665.htm#RESERVED-FORMATS"
   3168 >Table 2-8</A
   3169 >) is a YUV 4:2:0, not 4:2:2 format.</P
   3170 ></LI
   3171 ></OL
   3172 ></DIV
   3173 ><DIV
   3174 CLASS="SECTION"
   3175 ><H2
   3176 CLASS="SECTION"
   3177 ><A
   3178 NAME="AEN16345"
   3179 >6.2.26. V4L2 in Linux 2.6.21</A
   3180 ></H2
   3181 ><P
   3182 ></P
   3183 ><OL
   3184 TYPE="1"
   3185 ><LI
   3186 ><P
   3187 >The <TT
   3188 CLASS="FILENAME"
   3189 >videodev2.h</TT
   3190 > header file is
   3191 now dual licensed under GNU General Public License version two or
   3192 later, and under a 3-clause BSD-style license.</P
   3193 ></LI
   3194 ></OL
   3195 ></DIV
   3196 ><DIV
   3197 CLASS="SECTION"
   3198 ><H2
   3199 CLASS="SECTION"
   3200 ><A
   3201 NAME="AEN16351"
   3202 >6.2.27. V4L2 in Linux 2.6.22</A
   3203 ></H2
   3204 ><P
   3205 ></P
   3206 ><OL
   3207 TYPE="1"
   3208 ><LI
   3209 ><P
   3210 >Two new field orders
   3211           <CODE
   3212 CLASS="CONSTANT"
   3213 >V4L2_FIELD_INTERLACED_TB</CODE
   3214 > and
   3215           <CODE
   3216 CLASS="CONSTANT"
   3217 >V4L2_FIELD_INTERLACED_BT</CODE
   3218 > were
   3219           added. See <A
   3220 HREF="x6386.htm#V4L2-FIELD"
   3221 >Table 3-8</A
   3222 > for details.</P
   3223 ></LI
   3224 ><LI
   3225 ><P
   3226 >Three new clipping/blending methods with a global or
   3227 straight or inverted local alpha value were added to the video overlay
   3228 interface. See the description of the <A
   3229 HREF="r10595.htm"
   3230 ><CODE
   3231 CLASS="CONSTANT"
   3232 >VIDIOC_G_FBUF</CODE
   3233 ></A
   3234 > and
   3235 <A
   3236 HREF="r10595.htm"
   3237 ><CODE
   3238 CLASS="CONSTANT"
   3239 >VIDIOC_S_FBUF</CODE
   3240 ></A
   3241 > ioctls for details.</P
   3242 ><P
   3243 >A new <CODE
   3244 CLASS="STRUCTFIELD"
   3245 >global_alpha</CODE
   3246 > field
   3247 was added to <A
   3248 HREF="x6570.htm#V4L2-WINDOW"
   3249 ><CODE
   3250 CLASS="STRUCTNAME"
   3251 >v4l2_window</CODE
   3252 ></A
   3253 >,
   3254 extending the structure. This may <SPAN
   3255 CLASS="emphasis"
   3256 ><I
   3257 CLASS="EMPHASIS"
   3258 >break
   3259 compatibility</I
   3260 ></SPAN
   3261 > with applications using a struct
   3262 <CODE
   3263 CLASS="STRUCTNAME"
   3264 >v4l2_window</CODE
   3265 > directly. However the <A
   3266 HREF="r10944.htm"
   3267 >VIDIOC_G/S/TRY_FMT</A
   3268 > ioctls, which take a
   3269 pointer to a <A
   3270 HREF="r10944.htm#V4L2-FORMAT"
   3271 >v4l2_format</A
   3272 > parent
   3273 structure with padding bytes at the end, are not affected.</P
   3274 ></LI
   3275 ><LI
   3276 ><P
   3277 >The format of the <CODE
   3278 CLASS="STRUCTFIELD"
   3279 >chromakey</CODE
   3280 >
   3281 field in struct&nbsp;<A
   3282 HREF="x6570.htm#V4L2-WINDOW"
   3283 >v4l2_window</A
   3284 > changed from "host order RGB32" to a pixel
   3285 value in the same format as the framebuffer. This may <SPAN
   3286 CLASS="emphasis"
   3287 ><I
   3288 CLASS="EMPHASIS"
   3289 >break
   3290 compatibility</I
   3291 ></SPAN
   3292 > with existing applications. Drivers
   3293 supporting the "host order RGB32" format are not known.</P
   3294 ></LI
   3295 ></OL
   3296 ></DIV
   3297 ><DIV
   3298 CLASS="SECTION"
   3299 ><H2
   3300 CLASS="SECTION"
   3301 ><A
   3302 NAME="AEN16378"
   3303 >6.2.28. V4L2 in Linux 2.6.24</A
   3304 ></H2
   3305 ><P
   3306 ></P
   3307 ><OL
   3308 TYPE="1"
   3309 ><LI
   3310 ><P
   3311 >The pixel formats
   3312 <CODE
   3313 CLASS="CONSTANT"
   3314 >V4L2_PIX_FMT_PAL8</CODE
   3315 >,
   3316 <CODE
   3317 CLASS="CONSTANT"
   3318 >V4L2_PIX_FMT_YUV444</CODE
   3319 >,
   3320 <CODE
   3321 CLASS="CONSTANT"
   3322 >V4L2_PIX_FMT_YUV555</CODE
   3323 >,
   3324 <CODE
   3325 CLASS="CONSTANT"
   3326 >V4L2_PIX_FMT_YUV565</CODE
   3327 > and
   3328 <CODE
   3329 CLASS="CONSTANT"
   3330 >V4L2_PIX_FMT_YUV32</CODE
   3331 > were added.</P
   3332 ></LI
   3333 ></OL
   3334 ></DIV
   3335 ><DIV
   3336 CLASS="SECTION"
   3337 ><H2
   3338 CLASS="SECTION"
   3339 ><A
   3340 NAME="AEN16388"
   3341 >6.2.29. V4L2 in Linux 2.6.25</A
   3342 ></H2
   3343 ><P
   3344 ></P
   3345 ><OL
   3346 TYPE="1"
   3347 ><LI
   3348 ><P
   3349 >The pixel formats <A
   3350 HREF="r4246.htm"
   3351 ><CODE
   3352 CLASS="CONSTANT"
   3353 >V4L2_PIX_FMT_Y16</CODE
   3354 ></A
   3355 > and <A
   3356 HREF="r3796.htm"
   3357 ><CODE
   3358 CLASS="CONSTANT"
   3359 >V4L2_PIX_FMT_SBGGR16</CODE
   3360 ></A
   3361 > were added.</P
   3362 ></LI
   3363 ><LI
   3364 ><P
   3365 >New <A
   3366 HREF="x542.htm"
   3367 >controls</A
   3368 >
   3369 <CODE
   3370 CLASS="CONSTANT"
   3371 >V4L2_CID_POWER_LINE_FREQUENCY</CODE
   3372 >,
   3373 <CODE
   3374 CLASS="CONSTANT"
   3375 >V4L2_CID_HUE_AUTO</CODE
   3376 >,
   3377 <CODE
   3378 CLASS="CONSTANT"
   3379 >V4L2_CID_WHITE_BALANCE_TEMPERATURE</CODE
   3380 >,
   3381 <CODE
   3382 CLASS="CONSTANT"
   3383 >V4L2_CID_SHARPNESS</CODE
   3384 > and
   3385 <CODE
   3386 CLASS="CONSTANT"
   3387 >V4L2_CID_BACKLIGHT_COMPENSATION</CODE
   3388 > were added. The
   3389 controls <CODE
   3390 CLASS="CONSTANT"
   3391 >V4L2_CID_BLACK_LEVEL</CODE
   3392 >,
   3393 <CODE
   3394 CLASS="CONSTANT"
   3395 >V4L2_CID_WHITENESS</CODE
   3396 >,
   3397 <CODE
   3398 CLASS="CONSTANT"
   3399 >V4L2_CID_HCENTER</CODE
   3400 > and
   3401 <CODE
   3402 CLASS="CONSTANT"
   3403 >V4L2_CID_VCENTER</CODE
   3404 > were deprecated.</P
   3405 ></LI
   3406 ><LI
   3407 ><P
   3408 >A <A
   3409 HREF="x802.htm#CAMERA-CONTROLS"
   3410 >Camera controls
   3411 class</A
   3412 > was added, with the new controls
   3413 <CODE
   3414 CLASS="CONSTANT"
   3415 >V4L2_CID_EXPOSURE_AUTO</CODE
   3416 >,
   3417 <CODE
   3418 CLASS="CONSTANT"
   3419 >V4L2_CID_EXPOSURE_ABSOLUTE</CODE
   3420 >,
   3421 <CODE
   3422 CLASS="CONSTANT"
   3423 >V4L2_CID_EXPOSURE_AUTO_PRIORITY</CODE
   3424 >,
   3425 <CODE
   3426 CLASS="CONSTANT"
   3427 >V4L2_CID_PAN_RELATIVE</CODE
   3428 >,
   3429 <CODE
   3430 CLASS="CONSTANT"
   3431 >V4L2_CID_TILT_RELATIVE</CODE
   3432 >,
   3433 <CODE
   3434 CLASS="CONSTANT"
   3435 >V4L2_CID_PAN_RESET</CODE
   3436 >,
   3437 <CODE
   3438 CLASS="CONSTANT"
   3439 >V4L2_CID_TILT_RESET</CODE
   3440 >,
   3441 <CODE
   3442 CLASS="CONSTANT"
   3443 >V4L2_CID_PAN_ABSOLUTE</CODE
   3444 >,
   3445 <CODE
   3446 CLASS="CONSTANT"
   3447 >V4L2_CID_TILT_ABSOLUTE</CODE
   3448 >,
   3449 <CODE
   3450 CLASS="CONSTANT"
   3451 >V4L2_CID_FOCUS_ABSOLUTE</CODE
   3452 >,
   3453 <CODE
   3454 CLASS="CONSTANT"
   3455 >V4L2_CID_FOCUS_RELATIVE</CODE
   3456 > and
   3457 <CODE
   3458 CLASS="CONSTANT"
   3459 >V4L2_CID_FOCUS_AUTO</CODE
   3460 >.</P
   3461 ></LI
   3462 ><LI
   3463 ><P
   3464 >The <CODE
   3465 CLASS="CONSTANT"
   3466 >VIDIOC_G_MPEGCOMP</CODE
   3467 > and
   3468 <CODE
   3469 CLASS="CONSTANT"
   3470 >VIDIOC_S_MPEGCOMP</CODE
   3471 > ioctls, which were superseded
   3472 by the <A
   3473 HREF="x802.htm"
   3474 >extended controls</A
   3475 >
   3476 interface in Linux 2.6.18, where finally removed from the
   3477 <TT
   3478 CLASS="FILENAME"
   3479 >videodev2.h</TT
   3480 > header file.</P
   3481 ></LI
   3482 ></OL
   3483 ></DIV
   3484 ></DIV
   3485 ><DIV
   3486 CLASS="NAVFOOTER"
   3487 ><HR
   3488 ALIGN="LEFT"
   3489 WIDTH="100%"><TABLE
   3490 SUMMARY="Footer navigation table"
   3491 WIDTH="100%"
   3492 BORDER="0"
   3493 CELLPADDING="0"
   3494 CELLSPACING="0"
   3495 ><TR
   3496 ><TD
   3497 WIDTH="33%"
   3498 ALIGN="left"
   3499 VALIGN="top"
   3500 ><A
   3501 HREF="c14595.htm"
   3502 ACCESSKEY="P"
   3503 >Prev</A
   3504 ></TD
   3505 ><TD
   3506 WIDTH="34%"
   3507 ALIGN="center"
   3508 VALIGN="top"
   3509 ><A
   3510 HREF="book1.htm"
   3511 ACCESSKEY="H"
   3512 >Home</A
   3513 ></TD
   3514 ><TD
   3515 WIDTH="33%"
   3516 ALIGN="right"
   3517 VALIGN="top"
   3518 ><A
   3519 HREF="x16430.htm"
   3520 ACCESSKEY="N"
   3521 >Next</A
   3522 ></TD
   3523 ></TR
   3524 ><TR
   3525 ><TD
   3526 WIDTH="33%"
   3527 ALIGN="left"
   3528 VALIGN="top"
   3529 >Changes</TD
   3530 ><TD
   3531 WIDTH="34%"
   3532 ALIGN="center"
   3533 VALIGN="top"
   3534 ><A
   3535 HREF="c14595.htm"
   3536 ACCESSKEY="U"
   3537 >Up</A
   3538 ></TD
   3539 ><TD
   3540 WIDTH="33%"
   3541 ALIGN="right"
   3542 VALIGN="top"
   3543 >Relation of V4L2 to other Linux multimedia APIs</TD
   3544 ></TR
   3545 ></TABLE
   3546 ></DIV
   3547 ></BODY
   3548 ></HTML
   3549 >
   3550