pwc-ioctl.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:6k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. #ifndef PWC_IOCTL_H
  2. #define PWC_IOCTL_H
  3. /* (C) 2001-2002 Nemosoft Unv.    webcam@smcc.demon.nl
  4.    
  5.    This program is free software; you can redistribute it and/or modify
  6.    it under the terms of the GNU General Public License as published by
  7.    the Free Software Foundation; either version 2 of the License, or
  8.    (at your option) any later version.
  9.    This program is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.    GNU General Public License for more details.
  13.    You should have received a copy of the GNU General Public License
  14.    along with this program; if not, write to the Free Software
  15.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  16. */
  17. /*         This is pwc-ioctl.h belonging to PWC 8.6                        */
  18. /* 
  19.    Changes
  20.    2001/08/03  Alvarado   Added ioctl constants to access methods for 
  21.                           changing white balance and red/blue gains
  22.  */
  23. /* These are private ioctl() commands, specific for the Philips webcams.
  24.    They contain functions not found in other webcams, and settings not
  25.    specified in the Video4Linux API. 
  26.    
  27.    The #define names are built up like follows:
  28.    VIDIOC VIDeo IOCtl prefix
  29.          PWC Philps WebCam
  30.             G           optional: Get
  31.             S           optional: Set
  32.              ...  the function
  33.  */
  34. /* The frame rate is encoded in the video_window.flags parameter using
  35.    the upper 16 bits, since some flags are defined nowadays. The following
  36.    defines provide a mask and shift to filter out this value.
  37.    
  38.    In 'Snapshot' mode the camera freezes its automatic exposure and colour 
  39.    balance controls.
  40.  */
  41. #define PWC_FPS_SHIFT 16
  42. #define PWC_FPS_MASK 0x00FF0000
  43. #define PWC_FPS_FRMASK 0x003F0000
  44. #define PWC_FPS_SNAPSHOT 0x00400000
  45. struct pwc_probe
  46. {
  47. char name[32];
  48. int type;
  49. };
  50. /* pwc_whitebalance.mode values */
  51. #define PWC_WB_INDOOR 0
  52. #define PWC_WB_OUTDOOR 1
  53. #define PWC_WB_FL 2
  54. #define PWC_WB_MANUAL 3
  55. #define PWC_WB_AUTO 4
  56. /* Used with VIDIOCPWC[SG]AWB (Auto White Balance). 
  57.    Set mode to one of the PWC_WB_* values above.
  58.    *red and *blue are the respective gains of these colour components inside 
  59.    the camera; range 0..65535
  60.    When 'mode' == PWC_WB_MANUAL, 'manual_red' and 'manual_blue' are set or read; 
  61.    otherwise undefined.
  62.    'read_red' and 'read_blue' are read-only.
  63. */   
  64.    
  65. struct pwc_whitebalance
  66. {
  67. int mode;
  68. int manual_red, manual_blue; /* R/W */
  69. int read_red, read_blue; /* R/O */
  70. };
  71. /* 
  72.    'control_speed' and 'control_delay' are used in automatic whitebalance mode,
  73.    and tell the camera how fast it should react to changes in lighting, and 
  74.    with how much delay. Valid values are 0..65535.
  75. */
  76. struct pwc_wb_speed
  77. {
  78. int control_speed;
  79. int control_delay;
  80. };
  81. /* Used with VIDIOCPWC[SG]LED */
  82. struct pwc_leds
  83. {
  84. int led_on; /* Led on-time; range = 0..25000 */
  85. int led_off; /* Led off-time; range = 0..25000  */
  86. };
  87.  /* Restore user settings */
  88. #define VIDIOCPWCRUSER _IO('v', 192)
  89.  /* Save user settings */
  90. #define VIDIOCPWCSUSER _IO('v', 193)
  91.  /* Restore factory settings */
  92. #define VIDIOCPWCFACTORY _IO('v', 194)
  93.  /* You can manipulate the compression factor. A compression preference of 0
  94.     means use uncompressed modes when available; 1 is low compression, 2 is
  95.     medium and 3 is high compression preferred. Of course, the higher the
  96.     compression, the lower the bandwidth used but more chance of artefacts
  97.     in the image. The driver automatically chooses a higher compression when
  98.     the preferred mode is not available.
  99.   */
  100.  /* Set preferred compression quality (0 = uncompressed, 3 = highest compression) */
  101. #define VIDIOCPWCSCQUAL _IOW('v', 195, int)
  102.  /* Get preferred compression quality */
  103. #define VIDIOCPWCGCQUAL _IOR('v', 195, int)
  104.  /* This is a probe function; since so many devices are supported, it
  105.     becomes difficult to include all the names in programs that want to
  106.     check for the enhanced Philips stuff. So in stead, try this PROBE;
  107.     it returns a structure with the original name, and the corresponding 
  108.     Philips type.
  109.     To use, fill the structure with zeroes, call PROBE and if that succeeds,
  110.     compare the name with that returned from VIDIOCGCAP; they should be the
  111.     same. If so, you can be assured it is a Philips (OEM) cam and the type
  112.     is valid.
  113.  */    
  114. #define VIDIOCPWCPROBE _IOR('v', 199, struct pwc_probe)
  115.  /* Set AGC (Automatic Gain Control); int < 0 = auto, 0..65535 = fixed */
  116. #define VIDIOCPWCSAGC _IOW('v', 200, int)
  117.  /* Get AGC; int < 0 = auto; >= 0 = fixed, range 0..65535 */
  118. #define VIDIOCPWCGAGC _IOR('v', 200, int)
  119.  /* Set shutter speed; int < 0 = auto; >= 0 = fixed, range 0..65535 */
  120. #define VIDIOCPWCSSHUTTER _IOW('v', 201, int)
  121.  /* Color compensation (Auto White Balance) */
  122. #define VIDIOCPWCSAWB           _IOW('v', 202, struct pwc_whitebalance)
  123. #define VIDIOCPWCGAWB           _IOR('v', 202, struct pwc_whitebalance)
  124.  /* Auto WB speed */
  125. #define VIDIOCPWCSAWBSPEED _IOW('v', 203, struct pwc_wb_speed)
  126. #define VIDIOCPWCGAWBSPEED _IOR('v', 203, struct pwc_wb_speed)
  127.  /* LEDs on/off/blink; int range 0..65535 */
  128. #define VIDIOCPWCSLED           _IOW('v', 205, struct pwc_leds)
  129. #define VIDIOCPWCGLED           _IOR('v', 205, struct pwc_leds)
  130.   /* Contour (sharpness); int < 0 = auto, 0..65536 = fixed */
  131. #define VIDIOCPWCSCONTOUR _IOW('v', 206, int)
  132. #define VIDIOCPWCGCONTOUR _IOR('v', 206, int)
  133.   /* Backlight compensation; 0 = off, otherwise on */
  134. #define VIDIOCPWCSBACKLIGHT _IOW('v', 207, int)
  135. #define VIDIOCPWCGBACKLIGHT _IOR('v', 207, int)
  136.   /* Flickerless mode; = 0 off, otherwise on */
  137. #define VIDIOCPWCSFLICKER _IOW('v', 208, int)
  138. #define VIDIOCPWCGFLICKER _IOR('v', 208, int)  
  139.   /* Dynamic noise reduction; 0 off, 3 = high noise reduction */
  140. #define VIDIOCPWCSDYNNOISE _IOW('v', 209, int)
  141. #define VIDIOCPWCGDYNNOISE _IOR('v', 209, int)
  142. #endif