MMReg.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:147k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #define  MM_DIMD_WAVEIN                     5
  2. #define  MM_DIMD_WAVEOUT                    6
  3. #define  MM_DIMD_MIDIIN                     7
  4. #define  MM_DIMD_MIDIOUT                    8
  5. #define  MM_DIMD_AUX_LINE                   9
  6. #define  MM_DIMD_MIXER                      10
  7. #define  MM_DIMD_WSS_WAVEIN                 14
  8. #define  MM_DIMD_WSS_WAVEOUT                15
  9. #define  MM_DIMD_WSS_MIXER                  17
  10. #define  MM_DIMD_WSS_AUX                    21
  11. #define  MM_DIMD_WSS_SYNTH                  76
  12. /* MM_S3 product IDs */
  13. #define  MM_S3_WAVEOUT                      1
  14. #define  MM_S3_WAVEIN                       2
  15. #define  MM_S3_MIDIOUT                      3
  16. #define  MM_S3_MIDIIN                       4
  17. #define  MM_S3_FMSYNTH                      5
  18. #define  MM_S3_MIXER                        6
  19. #define  MM_S3_AUX                          7
  20. /* MM_VANKOEVERING product IDs */
  21. #define  MM_VKC_MPU401_MIDIIN               0x0100
  22. #define  MM_VKC_SERIAL_MIDIIN               0x0101
  23. #define  MM_VKC_MPU401_MIDIOUT              0x0200
  24. #define  MM_VKC_SERIAL_MIDIOUT              0x0201
  25. /* MM_ZEFIRO product IDs */
  26. #define  MM_ZEFIRO_ZA2                      2
  27. /* MM_FRAUNHOFER_IIS product IDs */
  28. #define  MM_FHGIIS_MPEGLAYER3               10
  29. /* MM_QUICKNET product IDs */
  30. #define  MM_QUICKNET_PJWAVEIN               1
  31. #define  MM_QUICKNET_PJWAVEOUT              2
  32. /* MM_SICRESOURCE product IDs */
  33. #define  MM_SICRESOURCE_SSO3D               2
  34. #define  MM_SICRESOURCE_SSOW3DI             3
  35. /* MM_NEOMAGIC product IDs */
  36. #define  MM_NEOMAGIC_SYNTH                  1
  37. #define  MM_NEOMAGIC_WAVEOUT                2
  38. #define  MM_NEOMAGIC_WAVEIN                 3
  39. #define  MM_NEOMAGIC_MIDIOUT                4
  40. #define  MM_NEOMAGIC_MIDIIN                 5
  41. #define  MM_NEOMAGIC_AUX                    6
  42. #define  MM_NEOMAGIC_MW3DX_WAVEOUT          10
  43. #define  MM_NEOMAGIC_MW3DX_WAVEIN           11
  44. #define  MM_NEOMAGIC_MW3DX_MIDIOUT          12
  45. #define  MM_NEOMAGIC_MW3DX_MIDIIN           13
  46. #define  MM_NEOMAGIC_MW3DX_FMSYNTH          14
  47. #define  MM_NEOMAGIC_MW3DX_GMSYNTH          15
  48. #define  MM_NEOMAGIC_MW3DX_MIXER            16
  49. #define  MM_NEOMAGIC_MW3DX_AUX              17
  50. #define  MM_NEOMAGIC_MWAVE_WAVEOUT          20
  51. #define  MM_NEOMAGIC_MWAVE_WAVEIN           21
  52. #define  MM_NEOMAGIC_MWAVE_MIDIOUT          22
  53. #define  MM_NEOMAGIC_MWAVE_MIDIIN           23
  54. #define  MM_NEOMAGIC_MWAVE_MIXER            24
  55. #define  MM_NEOMAGIC_MWAVE_AUX              25
  56. /* MM_MERGING_TECHNOLOGIES product IDs */
  57. #define  MM_MERGING_MPEGL3                  1
  58. /* MM_XIRLINK product IDs */
  59. #define  MM_XIRLINK_VISIONLINK              1
  60. /* MM_OTI product IDs */
  61. #define  MM_OTI_611WAVEIN                   5
  62. #define  MM_OTI_611WAVEOUT                  6
  63. #define  MM_OTI_611MIXER                    7
  64. #define  MM_OTI_611MIDIN                    0x12
  65. #define  MM_OTI_611MIDIOUT                  0x13
  66. /* MM_AUREAL product IDs */
  67. #define  MM_AUREAL_AU8820                   16
  68. #define  MM_AU8820_SYNTH                    17
  69. #define  MM_AU8820_WAVEOUT                  18
  70. #define  MM_AU8820_WAVEIN                   19
  71. #define  MM_AU8820_MIXER                    20
  72. #define  MM_AU8820_AUX                      21
  73. #define  MM_AU8820_MIDIOUT                  22
  74. #define  MM_AU8820_MIDIIN                   23
  75. #define  MM_AUREAL_AU8830                   32
  76. #define  MM_AU8830_SYNTH                    33
  77. #define  MM_AU8830_WAVEOUT                  34
  78. #define  MM_AU8830_WAVEIN                   35
  79. #define  MM_AU8830_MIXER                    36
  80. #define  MM_AU8830_AUX                      37
  81. #define  MM_AU8830_MIDIOUT                  38
  82. #define  MM_AU8830_MIDIIN                   39
  83. /* MM_VIVO product IDs */
  84. #define  MM_VIVO_AUDIO_CODEC                1
  85. /* MM_SHARP product IDs */
  86. #define  MM_SHARP_MDC_MIDI_SYNTH            1
  87. #define  MM_SHARP_MDC_MIDI_IN               2
  88. #define  MM_SHARP_MDC_MIDI_OUT              3
  89. #define  MM_SHARP_MDC_WAVE_IN               4
  90. #define  MM_SHARP_MDC_WAVE_OUT              5
  91. #define  MM_SHARP_MDC_AUX                   6
  92. #define  MM_SHARP_MDC_MIXER                 10
  93. #define  MM_SHARP_MDC_AUX_MASTER            100
  94. #define  MM_SHARP_MDC_AUX_BASS              101
  95. #define  MM_SHARP_MDC_AUX_TREBLE            102
  96. #define  MM_SHARP_MDC_AUX_MIDI_VOL          103
  97. #define  MM_SHARP_MDC_AUX_WAVE_VOL          104
  98. #define  MM_SHARP_MDC_AUX_WAVE_RVB          105
  99. #define  MM_SHARP_MDC_AUX_WAVE_CHR          106
  100. #define  MM_SHARP_MDC_AUX_VOL               107
  101. #define  MM_SHARP_MDC_AUX_RVB               108
  102. #define  MM_SHARP_MDC_AUX_CHR               109
  103. /* MM_LUCENT product IDs */
  104. #define  MM_LUCENT_ACM_G723                 0
  105. /* MM_ATT product IDs */
  106. #define  MM_ATT_G729A                       1
  107. /* MM_MARIAN product IDs */
  108. #define  MM_MARIAN_ARC44WAVEIN              1
  109. #define  MM_MARIAN_ARC44WAVEOUT             2
  110. #define  MM_MARIAN_PRODIF24WAVEIN           3
  111. #define  MM_MARIAN_PRODIF24WAVEOUT          4
  112. #define  MM_MARIAN_ARC88WAVEIN              5
  113. #define  MM_MARIAN_ARC88WAVEOUT             6
  114. /* MM_BCB product IDs */
  115. #define  MM_BCB_NETBOARD_10                 1
  116. #define  MM_BCB_TT75_10                     2
  117. /* MM_MOTIONPIXELS product IDs */
  118. #define  MM_MOTIONPIXELS_MVI2               1
  119. /* MM_QDESIGN product IDs */
  120. #define  MM_QDESIGN_ACM_MPEG                1
  121. #define  MM_QDESIGN_ACM_QDESIGN_MUSIC       2
  122. /* MM_NMP product IDs */
  123. #define  MM_NMP_CCP_WAVEIN                  1
  124. #define  MM_NMP_CCP_WAVEOUT                 2
  125. #define  MM_NMP_ACM_AMR                     10
  126. /* MM_DATAFUSION product IDs */
  127. #define  MM_DF_ACM_G726                     1
  128. #define  MM_DF_ACM_GSM610                   2
  129. /* MM_BERCOS product IDs */
  130. #define  MM_BERCOS_WAVEIN                   1
  131. #define  MM_BERCOS_MIXER                    2
  132. #define  MM_BERCOS_WAVEOUT                  3
  133. /* MM_ONLIVE product IDs */
  134. #define  MM_ONLIVE_MPCODEC                  1
  135. /* MM_PHONET product IDs */
  136. #define  MM_PHONET_PP_WAVEOUT               1
  137. #define  MM_PHONET_PP_WAVEIN                2
  138. #define  MM_PHONET_PP_MIXER                 3
  139. /* MM_FTR product IDs */
  140. #define  MM_FTR_ENCODER_WAVEIN              1
  141. #define  MM_FTR_ACM                         2
  142. /* MM_ENET product IDs */
  143. #define  MM_ENET_T2000_LINEIN               1
  144. #define  MM_ENET_T2000_LINEOUT              2
  145. #define  MM_ENET_T2000_HANDSETIN            3
  146. #define  MM_ENET_T2000_HANDSETOUT           4
  147. /*  MM_EMAGIC product IDs */
  148. #define  MM_EMAGIC_UNITOR8                  1
  149. /*  MM_SIPROLAB product IDs */
  150. #define  MM_SIPROLAB_ACELPNET               1
  151. /*  MM_DICTAPHONE product IDs */
  152. #define  MM_DICTAPHONE_G726                 1       /* G726 ACM codec (g726pcm.acm) */
  153. /*  MM_RZS product IDs */
  154. #define  MM_RZS_ACM_TUBGSM                  1      /* GSM 06.10 CODEC */
  155. /*  MM_EES product IDs */
  156. #define  MM_EES_PCMIDI14                    1
  157. #define  MM_EES_PCMIDI14_IN                 2
  158. #define  MM_EES_PCMIDI14_OUT1               3
  159. #define  MM_EES_PCMIDI14_OUT2               4
  160. #define  MM_EES_PCMIDI14_OUT3               5
  161. #define  MM_EES_PCMIDI14_OUT4               6
  162. /*  MM_HAFTMANN product IDs */
  163. #define  MM_HAFTMANN_LPTDAC2                1
  164. /*  MM_LUCID product IDs */
  165. #define  MM_LUCID_PCI24WAVEIN               1
  166. #define  MM_LUCID_PCI24WAVEOUT              2
  167. /*  MM_HEADSPACE product IDs */
  168. #define  MM_HEADSPACE_HAESYNTH              1
  169. #define  MM_HEADSPACE_HAEWAVEOUT            2
  170. #define  MM_HEADSPACE_HAEWAVEIN             3
  171. #define  MM_HEADSPACE_HAEMIXER              4
  172. /*  MM_UNISYS product IDs */
  173. #define  MM_UNISYS_ACM_NAP                  1
  174. /*  MM_LUMINOSITI product IDs */
  175. #define  MM_LUMINOSITI_SCWAVEIN             1
  176. #define  MM_LUMINOSITI_SCWAVEOUT            2
  177. #define  MM_LUMINOSITI_SCWAVEMIX            3
  178. /*  MM_ACTIVEVOICE product IDs */
  179. #define  MM_ACTIVEVOICE_ACM_VOXADPCM        1
  180. /*  MM_DTS product IDs */
  181. #define  MM_DTS_DS                          1
  182. /*  MM_SOFTLAB_NSK product IDs */
  183. #define  MM_SOFTLAB_NSK_FRW_WAVEIN          1
  184. #define  MM_SOFTLAB_NSK_FRW_WAVEOUT         2
  185. #define  MM_SOFTLAB_NSK_FRW_MIXER           3
  186. #define  MM_SOFTLAB_NSK_FRW_AUX             4
  187. /*  MM_FORTEMEDIA product IDs */
  188. #define  MM_FORTEMEDIA_WAVEIN               1
  189. #define  MM_FORTEMEDIA_WAVEOUT              2
  190. #define  MM_FORTEMEDIA_FMSYNC               3
  191. #define  MM_FORTEMEDIA_MIXER                4
  192. #define  MM_FORTEMEDIA_AUX                  5
  193. /*  MM_SONORUS product IDs */
  194. #define  MM_SONORUS_STUDIO                  1
  195. /*  MM_I_LINK product IDs */
  196. #define  MM_I_LINK_VOICE_CODER              1
  197. /*  MM_SELSIUS_SYSTEMS product IDs */
  198. #define  MM_SELSIUS_SYSTEMS_RTPWAVEOUT      1
  199. #define  MM_SELSIUS_SYSTEMS_RTPWAVEIN       2
  200. /*  MM_ADMOS product IDs */
  201. #define  MM_ADMOS_FM_SYNTH                  1
  202. #define  MM_ADMOS_QS3AMIDIOUT               2
  203. #define  MM_ADMOS_QS3AMIDIIN                3
  204. #define  MM_ADMOS_QS3AWAVEOUT               4
  205. #define  MM_ADMOS_QS3AWAVEIN                5
  206. /* MM_LEXICON product IDs */
  207. #define  MM_LEXICON_STUDIO_WAVE_OUT         1
  208. #define  MM_LEXICON_STUDIO_WAVE_IN          2
  209. /* MM_SGI product IDs */
  210. #define  MM_SGI_320_WAVEIN                  1
  211. #define  MM_SGI_320_WAVEOUT                 2
  212. #define  MM_SGI_320_MIXER                   3
  213. #define  MM_SGI_540_WAVEIN                  4
  214. #define  MM_SGI_540_WAVEOUT                 5
  215. #define  MM_SGI_540_MIXER                   6
  216. #define  MM_SGI_RAD_ADATMONO1_WAVEIN        7
  217. #define  MM_SGI_RAD_ADATMONO2_WAVEIN        8
  218. #define  MM_SGI_RAD_ADATMONO3_WAVEIN        9
  219. #define  MM_SGI_RAD_ADATMONO4_WAVEIN        10
  220. #define  MM_SGI_RAD_ADATMONO5_WAVEIN        11
  221. #define  MM_SGI_RAD_ADATMONO6_WAVEIN        12
  222. #define  MM_SGI_RAD_ADATMONO7_WAVEIN        13
  223. #define  MM_SGI_RAD_ADATMONO8_WAVEIN        14
  224. #define  MM_SGI_RAD_ADATSTEREO12_WAVEIN     15
  225. #define  MM_SGI_RAD_ADATSTEREO34_WAVEIN     16
  226. #define  MM_SGI_RAD_ADATSTEREO56_WAVEIN     17
  227. #define  MM_SGI_RAD_ADATSTEREO78_WAVEIN     18
  228. #define  MM_SGI_RAD_ADAT8CHAN_WAVEIN        19
  229. #define  MM_SGI_RAD_ADATMONO1_WAVEOUT       20
  230. #define  MM_SGI_RAD_ADATMONO2_WAVEOUT       21
  231. #define  MM_SGI_RAD_ADATMONO3_WAVEOUT       22
  232. #define  MM_SGI_RAD_ADATMONO4_WAVEOUT       23
  233. #define  MM_SGI_RAD_ADATMONO5_WAVEOUT       24
  234. #define  MM_SGI_RAD_ADATMONO6_WAVEOUT       25
  235. #define  MM_SGI_RAD_ADATMONO7_WAVEOUT       26
  236. #define  MM_SGI_RAD_ADATMONO8_WAVEOUT       27
  237. #define  MM_SGI_RAD_ADATSTEREO12_WAVEOUT    28
  238. #define  MM_SGI_RAD_ADATSTEREO32_WAVEOUT    29
  239. #define  MM_SGI_RAD_ADATSTEREO56_WAVEOUT    30
  240. #define  MM_SGI_RAD_ADATSTEREO78_WAVEOUT    31
  241. #define  MM_SGI_RAD_ADAT8CHAN_WAVEOUT       32
  242. #define  MM_SGI_RAD_AESMONO1_WAVEIN         33
  243. #define  MM_SGI_RAD_AESMONO2_WAVEIN         34
  244. #define  MM_SGI_RAD_AESSTEREO_WAVEIN        35
  245. #define  MM_SGI_RAD_AESMONO1_WAVEOUT        36
  246. #define  MM_SGI_RAD_AESMONO2_WAVEOUT        37
  247. #define  MM_SGI_RAD_AESSTEREO_WAVEOUT       38
  248. /* MM_IPI product IDs */
  249. #define  MM_IPI_ACM_HSX                     1
  250. #define  MM_IPI_ACM_RPELP                   2
  251. #define  MM_IPI_WF_ASSS                     3
  252. #define  MM_IPI_AT_WAVEOUT                  4
  253. #define  MM_IPI_AT_WAVEIN                   5
  254. #define  MM_IPI_AT_MIXER                    6
  255. /* MM_ICE product IDs */
  256. #define  MM_ICE_WAVEOUT                     1
  257. #define  MM_ICE_WAVEIN                      2
  258. #define  MM_ICE_MTWAVEOUT                   3
  259. #define  MM_ICE_MTWAVEIN                    4
  260. #define  MM_ICE_MIDIOUT1                    5
  261. #define  MM_ICE_MIDIIN1                     6
  262. #define  MM_ICE_MIDIOUT2                    7
  263. #define  MM_ICE_MIDIIN2                     8
  264. #define  MM_ICE_SYNTH                       9
  265. #define  MM_ICE_MIXER                       10
  266. #define  MM_ICE_AUX                         11
  267. /* MM_VQST product IDs */
  268. #define  MM_VQST_VQC1                       1
  269. #define  MM_VQST_VQC2                       2
  270. /* MM_ETEK product IDs */
  271. #define  MM_ETEK_KWIKMIDI_MIDIIN            1
  272. #define  MM_ETEK_KWIKMIDI_MIDIOUT           2
  273. /* MM_INTERNET product IDs */
  274. #define  MM_INTERNET_SSW_MIDIOUT            10
  275. #define  MM_INTERNET_SSW_MIDIIN             11
  276. #define  MM_INTERNET_SSW_WAVEOUT            12
  277. #define  MM_INTERNET_SSW_WAVEIN             13
  278. /* MM_SONY product IDs */
  279. #define  MM_SONY_ACM_SCX                    1
  280. /* MM_UHER_INFORMATIC product IDs */
  281. #define  MM_UH_ACM_ADPCM                    1
  282. /* MM_SYDEC_NV product IDs */
  283. #define  MM_SYDEC_NV_WAVEIN                 1
  284. #define  MM_SYDEC_NV_WAVEOUT                2
  285. /* MM_FLEXION product IDs */
  286. #define  MM_FLEXION_X300_WAVEIN             1
  287. #define  MM_FLEXION_X300_WAVEOUT            2
  288. /* MM_VIA product IDs */
  289. #define  MM_VIA_WAVEOUT                     1
  290. #define  MM_VIA_WAVEIN                      2
  291. #define  MM_VIA_MIXER                       3
  292. #define  MM_VIA_AUX                         4
  293. #define  MM_VIA_MPU401_MIDIOUT              5
  294. #define  MM_VIA_MPU401_MIDIIN               6
  295. #define  MM_VIA_SWFM_SYNTH                  7
  296. #define  MM_VIA_WDM_WAVEOUT                 8
  297. #define  MM_VIA_WDM_WAVEIN                  9
  298. #define  MM_VIA_WDM_MIXER                   10
  299. #define  MM_VIA_WDM_MPU401_MIDIOUT          11
  300. #define  MM_VIA_WDM_MPU401_MIDIIN           12
  301. /* MM_MICRONAS product IDs */
  302. #define  MM_MICRONAS_SC4                    1
  303. #define  MM_MICRONAS_CLP833                 2
  304. /* MM_HP product IDs */
  305. #define  MM_HP_WAVEOUT                      1
  306. #define  MM_HP_WAVEIN                       2
  307. /* MM_QUICKAUDIO product IDs */
  308. #define  MM_QUICKAUDIO_MINIMIDI             1
  309. #define  MM_QUICKAUDIO_MAXIMIDI             2
  310. /* MM_ICCC product IDs */
  311. #define  MM_ICCC_UNA3_WAVEIN                1
  312. #define  MM_ICCC_UNA3_WAVEOUT               2
  313. #define  MM_ICCC_UNA3_AUX                   3
  314. #define  MM_ICCC_UNA3_MIXER                 4
  315. /* MM_3COM product IDs */
  316. #define  MM_3COM_CB_MIXER                   1
  317. #define  MM_3COM_CB_WAVEIN                  2
  318. #define  MM_3COM_CB_WAVEOUT                 3
  319. /* MM_MINDMAKER product IDs */
  320. #define  MM_MINDMAKER_GC_WAVEIN             1
  321. #define  MM_MINDMAKER_GC_WAVEOUT            2
  322. #define  MM_MINDMAKER_GC_MIXER              3
  323. /* MM_TELEKOL product IDs */
  324. #define  MM_TELEKOL_WAVEOUT                 1
  325. #define  MM_TELEKOL_WAVEIN                  2
  326. /* MM_ALGOVISION product IDs */
  327. #define  MM_ALGOVISION_VB80WAVEOUT          1
  328. #define  MM_ALGOVISION_VB80WAVEIN           2
  329. #define  MM_ALGOVISION_VB80MIXER            3
  330. #define  MM_ALGOVISION_VB80AUX              4
  331. #define  MM_ALGOVISION_VB80AUX2             5
  332. #endif  // !NOMMIDS
  333. /* ------------------------------------------------------------------------------ */
  334. /*              INFO LIST CHUNKS (from the Multimedia Programmer's Reference
  335.                                         plus new ones)
  336. */
  337. #define RIFFINFO_IARL      mmioFOURCC ('I', 'A', 'R', 'L')     /*Archival location  */
  338. #define RIFFINFO_IART      mmioFOURCC ('I', 'A', 'R', 'T')     /*Artist  */
  339. #define RIFFINFO_ICMS      mmioFOURCC ('I', 'C', 'M', 'S')     /*Commissioned  */
  340. #define RIFFINFO_ICMT      mmioFOURCC ('I', 'C', 'M', 'T')     /*Comments  */
  341. #define RIFFINFO_ICOP      mmioFOURCC ('I', 'C', 'O', 'P')     /*Copyright  */
  342. #define RIFFINFO_ICRD      mmioFOURCC ('I', 'C', 'R', 'D')     /*Creation date of subject  */
  343. #define RIFFINFO_ICRP      mmioFOURCC ('I', 'C', 'R', 'P')     /*Cropped  */
  344. #define RIFFINFO_IDIM      mmioFOURCC ('I', 'D', 'I', 'M')     /*Dimensions  */
  345. #define RIFFINFO_IDPI      mmioFOURCC ('I', 'D', 'P', 'I')     /*Dots per inch  */
  346. #define RIFFINFO_IENG      mmioFOURCC ('I', 'E', 'N', 'G')     /*Engineer  */
  347. #define RIFFINFO_IGNR      mmioFOURCC ('I', 'G', 'N', 'R')     /*Genre  */
  348. #define RIFFINFO_IKEY      mmioFOURCC ('I', 'K', 'E', 'Y')     /*Keywords  */
  349. #define RIFFINFO_ILGT      mmioFOURCC ('I', 'L', 'G', 'T')     /*Lightness settings  */
  350. #define RIFFINFO_IMED      mmioFOURCC ('I', 'M', 'E', 'D')     /*Medium  */
  351. #define RIFFINFO_INAM      mmioFOURCC ('I', 'N', 'A', 'M')     /*Name of subject  */
  352. #define RIFFINFO_IPLT      mmioFOURCC ('I', 'P', 'L', 'T')     /*Palette Settings. No. of colors requested.   */
  353. #define RIFFINFO_IPRD      mmioFOURCC ('I', 'P', 'R', 'D')     /*Product  */
  354. #define RIFFINFO_ISBJ      mmioFOURCC ('I', 'S', 'B', 'J')     /*Subject description  */
  355. #define RIFFINFO_ISFT      mmioFOURCC ('I', 'S', 'F', 'T')     /*Software. Name of package used to create file.  */
  356. #define RIFFINFO_ISHP      mmioFOURCC ('I', 'S', 'H', 'P')     /*Sharpness.  */
  357. #define RIFFINFO_ISRC      mmioFOURCC ('I', 'S', 'R', 'C')     /*Source.   */
  358. #define RIFFINFO_ISRF      mmioFOURCC ('I', 'S', 'R', 'F')     /*Source Form. ie slide, paper  */
  359. #define RIFFINFO_ITCH      mmioFOURCC ('I', 'T', 'C', 'H')     /*Technician who digitized the subject.  */
  360. /* New INFO Chunks as of August 30, 1993: */
  361. #define RIFFINFO_ISMP      mmioFOURCC ('I', 'S', 'M', 'P')     /*SMPTE time code  */
  362. /* ISMP: SMPTE time code of digitization start point expressed as a NULL terminated
  363.                 text string "HH:MM:SS:FF". If performing MCI capture in AVICAP, this
  364.                 chunk will be automatically set based on the MCI start time.
  365. */
  366. #define RIFFINFO_IDIT      mmioFOURCC ('I', 'D', 'I', 'T')     /*Digitization Time  */
  367. /* IDIT: "Digitization Time" Specifies the time and date that the digitization commenced.
  368.                 The digitization time is contained in an ASCII string which
  369.                 contains exactly 26 characters and is in the format
  370.                 "Wed Jan 02 02:03:55 1990n".
  371.                 The ctime(), asctime(), functions can be used to create strings
  372.                 in this format. This chunk is automatically added to the capture
  373.                 file based on the current system time at the moment capture is initiated.
  374. */
  375. /*Template line for new additions*/
  376. /*#define RIFFINFO_I      mmioFOURCC ('I', '', '', '')        */
  377. /* ------------------------------------------------------------------------------ */
  378. #ifndef NONEWWAVE
  379. /* WAVE form wFormatTag IDs */
  380. #define  WAVE_FORMAT_UNKNOWN                    0x0000 /* Microsoft Corporation */
  381. #define  WAVE_FORMAT_ADPCM                      0x0002 /* Microsoft Corporation */
  382. #define  WAVE_FORMAT_IEEE_FLOAT                 0x0003 /* Microsoft Corporation */
  383. #define  WAVE_FORMAT_VSELP                      0x0004 /* Compaq Computer Corp. */
  384. #define  WAVE_FORMAT_IBM_CVSD                   0x0005 /* IBM Corporation */
  385. #define  WAVE_FORMAT_ALAW                       0x0006 /* Microsoft Corporation */
  386. #define  WAVE_FORMAT_MULAW                      0x0007 /* Microsoft Corporation */
  387. #define  WAVE_FORMAT_DTS                        0x0008 /* Microsoft Corporation */
  388. #define  WAVE_FORMAT_DRM                        0x0009 /* Microsoft Corporation */
  389. #define  WAVE_FORMAT_OKI_ADPCM                  0x0010 /* OKI */
  390. #define  WAVE_FORMAT_DVI_ADPCM                  0x0011 /* Intel Corporation */
  391. #define  WAVE_FORMAT_IMA_ADPCM                  (WAVE_FORMAT_DVI_ADPCM) /*  Intel Corporation */
  392. #define  WAVE_FORMAT_MEDIASPACE_ADPCM           0x0012 /* Videologic */
  393. #define  WAVE_FORMAT_SIERRA_ADPCM               0x0013 /* Sierra Semiconductor Corp */
  394. #define  WAVE_FORMAT_G723_ADPCM                 0x0014 /* Antex Electronics Corporation */
  395. #define  WAVE_FORMAT_DIGISTD                    0x0015 /* DSP Solutions, Inc. */
  396. #define  WAVE_FORMAT_DIGIFIX                    0x0016 /* DSP Solutions, Inc. */
  397. #define  WAVE_FORMAT_DIALOGIC_OKI_ADPCM         0x0017 /* Dialogic Corporation */
  398. #define  WAVE_FORMAT_MEDIAVISION_ADPCM          0x0018 /* Media Vision, Inc. */
  399. #define  WAVE_FORMAT_CU_CODEC                   0x0019 /* Hewlett-Packard Company */
  400. #define  WAVE_FORMAT_YAMAHA_ADPCM               0x0020 /* Yamaha Corporation of America */
  401. #define  WAVE_FORMAT_SONARC                     0x0021 /* Speech Compression */
  402. #define  WAVE_FORMAT_DSPGROUP_TRUESPEECH        0x0022 /* DSP Group, Inc */
  403. #define  WAVE_FORMAT_ECHOSC1                    0x0023 /* Echo Speech Corporation */
  404. #define  WAVE_FORMAT_AUDIOFILE_AF36             0x0024 /* Virtual Music, Inc. */
  405. #define  WAVE_FORMAT_APTX                       0x0025 /* Audio Processing Technology */
  406. #define  WAVE_FORMAT_AUDIOFILE_AF10             0x0026 /* Virtual Music, Inc. */
  407. #define  WAVE_FORMAT_PROSODY_1612               0x0027 /* Aculab plc */
  408. #define  WAVE_FORMAT_LRC                        0x0028 /* Merging Technologies S.A. */
  409. #define  WAVE_FORMAT_DOLBY_AC2                  0x0030 /* Dolby Laboratories */
  410. #define  WAVE_FORMAT_GSM610                     0x0031 /* Microsoft Corporation */
  411. #define  WAVE_FORMAT_MSNAUDIO                   0x0032 /* Microsoft Corporation */
  412. #define  WAVE_FORMAT_ANTEX_ADPCME               0x0033 /* Antex Electronics Corporation */
  413. #define  WAVE_FORMAT_CONTROL_RES_VQLPC          0x0034 /* Control Resources Limited */
  414. #define  WAVE_FORMAT_DIGIREAL                   0x0035 /* DSP Solutions, Inc. */
  415. #define  WAVE_FORMAT_DIGIADPCM                  0x0036 /* DSP Solutions, Inc. */
  416. #define  WAVE_FORMAT_CONTROL_RES_CR10           0x0037 /* Control Resources Limited */
  417. #define  WAVE_FORMAT_NMS_VBXADPCM               0x0038 /* Natural MicroSystems */
  418. #define  WAVE_FORMAT_CS_IMAADPCM                0x0039 /* Crystal Semiconductor IMA ADPCM */
  419. #define  WAVE_FORMAT_ECHOSC3                    0x003A /* Echo Speech Corporation */
  420. #define  WAVE_FORMAT_ROCKWELL_ADPCM             0x003B /* Rockwell International */
  421. #define  WAVE_FORMAT_ROCKWELL_DIGITALK          0x003C /* Rockwell International */
  422. #define  WAVE_FORMAT_XEBEC                      0x003D /* Xebec Multimedia Solutions Limited */
  423. #define  WAVE_FORMAT_G721_ADPCM                 0x0040 /* Antex Electronics Corporation */
  424. #define  WAVE_FORMAT_G728_CELP                  0x0041 /* Antex Electronics Corporation */
  425. #define  WAVE_FORMAT_MSG723                     0x0042 /* Microsoft Corporation */
  426. #define  WAVE_FORMAT_MPEG                       0x0050 /* Microsoft Corporation */
  427. #define  WAVE_FORMAT_RT24                       0x0052 /* InSoft, Inc. */
  428. #define  WAVE_FORMAT_PAC                        0x0053 /* InSoft, Inc. */
  429. #define  WAVE_FORMAT_MPEGLAYER3                 0x0055 /* ISO/MPEG Layer3 Format Tag */
  430. #define  WAVE_FORMAT_LUCENT_G723                0x0059 /* Lucent Technologies */
  431. #define  WAVE_FORMAT_CIRRUS                     0x0060 /* Cirrus Logic */
  432. #define  WAVE_FORMAT_ESPCM                      0x0061 /* ESS Technology */
  433. #define  WAVE_FORMAT_VOXWARE                    0x0062 /* Voxware Inc */
  434. #define  WAVE_FORMAT_CANOPUS_ATRAC              0x0063 /* Canopus, co., Ltd. */
  435. #define  WAVE_FORMAT_G726_ADPCM                 0x0064 /* APICOM */
  436. #define  WAVE_FORMAT_G722_ADPCM                 0x0065 /* APICOM */
  437. #define  WAVE_FORMAT_DSAT_DISPLAY               0x0067 /* Microsoft Corporation */
  438. #define  WAVE_FORMAT_VOXWARE_BYTE_ALIGNED       0x0069 /* Voxware Inc */
  439. #define  WAVE_FORMAT_VOXWARE_AC8                0x0070 /* Voxware Inc */
  440. #define  WAVE_FORMAT_VOXWARE_AC10               0x0071 /* Voxware Inc */
  441. #define  WAVE_FORMAT_VOXWARE_AC16               0x0072 /* Voxware Inc */
  442. #define  WAVE_FORMAT_VOXWARE_AC20               0x0073 /* Voxware Inc */
  443. #define  WAVE_FORMAT_VOXWARE_RT24               0x0074 /* Voxware Inc */
  444. #define  WAVE_FORMAT_VOXWARE_RT29               0x0075 /* Voxware Inc */
  445. #define  WAVE_FORMAT_VOXWARE_RT29HW             0x0076 /* Voxware Inc */
  446. #define  WAVE_FORMAT_VOXWARE_VR12               0x0077 /* Voxware Inc */
  447. #define  WAVE_FORMAT_VOXWARE_VR18               0x0078 /* Voxware Inc */
  448. #define  WAVE_FORMAT_VOXWARE_TQ40               0x0079 /* Voxware Inc */
  449. #define  WAVE_FORMAT_SOFTSOUND                  0x0080 /* Softsound, Ltd. */
  450. #define  WAVE_FORMAT_VOXWARE_TQ60               0x0081 /* Voxware Inc */
  451. #define  WAVE_FORMAT_MSRT24                     0x0082 /* Microsoft Corporation */
  452. #define  WAVE_FORMAT_G729A                      0x0083 /* AT&T Labs, Inc. */
  453. #define  WAVE_FORMAT_MVI_MVI2                   0x0084 /* Motion Pixels */
  454. #define  WAVE_FORMAT_DF_G726                    0x0085 /* DataFusion Systems (Pty) (Ltd) */
  455. #define  WAVE_FORMAT_DF_GSM610                  0x0086 /* DataFusion Systems (Pty) (Ltd) */
  456. #define  WAVE_FORMAT_ISIAUDIO                   0x0088 /* Iterated Systems, Inc. */
  457. #define  WAVE_FORMAT_ONLIVE                     0x0089 /* OnLive! Technologies, Inc. */
  458. #define  WAVE_FORMAT_SBC24                      0x0091 /* Siemens Business Communications Sys */
  459. #define  WAVE_FORMAT_DOLBY_AC3_SPDIF            0x0092 /* Sonic Foundry */
  460. #define  WAVE_FORMAT_MEDIASONIC_G723            0x0093 /* MediaSonic */
  461. #define  WAVE_FORMAT_PROSODY_8KBPS              0x0094 /* Aculab plc */
  462. #define  WAVE_FORMAT_ZYXEL_ADPCM                0x0097 /* ZyXEL Communications, Inc. */
  463. #define  WAVE_FORMAT_PHILIPS_LPCBB              0x0098 /* Philips Speech Processing */
  464. #define  WAVE_FORMAT_PACKED                     0x0099 /* Studer Professional Audio AG */
  465. #define  WAVE_FORMAT_MALDEN_PHONYTALK           0x00A0 /* Malden Electronics Ltd. */
  466. #define  WAVE_FORMAT_RHETOREX_ADPCM             0x0100 /* Rhetorex Inc. */
  467. #define  WAVE_FORMAT_IRAT                       0x0101 /* BeCubed Software Inc. */
  468. #define  WAVE_FORMAT_VIVO_G723                  0x0111 /* Vivo Software */
  469. #define  WAVE_FORMAT_VIVO_SIREN                 0x0112 /* Vivo Software */
  470. #define  WAVE_FORMAT_DIGITAL_G723               0x0123 /* Digital Equipment Corporation */
  471. #define  WAVE_FORMAT_SANYO_LD_ADPCM             0x0125 /* Sanyo Electric Co., Ltd. */
  472. #define  WAVE_FORMAT_SIPROLAB_ACEPLNET          0x0130 /* Sipro Lab Telecom Inc. */
  473. #define  WAVE_FORMAT_SIPROLAB_ACELP4800         0x0131 /* Sipro Lab Telecom Inc. */
  474. #define  WAVE_FORMAT_SIPROLAB_ACELP8V3          0x0132 /* Sipro Lab Telecom Inc. */
  475. #define  WAVE_FORMAT_SIPROLAB_G729              0x0133 /* Sipro Lab Telecom Inc. */
  476. #define  WAVE_FORMAT_SIPROLAB_G729A             0x0134 /* Sipro Lab Telecom Inc. */
  477. #define  WAVE_FORMAT_SIPROLAB_KELVIN            0x0135 /* Sipro Lab Telecom Inc. */
  478. #define  WAVE_FORMAT_G726ADPCM                  0x0140 /* Dictaphone Corporation */
  479. #define  WAVE_FORMAT_QUALCOMM_PUREVOICE         0x0150 /* Qualcomm, Inc. */
  480. #define  WAVE_FORMAT_QUALCOMM_HALFRATE          0x0151 /* Qualcomm, Inc. */
  481. #define  WAVE_FORMAT_TUBGSM                     0x0155 /* Ring Zero Systems, Inc. */
  482. #define  WAVE_FORMAT_MSAUDIO1                   0x0160 /* Microsoft Corporation */
  483. #define  WAVE_FORMAT_UNISYS_NAP_ADPCM           0x0170 /* Unisys Corp. */
  484. #define  WAVE_FORMAT_UNISYS_NAP_ULAW            0x0171 /* Unisys Corp. */
  485. #define  WAVE_FORMAT_UNISYS_NAP_ALAW            0x0172 /* Unisys Corp. */
  486. #define  WAVE_FORMAT_UNISYS_NAP_16K             0x0173 /* Unisys Corp. */
  487. #define  WAVE_FORMAT_CREATIVE_ADPCM             0x0200 /* Creative Labs, Inc */
  488. #define  WAVE_FORMAT_CREATIVE_FASTSPEECH8       0x0202 /* Creative Labs, Inc */
  489. #define  WAVE_FORMAT_CREATIVE_FASTSPEECH10      0x0203 /* Creative Labs, Inc */
  490. #define  WAVE_FORMAT_UHER_ADPCM                 0x0210 /* UHER informatic GmbH */
  491. #define  WAVE_FORMAT_QUARTERDECK                0x0220 /* Quarterdeck Corporation */
  492. #define  WAVE_FORMAT_ILINK_VC                   0x0230 /* I-link Worldwide */
  493. #define  WAVE_FORMAT_RAW_SPORT                  0x0240 /* Aureal Semiconductor */
  494. #define  WAVE_FORMAT_ESST_AC3                   0x0241 /* ESS Technology, Inc. */
  495. #define  WAVE_FORMAT_IPI_HSX                    0x0250 /* Interactive Products, Inc. */
  496. #define  WAVE_FORMAT_IPI_RPELP                  0x0251 /* Interactive Products, Inc. */
  497. #define  WAVE_FORMAT_CS2                        0x0260 /* Consistent Software */
  498. #define  WAVE_FORMAT_SONY_SCX                   0x0270 /* Sony Corp. */
  499. #define  WAVE_FORMAT_FM_TOWNS_SND               0x0300 /* Fujitsu Corp. */
  500. #define  WAVE_FORMAT_BTV_DIGITAL                0x0400 /* Brooktree Corporation */
  501. #define  WAVE_FORMAT_QDESIGN_MUSIC              0x0450 /* QDesign Corporation */
  502. #define  WAVE_FORMAT_VME_VMPCM                  0x0680 /* AT&T Labs, Inc. */
  503. #define  WAVE_FORMAT_TPC                        0x0681 /* AT&T Labs, Inc. */
  504. #define  WAVE_FORMAT_OLIGSM                     0x1000 /* Ing C. Olivetti & C., S.p.A. */
  505. #define  WAVE_FORMAT_OLIADPCM                   0x1001 /* Ing C. Olivetti & C., S.p.A. */
  506. #define  WAVE_FORMAT_OLICELP                    0x1002 /* Ing C. Olivetti & C., S.p.A. */
  507. #define  WAVE_FORMAT_OLISBC                     0x1003 /* Ing C. Olivetti & C., S.p.A. */
  508. #define  WAVE_FORMAT_OLIOPR                     0x1004 /* Ing C. Olivetti & C., S.p.A. */
  509. #define  WAVE_FORMAT_LH_CODEC                   0x1100 /* Lernout & Hauspie */
  510. #define  WAVE_FORMAT_NORRIS                     0x1400 /* Norris Communications, Inc. */
  511. #define  WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS    0x1500 /* AT&T Labs, Inc. */
  512. #define  WAVE_FORMAT_DVM                        0x2000 /* FAST Multimedia AG */
  513. #if !defined(WAVE_FORMAT_EXTENSIBLE)
  514. #define  WAVE_FORMAT_EXTENSIBLE                 0xFFFE /* Microsoft */
  515. #endif // !defined(WAVE_FORMAT_EXTENSIBLE)
  516. //
  517. //  the WAVE_FORMAT_DEVELOPMENT format tag can be used during the
  518. //  development phase of a new wave format.  Before shipping, you MUST
  519. //  acquire an official format tag from Microsoft.
  520. //
  521. #define WAVE_FORMAT_DEVELOPMENT         (0xFFFF)
  522. #endif /* NONEWWAVE */
  523. #ifndef WAVE_FORMAT_PCM
  524. /* general waveform format structure (information common to all formats) */
  525. typedef struct waveformat_tag {
  526.     WORD    wFormatTag;        /* format type */
  527.     WORD    nChannels;         /* number of channels (i.e. mono, stereo...) */
  528.     DWORD   nSamplesPerSec;    /* sample rate */
  529.     DWORD   nAvgBytesPerSec;   /* for buffer estimation */
  530.     WORD    nBlockAlign;       /* block size of data */
  531. } WAVEFORMAT;
  532. typedef WAVEFORMAT       *PWAVEFORMAT;
  533. typedef WAVEFORMAT NEAR *NPWAVEFORMAT;
  534. typedef WAVEFORMAT FAR  *LPWAVEFORMAT;
  535. /* flags for wFormatTag field of WAVEFORMAT */
  536. #define WAVE_FORMAT_PCM     1
  537. /* specific waveform format structure for PCM data */
  538. typedef struct pcmwaveformat_tag {
  539.     WAVEFORMAT  wf;
  540.     WORD        wBitsPerSample;
  541. } PCMWAVEFORMAT;
  542. typedef PCMWAVEFORMAT       *PPCMWAVEFORMAT;
  543. typedef PCMWAVEFORMAT NEAR *NPPCMWAVEFORMAT;
  544. typedef PCMWAVEFORMAT FAR  *LPPCMWAVEFORMAT;
  545. #endif /* WAVE_FORMAT_PCM */
  546. /* general extended waveform format structure
  547.    Use this for all NON PCM formats
  548.    (information common to all formats)
  549. */
  550. #ifndef _WAVEFORMATEX_
  551. #define _WAVEFORMATEX_
  552. typedef struct tWAVEFORMATEX
  553. {
  554.     WORD    wFormatTag;        /* format type */
  555.     WORD    nChannels;         /* number of channels (i.e. mono, stereo...) */
  556.     DWORD   nSamplesPerSec;    /* sample rate */
  557.     DWORD   nAvgBytesPerSec;   /* for buffer estimation */
  558.     WORD    nBlockAlign;       /* block size of data */
  559.     WORD    wBitsPerSample;    /* Number of bits per sample of mono data */
  560.     WORD    cbSize;            /* The count in bytes of the size of
  561.                                     extra information (after cbSize) */
  562. } WAVEFORMATEX;
  563. typedef WAVEFORMATEX       *PWAVEFORMATEX;
  564. typedef WAVEFORMATEX NEAR *NPWAVEFORMATEX;
  565. typedef WAVEFORMATEX FAR  *LPWAVEFORMATEX;
  566. #endif /* _WAVEFORMATEX_ */
  567. #ifdef GUID_DEFINED
  568. #ifndef _WAVEFORMATEXTENSIBLE_
  569. #define _WAVEFORMATEXTENSIBLE_
  570. typedef struct {
  571.     WAVEFORMATEX    Format;
  572.     union {
  573.         WORD wValidBitsPerSample;       /* bits of precision  */
  574.         WORD wSamplesPerBlock;          /* valid if wBitsPerSample==0 */
  575.         WORD wReserved;                 /* If neither applies, set to zero. */
  576.     } Samples;
  577.     DWORD           dwChannelMask;      /* which channels are */
  578.                                         /* present in stream  */
  579.     GUID            SubFormat;
  580. } WAVEFORMATEXTENSIBLE, *PWAVEFORMATEXTENSIBLE;
  581. #endif // !_WAVEFORMATEXTENSIBLE_
  582. //
  583. //  Extended PCM waveform format structure based on WAVEFORMATEXTENSIBLE.
  584. //  Use this for multiple channel and hi-resolution PCM data
  585. //
  586. typedef WAVEFORMATEXTENSIBLE    WAVEFORMATPCMEX; /* Format.cbSize = 22 */
  587. typedef WAVEFORMATPCMEX       *PWAVEFORMATPCMEX;
  588. typedef WAVEFORMATPCMEX NEAR *NPWAVEFORMATPCMEX;
  589. typedef WAVEFORMATPCMEX FAR  *LPWAVEFORMATPCMEX;
  590. //
  591. //  Extended format structure using IEEE Float data and based
  592. //  on WAVEFORMATEXTENSIBLE.  Use this for multiple channel
  593. //  and hi-resolution PCM data in IEEE floating point format.
  594. //
  595. typedef WAVEFORMATEXTENSIBLE          WAVEFORMATIEEEFLOATEX; /* Format.cbSize = 22 */
  596. typedef WAVEFORMATIEEEFLOATEX       *PWAVEFORMATIEEEFLOATEX;
  597. typedef WAVEFORMATIEEEFLOATEX NEAR *NPWAVEFORMATIEEEFLOATEX;
  598. typedef WAVEFORMATIEEEFLOATEX FAR  *LPWAVEFORMATIEEEFLOATEX;
  599. #endif // GUID_DEFINED
  600. #ifndef _SPEAKER_POSITIONS_
  601. #define _SPEAKER_POSITIONS_
  602. // Speaker Positions for dwChannelMask in WAVEFORMATEXTENSIBLE:
  603. #define SPEAKER_FRONT_LEFT              0x1
  604. #define SPEAKER_FRONT_RIGHT             0x2
  605. #define SPEAKER_FRONT_CENTER            0x4
  606. #define SPEAKER_LOW_FREQUENCY           0x8
  607. #define SPEAKER_BACK_LEFT               0x10
  608. #define SPEAKER_BACK_RIGHT              0x20
  609. #define SPEAKER_FRONT_LEFT_OF_CENTER    0x40
  610. #define SPEAKER_FRONT_RIGHT_OF_CENTER   0x80
  611. #define SPEAKER_BACK_CENTER             0x100
  612. #define SPEAKER_SIDE_LEFT               0x200
  613. #define SPEAKER_SIDE_RIGHT              0x400
  614. #define SPEAKER_TOP_CENTER              0x800
  615. #define SPEAKER_TOP_FRONT_LEFT          0x1000
  616. #define SPEAKER_TOP_FRONT_CENTER        0x2000
  617. #define SPEAKER_TOP_FRONT_RIGHT         0x4000
  618. #define SPEAKER_TOP_BACK_LEFT           0x8000
  619. #define SPEAKER_TOP_BACK_CENTER         0x10000
  620. #define SPEAKER_TOP_BACK_RIGHT          0x20000
  621. // Bit mask locations reserved for future use
  622. #define SPEAKER_RESERVED                0x7FFC0000
  623. // Used to specify that any possible permutation of speaker configurations
  624. #define SPEAKER_ALL                     0x80000000
  625. #endif // _SPEAKER_POSITIONS_
  626. #ifndef NONEWWAVE
  627. /* Define data for MS ADPCM */
  628. typedef struct adpcmcoef_tag {
  629.         short   iCoef1;
  630.         short   iCoef2;
  631. } ADPCMCOEFSET;
  632. typedef ADPCMCOEFSET       *PADPCMCOEFSET;
  633. typedef ADPCMCOEFSET NEAR *NPADPCMCOEFSET;
  634. typedef ADPCMCOEFSET FAR  *LPADPCMCOEFSET;
  635. /*
  636.  *  this pragma disables the warning issued by the Microsoft C compiler
  637.  *  when using a zero size array as place holder when compiling for
  638.  *  C++ or with -W4.
  639.  *
  640.  */
  641. #ifdef _MSC_VER
  642. #pragma warning(disable:4200)
  643. #endif
  644. typedef struct adpcmwaveformat_tag {
  645.         WAVEFORMATEX    wfx;
  646.         WORD            wSamplesPerBlock;
  647.         WORD            wNumCoef;
  648. #if defined( _MSC_VER )        
  649.         ADPCMCOEFSET    aCoef[];
  650. #else
  651.         ADPCMCOEFSET    aCoef[1];
  652. #endif        
  653. } ADPCMWAVEFORMAT;
  654. typedef ADPCMWAVEFORMAT       *PADPCMWAVEFORMAT;
  655. typedef ADPCMWAVEFORMAT NEAR *NPADPCMWAVEFORMAT;
  656. typedef ADPCMWAVEFORMAT FAR  *LPADPCMWAVEFORMAT;
  657. #ifdef _MSC_VER
  658. #pragma warning(default:4200)
  659. #endif
  660. //
  661. //  Microsoft's DRM structure definitions
  662. //
  663. typedef struct drmwaveformat_tag {
  664. WAVEFORMATEX    wfx;
  665. WORD            wReserved;
  666. ULONG           ulContentId;
  667. WAVEFORMATEX    wfxSecure;
  668. } DRMWAVEFORMAT;
  669. typedef DRMWAVEFORMAT       *PDRMWAVEFORMAT;
  670. typedef DRMWAVEFORMAT NEAR *NPDRMWAVEFORMAT;
  671. typedef DRMWAVEFORMAT FAR  *LPDRMWAVEFORMAT;
  672. //
  673. //  Intel's DVI ADPCM structure definitions
  674. //
  675. //      for WAVE_FORMAT_DVI_ADPCM   (0x0011)
  676. //
  677. //
  678. typedef struct dvi_adpcmwaveformat_tag {
  679.         WAVEFORMATEX    wfx;
  680.         WORD            wSamplesPerBlock;
  681. } DVIADPCMWAVEFORMAT;
  682. typedef DVIADPCMWAVEFORMAT       *PDVIADPCMWAVEFORMAT;
  683. typedef DVIADPCMWAVEFORMAT NEAR *NPDVIADPCMWAVEFORMAT;
  684. typedef DVIADPCMWAVEFORMAT FAR  *LPDVIADPCMWAVEFORMAT;
  685. //
  686. //  IMA endorsed ADPCM structure definitions--note that this is exactly
  687. //  the same format as Intel's DVI ADPCM.
  688. //
  689. //      for WAVE_FORMAT_IMA_ADPCM   (0x0011)
  690. //
  691. //
  692. typedef struct ima_adpcmwaveformat_tag {
  693.         WAVEFORMATEX    wfx;
  694.         WORD            wSamplesPerBlock;
  695. } IMAADPCMWAVEFORMAT;
  696. typedef IMAADPCMWAVEFORMAT       *PIMAADPCMWAVEFORMAT;
  697. typedef IMAADPCMWAVEFORMAT NEAR *NPIMAADPCMWAVEFORMAT;
  698. typedef IMAADPCMWAVEFORMAT FAR  *LPIMAADPCMWAVEFORMAT;
  699. /*
  700. //VideoLogic's Media Space ADPCM Structure definitions
  701. // for  WAVE_FORMAT_MEDIASPACE_ADPCM    (0x0012)
  702. //
  703. //
  704. */
  705. typedef struct mediaspace_adpcmwaveformat_tag {
  706.         WAVEFORMATEX    wfx;
  707.         WORD    wRevision;
  708. } MEDIASPACEADPCMWAVEFORMAT;
  709. typedef MEDIASPACEADPCMWAVEFORMAT           *PMEDIASPACEADPCMWAVEFORMAT;
  710. typedef MEDIASPACEADPCMWAVEFORMAT NEAR     *NPMEDIASPACEADPCMWAVEFORMAT;
  711. typedef MEDIASPACEADPCMWAVEFORMAT FAR      *LPMEDIASPACEADPCMWAVEFORMAT;
  712. //
  713. //  Sierra Semiconductor
  714. //
  715. //      for WAVE_FORMAT_SIERRA_ADPCM   (0x0013)
  716. //
  717. //
  718. typedef struct sierra_adpcmwaveformat_tag {
  719.         WAVEFORMATEX    wfx;
  720.         WORD            wRevision;
  721. } SIERRAADPCMWAVEFORMAT;
  722. typedef SIERRAADPCMWAVEFORMAT   *PSIERRAADPCMWAVEFORMAT;
  723. typedef SIERRAADPCMWAVEFORMAT NEAR      *NPSIERRAADPCMWAVEFORMAT;
  724. typedef SIERRAADPCMWAVEFORMAT FAR       *LPSIERRAADPCMWAVEFORMAT;
  725. //
  726. //  Antex Electronics  structure definitions
  727. //
  728. //      for WAVE_FORMAT_G723_ADPCM   (0x0014)
  729. //
  730. //
  731. typedef struct g723_adpcmwaveformat_tag {
  732.         WAVEFORMATEX    wfx;
  733.         WORD            cbExtraSize;
  734.         WORD            nAuxBlockSize;
  735. } G723_ADPCMWAVEFORMAT;
  736. typedef G723_ADPCMWAVEFORMAT *PG723_ADPCMWAVEFORMAT;
  737. typedef G723_ADPCMWAVEFORMAT NEAR *NPG723_ADPCMWAVEFORMAT;
  738. typedef G723_ADPCMWAVEFORMAT FAR  *LPG723_ADPCMWAVEFORMAT;
  739. //
  740. //  DSP Solutions (formerly DIGISPEECH) structure definitions
  741. //
  742. //      for WAVE_FORMAT_DIGISTD   (0x0015)
  743. //
  744. //
  745. typedef struct digistdwaveformat_tag {
  746.         WAVEFORMATEX    wfx;
  747. } DIGISTDWAVEFORMAT;
  748. typedef DIGISTDWAVEFORMAT       *PDIGISTDWAVEFORMAT;
  749. typedef DIGISTDWAVEFORMAT NEAR *NPDIGISTDWAVEFORMAT;
  750. typedef DIGISTDWAVEFORMAT FAR  *LPDIGISTDWAVEFORMAT;
  751. //
  752. //  DSP Solutions (formerly DIGISPEECH) structure definitions
  753. //
  754. //      for WAVE_FORMAT_DIGIFIX   (0x0016)
  755. //
  756. //
  757. typedef struct digifixwaveformat_tag {
  758.         WAVEFORMATEX    wfx;
  759. } DIGIFIXWAVEFORMAT;
  760. typedef DIGIFIXWAVEFORMAT       *PDIGIFIXWAVEFORMAT;
  761. typedef DIGIFIXWAVEFORMAT NEAR *NPDIGIFIXWAVEFORMAT;
  762. typedef DIGIFIXWAVEFORMAT FAR  *LPDIGIFIXWAVEFORMAT;
  763. //
  764. //   Dialogic Corporation
  765. // WAVEFORMAT_DIALOGIC_OKI_ADPCM   (0x0017)
  766. //
  767. typedef struct creative_fastspeechformat_tag{
  768.         WAVEFORMATEX    ewf;
  769. }DIALOGICOKIADPCMWAVEFORMAT;
  770. typedef DIALOGICOKIADPCMWAVEFORMAT       *PDIALOGICOKIADPCMWAVEFORMAT;
  771. typedef DIALOGICOKIADPCMWAVEFORMAT NEAR *NPDIALOGICOKIADPCMWAVEFORMAT;
  772. typedef DIALOGICOKIADPCMWAVEFORMAT FAR  *LPDIALOGICOKIADPCMWAVEFORMAT;
  773. //
  774. //  Yamaha Compression's ADPCM structure definitions
  775. //
  776. //      for WAVE_FORMAT_YAMAHA_ADPCM   (0x0020)
  777. //
  778. //
  779. typedef struct yamaha_adpmcwaveformat_tag {
  780.         WAVEFORMATEX    wfx;
  781. } YAMAHA_ADPCMWAVEFORMAT;
  782. typedef YAMAHA_ADPCMWAVEFORMAT *PYAMAHA_ADPCMWAVEFORMAT;
  783. typedef YAMAHA_ADPCMWAVEFORMAT NEAR *NPYAMAHA_ADPCMWAVEFORMAT;
  784. typedef YAMAHA_ADPCMWAVEFORMAT FAR  *LPYAMAHA_ADPCMWAVEFORMAT;
  785. //
  786. //  Speech Compression's Sonarc structure definitions
  787. //
  788. //      for WAVE_FORMAT_SONARC   (0x0021)
  789. //
  790. //
  791. typedef struct sonarcwaveformat_tag {
  792.         WAVEFORMATEX    wfx;
  793.         WORD            wCompType;
  794. } SONARCWAVEFORMAT;
  795. typedef SONARCWAVEFORMAT       *PSONARCWAVEFORMAT;
  796. typedef SONARCWAVEFORMAT NEAR *NPSONARCWAVEFORMAT;
  797. typedef SONARCWAVEFORMAT FAR  *LPSONARCWAVEFORMAT;
  798. //
  799. //  DSP Groups's TRUESPEECH structure definitions
  800. //
  801. //      for WAVE_FORMAT_DSPGROUP_TRUESPEECH   (0x0022)
  802. //
  803. //
  804. typedef struct truespeechwaveformat_tag {
  805.         WAVEFORMATEX    wfx;
  806.         WORD            wRevision;
  807.         WORD            nSamplesPerBlock;
  808.         BYTE            abReserved[28];
  809. } TRUESPEECHWAVEFORMAT;
  810. typedef TRUESPEECHWAVEFORMAT       *PTRUESPEECHWAVEFORMAT;
  811. typedef TRUESPEECHWAVEFORMAT NEAR *NPTRUESPEECHWAVEFORMAT;
  812. typedef TRUESPEECHWAVEFORMAT FAR  *LPTRUESPEECHWAVEFORMAT;
  813. //
  814. //  Echo Speech Corp structure definitions
  815. //
  816. //      for WAVE_FORMAT_ECHOSC1   (0x0023)
  817. //
  818. //
  819. typedef struct echosc1waveformat_tag {
  820.         WAVEFORMATEX    wfx;
  821. } ECHOSC1WAVEFORMAT;
  822. typedef ECHOSC1WAVEFORMAT       *PECHOSC1WAVEFORMAT;
  823. typedef ECHOSC1WAVEFORMAT NEAR *NPECHOSC1WAVEFORMAT;
  824. typedef ECHOSC1WAVEFORMAT FAR  *LPECHOSC1WAVEFORMAT;
  825. //
  826. //  Audiofile Inc.structure definitions
  827. //
  828. //      for WAVE_FORMAT_AUDIOFILE_AF36   (0x0024)
  829. //
  830. //
  831. typedef struct audiofile_af36waveformat_tag {
  832.         WAVEFORMATEX    wfx;
  833. } AUDIOFILE_AF36WAVEFORMAT;
  834. typedef AUDIOFILE_AF36WAVEFORMAT       *PAUDIOFILE_AF36WAVEFORMAT;
  835. typedef AUDIOFILE_AF36WAVEFORMAT NEAR *NPAUDIOFILE_AF36WAVEFORMAT;
  836. typedef AUDIOFILE_AF36WAVEFORMAT FAR  *LPAUDIOFILE_AF36WAVEFORMAT;
  837. //
  838. //  Audio Processing Technology structure definitions
  839. //
  840. //      for WAVE_FORMAT_APTX   (0x0025)
  841. //
  842. //
  843. typedef struct aptxwaveformat_tag {
  844.         WAVEFORMATEX    wfx;
  845. } APTXWAVEFORMAT;
  846. typedef APTXWAVEFORMAT       *PAPTXWAVEFORMAT;
  847. typedef APTXWAVEFORMAT NEAR *NPAPTXWAVEFORMAT;
  848. typedef APTXWAVEFORMAT FAR  *LPAPTXWAVEFORMAT;
  849. //
  850. //  Audiofile Inc.structure definitions
  851. //
  852. //      for WAVE_FORMAT_AUDIOFILE_AF10   (0x0026)
  853. //
  854. //
  855. typedef struct audiofile_af10waveformat_tag {
  856.         WAVEFORMATEX    wfx;
  857. } AUDIOFILE_AF10WAVEFORMAT;
  858. typedef AUDIOFILE_AF10WAVEFORMAT       *PAUDIOFILE_AF10WAVEFORMAT;
  859. typedef AUDIOFILE_AF10WAVEFORMAT NEAR *NPAUDIOFILE_AF10WAVEFORMAT;
  860. typedef AUDIOFILE_AF10WAVEFORMAT FAR  *LPAUDIOFILE_AF10WAVEFORMAT;
  861. //
  862. /* Dolby's AC-2 wave format structure definition
  863.            WAVE_FORMAT_DOLBY_AC2    (0x0030)*/
  864. //
  865. typedef struct dolbyac2waveformat_tag {
  866.         WAVEFORMATEX    wfx;
  867.         WORD            nAuxBitsCode;
  868. } DOLBYAC2WAVEFORMAT;
  869. /*Microsoft's */
  870. // WAVE_FORMAT_GSM 610           0x0031
  871. //
  872. typedef struct gsm610waveformat_tag {
  873. WAVEFORMATEX    wfx;
  874. WORD                    wSamplesPerBlock;
  875. } GSM610WAVEFORMAT;
  876. typedef GSM610WAVEFORMAT *PGSM610WAVEFORMAT;
  877. typedef GSM610WAVEFORMAT NEAR    *NPGSM610WAVEFORMAT;
  878. typedef GSM610WAVEFORMAT FAR     *LPGSM610WAVEFORMAT;
  879. //
  880. //      Antex Electronics Corp
  881. //
  882. //      for WAVE_FORMAT_ADPCME                  (0x0033)
  883. //
  884. //
  885. typedef struct adpcmewaveformat_tag {
  886.         WAVEFORMATEX    wfx;
  887.         WORD            wSamplesPerBlock;
  888. } ADPCMEWAVEFORMAT;
  889. typedef ADPCMEWAVEFORMAT                *PADPCMEWAVEFORMAT;
  890. typedef ADPCMEWAVEFORMAT NEAR   *NPADPCMEWAVEFORMAT;
  891. typedef ADPCMEWAVEFORMAT FAR    *LPADPCMEWAVEFORMAT;
  892. /*       Control Resources Limited */
  893. // WAVE_FORMAT_CONTROL_RES_VQLPC                 0x0034
  894. //
  895. typedef struct contres_vqlpcwaveformat_tag {
  896. WAVEFORMATEX    wfx;
  897. WORD                    wSamplesPerBlock;
  898. } CONTRESVQLPCWAVEFORMAT;
  899. typedef CONTRESVQLPCWAVEFORMAT *PCONTRESVQLPCWAVEFORMAT;
  900. typedef CONTRESVQLPCWAVEFORMAT NEAR      *NPCONTRESVQLPCWAVEFORMAT;
  901. typedef CONTRESVQLPCWAVEFORMAT FAR       *LPCONTRESVQLPCWAVEFORMAT;
  902. //
  903. //
  904. //
  905. //      for WAVE_FORMAT_DIGIREAL                   (0x0035)
  906. //
  907. //
  908. typedef struct digirealwaveformat_tag {
  909.         WAVEFORMATEX    wfx;
  910.         WORD            wSamplesPerBlock;
  911. } DIGIREALWAVEFORMAT;
  912. typedef DIGIREALWAVEFORMAT *PDIGIREALWAVEFORMAT;
  913. typedef DIGIREALWAVEFORMAT NEAR *NPDIGIREALWAVEFORMAT;
  914. typedef DIGIREALWAVEFORMAT FAR *LPDIGIREALWAVEFORMAT;
  915. //
  916. //  DSP Solutions
  917. //
  918. //      for WAVE_FORMAT_DIGIADPCM   (0x0036)
  919. //
  920. //
  921. typedef struct digiadpcmmwaveformat_tag {
  922.         WAVEFORMATEX    wfx;
  923.         WORD            wSamplesPerBlock;
  924. } DIGIADPCMWAVEFORMAT;
  925. typedef DIGIADPCMWAVEFORMAT       *PDIGIADPCMWAVEFORMAT;
  926. typedef DIGIADPCMWAVEFORMAT NEAR *NPDIGIADPCMWAVEFORMAT;
  927. typedef DIGIADPCMWAVEFORMAT FAR  *LPDIGIADPCMWAVEFORMAT;
  928. /*       Control Resources Limited */
  929. // WAVE_FORMAT_CONTROL_RES_CR10          0x0037
  930. //
  931. typedef struct contres_cr10waveformat_tag {
  932. WAVEFORMATEX    wfx;
  933. WORD                    wSamplesPerBlock;
  934. } CONTRESCR10WAVEFORMAT;
  935. typedef CONTRESCR10WAVEFORMAT *PCONTRESCR10WAVEFORMAT;
  936. typedef CONTRESCR10WAVEFORMAT NEAR       *NPCONTRESCR10WAVEFORMAT;
  937. typedef CONTRESCR10WAVEFORMAT FAR        *LPCONTRESCR10WAVEFORMAT;
  938. //
  939. //  Natural Microsystems
  940. //
  941. //      for WAVE_FORMAT_NMS_VBXADPCM   (0x0038)
  942. //
  943. //
  944. typedef struct nms_vbxadpcmmwaveformat_tag {
  945.         WAVEFORMATEX    wfx;
  946.         WORD            wSamplesPerBlock;
  947. } NMS_VBXADPCMWAVEFORMAT;
  948. typedef NMS_VBXADPCMWAVEFORMAT       *PNMS_VBXADPCMWAVEFORMAT;
  949. typedef NMS_VBXADPCMWAVEFORMAT NEAR *NPNMS_VBXADPCMWAVEFORMAT;
  950. typedef NMS_VBXADPCMWAVEFORMAT FAR  *LPNMS_VBXADPCMWAVEFORMAT;
  951. //
  952. //  Antex Electronics  structure definitions
  953. //
  954. //      for WAVE_FORMAT_G721_ADPCM   (0x0040)
  955. //
  956. //
  957. typedef struct g721_adpcmwaveformat_tag {
  958.         WAVEFORMATEX    wfx;
  959.         WORD            nAuxBlockSize;
  960. } G721_ADPCMWAVEFORMAT;
  961. typedef G721_ADPCMWAVEFORMAT *PG721_ADPCMWAVEFORMAT;
  962. typedef G721_ADPCMWAVEFORMAT NEAR *NPG721_ADPCMWAVEFORMAT;
  963. typedef G721_ADPCMWAVEFORMAT FAR  *LPG721_ADPCMWAVEFORMAT;
  964. //
  965. //
  966. // Microsoft MPEG audio WAV definition
  967. //
  968. /*  MPEG-1 audio wave format (audio layer only).   (0x0050)   */
  969. typedef struct mpeg1waveformat_tag {
  970.     WAVEFORMATEX    wfx;
  971.     WORD            fwHeadLayer;
  972.     DWORD           dwHeadBitrate;
  973.     WORD            fwHeadMode;
  974.     WORD            fwHeadModeExt;
  975.     WORD            wHeadEmphasis;
  976.     WORD            fwHeadFlags;
  977.     DWORD           dwPTSLow;
  978.     DWORD           dwPTSHigh;
  979. } MPEG1WAVEFORMAT;
  980. typedef MPEG1WAVEFORMAT                 *PMPEG1WAVEFORMAT;
  981. typedef MPEG1WAVEFORMAT NEAR           *NPMPEG1WAVEFORMAT;
  982. typedef MPEG1WAVEFORMAT FAR            *LPMPEG1WAVEFORMAT;
  983. #define ACM_MPEG_LAYER1             (0x0001)
  984. #define ACM_MPEG_LAYER2             (0x0002)
  985. #define ACM_MPEG_LAYER3             (0x0004)
  986. #define ACM_MPEG_STEREO             (0x0001)
  987. #define ACM_MPEG_JOINTSTEREO        (0x0002)
  988. #define ACM_MPEG_DUALCHANNEL        (0x0004)
  989. #define ACM_MPEG_SINGLECHANNEL      (0x0008)
  990. #define ACM_MPEG_PRIVATEBIT         (0x0001)
  991. #define ACM_MPEG_COPYRIGHT          (0x0002)
  992. #define ACM_MPEG_ORIGINALHOME       (0x0004)
  993. #define ACM_MPEG_PROTECTIONBIT      (0x0008)
  994. #define ACM_MPEG_ID_MPEG1           (0x0010)
  995. //
  996. // MPEG Layer3 WAVEFORMATEX structure
  997. // for WAVE_FORMAT_MPEGLAYER3 (0x0055)
  998. //
  999. #define MPEGLAYER3_WFX_EXTRA_BYTES   12
  1000. // WAVE_FORMAT_MPEGLAYER3 format sructure
  1001. //
  1002. typedef struct mpeglayer3waveformat_tag {
  1003.   WAVEFORMATEX  wfx;
  1004.   WORD          wID;
  1005.   DWORD         fdwFlags;
  1006.   WORD          nBlockSize;
  1007.   WORD          nFramesPerBlock;
  1008.   WORD          nCodecDelay;
  1009. } MPEGLAYER3WAVEFORMAT;
  1010. typedef MPEGLAYER3WAVEFORMAT          *PMPEGLAYER3WAVEFORMAT;
  1011. typedef MPEGLAYER3WAVEFORMAT NEAR    *NPMPEGLAYER3WAVEFORMAT;
  1012. typedef MPEGLAYER3WAVEFORMAT FAR     *LPMPEGLAYER3WAVEFORMAT;
  1013. //==========================================================================;
  1014. #define MPEGLAYER3_ID_UNKNOWN            0
  1015. #define MPEGLAYER3_ID_MPEG               1
  1016. #define MPEGLAYER3_ID_CONSTANTFRAMESIZE  2
  1017. #define MPEGLAYER3_FLAG_PADDING_ISO      0x00000000
  1018. #define MPEGLAYER3_FLAG_PADDING_ON       0x00000001
  1019. #define MPEGLAYER3_FLAG_PADDING_OFF      0x00000002
  1020. //
  1021. //  Creative's ADPCM structure definitions
  1022. //
  1023. //      for WAVE_FORMAT_CREATIVE_ADPCM   (0x0200)
  1024. //
  1025. //
  1026. typedef struct creative_adpcmwaveformat_tag {
  1027.         WAVEFORMATEX    wfx;
  1028.         WORD            wRevision;
  1029. } CREATIVEADPCMWAVEFORMAT;
  1030. typedef CREATIVEADPCMWAVEFORMAT       *PCREATIVEADPCMWAVEFORMAT;
  1031. typedef CREATIVEADPCMWAVEFORMAT NEAR *NPCREATIVEADPCMWAVEFORMAT;
  1032. typedef CREATIVEADPCMWAVEFORMAT FAR  *LPCREATIVEADPCMWAVEFORMAT;
  1033. //
  1034. //    Creative FASTSPEECH
  1035. // WAVEFORMAT_CREATIVE_FASTSPEECH8   (0x0202)
  1036. //
  1037. typedef struct creative_fastspeech8format_tag {
  1038.         WAVEFORMATEX    wfx;
  1039.         WORD wRevision;
  1040. } CREATIVEFASTSPEECH8WAVEFORMAT;
  1041. typedef CREATIVEFASTSPEECH8WAVEFORMAT       *PCREATIVEFASTSPEECH8WAVEFORMAT;
  1042. typedef CREATIVEFASTSPEECH8WAVEFORMAT NEAR *NPCREATIVEFASTSPEECH8WAVEFORMAT;
  1043. typedef CREATIVEFASTSPEECH8WAVEFORMAT FAR  *LPCREATIVEFASTSPEECH8WAVEFORMAT;
  1044. //
  1045. //    Creative FASTSPEECH
  1046. // WAVEFORMAT_CREATIVE_FASTSPEECH10   (0x0203)
  1047. //
  1048. typedef struct creative_fastspeech10format_tag {
  1049.         WAVEFORMATEX    wfx;
  1050.         WORD wRevision;
  1051. } CREATIVEFASTSPEECH10WAVEFORMAT;
  1052. typedef CREATIVEFASTSPEECH10WAVEFORMAT       *PCREATIVEFASTSPEECH10WAVEFORMAT;
  1053. typedef CREATIVEFASTSPEECH10WAVEFORMAT NEAR *NPCREATIVEFASTSPEECH10WAVEFORMAT;
  1054. typedef CREATIVEFASTSPEECH10WAVEFORMAT FAR  *LPCREATIVEFASTSPEECH10WAVEFORMAT;
  1055. //
  1056. //  Fujitsu FM Towns 'SND' structure
  1057. //
  1058. //      for WAVE_FORMAT_FMMTOWNS_SND   (0x0300)
  1059. //
  1060. //
  1061. typedef struct fmtowns_snd_waveformat_tag {
  1062.         WAVEFORMATEX    wfx;
  1063.         WORD            wRevision;
  1064. } FMTOWNS_SND_WAVEFORMAT;
  1065. typedef FMTOWNS_SND_WAVEFORMAT       *PFMTOWNS_SND_WAVEFORMAT;
  1066. typedef FMTOWNS_SND_WAVEFORMAT NEAR *NPFMTOWNS_SND_WAVEFORMAT;
  1067. typedef FMTOWNS_SND_WAVEFORMAT FAR  *LPFMTOWNS_SND_WAVEFORMAT;
  1068. //
  1069. //  Olivetti structure
  1070. //
  1071. //      for WAVE_FORMAT_OLIGSM   (0x1000)
  1072. //
  1073. //
  1074. typedef struct oligsmwaveformat_tag {
  1075.         WAVEFORMATEX    wfx;
  1076. } OLIGSMWAVEFORMAT;
  1077. typedef OLIGSMWAVEFORMAT     *POLIGSMWAVEFORMAT;
  1078. typedef OLIGSMWAVEFORMAT NEAR *NPOLIGSMWAVEFORMAT;
  1079. typedef OLIGSMWAVEFORMAT  FAR  *LPOLIGSMWAVEFORMAT;
  1080. //
  1081. //  Olivetti structure
  1082. //
  1083. //      for WAVE_FORMAT_OLIADPCM   (0x1001)
  1084. //
  1085. //
  1086. typedef struct oliadpcmwaveformat_tag {
  1087.         WAVEFORMATEX    wfx;
  1088. } OLIADPCMWAVEFORMAT;
  1089. typedef OLIADPCMWAVEFORMAT     *POLIADPCMWAVEFORMAT;
  1090. typedef OLIADPCMWAVEFORMAT NEAR *NPOLIADPCMWAVEFORMAT ;
  1091. typedef OLIADPCMWAVEFORMAT  FAR  *LPOLIADPCMWAVEFORMAT;
  1092. //
  1093. //  Olivetti structure
  1094. //
  1095. //      for WAVE_FORMAT_OLICELP   (0x1002)
  1096. //
  1097. //
  1098. typedef struct olicelpwaveformat_tag {
  1099.         WAVEFORMATEX    wfx;
  1100. } OLICELPWAVEFORMAT;
  1101. typedef OLICELPWAVEFORMAT     *POLICELPWAVEFORMAT;
  1102. typedef OLICELPWAVEFORMAT NEAR *NPOLICELPWAVEFORMAT ;
  1103. typedef OLICELPWAVEFORMAT  FAR  *LPOLICELPWAVEFORMAT;
  1104. //
  1105. //  Olivetti structure
  1106. //
  1107. //      for WAVE_FORMAT_OLISBC   (0x1003)
  1108. //
  1109. //
  1110. typedef struct olisbcwaveformat_tag {
  1111.         WAVEFORMATEX    wfx;
  1112. } OLISBCWAVEFORMAT;
  1113. typedef OLISBCWAVEFORMAT     *POLISBCWAVEFORMAT;
  1114. typedef OLISBCWAVEFORMAT NEAR *NPOLISBCWAVEFORMAT ;
  1115. typedef OLISBCWAVEFORMAT  FAR  *LPOLISBCWAVEFORMAT;
  1116. //
  1117. //  Olivetti structure
  1118. //
  1119. //      for WAVE_FORMAT_OLIOPR   (0x1004)
  1120. //
  1121. //
  1122. typedef struct olioprwaveformat_tag {
  1123.         WAVEFORMATEX    wfx;
  1124. } OLIOPRWAVEFORMAT;
  1125. typedef OLIOPRWAVEFORMAT     *POLIOPRWAVEFORMAT;
  1126. typedef OLIOPRWAVEFORMAT NEAR *NPOLIOPRWAVEFORMAT ;
  1127. typedef OLIOPRWAVEFORMAT  FAR  *LPOLIOPRWAVEFORMAT;
  1128. //
  1129. //  Crystal Semiconductor IMA ADPCM format
  1130. //
  1131. //      for WAVE_FORMAT_CS_IMAADPCM   (0x0039)
  1132. //
  1133. //
  1134. typedef struct csimaadpcmwaveformat_tag {
  1135.         WAVEFORMATEX    wfx;
  1136. } CSIMAADPCMWAVEFORMAT;
  1137. typedef CSIMAADPCMWAVEFORMAT     *PCSIMAADPCMWAVEFORMAT;
  1138. typedef CSIMAADPCMWAVEFORMAT NEAR *NPCSIMAADPCMWAVEFORMAT ;
  1139. typedef CSIMAADPCMWAVEFORMAT  FAR  *LPCSIMAADPCMWAVEFORMAT;
  1140. //==========================================================================;
  1141. //
  1142. //  ACM Wave Filters
  1143. //
  1144. //
  1145. //==========================================================================;
  1146. #ifndef _ACM_WAVEFILTER
  1147. #define _ACM_WAVEFILTER
  1148. #define WAVE_FILTER_UNKNOWN         0x0000
  1149. #define WAVE_FILTER_DEVELOPMENT    (0xFFFF)
  1150. typedef struct wavefilter_tag {
  1151.     DWORD   cbStruct;           /* Size of the filter in bytes */
  1152.     DWORD   dwFilterTag;        /* filter type */
  1153.     DWORD   fdwFilter;          /* Flags for the filter (Universal Dfns) */
  1154.     DWORD   dwReserved[5];      /* Reserved for system use */
  1155. } WAVEFILTER;
  1156. typedef WAVEFILTER       *PWAVEFILTER;
  1157. typedef WAVEFILTER NEAR *NPWAVEFILTER;
  1158. typedef WAVEFILTER FAR  *LPWAVEFILTER;
  1159. #endif  /* _ACM_WAVEFILTER */
  1160. #ifndef WAVE_FILTER_VOLUME
  1161. #define WAVE_FILTER_VOLUME      0x0001
  1162. typedef struct wavefilter_volume_tag {
  1163.         WAVEFILTER      wfltr;
  1164.         DWORD           dwVolume;
  1165. } VOLUMEWAVEFILTER;
  1166. typedef VOLUMEWAVEFILTER       *PVOLUMEWAVEFILTER;
  1167. typedef VOLUMEWAVEFILTER NEAR *NPVOLUMEWAVEFILTER;
  1168. typedef VOLUMEWAVEFILTER FAR  *LPVOLUMEWAVEFILTER;
  1169. #endif  /* WAVE_FILTER_VOLUME */
  1170. #ifndef WAVE_FILTER_ECHO
  1171. #define WAVE_FILTER_ECHO        0x0002
  1172. typedef struct wavefilter_echo_tag {
  1173.         WAVEFILTER      wfltr;
  1174.         DWORD           dwVolume;
  1175.         DWORD           dwDelay;
  1176. } ECHOWAVEFILTER;
  1177. typedef ECHOWAVEFILTER       *PECHOWAVEFILTER;
  1178. typedef ECHOWAVEFILTER NEAR *NPECHOWAVEFILTER;
  1179. typedef ECHOWAVEFILTER FAR  *LPECHOWAVEFILTER;
  1180. #endif  /* WAVEFILTER_ECHO */
  1181. /* ------------------------------------------------------------------------------ */
  1182. //
  1183. // New RIFF WAVE Chunks
  1184. //
  1185. #define RIFFWAVE_inst   mmioFOURCC('i','n','s','t')
  1186. struct tag_s_RIFFWAVE_inst {
  1187.     BYTE    bUnshiftedNote;
  1188.     char    chFineTune;
  1189.     char    chGain;
  1190.     BYTE    bLowNote;
  1191.     BYTE    bHighNote;
  1192.     BYTE    bLowVelocity;
  1193.     BYTE    bHighVelocity;
  1194. };
  1195. typedef struct tag_s_RIFFWAVE_INST s_RIFFWAVE_inst;
  1196. #endif
  1197. /* ------------------------------------------------------------------------------ */
  1198. //
  1199. // New RIFF Forms
  1200. //
  1201. #ifndef NONEWRIFF
  1202. /* RIFF AVI */
  1203. //
  1204. // AVI file format is specified in a seperate file (AVIFMT.H),
  1205. // which is available in the VfW and Win 32 SDK
  1206. //
  1207. /* RIFF CPPO */
  1208. #define RIFFCPPO        mmioFOURCC('C','P','P','O')
  1209. #define RIFFCPPO_objr   mmioFOURCC('o','b','j','r')
  1210. #define RIFFCPPO_obji   mmioFOURCC('o','b','j','i')
  1211. #define RIFFCPPO_clsr   mmioFOURCC('c','l','s','r')
  1212. #define RIFFCPPO_clsi   mmioFOURCC('c','l','s','i')
  1213. #define RIFFCPPO_mbr    mmioFOURCC('m','b','r',' ')
  1214. #define RIFFCPPO_char   mmioFOURCC('c','h','a','r')
  1215. #define RIFFCPPO_byte   mmioFOURCC('b','y','t','e')
  1216. #define RIFFCPPO_int    mmioFOURCC('i','n','t',' ')
  1217. #define RIFFCPPO_word   mmioFOURCC('w','o','r','d')
  1218. #define RIFFCPPO_long   mmioFOURCC('l','o','n','g')
  1219. #define RIFFCPPO_dwrd   mmioFOURCC('d','w','r','d')
  1220. #define RIFFCPPO_flt    mmioFOURCC('f','l','t',' ')
  1221. #define RIFFCPPO_dbl    mmioFOURCC('d','b','l',' ')
  1222. #define RIFFCPPO_str    mmioFOURCC('s','t','r',' ')
  1223. #endif
  1224. /*
  1225. //////////////////////////////////////////////////////////////////////////
  1226. //
  1227. // DIB Compression Defines
  1228. //
  1229. */
  1230. #ifndef BI_BITFIELDS
  1231. #define BI_BITFIELDS    3
  1232. #endif
  1233. #ifndef QUERYDIBSUPPORT
  1234. #define QUERYDIBSUPPORT 3073
  1235. #define QDI_SETDIBITS   0x0001
  1236. #define QDI_GETDIBITS   0x0002
  1237. #define QDI_DIBTOSCREEN 0x0004
  1238. #define QDI_STRETCHDIB  0x0008
  1239. #endif
  1240. #ifndef NOBITMAP
  1241. /* Structure definitions */
  1242. typedef struct tagEXBMINFOHEADER {
  1243.         BITMAPINFOHEADER    bmi;
  1244.         /* extended BITMAPINFOHEADER fields */
  1245.         DWORD   biExtDataOffset;
  1246.         /* Other stuff will go here */
  1247.         /* ... */
  1248.         /* Format-specific information */
  1249.         /* biExtDataOffset points here */
  1250. } EXBMINFOHEADER;
  1251. #endif          //NOBITMAP
  1252. /* New DIB Compression Defines */
  1253. #define BICOMP_IBMULTIMOTION    mmioFOURCC('U', 'L', 'T', 'I')
  1254. #define BICOMP_IBMPHOTOMOTION   mmioFOURCC('P', 'H', 'M', 'O')
  1255. #define BICOMP_CREATIVEYUV      mmioFOURCC('c', 'y', 'u', 'v')
  1256. #ifndef NOJPEGDIB
  1257. /* New DIB Compression Defines */
  1258. #define JPEG_DIB        mmioFOURCC('J','P','E','G')    /* Still image JPEG DIB biCompression */
  1259. #define MJPG_DIB        mmioFOURCC('M','J','P','G')    /* Motion JPEG DIB biCompression     */
  1260. /* JPEGProcess Definitions */
  1261. #define JPEG_PROCESS_BASELINE           0       /* Baseline DCT */
  1262. /* AVI File format extensions */
  1263. #define AVIIF_CONTROLFRAME              0x00000200L     /* This is a control frame */
  1264.     /* JIF Marker byte pairs in JPEG Interchange Format sequence */
  1265. #define JIFMK_SOF0    0xFFC0   /* SOF Huff  - Baseline DCT*/
  1266. #define JIFMK_SOF1    0xFFC1   /* SOF Huff  - Extended sequential DCT*/
  1267. #define JIFMK_SOF2    0xFFC2   /* SOF Huff  - Progressive DCT*/
  1268. #define JIFMK_SOF3    0xFFC3   /* SOF Huff  - Spatial (sequential) lossless*/
  1269. #define JIFMK_SOF5    0xFFC5   /* SOF Huff  - Differential sequential DCT*/
  1270. #define JIFMK_SOF6    0xFFC6   /* SOF Huff  - Differential progressive DCT*/
  1271. #define JIFMK_SOF7    0xFFC7   /* SOF Huff  - Differential spatial*/
  1272. #define JIFMK_JPG     0xFFC8   /* SOF Arith - Reserved for JPEG extensions*/
  1273. #define JIFMK_SOF9    0xFFC9   /* SOF Arith - Extended sequential DCT*/
  1274. #define JIFMK_SOF10   0xFFCA   /* SOF Arith - Progressive DCT*/
  1275. #define JIFMK_SOF11   0xFFCB   /* SOF Arith - Spatial (sequential) lossless*/
  1276. #define JIFMK_SOF13   0xFFCD   /* SOF Arith - Differential sequential DCT*/
  1277. #define JIFMK_SOF14   0xFFCE   /* SOF Arith - Differential progressive DCT*/
  1278. #define JIFMK_SOF15   0xFFCF   /* SOF Arith - Differential spatial*/
  1279. #define JIFMK_DHT     0xFFC4   /* Define Huffman Table(s) */
  1280. #define JIFMK_DAC     0xFFCC   /* Define Arithmetic coding conditioning(s) */
  1281. #define JIFMK_RST0    0xFFD0   /* Restart with modulo 8 count 0 */
  1282. #define JIFMK_RST1    0xFFD1   /* Restart with modulo 8 count 1 */
  1283. #define JIFMK_RST2    0xFFD2   /* Restart with modulo 8 count 2 */
  1284. #define JIFMK_RST3    0xFFD3   /* Restart with modulo 8 count 3 */
  1285. #define JIFMK_RST4    0xFFD4   /* Restart with modulo 8 count 4 */
  1286. #define JIFMK_RST5    0xFFD5   /* Restart with modulo 8 count 5 */
  1287. #define JIFMK_RST6    0xFFD6   /* Restart with modulo 8 count 6 */
  1288. #define JIFMK_RST7    0xFFD7   /* Restart with modulo 8 count 7 */
  1289. #define JIFMK_SOI     0xFFD8   /* Start of Image */
  1290. #define JIFMK_EOI     0xFFD9   /* End of Image */
  1291. #define JIFMK_SOS     0xFFDA   /* Start of Scan */
  1292. #define JIFMK_DQT     0xFFDB   /* Define quantization Table(s) */
  1293. #define JIFMK_DNL     0xFFDC   /* Define Number of Lines */
  1294. #define JIFMK_DRI     0xFFDD   /* Define Restart Interval */
  1295. #define JIFMK_DHP     0xFFDE   /* Define Hierarchical progression */
  1296. #define JIFMK_EXP     0xFFDF   /* Expand Reference Component(s) */
  1297. #define JIFMK_APP0    0xFFE0   /* Application Field 0*/
  1298. #define JIFMK_APP1    0xFFE1   /* Application Field 1*/
  1299. #define JIFMK_APP2    0xFFE2   /* Application Field 2*/
  1300. #define JIFMK_APP3    0xFFE3   /* Application Field 3*/
  1301. #define JIFMK_APP4    0xFFE4   /* Application Field 4*/
  1302. #define JIFMK_APP5    0xFFE5   /* Application Field 5*/
  1303. #define JIFMK_APP6    0xFFE6   /* Application Field 6*/
  1304. #define JIFMK_APP7    0xFFE7   /* Application Field 7*/
  1305. #define JIFMK_JPG0    0xFFF0   /* Reserved for JPEG extensions */
  1306. #define JIFMK_JPG1    0xFFF1   /* Reserved for JPEG extensions */
  1307. #define JIFMK_JPG2    0xFFF2   /* Reserved for JPEG extensions */
  1308. #define JIFMK_JPG3    0xFFF3   /* Reserved for JPEG extensions */
  1309. #define JIFMK_JPG4    0xFFF4   /* Reserved for JPEG extensions */
  1310. #define JIFMK_JPG5    0xFFF5   /* Reserved for JPEG extensions */
  1311. #define JIFMK_JPG6    0xFFF6   /* Reserved for JPEG extensions */
  1312. #define JIFMK_JPG7    0xFFF7   /* Reserved for JPEG extensions */
  1313. #define JIFMK_JPG8    0xFFF8   /* Reserved for JPEG extensions */
  1314. #define JIFMK_JPG9    0xFFF9   /* Reserved for JPEG extensions */
  1315. #define JIFMK_JPG10   0xFFFA   /* Reserved for JPEG extensions */
  1316. #define JIFMK_JPG11   0xFFFB   /* Reserved for JPEG extensions */
  1317. #define JIFMK_JPG12   0xFFFC   /* Reserved for JPEG extensions */
  1318. #define JIFMK_JPG13   0xFFFD   /* Reserved for JPEG extensions */
  1319. #define JIFMK_COM     0xFFFE   /* Comment */
  1320. #define JIFMK_TEM     0xFF01   /* for temp private use arith code */
  1321. #define JIFMK_RES     0xFF02   /* Reserved */
  1322. #define JIFMK_00      0xFF00   /* Zero stuffed byte - entropy data */
  1323. #define JIFMK_FF      0xFFFF   /* Fill byte */
  1324. /* JPEGColorSpaceID Definitions */
  1325. #define JPEG_Y          1       /* Y only component of YCbCr */
  1326. #define JPEG_YCbCr      2       /* YCbCr as define by CCIR 601 */
  1327. #define JPEG_RGB        3       /* 3 component RGB */
  1328. /* Structure definitions */
  1329. typedef struct tagJPEGINFOHEADER {
  1330.     /* compression-specific fields */
  1331.     /* these fields are defined for 'JPEG' and 'MJPG' */
  1332.     DWORD       JPEGSize;
  1333.     DWORD       JPEGProcess;
  1334.     /* Process specific fields */
  1335.     DWORD       JPEGColorSpaceID;
  1336.     DWORD       JPEGBitsPerSample;
  1337.     DWORD       JPEGHSubSampling;
  1338.     DWORD       JPEGVSubSampling;
  1339. } JPEGINFOHEADER;
  1340. #ifdef MJPGDHTSEG_STORAGE
  1341. /* Default DHT Segment */
  1342. MJPGHDTSEG_STORAGE BYTE MJPGDHTSeg[0x1A4] = {
  1343.  /* JPEG DHT Segment for YCrCb omitted from MJPG data */
  1344. 0xFF,0xC4,0x01,0xA2,
  1345. 0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1346. 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x01,0x00,0x03,0x01,0x01,0x01,0x01,
  1347. 0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
  1348. 0x08,0x09,0x0A,0x0B,0x10,0x00,0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,
  1349. 0x00,0x01,0x7D,0x01,0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,
  1350. 0x07,0x22,0x71,0x14,0x32,0x81,0x91,0xA1,0x08,0x23,0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,
  1351. 0x33,0x62,0x72,0x82,0x09,0x0A,0x16,0x17,0x18,0x19,0x1A,0x25,0x26,0x27,0x28,0x29,0x2A,0x34,
  1352. 0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,
  1353. 0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,
  1354. 0x79,0x7A,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,
  1355. 0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,
  1356. 0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,
  1357. 0xDA,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,
  1358. 0xF8,0xF9,0xFA,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,
  1359. 0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,0x61,0x71,
  1360. 0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xA1,0xB1,0xC1,0x09,0x23,0x33,0x52,0xF0,0x15,0x62,
  1361. 0x72,0xD1,0x0A,0x16,0x24,0x34,0xE1,0x25,0xF1,0x17,0x18,0x19,0x1A,0x26,0x27,0x28,0x29,0x2A,
  1362. 0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,
  1363. 0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,
  1364. 0x79,0x7A,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,
  1365. 0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,
  1366. 0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,
  1367. 0xD9,0xDA,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,
  1368. 0xF9,0xFA
  1369. };
  1370. /* End DHT default */
  1371. #endif
  1372. /* End JPEG */
  1373. #endif
  1374. /* ------------------------------------------------------------------------------ */
  1375. //
  1376. // Defined IC types
  1377. //
  1378. #ifndef NONEWIC
  1379. #ifndef ICTYPE_VIDEO
  1380. #define ICTYPE_VIDEO    mmioFOURCC('v', 'i', 'd', 'c')
  1381. #define ICTYPE_AUDIO    mmioFOURCC('a', 'u', 'd', 'c')
  1382. #endif
  1383. #endif
  1384. /*
  1385. //   Misc. FOURCC registration
  1386. */
  1387. /* Sierra Semiconductor: RDSP- Confidential RIFF file format
  1388. //       for the storage and downloading of DSP
  1389. //       code for Audio and communications devices.
  1390. */
  1391. #define FOURCC_RDSP mmioFOURCC('R', 'D', 'S', 'P')
  1392. #ifndef MMNOMIXER
  1393. #define MIXERCONTROL_CONTROLTYPE_SRS_MTS                (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 6)
  1394. #define MIXERCONTROL_CONTROLTYPE_SRS_ONOFF              (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 7)
  1395. #define MIXERCONTROL_CONTROLTYPE_SRS_SYNTHSELECT        (MIXERCONTROL_CONTROLTYPE_BOOLEAN + 8)
  1396. #endif
  1397. #if !defined( RC_INVOKED ) && defined( _MSC_VER )
  1398. #if _MSC_VER <= 800
  1399. #pragma pack(1)
  1400. #else
  1401. #include "poppack.h"    /* Revert to default packing */
  1402. #endif
  1403. #endif  /* RC_INVOKED */
  1404. #ifdef __cplusplus
  1405. }                       /* End of extern "C" { */
  1406. #endif  /* __cplusplus */
  1407. #endif  /* _INC_MMREG */