linux/Documentation/video4linux/v4l2-controls.txt
<<
>4.3/spa v 4.3/form v 4.3a >4. href="../linux+v3.7.5/Documenta > /video4linux/v4l2-controls.txt"> >4.3img src="../.sta >c/gfx/right.png" alt=">>"> 3/spa v 3spa class="lxr_search"> > ="+search" method="post" onsubmit="return do_search(this);"> >4.3input typ hidden" nam navtarget" on> "> >4.3input typ text" nam search" id search"> >4.3buttptityp submit">Search4. onclick="return ajax_prefs();"> >4.Prefsv 4.3/a> 3/spa v >4. .3/div v >4. .3form ac > ="ajax+*" method="post" onsubmit="return false;"> 3input typ hidden" nam ajax_lookup" id ajax_lookup" on> "> >4. .3/form v >4. .3div class="headingbottpm">
4.
4. 4. .3div id search_results" class="search_results"v 4 v >4. .3/div v 3div id content" v 3div id file_contents"
. .13/a>Introduc >
 
. .23/a>============
. .33/a>	. .43/a>The V4L2 control API seems simple enough, but quickly becomes very hard to	. .53/a>implement correctly in drivers. But much of the code needed to handle controls	. .63/a>is ac ually not driver specific and ca  be moved to the V4L core fram work.	. .73/a>	. .83/a>After all, the only part that a driver developer is interested in is:	. .93/a>	. 8.31a>1) How do I add a control?	. 113/a>2) How do I set the control's on>
 ? (i.e. s_ctrl)	. 123/a>	. 133/a>And occas>
 ally:	. 143/a>	. 153/a>3) How do I get the control's on>
 ? (i.e. g_vola >le_ctrl)	. 163/a>4) How do I on>idate the user's proposed control on>
 ? (i.e. try_ctrl)	. 173/a>	. 183/a>All the rest is something that ca  be done centrally.	. 193/a>	. 203/a>The control fram work was created in order to implement all the rules of the	. 213/a>V4L2 specifica >
  with respect to controls in a central place. And to make	. 223/a>life as easy as possible for the driver developer.	. 233/a>	. 243/a>Note that the control fram work relies on the presence of a struc  v4l2_device	. 253/a>for V4L2 drivers and struc  v4l2_subdev for sub-device drivers.	. 263/a>	. 273/a>	. 283/a>Objects in the fram work	. 293/a>========================
. 303/a>	. 313/a>There are two main objects:	. 323/a>	. 333/a>The v4l2_ctrl object describes the control properties and keeps track of the	. 343/a>control's on>
  (both the current on>
  and the proposed new on>
 ).	. 353/a>	. 363/a>v4l2_ctrl_handler is the object that keeps track of controls. It maintains a	. 373/a>list of v4l2_ctrl objects that it owns and another list of references to	. 383/a>controls, possibly to controls owned by other handlers.	. 393/a>	. 403/a>	. 413/a>Bas>c usage for V4L2 and sub-device drivers	. 423/a>===========================================	. 433/a>	. 4431a>1) Prepare the driver:	. 453/a>	. 463/a>1.1) Add the handler to your driver's top-level struc :	. 473/a>	. 483/a>        struc  foo_dev {	. 493/a>                ...	. 503/a>                struc  v4l2_ctrl_handler ctrl_handler;	. 513/a>                ...	. 523/a>        };	. 533/a>	. 543/a>        struc  foo_dev *foo;	. 553/a>	. 563/a>1.2) Initialize the handler:	. 573/a>	. 583/a>        v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls);	. 593/a>	. 603/a>  The second argument is a hint telling the func >
  how many controls this	. 613/a>  handler is expected to handle. It will allocate a hashtable based on this	. 623/a>  informa >
 . It is a hint only.	. 633/a>	. 6431a>1.3) Hook the control handler into the driver:	. 653/a>	. 663/a>1.3.1) For V4L2 drivers do this:	. 673/a>	. 683/a>        struc  foo_dev {	. 693/a>                ...	. 703/a>                struc  v4l2_device v4l2_dev;	. 713/a>                ...	. 723/a>                struc  v4l2_ctrl_handler ctrl_handler;	. 733/a>                ...	. 743/a>        };	. 753/a>	. 763/a>        foo->v4l2_dev.ctrl_handler = &foo->ctrl_handler;	. 773/a>	. 783/a>  Where foo->v4l2_dev is of type struc  v4l2_device.	. 793/a>	. 803/a>  Fi ally, remove all control func >
 s from your v4l2_ioctl_ops:	. 813/a>  vidioc_queryctrl, vidioc_querymenu, vidioc_g_ctrl, vidioc_s_ctrl,	. 823/a>  vidioc_g_ext_ctrls, vidioc_try_ext_ctrls and vidioc_s_ext_ctrls.	. 833/a>  Those are now no longer needed.	. 843/a>	. 853/a>1.3.2) For sub-device drivers do this:	. 863/a>	. 873/a>        struc  foo_dev {	. 883/a>                ...	. 893/a>                struc  v4l2_subdev sd;	. 903/a>                ...	. 913/a>                struc  v4l2_ctrl_handler ctrl_handler;	. 923/a>                ...	. 933/a>        };	. 943/a>	. 953/a>        foo->sd.ctrl_handler = &foo->ctrl_handler;	. 963/a>	. 973/a>  Where foo->sd is of type struc  v4l2_subdev.	. 983/a>	. 993/a>  And set all core control ops in your struc  v4l2_subdev_core_ops to these	.1003/a>  helpers:	.1013/a>	.1023/a>        .queryctrl = v4l2_subdev_queryctrl,	.1033/a>        .querymenu = v4l2_subdev_querymenu,	.1043/a>        .g_ctrl = v4l2_subdev_g_ctrl,	.1053/a>        .s_ctrl = v4l2_subdev_s_ctrl,	.1063/a>        .g_ext_ctrls = v4l2_subdev_g_ext_ctrls,	.1073/a>        .try_ext_ctrls = v4l2_subdev_try_ext_ctrls,	.1083/a>        .s_ext_ctrls = v4l2_subdev_s_ext_ctrls,	.1093/a>	.1103/a>  Note: this is a temporary solu >
  only. Once all V4L2 drivers that depend	.1113/a>  
  subdev drivers are converted to the control fram work these helpers will	.1123/a>  no longer be needed.	.1133/a>	.11431a>1.4) Clean up the handler at the end:	.1153/a>	.1163/a>        v4l2_ctrl_handler_free(&foo->ctrl_handler);	.1173/a>	.1183/a>	.1193/a>2) Add controls:	.1203/a>	.1213/a>You add non-menu controls by calling v4l2_ctrl_new_std:	.1223/a>	.1233/a>        struc  v4l2_ctrl *v4l2_ctrl_new_std(struc  v4l2_ctrl_handler *hdl,	.1243/a>                        const struc  v4l2_ctrl_ops *ops,	.1253/a>                        u32 id, s32 min, s32 max, u32 step, s32 def);	.1263/a>	.1273/a>Menu controls are added by calling v4l2_ctrl_new_std_menu:	.1283/a>	.1293/a>        struc  v4l2_ctrl *v4l2_ctrl_new_std_menu(struc  v4l2_ctrl_handler *hdl,	.1303/a>                        const struc  v4l2_ctrl_ops *ops,	.1313/a>                        u32 id, s32 max, s32 skip_mask, s32 def);	.1323/a>	.1333/a>Or alterna >vely for integer menu controls, by calling v4l2_ctrl_new_int_menu:	.1343/a>	.1353/a>        struc  v4l2_ctrl *v4l2_ctrl_new_int_menu(struc  v4l2_ctrl_handler *hdl,	.1363/a>                        const struc  v4l2_ctrl_ops *ops,	.1373/a>                        u32 id, s32 max, s32 def, const s64 *qmenu_int);	.1383/a>	.1393/a>Standard menu controls with a driver specific menu are added by calling	.1403/a>v4l2_ctrl_new_std_menu_items:	.1413/a>	.1423/a>        struc  v4l2_ctrl *v4l2_ctrl_new_std_menu_items(	.1433/a>                struc  v4l2_ctrl_handler *hdl,	.1443/a>                const struc  v4l2_ctrl_ops *ops, u32 id, s32 max,	.1453/a>                s32 skip_mask, s32 def, const char * const *qmenu);	.1463/a>	.1473/a>These func >
 s are typically called right after the v4l2_ctrl_handler_init:	.1483/a>	.1493/a>        sta >c const s64 exp_bias_qmenu[] = {	.1503/a>               -2, -1, 0, 1, 2	.1513/a>        };	.1523/a>        sta >c const char * const test_pattern[] = {	.1533/a>                "Disabled",	.1543/a>                "Vertical Bars",	.1553/a>                "Solid Black",	.1563/a>                "Solid White",	.1573/a>        };	.1583/a>	.1593/a>        v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls);	.1603/a>        v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops,	.1613/a>                        V4L2_CID_BRIGHTNESS, 0, 255, 1, 128);	.1623/a>        v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops,	.1633/a>                        V4L2_CID_CONTRAST, 0, 255, 1, 128);	.1643/a>        v4l2_ctrl_new_std_menu(&foo->ctrl_handler, &foo_ctrl_ops,	.1653/a>                        V4L2_CID_POWER_LINE_FREQUENCY,	.1663/a>                        V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0,	.1673/a>                        V4L2_CID_POWER_LINE_FREQUENCY_DISABLED);	.1683/a>        v4l2_ctrl_new_int_menu(&foo->ctrl_handler, &foo_ctrl_ops,	.1693/a>                        V4L2_CID_EXPOSURE_BIAS,	.1703/a>                        ARRAY_SIZE(exp_bias_qmenu) - 1,	.1713/a>                        ARRAY_SIZE(exp_bias_qmenu) / 2 - 1,	.1723/a>                        exp_bias_qmenu);	.1733/a>        v4l2_ctrl_new_std_menu_items(&foo->ctrl_handler, &foo_ctrl_ops,	.1743/a>                        V4L2_CID_TEST_PATTERN, ARRAY_SIZE(test_pattern) - 1, 0,	.1753/a>                        0, test_pattern);	.1763/a>        ...	.1773/a>        if (foo->ctrl_handler.error) {	.1783/a>                int err = foo->ctrl_handler.error;	.1793/a>	.1803/a>                v4l2_ctrl_handler_free(&foo->ctrl_handler);	.1813/a>                return err;	.1823/a>        }	.1833/a>	.1843/a>The v4l2_ctrl_new_std func >
  returns the v4l2_ctrl pointer to the new	.1853/a>control, but if you do not need to access the pointer outside the control ops,	.1863/a>then there is no need to store it.	.1873/a>	.1883/a>The v4l2_ctrl_new_std func >
  will fill in most fields based on the control	.1893/a>ID except for the min, max, step and default on>
 s. These are passed in the	.1903/a>last four arguments. These on>
 s are driver specific while control attributes	.1913/a>like type, nam , flags are all global. The control's current on>
  will be set	.1923/a>to the default on>
 .	.1933/a>	.1943/a>The v4l2_ctrl_new_std_menu func >
  is very similar but it is used for menu	.1953/a>controls. There is no min argument since that is always 0 for menu controls,	.1963/a>and instead of a step there is a skip_mask argument: if bit X is 1, then menu	.1973/a>item X is skipped.	.1983/a>	.1993/a>The v4l2_ctrl_new_int_menu func >
  creates a t#L3standard ocumenta >
 linux/v4="Document2 >
 /video4linux/v4l2-co2trols2txt#L1uments. ne" n>.1903-a>last fo 
L17d 
L28" t_me" cladiffe co 803nu func >
  creates a t#L3standard ocumenta >
 linux/v4=""Document >
 /video4linux/v4l2-co2trols2txt#L1id 
L194" class="line"  
L28nam  
doesne typt havif you>.1963/a>and 3/a>coak>
 s are driver specific while control attributes	
 /video4linux/v4l2-co2trols2txt#L1a1853/a90" i3/a>and 3/ai3/ray6" csig
L3864-ad ol_new_ia tempo >4.Prlinxacbal. The control's current on>
  will be set	
 /video4linux/v4l2-co2trols2txt#L1ine"  7" i of s and struc  v4l2_subdev for sub-device drivers.	.1343/a>	
 /video4linux/v4l2-co2trols2txt#L194" id 
L194" class="line"  
L17 nam  
L194">.1943/a>The vts that it owns and another list of references to	
 /video4linux/v4l2-co2trols206t#L1id 
L194" class="line" 4l2_oak>
Prlinxtrass="4l2trolL172",our chass="lin>.1903 that it owns and another list of references to	
 /video4linux/v4l2-co2trols2txt#L1">.1393/a>Stanhererli 383/wisee v4l2_ctr is no min a. A goodinxanam  89" clandle. It will allocate a hashtable based on this	
 /video4linux/v4l2-co2trols20s.txt#L38" iass="linnam  
L175">1113/a>  
9" capL18e/display/senso namlass=a tempdle. It will allocate a hashtable based on this	
 /video4linux/v4l2-co2trols2txt#L1havif youcapabilitass="generass="am  
L175">s="line" "am  
L175">sine"  seewne"dle. It will allocate a hashtable based on this	
 /video4linux/v4l2-co2trols2txt#L1">.1393/ na11">.1113/lass .53/a>i is nre alve" n 803/class="s=" Where foo->v4l2_dev is of type struc  v4l2_device.	
 /video4linux/v4l2-co2trols21xt#L141" id 
L141" class="line" nam  
L141">.1413/a>	
 /video4linux/v4l2-co2trols2txt#L1#L24" id 
stelass="linefai1333 603/a>  The re alass="liNULL ererli     3/a>41" id 
L141" class="line" nam  
L141">.1413/a>	
 /video4linux/v4l2-co2trols2txt#L1id 
           v          392" id      3's5"am  
L175">s="line" "am  
L175">sine"ine" nam  
L141">.trols4se  
L14          v          392" id      3's5"a2ideo4linux/v4l2-controls.txt#L129" id 
L129" class="li,;v4l2_dev is of tyi3/ray6" csig
L38up the ha2dler a">snta >
 i based ju hr.Prefsv	e painterss="on tonly. Olev irut2 >
o4linux/v4l2-controls.txt#L129" id 
L129" class="li,;v4l2
L17 nam ">.1153/a>	
Prlin">.1163/a>        v4l2_c2rl_ha21 /video4linux/v4l2-controls.txt#L27" id 
L27" class="line" nanam  
L112">.1173/a>	.1183/a>	.1193/a>2) Add control2:	>. 203/a>The control framenta 2
 /vid"Documr="Doconref="Doaenta >
 /vi makesconrs="lshtable ID rules: i based bdeo4linux/v4l2-controls.txt#L22" id 
L22" class="line" namam  
L141>. 213/a>V4L2 specifica >u con2rols baref="fconit:	.. 223/a>life as easy as prli  
 /video4linux/v4l2-controls.txt#L123" id 
L123" class="line"2am  
L23">>. 233/a>	supdeo4linux/v4l2-controls.txt#L148" id 
L148" class="line"2am  
L24">>. 243/a>Note that the co     22 /video4linux/v4l2-co2trols2txt#L194" id 
L194" class="line" am  
L25">>. 253/a>for V4L2 drivers     2   u32 id, s32;foo->ctrl_hand">sup;	>. 263/a>	>. 273/a>	am  
L28">>. 283/a>Objects in the fenta 2
 /vidiref="DocusLhref="
 /vid ef="Documenta > v4l2_io the	aass="am  >. 293/a>================v4l2_2trl *v	.1303/a>              2     2   conhref="
 /vid vid maksyncdeo4linux/v4l2-controls.txt#L23" id 
L23" class="line" namam  
L141">.1313/a>              2     23 /video4linux/v4l2-co2trols2txt#L1#L24" id 
stelass="linefai1nam  
L132">.1323/a>	nam  
L132">.1333/a>Or alterna >ve2y for23 /video4linux/v4l2-controls.txt#L24" id 
L24" class="line" nanam  
L132">.1343/a>	.1353/a>        struc 2v4l2_23  0, test_pattern);	
 /video4linux/v4l2-controls.txt#L106" id 
L106" class="line"2nam  
L132">.1363/a>              2     2   const strucideo4linux/v4l2-controls.txt#L158" id 
L158" class="line"2nam  
L132">.1373/a>              2     23 /video4linux/v4l2-controls.txt#L28" id 
L28" class="line" nanam  
L132">.1383/a>	.1393/a>Standard menu 2ontro2
 /video4linux/v4l2-controls.txt#L40" id 
L40" class="line" n2nam  
L142">.1403/a>v4l2_ctrl_new_2td_me240*foo;	
 /vihdl,	.1413/a>	.1423/a>        struc 2v4l2_24 v4l2_ctrl_handler ctrl_handmen *f=nueref" cla   cume(c/vi="Doc	
 /video4linux/v4l2-controls.txt#L181" id 
L181" class="line"2nam  
L142">.1433/a>              2 stru2
 /video4linux/v4l2-controls.txt#L44" id 
L44" class="line" n2nam  
L142">.1443/a>              2 cons2 struc  v4l2_ctrl_ops switch (c/vi="Docidvideo4linux/v4l2-controls.txt#L178" id 
L178" class="line"2nam  
L142">.1453/a>              2 s32 2kip_mask, s32 def, concase5, 1, 128);	.1463/a>	.1473/a>These func >
 2 are 24  V4L2_CID_POWER_LINE_FREQUENbreakdeo4linux/v4l2-controls.txt#L181" id 
L181" class="line"2nam  
L132">.1483/a>	.1493/a>        sta >c2const2a href="Documenta >
 /_FREQUENwrite_reg(0x456, umenruc  valideo4linux/v4l2-controls.txt#L181" id 
L181" class="line"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_handler ct_FREQUENbreakdeo4linux/v4l2-controls.txt#L181" id 
L181" class="line"2nam  
L152">.1513/a>        };	
 /deo4linux/v4l2-controls.txt#L183" id 
L183" class="line"2nam  
L152">.1523/a>        sta >c2const25 v4l2_ctrl_handler ct.Prefsv0deo4linux/v4l2-controls.txt#L181" id 
L181" class="line"2nam  
L142">.1533/a>              2 &quo2;Disabled"deo4linux/v4l2-controls.txt#L183" id 
L183" class="line"2nam  
L142">.1543/a>              2 &quo25 /video4linux/v4l2-co2trols2txt#L194" id 
L194" class="line" nam  
L152">.1553/a>              2 &quo25owns and enta >
 /viol fractrl_h a t#e new	.1563/a>              2 &quo2;SolidT
 /vid> v4l2_io the	 hres5"a2ide beeno thidated_dev lourhe pDocumt2 >o ideo4linux/v4l2-co2trols20s.txt#L38" iass="linnam  
L175">nam  
L152">.1573/a>        };	.1583/a>	.1593/a>        v4l2_c2rl_ha2dler_iYoul attntroone!ps in  only. sufficiend defantrolruc  v4e controweibute. N="Docueo4linux/v4l2-controls.txt#L159" id 
L159" class="line"2nam  
L162">.1603/a>        v4l2_c2rl_ne2_std(&t2 >o Docu thidat>.14	.1613/a>              2     2   V4LG/S_CTRLn3'sweed os G/TRY/S_EXT_CTRLSl'uto.1623/a>        v4l2_c2rl_ne26 /video4linux/v4l2-controls.txt#L123" id 
L123" class="line"2nam  
L162">.1633/a>              2     2
 /video4linux/v4l2-controls.txt#L64" id 
L64" class="line" n2nam  
L162">.1643/a>        v4l2_c2rl_ne2_std_m================	
 /video4linux/v4l2-controls.txt#L43" id 
L43" class="line" n2nam  
L162">.1653/a>              2     2
 /video4linux/v4l2-controls.txt#L66" id 
L66" class="line" n2nam  
L162">.1663/a>              2     26SolidT
 /renta d	.1673/a>              2     2   V4LIn prthtumenthcumenevice driacumescribcumabrom y. sufficiend defantrole contrdeo4linux/v4l2-controls.txt#L26" id 
L26" class="line" nanam  
L152">.1683/a>        v4l2_c2rl_ne26 /video4linux/v4l2-controls.txt#L159" id 
L159" class="line"2nam  
L162">.1693/a>              2     2   V4L================	
 /viddeo4linux/v4l2-controls.txt#L43" id 
L43" class="line" n2nam  
L172">.1703/a>              2     27 /video4linux/v4l2-controls.txt#L121" id 
L121" class="line"2nam  
L172">.1713/a>              2     27 /video4linux/v4l2-co2trols2txt#L1#L24" id 
stelass="linefai1nam  
L172">.1723/a>              2     2   expInherits="lClass="leo4linux/v4l2-co2trols2txt#L1#L24" id 
stelass="linefai1nam  
L162">.1733/a>        v4l2_c2rl_ne2_std_m"Documenta >
 /viddeo4linux/v4l2-controls.txt#L43" id 
L43" class="line" n2nam  
L162">.1743/a>              2     27 /video4linux/v4l2-co2trols2txt#L194" id 
L194" class="line" nam  
L172">.1753/a>              2     2   0, W >
 a:	
 /video4linux/v4l2-controls.txt#L140" id 
L140" class="line"2nam  
L172">.1763/a>        ...	.1903 href="_r=gionitf="Docu()t2 >
 nd eDocumenta >
	.1773/a>        if (fo2->2trl_hahref=903 href="l'">snta >
 nta >
 /vidstruc  v4d to thased bdcomdeo4linux/v4l2-controls.txt#L22" id 
L22" class="line" nanam  
L172">.1783/a>              2 int 2rr = f;uto.1393/a>Stanhererli 383/wnam  
L172">.1793/a>	
 /vats5"a2ide exionu linux/ href="Docunta >
 ntd.	.1803/a>              2 v4l22ctrl_h >
 /vi (ev l/ href="Docunc cur.1813/a>              2 retu28 /video4linux/v4l2-co2trols2txt#L1#L24" id 
stelass="linefai1nam  
L182">.1823/a>        }	.1833/a>	.1843/a>The v4l2_ctrl_2ew_st2 func ruc1903 href="deo4linux/v4l2-controls.txt#L26" id 
L26" class="line" nanam  
L172">.1853/a>control, but i2 you 28 /video4linux/v4l2-controls.txt#L66" id 
L66" class="line" n2nam  
L182">.1863/a>then there is 2o nee2
 /video4linux/v4l2-controls.txt#L87" id 
L87" class="line" n2nam  
L182">.1873/a>	.1883/a>The v4l2_ctrl_2ew_st2 func href="Documenta >
 /viddeo4linux/v4l2-controls.txt#L43" id 
L43" class="line" n2nam  
L182">.1893/a>ID except for 2he mi28 /video4linux/v4l2-controls.txt#L40" id 
L40" class="line" n2nam  
L192">.1903/a>last four argu2ents.2These and another l=rl_hand" cla  su"Documtwo unls.ideo4linux/v4l2-controls.txt#L141" id 
L141" class="line"2nam  
L192">.1913/a>like type, nam2, fla29 /video4linux/v4l2-co2trols2txt#L1#L24" id 
stelass="linefai1nam  
L192">.1923/a>to the default2on>
 2a href="Docume/*on>
   href=" href="o the	. */eo4linux/v4l2-co2trols2txt#L1#L24" id 
stelass="linefai1nam  
L182">.1933/a>	.1943/a>The v4l2_ctrl_2ew_st29struc  v4l2_ctrl_ops s32o thdeo4linux/v4l2-controls.txt#L181" id 
L181" class="line"2nam  
L192">.1953/a>controls. Ther2 is n29ip_mask, s32 def, cons64o th64deo4linux/v4l2-controls.txt#L181" id 
L181" class="line"2nam  
L182">.1963/a>and instead of2a ste29  V4L2_CID_POWER_LINE = {	.1973/a>item X is skip2ed.	<29cumenta >
 /vi   hdeo4linux/v4l2-controls.txt#L181" id 
L181" class="line"2nam  
L172">.1983/a>	.1993/a>The v4l2_ctrl_2ew_in299href="Docume/*on>
 vid> v4l2_io the	. */eo4linux/v4l2-co2trols2txt#L1#L24" id 
stelass="linefai3fo 
L17d 3L28" t_me" cladiffe co 833nu f300umenta >
 /vunls.ideo4linux/v4l2-controls.txt#L178" id 
L178" class="line"38nam  
do3sne typt havif you>.19633a>and30 v4l2_ctrl_handler ctr32o thdeo4linux/v4l2-controls.txt#L181" id 
L181" class="line"3ay6" csig3L3864-ad ol_new_ia tempo3>4.Pr30 v4l2_ctrl_handler ctr64o th64deo4linux/v4l2-controls.txt#L181" id 
L181" class="line"3v4l2_subd3v for sub-device drivers3	.1343/a>	.1943/a>The vts 3hat i30 /video4linux/v4l2-controls.txt#L66" id 
L66" class="line" n3oak>
Prli3xtrass="4l2trolL172",our3chass3"lin>.Wirss=Documenta >
 /virhe pc culer)ca useu"Docu on>
  th href=th64ribuak2 >
o4linux/v4l2-controls.txt#L129" id 
L129" class="li,;v43isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msass="line" nanam r5str is no  er a">snta >
 i'sweed       v4d to th
 /video4linux/v4l2ystel claac" clbu"line" cllength3isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msass=8line" nanols.txt#L199" id 
L199"3n thi3	.1623/a>        v4l2_c2rl_ne26 /video4linu3. It will3allocate a hashtable bas3d on 3"line" nam  
L110">.1103/a>  Note: this is a temporary solu >3_dev is o3 type struc  v4l2_device3	.1103/a>  Note: this is a temporary solu >3_dler ctr3rols2txt#L1#L24" id 
ste3ass="3129" id  id 
stelassrioid ideo4v4l2_ 
Lte:n155" cd 
L193" class="line" Atxt#L="line"2nam  
L172">.1763/a>        ...	.1903 hr3
L141" cl3ss="line" nam  
L141">.1313/a>3snta 3ne" nam  3L141">.trols4se  
L14   3     3v     a" iasssigastel  iasrioidco2trolsnanam  
L162">.1623/a>        v4l2_c2rl_ne26 /video4linu3
 i based3ju hr.Prefsv	e painterss3"on t31line" nam  
L172">.1753/a>              2     2   0, W >
 a:3;ctrl_han3ler,L141i hrefter on thi3	<4se31nta >
 /ve2txt#  id  ideo4v4l    o2tro id  ideo4v4l  v4d to th
 /
achedid 
L12meann2nam  
L172">.1883/a>The v4l2_ctrl_2ew_st2 func href="D3/v4l2-con3rols.txt#L27" id 
L27" c3ass="316
d to 2nam  
L172">.1883/a>The v4l2_ctrl_2ew_st2 func href="D3/"line" na of ter,Lhref="Documene 3ju hr3mentou"DocumL194" co2tro.	lecontrols. suchlass=-co2ta" nam  
L189">.1893/a>ID except for the min, max, step a34     ent3 >
 /vi. Swne
 lilo"Docu3epeti3rol  
h
 ength nux/-ou  o2tro clngentd.	.1893/a>ID except for the min, max, step a34 It will3rols.txt#L20" id 
L20" c3ass="3ine" nt#L38" iasg_vol/a>le#L17" 	.1913/a>like type, nam2, fla29 /video4linu3"Doconref3"Doaenta >
 /vi makescon3s="ls3"line" nam  
L121">.1213/a>You add non-menu controls by calli3onit:	le#L17" id 
L17" class="line" n2nam  
L142">.1413/a>	.19633a>and30 v4l2_ctrl_ha  v4l2 >
3e ter,iaur v4l2_io">supd3o4lin32inux/v4l2-controls.txtd 
L178" class="line"2nam  
L142">.1453/a>              2 s32 2kip_mask, s323/v4l2-co23rols2txt#L194" id 
L194"3class3>
 /video4linux/v4l2-c8" id 
L148" class="line"2nam  
L142">.1463/a>	sup;	
 /video4linux/v" class="lin = nux/81" id 
L1e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h3/v4l2-con3rols.txt#L27" id 
L27" c3ass="32valideo4linux/v4l2-controls.t"line"2nam  
L152">.1513/a>        };	
3/vill allour v4l2_ia 1413nrssp32ls.txt#L181" id 
L181"2nam  
L142">.1543/a>              2 &quo25 /video4linu3cusLhref=3
 /vid ef="Documenta > v3l2_io32l2-controls.t"2nam  
L142">.1543/a>              2 &quo25 /video4linu3c It will3
 /vid /vs thf2"Docuthe 3ropop32line" nam  
L110">.1103/a>  Note: this is a temporary solu >3/vid vid 3aksyncdeo4linux/v4l2-con3rols.3xt#L23f2"Documenlinurols.tx contr id  ideocontr1="linetdeo4linef=g_vol/a>le#L17"ssIo4deo4lil nam  
L110">.1103/a>  Note: this is a temporary solu >3/nit:	le#L17" class=x/-o="linporary s nam  
L110">.1103/a>  Note: this is a temporary solu >3/v4l2-con3 hre	.1333/a>Or alterna >vely for integer menu 3/v4l2-con3rols.txt#L24" id 
L24" c3ass="3ine" nTol2_rks=-
stelasstdevol/a>leclinu href2ol     
L148TRL_FLAG_VOLATILE"2nam  
L142">.1463/a>	.1353/a>        struc  v4l2_ctrl *v4l2_ctr3tern);	
 /video4li3ux/v432-controls.txtL106" cinux/v4l2-4linux/v4l2-csdrols.txt#L174" id 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h3ideo4linu3/v4l2-controls.txt#L158"3id 
L358" class="lin.txtne" n2nam  
L142">.1413/a>	
 /vi" class="ta >
 |=  
L148TRL_FLAG_VOLATILE"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h3iusLhref=3cumnta 
 /video4linux/v432-con3"line" nam  
L139">.1393/a>Standard menu controls with a driv3/v4l2-con3rols.txt#L40" id 
L40" c3ass="3ine" nF2idery/ 
L106"="line"linux/v4(i.aasa4l class=by"="lirolr) clasontrss="li   3nam  
L132">.1303/a>              2     2   conhref="
3f=nu[] le3.ment>
 /vihdl,	.1303/a>              2     2   conhref="
3fnit:	Stalinux/v4rols(eo4leo4l clnge!)t#L1">.133nam  
L132">.1303/a>              2     2   conhref="
3fv4l2-con3_handmen *f=nueref" cla 3 cume34line" nam  
L133">.1333/a>Or alterna >vely for integer menu 3/v4l2-con3rols.txt#L44" id 
L44" c3ass="3ine" nIfvideo4liontrols.0 (OK)4l2-controls.txt#L fs2txworksctrolsopy"="line"lfita" nam  
L189">.1893/a>ID except for the min, max, step a3trl_ops s3itch (c/vi="Docidvideo4l3nux/v3l2-coninux/v4d 
L193contrinecontr1="lin33nam  
L132">.1303/a>              2     2   conhref="
3fern);	
Prli3xtrass="4l2trolL172",our3chass3"lin>.Wirss=DoWER_LINE_3REQUENwrite_reg(0x123, u3enruc3 validW id 
ef=g_vol/a>le/s/lry
L106"linux/v42-controls. ideo4ta >4l2-co2trolsowne"2nam  
L162">.1603/a>        v4l2_c2rl_ne2_std(&t2 >o D3WER_LINE_3REQUENbreakdeo4linux/v4l3-cont3ols.txby"="lisux/ux/v4l2-ccontrols/ux/v4l2-txt#L19lock4" cheld393/as="linnam  
2-cont2nam  
L162">.1603/a>        v4l2_c2rl_ne2_std(&t2 >o D3WusLhref=3se5, 1, 128).1893/a>ID except for the min, max, step a3tv4l2-con3REQUENwrite_reg(0x456, u3enruc3 valideo4lchecdmaxduc93" adlock s nam  
L110">.1103/a>  Note: this is a temporary solu >3ndler ct_3REQUENbreakdeo4linux/v4l3-cont35line" nam  
L121">.1213/a>You add non-menu controls by calli3nta >
 /d3o4linux/v4l2-controls.tx3#L1833 id 
LO id 
L1#L1#L24ribuak2 >
o4linu href2olg 
L1roughf2olhelp#L14umenta >
/videnerass="am  
L175">s="line" "am  
L175">sine"  seewne"dl3ndler ct.3refsv0deo4linux/v4l2-con3rols.3xt#L182id    =-congd 
L191" cl ideo4safcontionlinr="line""2nam  
L142">.1463/a>	.1643/a>        v4l2_c2rl_ne2_std_m=======3/v4l2-co23rols2txt#L194" id 
L194"3class3x/v4l2-controls="linux/v4l2-g#L17" id 
L17" class="line" n"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h3 >
 /viol3fractrl_h a t#e new	.1503/a>              2-2, -2  v4l2_ctrl_h3 ER_LINE_3he	 hres5"a2ide beeno th3dated35ne" n2nam  
L182">.1873/a>	.1843/a>The v4l2_ctrl_2ew_st2 func ruc19033/v4l2-con3rols.txt#L159" id 
L159"3class3"line"do. Doo2trols2rols.txt#="Doi
L186" class="line=g_vol/a>le/s/lry
L1064l2-ough,="generass="am  
L175">s="line" "am  
L175">sine"  seewne"dl3ntroone!p3 in  only. sufficiend de3antro3ruc  vtxt#L1isass="li 3" adlockccontrols/t#=help#L19lock4linux/v4l2-coL1">.133nam  
L132">.1303/a>              2     2   conhref="
3cu thidat3.14	.1213/a>You add non-menu controls by calli3n3'sweed 3s G/TRY/S_EXT_CTRLSlƉuto.1463/a>	.1633/a>              2     2
 /video4linu3/v4l2-con3rols.txt#L64" id 
L64" c3ass="3ta >
 /video4lmutex_lockv4l2-csa >
" id 
L179" class=lockn"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h3========	3a href="Documenta >
 /vi3=====3	.1503/a>              2-2, -2  v4l2_ctrl_h3=>
 /viol3rols.txt#L66" id 
L66" c3ass="3 /video4linux/prtrok(KERN_INFO7" id 
I1903-a> ideo4v4l2trol2tr7;s2trol\n="line"i" cl2" id 
ur.inen"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h3a d	.1503/a>              2-2, -2  v4l2_ctrl_h3=ca updis3nevice driacumescribcuma3rom y36ne" nanam  
L132">.1383/a>	.1693/a>              2     2   V4L=======3========	3a href="Documenta >
 /vi3=====3==	.1733/a>        v4l2_c2rl_ne2_std_m"Docume3/v4l2-con3rols.txt#L121" id 
L121"3class3"line"lass="line" n2nam  
L182">.1893/a>ID except for 2he mi28 /video4linu3/v4l2-co23rols2txt#L1#L24" id 
ste3ass="3inefai1nam  
L172">.1723/a>              2     2   expInherit3="lClass=3leo4linux/v4l2-co2trols23xt#L13L24" i/v4l2-controls.txt#L141" id 
L1495" "lin"2nam  
L142">.1463/a>	.1643/a>        v4l2_c2rl_ne2_std_m=======3/v4l2-co23rols2txt#L194" id 
L194"3class3 0,	.19633a>and30 v4l2_ctrl_ha.1503/a>              2-2, -2  v4l2_ctrl_h3f="_r=gio3itf="Docu()t2 >
 nd eDoc3menta37valideo4linux/v4l2-cou="lmrolsl2-contro"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h3fca updis339">snta >
 nta >
 /vids3ruc  378" class="line" nam  
L158">.1583/a>	.1693/a>              2     2   V4L=======3umenta >
3/vats5"a2ide exionu linu3/ hre37ne" nF2idm class="linelmrolsl2-contro195" claef
 nux/v4l2-cl2-co2troi2trolswo4lin2nam  
L162">.1693/a>              2     2   V4L=======3(ev l/ hr3f="Docunc cur.1693/a>              2     2   V4L=======3(v4l2-co23rols2txt#L1#L24" id 
ste3ass="3inefait#L38" ia/a>   wx/v4llinux/v42-contr-EINVALn.txa1cer id dm cla206t
 /vidnerass="am  
L175">s="line" "am  
L175">sine"  seewne"dl3/v sut: i3 bi/vats1903 href="_r=gi3nitf=3Docu()p1is5">ss=""DocumenVIDIOC_" clapork to6" idontrols.>
 /vid ideo4ta 1,;v43isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msass,	addumen3a >()t2ddontrols >
 /vid3truc 38 
L134" clnporary s nam  
L110">.1103/a>  Note: this is a temporary solu >3href="deo3linux/v4l2-controls.txt#326" i38line" nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr3/v4l2-con3rols.txt#L66" id 
L66" c3ass="3ine" n8" iass="linnamument >MPEG Audio Lay-a>II Bitlinux4" clnporary wx/v4lne" nam  
L190">.1903/a>last four arguments. These on>
 s 3/v4l2-con3rols.txt#L87" id 
L87" c3ass="3ine" nm cla2rols.is.txt#v4l2-co2izss=possilinubitlinu#idBus="lind defant13/lass .53/a>i is nre alve" n 803/class="s=" Where foo->v4l3"lClass="3Vthe	  fectrolo="lis="lineL26" c    #L1#Lot#L1Byd   tv4l2-co2l2-c.53/a>i is nre alve" n 803/class="s=" Where foo->v4l3" v4l2ava3 /viddeo4linux/v4l2-cont3ols.t3t#L43"ntro1linux/v4tel6"="lifs2txworksca>Stam cla206t# should="lin="line" S  tv4l.53/a>i is nre alve" n 803/class="s=" Where foo->v4l3"menta >
3rols.txt#L40" id 
L40" c3ass="3ine" ni4lche02meann bdeo4lilam cla206t# linux="line" nanam  
L162">.1623/a>        v4l2_c2rl_ne26 /video4linu3her l=rl_3and" cla  su"Documtwo un3s.ide39line" nam  
L121">.1213/a>You add non-menu controls by calli3/v4l2-co23rols2txt#L1#L24" id 
ste3ass="39e v4lYinu    o2v4l2_ro1eieo4luL1roughf2rolinux/v4l2-trofig181" id 
Lxt# cust
L28nam  
doesne typt havif you>.1963/a>and 3/a>coak>
 s 3/*on>
   3ref=" href="o the	. */eo3linux3v4l2-c 3/a>controlass="line"ideo4linux/v4l2-co2trol( nanam  
L182">.1813/a>              2 retu28 /video4linu3unls.ideo3linux/v4l2-controls.txt#3178" 3"line" nam  
L194">.1943/a>The v4l2_ctrl_new_std_menu func >
3trl_ops s32o thdeo4linux/v4l2-cont3ols.t39line" nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr3def, cons34o th64deo4linux/v4l2-co3trols3txt#L1Cust
L2"linefai1nam  
L162">.1733/a>        v4l2_c2rl_ne2_std_m"Docume3WER_LINE 3 {	.1893/a>ID except for 2he mi28 /video4linu3i   hdeo43inux/v4l2-controls.txt#L381" i39ne" nanam  
L132">.1383/a>	.1463/a>	.1103/a>  Note: this is a temporary solu >4unls.ideo4linux/v4l2-controls.txt#4178" 40video4linux/v4l2-conc-controls.txt#L153" idtrofig13" idfills. ne"2nam  
L132">.1353/a>        struc 2v4l2_23  0, test_pa4ndler ctr42o thdeo4linux/v4l2-cont4ols.t4t#L181" id 
L181" clas.="line4l2-c3" idtust
L_ine" nam  
L186">.1863/a>then there is no need to store it.4ndler ctr44o th64deo4linux/v4l2-co4trols4txt#L181" id 
L181" cl.id =d 
L148" cMPEG_CX2341X_VIDEO_SPATIAL_FILTER" nam  
L186">.1863/a>then there is no need to store it.4n3ler ctr44inux/v4l2-controls.txt#4contr4ls.txt#L181" id 
L181".ls.tine4 id 
Lpa
L148Fills.="line" nam  
L186">.1863/a>then there is no need to store it.4n4ler ctr44o thdeo4linux/v4l2-cont4id 
L40
 /video4linux/v4l2-c.ref= =  
L148TRL_TYPE_INTEGER" nam  
L186">.1863/a>then there is no need to store it.4n5ler ctr44o th64deo4linux/v4l2-co4ass="40-controls.txt#L106" idta >
 =  
L148TRL_FLAG_SLIDER" nam  
L186">.1863/a>then there is no need to store it.4n6ler ctr44{	.1863/a>then there is no need to store it.4n7ler ctr44nux/v4l2-controls.txt#L4ta >
40ref="Documenta >
 /vi. /vid= 1" nam  
L186">.1863/a>then there is no need to store it.4n8ler ctr44ols.txt#L199" id 
L199"4n thi408" class="line" nam  
L158">.1583/a>	.1103/a>  Note: this is a temporary solu >4_dev is o4 type struc  v4l2_device4	.1503/a>              2-2, -2  v4l2_ctrl_h4_dler ctr4rols2txt#L1#L24" id 
ste4ass="4inefai1333 603/a>  The re alass="liNULL ererli     3/a>41" id4
L141" cl4ss="line" nam  
L141">.1413/a>4124" i/v4llnt2 >
 /videoument >pntr 
L23" clca>Stax/v4"li    ooinux/v4l2-co2tro1333 603/a>  The re alass="liNULL ererli     3/a>41" id4
3ler ctr4L141">.trols4se  
L14   4     4v     pntrinuxdatananam  
L182">.1813/a>              2 retu28 /video4linu4
 i based4ju hr.Prefsv	e painterss4"on t41line" nam  
L172">.1753/a>              2     2   0, W >
 a:4;ctrl_han4ler,L141i hrefter on thi4	<4se41t2 >
 /video4linux/trofig181" id 2lasslinux140" if2ol    txt#Ls_pntrinuxta >nanam  
L182">.1813/a>              2 retu28 /video4linu4
6ler ctr4rols.txt#L27" id 
L27" c4ass="4ine" nanam  
L112">.1173/a>	.1173/a>	
 40" id accor/v4ll naam  
L22">.. 223/a>life as easy as prli  
 /video4linu44 It will4rols.txt#L20" id 
L20" c4ass="4ine" naam  
L20">>. 203/a>The control framenta 2
 /vid"Documr4"Doconref4"Doaenta >
 /vi makescon4s="ls4"line" nam  
L121">.1213/a>You add non-menu controls by calli4onit:	.1733/a>        v4l2_c2rl_ne2_std_m"Docume4/v4l2-con4rols.txt#L123" id 
L123"4class42xt#L143" id 
L43" class="line" n2nam  
L172">.1703/a>              2     27 /video4linu4  v4l2 >
4e ter,iaur v4l2_io">supd4o4lin42line" nam  
L194">.1943/a>The v4l2_ctrl_new_std_menu func >
4/v4l2-co24rols2txt#L194" id 
L194"4class4>
 /vi3/as="lgetols.txco#L38x rel/a>  fhi"libetw2trod_menu f4l2-conlinumayu href2o nam  
L194">.1943/a>The v4l2_ctrl_new_std_menu func >
4/ctrl_han4trl_hand">sup;	nam  
L152">.1573/a>        };	s="line" "am  
L175">sine"  seewne"dl4d _ctr >
4/vill allour v4l2_ia 1414nrssp42'sweed  d ideo4line"idnube uass=by"="li 
L23" cla19long 2"Docum  v4d to  gid erass="am  
L175">s="line" "am  
L175">sine"  seewne"dl4d8ler ctr4
 /vid ef="Documenta > v4l2_io42.. 223/a>life as easy as prli  
 /video4linu4c It will4
 /vid /vs thf2"Docuthe 4ropop42line" nam  
L110">.1103/a>  Note: this is a temporary solu >4/vid vid 4aksyncdeo4linux/v4l2-con4rols.4xt#L23Yinux/v4    txt#2trol defr#contr14l2-us uane"ideo4linux/ defrinu()L1Byd" class=th
 nam  
L110">.1103/a>  Note: this is a temporary solu >4/nit:	nanam  
L182">.1813/a>              2 retu28 /video4linu4/v4l2-con4 hre	.1813/a>              2 retu28 /video4linu4/ v4l2 >
4rols.txt#L24" id 
L24" c4ass="4ine" ns#L17"sanam  
L182">.1813/a>              2 retu28 /video4linu4/v4l2-co24	.1353/a>        struc  v4l2_ctrl *v4l2_ctr4tern);	
 /video4li4ux/v443t2 >
 /video4luta >oument >contrgrabconcontr1ta >n38" rabcontef2""Docmeann bdeo4linux/vidnerass="am  
L175">s="line" "am  
L175">sine"  seewne"dl4ideo4linu4/v4l2-controls.txt#L158"4id 
L458" cl clngeoi2tbecarolsit 5"="l2rolsby">
 /L1isourceL12ypo thd="linnad " clMPEGerass="am  
L175">s="line" "am  
L175">sine"  seewne"dl4i _ctr >
4rols.txt#L28" id 
L28" c4ass="4href="bitlinuro.	lDocumtu /vid5"="l2prog1isdnaam  
L22">.. 223/a>life as easy as prli  
 /video4linu4iusLhref=4cumnta 
 /video4linux/v442-con4"line" nam  
L139">.1393/a>Standard menu controls with a driv4/v4l2-con4rols.txt#L40" id 
L40" c4ass="4ine" nIfs=-
stelassv4l    oo>contrgrabconcontr1uane"ideo4linux/grab()4l2-controlfs2txwork nam  
L139">.1393/a>Standard menu controls with a driv4f=nu[] le4.ment>
 /vihdl,	.1883/a>The v4l2_ctrl_2ew_st2 func href="D4fnit:	
2nam  
L172">.1883/a>The v4l2_ctrl_2ew_st2 func href="D4fv4l2-con4_handmen *f=nueref" cla 4 cume44line"4l2rts"2id t="lih
 eame" nanass="am  ">.1193/a>2) Add control2:	.1443/a>              2 cons2 struc  v4l2_4trl_ops s4itch (c/vi="Docidvideo4l4nux/v44line" nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr4fern);	.1353/a>        struc  v4l2_ctrl *v4l2_ctr4fdeo4linu4REQUENwrite_reg(0x123, u4enruc44s.txt class="line" nn2nam  
L172">.1703/a>              2     27 /video4linu4WER_LINE_4REQUENbreakdeo4linux/v4l4-cont44ne" nanam  
L132">.1383/a>	.1383/a>	.1193/a>2) Add control2:	.1463/a>	41" id4ndler ct.4refsv0deo4linux/v4l2-con4rols.4xt#L181" id 
Landmen, ume"2nam  
L132">.1353/a>        struc 2v4l2_23  0, test_pa4deo4linux4v4l2-controls.txt#L183" 4d 
L145inux/v4l2-controls.txtols.txt#L153" idx/v4l2-93" idx/v4l2-"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h4/v4l2-co24rols2txt#L194" id 
L194"4class4x/v4l2#" c4"  AUDIO_CL_VOLUME (0n2nam  
L142">.1413/a>	.1413/a>	.1503/a>              2-2, -2  v4l2_ctrl_h4/ER_LINE_4<4se ="
 /vid regionitid4o4lin45ref="Documenta >
 /vi..nanass="am  ">.1193/a>2) Add control2:	.1583/a>	.1103/a>  Note: this is a temporary solu >4cu thidat4.14	.1703/a>              2     27 /video4linu4n3'sweed 4s G/TRY/S_EXT_CTRLSlƊuto
" id 
L179" class 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h4/v4l2-con4rols.txt#L123" id 
L123"4class462ideo4linux/v4l2-
" id audio_iluine"[AUDIO_CL_MUTE] n2nam  
L172">.1703/a>              2     27 /video4linu4neo4linux4rols.txt#L64" id 
L64" c4ass="46inux/v4l2-controls.txdeo4linux/v4l2-cov4l2-csa >
" id 
L179" class 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h4/v4l2-co24a href="Documenta >
 /vi4=====4	.1503/a>              2-2, -2  v4l2_ctrl_h4/>
 /viol4rols.txt#L66" id 
L66" c4ass="4ine" n2nam  
L162">.1663/a>              2     26SolidT
 /ren4a d	.1663/a>              2     26SolidT
 /ren4aER_LINE_4nevice driacumescribcuma4rom y46ne" niluine"sv4l    (" ccontrgotteo2trolntrol2trolsrioncontr),vo="li86" class="line=#L1#L24firs
2nam  
L172">.1883/a>The v4l2_ctrl_2ew_st2 func href="D4/v4l2-con4rols.txt#L159" id 
L159"4class46.1883/a>The v4l2_ctrl_2ew_st2 func href="D4/troone!p4a href="Documenta >
 /vi4=====46"Docunt#Losinuro.	.1193/a>2) Add control2:	.1713/a>              2     27 /video4linu4/v4l2-co24rols2txt#L1#L24" id 
ste4ass="4inefaiSo wx/2 ideo4liv4lv4l2-ct#L140 
L148" cAUDIO_VOLUME ass="line" 4llinushould=senerass="am  
L175">s="line" "am  
L175">sine"  seewne"dl4="lClass=4leo4linux/v4l2-co2trols24xt#L14L24" i iasrwo4ribuak2libelongv4l2-o"="liaudio_iluine""2nam  
L142">.1463/a>	.1643/a>        v4l2_c2rl_ne2_std_m=======4/v4l2-co24rols2txt#L194" id 
L194"4class4 0,	.1413/a>	.1353/a>        struc 2v4l2_23  0, test_pa4f="_r=gio4itf="Docu()t2 >
 nd eDoc4menta47valideo4linux/v4l2-coandmen, ume*4l2-
 =141" id er_of8" class="" class 
andmen, um,93" idx/v4l2-e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h4fca updis439">snta >
 nta >
 /vids4ruc  47ne" nanam  
L132">.1383/a>	.1453/a>              2 s32 2kip_mask, s324umenta >
4/vats5"a2ide exionu linu4/ hre479alideo4linux/v4l2-co8" id 
L148" cAUDIO_VOLUME:e"2nam  
L142">.1453/a>              2 s32 2kip_mask, s324(ev l/ hr4f="Docunc cur.1503/a>              2-2, -2  v4l2_ctrl_h4(v4l2-co24rols2txt#L1#L24" id 
ste4ass="4inefai1nam  
L182">.1823/a>        }	.1503/a>              2-2, -2  v4l2_ctrl_h4,	addumen4a >()t2ddontrols >
 /vid4truc 48inux/v4l2-controls.txxxxxxxxx"line"2nam  
L152">.1513/a>        };	.1543/a>              2 &quo25 /video4linu4/v4l2-con4rols.txt#L66" id 
L66" c4ass="48-controls.txt#L106" i8" id 
L148" cCONTRAST"2nam  
L142">.1463/a>	.1503/a>              2-2, -2  v4l2_ctrl_h4,ca updis4Vthe	.1513/a>        };	.1543/a>              2 &quo25 /video4linu4/menta >
4rols.txt#L40" id 
L40" c4ass="489alideo4linux/v4l2-co1id 
  0"2nam  
L152">.1513/a>        };	.1543/a>              2 &quo25 /video4linu4/v4l2-co24rols2txt#L1#L24" id 
ste4ass="4inefai1nam  
L192">.1923/a>to the default2on>
 2a href="Docum4/*on>
   4ref=" href="o the	. */eo4linux4922"DoIs.lies="linnamrols.t#L24foolswv4l2" clequiline
L26" cne" VOLUME 8" i"2nam  
L142">.1463/a>	.1943/a>The v4l2_ctrl_new_std_menu func >
4trl_ops s42o thdeo4linux/v4l2-cont4ols.t4t#L181" id 
L1L106" =14 class="iluine"[AUDIO_CL_VOLUME] n=v4l2-
" id audio_iluine"[AUDIO_CL_VOLUME] nam  
L194">.1943/a>The v4l2_ctrl_new_std_menu func >
4tv4l2-con44o th64deo4linux/v4l2-co4trols49-controls.txtL106ass="iluine"[AUDIO_CL_MUTE] n=v4l2-
" id audio_iluine"[AUDIO_CL_MUTE] nam  
L194">.1943/a>The v4l2_ctrl_new_std_menu func >
4tv4l2-con4 {	.1173/a>	.1173/a>	.1463/a>	.1103/a>  Note: this is a temporary solu >5unls.ideo5linux/v4l2-controls.txt#5178" 50video4linux/v4ldmen,"2nam  
L142">.1453/a>              2 s32 2kip_mask, s325ndler ctr52o thdeo4linux/v4l2-cont5ols.t5t#L181" id 
L181" clas/*iaudioiiluine"sai3fo 
L17d 3L28" t_me" cladiffe co 833nu f300umenta >
 /5ndler ctr54o th64deo4linux/v4l2-co5trols5txt#L181" id 
L181" clandmen," class="livol.18"2nam  
L152">.1513/a>        };	.1513/a>        };	.1943/a>The vts 3hat i30 /video4linu5n5ler ctr54o th64deo4linux/v4l2-co5ass="5ine" n3oak>
Prli3xtrass="4l2trolL172",our3chass3"lin>.Wirss=D5n6ler ctr54{	.1863/a>then there is no need to store it.5n7ler ctr54nux/v4l2-controls.txt#L5ta >
50ref="eo4linux/rv-cleoideo4lupurpot#L129" effedeoument >sux/uas/vs2txv4l2"fanam  
L182">.1813/a>              2 retu28 /video4linu5n8ler ctr54ols.txt#L199" id 
L199"5n thi508" clarr" t#L140lassef2""Doceo4linux. Shelinux/v4ols.tdo"2nam  
L142">.1463/a>	.1103/a>  Note: this is a temporary solu >5_dev is o5 type struc  v4l2_device5	
" id 
L179" class 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h5_dler ctr5rols2txt#L1#L24" id 
ste5ass="51#L181" id 
L14l2-
" id mute =1inux/v4l2-4linux/v4l2-csa >
" id 
L179" class 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h5_dler ctr5ss="line" nam  
L141">.1513/a>51xt#L181" id 
deo4linux/tluine"(2,e4l2-c4l2-
" id vol.18e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h5_3ler ctr5L141">.trols4se  
L14   5     51line" nam  
L194">.1943/a>The v4l2_ctrl_new_std_menu func >
5
 i based5ju hr.Prefsv	e painterss5"on t51line"Ans="lis.txt#L17"alinux/v4rolso2l" ceo4linux/di1ictly:14l2-
" id muteass="linnanass="am  ">.1193/a>2) Add control2:	
Prli3xtrass="4l2trolL172",our3chass3"lin>.Wirss=D5
6ler ctr5rols.txt#L27" id 
L27" c5ass="5ine" n=""Documenribuak2li"li 3iluine"smayube     u F2id="linna,n.tx6" csome3oak>
Prli3xtrass="4l2trolL172",our3chass3"lin>.Wirss=D5
7ler ctr5 of ter,Lhref="Documene 5ju hr5mentous2tsonemute was/ve2txt#ddss=(becarols="li 
L23" cll2-co2trols2s="lineL"generass="am  
L175">s="line" "am  
L175">sine"  seewne"dl5/8ler ctr5 >
 /vi. Swne
 lilo"Docu5epeti51s="line" "am  
L175">sine"  seewne"dl5/ It will5rols.txt#L20" id 
L20" c5ass="5ine" niluine"sof 2od_menu f4lof ca>Stao="li1eo4lactuth
 /cdinantiae" n to 2nam  
L172">.1883/a>The v4l2_ctrl_2ew_st2 func href="D5"Doconref5"Doaenta >
 /vi makescon5s="ls5"line"o="li1istri 
L194" ctumentrolfirs
 class="liL1#L24rluine"smls.txo6" idb 2nam  
L172">.1883/a>The v4l2_ctrl_2ew_st2 func href="D5"dler ctr5a hoeo4linux/v4l2-contro5s.txt52#L181p1is5">,ccontrolsatoument >contrmaine"contr1class="liL1#L24rluine"L129" maine"2nam  
L172">.1883/a>The v4l2_ctrl_2ew_st2 func href="D5"dler ctr5rols.txt#L123" id 
L123"5class524l2-c 3/a>cooument >on" lsatoue:n15fiad #L24rluine"sols.lsatopro v4lslne" nam  
L190">.1903/a>last four arguments. These on>
 s 5  v4l2 >
5e ter,iaur v4l2_io">supd5o4lin52line"
L23" cl-o"="lideo4linux/="lih
 men,lsatoumeuass=6" cnenux luine"L nam  
L190">.1903/a>last four arguments. These on>
 s 5  i based5rols2txt#L194" id 
L194"5class52line" nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr5/ctrl_han5trl_hand">sup;	.1353/a>        struc  v4l2_ctrl *v4l2_ctr5/6ler ctr5rols.txt#L27" id 
L27" c5ass="52validad idintef2""Dococl-o"    u nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr5/7ler ctr5/vill allour v4l2_ia 1415nrssp52ne" nanam  
L132">.1383/a>	 v5l2_io52Stax.	.1383/a>	contris-4licontr1ta > ofanam  
L132">.1383/a>	contris-4licontranam  
L132">.1383/a>	
 msas5/v4l2-con5 hre	mute ols.vol.183isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msas5/ v4l2 >
5rols.txt#L24" id 
L24" c5ass="5ine" nd_menu f4l2-controlcontris-4licontr1ta > would="li1=6" cbdeo>3 89" c>
3isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msas5/ i based5	.1353/a>        struc  v4l2_ctrl *v4l2_ctr5tern);	
 /video4li5ux/v453t2 >
 /vicontris-4licontr1ta > o4lao6" id1 wx/2 v4l2-coid 
Lt#L153" idx/v4l2-s.txt#L)
3isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msas5/6ler ctr5/v4l2-controls.txt#L158"5id 
L53ne" nanam  
L112">.1173/a>	.1383/a>	.1353/a>        struc  v4l2_ctrl *v4l2_ctr5/v4l2-con5rols.txt#L40" id 
L40" c5ass="5ine" n43" id 
L43" class="line" nnnnnnnnnnnnnnnnnnnnnnnnnnnnn nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr5f=nu[] le5.ment>
 /vihdl,	.1713/a>              2     27 /video4linu5fnit:	.1713/a>              2     27 /video4linu5fv4l2-con5_handmen *f=nueref" cla 5 cume544l2-c 3/a>cosL12ypo thd="linnad " cl"utogid /gid ,l"utoexposure/exposure" nam  
L186">.1863/a>then there is no need to store it.5/v4l2-con5rols.txt#L44" id 
L44" c5ass="5ine" n"utoca>tebalantr/rss=balantr/bdeo4balantrssIo4th
 oid s linu hrefon" class=" nam  
L186">.1863/a>then there is no need to store it.5/ i based5itch (c/vi="Docidvideo4l5nux/v54line"lsatodene"mDocs wx/eo4lu2ndeo4l-
stelassv4lx/v4l2dm  v4d to th
 /by"="li 
L23" c" nam  
L186">.1863/a>then there is no need to store it.5/ern);	.1863/a>then there is no need to store it.5/6ler ctr5REQUENwrite_reg(0x123, u5enruc54ne" nanam  
L112">.1173/a>	.1173/a>	.1903/a>last four arguments. These on>
 s 5Wv4l2-con5REQUENwrite_reg(0x456, u5enruc54"Docug_vol/a>le#L17" oper/a>la should=1id 
  d  d ideo4tumentrol 
L23" ctxt#L19  v4d to  nam  
L190">.1903/a>last four arguments. These on>
 s 5ndler ct_5REQUENbreakdeo4linux/v4l5-cont55f2"Domodein   upm  v4d to th
 u nam  
L186">.1863/a>then there is no need to store it.5nta >
 /d5o4linux/v4l2-controls.tx5#L18355nefai1333 603/a>  The re alass="liNULL ererli     3/a>41" id5ndler ct.5refsv0deo4linux/v4l2-con5rols.5xt#L183/a>Stailuine"sv4lpus="lilanuthlmode4l2-controlmanuthls.txt#L# should="lcome3oak>
Prli3xtrass="4l2trolL172",our3chass3"lin>.Wirss=D5deo4linux5v4l2-controls.txt#L183" 5d 
L155inux/annam cLgid sols.lsolvol/a>lecta > o4l learss=(sosg_vol/a>le#L17"  /vid9long4l nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr5/v4l2-co25rols2txt#L194" id 
L194"5class5x/v4l2v4l2-ct# id 
ef=lanuthlmode)ssIo4tddia>la jls.tbcfarL1ad 
L1v4l2-o"lanuthlmode nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr5/ern);	.1353/a>        struc  v4l2_ctrl *v4l2_ctr5/6ler ctr5he	 hres5"a2ide beeno th5dated55validinux/su nam  
L186">.1863/a>then there is no need to store it.5nER_LINE_5<4se ="
 /vid regionitid5o4lin55ne" nanam  
L132">.1383/a>	.1383/a>	
 ofsnt >manuthls.txt#L#u nam  
L186">.1863/a>then there is no need to store it.5cu thidat5.14	.1213/a>You add non-menu controls by calli5n3'sweed 5s G/TRY/S_EXT_CTRLSlƋuto.1213/a>You add non-menu controls by calli5ndler ct.5rols.txt#L123" id 
L123"5class562ideocdmaxduc9s"2nam  
L142">.1463/a>	.1943/a>The v4l2_ctrl_new_std_menu func >
5/v4l2-co25a href="Documenta >
 /vi5=====5	.1943/a>The v4l2_ctrl_new_std_menu func >
5/ern);	manuth_inu, bo#L cet_vol/a>lee"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h5a d	.1173/a>	.1173/a>	.1883/a>The v4l2_ctrl_2ew_st2 func href="D5/troone!p5a href="Documenta >
 /vi5=====56"Doculnt2 >
 /videoctrolopa>Tha""lineL2 
L148TRL_FLAG_VOLATILE26" cne" non-  v4ls.txt#L#u nam  
L186">.1863/a>then there is no need to store it.5/v4l2-con5rols.txt#L121" id 
L121"5class5"line"3/ait 5"=false4l2-controlmanuthls.txt#L# " clve2txtvol/a>leefYinuwould=typo th
  nam  
L186">.1863/a>then there is no need to store it.5/3'sweed 5rols2txt#L1#L24" id 
ste5ass="5inefairols="a  if"="li 
L23" cll2-cleo4lgam clinunt >opa>Thd-o"s=x/lbackmno inux/suas nam  
L186">.1863/a>then there is no need to store it.5/dler ct.5leo4linux/v4l2-co2trols25xt#L15L24" idene"mDocs=by"="li  v4lmode (e.g.n.txautogid sv4lon,s="li 
L23" cll2-co2trols2rolsw nam  
L186">.1863/a>then there is no need to store it.5/eo4linux5deo4linux/v4l2-controls.5xt#L457ne" nlinuno ob id d141#L24" id gid sinux/)
3isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msas5/v4l2-co25rols2txt#L194" id 
L194"5class57line" nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr5
 msas5/ d	.1173/a>	snta >
 nta >
 /vids5ruc  57ne" nUsv4l2-c5"=fid 
L194ctrolensure bdeo4linudoo2trols2innam  
x/v4l24th
 2rols.#L38xanam  
L112">.1173/a>	.1193/a>2) Add control2:	
5/vats5"a2ide exionu linu5/ hre57line" nam  
L110">.1103/a>  Note: this is a temporary solu >5(ev l/ hr5f="Docunc cur.1213/a>You add non-menu controls by calli5(v4l2-co25rols2txt#L1#L24" id 
ste5ass="5inefaiVIDIOC_LOG_STATUS S="line nam  
L121">.1213/a>You add non-menu controls by calli5(dler ct.5 bi/vats1903 href="_r=gi5nitf=58xt#L143" id 
L43" class="line" nam  
L121">.1213/a>You add non-menu controls by calli5(eo4linux5a >()t2ddontrols >
 /vid5truc 58line" nam  
L194">.1943/a>The v4l2_ctrl_new_std_menu func >
5href="deo5linux/v4l2-controls.txt#526" i58
 /vi 
L129octl2rolsw linuno dumpd141#L24" id 4l2-us ofi 3" id 
 -o"="likernel lo nanass="am  ">.1193/a>2) Add control2:	.1193/a>2) Add control2:	s="line" "am  
L175">sine"  seewne"dl5,ca updis5Vthe	s="line" "am  
L175">sine"  seewne"dl5,usLhref=5 /viddeo4linux/v4l2-cont5ols.t588alid6" clinnanass="am  ">.1193/a>2) Add control2:	
5rols.txt#L40" id 
L40" c5ass="58line" nam  
L110">.1103/a>  Note: this is a temporary solu >5her l=rl_5and" cla  su"Documtwo un5s.ide59line" nam  
L121">.1213/a>You add non-menu controls by calli5/v4l2-co25rols2txt#L1#L24" id 
ste5ass="5inefaiDiffe" id H/v4l2-s26" cDiffe" id Vadd  Nodes nam  
L186">.1863/a>then there is no need to store it.5/*on>
   5ref=" href="o the	. */eo5linux59xt#L143" id 
L43" class="line" nL43" class="line" nam  
L121">.1213/a>You add non-menu controls by calli5unls.ideo5linux/v4l2-controls.txt#5178" 5"line" nam  
L194">.1943/a>The v4l2_ctrl_new_std_menu func >
5trl_ops s52o thdeo4linux/v4l2-cont5ols.t5t#L181Usua""li86"  
L13" id 
 linujls.ton" class="lx/v4l2-9-satoumeglobthl;v43isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msas5tv4l2-con54o th64deo4linux/v4l2-co5trols59-contth
  a. Aleodu#idBus=linux/v42lass2-co2tymdiffe" id class="lx/v4l2-sl;v43isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msas5t d	
 msas5tca updis5inux/v4l2-controls.txt#L581" i59ne" n40" ifxt#v4dmen,"a. A_devicenanass="am  ">.1193/a>2) Add control2:	.1393/a>Standard menu controls with a driv5umenta >
5> v4l2_io the	. */eo4lin5x/v4l59line"29troifvid9probl6t
 /a="lre clasid9subdev4l"lvolvcs=but
 /a="lre cla4l2-co nam  
L139">.1393/a>Standard menu controls with a driv6unls.ideo6linux/v4l2-controls.txt#6178" 60videolinuinnam  
blockmnt >  v4d to  mergv4l2xt#vubdevro.	.1393/a>Standard menu controls with a driv6u1ls.ideo6lols2txt#L1#L24" id 
ste6ols.t60nefaio.	.1393/a>Standard menu controls with a driv6u2ls.ideo6lef=" href="o the	. */eo6trols60line"4ldmen," cladevicel-o"    u Now," cladevice81" iine"_vubdev()4line"id9long4l nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr6n3ler ctr64inux/v4l2-controls.txt#6contr60 
L134"rge#vubdevro.	.1193/a>2) Add control2:	.1353/a>        struc  v4l2_ctrl *v4l2_ctr6n5ler ctr64o th64deo4linux/v4l2-co6ass="6ine" nAfne"seaStavubdevrwas/#ddss4llinuline"2-con href2o=  iasdeo4linux/ dd9" class3isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msas6n6ler ctr64{	s="line" "am  
L175">sine"  seewne"dl6n7ler ctr64nux/v4l2-controls.txt#L6ta >
60ref="o.	
 msas6n8ler ctr64ols.txt#L199" id 
L199"6n thi608alid6" c26" c    #L1da. A_devicetxt#L1u F2id="linna:"="liradioidevice eodu#ao="li hre3isee v4l23ctr is no min a. A goodi3
L1413 89" c>
 msas6n9ler ctr64 v4l2_io the	. */eo4lin6d on 6"line"audioii_menu f4l# id 
="lida. A L129vbiidevice eodu#ashareent >sux/uclass=" nam  
L186">.1863/a>then there is no need to store it.6_dev is o6 type struc  v4l2_device6	.1193/a>2) Add control2:	41" id6_dler ctr6ss="line" nam  
L141">.1613/a>61t#L183/alinula2ystel hrefon" x/v4l2-9(e.g.n6" c26radioidevice eodu)u hrefa6" c   1333 603/a>  The re alass="liNULL ererli     3/a>41" id6_3ler ctr6L141">.trols4se  
L14   6     61line"ofi ndeo4l-x/v4l2-9(e.g.n6" c26va. A device eodu)4l2-conlinushould=firs
 2ds1333 603/a>  The re alass="liNULL ererli     3/a>41" id6_4ler ctr6ju hr.Prefsv	e painterss6"on t614l2-c141#L.	41" id6_5ler ctr6ler,L141i hrefter on thi6	<4se61ne" nx/v4l2-9L129tita""li2ds.lsolfirs
 " class bo"="lise
stsu F2id="linna:1333 603/a>  The re alass="liNULL ererli     3/a>41" id6_6ler ctr6rols.txt#L27" id 
L27" c6ass="6ine" nanam  
L112">.1173/a>	.1503/a>              2-2, -2  v4l2_ctrl_h6/8ler ctr6 >
 /vi. Swne
 lilo"Docu6epeti618ef="Documentinux/v4l2-4linux/v4l2-cradio_
L179" class 
4l2-cradio_ine"d 
L148" cAUDIO_MUTE 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6/9ler ctr6rols.txt#L20" id 
L20" c6ass="619ef="Documentinux/v4l2-4linux/v4l2-cda. A_
L179" class 
4l2-cda. A_ine"d 
L148" cBRIGHTNESS 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6"Doconref6"Doaenta >
 /vi makescon6s="ls620ef="Documentinux/v4l2-4linux/v4l2-cda. A_
L179" class 
4l2-cda. A_ine"d 
L148" cCONTRAST 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6"dler ctr6a hoeo4linux/v4l2-contro6s.txt621ef="Documentinux/v4l2- dd9" classv4l2-cda. A_
L179" class 
4l2-cradio_
L179" class 
    n"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6"dler ctr6rols.txt#L123" id 
L123"6class624l2-c2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6"3ler ctr6e ter,iaur v4l2_io">supd6o4lin62line"Tv4llnt2 >
 /video-o"deo4linux/ dd9" classv)eo4la#fills.=fid 
L194-satorolsws nam  
L186">.1863/a>then there is no need to store it.6  i based6rols2txt#L194" id 
L194"6class62line"linuno fills.=ca>Stax.	  The re alass="liNULL ererli     3/a>41" id6/ctrl_han6trl_hand">sup;	.1193/a>2) Add control2:	.1173/a>	  The re alass="liNULL ererli     3/a>41" id6d8ler ctr6
 /vid ef="Documenta > v6l2_io62line" nam  
L139">.1393/a>Standard menu controls with a driv6d It will6
 /vid /vs thf2"Docuthe 6ropop629ef="Documentiol.18" cinux/v4l2-4linux/v4l2-cda. A_
L179" class 
4l2-cine"d 
L148" cAUDIO_VOLUME 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6/vid vid 6aksyncdeo4linux/v4l2-con6rols.630ef="Documentinux/v4l2-4linux/v4l2-cda. A_
L179" class 
4l2-cine"d 
L148" cBRIGHTNESS 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6/dler ctr6rols2txt#L1#L24" id 
ste6ass="631ef="Documentinux/v4l2-4linux/v4l2-cda. A_
L179" class 
4l2-cine"d 
L148" cCONTRAST 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6/v4l2-con6 hre	.1503/a>              2-2, -2  v4l2_ctrl_h6/ v4l2 >
6rols.txt#L24" id 
L24" c6ass="63line" nam  
L194">.1943/a>The v4l2_ctrl_new_std_menu func >
6/ i based6	.1193/a>2) Add control2:	
 /video4li6ux/v463t2 >
F2id="linna:1333 603/a>  The re alass="liNULL ererli     3/a>41" id6/6ler ctr6/v4l2-controls.txt#L158"6id 
L63ne" nanam  
L112">.1173/a>	.1503/a>              2-2, -2  v4l2_ctrl_h6iusLhref=6cumnta 
 /video4linux/v462-con638ef="Documentinux/v4l2-4linux/v4l2-cda. A_
L179" class 
4l2-cda. A_ine"d 
L148" cAUDIO_MUTE 
...e"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6i It will6rols.txt#L40" id 
L40" c6ass="63line" nam  
L110">.1103/a>  Note: this is a temporary solu >6f=nu[] le6.ment>
 /vihdl,	.1103/a>  Note: this is a temporary solu >6fdler ctr6v4l2-controls.txt#L153" 6d 
L164nefaio.	.1103/a>  Note: this is a temporary solu >6fv4l2-con6_handmen *f=nueref" cla 6 cume644l2-c /v4twidlasnanass="am  ">.1193/a>2) Add control2:	.1443/a>              2 cons2 struc  v4l2_6/ i based6itch (c/vi="Docidvideo4l6nux/v64line" nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr6/ern);	.1353/a>        struc  v4l2_ctrl *v4l2_ctr6/6ler ctr6REQUENwrite_reg(0x123, u6enruc64s.txt class="line" nn2nam  
L172">.1703/a>              2     27 /video4linu6WER_LINE_6REQUENbreakdeo4linux/v4l6-cont64ne" nanam  
L132">.1383/a>	sldmenanam  
L132">.1383/a>	sldmennanass="am  ">.1193/a>2) Add control2:	.1213/a>You add non-menu controls by calli6nta >
 /d6o4linux/v4l2-controls.tx6#L18365nefaiBus=sometim s linuinnam  
finds=-
stelassfs 
L ndeo4l-x/v4l2-9bdeo4linudo nam  
L121">.1213/a>You add non-menu controls by calli6nv4l2-con6refsv0deo4linux/v4l2-con6rols.6xt#L18eo4lowou F2id="linna,n.txlinu href  
finds=-iol.18"
stelassfs 
L lvubdevnanass="am  ">.1193/a>2) Add control2:	.1443/a>              2 cons2 struc  v4l2_6/v4l2-co26rols2txt#L194" id 
L194"6class6x/v4l2Yinux/v4do9-satoby"  iane"ideo4linux/find:1333 603/a>  The re alass="liNULL ererli     3/a>41" id6/ern);	
Prli3xtrass="4l2trolL172",our3chass3"lin>.Wirss=D6/6ler ctr6he	 hres5"a2ide beeno th6dated65valideo4linuxandmen," class="livol.18"2nam  
L152">.1513/a>        };	.1383/a>	.1503/a>              2-2, -2  v4l2_ctrl_h6nv4l2-con6 in  only. sufficiend de6antro65line" nam  
L110">.1103/a>  Note: this is a temporary solu >6cu thidat6.14	x/v4l2-9linu href  
b64ri 
Lul wx/re4lin nam  
L110">.1103/a>  Note: this is a temporary solu >6n3'sweed 6s G/TRY/S_EXT_CTRLSlƌuto  The re alass="liNULL ererli     3/a>41" id6ndler ct.6rols.txt#L123" id 
L123"6class664l2-c2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6neo4linux6rols.txt#L64" id 
L64" c6ass="66inux/v4l2-contols.txt#L153" idx/v4l2-93" idx/v4l2-"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6/v4l2-co26a href="Documenta >
 /vi6=====66line" nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr6/ern);	.1503/a>              2-2, -2  v4l2_ctrl_h6a d	.1503/a>              2-2, -2  v4l2_ctrl_h6aER_LINE_6nevice driacumescribcuma6rom y66ne" nanam  
L132">.1383/a>	  The re alass="liNULL ererli     3/a>41" id6nv4l2-con6a href="Documenta >
 /vi6=====66line" nam  
L110">.1103/a>  Note: this is a temporary solu >6/v4l2-con6rols.txt#L121" id 
L121"6class670ef="Document8" id 
L148" cBRIGHTNESS:1333 603/a>  The re alass="liNULL ererli     3/a>41" id6/3'sweed 6rols2txt#L1#L24" id 
ste6ass="67#L181" id 
L181" clas    3nt2  cinux/find9L17" 4l2-c
L179" class"d 
L148" cCONTRASTe"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6/dler ct.6leo4linux/v4l2-co2trols26xt#L167xt#L181" id 
L181" cl..nanass="am  ">.1193/a>2) Add control2:	.1643/a>        v4l2_c2rl_ne2_std_m=======6/v4l2-co26rols2txt#L194" id 
L194"6class67line"Wd/2 ideo4liv4lv4l2-ctby"="lifs2txworks-co2
L179" class.lockmo4laos=x/y"=aken,=so2nam  
L162">.1643/a>        v4l2_c2rl_ne2_std_m=======6/ern);	.1193/a>2) Add control2:	.1173/a>	snta >
 nta >
 /vids6ruc  67ne" nIroifvrlcom117dss=eo4l-o"rols="5"=fid 
L194fs 
Linshrei86" class="linenanass="am  ">.1193/a>2) Add control2:	.1393/a>Standard menu controls with a driv6umenta >
6/vats5"a2ide exionu linu6/ hre67line" nam  
L110">.1103/a>  Note: this is a temporary solu >6(ev l/ hr6f="Docunc cur.1353/a>        struc  v4l2_ctrl *v4l2_ctr6(v4l2-co26rols2txt#L1#L24" id 
ste6ass="6inefai nL43" class="line" nam  
L121">.1213/a>You add non-menu controls by calli6(dler ct.6 bi/vats1903 href="_r=gi6nitf=684l2-c2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h6(eo4linux6a >()t2ddontrols >
 /vid6truc 68line"Wd/2 on" class="lx/v4l2-9is/#ddss bo"andeo4l-uane"ideo4linux/ dd9" class4l2-co nam  
L139">.1393/a>Standard menu controls with a driv6href="deo6linux/v4l2-controls.txt#626" i68
 /viby"default=th
 o.	.1393/a>Standard menu controls with a driv6hern);	.1393/a>Standard menu controls with a driv6h d	.1393/a>Standard menu controls with a driv6hca updis6Vthe	.1393/a>Standard menu controls with a driv6husLhref=6 /viddeo4linux/v4l2-cont6ols.t688alid   tv4l2-co2contris-privatecontr1ta > ofi86" class="l-o"1:1333 603/a>  The re alass="liNULL ererli     3/a>41" id6/menta >
6rols.txt#L40" id 
L40" c6ass="68line" nam  
L110">.1103/a>  Note: this is a temporary solu >6her l=rl_6and" cla  su"Documtwo un6s.ide69video4linux/v4l2-191
ststntols.txt#L153" id
stfig2
L179private  c"2nam  
L142">.1453/a>              2 s32 2kip_mask, s326/v4l2-co26rols2txt#L1#L24" id 
ste6ass="69#L181" id 
L181" clas.="li= 4l2-c
L179custom_ine"2nam  
L142">.1453/a>              2 s32 2kip_mask, s326/dler ct.6ref=" href="o the	. */eo6linux69xt#L181" id 
L181" cl.idi=  
L148" c..n"2nam  
L142">.1453/a>              2 s32 2kip_mask, s326/eo4linux6linux/v4l2-controls.txt#6178" 69s.txt#L181" id 
L181".ls.ti= 4quot;Some/Private Ctrl *v4quot;"2nam  
L142">.1453/a>              2 s32 2kip_mask, s326/ref="deo62o thdeo4linux/v4l2-cont6ols.t69
 /video4linux/v4l2-c.ref=c=2 
L148TRL_TYPE_INTEGER"2nam  
L142">.1453/a>              2 s32 2kip_mask, s326/ern);	.1453/a>              2 s32 2kip_mask, s326/ d	.1453/a>              2 s32 2kip_mask, s326/ca updis6inux/v4l2-controls.txt#L681" i69ref="Documenta >
 /vi.is-privatec=21"2nam  
L142">.1453/a>              2 s32 2kip_mask, s326/usLhref=6rols.txt#L199" id 
L199"6class698" class="line"3 
L17 nam3 
L194">.1943/a>The vts 3hat i30 /video4linu6umenta >
6> v4l2_io the	. */eo4lin6x/v4l69line" nam  
L110">.1103/a>  Note: this is a temporary solu >7unls.ideo7linux/v4l2-controls.txt#7178" 70video4linux/vL106" tinux/v4l2-4lincustom 4l2-cfoo" id 
L179" class"d4l2-c
L179private 
    n"2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h7u1ls.ideo7lols2txt#L1#L24" id 
ste7ols.t70nefai1333 603/a>  The re alass="liNULL ererli     3/a>41" id7u2ls.ideo7lef=" href="o the	. */eo7trols70line"T2l" cx.	.1193/a>2) Add control2:	.1643/a>        v4l2_c2rl_ne2_std_m=======7n4ler ctr74o thdeo4linux/v4l2-cont7id 
L70line" nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr7n5ler ctr74o th64deo4linux/v4l2-co7ass="7ine" n 
L148TRL_TYPE_8TRL_CLASS2Ctrl *v4 nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr7n6ler ctr74{	.1213/a>You add non-menu controls by calli7n7ler ctr74nux/v4l2-controls.txt#L7ta >
70ne" nanam  
L132">.1383/a>	.1193/a>2) Add control2:	.1193/a>2) Add control2:	.1193/a>2) Add control2:	.1193/a>2) Add control2:	.1713/a>714l2-c2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h7_3ler ctr7L141">.trols4se  
L14   7     71line"D id 
s4do9eo4l href2o=  re cbouti86esn129" fs2txworkscxt#L  v4d to th
 /2ds1333 603/a>  The re alass="liNULL ererli     3/a>41" id7_4ler ctr7ju hr.Prefsv	e painterss7"on t714l2-c=-
stelassofi86esstef=c# /2e2txttrolfirs
 class="lbelongv4l2-o"a ne"lclass="1333 603/a>  The re alass="liNULL ererli     3/a>41" id7_5ler ctr7ler,L141i hrefter on thi7	<4se71ne" n.txt# is/#ddssnanass="am  ">.1193/a>2) Add control2:	.1173/a>	.1383/a>		<4 nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr7/9ler ctr7rols.txt#L20" id 
L20" c7ass="71ne" n43" id 
L43" class="line nam  
L135">.1353/a>        struc  v4l2_ctrl *v4l2_ctr7"Doconref7"Doaenta >
 /vi makescon7s="ls72line" nam  
L121">.1213/a>You add non-menu controls by calli7"dler ctr7a hoeo4linux/v4l2-contro7s.txt721ef="Some/9dead 4" cfuxure extens>	<4d-o"lsolv-co:1333 603/a>  The re alass="liNULL ererli     3/a>41" id7"dler ctr7rols.txt#L123" id 
L123"7class724l2-c2nam  
L152">.1503/a>              2-2, -2  v4l2_ctrl_h7"3ler ctr7e ter,iaur v4l2_io">supd7o4lin72line"1) Adds=- 
L148TRL_FLAG_HEXstel hrefinux/sushowo>ad hexadco2maclcdin=x/lofanass="am  ">.1193/a>2) Add control2:	.1193/a>2) Add control2:	sup;	
Prli3xtrass="4l2trolL172",our3chass3"lin>.Wirss=D7/6ler ctr7rols.txt#L27" id 
L27" c7ass="72ne" n2) Iroifvpossible2-o"larksd d141#Ltrl *v4 arr" t#a>Stax.	.1393/a>Standard menu controls with a driv7/7ler ctr7/vill allour v4l2_ia 1417nrssp72ne" nsuccessfu""liwritten9L129#a>Stafai2-ctby"f2id="linna4tddi4l2"#bivl-o"141anass="am  ">.1193/a>2) Add control2:	.1193/a>2) Add control2:	





29" origita" LXR soft3" clby"="linass="am http://sourccfarge.net/projedes/lxr">LXR com1unityef=",n-c5"=experi1193/l d 
sL194by"nass="am mai2to:lxr@ntrol.no">lxr@ntrol.noa hr.


lxr.ntrol.no kiclay host-ctby"nass="am http://www.redpxt#-ntrpro.no">Redpxt# Ltrpro ASef=",npro v4l"sof Ltrolils L.ltv4l2L129oper/a>lasuservicesccontro1995.