diff options
author | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-07-17 21:07:30 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-07-17 21:51:27 -0400 |
commit | cff4c8acf229a53a4c959c9c7b74d1644ad3ab4c (patch) | |
tree | 2a6a3a7febe628a8cf466f0c84a4a94bc10e0306 | |
parent | 7200e689670ce6fa5c0f22db843e82cfcc6b6d2e (diff) |
[media] doc-rst: add vivid documentation
Convert it to ReST and add to media/v4l-drivers book.
As the sections here (and on other docs) are numbered,
let's also make this book auto-numbered.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
-rw-r--r-- | Documentation/media/v4l-drivers/index.rst | 2 | ||||
-rw-r--r-- | Documentation/media/v4l-drivers/vivid.rst | 667 |
2 files changed, 415 insertions, 254 deletions
diff --git a/Documentation/media/v4l-drivers/index.rst b/Documentation/media/v4l-drivers/index.rst index 4431b089af49..d660623eeea6 100644 --- a/Documentation/media/v4l-drivers/index.rst +++ b/Documentation/media/v4l-drivers/index.rst | |||
@@ -17,6 +17,7 @@ License". | |||
17 | 17 | ||
18 | .. toctree:: | 18 | .. toctree:: |
19 | :maxdepth: 5 | 19 | :maxdepth: 5 |
20 | :numbered: | ||
20 | 21 | ||
21 | fourcc | 22 | fourcc |
22 | cardlist | 23 | cardlist |
@@ -40,5 +41,6 @@ License". | |||
40 | si476x | 41 | si476x |
41 | soc-camera | 42 | soc-camera |
42 | uvcvideo | 43 | uvcvideo |
44 | vivid | ||
43 | zoran | 45 | zoran |
44 | zr364xx | 46 | zr364xx |
diff --git a/Documentation/media/v4l-drivers/vivid.rst b/Documentation/media/v4l-drivers/vivid.rst index 1b26519c6ddc..c8cf371e8bb9 100644 --- a/Documentation/media/v4l-drivers/vivid.rst +++ b/Documentation/media/v4l-drivers/vivid.rst | |||
@@ -1,5 +1,5 @@ | |||
1 | vivid: Virtual Video Test Driver | 1 | The Virtual Video Test Driver (vivid) |
2 | ================================ | 2 | ===================================== |
3 | 3 | ||
4 | This driver emulates video4linux hardware of various types: video capture, video | 4 | This driver emulates video4linux hardware of various types: video capture, video |
5 | output, vbi capture and output, radio receivers and transmitters and a software | 5 | output, vbi capture and output, radio receivers and transmitters and a software |
@@ -37,49 +37,8 @@ This document describes the features implemented by this driver: | |||
37 | 37 | ||
38 | These features will be described in more detail below. | 38 | These features will be described in more detail below. |
39 | 39 | ||
40 | 40 | Configuring the driver | |
41 | Table of Contents | 41 | ---------------------- |
42 | ----------------- | ||
43 | |||
44 | Section 1: Configuring the driver | ||
45 | Section 2: Video Capture | ||
46 | Section 2.1: Webcam Input | ||
47 | Section 2.2: TV and S-Video Inputs | ||
48 | Section 2.3: HDMI Input | ||
49 | Section 3: Video Output | ||
50 | Section 3.1: S-Video Output | ||
51 | Section 3.2: HDMI Output | ||
52 | Section 4: VBI Capture | ||
53 | Section 5: VBI Output | ||
54 | Section 6: Radio Receiver | ||
55 | Section 7: Radio Transmitter | ||
56 | Section 8: Software Defined Radio Receiver | ||
57 | Section 9: Controls | ||
58 | Section 9.1: User Controls - Test Controls | ||
59 | Section 9.2: User Controls - Video Capture | ||
60 | Section 9.3: User Controls - Audio | ||
61 | Section 9.4: Vivid Controls | ||
62 | Section 9.4.1: Test Pattern Controls | ||
63 | Section 9.4.2: Capture Feature Selection Controls | ||
64 | Section 9.4.3: Output Feature Selection Controls | ||
65 | Section 9.4.4: Error Injection Controls | ||
66 | Section 9.4.5: VBI Raw Capture Controls | ||
67 | Section 9.5: Digital Video Controls | ||
68 | Section 9.6: FM Radio Receiver Controls | ||
69 | Section 9.7: FM Radio Modulator | ||
70 | Section 10: Video, VBI and RDS Looping | ||
71 | Section 10.1: Video and Sliced VBI looping | ||
72 | Section 10.2: Radio & RDS Looping | ||
73 | Section 11: Cropping, Composing, Scaling | ||
74 | Section 12: Formats | ||
75 | Section 13: Capture Overlay | ||
76 | Section 14: Output Overlay | ||
77 | Section 15: CEC (Consumer Electronics Control) | ||
78 | Section 16: Some Future Improvements | ||
79 | |||
80 | |||
81 | Section 1: Configuring the driver | ||
82 | --------------------------------- | ||
83 | 42 | ||
84 | By default the driver will create a single instance that has a video capture | 43 | By default the driver will create a single instance that has a video capture |
85 | device with webcam, TV, S-Video and HDMI inputs, a video output device with | 44 | device with webcam, TV, S-Video and HDMI inputs, a video output device with |
@@ -89,71 +48,94 @@ radio receiver device, one radio transmitter device and one SDR device. | |||
89 | The number of instances, devices, video inputs and outputs and their types are | 48 | The number of instances, devices, video inputs and outputs and their types are |
90 | all configurable using the following module options: | 49 | all configurable using the following module options: |
91 | 50 | ||
92 | n_devs: number of driver instances to create. By default set to 1. Up to 64 | 51 | - n_devs: |
52 | |||
53 | number of driver instances to create. By default set to 1. Up to 64 | ||
93 | instances can be created. | 54 | instances can be created. |
94 | 55 | ||
95 | node_types: which devices should each driver instance create. An array of | 56 | - node_types: |
57 | |||
58 | which devices should each driver instance create. An array of | ||
96 | hexadecimal values, one for each instance. The default is 0x1d3d. | 59 | hexadecimal values, one for each instance. The default is 0x1d3d. |
97 | Each value is a bitmask with the following meaning: | 60 | Each value is a bitmask with the following meaning: |
98 | bit 0: Video Capture node | 61 | |
99 | bit 2-3: VBI Capture node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both | 62 | - bit 0: Video Capture node |
100 | bit 4: Radio Receiver node | 63 | - bit 2-3: VBI Capture node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both |
101 | bit 5: Software Defined Radio Receiver node | 64 | - bit 4: Radio Receiver node |
102 | bit 8: Video Output node | 65 | - bit 5: Software Defined Radio Receiver node |
103 | bit 10-11: VBI Output node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both | 66 | - bit 8: Video Output node |
104 | bit 12: Radio Transmitter node | 67 | - bit 10-11: VBI Output node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both |
105 | bit 16: Framebuffer for testing overlays | 68 | - bit 12: Radio Transmitter node |
69 | - bit 16: Framebuffer for testing overlays | ||
106 | 70 | ||
107 | So to create four instances, the first two with just one video capture | 71 | So to create four instances, the first two with just one video capture |
108 | device, the second two with just one video output device you would pass | 72 | device, the second two with just one video output device you would pass |
109 | these module options to vivid: | 73 | these module options to vivid: |
110 | 74 | ||
75 | .. code-block:: none | ||
76 | |||
111 | n_devs=4 node_types=0x1,0x1,0x100,0x100 | 77 | n_devs=4 node_types=0x1,0x1,0x100,0x100 |
112 | 78 | ||
113 | num_inputs: the number of inputs, one for each instance. By default 4 inputs | 79 | - num_inputs: |
80 | |||
81 | the number of inputs, one for each instance. By default 4 inputs | ||
114 | are created for each video capture device. At most 16 inputs can be created, | 82 | are created for each video capture device. At most 16 inputs can be created, |
115 | and there must be at least one. | 83 | and there must be at least one. |
116 | 84 | ||
117 | input_types: the input types for each instance, the default is 0xe4. This defines | 85 | - input_types: |
86 | |||
87 | the input types for each instance, the default is 0xe4. This defines | ||
118 | what the type of each input is when the inputs are created for each driver | 88 | what the type of each input is when the inputs are created for each driver |
119 | instance. This is a hexadecimal value with up to 16 pairs of bits, each | 89 | instance. This is a hexadecimal value with up to 16 pairs of bits, each |
120 | pair gives the type and bits 0-1 map to input 0, bits 2-3 map to input 1, | 90 | pair gives the type and bits 0-1 map to input 0, bits 2-3 map to input 1, |
121 | 30-31 map to input 15. Each pair of bits has the following meaning: | 91 | 30-31 map to input 15. Each pair of bits has the following meaning: |
122 | 92 | ||
123 | 00: this is a webcam input | 93 | - 00: this is a webcam input |
124 | 01: this is a TV tuner input | 94 | - 01: this is a TV tuner input |
125 | 10: this is an S-Video input | 95 | - 10: this is an S-Video input |
126 | 11: this is an HDMI input | 96 | - 11: this is an HDMI input |
127 | 97 | ||
128 | So to create a video capture device with 8 inputs where input 0 is a TV | 98 | So to create a video capture device with 8 inputs where input 0 is a TV |
129 | tuner, inputs 1-3 are S-Video inputs and inputs 4-7 are HDMI inputs you | 99 | tuner, inputs 1-3 are S-Video inputs and inputs 4-7 are HDMI inputs you |
130 | would use the following module options: | 100 | would use the following module options: |
131 | 101 | ||
102 | .. code-block:: none | ||
103 | |||
132 | num_inputs=8 input_types=0xffa9 | 104 | num_inputs=8 input_types=0xffa9 |
133 | 105 | ||
134 | num_outputs: the number of outputs, one for each instance. By default 2 outputs | 106 | - num_outputs: |
107 | |||
108 | the number of outputs, one for each instance. By default 2 outputs | ||
135 | are created for each video output device. At most 16 outputs can be | 109 | are created for each video output device. At most 16 outputs can be |
136 | created, and there must be at least one. | 110 | created, and there must be at least one. |
137 | 111 | ||
138 | output_types: the output types for each instance, the default is 0x02. This defines | 112 | - output_types: |
113 | |||
114 | the output types for each instance, the default is 0x02. This defines | ||
139 | what the type of each output is when the outputs are created for each | 115 | what the type of each output is when the outputs are created for each |
140 | driver instance. This is a hexadecimal value with up to 16 bits, each bit | 116 | driver instance. This is a hexadecimal value with up to 16 bits, each bit |
141 | gives the type and bit 0 maps to output 0, bit 1 maps to output 1, bit | 117 | gives the type and bit 0 maps to output 0, bit 1 maps to output 1, bit |
142 | 15 maps to output 15. The meaning of each bit is as follows: | 118 | 15 maps to output 15. The meaning of each bit is as follows: |
143 | 119 | ||
144 | 0: this is an S-Video output | 120 | - 0: this is an S-Video output |
145 | 1: this is an HDMI output | 121 | - 1: this is an HDMI output |
146 | 122 | ||
147 | So to create a video output device with 8 outputs where outputs 0-3 are | 123 | So to create a video output device with 8 outputs where outputs 0-3 are |
148 | S-Video outputs and outputs 4-7 are HDMI outputs you would use the | 124 | S-Video outputs and outputs 4-7 are HDMI outputs you would use the |
149 | following module options: | 125 | following module options: |
150 | 126 | ||
127 | .. code-block:: none | ||
128 | |||
151 | num_outputs=8 output_types=0xf0 | 129 | num_outputs=8 output_types=0xf0 |
152 | 130 | ||
153 | vid_cap_nr: give the desired videoX start number for each video capture device. | 131 | - vid_cap_nr: |
132 | |||
133 | give the desired videoX start number for each video capture device. | ||
154 | The default is -1 which will just take the first free number. This allows | 134 | The default is -1 which will just take the first free number. This allows |
155 | you to map capture video nodes to specific videoX device nodes. Example: | 135 | you to map capture video nodes to specific videoX device nodes. Example: |
156 | 136 | ||
137 | .. code-block:: none | ||
138 | |||
157 | n_devs=4 vid_cap_nr=2,4,6,8 | 139 | n_devs=4 vid_cap_nr=2,4,6,8 |
158 | 140 | ||
159 | This will attempt to assign /dev/video2 for the video capture device of | 141 | This will attempt to assign /dev/video2 for the video capture device of |
@@ -161,25 +143,39 @@ vid_cap_nr: give the desired videoX start number for each video capture device. | |||
161 | instance. If it can't succeed, then it will just take the next free | 143 | instance. If it can't succeed, then it will just take the next free |
162 | number. | 144 | number. |
163 | 145 | ||
164 | vid_out_nr: give the desired videoX start number for each video output device. | 146 | - vid_out_nr: |
165 | The default is -1 which will just take the first free number. | 147 | |
148 | give the desired videoX start number for each video output device. | ||
149 | The default is -1 which will just take the first free number. | ||
150 | |||
151 | - vbi_cap_nr: | ||
166 | 152 | ||
167 | vbi_cap_nr: give the desired vbiX start number for each vbi capture device. | 153 | give the desired vbiX start number for each vbi capture device. |
168 | The default is -1 which will just take the first free number. | 154 | The default is -1 which will just take the first free number. |
169 | 155 | ||
170 | vbi_out_nr: give the desired vbiX start number for each vbi output device. | 156 | - vbi_out_nr: |
171 | The default is -1 which will just take the first free number. | ||
172 | 157 | ||
173 | radio_rx_nr: give the desired radioX start number for each radio receiver device. | 158 | give the desired vbiX start number for each vbi output device. |
174 | The default is -1 which will just take the first free number. | 159 | The default is -1 which will just take the first free number. |
175 | 160 | ||
176 | radio_tx_nr: give the desired radioX start number for each radio transmitter | 161 | - radio_rx_nr: |
162 | |||
163 | give the desired radioX start number for each radio receiver device. | ||
164 | The default is -1 which will just take the first free number. | ||
165 | |||
166 | - radio_tx_nr: | ||
167 | |||
168 | give the desired radioX start number for each radio transmitter | ||
177 | device. The default is -1 which will just take the first free number. | 169 | device. The default is -1 which will just take the first free number. |
178 | 170 | ||
179 | sdr_cap_nr: give the desired swradioX start number for each SDR capture device. | 171 | - sdr_cap_nr: |
180 | The default is -1 which will just take the first free number. | 172 | |
173 | give the desired swradioX start number for each SDR capture device. | ||
174 | The default is -1 which will just take the first free number. | ||
175 | |||
176 | - ccs_cap_mode: | ||
181 | 177 | ||
182 | ccs_cap_mode: specify the allowed video capture crop/compose/scaling combination | 178 | specify the allowed video capture crop/compose/scaling combination |
183 | for each driver instance. Video capture devices can have any combination | 179 | for each driver instance. Video capture devices can have any combination |
184 | of cropping, composing and scaling capabilities and this will tell the | 180 | of cropping, composing and scaling capabilities and this will tell the |
185 | vivid driver which of those is should emulate. By default the user can | 181 | vivid driver which of those is should emulate. By default the user can |
@@ -188,21 +184,30 @@ ccs_cap_mode: specify the allowed video capture crop/compose/scaling combination | |||
188 | The value is either -1 (controlled by the user) or a set of three bits, | 184 | The value is either -1 (controlled by the user) or a set of three bits, |
189 | each enabling (1) or disabling (0) one of the features: | 185 | each enabling (1) or disabling (0) one of the features: |
190 | 186 | ||
191 | bit 0: Enable crop support. Cropping will take only part of the | 187 | - bit 0: |
192 | incoming picture. | 188 | |
193 | bit 1: Enable compose support. Composing will copy the incoming | 189 | Enable crop support. Cropping will take only part of the |
194 | picture into a larger buffer. | 190 | incoming picture. |
195 | bit 2: Enable scaling support. Scaling can scale the incoming | 191 | - bit 1: |
196 | picture. The scaler of the vivid driver can enlarge up | 192 | |
197 | or down to four times the original size. The scaler is | 193 | Enable compose support. Composing will copy the incoming |
198 | very simple and low-quality. Simplicity and speed were | 194 | picture into a larger buffer. |
199 | key, not quality. | 195 | |
196 | - bit 2: | ||
197 | |||
198 | Enable scaling support. Scaling can scale the incoming | ||
199 | picture. The scaler of the vivid driver can enlarge up | ||
200 | or down to four times the original size. The scaler is | ||
201 | very simple and low-quality. Simplicity and speed were | ||
202 | key, not quality. | ||
200 | 203 | ||
201 | Note that this value is ignored by webcam inputs: those enumerate | 204 | Note that this value is ignored by webcam inputs: those enumerate |
202 | discrete framesizes and that is incompatible with cropping, composing | 205 | discrete framesizes and that is incompatible with cropping, composing |
203 | or scaling. | 206 | or scaling. |
204 | 207 | ||
205 | ccs_out_mode: specify the allowed video output crop/compose/scaling combination | 208 | - ccs_out_mode: |
209 | |||
210 | specify the allowed video output crop/compose/scaling combination | ||
206 | for each driver instance. Video output devices can have any combination | 211 | for each driver instance. Video output devices can have any combination |
207 | of cropping, composing and scaling capabilities and this will tell the | 212 | of cropping, composing and scaling capabilities and this will tell the |
208 | vivid driver which of those is should emulate. By default the user can | 213 | vivid driver which of those is should emulate. By default the user can |
@@ -211,28 +216,42 @@ ccs_out_mode: specify the allowed video output crop/compose/scaling combination | |||
211 | The value is either -1 (controlled by the user) or a set of three bits, | 216 | The value is either -1 (controlled by the user) or a set of three bits, |
212 | each enabling (1) or disabling (0) one of the features: | 217 | each enabling (1) or disabling (0) one of the features: |
213 | 218 | ||
214 | bit 0: Enable crop support. Cropping will take only part of the | 219 | - bit 0: |
215 | outgoing buffer. | 220 | |
216 | bit 1: Enable compose support. Composing will copy the incoming | 221 | Enable crop support. Cropping will take only part of the |
217 | buffer into a larger picture frame. | 222 | outgoing buffer. |
218 | bit 2: Enable scaling support. Scaling can scale the incoming | 223 | |
219 | buffer. The scaler of the vivid driver can enlarge up | 224 | - bit 1: |
220 | or down to four times the original size. The scaler is | 225 | |
221 | very simple and low-quality. Simplicity and speed were | 226 | Enable compose support. Composing will copy the incoming |
222 | key, not quality. | 227 | buffer into a larger picture frame. |
223 | 228 | ||
224 | multiplanar: select whether each device instance supports multi-planar formats, | 229 | - bit 2: |
230 | |||
231 | Enable scaling support. Scaling can scale the incoming | ||
232 | buffer. The scaler of the vivid driver can enlarge up | ||
233 | or down to four times the original size. The scaler is | ||
234 | very simple and low-quality. Simplicity and speed were | ||
235 | key, not quality. | ||
236 | |||
237 | - multiplanar: | ||
238 | |||
239 | select whether each device instance supports multi-planar formats, | ||
225 | and thus the V4L2 multi-planar API. By default device instances are | 240 | and thus the V4L2 multi-planar API. By default device instances are |
226 | single-planar. | 241 | single-planar. |
227 | 242 | ||
228 | This module option can override that for each instance. Values are: | 243 | This module option can override that for each instance. Values are: |
229 | 244 | ||
230 | 1: this is a single-planar instance. | 245 | - 1: this is a single-planar instance. |
231 | 2: this is a multi-planar instance. | 246 | - 2: this is a multi-planar instance. |
232 | 247 | ||
233 | vivid_debug: enable driver debugging info | 248 | - vivid_debug: |
234 | 249 | ||
235 | no_error_inj: if set disable the error injecting controls. This option is | 250 | enable driver debugging info |
251 | |||
252 | - no_error_inj: | ||
253 | |||
254 | if set disable the error injecting controls. This option is | ||
236 | needed in order to run a tool like v4l2-compliance. Tools like that | 255 | needed in order to run a tool like v4l2-compliance. Tools like that |
237 | exercise all controls including a control like 'Disconnect' which | 256 | exercise all controls including a control like 'Disconnect' which |
238 | emulates a USB disconnect, making the device inaccessible and so | 257 | emulates a USB disconnect, making the device inaccessible and so |
@@ -250,8 +269,8 @@ It is also very suitable to emulate hardware that is not yet available, e.g. | |||
250 | when developing software for a new upcoming device. | 269 | when developing software for a new upcoming device. |
251 | 270 | ||
252 | 271 | ||
253 | Section 2: Video Capture | 272 | Video Capture |
254 | ------------------------ | 273 | ------------- |
255 | 274 | ||
256 | This is probably the most frequently used feature. The video capture device | 275 | This is probably the most frequently used feature. The video capture device |
257 | can be configured by using the module options num_inputs, input_types and | 276 | can be configured by using the module options num_inputs, input_types and |
@@ -270,8 +289,8 @@ frame/field sequence counting will keep track of that so the sequence | |||
270 | count will skip whenever frames are dropped. | 289 | count will skip whenever frames are dropped. |
271 | 290 | ||
272 | 291 | ||
273 | Section 2.1: Webcam Input | 292 | Webcam Input |
274 | ------------------------- | 293 | ~~~~~~~~~~~~ |
275 | 294 | ||
276 | The webcam input supports three framesizes: 320x180, 640x360 and 1280x720. It | 295 | The webcam input supports three framesizes: 320x180, 640x360 and 1280x720. It |
277 | supports frames per second settings of 10, 15, 25, 30, 50 and 60 fps. Which ones | 296 | supports frames per second settings of 10, 15, 25, 30, 50 and 60 fps. Which ones |
@@ -282,8 +301,8 @@ The initially selected colorspace when you switch to the webcam input will be | |||
282 | sRGB. | 301 | sRGB. |
283 | 302 | ||
284 | 303 | ||
285 | Section 2.2: TV and S-Video Inputs | 304 | TV and S-Video Inputs |
286 | ---------------------------------- | 305 | ~~~~~~~~~~~~~~~~~~~~~ |
287 | 306 | ||
288 | The only difference between the TV and S-Video input is that the TV has a | 307 | The only difference between the TV and S-Video input is that the TV has a |
289 | tuner. Otherwise they behave identically. | 308 | tuner. Otherwise they behave identically. |
@@ -338,8 +357,8 @@ Finally, for these inputs the v4l2_timecode struct is filled in in the | |||
338 | dequeued v4l2_buffer struct. | 357 | dequeued v4l2_buffer struct. |
339 | 358 | ||
340 | 359 | ||
341 | Section 2.3: HDMI Input | 360 | HDMI Input |
342 | ----------------------- | 361 | ~~~~~~~~~~ |
343 | 362 | ||
344 | The HDMI inputs supports all CEA-861 and DMT timings, both progressive and | 363 | The HDMI inputs supports all CEA-861 and DMT timings, both progressive and |
345 | interlaced, for pixelclock frequencies between 25 and 600 MHz. The field | 364 | interlaced, for pixelclock frequencies between 25 and 600 MHz. The field |
@@ -372,8 +391,8 @@ There is a maximum of 15 HDMI inputs (if there are more, then they will be | |||
372 | reduced to 15) since that's the limitation of the EDID physical address. | 391 | reduced to 15) since that's the limitation of the EDID physical address. |
373 | 392 | ||
374 | 393 | ||
375 | Section 3: Video Output | 394 | Video Output |
376 | ----------------------- | 395 | ------------ |
377 | 396 | ||
378 | The video output device can be configured by using the module options | 397 | The video output device can be configured by using the module options |
379 | num_outputs, output_types and ccs_out_mode (see section 1 for more detailed | 398 | num_outputs, output_types and ccs_out_mode (see section 1 for more detailed |
@@ -384,8 +403,8 @@ below. | |||
384 | Like with video capture the framerate is also exact in the long term. | 403 | Like with video capture the framerate is also exact in the long term. |
385 | 404 | ||
386 | 405 | ||
387 | Section 3.1: S-Video Output | 406 | S-Video Output |
388 | --------------------------- | 407 | ~~~~~~~~~~~~~~ |
389 | 408 | ||
390 | This output supports audio outputs as well: "Line-Out 1" and "Line-Out 2". | 409 | This output supports audio outputs as well: "Line-Out 1" and "Line-Out 2". |
391 | The S-Video output supports all TV standards. | 410 | The S-Video output supports all TV standards. |
@@ -396,8 +415,8 @@ The initially selected colorspace when you switch to the TV or S-Video input | |||
396 | will be SMPTE-170M. | 415 | will be SMPTE-170M. |
397 | 416 | ||
398 | 417 | ||
399 | Section 3.2: HDMI Output | 418 | HDMI Output |
400 | ------------------------ | 419 | ~~~~~~~~~~~ |
401 | 420 | ||
402 | The HDMI output supports all CEA-861 and DMT timings, both progressive and | 421 | The HDMI output supports all CEA-861 and DMT timings, both progressive and |
403 | interlaced, for pixelclock frequencies between 25 and 600 MHz. The field | 422 | interlaced, for pixelclock frequencies between 25 and 600 MHz. The field |
@@ -418,8 +437,8 @@ There is a maximum of 15 HDMI outputs (if there are more, then they will be | |||
418 | reduced to 15) since that's the limitation of the EDID physical address. See | 437 | reduced to 15) since that's the limitation of the EDID physical address. See |
419 | also the CEC section for more details. | 438 | also the CEC section for more details. |
420 | 439 | ||
421 | Section 4: VBI Capture | 440 | VBI Capture |
422 | ---------------------- | 441 | ----------- |
423 | 442 | ||
424 | There are three types of VBI capture devices: those that only support raw | 443 | There are three types of VBI capture devices: those that only support raw |
425 | (undecoded) VBI, those that only support sliced (decoded) VBI and those that | 444 | (undecoded) VBI, those that only support sliced (decoded) VBI and those that |
@@ -435,8 +454,8 @@ The VBI device will only work for the S-Video and TV inputs, it will give | |||
435 | back an error if the current input is a webcam or HDMI. | 454 | back an error if the current input is a webcam or HDMI. |
436 | 455 | ||
437 | 456 | ||
438 | Section 5: VBI Output | 457 | VBI Output |
439 | --------------------- | 458 | ---------- |
440 | 459 | ||
441 | There are three types of VBI output devices: those that only support raw | 460 | There are three types of VBI output devices: those that only support raw |
442 | (undecoded) VBI, those that only support sliced (decoded) VBI and those that | 461 | (undecoded) VBI, those that only support sliced (decoded) VBI and those that |
@@ -449,15 +468,15 @@ The VBI device will only work for the S-Video output, it will give | |||
449 | back an error if the current output is HDMI. | 468 | back an error if the current output is HDMI. |
450 | 469 | ||
451 | 470 | ||
452 | Section 6: Radio Receiver | 471 | Radio Receiver |
453 | ------------------------- | 472 | -------------- |
454 | 473 | ||
455 | The radio receiver emulates an FM/AM/SW receiver. The FM band also supports RDS. | 474 | The radio receiver emulates an FM/AM/SW receiver. The FM band also supports RDS. |
456 | The frequency ranges are: | 475 | The frequency ranges are: |
457 | 476 | ||
458 | FM: 64 MHz - 108 MHz | 477 | - FM: 64 MHz - 108 MHz |
459 | AM: 520 kHz - 1710 kHz | 478 | - AM: 520 kHz - 1710 kHz |
460 | SW: 2300 kHz - 26.1 MHz | 479 | - SW: 2300 kHz - 26.1 MHz |
461 | 480 | ||
462 | Valid channels are emulated every 1 MHz for FM and every 100 kHz for AM and SW. | 481 | Valid channels are emulated every 1 MHz for FM and every 100 kHz for AM and SW. |
463 | The signal strength decreases the further the frequency is from the valid | 482 | The signal strength decreases the further the frequency is from the valid |
@@ -485,15 +504,15 @@ The receiver supports HW frequency seek, either in Bounded mode, Wrap Around | |||
485 | mode or both, which is configurable with the "Radio HW Seek Mode" control. | 504 | mode or both, which is configurable with the "Radio HW Seek Mode" control. |
486 | 505 | ||
487 | 506 | ||
488 | Section 7: Radio Transmitter | 507 | Radio Transmitter |
489 | ---------------------------- | 508 | ----------------- |
490 | 509 | ||
491 | The radio transmitter emulates an FM/AM/SW transmitter. The FM band also supports RDS. | 510 | The radio transmitter emulates an FM/AM/SW transmitter. The FM band also supports RDS. |
492 | The frequency ranges are: | 511 | The frequency ranges are: |
493 | 512 | ||
494 | FM: 64 MHz - 108 MHz | 513 | - FM: 64 MHz - 108 MHz |
495 | AM: 520 kHz - 1710 kHz | 514 | - AM: 520 kHz - 1710 kHz |
496 | SW: 2300 kHz - 26.1 MHz | 515 | - SW: 2300 kHz - 26.1 MHz |
497 | 516 | ||
498 | The initial frequency when the driver is loaded is 95.5 MHz. | 517 | The initial frequency when the driver is loaded is 95.5 MHz. |
499 | 518 | ||
@@ -503,8 +522,8 @@ using controls, and in 'Block I/O' mode the blocks are passed to the driver | |||
503 | using write(). | 522 | using write(). |
504 | 523 | ||
505 | 524 | ||
506 | Section 8: Software Defined Radio Receiver | 525 | Software Defined Radio Receiver |
507 | ------------------------------------------ | 526 | ------------------------------- |
508 | 527 | ||
509 | The SDR receiver has three frequency bands for the ADC tuner: | 528 | The SDR receiver has three frequency bands for the ADC tuner: |
510 | 529 | ||
@@ -518,15 +537,15 @@ The generated data contains the In-phase and Quadrature components of a | |||
518 | 1 kHz tone that has an amplitude of sqrt(2). | 537 | 1 kHz tone that has an amplitude of sqrt(2). |
519 | 538 | ||
520 | 539 | ||
521 | Section 9: Controls | 540 | Controls |
522 | ------------------- | 541 | -------- |
523 | 542 | ||
524 | Different devices support different controls. The sections below will describe | 543 | Different devices support different controls. The sections below will describe |
525 | each control and which devices support them. | 544 | each control and which devices support them. |
526 | 545 | ||
527 | 546 | ||
528 | Section 9.1: User Controls - Test Controls | 547 | User Controls - Test Controls |
529 | ------------------------------------------ | 548 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
530 | 549 | ||
531 | The Button, Boolean, Integer 32 Bits, Integer 64 Bits, Menu, String, Bitmask and | 550 | The Button, Boolean, Integer 32 Bits, Integer 64 Bits, Menu, String, Bitmask and |
532 | Integer Menu are controls that represent all possible control types. The Menu | 551 | Integer Menu are controls that represent all possible control types. The Menu |
@@ -537,8 +556,8 @@ allow you to check if your application can handle such things correctly. | |||
537 | These controls are supported for every device type. | 556 | These controls are supported for every device type. |
538 | 557 | ||
539 | 558 | ||
540 | Section 9.2: User Controls - Video Capture | 559 | User Controls - Video Capture |
541 | ------------------------------------------ | 560 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
542 | 561 | ||
543 | The following controls are specific to video capture. | 562 | The following controls are specific to video capture. |
544 | 563 | ||
@@ -563,8 +582,8 @@ The 'Alpha Component' control can be used to set the alpha component for | |||
563 | formats containing an alpha channel. | 582 | formats containing an alpha channel. |
564 | 583 | ||
565 | 584 | ||
566 | Section 9.3: User Controls - Audio | 585 | User Controls - Audio |
567 | ---------------------------------- | 586 | ~~~~~~~~~~~~~~~~~~~~~ |
568 | 587 | ||
569 | The following controls are specific to video capture and output and radio | 588 | The following controls are specific to video capture and output and radio |
570 | receivers and transmitters. | 589 | receivers and transmitters. |
@@ -574,70 +593,98 @@ control the volume and mute the audio. They don't actually do anything in | |||
574 | the vivid driver. | 593 | the vivid driver. |
575 | 594 | ||
576 | 595 | ||
577 | Section 9.4: Vivid Controls | 596 | Vivid Controls |
578 | --------------------------- | 597 | ~~~~~~~~~~~~~~ |
579 | 598 | ||
580 | These vivid custom controls control the image generation, error injection, etc. | 599 | These vivid custom controls control the image generation, error injection, etc. |
581 | 600 | ||
582 | 601 | ||
583 | Section 9.4.1: Test Pattern Controls | 602 | Test Pattern Controls |
584 | ------------------------------------ | 603 | ^^^^^^^^^^^^^^^^^^^^^ |
585 | 604 | ||
586 | The Test Pattern Controls are all specific to video capture. | 605 | The Test Pattern Controls are all specific to video capture. |
587 | 606 | ||
588 | Test Pattern: selects which test pattern to use. Use the CSC Colorbar for | 607 | - Test Pattern: |
608 | |||
609 | selects which test pattern to use. Use the CSC Colorbar for | ||
589 | testing colorspace conversions: the colors used in that test pattern | 610 | testing colorspace conversions: the colors used in that test pattern |
590 | map to valid colors in all colorspaces. The colorspace conversion | 611 | map to valid colors in all colorspaces. The colorspace conversion |
591 | is disabled for the other test patterns. | 612 | is disabled for the other test patterns. |
592 | 613 | ||
593 | OSD Text Mode: selects whether the text superimposed on the | 614 | - OSD Text Mode: |
615 | |||
616 | selects whether the text superimposed on the | ||
594 | test pattern should be shown, and if so, whether only counters should | 617 | test pattern should be shown, and if so, whether only counters should |
595 | be displayed or the full text. | 618 | be displayed or the full text. |
596 | 619 | ||
597 | Horizontal Movement: selects whether the test pattern should | 620 | - Horizontal Movement: |
621 | |||
622 | selects whether the test pattern should | ||
598 | move to the left or right and at what speed. | 623 | move to the left or right and at what speed. |
599 | 624 | ||
600 | Vertical Movement: does the same for the vertical direction. | 625 | - Vertical Movement: |
626 | |||
627 | does the same for the vertical direction. | ||
628 | |||
629 | - Show Border: | ||
601 | 630 | ||
602 | Show Border: show a two-pixel wide border at the edge of the actual image, | 631 | show a two-pixel wide border at the edge of the actual image, |
603 | excluding letter or pillarboxing. | 632 | excluding letter or pillarboxing. |
604 | 633 | ||
605 | Show Square: show a square in the middle of the image. If the image is | 634 | - Show Square: |
635 | |||
636 | show a square in the middle of the image. If the image is | ||
606 | displayed with the correct pixel and image aspect ratio corrections, | 637 | displayed with the correct pixel and image aspect ratio corrections, |
607 | then the width and height of the square on the monitor should be | 638 | then the width and height of the square on the monitor should be |
608 | the same. | 639 | the same. |
609 | 640 | ||
610 | Insert SAV Code in Image: adds a SAV (Start of Active Video) code to the image. | 641 | - Insert SAV Code in Image: |
642 | |||
643 | adds a SAV (Start of Active Video) code to the image. | ||
611 | This can be used to check if such codes in the image are inadvertently | 644 | This can be used to check if such codes in the image are inadvertently |
612 | interpreted instead of being ignored. | 645 | interpreted instead of being ignored. |
613 | 646 | ||
614 | Insert EAV Code in Image: does the same for the EAV (End of Active Video) code. | 647 | - Insert EAV Code in Image: |
615 | 648 | ||
649 | does the same for the EAV (End of Active Video) code. | ||
616 | 650 | ||
617 | Section 9.4.2: Capture Feature Selection Controls | 651 | |
618 | ------------------------------------------------- | 652 | Capture Feature Selection Controls |
653 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
619 | 654 | ||
620 | These controls are all specific to video capture. | 655 | These controls are all specific to video capture. |
621 | 656 | ||
622 | Sensor Flipped Horizontally: the image is flipped horizontally and the | 657 | - Sensor Flipped Horizontally: |
658 | |||
659 | the image is flipped horizontally and the | ||
623 | V4L2_IN_ST_HFLIP input status flag is set. This emulates the case where | 660 | V4L2_IN_ST_HFLIP input status flag is set. This emulates the case where |
624 | a sensor is for example mounted upside down. | 661 | a sensor is for example mounted upside down. |
625 | 662 | ||
626 | Sensor Flipped Vertically: the image is flipped vertically and the | 663 | - Sensor Flipped Vertically: |
664 | |||
665 | the image is flipped vertically and the | ||
627 | V4L2_IN_ST_VFLIP input status flag is set. This emulates the case where | 666 | V4L2_IN_ST_VFLIP input status flag is set. This emulates the case where |
628 | a sensor is for example mounted upside down. | 667 | a sensor is for example mounted upside down. |
668 | |||
669 | - Standard Aspect Ratio: | ||
629 | 670 | ||
630 | Standard Aspect Ratio: selects if the image aspect ratio as used for the TV or | 671 | selects if the image aspect ratio as used for the TV or |
631 | S-Video input should be 4x3, 16x9 or anamorphic widescreen. This may | 672 | S-Video input should be 4x3, 16x9 or anamorphic widescreen. This may |
632 | introduce letterboxing. | 673 | introduce letterboxing. |
633 | 674 | ||
634 | DV Timings Aspect Ratio: selects if the image aspect ratio as used for the HDMI | 675 | - DV Timings Aspect Ratio: |
676 | |||
677 | selects if the image aspect ratio as used for the HDMI | ||
635 | input should be the same as the source width and height ratio, or if | 678 | input should be the same as the source width and height ratio, or if |
636 | it should be 4x3 or 16x9. This may introduce letter or pillarboxing. | 679 | it should be 4x3 or 16x9. This may introduce letter or pillarboxing. |
637 | 680 | ||
638 | Timestamp Source: selects when the timestamp for each buffer is taken. | 681 | - Timestamp Source: |
682 | |||
683 | selects when the timestamp for each buffer is taken. | ||
639 | 684 | ||
640 | Colorspace: selects which colorspace should be used when generating the image. | 685 | - Colorspace: |
686 | |||
687 | selects which colorspace should be used when generating the image. | ||
641 | This only applies if the CSC Colorbar test pattern is selected, | 688 | This only applies if the CSC Colorbar test pattern is selected, |
642 | otherwise the test pattern will go through unconverted. | 689 | otherwise the test pattern will go through unconverted. |
643 | This behavior is also what you want, since a 75% Colorbar | 690 | This behavior is also what you want, since a 75% Colorbar |
@@ -647,95 +694,124 @@ Colorspace: selects which colorspace should be used when generating the image. | |||
647 | Changing the colorspace will result in the V4L2_EVENT_SOURCE_CHANGE | 694 | Changing the colorspace will result in the V4L2_EVENT_SOURCE_CHANGE |
648 | to be sent since it emulates a detected colorspace change. | 695 | to be sent since it emulates a detected colorspace change. |
649 | 696 | ||
650 | Transfer Function: selects which colorspace transfer function should be used when | 697 | - Transfer Function: |
698 | |||
699 | selects which colorspace transfer function should be used when | ||
651 | generating an image. This only applies if the CSC Colorbar test pattern is | 700 | generating an image. This only applies if the CSC Colorbar test pattern is |
652 | selected, otherwise the test pattern will go through unconverted. | 701 | selected, otherwise the test pattern will go through unconverted. |
653 | This behavior is also what you want, since a 75% Colorbar | 702 | This behavior is also what you want, since a 75% Colorbar |
654 | should really have 75% signal intensity and should not be affected | 703 | should really have 75% signal intensity and should not be affected |
655 | by colorspace conversions. | 704 | by colorspace conversions. |
656 | 705 | ||
657 | Changing the transfer function will result in the V4L2_EVENT_SOURCE_CHANGE | 706 | Changing the transfer function will result in the V4L2_EVENT_SOURCE_CHANGE |
658 | to be sent since it emulates a detected colorspace change. | 707 | to be sent since it emulates a detected colorspace change. |
659 | 708 | ||
660 | Y'CbCr Encoding: selects which Y'CbCr encoding should be used when generating | 709 | - Y'CbCr Encoding: |
710 | |||
711 | selects which Y'CbCr encoding should be used when generating | ||
661 | a Y'CbCr image. This only applies if the format is set to a Y'CbCr format | 712 | a Y'CbCr image. This only applies if the format is set to a Y'CbCr format |
662 | as opposed to an RGB format. | 713 | as opposed to an RGB format. |
663 | 714 | ||
664 | Changing the Y'CbCr encoding will result in the V4L2_EVENT_SOURCE_CHANGE | 715 | Changing the Y'CbCr encoding will result in the V4L2_EVENT_SOURCE_CHANGE |
665 | to be sent since it emulates a detected colorspace change. | 716 | to be sent since it emulates a detected colorspace change. |
666 | 717 | ||
667 | Quantization: selects which quantization should be used for the RGB or Y'CbCr | 718 | - Quantization: |
719 | |||
720 | selects which quantization should be used for the RGB or Y'CbCr | ||
668 | encoding when generating the test pattern. | 721 | encoding when generating the test pattern. |
669 | 722 | ||
670 | Changing the quantization will result in the V4L2_EVENT_SOURCE_CHANGE | 723 | Changing the quantization will result in the V4L2_EVENT_SOURCE_CHANGE |
671 | to be sent since it emulates a detected colorspace change. | 724 | to be sent since it emulates a detected colorspace change. |
672 | 725 | ||
673 | Limited RGB Range (16-235): selects if the RGB range of the HDMI source should | 726 | - Limited RGB Range (16-235): |
727 | |||
728 | selects if the RGB range of the HDMI source should | ||
674 | be limited or full range. This combines with the Digital Video 'Rx RGB | 729 | be limited or full range. This combines with the Digital Video 'Rx RGB |
675 | Quantization Range' control and can be used to test what happens if | 730 | Quantization Range' control and can be used to test what happens if |
676 | a source provides you with the wrong quantization range information. | 731 | a source provides you with the wrong quantization range information. |
677 | See the description of that control for more details. | 732 | See the description of that control for more details. |
678 | 733 | ||
679 | Apply Alpha To Red Only: apply the alpha channel as set by the 'Alpha Component' | 734 | - Apply Alpha To Red Only: |
735 | |||
736 | apply the alpha channel as set by the 'Alpha Component' | ||
680 | user control to the red color of the test pattern only. | 737 | user control to the red color of the test pattern only. |
681 | 738 | ||
682 | Enable Capture Cropping: enables crop support. This control is only present if | 739 | - Enable Capture Cropping: |
740 | |||
741 | enables crop support. This control is only present if | ||
683 | the ccs_cap_mode module option is set to the default value of -1 and if | 742 | the ccs_cap_mode module option is set to the default value of -1 and if |
684 | the no_error_inj module option is set to 0 (the default). | 743 | the no_error_inj module option is set to 0 (the default). |
685 | 744 | ||
686 | Enable Capture Composing: enables composing support. This control is only | 745 | - Enable Capture Composing: |
746 | |||
747 | enables composing support. This control is only | ||
687 | present if the ccs_cap_mode module option is set to the default value of | 748 | present if the ccs_cap_mode module option is set to the default value of |
688 | -1 and if the no_error_inj module option is set to 0 (the default). | 749 | -1 and if the no_error_inj module option is set to 0 (the default). |
689 | 750 | ||
690 | Enable Capture Scaler: enables support for a scaler (maximum 4 times upscaling | 751 | - Enable Capture Scaler: |
752 | |||
753 | enables support for a scaler (maximum 4 times upscaling | ||
691 | and downscaling). This control is only present if the ccs_cap_mode | 754 | and downscaling). This control is only present if the ccs_cap_mode |
692 | module option is set to the default value of -1 and if the no_error_inj | 755 | module option is set to the default value of -1 and if the no_error_inj |
693 | module option is set to 0 (the default). | 756 | module option is set to 0 (the default). |
694 | 757 | ||
695 | Maximum EDID Blocks: determines how many EDID blocks the driver supports. | 758 | - Maximum EDID Blocks: |
759 | |||
760 | determines how many EDID blocks the driver supports. | ||
696 | Note that the vivid driver does not actually interpret new EDID | 761 | Note that the vivid driver does not actually interpret new EDID |
697 | data, it just stores it. It allows for up to 256 EDID blocks | 762 | data, it just stores it. It allows for up to 256 EDID blocks |
698 | which is the maximum supported by the standard. | 763 | which is the maximum supported by the standard. |
699 | 764 | ||
700 | Fill Percentage of Frame: can be used to draw only the top X percent | 765 | - Fill Percentage of Frame: |
766 | |||
767 | can be used to draw only the top X percent | ||
701 | of the image. Since each frame has to be drawn by the driver, this | 768 | of the image. Since each frame has to be drawn by the driver, this |
702 | demands a lot of the CPU. For large resolutions this becomes | 769 | demands a lot of the CPU. For large resolutions this becomes |
703 | problematic. By drawing only part of the image this CPU load can | 770 | problematic. By drawing only part of the image this CPU load can |
704 | be reduced. | 771 | be reduced. |
705 | 772 | ||
706 | 773 | ||
707 | Section 9.4.3: Output Feature Selection Controls | 774 | Output Feature Selection Controls |
708 | ------------------------------------------------ | 775 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
709 | 776 | ||
710 | These controls are all specific to video output. | 777 | These controls are all specific to video output. |
711 | 778 | ||
712 | Enable Output Cropping: enables crop support. This control is only present if | 779 | - Enable Output Cropping: |
780 | |||
781 | enables crop support. This control is only present if | ||
713 | the ccs_out_mode module option is set to the default value of -1 and if | 782 | the ccs_out_mode module option is set to the default value of -1 and if |
714 | the no_error_inj module option is set to 0 (the default). | 783 | the no_error_inj module option is set to 0 (the default). |
715 | 784 | ||
716 | Enable Output Composing: enables composing support. This control is only | 785 | - Enable Output Composing: |
786 | |||
787 | enables composing support. This control is only | ||
717 | present if the ccs_out_mode module option is set to the default value of | 788 | present if the ccs_out_mode module option is set to the default value of |
718 | -1 and if the no_error_inj module option is set to 0 (the default). | 789 | -1 and if the no_error_inj module option is set to 0 (the default). |
719 | 790 | ||
720 | Enable Output Scaler: enables support for a scaler (maximum 4 times upscaling | 791 | - Enable Output Scaler: |
792 | |||
793 | enables support for a scaler (maximum 4 times upscaling | ||
721 | and downscaling). This control is only present if the ccs_out_mode | 794 | and downscaling). This control is only present if the ccs_out_mode |
722 | module option is set to the default value of -1 and if the no_error_inj | 795 | module option is set to the default value of -1 and if the no_error_inj |
723 | module option is set to 0 (the default). | 796 | module option is set to 0 (the default). |
724 | 797 | ||
725 | 798 | ||
726 | Section 9.4.4: Error Injection Controls | 799 | Error Injection Controls |
727 | --------------------------------------- | 800 | ^^^^^^^^^^^^^^^^^^^^^^^^ |
728 | 801 | ||
729 | The following two controls are only valid for video and vbi capture. | 802 | The following two controls are only valid for video and vbi capture. |
730 | 803 | ||
731 | Standard Signal Mode: selects the behavior of VIDIOC_QUERYSTD: what should | 804 | - Standard Signal Mode: |
732 | it return? | 805 | |
806 | selects the behavior of VIDIOC_QUERYSTD: what should it return? | ||
733 | 807 | ||
734 | Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE | 808 | Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE |
735 | to be sent since it emulates a changed input condition (e.g. a cable | 809 | to be sent since it emulates a changed input condition (e.g. a cable |
736 | was plugged in or out). | 810 | was plugged in or out). |
737 | 811 | ||
738 | Standard: selects the standard that VIDIOC_QUERYSTD should return if the | 812 | - Standard: |
813 | |||
814 | selects the standard that VIDIOC_QUERYSTD should return if the | ||
739 | previous control is set to "Selected Standard". | 815 | previous control is set to "Selected Standard". |
740 | 816 | ||
741 | Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE | 817 | Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE |
@@ -744,14 +820,17 @@ Standard: selects the standard that VIDIOC_QUERYSTD should return if the | |||
744 | 820 | ||
745 | The following two controls are only valid for video capture. | 821 | The following two controls are only valid for video capture. |
746 | 822 | ||
747 | DV Timings Signal Mode: selects the behavior of VIDIOC_QUERY_DV_TIMINGS: what | 823 | - DV Timings Signal Mode: |
824 | selects the behavior of VIDIOC_QUERY_DV_TIMINGS: what | ||
748 | should it return? | 825 | should it return? |
749 | 826 | ||
750 | Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE | 827 | Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE |
751 | to be sent since it emulates a changed input condition (e.g. a cable | 828 | to be sent since it emulates a changed input condition (e.g. a cable |
752 | was plugged in or out). | 829 | was plugged in or out). |
753 | 830 | ||
754 | DV Timings: selects the timings the VIDIOC_QUERY_DV_TIMINGS should return | 831 | - DV Timings: |
832 | |||
833 | selects the timings the VIDIOC_QUERY_DV_TIMINGS should return | ||
755 | if the previous control is set to "Selected DV Timings". | 834 | if the previous control is set to "Selected DV Timings". |
756 | 835 | ||
757 | Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE | 836 | Changing this control will result in the V4L2_EVENT_SOURCE_CHANGE |
@@ -763,52 +842,74 @@ is set to 0 (the default). These controls are valid for video and vbi | |||
763 | capture and output streams and for the SDR capture device except for the | 842 | capture and output streams and for the SDR capture device except for the |
764 | Disconnect control which is valid for all devices. | 843 | Disconnect control which is valid for all devices. |
765 | 844 | ||
766 | Wrap Sequence Number: test what happens when you wrap the sequence number in | 845 | - Wrap Sequence Number: |
846 | |||
847 | test what happens when you wrap the sequence number in | ||
767 | struct v4l2_buffer around. | 848 | struct v4l2_buffer around. |
768 | 849 | ||
769 | Wrap Timestamp: test what happens when you wrap the timestamp in struct | 850 | - Wrap Timestamp: |
851 | |||
852 | test what happens when you wrap the timestamp in struct | ||
770 | v4l2_buffer around. | 853 | v4l2_buffer around. |
771 | 854 | ||
772 | Percentage of Dropped Buffers: sets the percentage of buffers that | 855 | - Percentage of Dropped Buffers: |
856 | |||
857 | sets the percentage of buffers that | ||
773 | are never returned by the driver (i.e., they are dropped). | 858 | are never returned by the driver (i.e., they are dropped). |
774 | 859 | ||
775 | Disconnect: emulates a USB disconnect. The device will act as if it has | 860 | - Disconnect: |
861 | |||
862 | emulates a USB disconnect. The device will act as if it has | ||
776 | been disconnected. Only after all open filehandles to the device | 863 | been disconnected. Only after all open filehandles to the device |
777 | node have been closed will the device become 'connected' again. | 864 | node have been closed will the device become 'connected' again. |
778 | 865 | ||
779 | Inject V4L2_BUF_FLAG_ERROR: when pressed, the next frame returned by | 866 | - Inject V4L2_BUF_FLAG_ERROR: |
867 | |||
868 | when pressed, the next frame returned by | ||
780 | the driver will have the error flag set (i.e. the frame is marked | 869 | the driver will have the error flag set (i.e. the frame is marked |
781 | corrupt). | 870 | corrupt). |
782 | 871 | ||
783 | Inject VIDIOC_REQBUFS Error: when pressed, the next REQBUFS or CREATE_BUFS | 872 | - Inject VIDIOC_REQBUFS Error: |
873 | |||
874 | when pressed, the next REQBUFS or CREATE_BUFS | ||
784 | ioctl call will fail with an error. To be precise: the videobuf2 | 875 | ioctl call will fail with an error. To be precise: the videobuf2 |
785 | queue_setup() op will return -EINVAL. | 876 | queue_setup() op will return -EINVAL. |
786 | 877 | ||
787 | Inject VIDIOC_QBUF Error: when pressed, the next VIDIOC_QBUF or | 878 | - Inject VIDIOC_QBUF Error: |
879 | |||
880 | when pressed, the next VIDIOC_QBUF or | ||
788 | VIDIOC_PREPARE_BUFFER ioctl call will fail with an error. To be | 881 | VIDIOC_PREPARE_BUFFER ioctl call will fail with an error. To be |
789 | precise: the videobuf2 buf_prepare() op will return -EINVAL. | 882 | precise: the videobuf2 buf_prepare() op will return -EINVAL. |
790 | 883 | ||
791 | Inject VIDIOC_STREAMON Error: when pressed, the next VIDIOC_STREAMON ioctl | 884 | - Inject VIDIOC_STREAMON Error: |
885 | |||
886 | when pressed, the next VIDIOC_STREAMON ioctl | ||
792 | call will fail with an error. To be precise: the videobuf2 | 887 | call will fail with an error. To be precise: the videobuf2 |
793 | start_streaming() op will return -EINVAL. | 888 | start_streaming() op will return -EINVAL. |
794 | 889 | ||
795 | Inject Fatal Streaming Error: when pressed, the streaming core will be | 890 | - Inject Fatal Streaming Error: |
891 | |||
892 | when pressed, the streaming core will be | ||
796 | marked as having suffered a fatal error, the only way to recover | 893 | marked as having suffered a fatal error, the only way to recover |
797 | from that is to stop streaming. To be precise: the videobuf2 | 894 | from that is to stop streaming. To be precise: the videobuf2 |
798 | vb2_queue_error() function is called. | 895 | vb2_queue_error() function is called. |
799 | 896 | ||
800 | 897 | ||
801 | Section 9.4.5: VBI Raw Capture Controls | 898 | VBI Raw Capture Controls |
802 | --------------------------------------- | 899 | ^^^^^^^^^^^^^^^^^^^^^^^^ |
900 | |||
901 | - Interlaced VBI Format: | ||
803 | 902 | ||
804 | Interlaced VBI Format: if set, then the raw VBI data will be interlaced instead | 903 | if set, then the raw VBI data will be interlaced instead |
805 | of providing it grouped by field. | 904 | of providing it grouped by field. |
806 | 905 | ||
807 | 906 | ||
808 | Section 9.5: Digital Video Controls | 907 | Digital Video Controls |
809 | ----------------------------------- | 908 | ~~~~~~~~~~~~~~~~~~~~~~ |
810 | 909 | ||
811 | Rx RGB Quantization Range: sets the RGB quantization detection of the HDMI | 910 | - Rx RGB Quantization Range: |
911 | |||
912 | sets the RGB quantization detection of the HDMI | ||
812 | input. This combines with the Vivid 'Limited RGB Range (16-235)' | 913 | input. This combines with the Vivid 'Limited RGB Range (16-235)' |
813 | control and can be used to test what happens if a source provides | 914 | control and can be used to test what happens if a source provides |
814 | you with the wrong quantization range information. This can be tested | 915 | you with the wrong quantization range information. This can be tested |
@@ -817,72 +918,124 @@ Rx RGB Quantization Range: sets the RGB quantization detection of the HDMI | |||
817 | control. The effect is easy to see if the 'Gray Ramp' test pattern | 918 | control. The effect is easy to see if the 'Gray Ramp' test pattern |
818 | is selected. | 919 | is selected. |
819 | 920 | ||
820 | Tx RGB Quantization Range: sets the RGB quantization detection of the HDMI | 921 | - Tx RGB Quantization Range: |
922 | |||
923 | sets the RGB quantization detection of the HDMI | ||
821 | output. It is currently not used for anything in vivid, but most HDMI | 924 | output. It is currently not used for anything in vivid, but most HDMI |
822 | transmitters would typically have this control. | 925 | transmitters would typically have this control. |
823 | 926 | ||
824 | Transmit Mode: sets the transmit mode of the HDMI output to HDMI or DVI-D. This | 927 | - Transmit Mode: |
928 | |||
929 | sets the transmit mode of the HDMI output to HDMI or DVI-D. This | ||
825 | affects the reported colorspace since DVI_D outputs will always use | 930 | affects the reported colorspace since DVI_D outputs will always use |
826 | sRGB. | 931 | sRGB. |
827 | 932 | ||
828 | 933 | ||
829 | Section 9.6: FM Radio Receiver Controls | 934 | FM Radio Receiver Controls |
830 | --------------------------------------- | 935 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ |
936 | |||
937 | - RDS Reception: | ||
938 | |||
939 | set if the RDS receiver should be enabled. | ||
940 | |||
941 | - RDS Program Type: | ||
942 | |||
943 | |||
944 | - RDS PS Name: | ||
945 | |||
831 | 946 | ||
832 | RDS Reception: set if the RDS receiver should be enabled. | 947 | - RDS Radio Text: |
833 | 948 | ||
834 | RDS Program Type: | 949 | |
835 | RDS PS Name: | 950 | - RDS Traffic Announcement: |
836 | RDS Radio Text: | 951 | |
837 | RDS Traffic Announcement: | 952 | |
838 | RDS Traffic Program: | 953 | - RDS Traffic Program: |
839 | RDS Music: these are all read-only controls. If RDS Rx I/O Mode is set to | 954 | |
955 | |||
956 | - RDS Music: | ||
957 | |||
958 | these are all read-only controls. If RDS Rx I/O Mode is set to | ||
840 | "Block I/O", then they are inactive as well. If RDS Rx I/O Mode is set | 959 | "Block I/O", then they are inactive as well. If RDS Rx I/O Mode is set |
841 | to "Controls", then these controls report the received RDS data. Note | 960 | to "Controls", then these controls report the received RDS data. |
842 | that the vivid implementation of this is pretty basic: they are only | 961 | |
962 | .. note:: | ||
963 | The vivid implementation of this is pretty basic: they are only | ||
843 | updated when you set a new frequency or when you get the tuner status | 964 | updated when you set a new frequency or when you get the tuner status |
844 | (VIDIOC_G_TUNER). | 965 | (VIDIOC_G_TUNER). |
845 | 966 | ||
846 | Radio HW Seek Mode: can be one of "Bounded", "Wrap Around" or "Both". This | 967 | - Radio HW Seek Mode: |
968 | |||
969 | can be one of "Bounded", "Wrap Around" or "Both". This | ||
847 | determines if VIDIOC_S_HW_FREQ_SEEK will be bounded by the frequency | 970 | determines if VIDIOC_S_HW_FREQ_SEEK will be bounded by the frequency |
848 | range or wrap-around or if it is selectable by the user. | 971 | range or wrap-around or if it is selectable by the user. |
849 | 972 | ||
850 | Radio Programmable HW Seek: if set, then the user can provide the lower and | 973 | - Radio Programmable HW Seek: |
974 | |||
975 | if set, then the user can provide the lower and | ||
851 | upper bound of the HW Seek. Otherwise the frequency range boundaries | 976 | upper bound of the HW Seek. Otherwise the frequency range boundaries |
852 | will be used. | 977 | will be used. |
853 | 978 | ||
854 | Generate RBDS Instead of RDS: if set, then generate RBDS (the US variant of | 979 | - Generate RBDS Instead of RDS: |
980 | |||
981 | if set, then generate RBDS (the US variant of | ||
855 | RDS) data instead of RDS (European-style RDS). This affects only the | 982 | RDS) data instead of RDS (European-style RDS). This affects only the |
856 | PICODE and PTY codes. | 983 | PICODE and PTY codes. |
857 | 984 | ||
858 | RDS Rx I/O Mode: this can be "Block I/O" where the RDS blocks have to be read() | 985 | - RDS Rx I/O Mode: |
986 | |||
987 | this can be "Block I/O" where the RDS blocks have to be read() | ||
859 | by the application, or "Controls" where the RDS data is provided by | 988 | by the application, or "Controls" where the RDS data is provided by |
860 | the RDS controls mentioned above. | 989 | the RDS controls mentioned above. |
861 | 990 | ||
862 | 991 | ||
863 | Section 9.7: FM Radio Modulator Controls | 992 | FM Radio Modulator Controls |
864 | ---------------------------------------- | 993 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
865 | 994 | ||
866 | RDS Program ID: | 995 | - RDS Program ID: |
867 | RDS Program Type: | 996 | |
868 | RDS PS Name: | 997 | |
869 | RDS Radio Text: | 998 | - RDS Program Type: |
870 | RDS Stereo: | 999 | |
871 | RDS Artificial Head: | 1000 | |
872 | RDS Compressed: | 1001 | - RDS PS Name: |
873 | RDS Dynamic PTY: | 1002 | |
874 | RDS Traffic Announcement: | 1003 | |
875 | RDS Traffic Program: | 1004 | - RDS Radio Text: |
876 | RDS Music: these are all controls that set the RDS data that is transmitted by | 1005 | |
1006 | |||
1007 | - RDS Stereo: | ||
1008 | |||
1009 | |||
1010 | - RDS Artificial Head: | ||
1011 | |||
1012 | |||
1013 | - RDS Compressed: | ||
1014 | |||
1015 | |||
1016 | - RDS Dynamic PTY: | ||
1017 | |||
1018 | |||
1019 | - RDS Traffic Announcement: | ||
1020 | |||
1021 | |||
1022 | - RDS Traffic Program: | ||
1023 | |||
1024 | |||
1025 | - RDS Music: | ||
1026 | |||
1027 | these are all controls that set the RDS data that is transmitted by | ||
877 | the FM modulator. | 1028 | the FM modulator. |
878 | 1029 | ||
879 | RDS Tx I/O Mode: this can be "Block I/O" where the application has to use write() | 1030 | - RDS Tx I/O Mode: |
880 | to pass the RDS blocks to the driver, or "Controls" where the RDS data is | ||
881 | provided by the RDS controls mentioned above. | ||
882 | 1031 | ||
1032 | this can be "Block I/O" where the application has to use write() | ||
1033 | to pass the RDS blocks to the driver, or "Controls" where the RDS data | ||
1034 | is Provided by the RDS controls mentioned above. | ||
883 | 1035 | ||
884 | Section 10: Video, VBI and RDS Looping | 1036 | |
885 | -------------------------------------- | 1037 | Video, VBI and RDS Looping |
1038 | -------------------------- | ||
886 | 1039 | ||
887 | The vivid driver supports looping of video output to video input, VBI output | 1040 | The vivid driver supports looping of video output to video input, VBI output |
888 | to VBI input and RDS output to RDS input. For video/VBI looping this emulates | 1041 | to VBI input and RDS output to RDS input. For video/VBI looping this emulates |
@@ -898,8 +1051,8 @@ Looping is currently supported only between devices created by the same | |||
898 | vivid driver instance. | 1051 | vivid driver instance. |
899 | 1052 | ||
900 | 1053 | ||
901 | Section 10.1: Video and Sliced VBI looping | 1054 | Video and Sliced VBI looping |
902 | ------------------------------------------ | 1055 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
903 | 1056 | ||
904 | The way to enable video/VBI looping is currently fairly crude. A 'Loop Video' | 1057 | The way to enable video/VBI looping is currently fairly crude. A 'Loop Video' |
905 | control is available in the "Vivid" control class of the video | 1058 | control is available in the "Vivid" control class of the video |
@@ -948,8 +1101,8 @@ for either raw or sliced VBI. Note that at the moment only CC/XDS (60 Hz formats | |||
948 | and WSS (50 Hz formats) VBI data is looped. Teletext VBI data is not looped. | 1101 | and WSS (50 Hz formats) VBI data is looped. Teletext VBI data is not looped. |
949 | 1102 | ||
950 | 1103 | ||
951 | Section 10.2: Radio & RDS Looping | 1104 | Radio & RDS Looping |
952 | --------------------------------- | 1105 | ~~~~~~~~~~~~~~~~~~~ |
953 | 1106 | ||
954 | As mentioned in section 6 the radio receiver emulates stations are regular | 1107 | As mentioned in section 6 the radio receiver emulates stations are regular |
955 | frequency intervals. Depending on the frequency of the radio receiver a | 1108 | frequency intervals. Depending on the frequency of the radio receiver a |
@@ -963,8 +1116,8 @@ frequencies of the radio receiver and transmitter are not identical, so | |||
963 | initially no looping takes place. | 1116 | initially no looping takes place. |
964 | 1117 | ||
965 | 1118 | ||
966 | Section 11: Cropping, Composing, Scaling | 1119 | Cropping, Composing, Scaling |
967 | ---------------------------------------- | 1120 | ---------------------------- |
968 | 1121 | ||
969 | This driver supports cropping, composing and scaling in any combination. Normally | 1122 | This driver supports cropping, composing and scaling in any combination. Normally |
970 | which features are supported can be selected through the Vivid controls, | 1123 | which features are supported can be selected through the Vivid controls, |
@@ -997,8 +1150,8 @@ If the combination of crop, compose and scaling allows it, then it is possible | |||
997 | to change crop and compose rectangles on the fly. | 1150 | to change crop and compose rectangles on the fly. |
998 | 1151 | ||
999 | 1152 | ||
1000 | Section 12: Formats | 1153 | Formats |
1001 | ------------------- | 1154 | ------- |
1002 | 1155 | ||
1003 | The driver supports all the regular packed and planar 4:4:4, 4:2:2 and 4:2:0 | 1156 | The driver supports all the regular packed and planar 4:4:4, 4:2:2 and 4:2:0 |
1004 | YUYV formats, 8, 16, 24 and 32 RGB packed formats and various multiplanar | 1157 | YUYV formats, 8, 16, 24 and 32 RGB packed formats and various multiplanar |
@@ -1021,8 +1174,8 @@ data_offset to be non-zero, so this is a useful feature for testing applications | |||
1021 | Video output will also honor any data_offset that the application set. | 1174 | Video output will also honor any data_offset that the application set. |
1022 | 1175 | ||
1023 | 1176 | ||
1024 | Section 13: Capture Overlay | 1177 | Capture Overlay |
1025 | --------------------------- | 1178 | --------------- |
1026 | 1179 | ||
1027 | Note: capture overlay support is implemented primarily to test the existing | 1180 | Note: capture overlay support is implemented primarily to test the existing |
1028 | V4L2 capture overlay API. In practice few if any GPUs support such overlays | 1181 | V4L2 capture overlay API. In practice few if any GPUs support such overlays |
@@ -1055,6 +1208,8 @@ the output overlay for the video output, turn on video looping and capture | |||
1055 | to see the blended framebuffer overlay that's being written to by the second | 1208 | to see the blended framebuffer overlay that's being written to by the second |
1056 | instance. This setup would require the following commands: | 1209 | instance. This setup would require the following commands: |
1057 | 1210 | ||
1211 | .. code-block:: none | ||
1212 | |||
1058 | $ sudo modprobe vivid n_devs=2 node_types=0x10101,0x1 | 1213 | $ sudo modprobe vivid n_devs=2 node_types=0x10101,0x1 |
1059 | $ v4l2-ctl -d1 --find-fb | 1214 | $ v4l2-ctl -d1 --find-fb |
1060 | /dev/fb1 is the framebuffer associated with base address 0x12800000 | 1215 | /dev/fb1 is the framebuffer associated with base address 0x12800000 |
@@ -1072,10 +1227,14 @@ instance. This setup would require the following commands: | |||
1072 | 1227 | ||
1073 | And from another console: | 1228 | And from another console: |
1074 | 1229 | ||
1230 | .. code-block:: none | ||
1231 | |||
1075 | $ v4l2-ctl -d1 --stream-out-mmap | 1232 | $ v4l2-ctl -d1 --stream-out-mmap |
1076 | 1233 | ||
1077 | And yet another console: | 1234 | And yet another console: |
1078 | 1235 | ||
1236 | .. code-block:: none | ||
1237 | |||
1079 | $ qv4l2 | 1238 | $ qv4l2 |
1080 | 1239 | ||
1081 | and start streaming. | 1240 | and start streaming. |
@@ -1083,8 +1242,8 @@ and start streaming. | |||
1083 | As you can see, this is not for the faint of heart... | 1242 | As you can see, this is not for the faint of heart... |
1084 | 1243 | ||
1085 | 1244 | ||
1086 | Section 14: Output Overlay | 1245 | Output Overlay |
1087 | -------------------------- | 1246 | -------------- |
1088 | 1247 | ||
1089 | Note: output overlays are primarily implemented in order to test the existing | 1248 | Note: output overlays are primarily implemented in order to test the existing |
1090 | V4L2 output overlay API. Whether this API should be used for new drivers is | 1249 | V4L2 output overlay API. Whether this API should be used for new drivers is |
@@ -1116,8 +1275,8 @@ capabilities will slow down the video loop considerably as a lot of checks have | |||
1116 | to be done per pixel. | 1275 | to be done per pixel. |
1117 | 1276 | ||
1118 | 1277 | ||
1119 | Section 15: CEC (Consumer Electronics Control) | 1278 | CEC (Consumer Electronics Control) |
1120 | ---------------------------------------------- | 1279 | ---------------------------------- |
1121 | 1280 | ||
1122 | If there are HDMI inputs then a CEC adapter will be created that has | 1281 | If there are HDMI inputs then a CEC adapter will be created that has |
1123 | the same number of input ports. This is the equivalent of e.g. a TV that | 1282 | the same number of input ports. This is the equivalent of e.g. a TV that |
@@ -1135,8 +1294,8 @@ there are more outputs than inputs then the remaining outputs have a CEC adapter | |||
1135 | that is disabled and reports an invalid physical address. | 1294 | that is disabled and reports an invalid physical address. |
1136 | 1295 | ||
1137 | 1296 | ||
1138 | Section 16: Some Future Improvements | 1297 | Some Future Improvements |
1139 | ------------------------------------ | 1298 | ------------------------ |
1140 | 1299 | ||
1141 | Just as a reminder and in no particular order: | 1300 | Just as a reminder and in no particular order: |
1142 | 1301 | ||