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_G_CTRL, VIDIOC_S_CTRL</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_G_CROP, VIDIOC_S_CROP" 17HREF="r9994.htm"><LINK 18REL="NEXT" 19TITLE="ioctl VIDIOC_G_ENC_INDEX" 20HREF="r10211.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="r9994.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="r10211.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-G-CTRL" 74></A 75>ioctl VIDIOC_G_CTRL, VIDIOC_S_CTRL</H1 76><DIV 77CLASS="REFNAMEDIV" 78><A 79NAME="AEN10108" 80></A 81><H2 82>Name</H2 83>VIDIOC_G_CTRL, VIDIOC_S_CTRL -- Get or set the value of a control</DIV 84><DIV 85CLASS="REFSYNOPSISDIV" 86><A 87NAME="AEN10112" 88></A 89><H2 90>Synopsis</H2 91><DIV 92CLASS="FUNCSYNOPSIS" 93><P 94></P 95><A 96NAME="AEN10113" 97></A 98><P 99><CODE 100><CODE 101CLASS="FUNCDEF" 102>int ioctl</CODE 103>(int fd, int request, struct v4l2_control 104*argp);</CODE 105></P 106><P 107></P 108></DIV 109></DIV 110><DIV 111CLASS="REFSECT1" 112><A 113NAME="AEN10123" 114></A 115><H2 116>Arguments</H2 117><P 118></P 119><DIV 120CLASS="VARIABLELIST" 121><DL 122><DT 123><CODE 124CLASS="PARAMETER" 125>fd</CODE 126></DT 127><DD 128><P 129>File descriptor returned by <A 130HREF="r14090.htm" 131><CODE 132CLASS="FUNCTION" 133>open()</CODE 134></A 135>.</P 136></DD 137><DT 138><CODE 139CLASS="PARAMETER" 140>request</CODE 141></DT 142><DD 143><P 144>VIDIOC_G_CTRL, VIDIOC_S_CTRL</P 145></DD 146><DT 147><CODE 148CLASS="PARAMETER" 149>argp</CODE 150></DT 151><DD 152><P 153></P 154></DD 155></DL 156></DIV 157></DIV 158><DIV 159CLASS="REFSECT1" 160><A 161NAME="AEN10143" 162></A 163><H2 164>Description</H2 165><P 166>To get the current value of a control applications 167initialize the <CODE 168CLASS="STRUCTFIELD" 169>id</CODE 170> field of a struct 171<CODE 172CLASS="STRUCTNAME" 173>v4l2_control</CODE 174> and call the 175<CODE 176CLASS="CONSTANT" 177>VIDIOC_G_CTRL</CODE 178> ioctl with a pointer to this 179structure. To change the value of a control applications initialize 180the <CODE 181CLASS="STRUCTFIELD" 182>id</CODE 183> and <CODE 184CLASS="STRUCTFIELD" 185>value</CODE 186> 187fields of a struct <CODE 188CLASS="STRUCTNAME" 189>v4l2_control</CODE 190> and call the 191<CODE 192CLASS="CONSTANT" 193>VIDIOC_S_CTRL</CODE 194> ioctl.</P 195><P 196>When the <CODE 197CLASS="STRUCTFIELD" 198>id</CODE 199> is invalid drivers 200return an <SPAN 201CLASS="ERRORCODE" 202>EINVAL</SPAN 203> error code. When the <CODE 204CLASS="STRUCTFIELD" 205>value</CODE 206> is out 207of bounds drivers can choose to take the closest valid value or return 208an <SPAN 209CLASS="ERRORCODE" 210>ERANGE</SPAN 211> error code, whatever seems more appropriate. However, 212<CODE 213CLASS="CONSTANT" 214>VIDIOC_S_CTRL</CODE 215> is a write-only ioctl, it does not 216return the actual new value.</P 217><P 218>These ioctls work only with user controls. For other 219control classes the <A 220HREF="r10386.htm" 221><CODE 222CLASS="CONSTANT" 223>VIDIOC_G_EXT_CTRLS</CODE 224></A 225>, <A 226HREF="r10386.htm" 227><CODE 228CLASS="CONSTANT" 229>VIDIOC_S_EXT_CTRLS</CODE 230></A 231> or 232<A 233HREF="r10386.htm" 234><CODE 235CLASS="CONSTANT" 236>VIDIOC_TRY_EXT_CTRLS</CODE 237></A 238> must be used.</P 239><DIV 240CLASS="TABLE" 241><A 242NAME="V4L2-CONTROL" 243></A 244><P 245><B 246>Table 1. struct <CODE 247CLASS="STRUCTNAME" 248>v4l2_control</CODE 249></B 250></P 251><TABLE 252BORDER="0" 253FRAME="void" 254WIDTH="100%" 255CLASS="CALSTABLE" 256><COL 257WIDTH="25%" 258TITLE="C1"><COL 259WIDTH="25%" 260TITLE="C2"><COL 261WIDTH="50%" 262TITLE="C3"><TBODY 263VALIGN="TOP" 264><TR 265><TD 266>__u32</TD 267><TD 268><CODE 269CLASS="STRUCTFIELD" 270>id</CODE 271></TD 272><TD 273>Identifies the control, set by the 274application.</TD 275></TR 276><TR 277><TD 278>__s32</TD 279><TD 280><CODE 281CLASS="STRUCTFIELD" 282>value</CODE 283></TD 284><TD 285>New value or current value.</TD 286></TR 287></TBODY 288></TABLE 289></DIV 290></DIV 291><DIV 292CLASS="REFSECT1" 293><A 294NAME="AEN10185" 295></A 296><H2 297>Return Value</H2 298><P 299>On success <SPAN 300CLASS="RETURNVALUE" 301>0</SPAN 302> is returned, on error <SPAN 303CLASS="RETURNVALUE" 304>-1</SPAN 305> and the <CODE 306CLASS="VARNAME" 307>errno</CODE 308> variable is set appropriately:</P 309><P 310></P 311><DIV 312CLASS="VARIABLELIST" 313><DL 314><DT 315><SPAN 316CLASS="ERRORCODE" 317>EINVAL</SPAN 318></DT 319><DD 320><P 321>The struct <A 322HREF="r10104.htm#V4L2-CONTROL" 323>v4l2_control</A 324> <CODE 325CLASS="STRUCTFIELD" 326>id</CODE 327> is 328invalid.</P 329></DD 330><DT 331><SPAN 332CLASS="ERRORCODE" 333>ERANGE</SPAN 334></DT 335><DD 336><P 337>The struct <A 338HREF="r10104.htm#V4L2-CONTROL" 339>v4l2_control</A 340> <CODE 341CLASS="STRUCTFIELD" 342>value</CODE 343> 344is out of bounds.</P 345></DD 346><DT 347><SPAN 348CLASS="ERRORCODE" 349>EBUSY</SPAN 350></DT 351><DD 352><P 353>The control is temporarily not changeable, possibly 354because another applications took over control of the device function 355this control belongs to.</P 356></DD 357></DL 358></DIV 359></DIV 360><DIV 361CLASS="NAVFOOTER" 362><HR 363ALIGN="LEFT" 364WIDTH="100%"><TABLE 365SUMMARY="Footer navigation table" 366WIDTH="100%" 367BORDER="0" 368CELLPADDING="0" 369CELLSPACING="0" 370><TR 371><TD 372WIDTH="33%" 373ALIGN="left" 374VALIGN="top" 375><A 376HREF="r9994.htm" 377ACCESSKEY="P" 378>Prev</A 379></TD 380><TD 381WIDTH="34%" 382ALIGN="center" 383VALIGN="top" 384><A 385HREF="book1.htm" 386ACCESSKEY="H" 387>Home</A 388></TD 389><TD 390WIDTH="33%" 391ALIGN="right" 392VALIGN="top" 393><A 394HREF="r10211.htm" 395ACCESSKEY="N" 396>Next</A 397></TD 398></TR 399><TR 400><TD 401WIDTH="33%" 402ALIGN="left" 403VALIGN="top" 404>ioctl VIDIOC_G_CROP, VIDIOC_S_CROP</TD 405><TD 406WIDTH="34%" 407ALIGN="center" 408VALIGN="top" 409><A 410HREF="r7624.htm" 411ACCESSKEY="U" 412>Up</A 413></TD 414><TD 415WIDTH="33%" 416ALIGN="right" 417VALIGN="top" 418>ioctl VIDIOC_G_ENC_INDEX</TD 419></TR 420></TABLE 421></DIV 422></BODY 423></HTML 424> 425