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