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>ioctl VIDIOC_QUERYCTRL, VIDIOC_QUERYMENU</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="Function Reference" 14HREF="r7624.htm"><LINK 15REL="PREVIOUS" 16TITLE="ioctl VIDIOC_QUERYCAP" 17HREF="r13105.htm"><LINK 18REL="NEXT" 19TITLE="ioctl VIDIOC_QUERYSTD" 20HREF="r13641.htm"></HEAD 21><BODY 22CLASS="REFENTRY" 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="r13105.htm" 49ACCESSKEY="P" 50>Prev</A 51></TD 52><TD 53WIDTH="80%" 54ALIGN="center" 55VALIGN="bottom" 56></TD 57><TD 58WIDTH="10%" 59ALIGN="right" 60VALIGN="bottom" 61><A 62HREF="r13641.htm" 63ACCESSKEY="N" 64>Next</A 65></TD 66></TR 67></TABLE 68><HR 69ALIGN="LEFT" 70WIDTH="100%"></DIV 71><H1 72><A 73NAME="VIDIOC-QUERYCTRL" 74></A 75>ioctl VIDIOC_QUERYCTRL, VIDIOC_QUERYMENU</H1 76><DIV 77CLASS="REFNAMEDIV" 78><A 79NAME="AEN13321" 80></A 81><H2 82>Name</H2 83>VIDIOC_QUERYCTRL, VIDIOC_QUERYMENU -- Enumerate controls and menu control items</DIV 84><DIV 85CLASS="REFSYNOPSISDIV" 86><A 87NAME="AEN13325" 88></A 89><H2 90>Synopsis</H2 91><DIV 92CLASS="FUNCSYNOPSIS" 93><P 94></P 95><A 96NAME="AEN13326" 97></A 98><P 99><CODE 100><CODE 101CLASS="FUNCDEF" 102>int ioctl</CODE 103>(int fd, int request, struct v4l2_queryctrl *argp);</CODE 104></P 105><P 106></P 107></DIV 108><DIV 109CLASS="FUNCSYNOPSIS" 110><P 111></P 112><A 113NAME="AEN13336" 114></A 115><P 116><CODE 117><CODE 118CLASS="FUNCDEF" 119>int ioctl</CODE 120>(int fd, int request, struct v4l2_querymenu *argp);</CODE 121></P 122><P 123></P 124></DIV 125></DIV 126><DIV 127CLASS="REFSECT1" 128><A 129NAME="AEN13346" 130></A 131><H2 132>Arguments</H2 133><P 134></P 135><DIV 136CLASS="VARIABLELIST" 137><DL 138><DT 139><CODE 140CLASS="PARAMETER" 141>fd</CODE 142></DT 143><DD 144><P 145>File descriptor returned by <A 146HREF="r14090.htm" 147><CODE 148CLASS="FUNCTION" 149>open()</CODE 150></A 151>.</P 152></DD 153><DT 154><CODE 155CLASS="PARAMETER" 156>request</CODE 157></DT 158><DD 159><P 160>VIDIOC_QUERYCTRL, VIDIOC_QUERYMENU</P 161></DD 162><DT 163><CODE 164CLASS="PARAMETER" 165>argp</CODE 166></DT 167><DD 168><P 169></P 170></DD 171></DL 172></DIV 173></DIV 174><DIV 175CLASS="REFSECT1" 176><A 177NAME="AEN13366" 178></A 179><H2 180>Description</H2 181><P 182>To query the attributes of a control applications set the 183<CODE 184CLASS="STRUCTFIELD" 185>id</CODE 186> field of a struct <A 187HREF="r13317.htm#V4L2-QUERYCTRL" 188>v4l2_queryctrl</A 189> and call the 190<CODE 191CLASS="CONSTANT" 192>VIDIOC_QUERYCTRL</CODE 193> ioctl with a pointer to this 194structure. The driver fills the rest of the structure or returns an 195<SPAN 196CLASS="ERRORCODE" 197>EINVAL</SPAN 198> error code when the <CODE 199CLASS="STRUCTFIELD" 200>id</CODE 201> is invalid.</P 202><P 203>It is possible to enumerate controls by calling 204<CODE 205CLASS="CONSTANT" 206>VIDIOC_QUERYCTRL</CODE 207> with successive 208<CODE 209CLASS="STRUCTFIELD" 210>id</CODE 211> values starting from 212<CODE 213CLASS="CONSTANT" 214>V4L2_CID_BASE</CODE 215> up to and exclusive 216<CODE 217CLASS="CONSTANT" 218>V4L2_CID_BASE_LASTP1</CODE 219>. Drivers may return 220<SPAN 221CLASS="ERRORCODE" 222>EINVAL</SPAN 223> if a control in this range is not 224supported. Further applications can enumerate private controls, which 225are not defined in this specification, by starting at 226<CODE 227CLASS="CONSTANT" 228>V4L2_CID_PRIVATE_BASE</CODE 229> and incrementing 230<CODE 231CLASS="STRUCTFIELD" 232>id</CODE 233> until the driver returns 234<SPAN 235CLASS="ERRORCODE" 236>EINVAL</SPAN 237>.</P 238><P 239>In both cases, when the driver sets the 240<CODE 241CLASS="CONSTANT" 242>V4L2_CTRL_FLAG_DISABLED</CODE 243> flag in the 244<CODE 245CLASS="STRUCTFIELD" 246>flags</CODE 247> field this control is permanently 248disabled and should be ignored by the application.<A 249NAME="AEN13386" 250HREF="r13317.htm#FTN.AEN13386" 251><SPAN 252CLASS="footnote" 253>[1]</SPAN 254></A 255></P 256><P 257>When the application ORs <CODE 258CLASS="STRUCTFIELD" 259>id</CODE 260> with 261<CODE 262CLASS="CONSTANT" 263>V4L2_CTRL_FLAG_NEXT_CTRL</CODE 264> the driver returns the 265next supported control, or <SPAN 266CLASS="ERRORCODE" 267>EINVAL</SPAN 268> if there is 269none. Drivers which do not support this flag yet always return 270<SPAN 271CLASS="ERRORCODE" 272>EINVAL</SPAN 273>.</P 274><P 275>Additional information is required for menu controls, the 276name of menu items. To query them applications set the 277<CODE 278CLASS="STRUCTFIELD" 279>id</CODE 280> and <CODE 281CLASS="STRUCTFIELD" 282>index</CODE 283> 284fields of struct <A 285HREF="r13317.htm#V4L2-QUERYMENU" 286>v4l2_querymenu</A 287> and call the 288<CODE 289CLASS="CONSTANT" 290>VIDIOC_QUERYMENU</CODE 291> ioctl with a pointer to this 292structure. The driver fills the rest of the structure or returns an 293<SPAN 294CLASS="ERRORCODE" 295>EINVAL</SPAN 296> error code when the <CODE 297CLASS="STRUCTFIELD" 298>id</CODE 299> or 300<CODE 301CLASS="STRUCTFIELD" 302>index</CODE 303> is invalid. Menu items are enumerated 304by calling <CODE 305CLASS="CONSTANT" 306>VIDIOC_QUERYMENU</CODE 307> with successive 308<CODE 309CLASS="STRUCTFIELD" 310>index</CODE 311> values from struct <A 312HREF="r13317.htm#V4L2-QUERYCTRL" 313>v4l2_queryctrl</A 314> 315<CODE 316CLASS="STRUCTFIELD" 317>minimum</CODE 318> (0) to 319<CODE 320CLASS="STRUCTFIELD" 321>maximum</CODE 322>, inclusive.</P 323><P 324>See also the examples in <A 325HREF="x542.htm" 326>Section 1.8</A 327>.</P 328><DIV 329CLASS="TABLE" 330><A 331NAME="V4L2-QUERYCTRL" 332></A 333><P 334><B 335>Table 1. struct <CODE 336CLASS="STRUCTNAME" 337>v4l2_queryctrl</CODE 338></B 339></P 340><TABLE 341BORDER="0" 342FRAME="void" 343WIDTH="100%" 344CLASS="CALSTABLE" 345><COL 346WIDTH="25%" 347TITLE="C1"><COL 348WIDTH="25%" 349TITLE="C2"><COL 350WIDTH="50%" 351TITLE="C3"><TBODY 352VALIGN="TOP" 353><TR 354><TD 355>__u32</TD 356><TD 357><CODE 358CLASS="STRUCTFIELD" 359>id</CODE 360></TD 361><TD 362>Identifies the control, set by the application. See 363<A 364HREF="x542.htm#CONTROL-ID" 365>Table 1-1</A 366> for predefined IDs. When the ID is ORed 367with V4L2_CTRL_FLAG_NEXT_CTRL the driver clears the flag and returns 368the first control with a higher ID. Drivers which do not support this 369flag yet always return an <SPAN 370CLASS="ERRORCODE" 371>EINVAL</SPAN 372> error code.</TD 373></TR 374><TR 375><TD 376>enum <A 377HREF="r13317.htm#V4L2-CTRL-TYPE" 378>v4l2_ctrl_type</A 379></TD 380><TD 381><CODE 382CLASS="STRUCTFIELD" 383>type</CODE 384></TD 385><TD 386>Type of control, see <A 387HREF="r13317.htm#V4L2-CTRL-TYPE" 388>Table 3</A 389>.</TD 390></TR 391><TR 392><TD 393>__u8</TD 394><TD 395><CODE 396CLASS="STRUCTFIELD" 397>name</CODE 398>[32]</TD 399><TD 400>Name of the control, a NUL-terminated ASCII 401string. This information is intended for the user.</TD 402></TR 403><TR 404><TD 405>__s32</TD 406><TD 407><CODE 408CLASS="STRUCTFIELD" 409>minimum</CODE 410></TD 411><TD 412>Minimum value, inclusive. This field gives a lower 413bound for <CODE 414CLASS="CONSTANT" 415>V4L2_CTRL_TYPE_INTEGER</CODE 416> controls. It may 417not be valid for any other type of control, including 418<CODE 419CLASS="CONSTANT" 420>V4L2_CTRL_TYPE_INTEGER64</CODE 421> controls. Note this is a 422signed value.</TD 423></TR 424><TR 425><TD 426>__s32</TD 427><TD 428><CODE 429CLASS="STRUCTFIELD" 430>maximum</CODE 431></TD 432><TD 433>Maximum value, inclusive. This field gives an upper 434bound for <CODE 435CLASS="CONSTANT" 436>V4L2_CTRL_TYPE_INTEGER</CODE 437> controls and the 438highest valid index for <CODE 439CLASS="CONSTANT" 440>V4L2_CTRL_TYPE_MENU</CODE 441> 442controls. It may not be valid for any other type of control, including 443<CODE 444CLASS="CONSTANT" 445>V4L2_CTRL_TYPE_INTEGER64</CODE 446> controls. Note this is a 447signed value.</TD 448></TR 449><TR 450><TD 451>__s32</TD 452><TD 453><CODE 454CLASS="STRUCTFIELD" 455>step</CODE 456></TD 457><TD 458><P 459>This field gives a step size for 460<CODE 461CLASS="CONSTANT" 462>V4L2_CTRL_TYPE_INTEGER</CODE 463> controls. It may not be 464valid for any other type of control, including 465<CODE 466CLASS="CONSTANT" 467>V4L2_CTRL_TYPE_INTEGER64</CODE 468> 469controls.</P 470><P 471>Generally drivers should not scale hardware 472control values. It may be necessary for example when the 473<CODE 474CLASS="STRUCTFIELD" 475>name</CODE 476> or <CODE 477CLASS="STRUCTFIELD" 478>id</CODE 479> imply 480a particular unit and the hardware actually accepts only multiples of 481said unit. If so, drivers must take care values are properly rounded 482when scaling, such that errors will not accumulate on repeated 483read-write cycles.</P 484><P 485>This field gives the smallest change of 486an integer control actually affecting hardware. Often the information 487is needed when the user can change controls by keyboard or GUI 488buttons, rather than a slider. When for example a hardware register 489accepts values 0-511 and the driver reports 0-65535, step should be 490128.</P 491><P 492>Note although signed, the step value is supposed to 493be always positive.</P 494></TD 495></TR 496><TR 497><TD 498>__s32</TD 499><TD 500><CODE 501CLASS="STRUCTFIELD" 502>default_value</CODE 503></TD 504><TD 505>The default value of a 506<CODE 507CLASS="CONSTANT" 508>V4L2_CTRL_TYPE_INTEGER</CODE 509>, 510<CODE 511CLASS="CONSTANT" 512>_BOOLEAN</CODE 513> or <CODE 514CLASS="CONSTANT" 515>_MENU</CODE 516> control. 517Not valid for other types of controls. Drivers reset controls only 518when the driver is loaded, not later, in particular not when the 519func-open; is called.</TD 520></TR 521><TR 522><TD 523>__u32</TD 524><TD 525><CODE 526CLASS="STRUCTFIELD" 527>flags</CODE 528></TD 529><TD 530>Control flags, see <A 531HREF="r13317.htm#CONTROL-FLAGS" 532>Table 4</A 533>.</TD 534></TR 535><TR 536><TD 537>__u32</TD 538><TD 539><CODE 540CLASS="STRUCTFIELD" 541>reserved</CODE 542>[2]</TD 543><TD 544>Reserved for future extensions. Drivers must set 545the array to zero.</TD 546></TR 547></TBODY 548></TABLE 549></DIV 550><DIV 551CLASS="TABLE" 552><A 553NAME="V4L2-QUERYMENU" 554></A 555><P 556><B 557>Table 2. struct <CODE 558CLASS="STRUCTNAME" 559>v4l2_querymenu</CODE 560></B 561></P 562><TABLE 563BORDER="0" 564FRAME="void" 565WIDTH="100%" 566CLASS="CALSTABLE" 567><COL 568WIDTH="25%" 569TITLE="C1"><COL 570WIDTH="25%" 571TITLE="C2"><COL 572WIDTH="50%" 573TITLE="C3"><TBODY 574VALIGN="TOP" 575><TR 576><TD 577>__u32</TD 578><TD 579><CODE 580CLASS="STRUCTFIELD" 581>id</CODE 582></TD 583><TD 584>Identifies the control, set by the application 585from the respective struct <A 586HREF="r13317.htm#V4L2-QUERYCTRL" 587>v4l2_queryctrl</A 588> 589<CODE 590CLASS="STRUCTFIELD" 591>id</CODE 592>.</TD 593></TR 594><TR 595><TD 596>__u32</TD 597><TD 598><CODE 599CLASS="STRUCTFIELD" 600>index</CODE 601></TD 602><TD 603>Index of the menu item, starting at zero, set by 604 the application.</TD 605></TR 606><TR 607><TD 608>__u8</TD 609><TD 610><CODE 611CLASS="STRUCTFIELD" 612>name</CODE 613>[32]</TD 614><TD 615>Name of the menu item, a NUL-terminated ASCII 616string. This information is intended for the user.</TD 617></TR 618><TR 619><TD 620>__u32</TD 621><TD 622><CODE 623CLASS="STRUCTFIELD" 624>reserved</CODE 625></TD 626><TD 627>Reserved for future extensions. Drivers must set 628the array to zero.</TD 629></TR 630></TBODY 631></TABLE 632></DIV 633><DIV 634CLASS="TABLE" 635><A 636NAME="V4L2-CTRL-TYPE" 637></A 638><P 639><B 640>Table 3. enum v4l2_ctrl_type</B 641></P 642><TABLE 643BORDER="0" 644FRAME="void" 645WIDTH="100%" 646CLASS="CALSTABLE" 647><COL 648WIDTH="30%"><COL 649WIDTH="5%" 650ALIGN="CENTER"><COL 651WIDTH="5%" 652ALIGN="CENTER"><COL 653WIDTH="5%" 654ALIGN="CENTER"><COL 655WIDTH="55%"><THEAD 656><TR 657><TH 658>Type</TH 659><TH 660><CODE 661CLASS="STRUCTFIELD" 662>minimum</CODE 663></TH 664><TH 665><CODE 666CLASS="STRUCTFIELD" 667>step</CODE 668></TH 669><TH 670><CODE 671CLASS="STRUCTFIELD" 672>maximum</CODE 673></TH 674><TH 675>Description</TH 676></TR 677></THEAD 678><TBODY 679VALIGN="TOP" 680><TR 681><TD 682><CODE 683CLASS="CONSTANT" 684>V4L2_CTRL_TYPE_INTEGER</CODE 685></TD 686><TD 687>any</TD 688><TD 689>any</TD 690><TD 691>any</TD 692><TD 693>An integer-valued control ranging from minimum to 694maximum inclusive. The step value indicates the increment between 695values which are actually different on the hardware.</TD 696></TR 697><TR 698><TD 699><CODE 700CLASS="CONSTANT" 701>V4L2_CTRL_TYPE_BOOLEAN</CODE 702></TD 703><TD 704>0</TD 705><TD 706>1</TD 707><TD 708>1</TD 709><TD 710>A boolean-valued control. Zero corresponds to 711"disabled", and one means "enabled".</TD 712></TR 713><TR 714><TD 715><CODE 716CLASS="CONSTANT" 717>V4L2_CTRL_TYPE_MENU</CODE 718></TD 719><TD 720>0</TD 721><TD 722>1</TD 723><TD 724>N-1</TD 725><TD 726>The control has a menu of N choices. The names of 727the menu items can be enumerated with the 728<CODE 729CLASS="CONSTANT" 730>VIDIOC_QUERYMENU</CODE 731> ioctl.</TD 732></TR 733><TR 734><TD 735><CODE 736CLASS="CONSTANT" 737>V4L2_CTRL_TYPE_BUTTON</CODE 738></TD 739><TD 740>0</TD 741><TD 742>0</TD 743><TD 744>0</TD 745><TD 746>A control which performs an action when set. 747Drivers must ignore the value passed with 748<CODE 749CLASS="CONSTANT" 750>VIDIOC_S_CTRL</CODE 751> and return an <SPAN 752CLASS="ERRORCODE" 753>EINVAL</SPAN 754> error code on a 755<CODE 756CLASS="CONSTANT" 757>VIDIOC_G_CTRL</CODE 758> attempt.</TD 759></TR 760><TR 761><TD 762><CODE 763CLASS="CONSTANT" 764>V4L2_CTRL_TYPE_INTEGER64</CODE 765></TD 766><TD 767>n/a</TD 768><TD 769>n/a</TD 770><TD 771>n/a</TD 772><TD 773>A 64-bit integer valued control. Minimum, maximum 774and step size cannot be queried.</TD 775></TR 776><TR 777><TD 778><CODE 779CLASS="CONSTANT" 780>V4L2_CTRL_TYPE_CTRL_CLASS</CODE 781></TD 782><TD 783>n/a</TD 784><TD 785>n/a</TD 786><TD 787>n/a</TD 788><TD 789>This is not a control. When 790<CODE 791CLASS="CONSTANT" 792>VIDIOC_QUERYCTRL</CODE 793> is called with a control ID 794equal to a control class code (see <A 795HREF="r10386.htm#CTRL-CLASS" 796>Table 3</A 797>), the 798ioctl returns the name of the control class and this control type. 799Older drivers which do not support this feature return an 800<SPAN 801CLASS="ERRORCODE" 802>EINVAL</SPAN 803> error code.</TD 804></TR 805></TBODY 806></TABLE 807></DIV 808><DIV 809CLASS="TABLE" 810><A 811NAME="CONTROL-FLAGS" 812></A 813><P 814><B 815>Table 4. Control Flags</B 816></P 817><TABLE 818BORDER="0" 819FRAME="void" 820WIDTH="100%" 821CLASS="CALSTABLE" 822><COL 823WIDTH="38%" 824TITLE="C1"><COL 825WIDTH="12%" 826TITLE="C2"><COL 827WIDTH="50%" 828TITLE="C3"><TBODY 829VALIGN="TOP" 830><TR 831><TD 832><CODE 833CLASS="CONSTANT" 834>V4L2_CTRL_FLAG_DISABLED</CODE 835></TD 836><TD 837>0x0001</TD 838><TD 839>This control is permanently disabled and should be 840ignored by the application. Any attempt to change the control will 841result in an <SPAN 842CLASS="ERRORCODE" 843>EINVAL</SPAN 844> error code.</TD 845></TR 846><TR 847><TD 848><CODE 849CLASS="CONSTANT" 850>V4L2_CTRL_FLAG_GRABBED</CODE 851></TD 852><TD 853>0x0002</TD 854><TD 855>This control is temporarily unchangeable, for 856example because another application took over control of the 857respective resource. Such controls may be displayed specially in a 858user interface. Attempts to change the control may result in an 859<SPAN 860CLASS="ERRORCODE" 861>EBUSY</SPAN 862> error code.</TD 863></TR 864><TR 865><TD 866><CODE 867CLASS="CONSTANT" 868>V4L2_CTRL_FLAG_READ_ONLY</CODE 869></TD 870><TD 871>0x0004</TD 872><TD 873>This control is permanently readable only. Any 874attempt to change the control will result in an <SPAN 875CLASS="ERRORCODE" 876>EINVAL</SPAN 877> error code.</TD 878></TR 879><TR 880><TD 881><CODE 882CLASS="CONSTANT" 883>V4L2_CTRL_FLAG_UPDATE</CODE 884></TD 885><TD 886>0x0008</TD 887><TD 888>A hint that changing this control may affect the 889value of other controls within the same control class. Applications 890should update their user interface accordingly.</TD 891></TR 892><TR 893><TD 894><CODE 895CLASS="CONSTANT" 896>V4L2_CTRL_FLAG_INACTIVE</CODE 897></TD 898><TD 899>0x0010</TD 900><TD 901>This control is not applicable to the current 902configuration and should be displayed accordingly in a user interface. 903For example the flag may be set on a MPEG audio level 2 bitrate 904control when MPEG audio encoding level 1 was selected with another 905control.</TD 906></TR 907><TR 908><TD 909><CODE 910CLASS="CONSTANT" 911>V4L2_CTRL_FLAG_SLIDER</CODE 912></TD 913><TD 914>0x0020</TD 915><TD 916>A hint that this control is best represented as a 917slider-like element in a user interface.</TD 918></TR 919></TBODY 920></TABLE 921></DIV 922></DIV 923><DIV 924CLASS="REFSECT1" 925><A 926NAME="AEN13624" 927></A 928><H2 929>Return Value</H2 930><P 931>On success <SPAN 932CLASS="RETURNVALUE" 933>0</SPAN 934> is returned, on error <SPAN 935CLASS="RETURNVALUE" 936>-1</SPAN 937> and the <CODE 938CLASS="VARNAME" 939>errno</CODE 940> variable is set appropriately:</P 941><P 942></P 943><DIV 944CLASS="VARIABLELIST" 945><DL 946><DT 947><SPAN 948CLASS="ERRORCODE" 949>EINVAL</SPAN 950></DT 951><DD 952><P 953>The struct <A 954HREF="r13317.htm#V4L2-QUERYCTRL" 955>v4l2_queryctrl</A 956> <CODE 957CLASS="STRUCTFIELD" 958>id</CODE 959> 960is invalid. The struct <A 961HREF="r13317.htm#V4L2-QUERYMENU" 962>v4l2_querymenu</A 963> <CODE 964CLASS="STRUCTFIELD" 965>id</CODE 966> or 967<CODE 968CLASS="STRUCTFIELD" 969>index</CODE 970> is invalid.</P 971></DD 972></DL 973></DIV 974></DIV 975><H2 976CLASS="FOOTNOTES" 977>Notes</H2 978><TABLE 979BORDER="0" 980CLASS="FOOTNOTES" 981WIDTH="100%" 982><TR 983><TD 984ALIGN="LEFT" 985VALIGN="TOP" 986WIDTH="5%" 987><A 988NAME="FTN.AEN13386" 989HREF="r13317.htm#AEN13386" 990><SPAN 991CLASS="footnote" 992>[1]</SPAN 993></A 994></TD 995><TD 996ALIGN="LEFT" 997VALIGN="TOP" 998WIDTH="95%" 999><P 1000><CODE 1001CLASS="CONSTANT" 1002>V4L2_CTRL_FLAG_DISABLED</CODE 1003> was 1004intended for two purposes: Drivers can skip predefined controls not 1005supported by the hardware (although returning EINVAL would do as 1006well), or disable predefined and private controls after hardware 1007detection without the trouble of reordering control arrays and indices 1008(EINVAL cannot be used to skip private controls because it would 1009prematurely end the enumeration).</P 1010></TD 1011></TR 1012></TABLE 1013><DIV 1014CLASS="NAVFOOTER" 1015><HR 1016ALIGN="LEFT" 1017WIDTH="100%"><TABLE 1018SUMMARY="Footer navigation table" 1019WIDTH="100%" 1020BORDER="0" 1021CELLPADDING="0" 1022CELLSPACING="0" 1023><TR 1024><TD 1025WIDTH="33%" 1026ALIGN="left" 1027VALIGN="top" 1028><A 1029HREF="r13105.htm" 1030ACCESSKEY="P" 1031>Prev</A 1032></TD 1033><TD 1034WIDTH="34%" 1035ALIGN="center" 1036VALIGN="top" 1037><A 1038HREF="book1.htm" 1039ACCESSKEY="H" 1040>Home</A 1041></TD 1042><TD 1043WIDTH="33%" 1044ALIGN="right" 1045VALIGN="top" 1046><A 1047HREF="r13641.htm" 1048ACCESSKEY="N" 1049>Next</A 1050></TD 1051></TR 1052><TR 1053><TD 1054WIDTH="33%" 1055ALIGN="left" 1056VALIGN="top" 1057>ioctl VIDIOC_QUERYCAP</TD 1058><TD 1059WIDTH="34%" 1060ALIGN="center" 1061VALIGN="top" 1062><A 1063HREF="r7624.htm" 1064ACCESSKEY="U" 1065>Up</A 1066></TD 1067><TD 1068WIDTH="33%" 1069ALIGN="right" 1070VALIGN="top" 1071>ioctl VIDIOC_QUERYSTD</TD 1072></TR 1073></TABLE 1074></DIV 1075></BODY 1076></HTML 1077> 1078