home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mmoshead.zip / mmioos2.h < prev    next >
Text File  |  1994-02-13  |  31KB  |  773 lines

  1. /***************************************/
  2. /* mmioos2.h -- Multimedia for emx 1.0 */
  3. /*                                     */
  4. /*                                     */
  5. /* Marc E.E. van Woerkom, 2/94         */
  6. /*                                     */
  7. /***************************************/
  8.  
  9.  
  10. /* nested header management */
  11. #ifndef _MMIOOS2_H
  12. #define _MMIOOS2_H
  13.  
  14. /* use 32-bit alignment */
  15. #pragma pack(4)
  16.  
  17.  
  18. /***********/
  19. /* defines */
  20. /***********/
  21.  
  22. #define CODEC_INFO_SIZE                       8
  23. #define CODEC_HW_NAME_SIZE                   32
  24.  
  25. #define CTOC_HF_SEQUENTIAL                   0x00000001L
  26. #define CTOC_HF_MEDSUBTYPE                   0x00000002L
  27. #define CTOC_EFU_UNUSED                      0x00000000L
  28. #define CTOC_EFU_LASTMODTIME                 0x00000001L
  29. #define CTOC_EFU_CODEPAGE                    0x00000002L
  30. #define CTOC_EFU_LANGUAGE                    0x00000003L
  31. #define CTOC_EFU_COMPRESSPARAM0              0x00000005L
  32. #define CTOC_EFU_COMPRESSPARAM1              0x00000006L
  33. #define CTOC_EFU_COMPRESSPARAM2              0x00000007L
  34. #define CTOC_EFU_COMPRESSPARAM3              0x00000008L
  35. #define CTOC_EFU_COMPRESSPARAM4              0x00000009L
  36. #define CTOC_EFU_COMPRESSPARAM5              0x0000000AL
  37. #define CTOC_EFU_COMPRESSPARAM6              0x0000000BL
  38. #define CTOC_EFU_COMPRESSPARAM7              0x0000000CL
  39. #define CTOC_EFU_COMPRESSPARAM8              0x0000000DL
  40. #define CTOC_EFU_COMPRESSPARAM9              0x0000000EL
  41. #define CTOC_CHARSET_STANDARD                0x00000000L
  42.  
  43. #define DLLNAME_SIZE                         CCHMAXPATH
  44. #define PROCNAME_SIZE                        32
  45. #define MAX_EXTENSION_NAME                    4
  46.  
  47. #define MMIO_AUDIO_UNKNOWN                   0x00000000L
  48. #define MMIO_AUDIO_VOICE                     0x00000001L
  49. #define MMIO_AUDIO_MUSIC                     0x00000002L
  50. #define MMIO_AUDIO_HIFI                      0x00000004L
  51.  
  52. #define MMIO_CANREADTRANSLATED               0x00000001L
  53. #define MMIO_CANWRITETRANSLATED              0x00000002L
  54. #define MMIO_CANREADWRITETRANSLATED          0x00000004L
  55. #define MMIO_CANREADUNTRANSLATED             0x00000008L
  56. #define MMIO_CANWRITEUNTRANSLATED            0x00000010L
  57. #define MMIO_CANREADWRITEUNTRANSLATED        0x00000020L
  58. #define MMIO_CANSEEKTRANSLATED               0x00000040L
  59. #define MMIO_CANSEEKUNTRANSLATED             0x00000080L
  60. #define MMIO_CANINSERTUNTRANSLATED           0x00000100L
  61. #define MMIO_CANSAVEUNTRANSLATED             0x00000200L
  62. #define MMIO_CANINSERTTRANSLATED             0x00000400L
  63. #define MMIO_CANSAVETRANSLATED               0x00000800L
  64. #define MMIO_CANMULTITRACKREADTRANSLATED     0x00001000L
  65. #define MMIO_CANMULTITRACKREADUNTRANSLATED   0x00002000L
  66. #define MMIO_CANMULTITRACKWRITETRANSLATED    0x00004000L
  67. #define MMIO_CANMULTITRACKWRITEUNTRANSLATED  0x00008000L
  68. #define MMIO_CANTRACKSEEKTRANSLATED          0x00010000L
  69. #define MMIO_CANTRACKSEEKUNTRANSLATED        0x00020000L
  70. #define MMIO_CANTRACKREADTRANSLATED          0x00040000L
  71. #define MMIO_CANTRACKREADUNTRANSLATED        0x00080000L
  72. #define MMIO_CANTRACKWRITETRANSLATED         0x00100000L
  73. #define MMIO_CANTRACKWRITEUNTRANSLATED       0x00200000L
  74.  
  75. #define MMIO_IOPROC_STORAGESYSTEM            0x00000001L
  76. #define MMIO_IOPROC_FILEFORMAT               0x00000002L
  77. #define MMIO_IOPROC_DATAFORMAT               0x00000004L
  78.  
  79. #define MMIO_IMAGE_UNKNOWN                   0x00000000L
  80. #define MMIO_IMAGE_DRAWING                   0x00000001L
  81. #define MMIO_IMAGE_GRAPH                     0x00000002L
  82. #define MMIO_IMAGE_PHOTO                     0x00000004L
  83.  
  84. #define MMIO_MEDIATYPE_IMAGE                 0x00000001L
  85. #define MMIO_MEDIATYPE_AUDIO                 0x00000002L
  86. #define MMIO_MEDIATYPE_MIDI                  0x00000004L
  87. #define MMIO_MEDIATYPE_COMPOUND              0x00000008L
  88. #define MMIO_MEDIATYPE_OTHER                 0x00000010L
  89. #define MMIO_MEDIATYPE_UNKNOWN               0x00000020L
  90. #define MMIO_MEDIATYPE_DIGITALVIDEO          0x00000040L
  91. #define MMIO_MEDIATYPE_ANIMATION             0x00000080L
  92. #define MMIO_MEDIATYPE_MOVIE                 0x00000100L
  93.  
  94. #define MMIO_MIDI_UNKNOWN                    0x00000000L
  95. #define MMIO_MIDI_VOICE                      0x00000001L
  96. #define MMIO_MIDI_MUSIC                      0x00000002L
  97. #define MMIO_MIDI_HIFI                       0x00000004L
  98.  
  99. #define MMIO_CREATE                          0x00000001L       
  100. #define MMIO_CTOCFIRST                       0x00000002L       
  101. #define MMIO_READ                            0x00000004L       
  102. #define MMIO_WRITE                           0x00000008L       
  103. #define MMIO_READWRITE                       0x00000010L       
  104. #define MMIO_COMPAT                          0x00000020L       
  105. #define MMIO_EXCLUSIVE                       0x00000040L       
  106. #define MMIO_DENYWRITE                       0x00000080L       
  107. #define MMIO_DENYREAD                        0x00000100L       
  108. #define MMIO_DENYNONE                        0x00000200L       
  109. #define MMIO_ALLOCBUF                        0x00000400L       
  110. #define MMIO_DELETE                          0x00000800L       
  111. #define MMIO_USE_TEMP                        0x00001000L       
  112. #define MMIO_INSERTON                        0x00000001L       
  113. #define MMIO_INSERTOFF                       0x00000002L       
  114. #define MMIO_RWMODE                          0x00001000L       
  115. #define MMIO_SHAREMODE                       0x00002000L       
  116. #define MMIO_DIRTY                           0x00004000L       
  117. #define MMIO_VERTBAR                         0x00008000L      
  118. #define MMIO_BUFSHARED                       0x00010000L      
  119. #define MMIO_APPEND                          0x00020000L      
  120. #define MMIO_NOIDENTIFY                      0x00040000L      
  121. #define MMIO_FINDFIRST                       0x00000001L      
  122. #define MMIO_FINDNEXT                        0x00000002L      
  123. #define MMIO_FINDUNUSED                      0x00000004L      
  124. #define MMIO_FINDDELETED                     0x00000008L
  125. #define MMIO_CHANGEDELETED                   0x0001
  126. #define MMIO_CF_FQNAME                       0x0001
  127. #define MMIO_FHOPEN                          0x0001
  128. #define MMIO_EMPTYBUF                        0x0001
  129. #define MMIO_CREATERIFF                      0x0001
  130. #define MMIO_CREATELIST                      0x0002
  131. #define MMIO_FINDCHUNK                       0x0004
  132. #define MMIO_FINDRIFF                        0x0008
  133. #define MMIO_FINDLIST                        0x0010
  134. #define MMIO_INSTALLPROC                     0x00000001L
  135. #define MMIO_REMOVEPROC                      0x00000002L
  136. #define MMIO_FINDPROC                        0x00000004L
  137. #define MMIO_MATCHFIRST                      0x00000010L
  138. #define MMIO_MATCHNEXT                       0x00000020L
  139. #define MMIO_MATCHFOURCC                     0x00000040L
  140. #define MMIO_MATCHDLL                        0x00000080L
  141. #define MMIO_MATCHPROCEDURENAME              0x00000100L
  142. #define MMIO_FULLPATH                        0x00000200L
  143. #define MMIO_NOVERIFY                        0x00000400L
  144. #define MMIO_MATCHCOMPRESSTYPE               0x00000800L
  145. #define MMIO_EXTENDED_STRUCT                 0x00001000L
  146. #define MMIO_MATCHCOMPRESSSUBTYPE            0x00002000L
  147. #define MMIO_MATCHHWID                       0x00004000L
  148. #define MMIO_MATCHCAPSFLAGS                  0x00008000L
  149. #define MMIO_SKIPMATCH                       0x00010000L
  150. #define MMIO_TOUPPER                         0x0001
  151. #define MMIO_CF_ENTRY_EXISTS                 0x00000001L
  152. #define MMIO_FORCE_IDENTIFY_SS               0x00000001L
  153. #define MMIO_FORCE_IDENTIFY_FF               0x00000002L
  154. #define MMIO_NOTRANSLATE                     0x00000000L
  155. #define MMIO_TRANSLATEDATA                   0x00000001L
  156. #define MMIO_TRANSLATEHEADER                 0x00000002L
  157. #define MMIO_DECOMPRESS                      0x00000004L
  158. #define MMIO_DEFAULTBUFFER                   8192
  159. #define MMIO_SEEK_IFRAME                     0x00010000L
  160.  
  161. #define MMIOM_START                          0x0E00
  162. #define MMIOM_END                            0x0EFF
  163. #define MMIOM_GETCF                          MMIOM_START +  1
  164. #define MMIOM_GETCFENTRY                     MMIOM_START +  2
  165. #define MMIOM_CLOSE                          MMIOM_START +  3
  166. #define MMIOM_OPEN                           MMIOM_START +  4
  167. #define MMIOM_READ                           MMIOM_START +  5
  168. #define MMIOM_SEEK                           MMIOM_START +  6
  169. #define MMIOM_WRITE                          MMIOM_START +  7
  170. #define MMIOM_IDENTIFYFILE                   MMIOM_START +  8
  171. #define MMIOM_GETHEADER                      MMIOM_START +  9
  172. #define MMIOM_SETHEADER                      MMIOM_START + 10
  173. #define MMIOM_QUERYHEADERLENGTH              MMIOM_START + 11
  174. #define MMIOM_GETFORMATNAME                  MMIOM_START + 12
  175. #define MMIOM_GETFORMATINFO                  MMIOM_START + 13
  176. #define MMIOM_SEEKBYTIME                     MMIOM_START + 14
  177. #define MMIOM_TEMPCHANGE                     MMIOM_START + 15
  178. #define MMIOM_BEGININSERT                    MMIOM_START + 16
  179. #define MMIOM_ENDINSERT                      MMIOM_START + 17
  180. #define MMIOM_SAVE                           MMIOM_START + 18
  181. #define MMIOM_SET                            MMIOM_START + 19
  182. #define MMIOM_COMPRESS                       MMIOM_START + 20
  183. #define MMIOM_DECOMPRESS                     MMIOM_START + 21
  184. #define MMIOM_MULTITRACKREAD                 MMIOM_START + 22
  185. #define MMIOM_MULTITRACKWRITE                MMIOM_START + 23
  186. #define MMIOM_DELETE                         MMIOM_START + 24
  187. #define MMIOM_BEGINGROUP                     MMIOM_START + 25
  188. #define MMIOM_ENDGROUP                       MMIOM_START + 26
  189. #define MMIOM_UNDO                           MMIOM_START + 27
  190. #define MMIOM_REDO                           MMIOM_START + 28
  191. #define MMIOM_BEGINSTREAM                    MMIOM_START + 29
  192. #define MMIOM_ENDSTREAM                      MMIOM_START + 30
  193. #define MMIOM_USER                           0x0F00
  194. #define MMIOM_USER_END                       0x0FFF
  195.  
  196. #define MMIO_SUCCESS                         0L
  197. #define MMIO_WARNING                         2L
  198. #define MMIO_ERROR                          -1L
  199. #define MMIOERR_UNSUPPORTED_MESSAGE         -2L
  200.                                             
  201. #define MMIO_CF_SUCCESS                      0L
  202. #define MMIO_CF_FAILURE                      1L
  203.  
  204. #define MMIO_NLS_CHARSET_INFO                8000
  205. #define MMIO_IOPROC_NAME_TABLE               8500
  206. #define MMIO_CODEC_NAME_TABLE                9000
  207.  
  208. #define MMIO_DEFAULT_CODE_PAGE               437
  209.                                              
  210. #define MMIO_CC_NONE                         000
  211. #define MMIO_CC_USA                          001
  212. #define MMIO_CC_CANADA                       002
  213. #define MMIO_CC_LATIN_AMERICA                003
  214. #define MMIO_CC_GREECE                       030
  215. #define MMIO_CC_NETHERLANDS                  031
  216. #define MMIO_CC_BELGIUM                      032
  217. #define MMIO_CC_FRANCE                       033
  218. #define MMIO_CC_SPAIN                        034
  219. #define MMIO_CC_ITALY                        039
  220. #define MMIO_CC_SWITZERLAND                  041
  221. #define MMIO_CC_AUSTRIA                      043
  222. #define MMIO_CC_UNITED_KINGDOM               044
  223. #define MMIO_CC_DENMARK                      045
  224. #define MMIO_CC_SWEDEN                       046
  225. #define MMIO_CC_NORWAY                       047
  226. #define MMIO_CC_WEST_GERMANY                 049
  227. #define MMIO_CC_MEXICO                       052
  228. #define MMIO_CC_BRAZIL                       055
  229. #define MMIO_CC_AUSTRALIA                    061
  230. #define MMIO_CC_NEW_ZEALAND                  064
  231. #define MMIO_CC_JAPAN                        081
  232. #define MMIO_CC_KOREA                        082
  233. #define MMIO_CC_CHINA                        086
  234. #define MMIO_CC_TAIWAN                       088
  235. #define MMIO_CC_TURKEY                       090
  236. #define MMIO_CC_PORTUGAL                     351
  237. #define MMIO_CC_LUXEMBOURG                   352
  238. #define MMIO_CC_ICELAND                      354
  239. #define MMIO_CC_FINLAND                      358
  240.  
  241. #define MMIO_LC_NONE                          0
  242. #define MMIO_DC_NONE                          0
  243. #define MMIO_LC_ARABIC                        1
  244. #define MMIO_DC_ARABIC                        1
  245. #define MMIO_LC_BULGARIAN                     2
  246. #define MMIO_DC_BULGARIAN                     1
  247. #define MMIO_LC_CATALAN                       3
  248. #define MMIO_DC_CATALAN                       1
  249. #define MMIO_LC_TRADITIONAL_CHINESE           4
  250. #define MMIO_DC_TRADITIONAL_CHINESE           1
  251. #define MMIO_LC_SIMPLE_CHINESE                4
  252. #define MMIO_DC_SIMPLE_CHINESE                2
  253. #define MMIO_LC_CZECH                         5
  254. #define MMIO_DC_CZECH                         1
  255. #define MMIO_LC_DANISH                        6
  256. #define MMIO_DC_DANISH                        1
  257. #define MMIO_LC_GERMAN                        7
  258. #define MMIO_DC_GERMAN                        1
  259. #define MMIO_LC_SWISS_GERMAN                  7
  260. #define MMIO_DC_SWISS_GERMAN                  2
  261. #define MMIO_LC_GREEK                         8
  262. #define MMIO_DC_GREEK                         1
  263. #define MMIO_LC_US_ENGLISH                    9
  264. #define MMIO_DC_US_ENGLISH                    1
  265. #define MMIO_LC_UK_ENGLISH                    9
  266. #define MMIO_DC_UK_ENGLISH                    2
  267. #define MMIO_LC_SPANISH                      10
  268. #define MMIO_DC_SPANISH                       1
  269. #define MMIO_LC_SPANISH_MEXICAN              10
  270. #define MMIO_DC_SPANISH_MEXICAN               2
  271. #define MMIO_LC_FINNISH                      11
  272. #define MMIO_DC_FINNISH                       1
  273. #define MMIO_LC_FRENCH                       12
  274. #define MMIO_DC_FRENCH                        1
  275. #define MMIO_LC_BELGIAN_FRENCH               12
  276. #define MMIO_DC_BELGIAN_FRENCH                2
  277. #define MMIO_LC_CANADIAN_FRENCH              12
  278. #define MMIO_DC_CANADIAN_FRENCH               3
  279. #define MMIO_LC_SWISS_FRENCH                 12
  280. #define MMIO_DC_SWISS_FRENCH                  4
  281. #define MMIO_LC_HEBREW                       13
  282. #define MMIO_DC_HEBREW                        1
  283. #define MMIO_LC_HUNGARIAN                    14
  284. #define MMIO_DC_HUNGARIAN                     1
  285. #define MMIO_LC_ICELANDIC                    15
  286. #define MMIO_DC_ICELANDIC                     1
  287. #define MMIO_LC_ITALIAN                      16
  288. #define MMIO_DC_ITALIAN                       1
  289. #define MMIO_LC_SWISS_ITALIAN                16
  290. #define MMIO_DC_SWISS_ITALIAN                 2
  291. #define MMIO_LC_JAPANESE                     17
  292. #define MMIO_DC_JAPANESE                      1
  293. #define MMIO_LC_KOREAN                       18
  294. #define MMIO_DC_KOREAN                        1
  295. #define MMIO_LC_DUTCH                        19
  296. #define MMIO_DC_DUTCH                         1
  297. #define MMIO_LC_BELGIAN_DUTCH                19
  298. #define MMIO_DC_BELGIAN_DUTCH                 2
  299. #define MMIO_LC_NORWEGIAN_BOKMAL             20
  300. #define MMIO_DC_NORWEGIAN_BOKMAL              1
  301. #define MMIO_LC_NORWEGIAN_NYNORSK            20
  302. #define MMIO_DC_NORWEGIAN_NYNORSK             2
  303. #define MMIO_LC_POLISH                       21
  304. #define MMIO_DC_POLISH                        1
  305. #define MMIO_LC_BRAZILIAN_PORTUGUESE         22
  306. #define MMIO_DC_BRAZILIAN_PORTUGUESE          1
  307. #define MMIO_LC_PORTUGUESE                   22
  308. #define MMIO_DC_PORTUGUESE                    2
  309. #define MMIO_LC_RHAETO_ROMANIC               23
  310. #define MMIO_DC_RHAETO_ROMANIC                1
  311. #define MMIO_LC_ROMANIAN                     24
  312. #define MMIO_DC_ROMANIAN                      1
  313. #define MMIO_LC_RUSSIAN                      25
  314. #define MMIO_DC_RUSSIAN                       1
  315. #define MMIO_LC_SERBO_CROATIAN_LATIN         26
  316. #define MMIO_DC_SERBO_CROATIAN_LATIN          1
  317. #define MMIO_LC_SERBO_CROATIAN_CYRILLIC      26
  318. #define MMIO_DC_SERBO_CROATIAN_CYRILLIC       2
  319. #define MMIO_LC_SLOVAK                       27
  320. #define MMIO_DC_SLOVAK                        1
  321. #define MMIO_LC_ALBANIAN                     28
  322. #define MMIO_DC_ALBANIAN                      1
  323. #define MMIO_LC_SWEDISH                      29
  324. #define MMIO_DC_SWEDISH                       1
  325. #define MMIO_LC_THAI                         30
  326. #define MMIO_DC_THAI                          1
  327. #define MMIO_LC_TURKISH                      31
  328. #define MMIO_DC_TURKISH                       1
  329. #define MMIO_LC_URDU                         32
  330. #define MMIO_DC_URDU                          1
  331. #define MMIO_LC_BAHASA                       33
  332. #define MMIO_DC_BAHASA                        1
  333.  
  334.  
  335. #define mmioFOURCC      (ch0, ch1, ch2, ch3) \
  336.                         ((ULONG)(BYTE)(ch0)|((ULONG)(BYTE)(ch1)<<8)| \
  337.                         ((ULONG)(BYTE)(ch2)<<16)|((ULONG)(BYTE)(ch3)<<24))
  338.  
  339. #define FOURCC_RIFF     mmioFOURCC( 'R', 'I', 'F', 'F' )
  340. #define FOURCC_LIST     mmioFOURCC( 'L', 'I', 'S', 'T' )
  341. #define FOURCC_MEM      mmioFOURCC( 'M', 'E', 'M', ' ' )
  342. #define FOURCC_DOS      mmioFOURCC( 'D', 'O', 'S', ' ' )
  343. #define FOURCC_BND      mmioFOURCC( 'B', 'N', 'D', ' ' )
  344. #define FOURCC_FREE     mmioFOURCC( 'F', 'R', 'E', 'E' )
  345. #define FOURCC_DEL      mmioFOURCC( 'D', 'E', 'L', ' ' )
  346. #define FOURCC_CTOC     mmioFOURCC( 'C', 'T', 'O', 'C' )
  347. #define FOURCC_CGRP     mmioFOURCC( 'C', 'G', 'R', 'P' )
  348. #define FOURCC_CF       mmioFOURCC( 'C', 'F', ' ', ' ' )
  349.  
  350. #define HEX_FOURCC_DOS  0x20534f44L
  351. #define HEX_FOURCC_MEM  0x204d454dL
  352. #define HEX_FOURCC_BND  0x20444e42L
  353. #define HEX_FOURCC_CF   0x20204643L
  354.  
  355.  
  356. #ifndef _MEERROR_H_
  357.     #define INCL_MMIO_ERRORS
  358.     #include <meerror.h>
  359. #endif
  360.  
  361.  
  362. /************/
  363. /* typedefs */
  364. /************/
  365.  
  366. #ifndef _OS2MEDEF_H
  367.     typedef ULONG HMMIO;
  368. #endif
  369.  
  370. typedef HMMIO HMMCF;
  371. typedef ULONG    FOURCC;
  372. typedef FOURCC* PFOURCC;
  373. typedef PSZ HPSTR;
  374.  
  375. typedef LONG (MMIOPROC)(PVOID pmmioinfo, USHORT usMsg,
  376.                         LONG lParam1, LONG lParam2);
  377. typedef MMIOPROC*   PMMIOPROC;
  378. typedef MMIOPROC** PPMMIOPROC;
  379.  
  380.  
  381. #ifdef INCL_GPI
  382.  
  383.     #ifdef INCL_GPIBITMAPS
  384.  
  385.         #define MAX_PALETTE  256
  386.  
  387.         typedef struct _XDIBHDR_PREFIX {
  388.             ULONG  ulMemSize;
  389.             ULONG  ulPelFormat;
  390.             USHORT usTransType;
  391.             ULONG  ulTransVal;
  392.         } XDIBHDR_PREFIX;
  393.  
  394.  
  395.         typedef struct _MMXDIBHEADER {
  396.             XDIBHDR_PREFIX    XDIBHeaderPrefix;
  397.             BITMAPINFOHEADER2 BMPInfoHeader2;
  398.         } MMXDIBHEADER;
  399.  
  400.         typedef MMXDIBHEADER* PMMXDIBHEADER;
  401.  
  402.         typedef struct _MMIMAGEHEADER {
  403.            ULONG        ulHeaderLength;
  404.            ULONG        ulContentType;
  405.            ULONG        ulMediaType;
  406.            MMXDIBHEADER mmXDIBHeader;
  407.            RGB2         bmiColors[MAX_PALETTE];
  408.         } MMIMAGEHEADER;
  409.  
  410.         typedef MMIMAGEHEADER* PMMIMAGEHEADER;
  411.  
  412.     #endif
  413.  
  414. #endif
  415.  
  416.  
  417. typedef struct _MMCKINFO {
  418.     FOURCC ckid;
  419.     ULONG  ckSize;
  420.     FOURCC fccType;
  421.     ULONG  ulDataOffset;
  422.     ULONG  ulFlags;
  423. } MMCKINFO;
  424.  
  425. typedef MMCKINFO* PMMCKINFO;
  426.  
  427.  
  428. typedef struct _MMIOINFO {
  429.     ULONG     ulFlags;
  430.     FOURCC    fccIOProc;
  431.     PMMIOPROC pIOProc;
  432.     ULONG     ulErrorRet;
  433.     LONG      cchBuffer;
  434.     PCHAR     pchBuffer;
  435.     PCHAR     pchNext;
  436.     PCHAR     pchEndRead;
  437.     PCHAR     pchEndWrite;
  438.     LONG      lBufOffset;
  439.     LONG      lDiskOffset;
  440.     ULONG     aulInfo[4];
  441.     LONG      lLogicalFilePos;
  442.     ULONG     ulTranslate;
  443.     FOURCC    fccChildIOProc;
  444.     PVOID     pExtraInfoStruct;
  445.     HMMIO     hmmio;
  446. } MMIOINFO;
  447.  
  448. typedef MMIOINFO* PMMIOINFO;
  449.  
  450.  
  451. typedef struct _MMCFINFO {
  452.     ULONG  ulHeaderSize;
  453.     ULONG  ulEntriesTotal;
  454.     ULONG  ulEntriesDeleted;
  455.     ULONG  ulEntriesUnused;
  456.     ULONG  ulBytesTotal;
  457.     ULONG  ulBytesDeleted;
  458.     ULONG  ulHeaderFlags;
  459.     USHORT usEntrySize;
  460.     USHORT usNameSize;
  461.     USHORT usExHdrFields;
  462.     USHORT usExEntFields;
  463. } MMCFINFO;
  464.  
  465. typedef MMCFINFO* PMMCFINFO;
  466.  
  467.  
  468. typedef struct _MMCTOCENTRY {
  469.     ULONG ulOffset;
  470.     ULONG ulSize;
  471.     ULONG ulMedType;
  472.     ULONG ulMedUsage;
  473.     ULONG ulCompressTech;
  474.     ULONG ulUncompressBytes;
  475. } MMCTOCENTRY;
  476.  
  477. typedef MMCTOCENTRY* PMMCTOCENTRY;
  478.  
  479.  
  480. typedef struct _MMFORMATINFO {
  481.     ULONG  ulStructLen;
  482.     FOURCC fccIOProc;
  483.     ULONG  ulIOProcType;
  484.     ULONG  ulMediaType;
  485.     ULONG  ulFlags;
  486.     CHAR   szDefaultFormatExt[sizeof(FOURCC) + 1];
  487.     ULONG  ulCodePage;
  488.     ULONG  ulLanguage;
  489.     LONG   lNameLength;
  490. } MMFORMATINFO;
  491.  
  492. typedef MMFORMATINFO* PMMFORMATINFO;
  493.  
  494.  
  495. typedef struct _WAVE_HEADER {
  496.     USHORT usFormatTag;
  497.     USHORT usChannels;
  498.     ULONG  ulSamplesPerSec;
  499.     ULONG  ulAvgBytesPerSec;
  500.     USHORT usBlockAlign;
  501.     USHORT usBitsPerSample;
  502. } WAVE_HEADER;
  503.  
  504.  
  505. typedef struct _XWAV_HEADERINFO {
  506.     ULONG ulAudioLengthInMS;
  507.     ULONG ulAudioLengthInBytes;
  508.     ULONG ulReserved;
  509. } XWAV_HEADERINFO;
  510.  
  511.  
  512. typedef struct _MMXWAV_HEADER {         
  513.     WAVE_HEADER     WAVEHeader;
  514.     XWAV_HEADERINFO XWAVHeaderInfo;
  515. } MMXWAV_HEADER;
  516.  
  517.  
  518. typedef struct _MMAUDIOHEADER {
  519.     ULONG         ulHeaderLength;
  520.     ULONG         ulContentType;
  521.     ULONG         ulMediaType;
  522.     MMXWAV_HEADER mmXWAVHeader;
  523. } MMAUDIOHEADER;
  524.  
  525. typedef MMAUDIOHEADER* PMMAUDIOHEADER;
  526.  
  527.  
  528. typedef struct _MMINIFILEINFO {
  529.     FOURCC fccIOProc;
  530.     CHAR   szDLLName[DLLNAME_SIZE];
  531.     CHAR   szProcName[PROCNAME_SIZE];
  532.     ULONG  ulFlags;
  533.     ULONG  ulExtendLen;
  534.     ULONG  ulMediaType;
  535.     ULONG  ulIOProcType;
  536.     CHAR   szDefExt[sizeof(MAX_EXTENSION_NAME)];
  537. } MMINIFILEINFO;
  538.  
  539. typedef MMINIFILEINFO* PMMINIFILEINFO;
  540.  
  541.  
  542. #ifdef INCL_MMIO_CODEC
  543.  
  544.     typedef MMIOPROC* PCODECPROC;
  545.  
  546.     typedef struct _CODECINIFILEINFO {
  547.         ULONG  ulStructLen;
  548.         FOURCC fcc;
  549.         CHAR   szDLLName[DLLNAME_SIZE];
  550.         CHAR   szProcName[PROCNAME_SIZE];
  551.         ULONG  ulCompressType;
  552.         ULONG  ulCompressSubType;
  553.         ULONG  ulMediaType;
  554.         ULONG  ulCapsFlags;
  555.         ULONG  ulFlags;
  556.         CHAR   szHWID[CODEC_HW_NAME_SIZE];
  557.         ULONG  ulMaxSrcBufLen;
  558.         ULONG  ulSyncMethod;
  559.         ULONG  ulReserved1;
  560.         ULONG  ulXalignment;
  561.         ULONG  ulYalignment;
  562.         ULONG  ulSpecInfo[CODEC_INFO_SIZE];
  563.     } CODECINIFILEINFO;
  564.  
  565.     typedef CODECINIFILEINFO* PCODECINIFILEINFO;
  566.  
  567.  
  568.     #define CODEC_SYNC_METHOD_NO_DROP_FRAMES             0
  569.     #define CODEC_SYNC_METHOD_DROP_FRAMES_IMMEDIATELY    1
  570.     #define CODEC_SYNC_METHOD_DROP_FRAMES_PRECEDING_KEY  2
  571.  
  572.     #define CODEC_COMPRESS                               0x00000001
  573.     #define CODEC_DECOMPRESS                             0x00000002
  574.     #define CODEC_WINDOW_CLIPPING                        0x00000004
  575.     #define CODEC_PALETTE_TRANS                          0x00000008
  576.     #define CODEC_SELFHEAL                               0x00000010
  577.     #define CODEC_SCALE_PEL_DOUBLE                       0x00000020
  578.     #define CODEC_SCALE_PEL_HALVED                       0x00000040
  579.     #define CODEC_SCALE_CONTINUOUS                       0x00000080
  580.     #define CODEC_MULAPERTURE                            0x00000100
  581.     #define CODEC_4_BIT_COLOR                            0x00000200
  582.     #define CODEC_8_BIT_COLOR                            0x00000400
  583.     #define CODEC_16_BIT_COLOR                           0x00000800
  584.     #define CODEC_24_BIT_COLOR                           0x00001000
  585.     #define CODEC_HARDWARE                               0x00002000
  586.     #define CODEC_SYMMETRIC                              0x00004000
  587.     #define CODEC_ASYMMETRIC                             0x00008000
  588.     #define CODEC_DIRECT_DISPLAY                         0x00010000
  589.     #define CODEC_DEFAULT                                0x00020000
  590.     #define CODEC_ORIGIN_LOWERLEFT                       0x00040000
  591.     #define CODEC_ORIGIN_UPPERLEFT                       0x00080000
  592.     #define CODEC_SET_QUALITY                            0x00100000
  593.     #define CODEC_DATA_CONSTRAINT                        0x00200000
  594.  
  595.     #define MMIO_SET_EXTENDEDINFO                        0X0001
  596.     #define MMIO_QUERY_EXTENDEDINFO_BASE                 0x0002
  597.     #define MMIO_QUERY_EXTENDEDINFO_ALL                  0x0004
  598.  
  599.     typedef struct _CODECASSOC {
  600.         PVOID             pCodecOpen;
  601.         PCODECINIFILEINFO pCODECIniFileInfo;
  602.     } CODECASSOC;
  603.  
  604.     typedef CODECASSOC* PCODECASSOC;
  605.  
  606.  
  607.     typedef struct _MMEXTENDINFO {
  608.         ULONG       ulStructLen;
  609.         ULONG       ulBufSize;
  610.         ULONG       ulFlags;
  611.         ULONG       ulTrackID;
  612.         ULONG       ulNumCODECs;
  613.         PCODECASSOC pCODECAssoc;
  614.     } MMEXTENDINFO;
  615.  
  616.     typedef MMEXTENDINFO* PMMEXTENDINFO;
  617.  
  618.  
  619.     #define MMIO_TRACK                                   0x00000001
  620.     #define MMIO_NORMAL_READ                             0x00000002
  621.     #define MMIO_SCAN_READ                               0x00000004
  622.     #define MMIO_REVERSE_READ                            0x00000008
  623.     #define MMIO_CODEC_ASSOC                             0x00000100
  624.  
  625.     #define MMIO_RESETTRACKS                             -1
  626.  
  627.     #define CODEC_START                                  0x0EC0
  628.     #define CODEC_END                                    0x0EFF
  629.  
  630.     #define MMIOM_CODEC_CLOSE                            CODEC_START + 1
  631.     #define MMIOM_CODEC_OPEN                             CODEC_START + 2
  632.     #define MMIOM_CODEC_QUERYNAME                        CODEC_START + 3
  633.     #define MMIOM_CODEC_QUERYNAMELENGTH                  CODEC_START + 4
  634.     #define MMIOM_CODEC_COMPRESS                         CODEC_START + 5
  635.     #define MMIOM_CODEC_DECOMPRESS                       CODEC_START + 6
  636.  
  637. #endif
  638.  
  639.  
  640. /**************/
  641. /* MMIO API's */
  642. /**************/
  643.  
  644. USHORT mmioAdvance(HMMIO hmmio, PMMIOINFO pmmioinfo, USHORT usFlags);
  645.  
  646. USHORT mmioAscend(HMMIO hmmio, PMMCKINFO pckinfo, USHORT usFlags);
  647.  
  648. USHORT mmioClose(HMMIO hmmio, USHORT usFlags);
  649.  
  650. USHORT mmioCreateChunk(HMMIO hmmio, PMMCKINFO pckinfo, SHORT usFlags);
  651.  
  652. USHORT mmioDescend(HMMIO hmmio, PMMCKINFO pckinfo, PMMCKINFO pckinfoParent,
  653.                    USHORT usFlags);
  654.  
  655. USHORT mmioFlush(HMMIO hmmio, USHORT usFlags);
  656.  
  657. USHORT mmioGetInfo(HMMIO hmmio, PMMIOINFO pmmioinfo, USHORT usFlags);
  658.  
  659. ULONG mmioGetLastError(HMMIO hmmio);
  660.  
  661. PMMIOPROC mmioInstallIOProc(FOURCC fccIOProc, PMMIOPROC pIOProc,
  662.                             ULONG ulFlags);
  663.  
  664. LONG mmioIOProc(PMMIOINFO pmmioinfo, USHORT usMsg,
  665.                 LONG lParam1, LONG lParam2);
  666.  
  667. HMMIO mmioOpen(PSZ pszFileName, PMMIOINFO pmmioinfo, ULONG ulOpenFlags);
  668.  
  669. LONG mmioRead(HMMIO hmmio, PCHAR pchBuffer, LONG cBytes);
  670.  
  671. LONG mmioSeek(HMMIO hmmio, LONG lOffset, LONG lOrigin);
  672.  
  673. LONG mmioSendMessage(HMMIO hmmio, USHORT usMsg, LONG lParam1, LONG lParam2);
  674.  
  675. USHORT mmioSetBuffer(HMMIO hmmio, PCHAR pchBuffer, LONG cBytes,
  676.                      USHORT usFlags);
  677.  
  678. USHORT mmioSetInfo(HMMIO hmmio, PMMIOINFO pmmioinfo, USHORT usFlags);
  679.  
  680. FOURCC mmioStringToFOURCC(PSZ pszString, USHORT usFlags);
  681.  
  682. LONG mmioWrite(HMMIO hmmio, PCHAR pchBuffer, LONG cBytes);
  683.  
  684. HMMCF mmioCFOpen(PSZ pszFileName, PMMCFINFO pmmcfinfo, PMMIOINFO pmmioinfo,
  685.                  ULONG ulFlags);
  686.  
  687. ULONG mmioCFClose(HMMCF hmmcf, ULONG ulFlags);
  688.  
  689. ULONG mmioCFGetInfo(HMMCF hmmcf, PMMCFINFO pmmcfinfo, ULONG cBytes);
  690.  
  691. ULONG mmioCFSetInfo(HMMCF hmmcf, PMMCFINFO pmmcfinfo, ULONG cBytes);
  692.  
  693. ULONG mmioCFFindEntry(HMMCF hmmcf, PMMCTOCENTRY pmmctocentry, ULONG ulFlags);
  694.  
  695. ULONG mmioCFAddEntry(HMMCF hmmcf, PMMCTOCENTRY pmmctocentry, ULONG ulFlags);
  696.  
  697. ULONG mmioCFChangeEntry(HMMCF hmmcf, PMMCTOCENTRY pmmctocentry,
  698.                         ULONG ulFlags);
  699.  
  700. ULONG mmioCFDeleteEntry(HMMCF hmmcf, PMMCTOCENTRY pmmctocentry,
  701.                         ULONG ulFlags);
  702.  
  703. ULONG mmioCFAddElement(HMMCF hmmcf, PSZ pszElementName, FOURCC fccType,
  704.                        PCHAR pchBuffer, LONG cchBytes, ULONG ulFlags);
  705.  
  706. ULONG mmioCFCopy(HMMCF hmmcfSource, PSZ pszDestFileName, ULONG ulFlags);
  707.  
  708. ULONG mmioQueryFormatCount(PMMFORMATINFO pmmformatinfo, PLONG plNumFormats,
  709.                            ULONG ulReserved, ULONG ulFlags);
  710.  
  711. ULONG mmioGetFormats(PMMFORMATINFO pmmformatinfo, LONG lNumFormats,
  712.                      PVOID pFormatInfoList, PLONG plFormatsRead,
  713.                      ULONG ulReserved, ULONG ulFlags);
  714.  
  715. ULONG mmioGetFormatName(PMMFORMATINFO pmmformatinfo, PSZ pszFormatName,
  716.                         PLONG plBytesRead, ULONG ulReserved, ULONG ulFlags);
  717.  
  718. ULONG mmioIdentifyFile(PSZ pszFileName, PMMIOINFO pmmioinfo,
  719.                        PMMFORMATINFO pmmformatinfo, PFOURCC pfccStorageSystem,
  720.                        ULONG ulReserved, ULONG ulFlags);
  721.  
  722. ULONG mmioQueryHeaderLength(HMMIO hmmio, PLONG plHeaderLength,
  723.                             ULONG ulReserved, ULONG ulFlags);
  724.  
  725. ULONG mmioGetHeader(HMMIO hmmio, PVOID pHeader, LONG lHeaderLength,
  726.                     PLONG plBytesRead, ULONG ulReserved, ULONG ulFlags);
  727.  
  728. ULONG mmioSetHeader(HMMIO hmmio, PVOID pHeader, LONG lHeaderLength,
  729.                     PLONG plBytesWritten, ULONG ulReserved, ULONG ulFlags);
  730.  
  731. ULONG mmioIniFileHandler(PMMINIFILEINFO pmminifileinfo, ULONG ulFlags);
  732.  
  733. ULONG mmioIdentifyStorageSystem(PSZ pszFileName, PMMIOINFO pmmioinfo,
  734.                                 PFOURCC pfccStorageSystem);
  735.  
  736. ULONG mmioDetermineSSIOProc(PSZ pszFileName, PMMIOINFO pmmioinfo,
  737.                             PFOURCC pfccStorageSystem,
  738.                             PSZ pszParsedRemainder);
  739.  
  740. ULONG mmioQueryIOProcModuleHandle(PMMIOPROC pIOProc, PHMODULE phmodIOProc);
  741.  
  742. ULONG mmioCFCompact(PSZ pszFileName, ULONG ulFlags);
  743.  
  744. ULONG mmioMigrateIniFile(ULONG ulFlags);
  745.  
  746.  
  747. #ifdef INCL_MMIO_CODEC
  748.     ULONG mmioIniFileCODEC(PCODECINIFILEINFO pCODECIniFileInfo,
  749.                            ULONG ulFlags);
  750.  
  751.     ULONG mmioSet(HMMIO hmmio, PMMEXTENDINFO pUserExtendmminfo,
  752.                   ULONG ulFlags);
  753.  
  754.     ULONG mmioQueryCODECName(PCODECINIFILEINFO pCODECIniFileinfo,
  755.                              PSZ pszCODECName, PULONG pulBytesRead);
  756.  
  757.     ULONG mmioQueryCODECNameLength(PCODECINIFILEINFO pCODECIniFileinfo,
  758.                                    PULONG pulNameLength);
  759.  
  760.     PCODECPROC mmioLoadCODECProc(PCODECINIFILEINFO pCODECIniFileInfo,
  761.                                  PHMODULE phMod, ULONG ulFlags);
  762.  
  763.     USHORT mmioGetData(HMMIO hmmio, PMMIOINFO pmmioinfo, USHORT usFlags);
  764. #endif
  765.  
  766.  
  767. /* set default alignment */
  768. #pragma pack()
  769.  
  770. /* nested header management */
  771. #endif
  772.  
  773.