aboutsummaryrefslogtreecommitdiff
path: root/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
blob: f8dfeed34fcac79793df6303f9e70f3393033104 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<refentry id="vidioc-enum-fmt">
  <refmeta>
    <refentrytitle>ioctl VIDIOC_ENUM_FMT</refentrytitle>
    &manvol;
  </refmeta>

  <refnamediv>
    <refname>VIDIOC_ENUM_FMT</refname>
    <refpurpose>Enumerate image formats</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcprototype>
	<funcdef>int <function>ioctl</function></funcdef>
	<paramdef>int <parameter>fd</parameter></paramdef>
	<paramdef>int <parameter>request</parameter></paramdef>
	<paramdef>struct v4l2_fmtdesc
*<parameter>argp</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Arguments</title>

    <variablelist>
      <varlistentry>
	<term><parameter>fd</parameter></term>
	<listitem>
	  <para>&fd;</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>request</parameter></term>
	<listitem>
	  <para>VIDIOC_ENUM_FMT</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>argp</parameter></term>
	<listitem>
	  <para></para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Description</title>

    <para>To enumerate image formats applications initialize the
<structfield>type</structfield> and <structfield>index</structfield>
field of &v4l2-fmtdesc; and call the
<constant>VIDIOC_ENUM_FMT</constant> ioctl with a pointer to this
structure. Drivers fill the rest of the structure or return an
&EINVAL;. All formats are enumerable by beginning at index zero and
incrementing by one until <errorcode>EINVAL</errorcode> is
returned.</para>

    <para>Note that after switching input or output the list of enumerated image
formats may be different.</para>

    <table pgwide="1" frame="none" id="v4l2-fmtdesc">
      <title>struct <structname>v4l2_fmtdesc</structname></title>
      <tgroup cols="3">
	&cs-str;
	<tbody valign="top">
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>index</structfield></entry>
	    <entry>Number of the format in the enumeration, set by
the application. This is in no way related to the <structfield>
pixelformat</structfield> field.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>type</structfield></entry>
	    <entry>Type of the data stream, set by the application.
Only these types are valid here:
<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>,
<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant> and
<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>. See <xref linkend="v4l2-buf-type" />.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>flags</structfield></entry>
	    <entry>See <xref linkend="fmtdesc-flags" /></entry>
	  </row>
	  <row>
	    <entry>__u8</entry>
	    <entry><structfield>description</structfield>[32]</entry>
	    <entry>Description of the format, a NUL-terminated ASCII
string. This information is intended for the user, for example: "YUV
4:2:2".</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>pixelformat</structfield></entry>
	    <entry>The image format identifier. This is a
four character code as computed by the v4l2_fourcc()
macro:</entry>
	  </row>
	  <row>
	    <entry spanname="hspan"><para><programlisting id="v4l2-fourcc">
#define v4l2_fourcc(a,b,c,d) (((__u32)(a)&lt;&lt;0)|((__u32)(b)&lt;&lt;8)|((__u32)(c)&lt;&lt;16)|((__u32)(d)&lt;&lt;24))
</programlisting></para><para>Several image formats are already
defined by this specification in <xref linkend="pixfmt" />. Note these
codes are not the same as those used in the Windows world.</para></entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>reserved</structfield>[4]</entry>
	    <entry>Reserved for future extensions. Drivers must set
the array to zero.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="none" id="fmtdesc-flags">
      <title>Image Format Description Flags</title>
      <tgroup cols="3">
	&cs-def;
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_FMT_FLAG_COMPRESSED</constant></entry>
	    <entry>0x0001</entry>
	    <entry>This is a compressed format.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_FMT_FLAG_EMULATED</constant></entry>
	    <entry>0x0002</entry>
	    <entry>This format is not native to the device but emulated
through software (usually libv4l2), where possible try to use a native format
instead for better performance.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>
  </refsect1>

  <refsect1>
    &return-value;

    <variablelist>
      <varlistentry>
	<term><errorcode>EINVAL</errorcode></term>
	<listitem>
	  <para>The &v4l2-fmtdesc; <structfield>type</structfield>
is not supported or the <structfield>index</structfield> is out of
bounds.</para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>
</refentry>