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 <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 <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, &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 <A 425 HREF="c2030.htm#V4L2-PIX-FORMAT" 426 >v4l2_pix_format</A 427 >, 428 while struct <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 <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 <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 <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 <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 <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] > 0 and count[1] > 0" 782 has been relaxed to "(count[0] + count[1]) > 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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <A 1347 HREF="r8936.htm#V4L2-INPUT" 1348 >v4l2_input</A 1349 > and 1350 struct <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 <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 <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 <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 <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 <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 <A 1606 HREF="r8367.htm#V4L2-FMTDESC" 1607 >v4l2_fmtdesc</A 1608 > a enum <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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 <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. e. offsets to a context dependent 2006 origin.</P 2007 ></LI 2008 ><LI 2009 ><P 2010 >In struct <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 <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 <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 <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 <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 <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. 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 <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 <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 <A 2768 HREF="r11680.htm#V4L2-CAPTUREPARM" 2769 >v4l2_captureparm</A 2770 > and struct <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 <A 2801 HREF="x6570.htm#V4L2-WINDOW" 2802 >v4l2_window</A 2803 > must point to an array of struct <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 <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 <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 <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 <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 <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