• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.&nbsp;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>&nbsp;</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>&nbsp;</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.&nbsp;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>&nbsp;</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>&nbsp;</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&nbsp;<A
728HREF="r13317.htm#V4L2-QUERYCTRL"
729>v4l2_queryctrl</A
730> queryctrl;
731struct&nbsp;<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 (&amp;querymenu, 0, sizeof (querymenu));
742        querymenu.id = queryctrl.id;
743
744        for (querymenu.index = queryctrl.minimum;
745             querymenu.index &lt;= 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>, &amp;querymenu)) {
754                        printf ("  %s\n", querymenu.name);
755                } else {
756                        perror ("VIDIOC_QUERYMENU");
757                        exit (EXIT_FAILURE);
758                }
759        }
760}
761
762memset (&amp;queryctrl, 0, sizeof (queryctrl));
763
764for (queryctrl.id = V4L2_CID_BASE;
765     queryctrl.id &lt; 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>, &amp;queryctrl)) {
774                if (queryctrl.flags &amp; 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>, &amp;queryctrl)) {
799                if (queryctrl.flags &amp; 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&nbsp;<A
827HREF="r13317.htm#V4L2-QUERYCTRL"
828>v4l2_queryctrl</A
829> queryctrl;
830struct&nbsp;<A
831HREF="r10104.htm#V4L2-CONTROL"
832>v4l2_control</A
833> control;
834
835memset (&amp;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>, &amp;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 &amp; V4L2_CTRL_FLAG_DISABLED) {
852        printf ("V4L2_CID_BRIGHTNESS is not supported\n");
853} else {
854        memset (&amp;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>, &amp;control)) {
865                perror ("VIDIOC_S_CTRL");
866                exit (EXIT_FAILURE);
867        }
868}
869
870memset (&amp;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>, &amp;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>, &amp;control)
891            &amp;&amp; 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, &amp;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