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>Changes of the V4L2 API</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="Changes"
14HREF="c14595.htm"><LINK
15REL="PREVIOUS"
16TITLE="Changes"
17HREF="c14595.htm"><LINK
18REL="NEXT"
19TITLE="Relation of V4L2 to other Linux multimedia APIs"
20HREF="x16430.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="c14595.htm"
49ACCESSKEY="P"
50>Prev</A
51></TD
52><TD
53WIDTH="80%"
54ALIGN="center"
55VALIGN="bottom"
56>Chapter 6. Changes</TD
57><TD
58WIDTH="10%"
59ALIGN="right"
60VALIGN="bottom"
61><A
62HREF="x16430.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="HIST-V4L2"
77>6.2. Changes of the V4L2 API</A
78></H1
79><P
80>Soon after the V4L API was added to the kernel it was
81criticised as too inflexible. In August 1998 Bill Dirks proposed a
82number of improvements and began to work on documentation, example
83drivers and applications. With the help of other volunteers this
84eventually became the V4L2 API, not just an extension but a
85replacement for the V4L API. However it took another four years and
86two stable kernel releases until the new API was finally accepted for
87inclusion into the kernel in its present form.</P
88><DIV
89CLASS="SECTION"
90><H2
91CLASS="SECTION"
92><A
93NAME="AEN15449"
94>6.2.1. Early Versions</A
95></H2
96><P
97>1998-08-20: First version.</P
98><P
99>1998-08-27: The <A
100HREF="r14390.htm"
101><CODE
102CLASS="FUNCTION"
103>select()</CODE
104></A
105> function was introduced.</P
106><P
107>1998-09-10: New video standard interface.</P
108><P
109>1998-09-18: The <CODE
110CLASS="CONSTANT"
111>VIDIOC_NONCAP</CODE
112> ioctl
113was replaced by the otherwise meaningless <CODE
114CLASS="CONSTANT"
115>O_TRUNC</CODE
116>
117<A
118HREF="r14090.htm"
119><CODE
120CLASS="FUNCTION"
121>open()</CODE
122></A
123> flag, and the aliases <CODE
124CLASS="CONSTANT"
125>O_NONCAP</CODE
126> and
127<CODE
128CLASS="CONSTANT"
129>O_NOIO</CODE
130> were defined. Applications can set this
131flag if they intend to access controls only, as opposed to capture
132applications which need exclusive access. The
133<CODE
134CLASS="CONSTANT"
135>VIDEO_STD_XXX</CODE
136> identifiers are now ordinals
137instead of flags, and the <CODE
138CLASS="FUNCTION"
139>video_std_construct()</CODE
140>
141helper function takes id and transmission arguments.</P
142><P
143>1998-09-28: Revamped video standard. Made video controls
144individually enumerable.</P
145><P
146>1998-10-02: The <CODE
147CLASS="STRUCTFIELD"
148>id</CODE
149> field was
150removed from struct <CODE
151CLASS="STRUCTNAME"
152>video_standard</CODE
153> and the
154color subcarrier fields were renamed. The <A
155HREF="r13641.htm"
156><CODE
157CLASS="CONSTANT"
158>VIDIOC_QUERYSTD</CODE
159></A
160> ioctl was
161renamed to <A
162HREF="r9288.htm"
163><CODE
164CLASS="CONSTANT"
165>VIDIOC_ENUMSTD</CODE
166></A
167>, <A
168HREF="r11217.htm"
169><CODE
170CLASS="CONSTANT"
171>VIDIOC_G_INPUT</CODE
172></A
173> to <A
174HREF="r8936.htm"
175><CODE
176CLASS="CONSTANT"
177>VIDIOC_ENUMINPUT</CODE
178></A
179>. A
180first draft of the Codec API was released.</P
181><P
182>1998-11-08: Many minor changes. Most symbols have been
183renamed. Some material changes to struct&nbsp;<A
184HREF="r13105.htm#V4L2-CAPABILITY"
185>v4l2_capability</A
186>.</P
187><P
188>1998-11-12: The read/write directon of some ioctls was misdefined.</P
189><P
190>1998-11-14: <CODE
191CLASS="CONSTANT"
192>V4L2_PIX_FMT_RGB24</CODE
193>
194changed to <CODE
195CLASS="CONSTANT"
196>V4L2_PIX_FMT_BGR24</CODE
197>, and
198<CODE
199CLASS="CONSTANT"
200>V4L2_PIX_FMT_RGB32</CODE
201> changed to
202<CODE
203CLASS="CONSTANT"
204>V4L2_PIX_FMT_BGR32</CODE
205>. Audio controls are now
206accessible with the <A
207HREF="r10104.htm"
208><CODE
209CLASS="CONSTANT"
210>VIDIOC_G_CTRL</CODE
211></A
212> and <A
213HREF="r10104.htm"
214><CODE
215CLASS="CONSTANT"
216>VIDIOC_S_CTRL</CODE
217></A
218> ioctls under
219names starting with <CODE
220CLASS="CONSTANT"
221>V4L2_CID_AUDIO</CODE
222>. The
223<CODE
224CLASS="CONSTANT"
225>V4L2_MAJOR</CODE
226> define was removed from
227<TT
228CLASS="FILENAME"
229>videodev.h</TT
230> since it was only used once in the
231<TT
232CLASS="FILENAME"
233>videodev</TT
234> kernel module. The
235<CODE
236CLASS="CONSTANT"
237>YUV422</CODE
238> and <CODE
239CLASS="CONSTANT"
240>YUV411</CODE
241> planar
242image formats were added.</P
243><P
244>1998-11-28: A few ioctl symbols changed. Interfaces for codecs and
245video output devices were added.</P
246><P
247>1999-01-14: A raw VBI capture interface was added.</P
248><P
249>1999-01-19: The <CODE
250CLASS="CONSTANT"
251>VIDIOC_NEXTBUF</CODE
252> ioctl
253      was removed.</P
254></DIV
255><DIV
256CLASS="SECTION"
257><H2
258CLASS="SECTION"
259><A
260NAME="AEN15499"
261>6.2.2. V4L2 Version 0.16 1999-01-31</A
262></H2
263><P
264>1999-01-27: There is now one QBUF ioctl, VIDIOC_QWBUF and VIDIOC_QRBUF
265are gone. VIDIOC_QBUF takes a v4l2_buffer as a parameter. Added
266digital zoom (cropping) controls.</P
267></DIV
268><DIV
269CLASS="SECTION"
270><H2
271CLASS="SECTION"
272><A
273NAME="AEN15502"
274>6.2.3. V4L2 Version 0.18 1999-03-16</A
275></H2
276><P
277>Added a v4l to V4L2 ioctl compatibility layer to
278videodev.c. Driver writers, this changes how you implement your ioctl
279handler. See the Driver Writer's Guide. Added some more control id
280codes.</P
281></DIV
282><DIV
283CLASS="SECTION"
284><H2
285CLASS="SECTION"
286><A
287NAME="AEN15505"
288>6.2.4. V4L2 Version 0.19 1999-06-05</A
289></H2
290><P
291>1999-03-18: Fill in the category and catname fields of
292v4l2_queryctrl objects before passing them to the driver. Required a
293minor change to the VIDIOC_QUERYCTRL handlers in the sample
294drivers.</P
295><P
296>1999-03-31: Better compatibility for v4l memory capture
297ioctls. Requires changes to drivers to fully support new compatibility
298features, see Driver Writer's Guide and v4l2cap.c. Added new control
299IDs: V4L2_CID_HFLIP, _VFLIP. Changed V4L2_PIX_FMT_YUV422P to _YUV422P,
300and _YUV411P to _YUV411P.</P
301><P
302>1999-04-04: Added a few more control IDs.</P
303><P
304>1999-04-07: Added the button control type.</P
305><P
306>1999-05-02: Fixed a typo in videodev.h, and added the
307V4L2_CTRL_FLAG_GRAYED (later V4L2_CTRL_FLAG_GRABBED) flag.</P
308><P
309>1999-05-20: Definition of VIDIOC_G_CTRL was wrong causing
310a malfunction of this ioctl.</P
311><P
312>1999-06-05: Changed the value of
313V4L2_CID_WHITENESS.</P
314></DIV
315><DIV
316CLASS="SECTION"
317><H2
318CLASS="SECTION"
319><A
320NAME="AEN15514"
321>6.2.5. V4L2 Version 0.20 (1999-09-10)</A
322></H2
323><P
324>Version 0.20 introduced a number of changes which were
325<SPAN
326CLASS="emphasis"
327><I
328CLASS="EMPHASIS"
329>not backward compatible</I
330></SPAN
331> with 0.19 and earlier
332versions. Purpose of these changes was to simplify the API, while
333making it more extensible and following common Linux driver API
334conventions.</P
335><P
336></P
337><OL
338TYPE="1"
339><LI
340><P
341>Some typos in <CODE
342CLASS="CONSTANT"
343>V4L2_FMT_FLAG</CODE
344>
345symbols were fixed. struct&nbsp;<A
346HREF="x6570.htm#V4L2-CLIP"
347>v4l2_clip</A
348> was changed for compatibility with
349v4l. (1999-08-30)</P
350></LI
351><LI
352><P
353><CODE
354CLASS="CONSTANT"
355>V4L2_TUNER_SUB_LANG1</CODE
356> was added.
357(1999-09-05)</P
358></LI
359><LI
360><P
361>All ioctl() commands that used an integer argument now
362take a pointer to an integer. Where it makes sense, ioctls will return
363the actual new value in the integer pointed to by the argument, a
364common convention in the V4L2 API. The affected ioctls are:
365VIDIOC_PREVIEW, VIDIOC_STREAMON, VIDIOC_STREAMOFF, VIDIOC_S_FREQ,
366VIDIOC_S_INPUT, VIDIOC_S_OUTPUT, VIDIOC_S_EFFECT. For example
367<PRE
368CLASS="PROGRAMLISTING"
369>err = ioctl (fd, VIDIOC_XXX, V4L2_XXX);</PRE
370> becomes <PRE
371CLASS="PROGRAMLISTING"
372>int a = V4L2_XXX; err = ioctl(fd, VIDIOC_XXX, &amp;a);</PRE
373>
374          </P
375></LI
376><LI
377><P
378>All the different get- and set-format commands were
379swept into one <A
380HREF="r10944.htm"
381><CODE
382CLASS="CONSTANT"
383>VIDIOC_G_FMT</CODE
384></A
385> and <A
386HREF="r10944.htm"
387><CODE
388CLASS="CONSTANT"
389>VIDIOC_S_FMT</CODE
390></A
391> ioctl taking a union
392and a type field selecting the union member as parameter. Purpose is to
393simplify the API by eliminating several ioctls and to allow new and
394driver private data streams without adding new ioctls.</P
395><P
396>This change obsoletes the following ioctls:
397<CODE
398CLASS="CONSTANT"
399>VIDIOC_S_INFMT</CODE
400>,
401<CODE
402CLASS="CONSTANT"
403>VIDIOC_G_INFMT</CODE
404>,
405<CODE
406CLASS="CONSTANT"
407>VIDIOC_S_OUTFMT</CODE
408>,
409<CODE
410CLASS="CONSTANT"
411>VIDIOC_G_OUTFMT</CODE
412>,
413<CODE
414CLASS="CONSTANT"
415>VIDIOC_S_VBIFMT</CODE
416> and
417<CODE
418CLASS="CONSTANT"
419>VIDIOC_G_VBIFMT</CODE
420>. The image format structure
421<CODE
422CLASS="STRUCTNAME"
423>v4l2_format</CODE
424> was renamed to struct&nbsp;<A
425HREF="c2030.htm#V4L2-PIX-FORMAT"
426>v4l2_pix_format</A
427>,
428while struct&nbsp;<A
429HREF="r10944.htm#V4L2-FORMAT"
430>v4l2_format</A
431> is now the envelopping structure for all format
432negotiations.</P
433></LI
434><LI
435><P
436>Similar to the changes above, the
437<CODE
438CLASS="CONSTANT"
439>VIDIOC_G_PARM</CODE
440> and
441<CODE
442CLASS="CONSTANT"
443>VIDIOC_S_PARM</CODE
444> ioctls were merged with
445<CODE
446CLASS="CONSTANT"
447>VIDIOC_G_OUTPARM</CODE
448> and
449<CODE
450CLASS="CONSTANT"
451>VIDIOC_S_OUTPARM</CODE
452>. A
453<CODE
454CLASS="STRUCTFIELD"
455>type</CODE
456> field in the new struct&nbsp;<A
457HREF="r11680.htm#V4L2-STREAMPARM"
458>v4l2_streamparm</A
459>
460selects the respective union member.</P
461><P
462>This change obsoletes the
463<CODE
464CLASS="CONSTANT"
465>VIDIOC_G_OUTPARM</CODE
466> and
467<CODE
468CLASS="CONSTANT"
469>VIDIOC_S_OUTPARM</CODE
470> ioctls.</P
471></LI
472><LI
473><P
474>Control enumeration was simplified, and two new
475control flags were introduced and one dropped. The
476<CODE
477CLASS="STRUCTFIELD"
478>catname</CODE
479> field was replaced by a
480<CODE
481CLASS="STRUCTFIELD"
482>group</CODE
483> field.</P
484><P
485>Drivers can now flag unsupported and temporarily
486unavailable controls with <CODE
487CLASS="CONSTANT"
488>V4L2_CTRL_FLAG_DISABLED</CODE
489>
490and <CODE
491CLASS="CONSTANT"
492>V4L2_CTRL_FLAG_GRABBED</CODE
493> respectively. The
494<CODE
495CLASS="STRUCTFIELD"
496>group</CODE
497> name indicates a possibly narrower
498classification than the <CODE
499CLASS="STRUCTFIELD"
500>category</CODE
501>. In other
502words, there may be multiple groups within a category. Controls within
503a group would typically be drawn within a group box. Controls in
504different categories might have a greater separation, or may even
505appear in separate windows.</P
506></LI
507><LI
508><P
509>The struct&nbsp;<A
510HREF="x5953.htm#V4L2-BUFFER"
511>v4l2_buffer</A
512> <CODE
513CLASS="STRUCTFIELD"
514>timestamp</CODE
515>
516was changed to a 64 bit integer, containing the sampling or output
517time of the frame in nanoseconds. Additionally timestamps will be in
518absolute system time, not starting from zero at the beginning of a
519stream. The data type name for timestamps is stamp_t, defined as a
520signed 64-bit integer. Output devices should not send a buffer out
521until the time in the timestamp field has arrived. I would like to
522follow SGI's lead, and adopt a multimedia timestamping system like
523their UST (Unadjusted System Time). See
524http://reality.sgi.com/cpirazzi_engr/lg/time/intro.html. [This link is
525no longer valid.] UST uses timestamps that are 64-bit signed integers
526(not struct timeval's) and given in nanosecond units. The UST clock
527starts at zero when the system is booted and runs continuously and
528uniformly. It takes a little over 292 years for UST to overflow. There
529is no way to set the UST clock. The regular Linux time-of-day clock
530can be changed periodically, which would cause errors if it were being
531used for timestamping a multimedia stream. A real UST style clock will
532require some support in the kernel that is not there yet. But in
533anticipation, I will change the timestamp field to a 64-bit integer,
534and I will change the v4l2_masterclock_gettime() function (used only
535by drivers) to return a 64-bit integer.</P
536></LI
537><LI
538><P
539>A <CODE
540CLASS="STRUCTFIELD"
541>sequence</CODE
542> field was added
543to struct&nbsp;<A
544HREF="x5953.htm#V4L2-BUFFER"
545>v4l2_buffer</A
546>. The <CODE
547CLASS="STRUCTFIELD"
548>sequence</CODE
549> field counts
550captured frames, it is ignored by output devices. When a capture
551driver drops a frame, the sequence number of that frame is
552skipped.</P
553></LI
554></OL
555></DIV
556><DIV
557CLASS="SECTION"
558><H2
559CLASS="SECTION"
560><A
561NAME="AEN15575"
562>6.2.6. V4L2 Version 0.20 incremental changes</A
563></H2
564><P
565>1999-12-23: In struct&nbsp;<A
566HREF="x7013.htm#V4L2-VBI-FORMAT"
567>v4l2_vbi_format</A
568> the
569<CODE
570CLASS="STRUCTFIELD"
571>reserved1</CODE
572> field became
573<CODE
574CLASS="STRUCTFIELD"
575>offset</CODE
576>. Previously drivers were required to
577clear the <CODE
578CLASS="STRUCTFIELD"
579>reserved1</CODE
580> field.</P
581><P
582>2000-01-13: The
583      <CODE
584CLASS="CONSTANT"
585>V4L2_FMT_FLAG_NOT_INTERLACED</CODE
586> flag was added.</P
587><P
588>2000-07-31: The <TT
589CLASS="FILENAME"
590>linux/poll.h</TT
591> header
592is now included by <TT
593CLASS="FILENAME"
594>videodev.h</TT
595> for compatibility
596with the original <TT
597CLASS="FILENAME"
598>videodev.h</TT
599> file.</P
600><P
601>2000-11-20: <CODE
602CLASS="CONSTANT"
603>V4L2_TYPE_VBI_OUTPUT</CODE
604> and
605<CODE
606CLASS="CONSTANT"
607>V4L2_PIX_FMT_Y41P</CODE
608> were added.</P
609><P
610>2000-11-25: <CODE
611CLASS="CONSTANT"
612>V4L2_TYPE_VBI_INPUT</CODE
613> was
614added.</P
615><P
616>2000-12-04: A couple typos in symbol names were fixed.</P
617><P
618>2001-01-18: To avoid namespace conflicts the
619<CODE
620CLASS="CONSTANT"
621>fourcc</CODE
622> macro defined in the
623<TT
624CLASS="FILENAME"
625>videodev.h</TT
626> header file was renamed to
627<CODE
628CLASS="CONSTANT"
629>v4l2_fourcc</CODE
630>.</P
631><P
632>2001-01-25: A possible driver-level compatibility problem
633between the <TT
634CLASS="FILENAME"
635>videodev.h</TT
636> file in Linux 2.4.0 and
637the <TT
638CLASS="FILENAME"
639>videodev.h</TT
640> file included in the
641<TT
642CLASS="FILENAME"
643>videodevX</TT
644> patch was fixed. Users of an earlier
645version of <TT
646CLASS="FILENAME"
647>videodevX</TT
648> on Linux 2.4.0 should
649recompile their V4L and V4L2 drivers.</P
650><P
651>2001-01-26: A possible kernel-level incompatibility
652between the <TT
653CLASS="FILENAME"
654>videodev.h</TT
655> file in the
656<TT
657CLASS="FILENAME"
658>videodevX</TT
659> patch and the
660<TT
661CLASS="FILENAME"
662>videodev.h</TT
663> file in Linux 2.2.x with devfs patches
664applied was fixed.</P
665><P
666>2001-03-02: Certain V4L ioctls which pass data in both
667direction although they are defined with read-only parameter, did not
668work correctly through the backward compatibility layer.
669[Solution?]</P
670><P
671>2001-04-13: Big endian 16-bit RGB formats were added.</P
672><P
673>2001-09-17: New YUV formats and the <A
674HREF="r11094.htm"
675><CODE
676CLASS="CONSTANT"
677>VIDIOC_G_FREQUENCY</CODE
678></A
679> and
680<A
681HREF="r11094.htm"
682><CODE
683CLASS="CONSTANT"
684>VIDIOC_S_FREQUENCY</CODE
685></A
686> ioctls were added. (The old
687<CODE
688CLASS="CONSTANT"
689>VIDIOC_G_FREQ</CODE
690> and
691<CODE
692CLASS="CONSTANT"
693>VIDIOC_S_FREQ</CODE
694> ioctls did not take multiple tuners
695into account.)</P
696><P
697>2000-09-18: <CODE
698CLASS="CONSTANT"
699>V4L2_BUF_TYPE_VBI</CODE
700> was
701added. This may <SPAN
702CLASS="emphasis"
703><I
704CLASS="EMPHASIS"
705>break compatibility</I
706></SPAN
707> as the
708<A
709HREF="r10944.htm"
710><CODE
711CLASS="CONSTANT"
712>VIDIOC_G_FMT</CODE
713></A
714> and <A
715HREF="r10944.htm"
716><CODE
717CLASS="CONSTANT"
718>VIDIOC_S_FMT</CODE
719></A
720> ioctls may fail now if the struct
721<CODE
722CLASS="STRUCTNAME"
723>v4l2_fmt</CODE
724> <CODE
725CLASS="STRUCTFIELD"
726>type</CODE
727>
728field does not contain <CODE
729CLASS="CONSTANT"
730>V4L2_BUF_TYPE_VBI</CODE
731>. In the
732documentation of the struct&nbsp;<A
733HREF="x7013.htm#V4L2-VBI-FORMAT"
734>v4l2_vbi_format</A
735>
736<CODE
737CLASS="STRUCTFIELD"
738>offset</CODE
739> field the ambiguous phrase "rising
740edge" was changed to "leading edge".</P
741></DIV
742><DIV
743CLASS="SECTION"
744><H2
745CLASS="SECTION"
746><A
747NAME="AEN15628"
748>6.2.7. V4L2 Version 0.20 2000-11-23</A
749></H2
750><P
751>A number of changes were made to the raw VBI
752interface.</P
753><P
754></P
755><OL
756TYPE="1"
757><LI
758><P
759>Figures clarifying the line numbering scheme were
760added to the V4L2 API specification. The
761<CODE
762CLASS="STRUCTFIELD"
763>start</CODE
764>[0] and
765<CODE
766CLASS="STRUCTFIELD"
767>start</CODE
768>[1] fields no longer count line
769numbers beginning at zero. Rationale: a) The previous definition was
770unclear. b) The <CODE
771CLASS="STRUCTFIELD"
772>start</CODE
773>[] values are ordinal
774numbers. c) There is no point in inventing a new line numbering
775scheme. We now use line number as defined by ITU-R, period.
776Compatibility: Add one to the start values. Applications depending on
777the previous semantics may not function correctly.</P
778></LI
779><LI
780><P
781>The restriction "count[0] &gt; 0 and count[1] &gt; 0"
782has been relaxed  to "(count[0] + count[1]) &gt; 0". Rationale:
783Drivers may allocate resources at scan line granularity and some data
784services are transmitted only on the first field. The comment that
785both <CODE
786CLASS="STRUCTFIELD"
787>count</CODE
788> values will usually be equal is
789misleading and pointless and has been removed. This change
790<SPAN
791CLASS="emphasis"
792><I
793CLASS="EMPHASIS"
794>breaks compatibility</I
795></SPAN
796> with earlier versions:
797Drivers may return EINVAL, applications may not function
798correctly.</P
799></LI
800><LI
801><P
802>Drivers are again permitted to return negative
803(unknown) start values as proposed earlier. Why this feature was
804dropped is unclear. This change may <SPAN
805CLASS="emphasis"
806><I
807CLASS="EMPHASIS"
808>break
809compatibility</I
810></SPAN
811> with applications depending on the start
812values being positive. The use of <CODE
813CLASS="CONSTANT"
814>EBUSY</CODE
815> and
816<CODE
817CLASS="CONSTANT"
818>EINVAL</CODE
819> error codes with the <A
820HREF="r10944.htm"
821><CODE
822CLASS="CONSTANT"
823>VIDIOC_S_FMT</CODE
824></A
825> ioctl
826was clarified. The <SPAN
827CLASS="ERRORCODE"
828>EBUSY</SPAN
829> error code was finally documented, and the
830<CODE
831CLASS="STRUCTFIELD"
832>reserved2</CODE
833> field which was previously
834mentioned only in the <TT
835CLASS="FILENAME"
836>videodev.h</TT
837> header
838file.</P
839></LI
840><LI
841><P
842>New buffer types
843<CODE
844CLASS="CONSTANT"
845>V4L2_TYPE_VBI_INPUT</CODE
846> and
847<CODE
848CLASS="CONSTANT"
849>V4L2_TYPE_VBI_OUTPUT</CODE
850> were added. The former is an
851alias for the old <CODE
852CLASS="CONSTANT"
853>V4L2_TYPE_VBI</CODE
854>, the latter was
855missing in the <TT
856CLASS="FILENAME"
857>videodev.h</TT
858> file.</P
859></LI
860></OL
861></DIV
862><DIV
863CLASS="SECTION"
864><H2
865CLASS="SECTION"
866><A
867NAME="AEN15657"
868>6.2.8. V4L2 Version 0.20 2002-07-25</A
869></H2
870><P
871>Added sliced VBI interface proposal.</P
872></DIV
873><DIV
874CLASS="SECTION"
875><H2
876CLASS="SECTION"
877><A
878NAME="AEN15660"
879>6.2.9. V4L2 in Linux 2.5.46, 2002-10</A
880></H2
881><P
882>Around October-November 2002, prior to an announced
883feature freeze of Linux 2.5, the API was revised, drawing from
884experience with V4L2 0.20. This unnamed version was finally merged
885into Linux 2.5.46.</P
886><P
887></P
888><OL
889TYPE="1"
890><LI
891><P
892>As specified in <A
893HREF="c174.htm#RELATED"
894>Section 1.1.2</A
895>, drivers
896must make related device functions available under all minor device
897numbers.</P
898></LI
899><LI
900><P
901>The <A
902HREF="r14090.htm"
903><CODE
904CLASS="FUNCTION"
905>open()</CODE
906></A
907> function requires access mode
908<CODE
909CLASS="CONSTANT"
910>O_RDWR</CODE
911> regardless of the device type. All V4L2
912drivers exchanging data with applications must support the
913<CODE
914CLASS="CONSTANT"
915>O_NONBLOCK</CODE
916> flag. The <CODE
917CLASS="CONSTANT"
918>O_NOIO</CODE
919>
920flag, a V4L2 symbol which aliased the meaningless
921<CODE
922CLASS="CONSTANT"
923>O_TRUNC</CODE
924> to indicate accesses without data
925exchange (panel applications) was dropped. Drivers must stay in "panel
926mode" until the application attempts to initiate a data exchange, see
927<A
928HREF="c174.htm#OPEN"
929>Section 1.1</A
930>.</P
931></LI
932><LI
933><P
934>The struct&nbsp;<A
935HREF="r13105.htm#V4L2-CAPABILITY"
936>v4l2_capability</A
937> changed dramatically. Note that
938also the size of the structure changed, which is encoded in the ioctl
939request code, thus older V4L2 devices will respond with an <SPAN
940CLASS="ERRORCODE"
941>EINVAL</SPAN
942> error code to
943the new <A
944HREF="r13105.htm"
945><CODE
946CLASS="CONSTANT"
947>VIDIOC_QUERYCAP</CODE
948></A
949> ioctl.</P
950><P
951>There are new fields to identify the driver, a new (as
952of yet unspecified) device function
953<CODE
954CLASS="CONSTANT"
955>V4L2_CAP_RDS_CAPTURE</CODE
956>, the
957<CODE
958CLASS="CONSTANT"
959>V4L2_CAP_AUDIO</CODE
960> flag indicates if the device has
961any audio connectors, another I/O capability
962<CODE
963CLASS="CONSTANT"
964>V4L2_CAP_ASYNCIO</CODE
965> can be flagged. In response to
966these changes the <CODE
967CLASS="STRUCTFIELD"
968>type</CODE
969> field became a bit
970set and was merged into the <CODE
971CLASS="STRUCTFIELD"
972>flags</CODE
973> field.
974<CODE
975CLASS="CONSTANT"
976>V4L2_FLAG_TUNER</CODE
977> was renamed to
978<CODE
979CLASS="CONSTANT"
980>V4L2_CAP_TUNER</CODE
981>,
982<CODE
983CLASS="CONSTANT"
984>V4L2_CAP_VIDEO_OVERLAY</CODE
985> replaced
986<CODE
987CLASS="CONSTANT"
988>V4L2_FLAG_PREVIEW</CODE
989> and
990<CODE
991CLASS="CONSTANT"
992>V4L2_CAP_VBI_CAPTURE</CODE
993> and
994<CODE
995CLASS="CONSTANT"
996>V4L2_CAP_VBI_OUTPUT</CODE
997> replaced
998<CODE
999CLASS="CONSTANT"
1000>V4L2_FLAG_DATA_SERVICE</CODE
1001>.
1002<CODE
1003CLASS="CONSTANT"
1004>V4L2_FLAG_READ</CODE
1005> and
1006<CODE
1007CLASS="CONSTANT"
1008>V4L2_FLAG_WRITE</CODE
1009> were merged into
1010<CODE
1011CLASS="CONSTANT"
1012>V4L2_CAP_READWRITE</CODE
1013>.</P
1014><P
1015>The redundant fields
1016<CODE
1017CLASS="STRUCTFIELD"
1018>inputs</CODE
1019>, <CODE
1020CLASS="STRUCTFIELD"
1021>outputs</CODE
1022>
1023and <CODE
1024CLASS="STRUCTFIELD"
1025>audios</CODE
1026> were removed. These properties
1027can be determined as described in <A
1028HREF="x309.htm"
1029>Section 1.4</A
1030> and <A
1031HREF="x341.htm"
1032>Section 1.5</A
1033>.</P
1034><P
1035>The somewhat volatile and therefore barely useful
1036fields <CODE
1037CLASS="STRUCTFIELD"
1038>maxwidth</CODE
1039>,
1040<CODE
1041CLASS="STRUCTFIELD"
1042>maxheight</CODE
1043>,
1044<CODE
1045CLASS="STRUCTFIELD"
1046>minwidth</CODE
1047>,
1048<CODE
1049CLASS="STRUCTFIELD"
1050>minheight</CODE
1051>,
1052<CODE
1053CLASS="STRUCTFIELD"
1054>maxframerate</CODE
1055> were removed. This information
1056is available as described in <A
1057HREF="x1859.htm"
1058>Section 1.10</A
1059> and
1060<A
1061HREF="x448.htm"
1062>Section 1.7</A
1063>.</P
1064><P
1065><CODE
1066CLASS="CONSTANT"
1067>V4L2_FLAG_SELECT</CODE
1068> was removed. We
1069believe the select() function is important enough to require support
1070of it in all V4L2 drivers exchanging data with applications. The
1071redundant <CODE
1072CLASS="CONSTANT"
1073>V4L2_FLAG_MONOCHROME</CODE
1074> flag was removed,
1075this information is available as described in <A
1076HREF="x1859.htm"
1077>Section 1.10</A
1078>.</P
1079></LI
1080><LI
1081><P
1082>In struct&nbsp;<A
1083HREF="r8936.htm#V4L2-INPUT"
1084>v4l2_input</A
1085> the
1086<CODE
1087CLASS="STRUCTFIELD"
1088>assoc_audio</CODE
1089> field and the
1090<CODE
1091CLASS="STRUCTFIELD"
1092>capability</CODE
1093> field and its only flag
1094<CODE
1095CLASS="CONSTANT"
1096>V4L2_INPUT_CAP_AUDIO</CODE
1097> was replaced by the new
1098<CODE
1099CLASS="STRUCTFIELD"
1100>audioset</CODE
1101> field. Instead of linking one
1102video input to one audio input this field reports all audio inputs
1103this video input combines with.</P
1104><P
1105>New fields are <CODE
1106CLASS="STRUCTFIELD"
1107>tuner</CODE
1108>
1109(reversing the former link from tuners to video inputs),
1110<CODE
1111CLASS="STRUCTFIELD"
1112>std</CODE
1113> and
1114<CODE
1115CLASS="STRUCTFIELD"
1116>status</CODE
1117>.</P
1118><P
1119>Accordingly struct&nbsp;<A
1120HREF="r9149.htm#V4L2-OUTPUT"
1121>v4l2_output</A
1122> lost its
1123<CODE
1124CLASS="STRUCTFIELD"
1125>capability</CODE
1126> and
1127<CODE
1128CLASS="STRUCTFIELD"
1129>assoc_audio</CODE
1130> fields.
1131<CODE
1132CLASS="STRUCTFIELD"
1133>audioset</CODE
1134>,
1135<CODE
1136CLASS="STRUCTFIELD"
1137>modulator</CODE
1138> and
1139<CODE
1140CLASS="STRUCTFIELD"
1141>std</CODE
1142> where added instead.</P
1143></LI
1144><LI
1145><P
1146>The struct&nbsp;<A
1147HREF="r9539.htm#V4L2-AUDIO"
1148>v4l2_audio</A
1149> field
1150<CODE
1151CLASS="STRUCTFIELD"
1152>audio</CODE
1153> was renamed to
1154<CODE
1155CLASS="STRUCTFIELD"
1156>index</CODE
1157>, for consistency with other
1158structures. A new capability flag
1159<CODE
1160CLASS="CONSTANT"
1161>V4L2_AUDCAP_STEREO</CODE
1162> was added to indicated if the
1163audio input in question supports stereo sound.
1164<CODE
1165CLASS="CONSTANT"
1166>V4L2_AUDCAP_EFFECTS</CODE
1167> and the corresponding
1168<CODE
1169CLASS="CONSTANT"
1170>V4L2_AUDMODE</CODE
1171> flags where removed. This can be
1172easily implemented using controls. (However the same applies to AVL
1173which is still there.)</P
1174><P
1175>Again for consistency the struct&nbsp;<A
1176HREF="r9688.htm#V4L2-AUDIOOUT"
1177>v4l2_audioout</A
1178> field
1179<CODE
1180CLASS="STRUCTFIELD"
1181>audio</CODE
1182> was renamed to
1183<CODE
1184CLASS="STRUCTFIELD"
1185>index</CODE
1186>.</P
1187></LI
1188><LI
1189><P
1190>The struct&nbsp;<A
1191HREF="r12342.htm#V4L2-TUNER"
1192>v4l2_tuner</A
1193>
1194<CODE
1195CLASS="STRUCTFIELD"
1196>input</CODE
1197> field was replaced by an
1198<CODE
1199CLASS="STRUCTFIELD"
1200>index</CODE
1201> field, permitting devices with
1202multiple tuners. The link between video inputs and tuners is now
1203reversed, inputs point to their tuner. The
1204<CODE
1205CLASS="STRUCTFIELD"
1206>std</CODE
1207> substructure became a
1208simple set (more about this below) and moved into struct&nbsp;<A
1209HREF="r8936.htm#V4L2-INPUT"
1210>v4l2_input</A
1211>. A
1212<CODE
1213CLASS="STRUCTFIELD"
1214>type</CODE
1215> field was added.</P
1216><P
1217>Accordingly in struct&nbsp;<A
1218HREF="r11430.htm#V4L2-MODULATOR"
1219>v4l2_modulator</A
1220> the
1221<CODE
1222CLASS="STRUCTFIELD"
1223>output</CODE
1224> was replaced by an
1225<CODE
1226CLASS="STRUCTFIELD"
1227>index</CODE
1228> field.</P
1229><P
1230>In struct&nbsp;<A
1231HREF="r11094.htm#V4L2-FREQUENCY"
1232>v4l2_frequency</A
1233> the
1234<CODE
1235CLASS="STRUCTFIELD"
1236>port</CODE
1237> field was replaced by a
1238<CODE
1239CLASS="STRUCTFIELD"
1240>tuner</CODE
1241> field containing the respective tuner
1242or modulator index number. A tuner <CODE
1243CLASS="STRUCTFIELD"
1244>type</CODE
1245>
1246field was added and the <CODE
1247CLASS="STRUCTFIELD"
1248>reserved</CODE
1249> field
1250became larger for future extensions (satellite tuners in
1251particular).</P
1252></LI
1253><LI
1254><P
1255>The idea of completely transparent video standards was
1256dropped. Experience showed that applications must be able to work with
1257video standards beyond presenting the user a menu. Instead of
1258enumerating supported standards with an ioctl applications can now
1259refer to standards by <A
1260HREF="r9288.htm#V4L2-STD-ID"
1261>v4l2_std_id</A
1262> and symbols defined in the
1263<TT
1264CLASS="FILENAME"
1265>videodev2.h</TT
1266> header file. For details see <A
1267HREF="x448.htm"
1268>Section 1.7</A
1269>. The <A
1270HREF="r12265.htm"
1271><CODE
1272CLASS="CONSTANT"
1273>VIDIOC_G_STD</CODE
1274></A
1275> and
1276<A
1277HREF="r12265.htm"
1278><CODE
1279CLASS="CONSTANT"
1280>VIDIOC_S_STD</CODE
1281></A
1282> now take a pointer to this type as argument.
1283<A
1284HREF="r13641.htm"
1285><CODE
1286CLASS="CONSTANT"
1287>VIDIOC_QUERYSTD</CODE
1288></A
1289> was added to autodetect the received standard, if
1290the hardware has this capability. In struct&nbsp;<A
1291HREF="r9288.htm#V4L2-STANDARD"
1292>v4l2_standard</A
1293> an
1294<CODE
1295CLASS="STRUCTFIELD"
1296>index</CODE
1297> field was added for <A
1298HREF="r9288.htm"
1299><CODE
1300CLASS="CONSTANT"
1301>VIDIOC_ENUMSTD</CODE
1302></A
1303>.
1304A <A
1305HREF="r9288.htm#V4L2-STD-ID"
1306>v4l2_std_id</A
1307> field named <CODE
1308CLASS="STRUCTFIELD"
1309>id</CODE
1310> was added as
1311machine readable identifier, also replacing the
1312<CODE
1313CLASS="STRUCTFIELD"
1314>transmission</CODE
1315> field. The misleading
1316<CODE
1317CLASS="STRUCTFIELD"
1318>framerate</CODE
1319> field was renamed
1320to <CODE
1321CLASS="STRUCTFIELD"
1322>frameperiod</CODE
1323>. The now obsolete
1324<CODE
1325CLASS="STRUCTFIELD"
1326>colorstandard</CODE
1327> information, originally
1328needed to distguish between variations of standards, were
1329removed.</P
1330><P
1331>Struct <CODE
1332CLASS="STRUCTNAME"
1333>v4l2_enumstd</CODE
1334> ceased to
1335be. <A
1336HREF="r9288.htm"
1337><CODE
1338CLASS="CONSTANT"
1339>VIDIOC_ENUMSTD</CODE
1340></A
1341> now takes a pointer to a struct&nbsp;<A
1342HREF="r9288.htm#V4L2-STANDARD"
1343>v4l2_standard</A
1344>
1345directly. The information which standards are supported by a
1346particular video input or output moved into struct&nbsp;<A
1347HREF="r8936.htm#V4L2-INPUT"
1348>v4l2_input</A
1349> and
1350struct&nbsp;<A
1351HREF="r9149.htm#V4L2-OUTPUT"
1352>v4l2_output</A
1353> fields named <CODE
1354CLASS="STRUCTFIELD"
1355>std</CODE
1356>,
1357respectively.</P
1358></LI
1359><LI
1360><P
1361>The struct&nbsp;<A
1362HREF="r13317.htm#V4L2-QUERYCTRL"
1363>v4l2_queryctrl</A
1364> fields
1365<CODE
1366CLASS="STRUCTFIELD"
1367>category</CODE
1368> and
1369<CODE
1370CLASS="STRUCTFIELD"
1371>group</CODE
1372> did not catch on and/or were not
1373implemented as expected and therefore removed.</P
1374></LI
1375><LI
1376><P
1377>The <A
1378HREF="r10944.htm"
1379><CODE
1380CLASS="CONSTANT"
1381>VIDIOC_TRY_FMT</CODE
1382></A
1383> ioctl was added to negotiate data
1384formats as with <A
1385HREF="r10944.htm"
1386><CODE
1387CLASS="CONSTANT"
1388>VIDIOC_S_FMT</CODE
1389></A
1390>, but without the overhead of
1391programming the hardware and regardless of I/O in progress.</P
1392><P
1393>In struct&nbsp;<A
1394HREF="r10944.htm#V4L2-FORMAT"
1395>v4l2_format</A
1396> the <CODE
1397CLASS="STRUCTFIELD"
1398>fmt</CODE
1399>
1400union was extended to contain struct&nbsp;<A
1401HREF="x6570.htm#V4L2-WINDOW"
1402>v4l2_window</A
1403>. All image format
1404negotiations are now possible with <CODE
1405CLASS="CONSTANT"
1406>VIDIOC_G_FMT</CODE
1407>,
1408<CODE
1409CLASS="CONSTANT"
1410>VIDIOC_S_FMT</CODE
1411> and
1412<CODE
1413CLASS="CONSTANT"
1414>VIDIOC_TRY_FMT</CODE
1415>; ioctl. The
1416<CODE
1417CLASS="CONSTANT"
1418>VIDIOC_G_WIN</CODE
1419> and
1420<CODE
1421CLASS="CONSTANT"
1422>VIDIOC_S_WIN</CODE
1423> ioctls to prepare for a video
1424overlay were removed. The <CODE
1425CLASS="STRUCTFIELD"
1426>type</CODE
1427> field
1428changed to type enum&nbsp;<A
1429HREF="x5953.htm#V4L2-BUF-TYPE"
1430>v4l2_buf_type</A
1431> and the buffer type names changed as
1432follows.<DIV
1433CLASS="INFORMALTABLE"
1434><P
1435></P
1436><A
1437NAME="AEN15815"
1438></A
1439><TABLE
1440BORDER="1"
1441CLASS="CALSTABLE"
1442><COL><COL><THEAD
1443><TR
1444><TH
1445>Old defines</TH
1446><TH
1447>enum&nbsp;<A
1448HREF="x5953.htm#V4L2-BUF-TYPE"
1449>v4l2_buf_type</A
1450></TH
1451></TR
1452></THEAD
1453><TBODY
1454VALIGN="TOP"
1455><TR
1456><TD
1457><CODE
1458CLASS="CONSTANT"
1459>V4L2_BUF_TYPE_CAPTURE</CODE
1460></TD
1461><TD
1462><CODE
1463CLASS="CONSTANT"
1464>V4L2_BUF_TYPE_VIDEO_CAPTURE</CODE
1465></TD
1466></TR
1467><TR
1468><TD
1469><CODE
1470CLASS="CONSTANT"
1471>V4L2_BUF_TYPE_CODECIN</CODE
1472></TD
1473><TD
1474>Omitted for now</TD
1475></TR
1476><TR
1477><TD
1478><CODE
1479CLASS="CONSTANT"
1480>V4L2_BUF_TYPE_CODECOUT</CODE
1481></TD
1482><TD
1483>Omitted for now</TD
1484></TR
1485><TR
1486><TD
1487><CODE
1488CLASS="CONSTANT"
1489>V4L2_BUF_TYPE_EFFECTSIN</CODE
1490></TD
1491><TD
1492>Omitted for now</TD
1493></TR
1494><TR
1495><TD
1496><CODE
1497CLASS="CONSTANT"
1498>V4L2_BUF_TYPE_EFFECTSIN2</CODE
1499></TD
1500><TD
1501>Omitted for now</TD
1502></TR
1503><TR
1504><TD
1505><CODE
1506CLASS="CONSTANT"
1507>V4L2_BUF_TYPE_EFFECTSOUT</CODE
1508></TD
1509><TD
1510>Omitted for now</TD
1511></TR
1512><TR
1513><TD
1514><CODE
1515CLASS="CONSTANT"
1516>V4L2_BUF_TYPE_VIDEOOUT</CODE
1517></TD
1518><TD
1519><CODE
1520CLASS="CONSTANT"
1521>V4L2_BUF_TYPE_VIDEO_OUTPUT</CODE
1522></TD
1523></TR
1524><TR
1525><TD
1526><CODE
1527CLASS="CONSTANT"
1528>-</CODE
1529></TD
1530><TD
1531><CODE
1532CLASS="CONSTANT"
1533>V4L2_BUF_TYPE_VIDEO_OVERLAY</CODE
1534></TD
1535></TR
1536><TR
1537><TD
1538><CODE
1539CLASS="CONSTANT"
1540>-</CODE
1541></TD
1542><TD
1543><CODE
1544CLASS="CONSTANT"
1545>V4L2_BUF_TYPE_VBI_CAPTURE</CODE
1546></TD
1547></TR
1548><TR
1549><TD
1550><CODE
1551CLASS="CONSTANT"
1552>-</CODE
1553></TD
1554><TD
1555><CODE
1556CLASS="CONSTANT"
1557>V4L2_BUF_TYPE_VBI_OUTPUT</CODE
1558></TD
1559></TR
1560><TR
1561><TD
1562><CODE
1563CLASS="CONSTANT"
1564>-</CODE
1565></TD
1566><TD
1567><CODE
1568CLASS="CONSTANT"
1569>V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</CODE
1570></TD
1571></TR
1572><TR
1573><TD
1574><CODE
1575CLASS="CONSTANT"
1576>-</CODE
1577></TD
1578><TD
1579><CODE
1580CLASS="CONSTANT"
1581>V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</CODE
1582></TD
1583></TR
1584><TR
1585><TD
1586><CODE
1587CLASS="CONSTANT"
1588>V4L2_BUF_TYPE_PRIVATE_BASE</CODE
1589></TD
1590><TD
1591><CODE
1592CLASS="CONSTANT"
1593>V4L2_BUF_TYPE_PRIVATE</CODE
1594></TD
1595></TR
1596></TBODY
1597></TABLE
1598><P
1599></P
1600></DIV
1601></P
1602></LI
1603><LI
1604><P
1605>In struct&nbsp;<A
1606HREF="r8367.htm#V4L2-FMTDESC"
1607>v4l2_fmtdesc</A
1608> a enum&nbsp;<A
1609HREF="x5953.htm#V4L2-BUF-TYPE"
1610>v4l2_buf_type</A
1611> field named
1612<CODE
1613CLASS="STRUCTFIELD"
1614>type</CODE
1615> was added as in struct&nbsp;<A
1616HREF="r10944.htm#V4L2-FORMAT"
1617>v4l2_format</A
1618>. The
1619<CODE
1620CLASS="CONSTANT"
1621>VIDIOC_ENUM_FBUFFMT</CODE
1622> ioctl is no longer needed and
1623was removed. These calls can be replaced by <A
1624HREF="r8367.htm"
1625><CODE
1626CLASS="CONSTANT"
1627>VIDIOC_ENUM_FMT</CODE
1628></A
1629> with
1630type <CODE
1631CLASS="CONSTANT"
1632>V4L2_BUF_TYPE_VIDEO_OVERLAY</CODE
1633>.</P
1634></LI
1635><LI
1636><P
1637>In struct&nbsp;<A
1638HREF="c2030.htm#V4L2-PIX-FORMAT"
1639>v4l2_pix_format</A
1640> the
1641<CODE
1642CLASS="STRUCTFIELD"
1643>depth</CODE
1644> field was removed, assuming
1645applications which recognize the format by its four-character-code
1646already know the color depth, and others do not care about it. The
1647same rationale lead to the removal of the
1648<CODE
1649CLASS="CONSTANT"
1650>V4L2_FMT_FLAG_COMPRESSED</CODE
1651> flag. The
1652<CODE
1653CLASS="CONSTANT"
1654>V4L2_FMT_FLAG_SWCONVECOMPRESSED</CODE
1655> flag was removed
1656because drivers are not supposed to convert images in kernel space. A
1657user library of conversion functions should be provided instead. The
1658<CODE
1659CLASS="CONSTANT"
1660>V4L2_FMT_FLAG_BYTESPERLINE</CODE
1661> flag was redundant.
1662Applications can set the <CODE
1663CLASS="STRUCTFIELD"
1664>bytesperline</CODE
1665> field
1666to zero to get a reasonable default. Since the remaining flags were
1667replaced as well, the <CODE
1668CLASS="STRUCTFIELD"
1669>flags</CODE
1670> field itself
1671was removed.</P
1672><P
1673>The interlace flags were replaced by a enum&nbsp;<A
1674HREF="x6386.htm#V4L2-FIELD"
1675>v4l2_field</A
1676>
1677value in a newly added <CODE
1678CLASS="STRUCTFIELD"
1679>field</CODE
1680>
1681field.<DIV
1682CLASS="INFORMALTABLE"
1683><P
1684></P
1685><A
1686NAME="AEN15905"
1687></A
1688><TABLE
1689BORDER="1"
1690CLASS="CALSTABLE"
1691><COL><COL><THEAD
1692><TR
1693><TH
1694>Old flag</TH
1695><TH
1696>enum&nbsp;<A
1697HREF="x6386.htm#V4L2-FIELD"
1698>v4l2_field</A
1699></TH
1700></TR
1701></THEAD
1702><TBODY
1703VALIGN="TOP"
1704><TR
1705><TD
1706><CODE
1707CLASS="CONSTANT"
1708>V4L2_FMT_FLAG_NOT_INTERLACED</CODE
1709></TD
1710><TD
1711>?</TD
1712></TR
1713><TR
1714><TD
1715><CODE
1716CLASS="CONSTANT"
1717>V4L2_FMT_FLAG_INTERLACED</CODE
1718>
1719= <CODE
1720CLASS="CONSTANT"
1721>V4L2_FMT_FLAG_COMBINED</CODE
1722></TD
1723><TD
1724><CODE
1725CLASS="CONSTANT"
1726>V4L2_FIELD_INTERLACED</CODE
1727></TD
1728></TR
1729><TR
1730><TD
1731><CODE
1732CLASS="CONSTANT"
1733>V4L2_FMT_FLAG_TOPFIELD</CODE
1734>
1735= <CODE
1736CLASS="CONSTANT"
1737>V4L2_FMT_FLAG_ODDFIELD</CODE
1738></TD
1739><TD
1740><CODE
1741CLASS="CONSTANT"
1742>V4L2_FIELD_TOP</CODE
1743></TD
1744></TR
1745><TR
1746><TD
1747><CODE
1748CLASS="CONSTANT"
1749>V4L2_FMT_FLAG_BOTFIELD</CODE
1750>
1751= <CODE
1752CLASS="CONSTANT"
1753>V4L2_FMT_FLAG_EVENFIELD</CODE
1754></TD
1755><TD
1756><CODE
1757CLASS="CONSTANT"
1758>V4L2_FIELD_BOTTOM</CODE
1759></TD
1760></TR
1761><TR
1762><TD
1763><CODE
1764CLASS="CONSTANT"
1765>-</CODE
1766></TD
1767><TD
1768><CODE
1769CLASS="CONSTANT"
1770>V4L2_FIELD_SEQ_TB</CODE
1771></TD
1772></TR
1773><TR
1774><TD
1775><CODE
1776CLASS="CONSTANT"
1777>-</CODE
1778></TD
1779><TD
1780><CODE
1781CLASS="CONSTANT"
1782>V4L2_FIELD_SEQ_BT</CODE
1783></TD
1784></TR
1785><TR
1786><TD
1787><CODE
1788CLASS="CONSTANT"
1789>-</CODE
1790></TD
1791><TD
1792><CODE
1793CLASS="CONSTANT"
1794>V4L2_FIELD_ALTERNATE</CODE
1795></TD
1796></TR
1797></TBODY
1798></TABLE
1799><P
1800></P
1801></DIV
1802></P
1803><P
1804>The color space flags were replaced by a
1805enum&nbsp;<A
1806HREF="x2123.htm#V4L2-COLORSPACE"
1807>v4l2_colorspace</A
1808> value in a newly added
1809<CODE
1810CLASS="STRUCTFIELD"
1811>colorspace</CODE
1812> field, where one of
1813<CODE
1814CLASS="CONSTANT"
1815>V4L2_COLORSPACE_SMPTE170M</CODE
1816>,
1817<CODE
1818CLASS="CONSTANT"
1819>V4L2_COLORSPACE_BT878</CODE
1820>,
1821<CODE
1822CLASS="CONSTANT"
1823>V4L2_COLORSPACE_470_SYSTEM_M</CODE
1824> or
1825<CODE
1826CLASS="CONSTANT"
1827>V4L2_COLORSPACE_470_SYSTEM_BG</CODE
1828> replaces
1829<CODE
1830CLASS="CONSTANT"
1831>V4L2_FMT_CS_601YUV</CODE
1832>.</P
1833></LI
1834><LI
1835><P
1836>In struct&nbsp;<A
1837HREF="r13696.htm#V4L2-REQUESTBUFFERS"
1838>v4l2_requestbuffers</A
1839> the
1840<CODE
1841CLASS="STRUCTFIELD"
1842>type</CODE
1843> field was properly defined as
1844enum&nbsp;<A
1845HREF="x5953.htm#V4L2-BUF-TYPE"
1846>v4l2_buf_type</A
1847>. Buffer types changed as mentioned above. A new
1848<CODE
1849CLASS="STRUCTFIELD"
1850>memory</CODE
1851> field of type enum&nbsp;<A
1852HREF="x5953.htm#V4L2-MEMORY"
1853>v4l2_memory</A
1854> was
1855added to distinguish between I/O methods using buffers allocated
1856by the driver or the application. See <A
1857HREF="c5742.htm"
1858>Chapter 3</A
1859> for
1860details.</P
1861></LI
1862><LI
1863><P
1864>In struct&nbsp;<A
1865HREF="x5953.htm#V4L2-BUFFER"
1866>v4l2_buffer</A
1867> the <CODE
1868CLASS="STRUCTFIELD"
1869>type</CODE
1870>
1871field was properly defined as enum&nbsp;<A
1872HREF="x5953.htm#V4L2-BUF-TYPE"
1873>v4l2_buf_type</A
1874>. Buffer types changed as
1875mentioned above. A <CODE
1876CLASS="STRUCTFIELD"
1877>field</CODE
1878> field of type
1879enum&nbsp;<A
1880HREF="x6386.htm#V4L2-FIELD"
1881>v4l2_field</A
1882> was added to indicate if a buffer contains a top or
1883bottom field. The old field flags were removed. Since no unadjusted
1884system time clock was added to the kernel as planned, the
1885<CODE
1886CLASS="STRUCTFIELD"
1887>timestamp</CODE
1888> field changed back from type
1889stamp_t, an unsigned 64 bit integer expressing the sample time in
1890nanoseconds, to struct <CODE
1891CLASS="STRUCTNAME"
1892>timeval</CODE
1893>. With the
1894addition of a second memory mapping method the
1895<CODE
1896CLASS="STRUCTFIELD"
1897>offset</CODE
1898> field moved into union
1899<CODE
1900CLASS="STRUCTFIELD"
1901>m</CODE
1902>, and a new
1903<CODE
1904CLASS="STRUCTFIELD"
1905>memory</CODE
1906> field of type enum&nbsp;<A
1907HREF="x5953.htm#V4L2-MEMORY"
1908>v4l2_memory</A
1909> was
1910added to distinguish between I/O methods. See <A
1911HREF="c5742.htm"
1912>Chapter 3</A
1913>
1914for details.</P
1915><P
1916>The <CODE
1917CLASS="CONSTANT"
1918>V4L2_BUF_REQ_CONTIG</CODE
1919>
1920flag was used by the V4L compatibility layer, after changes to this
1921code it was no longer needed. The
1922<CODE
1923CLASS="CONSTANT"
1924>V4L2_BUF_ATTR_DEVICEMEM</CODE
1925> flag would indicate if
1926the buffer was indeed allocated in device memory rather than DMA-able
1927system memory. It was barely useful and so was removed.</P
1928></LI
1929><LI
1930><P
1931>In struct&nbsp;<A
1932HREF="r10595.htm#V4L2-FRAMEBUFFER"
1933>v4l2_framebuffer</A
1934> the
1935<CODE
1936CLASS="STRUCTFIELD"
1937>base[3]</CODE
1938> array anticipating double- and
1939triple-buffering in off-screen video memory, however without defining
1940a synchronization mechanism, was replaced by a single pointer. The
1941<CODE
1942CLASS="CONSTANT"
1943>V4L2_FBUF_CAP_SCALEUP</CODE
1944> and
1945<CODE
1946CLASS="CONSTANT"
1947>V4L2_FBUF_CAP_SCALEDOWN</CODE
1948> flags were removed.
1949Applications can determine this capability more accurately using the
1950new cropping and scaling interface. The
1951<CODE
1952CLASS="CONSTANT"
1953>V4L2_FBUF_CAP_CLIPPING</CODE
1954> flag was replaced by
1955<CODE
1956CLASS="CONSTANT"
1957>V4L2_FBUF_CAP_LIST_CLIPPING</CODE
1958> and
1959<CODE
1960CLASS="CONSTANT"
1961>V4L2_FBUF_CAP_BITMAP_CLIPPING</CODE
1962>.</P
1963></LI
1964><LI
1965><P
1966>In struct&nbsp;<A
1967HREF="x6570.htm#V4L2-CLIP"
1968>v4l2_clip</A
1969> the <CODE
1970CLASS="STRUCTFIELD"
1971>x</CODE
1972>,
1973<CODE
1974CLASS="STRUCTFIELD"
1975>y</CODE
1976>, <CODE
1977CLASS="STRUCTFIELD"
1978>width</CODE
1979> and
1980<CODE
1981CLASS="STRUCTFIELD"
1982>height</CODE
1983> field moved into a
1984<CODE
1985CLASS="STRUCTFIELD"
1986>c</CODE
1987> substructure of type struct&nbsp;<A
1988HREF="x6570.htm#V4L2-RECT"
1989>v4l2_rect</A
1990>. The
1991<CODE
1992CLASS="STRUCTFIELD"
1993>x</CODE
1994> and <CODE
1995CLASS="STRUCTFIELD"
1996>y</CODE
1997> fields
1998were renamed to <CODE
1999CLASS="STRUCTFIELD"
2000>left</CODE
2001> and
2002<CODE
2003CLASS="STRUCTFIELD"
2004>top</CODE
2005>, i.&nbsp;e. offsets to a context dependent
2006origin.</P
2007></LI
2008><LI
2009><P
2010>In struct&nbsp;<A
2011HREF="x6570.htm#V4L2-WINDOW"
2012>v4l2_window</A
2013> the <CODE
2014CLASS="STRUCTFIELD"
2015>x</CODE
2016>,
2017<CODE
2018CLASS="STRUCTFIELD"
2019>y</CODE
2020>, <CODE
2021CLASS="STRUCTFIELD"
2022>width</CODE
2023> and
2024<CODE
2025CLASS="STRUCTFIELD"
2026>height</CODE
2027> field moved into a
2028<CODE
2029CLASS="STRUCTFIELD"
2030>w</CODE
2031> substructure as above. A
2032<CODE
2033CLASS="STRUCTFIELD"
2034>field</CODE
2035> field of type %v4l2-field; was added
2036to distinguish between field and frame (interlaced) overlay.</P
2037></LI
2038><LI
2039><P
2040>The digital zoom interface, including struct
2041<CODE
2042CLASS="STRUCTNAME"
2043>v4l2_zoomcap</CODE
2044>, struct
2045<CODE
2046CLASS="STRUCTNAME"
2047>v4l2_zoom</CODE
2048>,
2049<CODE
2050CLASS="CONSTANT"
2051>V4L2_ZOOM_NONCAP</CODE
2052> and
2053<CODE
2054CLASS="CONSTANT"
2055>V4L2_ZOOM_WHILESTREAMING</CODE
2056> was replaced by a new
2057cropping and scaling interface. The previously unused struct
2058<CODE
2059CLASS="STRUCTNAME"
2060>v4l2_cropcap</CODE
2061> and
2062<CODE
2063CLASS="STRUCTNAME"
2064>v4l2_crop</CODE
2065> where redefined for this purpose.
2066See <A
2067HREF="x1904.htm"
2068>Section 1.11</A
2069> for details.</P
2070></LI
2071><LI
2072><P
2073>In struct&nbsp;<A
2074HREF="x7013.htm#V4L2-VBI-FORMAT"
2075>v4l2_vbi_format</A
2076> the
2077<CODE
2078CLASS="STRUCTFIELD"
2079>SAMPLE_FORMAT</CODE
2080> field now contains a
2081four-character-code as used to identify video image formats and
2082<CODE
2083CLASS="CONSTANT"
2084>V4L2_PIX_FMT_GREY</CODE
2085> replaces the
2086<CODE
2087CLASS="CONSTANT"
2088>V4L2_VBI_SF_UBYTE</CODE
2089> define. The
2090<CODE
2091CLASS="STRUCTFIELD"
2092>reserved</CODE
2093> field was extended.</P
2094></LI
2095><LI
2096><P
2097>In struct&nbsp;<A
2098HREF="r11680.htm#V4L2-CAPTUREPARM"
2099>v4l2_captureparm</A
2100> the type of the
2101<CODE
2102CLASS="STRUCTFIELD"
2103>timeperframe</CODE
2104> field changed from unsigned
2105long to struct&nbsp;<A
2106HREF="r9288.htm#V4L2-FRACT"
2107>v4l2_fract</A
2108>. This allows the accurate expression of multiples
2109of the NTSC-M frame rate 30000 / 1001. A new field
2110<CODE
2111CLASS="STRUCTFIELD"
2112>readbuffers</CODE
2113> was added to control the driver
2114behaviour in read I/O mode.</P
2115><P
2116>Similar changes were made to struct&nbsp;<A
2117HREF="r11680.htm#V4L2-OUTPUTPARM"
2118>v4l2_outputparm</A
2119>.</P
2120></LI
2121><LI
2122><P
2123>The struct <CODE
2124CLASS="STRUCTNAME"
2125>v4l2_performance</CODE
2126>
2127and <CODE
2128CLASS="CONSTANT"
2129>VIDIOC_G_PERF</CODE
2130> ioctl were dropped. Except when
2131using the <A
2132HREF="c5742.htm#RW"
2133>read/write I/O method</A
2134>, which is
2135limited anyway, this information is already available to
2136applications.</P
2137></LI
2138><LI
2139><P
2140>The example transformation from RGB to YCbCr color
2141space in the old V4L2 documentation was inaccurate, this has been
2142corrected in <A
2143HREF="c2030.htm"
2144>Chapter 2</A
2145>.</P
2146></LI
2147></OL
2148></DIV
2149><DIV
2150CLASS="SECTION"
2151><H2
2152CLASS="SECTION"
2153><A
2154NAME="AEN16046"
2155>6.2.10. V4L2 2003-06-19</A
2156></H2
2157><P
2158></P
2159><OL
2160TYPE="1"
2161><LI
2162><P
2163>A new capability flag
2164<CODE
2165CLASS="CONSTANT"
2166>V4L2_CAP_RADIO</CODE
2167> was added for radio devices. Prior
2168to this change radio devices would identify solely by having exactly one
2169tuner whose type field reads <CODE
2170CLASS="CONSTANT"
2171>V4L2_TUNER_RADIO</CODE
2172>.</P
2173></LI
2174><LI
2175><P
2176>An optional driver access priority mechanism was
2177added, see <A
2178HREF="x294.htm"
2179>Section 1.3</A
2180> for details.</P
2181></LI
2182><LI
2183><P
2184>The audio input and output interface was found to be
2185incomplete.</P
2186><P
2187>Previously the <A
2188HREF="r9539.htm"
2189><CODE
2190CLASS="CONSTANT"
2191>VIDIOC_G_AUDIO</CODE
2192></A
2193>
2194ioctl would enumerate the available audio inputs. An ioctl to
2195determine the current audio input, if more than one combines with the
2196current video input, did not exist. So
2197<CODE
2198CLASS="CONSTANT"
2199>VIDIOC_G_AUDIO</CODE
2200> was renamed to
2201<CODE
2202CLASS="CONSTANT"
2203>VIDIOC_G_AUDIO_OLD</CODE
2204>, this ioctl will be removed in
2205the future. The <A
2206HREF="r8242.htm"
2207><CODE
2208CLASS="CONSTANT"
2209>VIDIOC_ENUMAUDIO</CODE
2210></A
2211> ioctl was added to enumerate
2212audio inputs, while <A
2213HREF="r9539.htm"
2214><CODE
2215CLASS="CONSTANT"
2216>VIDIOC_G_AUDIO</CODE
2217></A
2218> now reports the current audio
2219input.</P
2220><P
2221>The same changes were made to <A
2222HREF="r9688.htm"
2223><CODE
2224CLASS="CONSTANT"
2225>VIDIOC_G_AUDOUT</CODE
2226></A
2227> and
2228<A
2229HREF="r8304.htm"
2230><CODE
2231CLASS="CONSTANT"
2232>VIDIOC_ENUMAUDOUT</CODE
2233></A
2234>.</P
2235><P
2236>Until further the "videodev" module will automatically
2237translate between the old and new ioctls, but drivers and applications
2238must be updated to successfully compile again.</P
2239></LI
2240><LI
2241><P
2242>The <A
2243HREF="r12816.htm"
2244><CODE
2245CLASS="CONSTANT"
2246>VIDIOC_OVERLAY</CODE
2247></A
2248> ioctl was incorrectly defined with
2249write-read parameter. It was changed to write-only, while the write-read
2250version was renamed to <CODE
2251CLASS="CONSTANT"
2252>VIDIOC_OVERLAY_OLD</CODE
2253>. The old
2254ioctl will be removed in the future. Until further the "videodev"
2255kernel module will automatically translate to the new version, so drivers
2256must be recompiled, but not applications.</P
2257></LI
2258><LI
2259><P
2260><A
2261HREF="x6570.htm"
2262>Section 4.2</A
2263> incorrectly stated that
2264clipping rectangles define regions where the video can be seen.
2265Correct is that clipping rectangles define regions where
2266<SPAN
2267CLASS="emphasis"
2268><I
2269CLASS="EMPHASIS"
2270>no</I
2271></SPAN
2272> video shall be displayed and so the graphics
2273surface can be seen.</P
2274></LI
2275><LI
2276><P
2277>The <A
2278HREF="r11680.htm"
2279><CODE
2280CLASS="CONSTANT"
2281>VIDIOC_S_PARM</CODE
2282></A
2283> and <A
2284HREF="r10104.htm"
2285><CODE
2286CLASS="CONSTANT"
2287>VIDIOC_S_CTRL</CODE
2288></A
2289> ioctls were
2290defined with write-only parameter, inconsistent with other ioctls
2291modifying their argument. They were changed to write-read, while a
2292<CODE
2293CLASS="CONSTANT"
2294>_OLD</CODE
2295> suffix was added to the write-only versions.
2296The old ioctls will be removed in the future. Drivers and
2297applications assuming a constant parameter need an update.</P
2298></LI
2299></OL
2300></DIV
2301><DIV
2302CLASS="SECTION"
2303><H2
2304CLASS="SECTION"
2305><A
2306NAME="AEN16089"
2307>6.2.11. V4L2 2003-11-05</A
2308></H2
2309><P
2310></P
2311><OL
2312TYPE="1"
2313><LI
2314><P
2315>In <A
2316HREF="x2490.htm"
2317>Section 2.4</A
2318> the following pixel
2319formats were incorrectly transferred from Bill Dirks' V4L2
2320specification. Descriptions below refer to bytes in memory, in
2321ascending address order.<DIV
2322CLASS="INFORMALTABLE"
2323><P
2324></P
2325><A
2326NAME="AEN16095"
2327></A
2328><TABLE
2329BORDER="1"
2330CLASS="CALSTABLE"
2331><COL><COL><COL><THEAD
2332><TR
2333><TH
2334>Symbol</TH
2335><TH
2336>In this document prior to revision
23370.5</TH
2338><TH
2339>Corrected</TH
2340></TR
2341></THEAD
2342><TBODY
2343VALIGN="TOP"
2344><TR
2345><TD
2346><CODE
2347CLASS="CONSTANT"
2348>V4L2_PIX_FMT_RGB24</CODE
2349></TD
2350><TD
2351>B, G, R</TD
2352><TD
2353>R, G, B</TD
2354></TR
2355><TR
2356><TD
2357><CODE
2358CLASS="CONSTANT"
2359>V4L2_PIX_FMT_BGR24</CODE
2360></TD
2361><TD
2362>R, G, B</TD
2363><TD
2364>B, G, R</TD
2365></TR
2366><TR
2367><TD
2368><CODE
2369CLASS="CONSTANT"
2370>V4L2_PIX_FMT_RGB32</CODE
2371></TD
2372><TD
2373>B, G, R, X</TD
2374><TD
2375>R, G, B, X</TD
2376></TR
2377><TR
2378><TD
2379><CODE
2380CLASS="CONSTANT"
2381>V4L2_PIX_FMT_BGR32</CODE
2382></TD
2383><TD
2384>R, G, B, X</TD
2385><TD
2386>B, G, R, X</TD
2387></TR
2388></TBODY
2389></TABLE
2390><P
2391></P
2392></DIV
2393> The
2394<CODE
2395CLASS="CONSTANT"
2396>V4L2_PIX_FMT_BGR24</CODE
2397> example was always
2398correct.</P
2399><P
2400>In <A
2401HREF="c14595.htm#V4L-IMAGE-PROPERTIES"
2402>Section 6.1.5</A
2403> the mapping
2404of the V4L <CODE
2405CLASS="CONSTANT"
2406>VIDEO_PALETTE_RGB24</CODE
2407> and
2408<CODE
2409CLASS="CONSTANT"
2410>VIDEO_PALETTE_RGB32</CODE
2411> formats to V4L2 pixel formats
2412was accordingly corrected.</P
2413></LI
2414><LI
2415><P
2416>Unrelated to the fixes above, drivers may still
2417interpret some V4L2 RGB pixel formats differently. These issues have
2418yet to be addressed, for details see <A
2419HREF="x2490.htm"
2420>Section 2.4</A
2421>.</P
2422></LI
2423></OL
2424></DIV
2425><DIV
2426CLASS="SECTION"
2427><H2
2428CLASS="SECTION"
2429><A
2430NAME="AEN16131"
2431>6.2.12. V4L2 in Linux 2.6.6, 2004-05-09</A
2432></H2
2433><P
2434></P
2435><OL
2436TYPE="1"
2437><LI
2438><P
2439>The <A
2440HREF="r7771.htm"
2441><CODE
2442CLASS="CONSTANT"
2443>VIDIOC_CROPCAP</CODE
2444></A
2445> ioctl was incorrectly defined
2446with read-only parameter. It is now defined as write-read ioctl, while
2447the read-only version was renamed to
2448<CODE
2449CLASS="CONSTANT"
2450>VIDIOC_CROPCAP_OLD</CODE
2451>. The old ioctl will be removed
2452in the future.</P
2453></LI
2454></OL
2455></DIV
2456><DIV
2457CLASS="SECTION"
2458><H2
2459CLASS="SECTION"
2460><A
2461NAME="AEN16139"
2462>6.2.13. V4L2 in Linux 2.6.8</A
2463></H2
2464><P
2465></P
2466><OL
2467TYPE="1"
2468><LI
2469><P
2470>A new field <CODE
2471CLASS="STRUCTFIELD"
2472>input</CODE
2473> (former
2474<CODE
2475CLASS="STRUCTFIELD"
2476>reserved[0]</CODE
2477>) was added to the struct&nbsp;<A
2478HREF="x5953.htm#V4L2-BUFFER"
2479>v4l2_buffer</A
2480>
2481structure. Purpose of this field is to alternate between video inputs
2482(e.&nbsp;g. cameras) in step with the video capturing process. This function
2483must be enabled with the new <CODE
2484CLASS="CONSTANT"
2485>V4L2_BUF_FLAG_INPUT</CODE
2486>
2487flag. The <CODE
2488CLASS="STRUCTFIELD"
2489>flags</CODE
2490> field is no longer
2491read-only.</P
2492></LI
2493></OL
2494></DIV
2495><DIV
2496CLASS="SECTION"
2497><H2
2498CLASS="SECTION"
2499><A
2500NAME="AEN16149"
2501>6.2.14. V4L2 spec erratum 2004-08-01</A
2502></H2
2503><P
2504></P
2505><OL
2506TYPE="1"
2507><LI
2508><P
2509>The return value of the
2510<A
2511HREF="r14090.htm"
2512>V4L2 open()(2)</A
2513> function was incorrectly documented.</P
2514></LI
2515><LI
2516><P
2517>Audio output ioctls end in -AUDOUT, not -AUDIOOUT.</P
2518></LI
2519><LI
2520><P
2521>In the Current Audio Input example the
2522<CODE
2523CLASS="CONSTANT"
2524>VIDIOC_G_AUDIO</CODE
2525> ioctl took the wrong
2526argument.</P
2527></LI
2528><LI
2529><P
2530>The documentation of the <A
2531HREF="r12878.htm"
2532><CODE
2533CLASS="CONSTANT"
2534>VIDIOC_QBUF</CODE
2535></A
2536> and
2537<A
2538HREF="r12878.htm"
2539><CODE
2540CLASS="CONSTANT"
2541>VIDIOC_DQBUF</CODE
2542></A
2543> ioctls did not mention the struct&nbsp;<A
2544HREF="x5953.htm#V4L2-BUFFER"
2545>v4l2_buffer</A
2546>
2547<CODE
2548CLASS="STRUCTFIELD"
2549>memory</CODE
2550> field. It was also missing from
2551examples. Also on the <CODE
2552CLASS="CONSTANT"
2553>VIDIOC_DQBUF</CODE
2554> page the <SPAN
2555CLASS="ERRORCODE"
2556>EIO</SPAN
2557> error code
2558was not documented.</P
2559></LI
2560></OL
2561></DIV
2562><DIV
2563CLASS="SECTION"
2564><H2
2565CLASS="SECTION"
2566><A
2567NAME="AEN16170"
2568>6.2.15. V4L2 in Linux 2.6.14</A
2569></H2
2570><P
2571></P
2572><OL
2573TYPE="1"
2574><LI
2575><P
2576>A new sliced VBI interface was added. It is documented
2577in <A
2578HREF="x7236.htm"
2579>Section 4.8</A
2580> and replaces the interface first
2581proposed in V4L2 specification 0.8.</P
2582></LI
2583></OL
2584></DIV
2585><DIV
2586CLASS="SECTION"
2587><H2
2588CLASS="SECTION"
2589><A
2590NAME="AEN16176"
2591>6.2.16. V4L2 in Linux 2.6.15</A
2592></H2
2593><P
2594></P
2595><OL
2596TYPE="1"
2597><LI
2598><P
2599>The <A
2600HREF="r12784.htm"
2601><CODE
2602CLASS="CONSTANT"
2603>VIDIOC_LOG_STATUS</CODE
2604></A
2605> ioctl was added.</P
2606></LI
2607><LI
2608><P
2609>New video standards
2610<CODE
2611CLASS="CONSTANT"
2612>V4L2_STD_NTSC_443</CODE
2613>,
2614<CODE
2615CLASS="CONSTANT"
2616>V4L2_STD_SECAM_LC</CODE
2617>,
2618<CODE
2619CLASS="CONSTANT"
2620>V4L2_STD_SECAM_DK</CODE
2621> (a set of SECAM D, K and K1),
2622and <CODE
2623CLASS="CONSTANT"
2624>V4L2_STD_ATSC</CODE
2625> (a set of
2626<CODE
2627CLASS="CONSTANT"
2628>V4L2_STD_ATSC_8_VSB</CODE
2629> and
2630<CODE
2631CLASS="CONSTANT"
2632>V4L2_STD_ATSC_16_VSB</CODE
2633>) were defined. Note the
2634<CODE
2635CLASS="CONSTANT"
2636>V4L2_STD_525_60</CODE
2637> set now includes
2638<CODE
2639CLASS="CONSTANT"
2640>V4L2_STD_NTSC_443</CODE
2641>. See also <A
2642HREF="r9288.htm#V4L2-STD-ID"
2643>Table 3</A
2644>.</P
2645></LI
2646><LI
2647><P
2648>The <CODE
2649CLASS="CONSTANT"
2650>VIDIOC_G_COMP</CODE
2651> and
2652<CODE
2653CLASS="CONSTANT"
2654>VIDIOC_S_COMP</CODE
2655> ioctl were renamed to
2656<CODE
2657CLASS="CONSTANT"
2658>VIDIOC_G_MPEGCOMP</CODE
2659> and
2660<CODE
2661CLASS="CONSTANT"
2662>VIDIOC_S_MPEGCOMP</CODE
2663> respectively. Their argument
2664was replaced by a struct
2665<CODE
2666CLASS="STRUCTNAME"
2667>v4l2_mpeg_compression</CODE
2668> pointer. (The
2669<CODE
2670CLASS="CONSTANT"
2671>VIDIOC_G_MPEGCOMP</CODE
2672> and
2673<CODE
2674CLASS="CONSTANT"
2675>VIDIOC_S_MPEGCOMP</CODE
2676> ioctls where removed in Linux
26772.6.25.)</P
2678></LI
2679></OL
2680></DIV
2681><DIV
2682CLASS="SECTION"
2683><H2
2684CLASS="SECTION"
2685><A
2686NAME="AEN16203"
2687>6.2.17. V4L2 spec erratum 2005-11-27</A
2688></H2
2689><P
2690>The capture example in <A
2691HREF="a16706.htm"
2692>Appendix B</A
2693>
2694called the <A
2695HREF="r9994.htm"
2696><CODE
2697CLASS="CONSTANT"
2698>VIDIOC_S_CROP</CODE
2699></A
2700> ioctl without checking if cropping is
2701supported. In the video standard selection example in
2702<A
2703HREF="x448.htm"
2704>Section 1.7</A
2705> the <A
2706HREF="r12265.htm"
2707><CODE
2708CLASS="CONSTANT"
2709>VIDIOC_S_STD</CODE
2710></A
2711> call used the wrong
2712argument type.</P
2713></DIV
2714><DIV
2715CLASS="SECTION"
2716><H2
2717CLASS="SECTION"
2718><A
2719NAME="AEN16212"
2720>6.2.18. V4L2 spec erratum 2006-01-10</A
2721></H2
2722><P
2723></P
2724><OL
2725TYPE="1"
2726><LI
2727><P
2728>The <CODE
2729CLASS="CONSTANT"
2730>V4L2_IN_ST_COLOR_KILL</CODE
2731> flag in
2732struct&nbsp;<A
2733HREF="r8936.htm#V4L2-INPUT"
2734>v4l2_input</A
2735> not only indicates if the color killer is enabled, but
2736also if it is active. (The color killer disables color decoding when
2737it detects no color in the video signal to improve the image
2738quality.)</P
2739></LI
2740><LI
2741><P
2742><A
2743HREF="r11680.htm"
2744><CODE
2745CLASS="CONSTANT"
2746>VIDIOC_S_PARM</CODE
2747></A
2748> is a write-read ioctl, not write-only as
2749stated on its reference page. The ioctl changed in 2003 as noted above.</P
2750></LI
2751></OL
2752></DIV
2753><DIV
2754CLASS="SECTION"
2755><H2
2756CLASS="SECTION"
2757><A
2758NAME="AEN16223"
2759>6.2.19. V4L2 spec erratum 2006-02-03</A
2760></H2
2761><P
2762></P
2763><OL
2764TYPE="1"
2765><LI
2766><P
2767>In struct&nbsp;<A
2768HREF="r11680.htm#V4L2-CAPTUREPARM"
2769>v4l2_captureparm</A
2770> and struct&nbsp;<A
2771HREF="r11680.htm#V4L2-OUTPUTPARM"
2772>v4l2_outputparm</A
2773> the
2774<CODE
2775CLASS="STRUCTFIELD"
2776>timeperframe</CODE
2777> field gives the time in
2778seconds, not microseconds.</P
2779></LI
2780></OL
2781></DIV
2782><DIV
2783CLASS="SECTION"
2784><H2
2785CLASS="SECTION"
2786><A
2787NAME="AEN16231"
2788>6.2.20. V4L2 spec erratum 2006-02-04</A
2789></H2
2790><P
2791></P
2792><OL
2793TYPE="1"
2794><LI
2795><P
2796>The <CODE
2797CLASS="STRUCTFIELD"
2798>clips</CODE
2799> field in
2800struct&nbsp;<A
2801HREF="x6570.htm#V4L2-WINDOW"
2802>v4l2_window</A
2803> must point to an array of struct&nbsp;<A
2804HREF="x6570.htm#V4L2-CLIP"
2805>v4l2_clip</A
2806>, not a linked
2807list, because drivers ignore the struct
2808<CODE
2809CLASS="STRUCTNAME"
2810>v4l2_clip</CODE
2811>.<CODE
2812CLASS="STRUCTFIELD"
2813>next</CODE
2814>
2815pointer.</P
2816></LI
2817></OL
2818></DIV
2819><DIV
2820CLASS="SECTION"
2821><H2
2822CLASS="SECTION"
2823><A
2824NAME="AEN16241"
2825>6.2.21. V4L2 in Linux 2.6.17</A
2826></H2
2827><P
2828></P
2829><OL
2830TYPE="1"
2831><LI
2832><P
2833>New video standard macros were added:
2834<CODE
2835CLASS="CONSTANT"
2836>V4L2_STD_NTSC_M_KR</CODE
2837> (NTSC M South Korea), and the
2838sets <CODE
2839CLASS="CONSTANT"
2840>V4L2_STD_MN</CODE
2841>,
2842<CODE
2843CLASS="CONSTANT"
2844>V4L2_STD_B</CODE
2845>, <CODE
2846CLASS="CONSTANT"
2847>V4L2_STD_GH</CODE
2848> and
2849<CODE
2850CLASS="CONSTANT"
2851>V4L2_STD_DK</CODE
2852>. The
2853<CODE
2854CLASS="CONSTANT"
2855>V4L2_STD_NTSC</CODE
2856> and
2857<CODE
2858CLASS="CONSTANT"
2859>V4L2_STD_SECAM</CODE
2860> sets now include
2861<CODE
2862CLASS="CONSTANT"
2863>V4L2_STD_NTSC_M_KR</CODE
2864> and
2865<CODE
2866CLASS="CONSTANT"
2867>V4L2_STD_SECAM_LC</CODE
2868> respectively.</P
2869></LI
2870><LI
2871><P
2872>A new <CODE
2873CLASS="CONSTANT"
2874>V4L2_TUNER_MODE_LANG1_LANG2</CODE
2875>
2876was defined to record both languages of a bilingual program. The
2877use of <CODE
2878CLASS="CONSTANT"
2879>V4L2_TUNER_MODE_STEREO</CODE
2880> for this purpose
2881is deprecated now. See the <A
2882HREF="r12342.htm"
2883><CODE
2884CLASS="CONSTANT"
2885>VIDIOC_G_TUNER</CODE
2886></A
2887> section for
2888details.</P
2889></LI
2890></OL
2891></DIV
2892><DIV
2893CLASS="SECTION"
2894><H2
2895CLASS="SECTION"
2896><A
2897NAME="AEN16261"
2898>6.2.22. V4L2 spec erratum 2006-09-23 (Draft 0.15)</A
2899></H2
2900><P
2901></P
2902><OL
2903TYPE="1"
2904><LI
2905><P
2906>In various places
2907<CODE
2908CLASS="CONSTANT"
2909>V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</CODE
2910> and
2911<CODE
2912CLASS="CONSTANT"
2913>V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</CODE
2914> of the sliced VBI
2915interface were not mentioned along with other buffer types.</P
2916></LI
2917><LI
2918><P
2919>In <A
2920HREF="r9539.htm"
2921>ioctl VIDIOC_G_AUDIO, VIDIOC_S_AUDIO(2)</A
2922> it was clarified
2923that the struct&nbsp;<A
2924HREF="r9539.htm#V4L2-AUDIO"
2925>v4l2_audio</A
2926> <CODE
2927CLASS="STRUCTFIELD"
2928>mode</CODE
2929> field is a flags
2930field.</P
2931></LI
2932><LI
2933><P
2934><A
2935HREF="r13105.htm"
2936>ioctl VIDIOC_QUERYCAP(2)</A
2937> did not mention the
2938sliced VBI and radio capability flags.</P
2939></LI
2940><LI
2941><P
2942>In <A
2943HREF="r11094.htm"
2944>ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY(2)</A
2945> it was
2946clarified that applications must initialize the tuner
2947<CODE
2948CLASS="STRUCTFIELD"
2949>type</CODE
2950> field of struct&nbsp;<A
2951HREF="r11094.htm#V4L2-FREQUENCY"
2952>v4l2_frequency</A
2953> before
2954calling <A
2955HREF="r11094.htm"
2956><CODE
2957CLASS="CONSTANT"
2958>VIDIOC_S_FREQUENCY</CODE
2959></A
2960>.</P
2961></LI
2962><LI
2963><P
2964>The <CODE
2965CLASS="STRUCTFIELD"
2966>reserved</CODE
2967> array
2968in struct&nbsp;<A
2969HREF="r13696.htm#V4L2-REQUESTBUFFERS"
2970>v4l2_requestbuffers</A
2971> has 2 elements, not 32.</P
2972></LI
2973><LI
2974><P
2975>In <A
2976HREF="x6831.htm"
2977>Section 4.3</A
2978> and <A
2979HREF="x7013.htm"
2980>Section 4.7</A
2981> the device file names
2982<TT
2983CLASS="FILENAME"
2984>/dev/vout</TT
2985> which never caught on were replaced
2986by <TT
2987CLASS="FILENAME"
2988>/dev/video</TT
2989>.</P
2990></LI
2991><LI
2992><P
2993>With Linux 2.6.15 the possible range for VBI device minor
2994numbers was extended from 224-239 to 224-255. Accordingly device file names
2995<TT
2996CLASS="FILENAME"
2997>/dev/vbi0</TT
2998> to <TT
2999CLASS="FILENAME"
3000>/dev/vbi31</TT
3001> are
3002possible now.</P
3003></LI
3004></OL
3005></DIV
3006><DIV
3007CLASS="SECTION"
3008><H2
3009CLASS="SECTION"
3010><A
3011NAME="AEN16297"
3012>6.2.23. V4L2 in Linux 2.6.18</A
3013></H2
3014><P
3015></P
3016><OL
3017TYPE="1"
3018><LI
3019><P
3020>New ioctls <A
3021HREF="r10386.htm"
3022><CODE
3023CLASS="CONSTANT"
3024>VIDIOC_G_EXT_CTRLS</CODE
3025></A
3026>, <A
3027HREF="r10386.htm"
3028><CODE
3029CLASS="CONSTANT"
3030>VIDIOC_S_EXT_CTRLS</CODE
3031></A
3032>
3033and <A
3034HREF="r10386.htm"
3035><CODE
3036CLASS="CONSTANT"
3037>VIDIOC_TRY_EXT_CTRLS</CODE
3038></A
3039> were added, a flag to skip unsupported
3040controls with <A
3041HREF="r13317.htm"
3042><CODE
3043CLASS="CONSTANT"
3044>VIDIOC_QUERYCTRL</CODE
3045></A
3046>, new control types
3047<CODE
3048CLASS="CONSTANT"
3049>V4L2_CTRL_TYPE_INTEGER64</CODE
3050> and
3051<CODE
3052CLASS="CONSTANT"
3053>V4L2_CTRL_TYPE_CTRL_CLASS</CODE
3054> (<A
3055HREF="r13317.htm#V4L2-CTRL-TYPE"
3056>Table 3</A
3057>), and new control flags
3058<CODE
3059CLASS="CONSTANT"
3060>V4L2_CTRL_FLAG_READ_ONLY</CODE
3061>,
3062<CODE
3063CLASS="CONSTANT"
3064>V4L2_CTRL_FLAG_UPDATE</CODE
3065>,
3066<CODE
3067CLASS="CONSTANT"
3068>V4L2_CTRL_FLAG_INACTIVE</CODE
3069> and
3070<CODE
3071CLASS="CONSTANT"
3072>V4L2_CTRL_FLAG_SLIDER</CODE
3073> (<A
3074HREF="r13317.htm#CONTROL-FLAGS"
3075>Table 4</A
3076>). See <A
3077HREF="x802.htm"
3078>Section 1.9</A
3079> for details.</P
3080></LI
3081></OL
3082></DIV
3083><DIV
3084CLASS="SECTION"
3085><H2
3086CLASS="SECTION"
3087><A
3088NAME="AEN16319"
3089>6.2.24. V4L2 in Linux 2.6.19</A
3090></H2
3091><P
3092></P
3093><OL
3094TYPE="1"
3095><LI
3096><P
3097>In struct&nbsp;<A
3098HREF="r12051.htm#V4L2-SLICED-VBI-CAP"
3099>v4l2_sliced_vbi_cap</A
3100> a buffer type field was added
3101replacing a reserved field. Note on architectures where the size of
3102enum types differs from int types the size of the structure changed.
3103The <A
3104HREF="r12051.htm"
3105><CODE
3106CLASS="CONSTANT"
3107>VIDIOC_G_SLICED_VBI_CAP</CODE
3108></A
3109> ioctl was redefined from being read-only
3110to write-read. Applications must initialize the type field and clear
3111the reserved fields now. These changes may <SPAN
3112CLASS="emphasis"
3113><I
3114CLASS="EMPHASIS"
3115>break the
3116compatibility</I
3117></SPAN
3118> with older drivers and applications.</P
3119></LI
3120><LI
3121><P
3122>The ioctls <A
3123HREF="r8494.htm"
3124><CODE
3125CLASS="CONSTANT"
3126>VIDIOC_ENUM_FRAMESIZES</CODE
3127></A
3128> and
3129<A
3130HREF="r8724.htm"
3131><CODE
3132CLASS="CONSTANT"
3133>VIDIOC_ENUM_FRAMEINTERVALS</CODE
3134></A
3135> were added.</P
3136></LI
3137><LI
3138><P
3139>A new pixel format <CODE
3140CLASS="CONSTANT"
3141>V4L2_PIX_FMT_RGB444</CODE
3142> (<A
3143HREF="r2492.htm#RGB-FORMATS"
3144>Table 2-1</A
3145>) was added.</P
3146></LI
3147></OL
3148></DIV
3149><DIV
3150CLASS="SECTION"
3151><H2
3152CLASS="SECTION"
3153><A
3154NAME="AEN16338"
3155>6.2.25. V4L2 spec erratum 2006-10-12 (Draft 0.17)</A
3156></H2
3157><P
3158></P
3159><OL
3160TYPE="1"
3161><LI
3162><P
3163><CODE
3164CLASS="CONSTANT"
3165>V4L2_PIX_FMT_HM12</CODE
3166> (<A
3167HREF="x5665.htm#RESERVED-FORMATS"
3168>Table 2-8</A
3169>) is a YUV 4:2:0, not 4:2:2 format.</P
3170></LI
3171></OL
3172></DIV
3173><DIV
3174CLASS="SECTION"
3175><H2
3176CLASS="SECTION"
3177><A
3178NAME="AEN16345"
3179>6.2.26. V4L2 in Linux 2.6.21</A
3180></H2
3181><P
3182></P
3183><OL
3184TYPE="1"
3185><LI
3186><P
3187>The <TT
3188CLASS="FILENAME"
3189>videodev2.h</TT
3190> header file is
3191now dual licensed under GNU General Public License version two or
3192later, and under a 3-clause BSD-style license.</P
3193></LI
3194></OL
3195></DIV
3196><DIV
3197CLASS="SECTION"
3198><H2
3199CLASS="SECTION"
3200><A
3201NAME="AEN16351"
3202>6.2.27. V4L2 in Linux 2.6.22</A
3203></H2
3204><P
3205></P
3206><OL
3207TYPE="1"
3208><LI
3209><P
3210>Two new field orders
3211          <CODE
3212CLASS="CONSTANT"
3213>V4L2_FIELD_INTERLACED_TB</CODE
3214> and
3215          <CODE
3216CLASS="CONSTANT"
3217>V4L2_FIELD_INTERLACED_BT</CODE
3218> were
3219          added. See <A
3220HREF="x6386.htm#V4L2-FIELD"
3221>Table 3-8</A
3222> for details.</P
3223></LI
3224><LI
3225><P
3226>Three new clipping/blending methods with a global or
3227straight or inverted local alpha value were added to the video overlay
3228interface. See the description of the <A
3229HREF="r10595.htm"
3230><CODE
3231CLASS="CONSTANT"
3232>VIDIOC_G_FBUF</CODE
3233></A
3234> and
3235<A
3236HREF="r10595.htm"
3237><CODE
3238CLASS="CONSTANT"
3239>VIDIOC_S_FBUF</CODE
3240></A
3241> ioctls for details.</P
3242><P
3243>A new <CODE
3244CLASS="STRUCTFIELD"
3245>global_alpha</CODE
3246> field
3247was added to <A
3248HREF="x6570.htm#V4L2-WINDOW"
3249><CODE
3250CLASS="STRUCTNAME"
3251>v4l2_window</CODE
3252></A
3253>,
3254extending the structure. This may <SPAN
3255CLASS="emphasis"
3256><I
3257CLASS="EMPHASIS"
3258>break
3259compatibility</I
3260></SPAN
3261> with applications using a struct
3262<CODE
3263CLASS="STRUCTNAME"
3264>v4l2_window</CODE
3265> directly. However the <A
3266HREF="r10944.htm"
3267>VIDIOC_G/S/TRY_FMT</A
3268> ioctls, which take a
3269pointer to a <A
3270HREF="r10944.htm#V4L2-FORMAT"
3271>v4l2_format</A
3272> parent
3273structure with padding bytes at the end, are not affected.</P
3274></LI
3275><LI
3276><P
3277>The format of the <CODE
3278CLASS="STRUCTFIELD"
3279>chromakey</CODE
3280>
3281field in struct&nbsp;<A
3282HREF="x6570.htm#V4L2-WINDOW"
3283>v4l2_window</A
3284> changed from "host order RGB32" to a pixel
3285value in the same format as the framebuffer. This may <SPAN
3286CLASS="emphasis"
3287><I
3288CLASS="EMPHASIS"
3289>break
3290compatibility</I
3291></SPAN
3292> with existing applications. Drivers
3293supporting the "host order RGB32" format are not known.</P
3294></LI
3295></OL
3296></DIV
3297><DIV
3298CLASS="SECTION"
3299><H2
3300CLASS="SECTION"
3301><A
3302NAME="AEN16378"
3303>6.2.28. V4L2 in Linux 2.6.24</A
3304></H2
3305><P
3306></P
3307><OL
3308TYPE="1"
3309><LI
3310><P
3311>The pixel formats
3312<CODE
3313CLASS="CONSTANT"
3314>V4L2_PIX_FMT_PAL8</CODE
3315>,
3316<CODE
3317CLASS="CONSTANT"
3318>V4L2_PIX_FMT_YUV444</CODE
3319>,
3320<CODE
3321CLASS="CONSTANT"
3322>V4L2_PIX_FMT_YUV555</CODE
3323>,
3324<CODE
3325CLASS="CONSTANT"
3326>V4L2_PIX_FMT_YUV565</CODE
3327> and
3328<CODE
3329CLASS="CONSTANT"
3330>V4L2_PIX_FMT_YUV32</CODE
3331> were added.</P
3332></LI
3333></OL
3334></DIV
3335><DIV
3336CLASS="SECTION"
3337><H2
3338CLASS="SECTION"
3339><A
3340NAME="AEN16388"
3341>6.2.29. V4L2 in Linux 2.6.25</A
3342></H2
3343><P
3344></P
3345><OL
3346TYPE="1"
3347><LI
3348><P
3349>The pixel formats <A
3350HREF="r4246.htm"
3351><CODE
3352CLASS="CONSTANT"
3353>V4L2_PIX_FMT_Y16</CODE
3354></A
3355> and <A
3356HREF="r3796.htm"
3357><CODE
3358CLASS="CONSTANT"
3359>V4L2_PIX_FMT_SBGGR16</CODE
3360></A
3361> were added.</P
3362></LI
3363><LI
3364><P
3365>New <A
3366HREF="x542.htm"
3367>controls</A
3368>
3369<CODE
3370CLASS="CONSTANT"
3371>V4L2_CID_POWER_LINE_FREQUENCY</CODE
3372>,
3373<CODE
3374CLASS="CONSTANT"
3375>V4L2_CID_HUE_AUTO</CODE
3376>,
3377<CODE
3378CLASS="CONSTANT"
3379>V4L2_CID_WHITE_BALANCE_TEMPERATURE</CODE
3380>,
3381<CODE
3382CLASS="CONSTANT"
3383>V4L2_CID_SHARPNESS</CODE
3384> and
3385<CODE
3386CLASS="CONSTANT"
3387>V4L2_CID_BACKLIGHT_COMPENSATION</CODE
3388> were added. The
3389controls <CODE
3390CLASS="CONSTANT"
3391>V4L2_CID_BLACK_LEVEL</CODE
3392>,
3393<CODE
3394CLASS="CONSTANT"
3395>V4L2_CID_WHITENESS</CODE
3396>,
3397<CODE
3398CLASS="CONSTANT"
3399>V4L2_CID_HCENTER</CODE
3400> and
3401<CODE
3402CLASS="CONSTANT"
3403>V4L2_CID_VCENTER</CODE
3404> were deprecated.</P
3405></LI
3406><LI
3407><P
3408>A <A
3409HREF="x802.htm#CAMERA-CONTROLS"
3410>Camera controls
3411class</A
3412> was added, with the new controls
3413<CODE
3414CLASS="CONSTANT"
3415>V4L2_CID_EXPOSURE_AUTO</CODE
3416>,
3417<CODE
3418CLASS="CONSTANT"
3419>V4L2_CID_EXPOSURE_ABSOLUTE</CODE
3420>,
3421<CODE
3422CLASS="CONSTANT"
3423>V4L2_CID_EXPOSURE_AUTO_PRIORITY</CODE
3424>,
3425<CODE
3426CLASS="CONSTANT"
3427>V4L2_CID_PAN_RELATIVE</CODE
3428>,
3429<CODE
3430CLASS="CONSTANT"
3431>V4L2_CID_TILT_RELATIVE</CODE
3432>,
3433<CODE
3434CLASS="CONSTANT"
3435>V4L2_CID_PAN_RESET</CODE
3436>,
3437<CODE
3438CLASS="CONSTANT"
3439>V4L2_CID_TILT_RESET</CODE
3440>,
3441<CODE
3442CLASS="CONSTANT"
3443>V4L2_CID_PAN_ABSOLUTE</CODE
3444>,
3445<CODE
3446CLASS="CONSTANT"
3447>V4L2_CID_TILT_ABSOLUTE</CODE
3448>,
3449<CODE
3450CLASS="CONSTANT"
3451>V4L2_CID_FOCUS_ABSOLUTE</CODE
3452>,
3453<CODE
3454CLASS="CONSTANT"
3455>V4L2_CID_FOCUS_RELATIVE</CODE
3456> and
3457<CODE
3458CLASS="CONSTANT"
3459>V4L2_CID_FOCUS_AUTO</CODE
3460>.</P
3461></LI
3462><LI
3463><P
3464>The <CODE
3465CLASS="CONSTANT"
3466>VIDIOC_G_MPEGCOMP</CODE
3467> and
3468<CODE
3469CLASS="CONSTANT"
3470>VIDIOC_S_MPEGCOMP</CODE
3471> ioctls, which were superseded
3472by the <A
3473HREF="x802.htm"
3474>extended controls</A
3475>
3476interface in Linux 2.6.18, where finally removed from the
3477<TT
3478CLASS="FILENAME"
3479>videodev2.h</TT
3480> header file.</P
3481></LI
3482></OL
3483></DIV
3484></DIV
3485><DIV
3486CLASS="NAVFOOTER"
3487><HR
3488ALIGN="LEFT"
3489WIDTH="100%"><TABLE
3490SUMMARY="Footer navigation table"
3491WIDTH="100%"
3492BORDER="0"
3493CELLPADDING="0"
3494CELLSPACING="0"
3495><TR
3496><TD
3497WIDTH="33%"
3498ALIGN="left"
3499VALIGN="top"
3500><A
3501HREF="c14595.htm"
3502ACCESSKEY="P"
3503>Prev</A
3504></TD
3505><TD
3506WIDTH="34%"
3507ALIGN="center"
3508VALIGN="top"
3509><A
3510HREF="book1.htm"
3511ACCESSKEY="H"
3512>Home</A
3513></TD
3514><TD
3515WIDTH="33%"
3516ALIGN="right"
3517VALIGN="top"
3518><A
3519HREF="x16430.htm"
3520ACCESSKEY="N"
3521>Next</A
3522></TD
3523></TR
3524><TR
3525><TD
3526WIDTH="33%"
3527ALIGN="left"
3528VALIGN="top"
3529>Changes</TD
3530><TD
3531WIDTH="34%"
3532ALIGN="center"
3533VALIGN="top"
3534><A
3535HREF="c14595.htm"
3536ACCESSKEY="U"
3537>Up</A
3538></TD
3539><TD
3540WIDTH="33%"
3541ALIGN="right"
3542VALIGN="top"
3543>Relation of V4L2 to other Linux multimedia APIs</TD
3544></TR
3545></TABLE
3546></DIV
3547></BODY
3548></HTML
3549>
3550