philips.txt
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:9k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. This file contains some additional information for the Philips webcams.
  2. E-mail: webcam@smcc.demon.nl                        Last updated: 2001-09-24
  3. The main webpage for the Philips driver is http://www.smcc.demon.nl/webcam/.
  4. It contains a lot of extra information, a FAQ, and the binary plugin
  5. 'PWCX'. This plugin contains decompression routines that allow you to
  6. use higher image sizes and framerates; in addition the webcam uses less
  7. bandwidth on the USB bus (handy if you want to run more than 1 camera
  8. simultaneously). These routines fall under an NDA, and may therefor not be
  9. distributed as source; however, its use is completely optional.
  10. You can build this code either into your kernel, or as a module. I recommend
  11. the latter, since it makes troubleshooting a lot easier. The built-in
  12. microphone is supported through the USB Audio class.
  13. When you load the module you can set some default settings for the
  14. camera; some programs depend on a particular image-size or -format and
  15. don't know how to set it properly in the driver. The options are:
  16. size
  17.    Can be one of 'sqcif', 'qsif', 'qcif', 'sif', 'cif' or
  18.    'vga', for an image size of resp. 128x96, 160x120, 176x144,
  19.    320x240, 352x288 and 640x480 (of course, only for those cameras that 
  20.    support these resolutions).
  21. fps
  22.    Specifies the desired framerate. Is an integer in the range of 4-30.
  23. fbufs
  24.    This paramter specifies the number of internal buffers to use for storing 
  25.    frames from the cam. This will help if the process that reads images from 
  26.    the cam is a bit slow or momentarely busy. However, on slow machines it 
  27.    only introduces lag, so choose carefully. The default is 3, which is 
  28.    reasonable. You can set it between 2 and 5.
  29. mbufs
  30.    This is an integer between 1 and 4. It will tell the module the number of
  31.    buffers to reserve for mmap(), VIDIOCCGMBUF, VIDIOCMCAPTURE and friends.
  32.    The default is 2, which is adequate for most applications (double
  33.    buffering).
  34.       
  35.    Should you experience a lot of 'Dumping frame...' messages during
  36.    grabbing with a tool that uses mmap(), you might want to increase if. 
  37.    However, it doesn't really buffer images, it just gives you a bit more
  38.    slack when your program is behind. But you need a multi-threaded or
  39.    forked program to really take advantage of these buffers.
  40.    The absolute maximum is 4, but don't set it too high!  Every buffer takes
  41.    up 1.22 MB of RAM, so unless you have a lot of memory setting this to
  42.    something more than 2 is an absolute waste.  This memory is only
  43.    allocated during open(), so nothing is wasted when the camera is not in
  44.    use.
  45. power_save
  46.    When power_save is enabled (set to 1), the module will try to shut down
  47.    the cam on close() and re-activate on open(). This will save power and
  48.    turn off the LED. Not all cameras support this though (the 645 and 646
  49.    don't have power saving at all), and some models don't work either (they
  50.    will shut down, but never wake up). Consider this experimental. By
  51.    default this option is disabled.
  52. compression (only useful with the plugin)
  53.    With this option you can control the compression factor that the camera
  54.    uses to squeeze the image through the USB bus. You can set the 
  55.    parameter between 0 and 3:
  56.      0 = prefer uncompressed images; if the requested mode is not available
  57.          in an uncompressed format, the driver will silently switch to low
  58.          compression.
  59.      1 = low compression.
  60.      2 = medium compression.
  61.      3 = high compression.
  62.       
  63.    High compression takes less bandwidth of course, but it could also
  64.    introduce some unwanted artefacts. The default is 2, medium compression.
  65.    See the FAQ on the website for an overview of which modes require
  66.    compression.
  67.       
  68.    The compression parameter only applies to the Vesta & ToUCam cameras.
  69.    The 645 and 646 have fixed compression parameters.      
  70. leds
  71.    This settings takes 2 integers, that define the on/off time for the LED
  72.    (in milliseconds). One of the interesting things that you can do with
  73.    this is let the LED blink while the camera is in use. This:
  74.      leds=500,500
  75.       
  76.    will blink the LED once every second. But with:
  77.      leds=0,0
  78.    the LED never goes on, making it suitable for silent survaillance.
  79.    By default the camera's LED is on solid while in use, and turned off
  80.    when the camera is not used anymore.
  81.    This parameter works only with the ToUCam range of cameras (730, 740,
  82.    750). For other cameras this command is silently ignored, and the LED
  83.    cannot be controlled.
  84. dev_hint
  85.    A long standing problem with USB devices is their dynamic nature: you
  86.    never know what device a camera gets assigned; it depends on module load
  87.    order, the hub configuration, the order in which devices are plugged in,
  88.    and the phase of the moon (i.e. it can be random). With this option you
  89.    can give the driver a hint as to what video device node (/dev/videoX) it
  90.    should use with a specific camera. This is also handy if you have two
  91.    cameras of the same model.
  92.    A camera is specified by its type (the number from the camera model,
  93.    like PCA645, PCVC750VC, etc) and optionally the serial number (visible
  94.    in /proc/bus/usb/devices). A hint consists of a string with the following
  95.    format:
  96.       [type[.serialnumber]:]node
  97.       
  98.    The square brackets mean that both the type and the serialnumber are
  99.    optional, but a serialnumber cannot be specified without a type (which
  100.    would be rather pointless). The serialnumber is separated from the type
  101.    by a '.'; the node number by a ':'.
  102.    
  103.    This somewhat cryptic syntax is best explained by a few examples:
  104.      dev_hint=3,5              The first detected cam gets assigned
  105.                                /dev/video3, the second /dev/video5. Any
  106.                                other cameras will get the first free 
  107.                                available slot (see below).
  108.      dev_hint=645:1,680=2      The PCA645 camera will get /dev/video1,
  109.                                and a PCVC680 /dev/video2.
  110.                                
  111.      dev_hint=645.0123:3,645.4567:0 The PCA645 camera with serialnumber 
  112.                                         0123 goes to /dev/video3, the same
  113.                                         camera model with the 4567 serial
  114.                                         gets /dev/video0.
  115.      dev_hint=750:1,4,5,6       The PCVC750 camera will get /dev/video1, the 
  116.                                 next 3 Philips cams will use /dev/video4 
  117.                                 through /dev/video6.
  118.    Some points worth knowing:
  119.    - Serialnumbers are case sensitive and must be written full, including 
  120.      leading zeroes (it's treated as a string).
  121.    - If a device node is already occupied, registration will fail and 
  122.      the webcam is not available.
  123.    - You can have up to 64 video devices; be sure to make enough device
  124.      nodes in /dev if you want to spread the numbers (this does not apply
  125.      to devfs). After /dev/video9 comes /dev/video10 (not /dev/videoA).
  126.    - If a camera does not match any dev_hint, it will simply get assigned
  127.      the first available device node, just as it used to be.
  128. trace
  129.    In order to better detect problems, it is now possible to turn on a
  130.    'trace' of some of the calls the module makes; it logs all items in your
  131.    kernel log at debug level.
  132.    The trace variable is a bitmask; each bit represents a certain feature.
  133.    If you want to trace something, look up the bit value(s) in the table 
  134.    below, add the values together and supply that to the trace variable.
  135.    Value  Value   Description    Default
  136.    (dec)  (hex)
  137.        1    0x1   Module initialization; this will log messages       On
  138.                   while loading and unloading the module
  139.        2    0x2   probe() and disconnect() traces                     On
  140.        4    0x4   Trace open() and close() calls                      Off
  141.        8    0x8   read(), mmap() and associated ioctl() calls         Off
  142.       16   0x10   Memory allocation of buffers, etc.                  Off
  143.       32   0x20   Showing underflow, overflow and Dumping frame       On
  144.                   messages
  145.       64   0x40   Show viewport and image sizes                       Off
  146.    For example, to trace the open() & read() fuctions, sum 8 + 4 = 12,
  147.    so you would supply trace=12 during insmod or modprobe. If
  148.    you want to turn the initialization and probing tracing off, set trace=0.
  149.    The default value for trace is 35 (0x23).
  150.    Example:
  151.      
  152.      # modprobe pwc size=cif fps=15 power_save=1
  153. The fbufs, mbufs and trace parameters are global and apply to all connected
  154. cameras. Each camera has its own set of buffers.
  155. size, fps, palette only specify defaults when you open() the device; this is
  156. to accommodate some tools that don't set the size or colour palette. You can
  157. change these settings after open() with the Video4Linux ioctl() calls. The
  158. default of defaults is QCIF size at 10 fps, BGR order.
  159. The compression parameter is semiglobal; it sets the initial compression
  160. preference for all camera's, but this parameter can be set per camera with
  161. the VIDIOCPWCSCQUAL ioctl() call.
  162. All parameters are optional.