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>User Controls</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="Common API Elements" 14HREF="c174.htm"><LINK 15REL="PREVIOUS" 16TITLE="Video Standards" 17HREF="x448.htm"><LINK 18REL="NEXT" 19TITLE="Extended Controls" 20HREF="x802.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="x448.htm" 49ACCESSKEY="P" 50>Prev</A 51></TD 52><TD 53WIDTH="80%" 54ALIGN="center" 55VALIGN="bottom" 56>Chapter 1. Common API Elements</TD 57><TD 58WIDTH="10%" 59ALIGN="right" 60VALIGN="bottom" 61><A 62HREF="x802.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="CONTROL" 77>1.8. User Controls</A 78></H1 79><P 80>Devices typically have a number of user-settable controls 81such as brightness, saturation and so on, which would be presented to 82the user on a graphical user interface. But, different devices 83will have different controls available, and furthermore, the range of 84possible values, and the default value will vary from device to 85device. The control ioctls provide the information and a mechanism to 86create a nice user interface for these controls that will work 87correctly with any device.</P 88><P 89>All controls are accessed using an ID value. V4L2 defines 90several IDs for specific purposes. Drivers can also implement their 91own custom controls using <CODE 92CLASS="CONSTANT" 93>V4L2_CID_PRIVATE_BASE</CODE 94> 95and higher values. The pre-defined control IDs have the prefix 96<CODE 97CLASS="CONSTANT" 98>V4L2_CID_</CODE 99>, and are listed in <A 100HREF="x542.htm#CONTROL-ID" 101>Table 1-1</A 102>. The ID is used when querying the attributes of 103a control, and when getting or setting the current value.</P 104><P 105>Generally applications should present controls to the user 106without assumptions about their purpose. Each control comes with a 107name string the user is supposed to understand. When the purpose is 108non-intuitive the driver writer should provide a user manual, a user 109interface plug-in or a driver specific panel application. Predefined 110IDs were introduced to change a few controls programmatically, for 111example to mute a device during a channel switch.</P 112><P 113>Drivers may enumerate different controls after switching 114the current video input or output, tuner or modulator, or audio input 115or output. Different in the sense of other bounds, another default and 116current value, step size or other menu items. A control with a certain 117<SPAN 118CLASS="emphasis" 119><I 120CLASS="EMPHASIS" 121>custom</I 122></SPAN 123> ID can also change name and 124type.<A 125NAME="AEN552" 126HREF="x542.htm#FTN.AEN552" 127><SPAN 128CLASS="footnote" 129>[1]</SPAN 130></A 131> Control values are stored globally, they do not 132change when switching except to stay within the reported bounds. They 133also do not change e. g. when the device is opened or closed, when the 134tuner radio frequency is changed or generally never without 135application request. Since V4L2 specifies no event mechanism, panel 136applications intended to cooperate with other panel applications (be 137they built into a larger application, as a TV viewer) may need to 138regularly poll control values to update their user 139interface.<A 140NAME="AEN555" 141HREF="x542.htm#FTN.AEN555" 142><SPAN 143CLASS="footnote" 144>[2]</SPAN 145></A 146></P 147><DIV 148CLASS="TABLE" 149><A 150NAME="CONTROL-ID" 151></A 152><P 153><B 154>Table 1-1. Control IDs</B 155></P 156><TABLE 157BORDER="0" 158FRAME="void" 159WIDTH="100%" 160CLASS="CALSTABLE" 161><COL 162WIDTH="38%" 163TITLE="C1"><COL 164WIDTH="12%" 165TITLE="C2"><COL 166WIDTH="50%" 167TITLE="C3"><THEAD 168><TR 169><TH 170>ID</TH 171><TH 172>Type</TH 173><TH 174>Description</TH 175></TR 176></THEAD 177><TBODY 178VALIGN="TOP" 179><TR 180><TD 181><CODE 182CLASS="CONSTANT" 183>V4L2_CID_BASE</CODE 184></TD 185><TD 186> </TD 187><TD 188>First predefined ID, equal to 189<CODE 190CLASS="CONSTANT" 191>V4L2_CID_BRIGHTNESS</CODE 192>.</TD 193></TR 194><TR 195><TD 196><CODE 197CLASS="CONSTANT" 198>V4L2_CID_USER_BASE</CODE 199></TD 200><TD 201> </TD 202><TD 203>Synonym of <CODE 204CLASS="CONSTANT" 205>V4L2_CID_BASE</CODE 206>.</TD 207></TR 208><TR 209><TD 210><CODE 211CLASS="CONSTANT" 212>V4L2_CID_BRIGHTNESS</CODE 213></TD 214><TD 215>integer</TD 216><TD 217>Picture brightness, or more precisely, the black 218level.</TD 219></TR 220><TR 221><TD 222><CODE 223CLASS="CONSTANT" 224>V4L2_CID_CONTRAST</CODE 225></TD 226><TD 227>integer</TD 228><TD 229>Picture contrast or luma gain.</TD 230></TR 231><TR 232><TD 233><CODE 234CLASS="CONSTANT" 235>V4L2_CID_SATURATION</CODE 236></TD 237><TD 238>integer</TD 239><TD 240>Picture color saturation or chroma gain.</TD 241></TR 242><TR 243><TD 244><CODE 245CLASS="CONSTANT" 246>V4L2_CID_HUE</CODE 247></TD 248><TD 249>integer</TD 250><TD 251>Hue or color balance.</TD 252></TR 253><TR 254><TD 255><CODE 256CLASS="CONSTANT" 257>V4L2_CID_AUDIO_VOLUME</CODE 258></TD 259><TD 260>integer</TD 261><TD 262>Overall audio volume. Note some drivers also 263provide an OSS or ALSA mixer interface.</TD 264></TR 265><TR 266><TD 267><CODE 268CLASS="CONSTANT" 269>V4L2_CID_AUDIO_BALANCE</CODE 270></TD 271><TD 272>integer</TD 273><TD 274>Audio stereo balance. Minimum corresponds to all 275the way left, maximum to right.</TD 276></TR 277><TR 278><TD 279><CODE 280CLASS="CONSTANT" 281>V4L2_CID_AUDIO_BASS</CODE 282></TD 283><TD 284>integer</TD 285><TD 286>Audio bass adjustment.</TD 287></TR 288><TR 289><TD 290><CODE 291CLASS="CONSTANT" 292>V4L2_CID_AUDIO_TREBLE</CODE 293></TD 294><TD 295>integer</TD 296><TD 297>Audio treble adjustment.</TD 298></TR 299><TR 300><TD 301><CODE 302CLASS="CONSTANT" 303>V4L2_CID_AUDIO_MUTE</CODE 304></TD 305><TD 306>boolean</TD 307><TD 308>Mute audio, i. e. set the volume to zero, however 309without affecting <CODE 310CLASS="CONSTANT" 311>V4L2_CID_AUDIO_VOLUME</CODE 312>. Like 313ALSA drivers, V4L2 drivers must mute at load time to avoid excessive 314noise. Actually the entire device should be reset to a low power 315consumption state.</TD 316></TR 317><TR 318><TD 319><CODE 320CLASS="CONSTANT" 321>V4L2_CID_AUDIO_LOUDNESS</CODE 322></TD 323><TD 324>boolean</TD 325><TD 326>Loudness mode (bass boost).</TD 327></TR 328><TR 329><TD 330><CODE 331CLASS="CONSTANT" 332>V4L2_CID_BLACK_LEVEL</CODE 333></TD 334><TD 335>integer</TD 336><TD 337>Another name for brightness (not a synonym of 338<CODE 339CLASS="CONSTANT" 340>V4L2_CID_BRIGHTNESS</CODE 341>). This control is deprecated 342and should not be used in new drivers and applications.</TD 343></TR 344><TR 345><TD 346><CODE 347CLASS="CONSTANT" 348>V4L2_CID_AUTO_WHITE_BALANCE</CODE 349></TD 350><TD 351>boolean</TD 352><TD 353>Automatic white balance (cameras).</TD 354></TR 355><TR 356><TD 357><CODE 358CLASS="CONSTANT" 359>V4L2_CID_DO_WHITE_BALANCE</CODE 360></TD 361><TD 362>button</TD 363><TD 364>This is an action control. When set (the value is 365ignored), the device will do a white balance and then hold the current 366setting. Contrast this with the boolean 367<CODE 368CLASS="CONSTANT" 369>V4L2_CID_AUTO_WHITE_BALANCE</CODE 370>, which, when 371activated, keeps adjusting the white balance.</TD 372></TR 373><TR 374><TD 375><CODE 376CLASS="CONSTANT" 377>V4L2_CID_RED_BALANCE</CODE 378></TD 379><TD 380>integer</TD 381><TD 382>Red chroma balance.</TD 383></TR 384><TR 385><TD 386><CODE 387CLASS="CONSTANT" 388>V4L2_CID_BLUE_BALANCE</CODE 389></TD 390><TD 391>integer</TD 392><TD 393>Blue chroma balance.</TD 394></TR 395><TR 396><TD 397><CODE 398CLASS="CONSTANT" 399>V4L2_CID_GAMMA</CODE 400></TD 401><TD 402>integer</TD 403><TD 404>Gamma adjust.</TD 405></TR 406><TR 407><TD 408><CODE 409CLASS="CONSTANT" 410>V4L2_CID_WHITENESS</CODE 411></TD 412><TD 413>integer</TD 414><TD 415>Whiteness for grey-scale devices. This is a synonym 416for <CODE 417CLASS="CONSTANT" 418>V4L2_CID_GAMMA</CODE 419>. This control is deprecated 420and should not be used in new drivers and applications.</TD 421></TR 422><TR 423><TD 424><CODE 425CLASS="CONSTANT" 426>V4L2_CID_EXPOSURE</CODE 427></TD 428><TD 429>integer</TD 430><TD 431>Exposure (cameras). [Unit?]</TD 432></TR 433><TR 434><TD 435><CODE 436CLASS="CONSTANT" 437>V4L2_CID_AUTOGAIN</CODE 438></TD 439><TD 440>boolean</TD 441><TD 442>Automatic gain/exposure control.</TD 443></TR 444><TR 445><TD 446><CODE 447CLASS="CONSTANT" 448>V4L2_CID_GAIN</CODE 449></TD 450><TD 451>integer</TD 452><TD 453>Gain control.</TD 454></TR 455><TR 456><TD 457><CODE 458CLASS="CONSTANT" 459>V4L2_CID_HFLIP</CODE 460></TD 461><TD 462>boolean</TD 463><TD 464>Mirror the picture horizontally.</TD 465></TR 466><TR 467><TD 468><CODE 469CLASS="CONSTANT" 470>V4L2_CID_VFLIP</CODE 471></TD 472><TD 473>boolean</TD 474><TD 475>Mirror the picture vertically.</TD 476></TR 477><TR 478><TD 479><CODE 480CLASS="CONSTANT" 481>V4L2_CID_HCENTER_DEPRECATED</CODE 482> (formerly <CODE 483CLASS="CONSTANT" 484>V4L2_CID_HCENTER</CODE 485>)</TD 486><TD 487>integer</TD 488><TD 489>Horizontal image centering. This control is 490deprecated. New drivers and applications should use the <A 491HREF="x802.htm#CAMERA-CONTROLS" 492>Camera class controls</A 493> 494<CODE 495CLASS="CONSTANT" 496>V4L2_CID_PAN_ABSOLUTE</CODE 497>, 498<CODE 499CLASS="CONSTANT" 500>V4L2_CID_PAN_RELATIVE</CODE 501> and 502<CODE 503CLASS="CONSTANT" 504>V4L2_CID_PAN_RESET</CODE 505> instead.</TD 506></TR 507><TR 508><TD 509><CODE 510CLASS="CONSTANT" 511>V4L2_CID_VCENTER_DEPRECATED</CODE 512> 513 (formerly <CODE 514CLASS="CONSTANT" 515>V4L2_CID_VCENTER</CODE 516>)</TD 517><TD 518>integer</TD 519><TD 520>Vertical image centering. Centering is intended to 521<SPAN 522CLASS="emphasis" 523><I 524CLASS="EMPHASIS" 525>physically</I 526></SPAN 527> adjust cameras. For image cropping see 528<A 529HREF="x1904.htm" 530>Section 1.11</A 531>, for clipping <A 532HREF="x6570.htm" 533>Section 4.2</A 534>. This 535control is deprecated. New drivers and applications should use the 536<A 537HREF="x802.htm#CAMERA-CONTROLS" 538>Camera class controls</A 539> 540<CODE 541CLASS="CONSTANT" 542>V4L2_CID_TILT_ABSOLUTE</CODE 543>, 544<CODE 545CLASS="CONSTANT" 546>V4L2_CID_TILT_RELATIVE</CODE 547> and 548<CODE 549CLASS="CONSTANT" 550>V4L2_CID_TILT_RESET</CODE 551> instead.</TD 552></TR 553><TR 554><TD 555><CODE 556CLASS="CONSTANT" 557>V4L2_CID_POWER_LINE_FREQUENCY</CODE 558></TD 559><TD 560>integer</TD 561><TD 562>Enables a power line frequency filter to avoid 563flicker. Possible values are: 564<CODE 565CLASS="CONSTANT" 566>V4L2_CID_POWER_LINE_FREQUENCY_DISABLED</CODE 567> (0), 568<CODE 569CLASS="CONSTANT" 570>V4L2_CID_POWER_LINE_FREQUENCY_50HZ</CODE 571> (1) and 572<CODE 573CLASS="CONSTANT" 574>V4L2_CID_POWER_LINE_FREQUENCY_60HZ</CODE 575> (2).</TD 576></TR 577><TR 578><TD 579><CODE 580CLASS="CONSTANT" 581>V4L2_CID_HUE_AUTO</CODE 582></TD 583><TD 584>boolean</TD 585><TD 586>Enables automatic hue control by the device. The 587effect of setting <CODE 588CLASS="CONSTANT" 589>V4L2_CID_HUE</CODE 590> while automatic 591hue control is enabled is undefined, drivers should ignore such 592request.</TD 593></TR 594><TR 595><TD 596><CODE 597CLASS="CONSTANT" 598>V4L2_CID_WHITE_BALANCE_TEMPERATURE</CODE 599></TD 600><TD 601>integer</TD 602><TD 603>This control specifies the white balance settings 604as a color temperature in Kelvin. A driver should have a minimum of 6052800 (incandescent) to 6500 (daylight). For more information about 606color temperature see <A 607HREF="http://en.wikipedia.org/wiki/Color_temperature" 608TARGET="_top" 609>Wikipedia</A 610>.</TD 611></TR 612><TR 613><TD 614><CODE 615CLASS="CONSTANT" 616>V4L2_CID_SHARPNESS</CODE 617></TD 618><TD 619>integer</TD 620><TD 621>Adjusts the sharpness filters in a camera. The 622minimum value disables the filters, higher values give a sharper 623picture.</TD 624></TR 625><TR 626><TD 627><CODE 628CLASS="CONSTANT" 629>V4L2_CID_BACKLIGHT_COMPENSATION</CODE 630></TD 631><TD 632>integer</TD 633><TD 634>Adjusts the backlight compensation in a camera. The 635minimum value disables backlight compensation.</TD 636></TR 637><TR 638><TD 639><CODE 640CLASS="CONSTANT" 641>V4L2_CID_LASTP1</CODE 642></TD 643><TD 644> </TD 645><TD 646>End of the predefined control IDs (currently 647<CODE 648CLASS="CONSTANT" 649>V4L2_CID_BACKLIGHT_COMPENSATION</CODE 650> + 1).</TD 651></TR 652><TR 653><TD 654><CODE 655CLASS="CONSTANT" 656>V4L2_CID_PRIVATE_BASE</CODE 657></TD 658><TD 659> </TD 660><TD 661>ID of the first custom (driver specific) control. 662Applications depending on particular custom controls should check the 663driver name and version, see <A 664HREF="x282.htm" 665>Section 1.2</A 666>.</TD 667></TR 668></TBODY 669></TABLE 670></DIV 671><P 672>Applications can enumerate the available controls with the 673<A 674HREF="r13317.htm" 675><CODE 676CLASS="CONSTANT" 677>VIDIOC_QUERYCTRL</CODE 678></A 679> and <A 680HREF="r13317.htm" 681><CODE 682CLASS="CONSTANT" 683>VIDIOC_QUERYMENU</CODE 684></A 685> ioctls, get and set a 686control value with the <A 687HREF="r10104.htm" 688><CODE 689CLASS="CONSTANT" 690>VIDIOC_G_CTRL</CODE 691></A 692> and <A 693HREF="r10104.htm" 694><CODE 695CLASS="CONSTANT" 696>VIDIOC_S_CTRL</CODE 697></A 698> ioctls. 699Drivers must implement <CODE 700CLASS="CONSTANT" 701>VIDIOC_QUERYCTRL</CODE 702>, 703<CODE 704CLASS="CONSTANT" 705>VIDIOC_G_CTRL</CODE 706> and 707<CODE 708CLASS="CONSTANT" 709>VIDIOC_S_CTRL</CODE 710> when the device has one or more 711controls, <CODE 712CLASS="CONSTANT" 713>VIDIOC_QUERYMENU</CODE 714> when it has one or 715more menu type controls.</P 716><DIV 717CLASS="EXAMPLE" 718><A 719NAME="AEN778" 720></A 721><P 722><B 723>Example 1-8. Enumerating all controls</B 724></P 725><PRE 726CLASS="PROGRAMLISTING" 727>struct <A 728HREF="r13317.htm#V4L2-QUERYCTRL" 729>v4l2_queryctrl</A 730> queryctrl; 731struct <A 732HREF="r13317.htm#V4L2-QUERYMENU" 733>v4l2_querymenu</A 734> querymenu; 735 736static void 737enumerate_menu (void) 738{ 739 printf (" Menu items:\n"); 740 741 memset (&querymenu, 0, sizeof (querymenu)); 742 querymenu.id = queryctrl.id; 743 744 for (querymenu.index = queryctrl.minimum; 745 querymenu.index <= queryctrl.maximum; 746 querymenu.index++) { 747 if (0 == ioctl (fd, <A 748HREF="r13317.htm" 749><CODE 750CLASS="CONSTANT" 751>VIDIOC_QUERYMENU</CODE 752></A 753>, &querymenu)) { 754 printf (" %s\n", querymenu.name); 755 } else { 756 perror ("VIDIOC_QUERYMENU"); 757 exit (EXIT_FAILURE); 758 } 759 } 760} 761 762memset (&queryctrl, 0, sizeof (queryctrl)); 763 764for (queryctrl.id = V4L2_CID_BASE; 765 queryctrl.id < V4L2_CID_LASTP1; 766 queryctrl.id++) { 767 if (0 == ioctl (fd, <A 768HREF="r13317.htm" 769><CODE 770CLASS="CONSTANT" 771>VIDIOC_QUERYCTRL</CODE 772></A 773>, &queryctrl)) { 774 if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) 775 continue; 776 777 printf ("Control %s\n", queryctrl.name); 778 779 if (queryctrl.type == V4L2_CTRL_TYPE_MENU) 780 enumerate_menu (); 781 } else { 782 if (errno == EINVAL) 783 continue; 784 785 perror ("VIDIOC_QUERYCTRL"); 786 exit (EXIT_FAILURE); 787 } 788} 789 790for (queryctrl.id = V4L2_CID_PRIVATE_BASE;; 791 queryctrl.id++) { 792 if (0 == ioctl (fd, <A 793HREF="r13317.htm" 794><CODE 795CLASS="CONSTANT" 796>VIDIOC_QUERYCTRL</CODE 797></A 798>, &queryctrl)) { 799 if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) 800 continue; 801 802 printf ("Control %s\n", queryctrl.name); 803 804 if (queryctrl.type == V4L2_CTRL_TYPE_MENU) 805 enumerate_menu (); 806 } else { 807 if (errno == EINVAL) 808 break; 809 810 perror ("VIDIOC_QUERYCTRL"); 811 exit (EXIT_FAILURE); 812 } 813}</PRE 814></DIV 815><DIV 816CLASS="EXAMPLE" 817><A 818NAME="AEN789" 819></A 820><P 821><B 822>Example 1-9. Changing controls</B 823></P 824><PRE 825CLASS="PROGRAMLISTING" 826>struct <A 827HREF="r13317.htm#V4L2-QUERYCTRL" 828>v4l2_queryctrl</A 829> queryctrl; 830struct <A 831HREF="r10104.htm#V4L2-CONTROL" 832>v4l2_control</A 833> control; 834 835memset (&queryctrl, 0, sizeof (queryctrl)); 836queryctrl.id = V4L2_CID_BRIGHTNESS; 837 838if (-1 == ioctl (fd, <A 839HREF="r13317.htm" 840><CODE 841CLASS="CONSTANT" 842>VIDIOC_QUERYCTRL</CODE 843></A 844>, &queryctrl)) { 845 if (errno != EINVAL) { 846 perror ("VIDIOC_QUERYCTRL"); 847 exit (EXIT_FAILURE); 848 } else { 849 printf ("V4L2_CID_BRIGHTNESS is not supported\n"); 850 } 851} else if (queryctrl.flags & V4L2_CTRL_FLAG_DISABLED) { 852 printf ("V4L2_CID_BRIGHTNESS is not supported\n"); 853} else { 854 memset (&control, 0, sizeof (control)); 855 control.id = V4L2_CID_BRIGHTNESS; 856 control.value = queryctrl.default_value; 857 858 if (-1 == ioctl (fd, <A 859HREF="r10104.htm" 860><CODE 861CLASS="CONSTANT" 862>VIDIOC_S_CTRL</CODE 863></A 864>, &control)) { 865 perror ("VIDIOC_S_CTRL"); 866 exit (EXIT_FAILURE); 867 } 868} 869 870memset (&control, 0, sizeof (control)); 871control.id = V4L2_CID_CONTRAST; 872 873if (0 == ioctl (fd, <A 874HREF="r10104.htm" 875><CODE 876CLASS="CONSTANT" 877>VIDIOC_G_CTRL</CODE 878></A 879>, &control)) { 880 control.value += 1; 881 882 /* The driver may clamp the value or return ERANGE, ignored here */ 883 884 if (-1 == ioctl (fd, <A 885HREF="r10104.htm" 886><CODE 887CLASS="CONSTANT" 888>VIDIOC_S_CTRL</CODE 889></A 890>, &control) 891 && errno != ERANGE) { 892 perror ("VIDIOC_S_CTRL"); 893 exit (EXIT_FAILURE); 894 } 895/* Ignore if V4L2_CID_CONTRAST is unsupported */ 896} else if (errno != EINVAL) { 897 perror ("VIDIOC_G_CTRL"); 898 exit (EXIT_FAILURE); 899} 900 901control.id = V4L2_CID_AUDIO_MUTE; 902control.value = TRUE; /* silence */ 903 904/* Errors ignored */ 905ioctl (fd, VIDIOC_S_CTRL, &control);</PRE 906></DIV 907></DIV 908><H3 909CLASS="FOOTNOTES" 910>Notes</H3 911><TABLE 912BORDER="0" 913CLASS="FOOTNOTES" 914WIDTH="100%" 915><TR 916><TD 917ALIGN="LEFT" 918VALIGN="TOP" 919WIDTH="5%" 920><A 921NAME="FTN.AEN552" 922HREF="x542.htm#AEN552" 923><SPAN 924CLASS="footnote" 925>[1]</SPAN 926></A 927></TD 928><TD 929ALIGN="LEFT" 930VALIGN="TOP" 931WIDTH="95%" 932><P 933>It will be more convenient for applications if drivers 934make use of the <CODE 935CLASS="CONSTANT" 936>V4L2_CTRL_FLAG_DISABLED</CODE 937> flag, but 938that was never required.</P 939></TD 940></TR 941><TR 942><TD 943ALIGN="LEFT" 944VALIGN="TOP" 945WIDTH="5%" 946><A 947NAME="FTN.AEN555" 948HREF="x542.htm#AEN555" 949><SPAN 950CLASS="footnote" 951>[2]</SPAN 952></A 953></TD 954><TD 955ALIGN="LEFT" 956VALIGN="TOP" 957WIDTH="95%" 958><P 959>Applications could call an ioctl to request events. 960After another process called <A 961HREF="r10104.htm" 962><CODE 963CLASS="CONSTANT" 964>VIDIOC_S_CTRL</CODE 965></A 966> or another ioctl changing 967shared properties the <A 968HREF="r14390.htm" 969><CODE 970CLASS="FUNCTION" 971>select()</CODE 972></A 973> function would indicate 974readability until any ioctl (querying the properties) is 975called.</P 976></TD 977></TR 978></TABLE 979><DIV 980CLASS="NAVFOOTER" 981><HR 982ALIGN="LEFT" 983WIDTH="100%"><TABLE 984SUMMARY="Footer navigation table" 985WIDTH="100%" 986BORDER="0" 987CELLPADDING="0" 988CELLSPACING="0" 989><TR 990><TD 991WIDTH="33%" 992ALIGN="left" 993VALIGN="top" 994><A 995HREF="x448.htm" 996ACCESSKEY="P" 997>Prev</A 998></TD 999><TD 1000WIDTH="34%" 1001ALIGN="center" 1002VALIGN="top" 1003><A 1004HREF="book1.htm" 1005ACCESSKEY="H" 1006>Home</A 1007></TD 1008><TD 1009WIDTH="33%" 1010ALIGN="right" 1011VALIGN="top" 1012><A 1013HREF="x802.htm" 1014ACCESSKEY="N" 1015>Next</A 1016></TD 1017></TR 1018><TR 1019><TD 1020WIDTH="33%" 1021ALIGN="left" 1022VALIGN="top" 1023>Video Standards</TD 1024><TD 1025WIDTH="34%" 1026ALIGN="center" 1027VALIGN="top" 1028><A 1029HREF="c174.htm" 1030ACCESSKEY="U" 1031>Up</A 1032></TD 1033><TD 1034WIDTH="33%" 1035ALIGN="right" 1036VALIGN="top" 1037>Extended Controls</TD 1038></TR 1039></TABLE 1040></DIV 1041></BODY 1042></HTML 1043> 1044