summaryrefslogtreecommitdiffstats
path: root/Documentation/DocBook/media/v4l/selections-common.xml
blob: d6d56fb6f9c095ded6b3b4971fef0cd205cd13c7 (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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<section id="v4l2-selections-common">

  <title>Common selection definitions</title>

  <para>While the <link linkend="selection-api">V4L2 selection
  API</link> and <link linkend="v4l2-subdev-selections">V4L2 subdev
  selection APIs</link> are very similar, there's one fundamental
  difference between the two. On sub-device API, the selection
  rectangle refers to the media bus format, and is bound to a
  sub-device's pad. On the V4L2 interface the selection rectangles
  refer to the in-memory pixel format.</para>

  <para>This section defines the common definitions of the
  selection interfaces on the two APIs.</para>

  <section id="v4l2-selection-targets">

    <title>Selection targets</title>

    <para>The precise meaning of the selection targets may be
    dependent on which of the two interfaces they are used.</para>

    <table pgwide="1" frame="none" id="v4l2-selection-targets-table">
    <title>Selection target definitions</title>
      <tgroup cols="5">
	<colspec colname="c1" />
	<colspec colname="c2" />
	<colspec colname="c3" />
	<colspec colname="c4" />
	<colspec colname="c5" />
	&cs-def;
	<thead>
	  <row rowsep="1">
	    <entry align="left">Target name</entry>
	    <entry align="left">id</entry>
	    <entry align="left">Definition</entry>
	    <entry align="left">Valid for V4L2</entry>
	    <entry align="left">Valid for V4L2 subdev</entry>
	  </row>
	</thead>
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_SEL_TGT_CROP</constant></entry>
	    <entry>0x0000</entry>
	    <entry>Crop rectangle. Defines the cropped area.</entry>
	    <entry>Yes</entry>
	    <entry>Yes</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_SEL_TGT_CROP_DEFAULT</constant></entry>
	    <entry>0x0001</entry>
	    <entry>Suggested cropping rectangle that covers the "whole picture".</entry>
	    <entry>Yes</entry>
	    <entry>No</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_SEL_TGT_CROP_BOUNDS</constant></entry>
	    <entry>0x0002</entry>
	    <entry>Bounds of the crop rectangle. All valid crop
	    rectangles fit inside the crop bounds rectangle.
	    </entry>
	    <entry>Yes</entry>
	    <entry>Yes</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_SEL_TGT_NATIVE_SIZE</constant></entry>
	    <entry>0x0003</entry>
	    <entry>The native size of the device, e.g. a sensor's
	    pixel array. <structfield>left</structfield> and
	    <structfield>top</structfield> fields are zero for this
	    target. Setting the native size will generally only make
	    sense for memory to memory devices where the software can
	    create a canvas of a given size in which for example a
	    video frame can be composed. In that case
	    V4L2_SEL_TGT_NATIVE_SIZE can be used to configure the size
	    of that canvas.
	    </entry>
	    <entry>Yes</entry>
	    <entry>Yes</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_SEL_TGT_COMPOSE</constant></entry>
	    <entry>0x0100</entry>
	    <entry>Compose rectangle. Used to configure scaling
	    and composition.</entry>
	    <entry>Yes</entry>
	    <entry>Yes</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant></entry>
	    <entry>0x0101</entry>
	    <entry>Suggested composition rectangle that covers the "whole picture".</entry>
	    <entry>Yes</entry>
	    <entry>No</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_SEL_TGT_COMPOSE_BOUNDS</constant></entry>
	    <entry>0x0102</entry>
	    <entry>Bounds of the compose rectangle. All valid compose
	    rectangles fit inside the compose bounds rectangle.</entry>
	    <entry>Yes</entry>
	    <entry>Yes</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant></entry>
	    <entry>0x0103</entry>
	    <entry>The active area and all padding pixels that are inserted or
	    modified by hardware.</entry>
	    <entry>Yes</entry>
	    <entry>No</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

  </section>

  <section id="v4l2-selection-flags">

    <title>Selection flags</title>

    <table pgwide="1" frame="none" id="v4l2-selection-flags-table">
    <title>Selection flag definitions</title>
      <tgroup cols="5">
	<colspec colname="c1" />
	<colspec colname="c2" />
	<colspec colname="c3" />
	<colspec colname="c4" />
	<colspec colname="c5" />
	&cs-def;
	<thead>
	<row rowsep="1">
	    <entry align="left">Flag name</entry>
	    <entry align="left">id</entry>
	    <entry align="left">Definition</entry>
	    <entry align="left">Valid for V4L2</entry>
	    <entry align="left">Valid for V4L2 subdev</entry>
	</row>
	</thead>
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_SEL_FLAG_GE</constant></entry>
	    <entry>(1 &lt;&lt; 0)</entry>
	    <entry>Suggest the driver it should choose greater or
	    equal rectangle (in size) than was requested. Albeit the
	    driver may choose a lesser size, it will only do so due to
	    hardware limitations. Without this flag (and
	    <constant>V4L2_SEL_FLAG_LE</constant>) the
	    behaviour is to choose the closest possible
	    rectangle.</entry>
	    <entry>Yes</entry>
	    <entry>Yes</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_SEL_FLAG_LE</constant></entry>
	    <entry>(1 &lt;&lt; 1)</entry>
	    <entry>Suggest the driver it
	    should choose lesser or equal rectangle (in size) than was
	    requested. Albeit the driver may choose a greater size, it
	    will only do so due to hardware limitations.</entry>
	    <entry>Yes</entry>
	    <entry>Yes</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_SEL_FLAG_KEEP_CONFIG</constant></entry>
	    <entry>(1 &lt;&lt; 2)</entry>
	    <entry>The configuration must not be propagated to any
	    further processing steps. If this flag is not given, the
	    configuration is propagated inside the subdevice to all
	    further processing steps.</entry>
	    <entry>No</entry>
	    <entry>Yes</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

  </section>

</section>