ixjuser.h
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:10k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. /******************************************************************************
  2. $Id: ixjuser.h,v 1.1.1.1 1999/07/16 01:26:02 bogawa Exp $
  3. $Log: ixjuser.h,v $
  4. Revision 1.1.1.1  1999/07/16 01:26:02  bogawa
  5. import new cvs
  6. Revision 1.16  1999/07/09 19:13:50  root
  7. Added IXJCTL_RATE to set the rate the DSP is polled.
  8. Added 20ms and 10ms linear modes for LineJack and PhoneJack Lite.
  9. Revision 1.15  1999/07/08 02:21:20  root
  10. Async Notification on hookswitch changes.
  11. Added IXJ_EXCEPTION bitfield structure for select exception sets
  12. Added IXJCTL_DTMFASCII ioctl
  13. Revision 1.14  1999/07/06 23:20:52  root
  14. *** empty log message ***
  15. Revision 1.14  1999/07/06 21:48:38  root
  16. Fixed lockups in linear modes during write.
  17. Revision 1.13  1999/06/28 18:30:44  root
  18. Added buffer depth commands to reduce latency in compressed modes.
  19. Revision 1.12  1999/06/25 21:03:18  root
  20. Close device properly.
  21. Started Mixer code for LineJack
  22. Revision 1.11  1999/06/24 21:51:21  root
  23. bug fixes
  24. Revision 1.10  1999/06/17 18:23:16  root
  25. Added tone generation.
  26. Fixed LineJack hookswitch again.
  27. Revision 1.9  1999/06/09 14:18:15  root
  28. Fixed duplicate IOCTL numbers
  29. Revision 1.8  1999/06/09 14:13:29  root
  30. Added DTMF Recognition with Async Notification
  31. Revision 1.7  1999/06/03 16:50:43  root
  32. Added IXJCTL_HZ to allow changing the HZ value the driver uses.
  33. Revision 1.6  1999/05/31 17:56:07  root
  34. All linear modes now work properly.
  35. Revision 1.5  1999/05/25 14:05:44  root
  36. Added multiple codec selections.
  37. Revision 1.4  1999/04/28 03:43:52  root
  38. More work on echo cancellation
  39. Revision 1.3  1999/04/27 17:17:12  root
  40. added AEC
  41. Revision 1.2  1999/04/22 11:43:52  root
  42. Fixed stability problems
  43. Revision 1.1  1999/03/25 21:52:42  root
  44. Initial revision
  45. *
  46. * IOCTL's used for the Quicknet Cards
  47. *
  48. * If you use the IXJCTL_TESTRAM command, the card must be power cycled to
  49. * reset the SRAM values before futher use.
  50. *
  51. ******************************************************************************/
  52. #define IXJCTL_DSP_RESET  _IO  ('q', 0x00)
  53. #define IXJCTL_DSP_SYNC                 _IO  ('q', 0x01)
  54. #define IXJCTL_RING                     _IO  ('q', 0x02)
  55. #define IXJCTL_HOOKSTATE                _IO  ('q', 0x03)
  56. #define IXJCTL_MAXRINGS _IOW ('q', 0x04, char)
  57. #define IXJCTL_DSP_TYPE                 _IOR ('q', 0x0C, int)
  58. #define IXJCTL_DSP_VERSION              _IOR ('q', 0x0D, int)
  59. #define IXJCTL_DSP_IDLE _IO  ('q', 0x0E)
  60. #define IXJCTL_TESTRAM _IO  ('q', 0x0F)
  61. /******************************************************************************
  62. *
  63. * This group of IOCTLs deal with the record settings of the DSP
  64. *
  65. * The IXJCTL_REC_DEPTH command sets the internal buffer depth of the DSP.
  66. * Setting a lower depth reduces latency, but increases the demand of the
  67. * application to service the driver without frame loss.  The DSP has 480
  68. * bytes of physical buffer memory for the record channel so the true
  69. * maximum limit is determined by how many frames will fit in the buffer.
  70. *
  71. * 1 uncompressed (480 byte) 16-bit linear frame.
  72. * 2 uncompressed (240 byte) 8-bit A-law/mu-law frames.
  73. * 15 TrueSpeech 8.5 frames.
  74. * 20 TrueSpeech 6.3,5.3,4.8 or 4.1 frames.
  75. *
  76. * The default in the driver is currently set to 2 frames.
  77. *
  78. ******************************************************************************/
  79. #define IXJCTL_REC_CODEC                _IOW ('q', 0x10, int)
  80. #define IXJCTL_REC_SYNC                 _IOW ('q', 0x11, int)
  81. #define IXJCTL_REC_START                _IO  ('q', 0x12)
  82. #define IXJCTL_REC_STOP                 _IO  ('q', 0x13)
  83. #define IXJCTL_REC_DEPTH _IOW ('q', 0x14, int)
  84. /******************************************************************************
  85. *
  86. * This group of IOCTLs deal with the playback settings of the DSP
  87. *
  88. ******************************************************************************/
  89. #define IXJCTL_PLAY_CODEC               _IOW ('q', 0x20, int)
  90. #define IXJCTL_PLAY_SYNC                _IOW ('q', 0x21, int)
  91. #define IXJCTL_PLAY_START               _IO  ('q', 0x22)
  92. #define IXJCTL_PLAY_STOP                _IO  ('q', 0x23)
  93. #define IXJCTL_PLAY_DEPTH _IOW ('q', 0x24, int)
  94. /******************************************************************************
  95. *
  96. * This group of IOCTLs deal with the Acoustic Echo Cancellation settings
  97. * of the DSP
  98. *
  99. ******************************************************************************/
  100. #define IXJCTL_AEC_START _IO  ('q', 0x34)
  101. #define IXJCTL_AEC_STOP _IO  ('q', 0x35)
  102. /******************************************************************************
  103. *
  104. * Call Progress Tones, DTMF, etc.
  105. * Tone on and off times are in 250 microsecond intervals so
  106. * ioctl(ixj1, IXJCTL_SET_TONE_ON_TIME, 360);
  107. * will set the tone on time of board ixj1 to 360 * 250us = 90ms
  108. * the default values of tone on and off times is 840 or 210ms
  109. ******************************************************************************/
  110. #define IXJCTL_DTMF_READY _IOR ('q', 0x40, int)
  111. #define IXJCTL_GET_DTMF                 _IOR ('q', 0x41, int)
  112. #define IXJCTL_GET_DTMF_ASCII           _IOR ('q', 0x42, int)
  113. #define IXJCTL_GET_DTMFSYNCMODE _IOR ('q', 0x43, int)
  114. #define IXJCTL_EXCEPTION _IOR ('q', 0x44, int)
  115. #define IXJCTL_GET_TONESYNCMODE _IOR ('q', 0x45, int)
  116. #define IXJCTL_PLAY_TONE _IOW ('q', 0x46, char)
  117. #define IXJCTL_SET_TONE_ON_TIME _IOW ('q', 0x47, int)
  118. #define IXJCTL_SET_TONE_OFF_TIME _IOW ('q', 0x48, int)
  119. #define IXJCTL_GET_TONE_ON_TIME _IO  ('q', 0x49)
  120. #define IXJCTL_GET_TONE_OFF_TIME _IO  ('q', 0x4A)
  121. #define IXJCTL_GET_TONE_STATE _IO  ('q', 0x4B)
  122. #define IXJCTL_BUSY _IO  ('q', 0x4C)
  123. #define IXJCTL_RINGBACK _IO  ('q', 0x4D)
  124. // This IOCTL replaced both IXJCTL_BUSY_STOP and IXJCTL_RINGBACK_STOP and
  125. // should be used from now on to stop all Call Progress Tones.  It will
  126. // actually abort any tone, regardless of time left in the tone_on_time
  127. // and tone_off_time counters.
  128. #define IXJCTL_CPT_STOP _IO  ('q', 0x4F)
  129. /******************************************************************************
  130. * LineJack specific IOCTLs
  131. *
  132. * The lsb 4 bits of the LED argument represent the state of each of the 4
  133. * LED's on the LineJack
  134. ******************************************************************************/
  135. #define IXJCTL_SET_LED _IOW ('q', 0x50, int)
  136. #define IXJCTL_MIXER _IOW ('q', 0x51, int) //Do not use yet
  137. /******************************************************************************
  138. *
  139. * IOCTLs added by request.
  140. *
  141. * IXJCTL_HZ sets the value your Linux kernel uses for HZ as defined in
  142. *           /usr/include/asm/param.h, this determines the fundamental
  143. *           frequency of the clock ticks on your Linux system.  The kernel
  144. *           must be rebuilt if you change this value, also all modules you
  145. *           use (except this one) must be recompiled.  The default value
  146. *           is 100, and you only need to use this IOCTL if you use some
  147. *           other value.
  148. *
  149. *
  150. * IXJCTL_RATE sets the number of times per second that the driver polls
  151. *             the DSP.  This value cannot be larger than HZ.  By
  152. *             increasing both of these values, you may be able to reduce
  153. *             latency because the max hang time that can exist between the
  154. *             driver and the DSP will be reduced.
  155. *
  156. ******************************************************************************/
  157. #define IXJCTL_HZ                       _IOW ('q', 0xE0, int)
  158. #define IXJCTL_RATE                     _IOW ('q', 0xE1, int)
  159. /******************************************************************************
  160. *
  161. * The defined CODECs that can be used with the IXJCTL_REC_RATE and
  162. * IXJ_PLAY_RATE IOCTLs.
  163. *
  164. * PCM uLaw mode is a "pass through" mode.
  165. *
  166. * 16 bit linear data is signed integer (2's complement form), positive
  167. * full scale is 7FFFH, negative full scale is 8000H, zero is 0000H
  168. *
  169. * 8 bit linear data is signed byte (2's complement form), positive
  170. * full scale is 7FH, negative full scale is 80H, zero is 00H
  171. *
  172. * 8 bit linear WSS data is unsigned byte, positive full scale is FFH,
  173. * negative full scale is 00H, zero is 80H.  This is the format used for
  174. * 8-bit WAVE format data (Windows Sound System).  Data can be converted
  175. * between the two 8-bit formats by simply inverting the ms bit. 
  176. *
  177. *
  178. ******************************************************************************/
  179. // Bytes per 30ms audio frame
  180. #define G723_63 1 // 24
  181. #define G723_53 2  // 20
  182. #define TS85 3 // 32 Does not currently work on LineJack
  183. #define TS48 4 // 18
  184. #define TS41 5 // 16
  185. #define G728 6 // 96 not implemented DO NOT USE!
  186. #define G729 7 // 36 not implemented DO NOT USE!
  187. #define ULAW 8 // 240
  188. #define ALAW 9 // 240 not implemented DO NOT USE!
  189. #define LINEAR16 10 // 480
  190. #define LINEAR8 11 // 240
  191. #define WSS 12 // 240
  192. // All the following codecs only work on the LineJack or PhoneJack Lite
  193. // The 8020 on the PhoneJack does NOT support any frame size other than 30ms
  194. #define ULAW_20 13 // 160
  195. #define ALAW_20 14 // 160 not implemented DO NOT USE!
  196. #define LINEAR16_20 15 // 320
  197. #define LINEAR8_20 16 // 160
  198. #define ULAW_10 17 // 80
  199. #define ALAW_10 18 // 80 not implemented DO NOT USE!
  200. #define LINEAR16_10 19 // 160
  201. #define LINEAR8_10 20 // 80
  202.  
  203. /******************************************************************************
  204. *
  205. * The intercom IOCTL's short the output from one card to the input of the
  206. * other and vice versa (actually done in the DSP read function).  It is only
  207. * necessary to execute the IOCTL on one card, but it is necessary to have
  208. * both devices open to be able to detect hook switch changes.  The record
  209. * codec and rate of each card must match the playback codec and rate of
  210. * the other card for this to work properly.
  211. *
  212. ******************************************************************************/
  213. #define IXJCTL_INTERCOM_START _IOW ('q', 0xEE, int)
  214. #define IXJCTL_INTERCOM_STOP  _IOW ('q', 0xEF, int) 
  215. /******************************************************************************
  216. *
  217. * This IOCTL will decrement the module usage counter so you can force
  218. * the module to unload after a program bombs.
  219. *
  220. ******************************************************************************/
  221. #define IXJCTL_MODRESET         _IO  ('q', 0xFF)
  222. /******************************************************************************
  223. *
  224. * Various Defines used for the Quicknet Cards
  225. *
  226. ******************************************************************************/
  227. #define SYNC_MODE_CODEC         0
  228. #define SYNC_MODE_DATA          1
  229. #define SYNC_MODE_POLL          2
  230. #define SYNC_MODE_HOST          3
  231. #define RECORD_SYNC_MODE        0x5100
  232. #define PLAYBACK_SYNC_MODE      0x5200
  233. typedef struct
  234. {
  235.   unsigned int dtmf_ready:1;
  236.   unsigned int hookstate:1;
  237.   unsigned int reserved:30;
  238. }IXJ_EXCEPT;
  239. typedef union
  240. {
  241.   IXJ_EXCEPT bits;
  242.   unsigned int bytes;
  243. }IXJ_EXCEPTION;