Blame view

kernel/linux-rt-4.4.41/drivers/media/usb/pwc/philips.txt 9.42 KB
5113f6f70   김현기   kernel add
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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
  This file contains some additional information for the Philips and OEM webcams.
  E-mail: webcam@smcc.demon.nl                        Last updated: 2004-01-19
  Site: http://www.smcc.demon.nl/webcam/
  
  As of this moment, the following cameras are supported:
   * Philips PCA645
   * Philips PCA646
   * Philips PCVC675
   * Philips PCVC680
   * Philips PCVC690
   * Philips PCVC720/40
   * Philips PCVC730
   * Philips PCVC740
   * Philips PCVC750
   * Askey VC010
   * Creative Labs Webcam 5
   * Creative Labs Webcam Pro Ex
   * Logitech QuickCam 3000 Pro
   * Logitech QuickCam 4000 Pro
   * Logitech QuickCam Notebook Pro
   * Logitech QuickCam Zoom
   * Logitech QuickCam Orbit
   * Logitech QuickCam Sphere
   * Samsung MPC-C10
   * Samsung MPC-C30
   * Sotec Afina Eye
   * AME CU-001
   * Visionite VCS-UM100
   * Visionite VCS-UC300
  
  The main webpage for the Philips driver is at the address above. It contains
  a lot of extra information, a FAQ, and the binary plugin 'PWCX'. This plugin
  contains decompression routines that allow you to use higher image sizes and
  framerates; in addition the webcam uses less bandwidth on the USB bus (handy
  if you want to run more than 1 camera simultaneously). These routines fall
  under a NDA, and may therefore not be distributed as source; however, its use
  is completely optional.
  
  You can build this code either into your kernel, or as a module. I recommend
  the latter, since it makes troubleshooting a lot easier. The built-in
  microphone is supported through the USB Audio class.
  
  When you load the module you can set some default settings for the
  camera; some programs depend on a particular image-size or -format and
  don't know how to set it properly in the driver. The options are:
  
  size
     Can be one of 'sqcif', 'qsif', 'qcif', 'sif', 'cif' or
     'vga', for an image size of resp. 128x96, 160x120, 176x144,
     320x240, 352x288 and 640x480 (of course, only for those cameras that
     support these resolutions).
  
  fps
     Specifies the desired framerate. Is an integer in the range of 4-30.
  
  fbufs
     This parameter specifies the number of internal buffers to use for storing
     frames from the cam. This will help if the process that reads images from
     the cam is a bit slow or momentarily busy. However, on slow machines it
     only introduces lag, so choose carefully. The default is 3, which is
     reasonable. You can set it between 2 and 5.
  
  mbufs
     This is an integer between 1 and 10. It will tell the module the number of
     buffers to reserve for mmap(), VIDIOCCGMBUF, VIDIOCMCAPTURE and friends.
     The default is 2, which is adequate for most applications (double
     buffering).
  
     Should you experience a lot of 'Dumping frame...' messages during
     grabbing with a tool that uses mmap(), you might want to increase if.
     However, it doesn't really buffer images, it just gives you a bit more
     slack when your program is behind. But you need a multi-threaded or
     forked program to really take advantage of these buffers.
  
     The absolute maximum is 10, but don't set it too high!  Every buffer takes
     up 460 KB of RAM, so unless you have a lot of memory setting this to
     something more than 4 is an absolute waste.  This memory is only
     allocated during open(), so nothing is wasted when the camera is not in
     use.
  
  power_save
     When power_save is enabled (set to 1), the module will try to shut down
     the cam on close() and re-activate on open(). This will save power and
     turn off the LED. Not all cameras support this though (the 645 and 646
     don't have power saving at all), and some models don't work either (they
     will shut down, but never wake up). Consider this experimental. By
     default this option is disabled.
  
  compression (only useful with the plugin)
     With this option you can control the compression factor that the camera
     uses to squeeze the image through the USB bus. You can set the
     parameter between 0 and 3:
       0 = prefer uncompressed images; if the requested mode is not available
  	 in an uncompressed format, the driver will silently switch to low
  	 compression.
       1 = low compression.
       2 = medium compression.
       3 = high compression.
  
     High compression takes less bandwidth of course, but it could also
     introduce some unwanted artefacts. The default is 2, medium compression.
     See the FAQ on the website for an overview of which modes require
     compression.
  
     The compression parameter does not apply to the 645 and 646 cameras
     and OEM models derived from those (only a few). Most cams honour this
     parameter.
  
  leds
     This settings takes 2 integers, that define the on/off time for the LED
     (in milliseconds). One of the interesting things that you can do with
     this is let the LED blink while the camera is in use. This:
  
       leds=500,500
  
     will blink the LED once every second. But with:
  
       leds=0,0
  
     the LED never goes on, making it suitable for silent surveillance.
  
     By default the camera's LED is on solid while in use, and turned off
     when the camera is not used anymore.
  
     This parameter works only with the ToUCam range of cameras (720, 730, 740,
     750) and OEMs. For other cameras this command is silently ignored, and
     the LED cannot be controlled.
  
     Finally: this parameters does not take effect UNTIL the first time you
     open the camera device. Until then, the LED remains on.
  
  dev_hint
     A long standing problem with USB devices is their dynamic nature: you
     never know what device a camera gets assigned; it depends on module load
     order, the hub configuration, the order in which devices are plugged in,
     and the phase of the moon (i.e. it can be random). With this option you
     can give the driver a hint as to what video device node (/dev/videoX) it
     should use with a specific camera. This is also handy if you have two
     cameras of the same model.
  
     A camera is specified by its type (the number from the camera model,
     like PCA645, PCVC750VC, etc) and optionally the serial number (visible
     in /proc/bus/usb/devices). A hint consists of a string with the following
     format:
  
        [type[.serialnumber]:]node
  
     The square brackets mean that both the type and the serialnumber are
     optional, but a serialnumber cannot be specified without a type (which
     would be rather pointless). The serialnumber is separated from the type
     by a '.'; the node number by a ':'.
  
     This somewhat cryptic syntax is best explained by a few examples:
  
       dev_hint=3,5              The first detected cam gets assigned
  			       /dev/video3, the second /dev/video5. Any
  			       other cameras will get the first free
  			       available slot (see below).
  
       dev_hint=645:1,680:2      The PCA645 camera will get /dev/video1,
  			       and a PCVC680 /dev/video2.
  
       dev_hint=645.0123:3,645.4567:0	The PCA645 camera with serialnumber
  					0123 goes to /dev/video3, the same
  					camera model with the 4567 serial
  					gets /dev/video0.
  
       dev_hint=750:1,4,5,6       The PCVC750 camera will get /dev/video1, the
  				next 3 Philips cams will use /dev/video4
  				through /dev/video6.
  
     Some points worth knowing:
     - Serialnumbers are case sensitive and must be written full, including
       leading zeroes (it's treated as a string).
     - If a device node is already occupied, registration will fail and
       the webcam is not available.
     - You can have up to 64 video devices; be sure to make enough device
       nodes in /dev if you want to spread the numbers.
       After /dev/video9 comes /dev/video10 (not /dev/videoA).
     - If a camera does not match any dev_hint, it will simply get assigned
       the first available device node, just as it used to be.
  
  trace
     In order to better detect problems, it is now possible to turn on a
     'trace' of some of the calls the module makes; it logs all items in your
     kernel log at debug level.
  
     The trace variable is a bitmask; each bit represents a certain feature.
     If you want to trace something, look up the bit value(s) in the table
     below, add the values together and supply that to the trace variable.
  
     Value  Value   Description					   Default
     (dec)  (hex)
         1    0x1   Module initialization; this will log messages       On
  		  while loading and unloading the module
  
         2    0x2   probe() and disconnect() traces                     On
  
         4    0x4   Trace open() and close() calls                      Off
  
         8    0x8   read(), mmap() and associated ioctl() calls         Off
  
        16   0x10   Memory allocation of buffers, etc.                  Off
  
        32   0x20   Showing underflow, overflow and Dumping frame       On
  		  messages
  
        64   0x40   Show viewport and image sizes                       Off
  
       128   0x80   PWCX debugging                                      Off
  
     For example, to trace the open() & read() functions, sum 8 + 4 = 12,
     so you would supply trace=12 during insmod or modprobe. If
     you want to turn the initialization and probing tracing off, set trace=0.
     The default value for trace is 35 (0x23).
  
  
  
  Example:
  
       # modprobe pwc size=cif fps=15 power_save=1
  
  The fbufs, mbufs and trace parameters are global and apply to all connected
  cameras. Each camera has its own set of buffers.
  
  size and fps only specify defaults when you open() the device; this is to
  accommodate some tools that don't set the size. You can change these
  settings after open() with the Video4Linux ioctl() calls. The default of
  defaults is QCIF size at 10 fps.
  
  The compression parameter is semiglobal; it sets the initial compression
  preference for all camera's, but this parameter can be set per camera with
  the VIDIOCPWCSCQUAL ioctl() call.
  
  All parameters are optional.