home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / detk45he.zip / mmio.h < prev    next >
C/C++ Source or Header  |  1999-03-15  |  45KB  |  1,080 lines

  1. /***************************************************************************\
  2. *
  3. * Module Name: MMIO.H
  4. *
  5. * OS/2 2.0 Multimedia Extensions Input/Output Manager Definitions file
  6. *  NOTE:  All structures are UNPACKED!!
  7. *
  8. * Copyright (c) International Business Machines Corporation 1990,1991,1992
  9. *                         All Rights Reserved
  10. *
  11. *
  12. \****************************************************************************/
  13. /* NOINC */
  14. #ifdef __cplusplus
  15.    extern "C" {
  16. #endif
  17. /* INC */
  18.  
  19.  
  20.  
  21. #ifndef _MMIO_H_
  22. #define _MMIO_H_
  23.  
  24. #pragma pack(4)
  25.  
  26. /*
  27.  * MMIO symbols.
  28.  */
  29.  
  30. #ifndef _OS2MEDEF_H
  31. typedef USHORT WORD;
  32. typedef ULONG  DWORD;
  33. typedef DWORD  HMMIO;
  34. #endif
  35.  
  36. typedef HMMIO  HMMCF;
  37. typedef DWORD  FOURCC;
  38. typedef FOURCC *PFOURCC;
  39.  
  40. /*
  41.  * MS compat defines.
  42.  */
  43.  
  44. #ifndef _OS2MEDEF_H
  45. #define LPSTR PSZ
  46. #endif
  47.  
  48. #define HPSTR PSZ
  49.  
  50. /*
  51.  * Define MMIO public data structures.
  52.  */
  53.  
  54. typedef struct _MMCKINFO {    /* mmckinfo                             */
  55.    FOURCC   ckid;             /* Chunk id (FOURCC)                    */
  56.    DWORD    ckSize;           /* Chunk Size (bytes)                   */
  57.    FOURCC   fccType;          /* FourCC Type (if ckid RIFF or LIST)   */
  58.    DWORD    dwDataOffset;     /* File Offset of data portion of chunk */
  59.    DWORD    dwFlags;          /* MMIO_DIRTY (if new chunk)            */
  60.    } MMCKINFO;
  61.  
  62. typedef MMCKINFO FAR *PMMCKINFO;
  63. #define LPMMCKINFO PMMCKINFO     /* MS compat define */
  64.  
  65. typedef LONG (APIENTRY MMIOPROC)                    /*  Format must       */
  66.                                 ( PVOID pmmioinfo,  /*  appear this       */
  67.                                   WORD wMsg,        /*  way for h2inc     */
  68.                                   LONG lParam1,     /*  to work properly. */
  69.                                   LONG lParam2 );
  70.  
  71. typedef MMIOPROC FAR *PMMIOPROC;
  72. typedef MMIOPROC FAR **PPMMIOPROC;
  73. #define LPMMIOPROC PMMIOPROC     /* MS compat define */
  74.  
  75. typedef struct _MMIOINFO {       /* mmioinfo                    */
  76.    DWORD       dwFlags;          /* Open flags                  */
  77.    FOURCC      fccIOProc;        /* FOURCC of the IOProc to use */
  78.    PMMIOPROC   pIOProc;          /* Function Pointer to IOProc to use */
  79.    DWORD       dwErrorRet;       /* Extended Error return code  */
  80.    LONG        cchBuffer;        /* I/O buff size (if used), Fsize if MEM */
  81.    PCHAR       pchBuffer;        /* Start of I/O buff           */
  82.    PCHAR       pchNext;          /* Next char to read or write in buff */
  83.    PCHAR       pchEndRead;       /* Last char in buff can be read + 1  */
  84.    PCHAR       pchEndWrite;      /* Last char in buff can be written + 1 */
  85.    LONG        lBufOffset;       /* Offset in buff to pchNext */
  86.    LONG        lDiskOffset;      /* Disk offset in file       */
  87.    DWORD       adwInfo[4];       /* IOProc specific fields    */
  88.    LONG        lLogicalFilePos;  /* Actual file position, buffered or not */
  89.    DWORD       dwTranslate;      /* Translation field         */
  90.    FOURCC      fccChildIOProc;   /* FOURCC of Child IOProc    */
  91.    PVOID       pExtraInfoStruct; /* Pointer to a structure of related data */
  92.    HMMIO       hmmio;            /* Handle to media element   */
  93.    } MMIOINFO;
  94.  
  95. typedef MMIOINFO FAR *PMMIOINFO;
  96. #define LPMMIOINFO PMMIOINFO     /* MS compat define */
  97.  
  98. typedef struct _MMCFINFO {       /* mmcfinfo                  */
  99.    DWORD    dwHeaderSize;        /* CTOC header size          */
  100.    DWORD    dwEntriesTotal;      /* Num of CTOC table entries */
  101.    DWORD    dwEntriesDeleted;    /* Num of CTOC table entries deleted */
  102.    DWORD    dwEntriesUnused;     /* Num of unused CTOC entries */
  103.    DWORD    dwBytesTotal;        /* Combined byte size of all CGRP elements */
  104.    DWORD    dwBytesDeleted;      /* Byte size of all deleted CGRP elements */
  105.    DWORD    dwHeaderFlags;       /* Info about entire compound file (CF)  */
  106.    WORD     wEntrySize;          /* Size of each CTOC table entry */
  107.    WORD     wNameSize;           /* Size of name field in entry, default 13 */
  108.    WORD     wExHdrFields;        /* Num CTOC header extra fields */
  109.    WORD     wExEntFields;        /* Num CTOC entry extra fields  */
  110.    } MMCFINFO;
  111.  
  112. /*
  113.  * Note:  The are variable length DWORD arrays that may be present
  114.  *        at the end of the MMCFINFO structure.
  115.  */
  116.  
  117. /*   DWORD    (*adwExHdrFldUsage)[];  */   /* Array of header extra usage fields */
  118. /*   DWORD    (*adwExtEntFldUsage)[]; */   /* Array of entry extra usage fields  */
  119. /*   DWORD    (*adwExHdrField)[];     */   /* Array of header extra fields       */
  120.  
  121. typedef MMCFINFO FAR *PMMCFINFO;
  122. #define LPMMCFINFO PMMCFINFO     /* MS compat define */
  123.  
  124. typedef struct _MMCTOCENTRY {    /* mmctocentry                   */
  125.    DWORD    dwOffset;            /* Offset of element within CGRP */
  126.    DWORD    dwSize;              /* Size of element               */
  127.    DWORD    dwMedType;           /* Fourcc of element             */
  128.    DWORD    dwMedUsage;          /* Possible sub type             */
  129.    DWORD    dwCompressTech;      /* Compression technique used    */
  130.    DWORD    dwUncompressBytes;   /* Actual size of uncompressed element */
  131.    } MMCTOCENTRY;
  132.  
  133. /*
  134.  * Note:  A variable length name field and possibly a DWORD array may
  135.  *        be present at the end of the MMCTOCENTRY structure.
  136.  */
  137.  
  138. /*   DWORD    (*adwExEntField)[]; */   /* Array of entry extra fields */
  139. /*   PSZ      pszElementName[];   */   /* Name of element, variable length */
  140.  
  141. typedef MMCTOCENTRY FAR *PMMCTOCENTRY;
  142. #define LPMMCTOCENTRY PMMCTOCENTRY /* MS compat define */
  143.  
  144. /*
  145.  * Conversion Flags/Data Structures:
  146.  */
  147.  
  148. #define MMIO_MEDIATYPE_IMAGE        0x00000001L  /* Image media */
  149. #define MMIO_MEDIATYPE_AUDIO        0x00000002L  /* Audio media */
  150. #define MMIO_MEDIATYPE_MIDI         0x00000004L  /* MIDI media  */
  151. #define MMIO_MEDIATYPE_COMPOUND     0x00000008L  /* Cmpd media  */
  152. #define MMIO_MEDIATYPE_OTHER        0x00000010L  /* Other media */
  153. #define MMIO_MEDIATYPE_UNKNOWN      0x00000020L  /* Unknown media */
  154. #define MMIO_MEDIATYPE_DIGITALVIDEO 0x00000040L  /* Digital Video */
  155. #define MMIO_MEDIATYPE_ANIMATION    0x00000080L  /* Future: Not Supported */
  156. #define MMIO_MEDIATYPE_MOVIE        0x00000100L  /* Movie File */
  157.  
  158. #define MMIO_CANREADTRANSLATED              0x00000001L /*IOProc Cpbilty Flgs*/
  159. #define MMIO_CANWRITETRANSLATED             0x00000002L /* "       "       " */
  160. #define MMIO_CANREADWRITETRANSLATED         0x00000004L /* "       "       " */
  161. #define MMIO_CANREADUNTRANSLATED            0x00000008L /* "       "       " */
  162. #define MMIO_CANWRITEUNTRANSLATED           0x00000010L /* "       "       " */
  163. #define MMIO_CANREADWRITEUNTRANSLATED       0x00000020L /* "       "       " */
  164. #define MMIO_CANSEEKTRANSLATED              0x00000040L /* "       "       " */
  165. #define MMIO_CANSEEKUNTRANSLATED            0x00000080L /* "       "       " */
  166. #define MMIO_CANINSERTUNTRANSLATED          0x00000100L /* "       "       " */
  167. #define MMIO_CANSAVEUNTRANSLATED            0x00000200L /* "       "       " */
  168. #define MMIO_CANINSERTTRANSLATED            0x00000400L /* "       "       " */
  169. #define MMIO_CANSAVETRANSLATED              0x00000800L /* "       "       " */
  170. #define MMIO_CANMULTITRACKREADTRANSLATED    0x00001000L /* "       "       " */
  171. #define MMIO_CANMULTITRACKREADUNTRANSLATED  0x00002000L /* "       "       " */
  172. #define MMIO_CANMULTITRACKWRITETRANSLATED   0x00004000L /* "       "       " */
  173. #define MMIO_CANMULTITRACKWRITEUNTRANSLATED 0x00008000L /* "       "       " */
  174. #define MMIO_CANTRACKSEEKTRANSLATED         0x00010000L /* "       "       " */
  175. #define MMIO_CANTRACKSEEKUNTRANSLATED       0x00020000L /* "       "       " */
  176. #define MMIO_CANTRACKREADTRANSLATED         0x00040000L /* "       "       " */
  177. #define MMIO_CANTRACKREADUNTRANSLATED       0x00080000L /* "       "       " */
  178. #define MMIO_CANTRACKWRITETRANSLATED        0x00100000L /* "       "       " */
  179. #define MMIO_CANTRACKWRITEUNTRANSLATED      0x00200000L /* "       "       " */
  180.  
  181. #define MMIO_IOPROC_STORAGESYSTEM     0x00000001L  /* IOProc Types */
  182. #define MMIO_IOPROC_FILEFORMAT        0x00000002L
  183. #define MMIO_IOPROC_DATAFORMAT        0x00000004L
  184.  
  185. typedef struct _MMFORMATINFO {         /* mmformatinfo             */
  186.    DWORD    dwStructLen;               /* Length of this structure */
  187.    FOURCC   fccIOProc;                 /* IOProc identifier        */
  188.    DWORD    dwIOProcType;              /* Type of IOProc           */
  189.    DWORD    dwMediaType;               /* Media Type               */
  190.    DWORD    dwFlags;                   /* IOProc capability flags  */
  191.    CHAR     achDefaultFormatExt[sizeof(FOURCC) + 1];
  192.                                        /* Default extension 4 + null */
  193.    DWORD    dwCodePage;                /* Code Page                  */
  194.    DWORD    dwLanguage;                /* Language                   */
  195.    LONG     lNameLength;               /* length of identifier string */
  196.    } MMFORMATINFO;
  197.  
  198. typedef MMFORMATINFO *PMMFORMATINFO;
  199.  
  200. #define MMIO_IMAGE_UNKNOWN          0x00000000L  /* Unknown image content */
  201. #define MMIO_IMAGE_DRAWING          0x00000001L  /* Simple drawing        */
  202. #define MMIO_IMAGE_GRAPH            0x00000002L  /* Graphs & Cartoons     */
  203. #define MMIO_IMAGE_PHOTO            0x00000004L  /* Varying Color & Shades */
  204.  
  205. #ifdef INCL_GPI
  206. #ifdef INCL_GPIBITMAPS
  207.  
  208. #define MAX_PALETTE  256
  209.  
  210. typedef struct _XDIBHDR_PREFIX {             /* XDIB Header Prefix */
  211.    ULONG ulMemSize;                          /* Length of bitmap   */
  212.    ULONG ulPelFormat;
  213.    USHORT usTransType;
  214.    ULONG ulTransVal;
  215.    } XDIBHDR_PREFIX;
  216.  
  217. typedef struct _MMXDIBHEADER {               /* XDIB Header */
  218.    XDIBHDR_PREFIX    XDIBHeaderPrefix;
  219.    BITMAPINFOHEADER2 BMPInfoHeader2;
  220.    } MMXDIBHEADER;
  221.  
  222. typedef MMXDIBHEADER *PMMXDIBHEADER;
  223.  
  224. typedef struct _MMIMAGEHEADER {              /* mmimageheader   */
  225.    DWORD             dwHeaderLength;         /* Length in Bytes */
  226.    DWORD             dwContentType;          /* Image content   */
  227.    DWORD             dwMediaType;            /* Media Type      */
  228.    MMXDIBHEADER      mmXDIBHeader;           /* OS/2 2.0 PM compat header */
  229.    RGB2              bmiColors[MAX_PALETTE]; /* PM compatible palette */
  230.    } MMIMAGEHEADER;
  231.  
  232. typedef MMIMAGEHEADER *PMMIMAGEHEADER;
  233.  
  234. #endif
  235. #endif
  236.  
  237. #define MMIO_AUDIO_UNKNOWN          0x00000000L  /* Unknown image content  */
  238. #define MMIO_AUDIO_VOICE            0x00000001L  /* Limited Range          */
  239. #define MMIO_AUDIO_MUSIC            0x00000002L  /* FM Radio or equivalent */
  240. #define MMIO_AUDIO_HIFI             0x00000004L  /* High quality recording */
  241.  
  242. typedef struct _WAVE_HEADER {                /* waveheader          */
  243.    USHORT          usFormatTag;              /* Type of wave format */
  244.    USHORT          usChannels;               /* Number of channels  */
  245.    ULONG           ulSamplesPerSec;          /* Sampling rate       */
  246.    ULONG           ulAvgBytesPerSec;         /* Avg bytes per sec   */
  247.    USHORT          usBlockAlign;             /* Block Alignment in bytes */
  248.    USHORT          usBitsPerSample;          /* Bits per sample     */
  249.    } WAVE_HEADER;
  250.  
  251. typedef struct _XWAV_HEADERINFO {            /* xwaveheader info        */
  252.    ULONG           ulAudioLengthInMS;        /* Audio data in millisecs */
  253.    ULONG           ulAudioLengthInBytes;     /* Audio data in bytes     */
  254.    PVOID           pAdditionalInformation;
  255.    } XWAV_HEADERINFO;
  256.  
  257. typedef struct _MMXWAV_HEADER {              /* mmxwaveheader            */
  258.    WAVE_HEADER     WAVEHeader;               /* Per RIFF WAVE Definition */
  259.    XWAV_HEADERINFO XWAVHeaderInfo;           /* Extended wave definition */
  260.    } MMXWAV_HEADER;
  261.  
  262. typedef struct _MMAUDIOHEADER {              /* mmaudioheader   */
  263.    DWORD           dwHeaderLength;           /* Length in Bytes */
  264.    DWORD           dwContentType;            /* Image content   */
  265.    DWORD           dwMediaType;              /* Media Type      */
  266.    MMXWAV_HEADER   mmXWAVHeader;             /* header          */
  267.    } MMAUDIOHEADER;
  268.  
  269. typedef MMAUDIOHEADER *PMMAUDIOHEADER;
  270.  
  271. #define MMIO_MIDI_UNKNOWN          0x00000000L  /* Unknown midi content   */
  272. #define MMIO_MIDI_VOICE            0x00000001L  /* Limited Range          */
  273. #define MMIO_MIDI_MUSIC            0x00000002L  /* FM Radio or equivalent */
  274. #define MMIO_MIDI_HIFI             0x00000004L  /* High quality recording */
  275.  
  276. /*
  277.  * MMPMMMIO.INI file structure and definitions.
  278.  */
  279.  
  280. #define DLLNAME_SIZE     CCHMAXPATH
  281. #define PROCNAME_SIZE    32
  282. #define MAX_EXTENSION_NAME  4
  283.  
  284. typedef struct _MMINIFILEINFO {               /* mminifileinfo          */
  285.    FOURCC      fccIOProc;                     /* IOProc identifier      */
  286.    CHAR        szDLLName[DLLNAME_SIZE];       /* DLL name string        */
  287.    CHAR        szProcName[PROCNAME_SIZE];     /* Procedure name string  */
  288.    DWORD       dwFlags;                       /* Capability flags       */
  289.    DWORD       dwExtendLen;                   /* Length of ext fields   */
  290.    DWORD       dwMediaType;                   /* Media type             */
  291.    DWORD       dwIOProcType;                  /* Type of IOProc         */
  292.    CHAR        szDefExt[sizeof(MAX_EXTENSION_NAME)];
  293.                                               /* Default file extension */
  294.    } MMINIFILEINFO;
  295.  
  296. typedef MMINIFILEINFO *PMMINIFILEINFO;
  297.  
  298. /*
  299.  * CODEC Structures and type definitions for Rel. 1.1
  300.  */
  301.  
  302.  
  303. #define CODEC_INFO_SIZE    8
  304. #define CODEC_HW_NAME_SIZE 32
  305.  
  306. #ifdef INCL_MMIO_CODEC
  307.  
  308. typedef MMIOPROC FAR *PCODECPROC;
  309.  
  310. typedef struct _CODECINIFILEINFO {           /* codecinifileinfo            */
  311.    ULONG       ulStructLen;                  /* length of this structure    */
  312.    FOURCC      fcc;                          /* File Format ID              */
  313.    CHAR        szDLLName[DLLNAME_SIZE];      /* DLL name string             */
  314.    CHAR        szProcName[PROCNAME_SIZE];    /* Procedure name string       */
  315.    ULONG       ulCompressType;               /* Compression Type            */
  316.    ULONG       ulCompressSubType;            /* Compression SubType         */
  317.    ULONG       ulMediaType;                  /* Media type                  */
  318.    ULONG       ulCapsFlags;                  /* capabilities flags          */
  319.    ULONG       ulFlags;                      /* flags                       */
  320.    CHAR        szHWID[CODEC_HW_NAME_SIZE];  /* specific information        */
  321.    ULONG       ulMaxSrcBufLen;               /* max source buffer length    */
  322.    ULONG       ulSyncMethod;                 /* Synchronization method      */
  323.    ULONG       fccPreferredFormat;           /* Preferred output format     */
  324.    ULONG       ulXalignment;                 /* x alignment - video only    */
  325.    ULONG       ulYalignment;                 /* y alignment - video only    */
  326.    ULONG       ulSpecInfo[CODEC_INFO_SIZE]; /* specific information        */
  327.    } CODECINIFILEINFO;
  328.  
  329. typedef CODECINIFILEINFO *PCODECINIFILEINFO;
  330.  
  331. /*
  332.  * CODECINIFILEINFO synchronization method (ulSyncMethod) values.
  333.  */
  334.  
  335. #define CODEC_SYNC_METHOD_NO_DROP_FRAMES                  0
  336. #define CODEC_SYNC_METHOD_DROP_FRAMES_IMMEDIATELY         1
  337. #define CODEC_SYNC_METHOD_DROP_FRAMES_PRECEDING_KEY       2
  338. #define CODEC_SYNC_METHOD_HARDWARE                        3
  339.  
  340.  
  341. /*
  342.  * CODECINIFILEINFO capabilities (ulCapsFlags) values.
  343.  */
  344.  
  345. #define CODEC_COMPRESS            0x00000001
  346. #define CODEC_DECOMPRESS          0x00000002
  347. #define CODEC_WINDOW_CLIPPING     0x00000004
  348. #define CODEC_PALETTE_TRANS       0x00000008
  349. #define CODEC_SELFHEAL            0x00000010
  350. #define CODEC_SCALE_PEL_DOUBLE    0x00000020
  351. #define CODEC_SCALE_PEL_HALVED    0x00000040
  352. #define CODEC_SCALE_CONTINUOUS    0x00000080
  353. #define CODEC_MULAPERTURE         0x00000100
  354. #define CODEC_4_BIT_COLOR         0x00000200
  355. #define CODEC_8_BIT_COLOR         0x00000400
  356. #define CODEC_16_BIT_COLOR        0x00000800
  357. #define CODEC_24_BIT_COLOR        0x00001000
  358. #define CODEC_HARDWARE            0x00002000
  359. #define CODEC_SYMMETRIC           0x00004000
  360. #define CODEC_ASYMMETRIC          0x00008000
  361. #define CODEC_DIRECT_DISPLAY      0x00010000
  362. #define CODEC_DEFAULT             0x00020000
  363. #define CODEC_ORIGIN_LOWERLEFT    0x00040000
  364. #define CODEC_ORIGIN_UPPERLEFT    0x00080000
  365. #define CODEC_SET_QUALITY         0x00100000  /* quality level is settable */
  366. #define CODEC_DATA_CONSTRAINT     0x00200000  /* data constraint supported */
  367. #define CODEC_HW_OVERLAY          0x00400000
  368. #define CODEC_MULTI_BUFFER        0x00800000
  369. #define CODEC_DITHER_OUTPUT       0x01000000
  370.  
  371. /* Audio related flags */
  372.  
  373. #define CODEC_COMP_REALTIME       0x00020000
  374. #define CODEC_DECOMP_REALTIME     0x00040000
  375.  
  376. /*
  377.  * CODECINIFILEINFO Flag Values (ulFlags) values.
  378.  */
  379.  
  380.  
  381. /* Bit definitions for mmioSet() */
  382. #define         MMIO_SET_EXTENDEDINFO                   0X0001
  383. #define         MMIO_QUERY_EXTENDEDINFO_BASE            0x0002
  384. #define         MMIO_QUERY_EXTENDEDINFO_ALL             0x0004
  385.  
  386.  
  387. /* CODECASSOC structure */
  388. typedef  struct _CODECASSOC{             /* codec information */
  389.    PVOID  pCodecOpen;                    /* codec specific open header */
  390.    PCODECINIFILEINFO pCODECIniFileInfo;  /* codecinifileinfo           */
  391.    } CODECASSOC;
  392.  
  393. /* PCODECASSOC definition */
  394. typedef CODECASSOC      *PCODECASSOC;
  395.  
  396.  
  397. /* MMEXTENDINFO structure */
  398. typedef  struct _MMEXTENDINFO{            /* extended file information */
  399.    ULONG        ulStructLen;              /* length of this structure  */
  400.    ULONG        ulBufSize;                /* total buffer size */
  401.    ULONG        ulFlags;                  /* flags */
  402.    ULONG        ulTrackID;                /* track ID */
  403.    ULONG        ulNumCODECs;              /* number of codec entries */
  404.    PCODECASSOC  pCODECAssoc;              /* pointer to codec info array */
  405.    } MMEXTENDINFO;
  406.  
  407. /* PMMEXTENDINFO definition */
  408. typedef MMEXTENDINFO    *PMMEXTENDINFO;
  409.  
  410. /*
  411.  * MMEXTENDINFO operation (ulFlags) values.
  412.  */
  413. #define MMIO_TRACK                0x00000001
  414. #define MMIO_NORMAL_READ          0x00000002
  415. #define MMIO_SCAN_READ            0x00000004
  416. #define MMIO_REVERSE_READ         0x00000008
  417. #define MMIO_CODEC_ASSOC          0x00000100
  418.  
  419. /* Audio Related defines */
  420.  
  421. #define MMIO_REALTIME_CODEC       0x00000200
  422.  
  423. #define MMIO_RESETTRACKS          -1       /*  Turns off the active track number. */
  424.  
  425. #define CODEC_START              0x0EC0
  426. #define CODEC_END                0x0EFF
  427.  
  428. #define MMIOM_CODEC_CLOSE             CODEC_START + 1
  429. #define MMIOM_CODEC_OPEN              CODEC_START + 2
  430. #define MMIOM_CODEC_QUERYNAME         CODEC_START + 3
  431. #define MMIOM_CODEC_QUERYNAMELENGTH   CODEC_START + 4
  432. #define MMIOM_CODEC_COMPRESS          CODEC_START + 5
  433. #define MMIOM_CODEC_DECOMPRESS        CODEC_START + 6
  434. #define MMIOM_CODEC_HW_CONTROL        CODEC_START + 7
  435.  
  436. #define MMIOMP_CODEC_HW_CONTROL_STOP_DISCARD   0
  437. #define MMIOMP_CODEC_HW_CONTROL_STOP_FLUSH     1
  438. #define MMIOMP_CODEC_HW_CONTROL_STOP_PAUSE     2
  439.  
  440.  
  441.  
  442. #endif
  443. /* End CODEC include */
  444.  
  445. /*
  446.  * Flags:
  447.  */
  448.  
  449. #define MMIO_CREATE     0x00000001L       /* Open */
  450. #define MMIO_CTOCFIRST  0x00000002L       /* Open */
  451. #define MMIO_READ       0x00000004L       /* Open */
  452. #define MMIO_WRITE      0x00000008L       /* Open */
  453. #define MMIO_READWRITE  0x00000010L       /* Open */
  454. #define MMIO_COMPAT     0x00000020L       /* Open */
  455. #define MMIO_EXCLUSIVE  0x00000040L       /* Open */
  456. #define MMIO_DENYWRITE  0x00000080L       /* Open */
  457. #define MMIO_DENYREAD   0x00000100L       /* Open */
  458. #define MMIO_DENYNONE   0x00000200L       /* Open */
  459. #define MMIO_ALLOCBUF   0x00000400L       /* Open */
  460. #define MMIO_DELETE     0x00000800L       /* Open */
  461.  
  462. #define MMIO_USE_TEMP   0x00001000L       /* Open/Close/Save */
  463.  
  464. #define MMIO_INSERTON   0x00000001L       /* Insert */
  465. #define MMIO_INSERTOFF  0x00000002L       /* Insert */
  466.  
  467. #define MMIO_RWMODE     0x00001000L       /* Open */
  468. #define MMIO_SHAREMODE  0x00002000L       /* Open */
  469.  
  470. #define MMIO_DIRTY      0x00004000L       /* Write */
  471.  
  472. #define MMIO_VERTBAR     0x00008000L       /* Open */
  473. #define MMIO_BUFSHARED   0x00010000L       /* Open */
  474. #define MMIO_APPEND      0x00020000L       /* Open */
  475. #define MMIO_NOIDENTIFY  0x00040000L       /* Open */
  476.  
  477.  
  478. #define MMIO_FINDFIRST   0x00000001L       /* CF Find Entry */
  479. #define MMIO_FINDNEXT    0x00000002L       /* CF Find Entry */
  480. #define MMIO_FINDUNUSED  0x00000004L       /* CF Find Entry */
  481. #define MMIO_FINDDELETED 0x00000008L       /* CF Find Entry */
  482.  
  483. #define MMIO_CHANGEDELETED 0x0001         /* CF Change Entry */
  484.  
  485. #define MMIO_CF_FQNAME     0x0001         /* CF Compact      */
  486.  
  487. #define MMIO_FHOPEN      0x0001           /* Close */
  488.  
  489. #define MMIO_EMPTYBUF    0x0001           /* Flush */
  490.  
  491. #define MMIO_CREATERIFF  0x0001           /* CreateChunk */
  492. #define MMIO_CREATELIST  0x0002           /* CreateChunk */
  493. #define MMIO_FINDCHUNK   0x0004           /* Descend     */
  494. #define MMIO_FINDRIFF    0x0008           /* Descend     */
  495. #define MMIO_FINDLIST    0x0010           /* Descend     */
  496.  
  497. #define CTOC_HF_SEQUENTIAL 0x00000001L    /* CTOC dwHeaderFlags */
  498. #define CTOC_HF_MEDSUBTYPE 0x00000002L    /* CTOC dwHeaderFlags */
  499.  
  500. #define CTOC_EFU_UNUSED          0x00000000L /* CTOC extra usage code */
  501. #define CTOC_EFU_LASTMODTIME     0x00000001L /* CTOC extra usage code */
  502. #define CTOC_EFU_CODEPAGE        0x00000002L /* CTOC extra usage code */
  503. #define CTOC_EFU_LANGUAGE        0x00000003L /* CTOC extra usage code */
  504. #define CTOC_EFU_COMPRESSPARAM0  0x00000005L /* CTOC extra usage code */
  505. #define CTOC_EFU_COMPRESSPARAM1  0x00000006L /* CTOC extra usage code */
  506. #define CTOC_EFU_COMPRESSPARAM2  0x00000007L /* CTOC extra usage code */
  507. #define CTOC_EFU_COMPRESSPARAM3  0x00000008L /* CTOC extra usage code */
  508. #define CTOC_EFU_COMPRESSPARAM4  0x00000009L /* CTOC extra usage code */
  509. #define CTOC_EFU_COMPRESSPARAM5  0x0000000AL /* CTOC extra usage code */
  510. #define CTOC_EFU_COMPRESSPARAM6  0x0000000BL /* CTOC extra usage code */
  511. #define CTOC_EFU_COMPRESSPARAM7  0x0000000CL /* CTOC extra usage code */
  512. #define CTOC_EFU_COMPRESSPARAM8  0x0000000DL /* CTOC extra usage code */
  513. #define CTOC_EFU_COMPRESSPARAM9  0x0000000EL /* CTOC extra usage code */
  514. #define CTOC_CHARSET_STANDARD    0x00000000L /* CTOC charset value    */
  515.  
  516. #define MMIO_INSTALLPROC         0x00000001L /* Install IO Proc */
  517. #define MMIO_REMOVEPROC          0x00000002L /* Install IO Proc */
  518. #define MMIO_FINDPROC            0x00000004L /* Install IO Proc */
  519.  
  520. #define MMIO_MATCHFIRST          0x00000010L /* Ini File Handler */
  521. #define MMIO_MATCHNEXT           0x00000020L /* Ini File Handler */
  522. #define MMIO_MATCHFOURCC         0x00000040L /* Ini File Handler */
  523. #define MMIO_MATCHDLL            0x00000080L /* Ini File Handler */
  524. #define MMIO_MATCHPROCEDURENAME  0x00000100L /* Ini File Handler */
  525. #define MMIO_FULLPATH            0x00000200L /* Ini File Handler */
  526. #define MMIO_NOVERIFY            0x00000400L /* Ini File Handler */
  527. #define MMIO_MATCHCOMPRESSTYPE   0x00000800L /* Ini File Handler */
  528. #define MMIO_EXTENDED_STRUCT     0x00001000L /* Ini File ulFlags */
  529. #define MMIO_MATCHCOMPRESSSUBTYPE 0x00002000L /* Ini File Handler */
  530. #define MMIO_MATCHHWID           0x00004000L /* Ini File Handler */
  531. #define MMIO_MATCHCAPSFLAGS      0x00008000L /* Ini File Handler */
  532. #define MMIO_SKIPMATCH           0x00010000L /* Ini/Load Handler */
  533.  
  534. #define MMIO_TOUPPER             0x0001      /* StringToFourcc */
  535.  
  536. #define MMIO_CF_ENTRY_EXISTS     0x00000001L /* Add CGRP element */
  537.  
  538. #define MMIO_FORCE_IDENTIFY_SS   0x00000001L /* Identify */
  539. #define MMIO_FORCE_IDENTIFY_FF   0x00000002L /* Identify */
  540.  
  541. #define MMIO_NOTRANSLATE         0x00000000L /* Translation */
  542. #define MMIO_TRANSLATEDATA       0x00000001L /* Translation */
  543. #define MMIO_TRANSLATEHEADER     0x00000002L /* Translation */
  544. #define MMIO_DECOMPRESS          0x00000004L /* CODEC Decompress */
  545.  
  546. #define MMIO_DEFAULTBUFFER  8192    /* two pages under OS/2 2.0 */
  547.  
  548. #define MMIO_SEEK_IFRAME         0x00010000L  /* Seek to nearest previous IFRAME */
  549.  
  550.  
  551.  
  552. /*
  553.  * Messages :
  554.  */
  555.  
  556. #define MMIOM_START              0x0E00
  557. #define MMIOM_END                0x0EFF
  558.  
  559. #define MMIOM_GETCF              MMIOM_START + 1
  560. #define MMIOM_GETCFENTRY         MMIOM_START + 2
  561.  
  562. #define MMIOM_CLOSE              MMIOM_START + 3
  563. #define MMIOM_OPEN               MMIOM_START + 4
  564. #define MMIOM_READ               MMIOM_START + 5
  565. #define MMIOM_SEEK               MMIOM_START + 6
  566. #define MMIOM_WRITE              MMIOM_START + 7
  567.  
  568. #define MMIOM_IDENTIFYFILE       MMIOM_START + 8
  569. #define MMIOM_GETHEADER          MMIOM_START + 9
  570. #define MMIOM_SETHEADER          MMIOM_START + 10
  571. #define MMIOM_QUERYHEADERLENGTH  MMIOM_START + 11
  572. #define MMIOM_GETFORMATNAME      MMIOM_START + 12
  573. #define MMIOM_GETFORMATINFO      MMIOM_START + 13
  574. #define MMIOM_SEEKBYTIME         MMIOM_START + 14
  575. #define MMIOM_TEMPCHANGE         MMIOM_START + 15
  576. #define MMIOM_BEGININSERT        MMIOM_START + 16
  577. #define MMIOM_ENDINSERT          MMIOM_START + 17
  578. #define MMIOM_SAVE               MMIOM_START + 18
  579. #define MMIOM_SET                MMIOM_START + 19
  580. #define MMIOM_COMPRESS           MMIOM_START + 20
  581. #define MMIOM_DECOMPRESS         MMIOM_START + 21
  582. #define MMIOM_MULTITRACKREAD     MMIOM_START + 22
  583. #define MMIOM_MULTITRACKWRITE    MMIOM_START + 23
  584. #define MMIOM_DELETE             MMIOM_START + 24
  585. #define MMIOM_BEGINGROUP         MMIOM_START + 25
  586. #define MMIOM_ENDGROUP           MMIOM_START + 26
  587. #define MMIOM_UNDO               MMIOM_START + 27
  588. #define MMIOM_REDO               MMIOM_START + 28
  589. #define MMIOM_BEGINSTREAM        MMIOM_START + 29
  590. #define MMIOM_ENDSTREAM          MMIOM_START + 30
  591.  
  592.  
  593. #define MMIOM_CUT                MMIOM_START + 31
  594. #define MMIOM_COPY               MMIOM_START + 32
  595. #define MMIOM_PASTE              MMIOM_START + 33
  596. #define MMIOM_CLEAR              MMIOM_START + 34
  597. #define MMIOM_STATUS             MMIOM_START + 35
  598. #define MMIOM_WINMSG             MMIOM_START + 36
  599. #define MMIOM_BEGINRECORD        MMIOM_START + 37
  600. #define MMIOM_ENDRECORD          MMIOM_START + 38
  601.  
  602. /* These 3 new messages were added with feature 11710 */
  603.  
  604. #define MMIOM_QUERYIMAGE         MMIOM_START + 39
  605. #define MMIOM_QUERYIMAGECOUNT    MMIOM_START + 40
  606. #define MMIOM_SETIMAGE           MMIOM_START + 41
  607.  
  608. #define MMIOM_USER                0x0F00
  609. #define MMIOM_USER_END            0x0FFF
  610.  
  611.  
  612. /* Parameter structure for MMIOM_STATUS */
  613.  
  614. typedef struct _MMIO_STATUS_PARMS {       /* mmio_status_parms                */
  615.     HWND    hwndWindow;                   /* Some items require a window handle */
  616.     ULONG   ulReturn;                     /* Return field */
  617.     ULONG   ulItem;                       /* Use MCI_STATUS_... flags here */
  618.     ULONG   ulValue;                      /* Status value field */
  619.     ULONG   ulType;                       /* MCI_FORMAT_... of ulReturn */
  620. } MMIO_STATUS_PARMS;
  621.  
  622. typedef MMIO_STATUS_PARMS *PMMIO_STATUS_PARMS;
  623.  
  624. /* Parameter structure for MMIOM_COPY, MMIOM_CUT, MMIOM_CLEAR and MMIOM_PASTE */
  625.  
  626. typedef LONG USEC;                        /* microsecond time format */
  627.  
  628. typedef struct _MMIO_EDIT_PARMS {         /* mmio_medit_parms         */
  629.    ULONG    ulStrucLen;                   /* length of this structure */
  630.    HWND     hwndWindow;                   /* window handle */
  631.    USEC     ulStartTime;                  /* starting time in usec */
  632.    USEC     ulDuration;                   /* duration in usec */
  633.    ULONG    ulCurrentFilePosition;        /* current file position in usec */
  634.    ULONG    ulNewFilePosition;            /* returned by IO proc in usec, MCD will issue a seek */
  635.    ULONG    ulNewFileLength;              /* return by IO proc in usec, MCD updates its headers */
  636.    PVOID    pBuffer;                      /* optional buffer */
  637.    ULONG    ulBufferLength;               /* optional buffer's length */
  638.    PVOID    pHeader;                      /* optional pointer to header for buffer */
  639.    BOOL     fUseBuffer;                   /* flag to use Buffer instead of clipboard */
  640. } MMIO_EDIT_PARMS;
  641.  
  642. typedef MMIO_EDIT_PARMS *PMMIO_EDIT_PARMS;
  643.  
  644. /* Parameter structure for MMIOM_WINMSG */
  645.  
  646. typedef struct _MMIO_WINMSG {             /* this comment needed by h2inc */
  647.    HWND     hwndWindow;                   /* these are the parameters */
  648.    USHORT   usMessage;                    /*  ... passed to the       */
  649.    PVOID    pParam1;                      /*  ... window procedure    */
  650.    PVOID    pParam2;                      /*  ... by PM               */
  651. } MMIO_WINMSG;
  652.  
  653. typedef MMIO_WINMSG *PMMIO_WINMSG;
  654.  
  655. /* JPEG IOproc specific structure */
  656.  
  657. #define YUV_YVU           0x0080  /*v013 Compressed data is YUV */
  658. #define DST_Y              20
  659. #define DST_YY             25
  660.  
  661. typedef struct _JPEGOPTIONS   {            /* this comment needed by h2inc         */
  662.     ULONG    ulStructLen;                    /* size of this sturcture                   */
  663.     USHORT  usQuantization[4];              /* Each number may be 1 - 65535       */
  664.     USHORT  usScale;                        /* 1 (1/8 Size) - 8 (Full Size; default)   */
  665.     ULONG    ulColorOrder;                   /* YUV_YVU (Default) or ~YUV_YVU      */
  666.     USHORT  usColorSpaceOut;               /* DST_YY (Default) or DST_Y            */
  667.     } JPEGOPTIONS;
  668.  
  669. typedef JPEGOPTIONS *PJPEGOPTIONS;
  670.  
  671. /*
  672.  * Include error codes for MMIO only.
  673.  */
  674.  
  675. #ifndef _MEERROR_H_
  676. #define INCL_MMIO_ERRORS
  677. #include <meerror.h>
  678. #endif
  679.  
  680. #define MMIO_SUCCESS                    0L
  681. #define MMIO_WARNING                    2L
  682. #define MMIO_ERROR                      0xFFFFFFFF
  683. #define MMIOERR_UNSUPPORTED_MESSAGE     0xFFFFFFFE
  684.  
  685. #define MMIO_CF_SUCCESS                 0L
  686. #define MMIO_CF_FAILURE                 1L
  687.  
  688. #define mmioFOURCC( ch0, ch1, ch2, ch3 )                         \
  689.                   ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) |    \
  690.                   ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
  691.  
  692. #define FOURCC_RIFF   mmioFOURCC( 'R', 'I', 'F', 'F' )
  693. #define FOURCC_LIST   mmioFOURCC( 'L', 'I', 'S', 'T' )
  694. #define FOURCC_MEM    mmioFOURCC( 'M', 'E', 'M', ' ' )
  695. #define FOURCC_DOS    mmioFOURCC( 'D', 'O', 'S', ' ' )
  696. #define FOURCC_BND    mmioFOURCC( 'B', 'N', 'D', ' ' )
  697. #define FOURCC_FREE   mmioFOURCC( 'F', 'R', 'E', 'E' )
  698. #define FOURCC_DEL    mmioFOURCC( 'D', 'E', 'L', ' ' )
  699. #define FOURCC_CTOC   mmioFOURCC( 'C', 'T', 'O', 'C' )
  700. #define FOURCC_CGRP   mmioFOURCC( 'C', 'G', 'R', 'P' )
  701. #define FOURCC_CF     mmioFOURCC( 'C', 'F', ' ', ' ' )
  702.  
  703. #define MMIO_NLS_CHARSET_INFO    8000   /* RCDATA Name ID for NLS          */
  704. #define MMIO_IOPROC_NAME_TABLE   8500   /* RCDATA Name ID for string table */
  705. #define MMIO_CODEC_NAME_TABLE    9000   /* RCDATA Name ID for Codec  table */
  706.  
  707. /*
  708.  * Numeric equivalents of fourcc's.  These are needed for the resource
  709.  * compiler.
  710.  */
  711.  
  712. #define HEX_FOURCC_DOS 0x20534f44L
  713. #define HEX_FOURCC_MEM 0x204d454dL
  714. #define HEX_FOURCC_BND 0x20444e42L
  715. #define HEX_FOURCC_CF  0x20204643L
  716.  
  717. /*
  718.  * Country codes (CC), languages (LC), and dialects (DC).
  719.  */
  720.  
  721. #define MMIO_DEFAULT_CODE_PAGE            437
  722.  
  723. #define MMIO_CC_NONE                        0
  724. #define MMIO_CC_USA                         1
  725. #define MMIO_CC_CANADA                      2
  726. #define MMIO_CC_LATIN_AMERICA               3
  727. #define MMIO_CC_GREECE                     30
  728. #define MMIO_CC_NETHERLANDS                31
  729. #define MMIO_CC_BELGIUM                    32
  730. #define MMIO_CC_FRANCE                     33
  731. #define MMIO_CC_SPAIN                      34
  732. #define MMIO_CC_ITALY                      39
  733. #define MMIO_CC_SWITZERLAND                41
  734. #define MMIO_CC_AUSTRIA                    43
  735. #define MMIO_CC_UNITED_KINGDOM             44
  736. #define MMIO_CC_DENMARK                    45
  737. #define MMIO_CC_SWEDEN                     46
  738. #define MMIO_CC_NORWAY                     47
  739. #define MMIO_CC_WEST_GERMANY               49
  740. #define MMIO_CC_MEXICO                     52
  741. #define MMIO_CC_BRAZIL                     55
  742. #define MMIO_CC_AUSTRALIA                  61
  743. #define MMIO_CC_NEW_ZEALAND                64
  744. #define MMIO_CC_JAPAN                      81
  745. #define MMIO_CC_KOREA                      82
  746. #define MMIO_CC_CHINA                      86
  747. #define MMIO_CC_TAIWAN                     88
  748. #define MMIO_CC_TURKEY                     90
  749. #define MMIO_CC_PORTUGAL                  351
  750. #define MMIO_CC_LUXEMBOURG                352
  751. #define MMIO_CC_ICELAND                   354
  752. #define MMIO_CC_FINLAND                   358
  753.  
  754. #define MMIO_LC_NONE                        0
  755. #define MMIO_DC_NONE                        0
  756. #define MMIO_LC_ARABIC                      1
  757. #define MMIO_DC_ARABIC                      1
  758. #define MMIO_LC_BULGARIAN                   2
  759. #define MMIO_DC_BULGARIAN                   1
  760. #define MMIO_LC_CATALAN                     3
  761. #define MMIO_DC_CATALAN                     1
  762. #define MMIO_LC_TRADITIONAL_CHINESE         4
  763. #define MMIO_DC_TRADITIONAL_CHINESE         1
  764. #define MMIO_LC_SIMPLE_CHINESE              4
  765. #define MMIO_DC_SIMPLE_CHINESE              2
  766. #define MMIO_LC_CZECH                       5
  767. #define MMIO_DC_CZECH                       1
  768. #define MMIO_LC_DANISH                      6
  769. #define MMIO_DC_DANISH                      1
  770. #define MMIO_LC_GERMAN                      7
  771. #define MMIO_DC_GERMAN                      1
  772. #define MMIO_LC_SWISS_GERMAN                7
  773. #define MMIO_DC_SWISS_GERMAN                2
  774. #define MMIO_LC_GREEK                       8
  775. #define MMIO_DC_GREEK                       1
  776. #define MMIO_LC_US_ENGLISH                  9
  777. #define MMIO_DC_US_ENGLISH                  1
  778. #define MMIO_LC_UK_ENGLISH                  9
  779. #define MMIO_DC_UK_ENGLISH                  2
  780. #define MMIO_LC_SPANISH                    10
  781. #define MMIO_DC_SPANISH                     1
  782. #define MMIO_LC_SPANISH_MEXICAN            10
  783. #define MMIO_DC_SPANISH_MEXICAN             2
  784. #define MMIO_LC_FINNISH                    11
  785. #define MMIO_DC_FINNISH                     1
  786. #define MMIO_LC_FRENCH                     12
  787. #define MMIO_DC_FRENCH                      1
  788. #define MMIO_LC_BELGIAN_FRENCH             12
  789. #define MMIO_DC_BELGIAN_FRENCH              2
  790. #define MMIO_LC_CANADIAN_FRENCH            12
  791. #define MMIO_DC_CANADIAN_FRENCH             3
  792. #define MMIO_LC_SWISS_FRENCH               12
  793. #define MMIO_DC_SWISS_FRENCH                4
  794. #define MMIO_LC_HEBREW                     13
  795. #define MMIO_DC_HEBREW                      1
  796. #define MMIO_LC_HUNGARIAN                  14
  797. #define MMIO_DC_HUNGARIAN                   1
  798. #define MMIO_LC_ICELANDIC                  15
  799. #define MMIO_DC_ICELANDIC                   1
  800. #define MMIO_LC_ITALIAN                    16
  801. #define MMIO_DC_ITALIAN                     1
  802. #define MMIO_LC_SWISS_ITALIAN              16
  803. #define MMIO_DC_SWISS_ITALIAN               2
  804. #define MMIO_LC_JAPANESE                   17
  805. #define MMIO_DC_JAPANESE                    1
  806. #define MMIO_LC_KOREAN                     18
  807. #define MMIO_DC_KOREAN                      1
  808. #define MMIO_LC_DUTCH                      19
  809. #define MMIO_DC_DUTCH                       1
  810. #define MMIO_LC_BELGIAN_DUTCH              19
  811. #define MMIO_DC_BELGIAN_DUTCH               2
  812. #define MMIO_LC_NORWEGIAN_BOKMAL           20
  813. #define MMIO_DC_NORWEGIAN_BOKMAL            1
  814. #define MMIO_LC_NORWEGIAN_NYNORSK          20
  815. #define MMIO_DC_NORWEGIAN_NYNORSK           2
  816. #define MMIO_LC_POLISH                     21
  817. #define MMIO_DC_POLISH                      1
  818. #define MMIO_LC_BRAZILIAN_PORTUGUESE       22
  819. #define MMIO_DC_BRAZILIAN_PORTUGUESE        1
  820. #define MMIO_LC_PORTUGUESE                 22
  821. #define MMIO_DC_PORTUGUESE                  2
  822. #define MMIO_LC_RHAETO_ROMANIC             23
  823. #define MMIO_DC_RHAETO_ROMANIC              1
  824. #define MMIO_LC_ROMANIAN                   24
  825. #define MMIO_DC_ROMANIAN                    1
  826. #define MMIO_LC_RUSSIAN                    25
  827. #define MMIO_DC_RUSSIAN                     1
  828. #define MMIO_LC_SERBO_CROATIAN_LATIN       26
  829. #define MMIO_DC_SERBO_CROATIAN_LATIN        1
  830. #define MMIO_LC_SERBO_CROATIAN_CYRILLIC    26
  831. #define MMIO_DC_SERBO_CROATIAN_CYRILLIC     2
  832. #define MMIO_LC_SLOVAK                     27
  833. #define MMIO_DC_SLOVAK                      1
  834. #define MMIO_LC_ALBANIAN                   28
  835. #define MMIO_DC_ALBANIAN                    1
  836. #define MMIO_LC_SWEDISH                    29
  837. #define MMIO_DC_SWEDISH                     1
  838. #define MMIO_LC_THAI                       30
  839. #define MMIO_DC_THAI                        1
  840. #define MMIO_LC_TURKISH                    31
  841. #define MMIO_DC_TURKISH                     1
  842. #define MMIO_LC_URDU                       32
  843. #define MMIO_DC_URDU                        1
  844. #define MMIO_LC_BAHASA                     33
  845. #define MMIO_DC_BAHASA                      1
  846.  
  847. /*
  848.  * Base function prototypes:
  849.  */
  850.  
  851. WORD APIENTRY mmioAdvance( HMMIO hmmio,
  852.                            PMMIOINFO pmmioinfo,
  853.                            WORD wFlags );
  854.  
  855. WORD APIENTRY mmioAscend( HMMIO hmmio,
  856.                           PMMCKINFO pckinfo,
  857.                           WORD wFlags );
  858.  
  859. WORD APIENTRY mmioClose( HMMIO hmmio,
  860.                          WORD wFlags );
  861.  
  862. WORD APIENTRY mmioCreateChunk( HMMIO hmmio,
  863.                                PMMCKINFO pckinfo,
  864.                                WORD wFlags );
  865.  
  866. WORD APIENTRY mmioDescend( HMMIO hmmio,
  867.                            PMMCKINFO pckinfo,
  868.                            PMMCKINFO pckinfoParent,
  869.                            WORD wFlags );
  870.  
  871. WORD APIENTRY mmioFlush( HMMIO hmmio,
  872.                          WORD wFlags );
  873.  
  874. WORD APIENTRY mmioGetInfo( HMMIO hmmio,
  875.                            PMMIOINFO pmmioinfo,
  876.                            WORD wFlags );
  877.  
  878. DWORD APIENTRY mmioGetLastError( HMMIO hmmio );
  879.  
  880. PMMIOPROC APIENTRY mmioInstallIOProc( FOURCC fccIOProc,
  881.                                       PMMIOPROC pIOProc,
  882.                                       DWORD dwflags );
  883.  
  884. LONG APIENTRY mmioIOProc( PMMIOINFO pmmioinfo,
  885.                           WORD wMsg,
  886.                           LONG lParam1,
  887.                           LONG lParam2 );
  888.  
  889. HMMIO APIENTRY mmioOpen( PSZ pszFileName,
  890.                          PMMIOINFO pmmioinfo,
  891.                          DWORD dwOpenFlags );
  892.  
  893. LONG APIENTRY mmioRead( HMMIO hmmio,
  894.                         PCHAR pchBuffer,
  895.                         LONG cBytes );
  896.  
  897. LONG APIENTRY mmioSeek( HMMIO hmmio,
  898.                         LONG lOffset,
  899.                         LONG lOrigin );
  900.  
  901. LONG APIENTRY mmioSendMessage( HMMIO hmmio,
  902.                                WORD wMsg,
  903.                                LONG lParam1,
  904.                                LONG lParam2 );
  905.  
  906. WORD APIENTRY mmioSetBuffer( HMMIO hmmio,
  907.                              PCHAR pchBuffer,
  908.                              LONG cBytes,
  909.                              WORD wFlags );
  910.  
  911. WORD APIENTRY mmioSetInfo( HMMIO hmmio,
  912.                            PMMIOINFO pmmioinfo,
  913.                            WORD wFlags );
  914.  
  915. FOURCC APIENTRY mmioStringToFOURCC( PSZ pszString,
  916.                                     WORD wFlags );
  917.  
  918. LONG APIENTRY mmioWrite( HMMIO hmmio,
  919.                          PCHAR pchBuffer,
  920.                          LONG cBytes );
  921.  
  922. /*
  923.  * Compound File function prototypes:
  924.  */
  925.  
  926. HMMCF APIENTRY mmioCFOpen( PSZ pszFileName,
  927.                            PMMCFINFO pmmcfinfo,
  928.                            PMMIOINFO pmmioinfo,
  929.                            DWORD dwFlags );
  930.  
  931. DWORD APIENTRY mmioCFClose( HMMCF hmmcf,
  932.                             DWORD dwFlags );
  933.  
  934. DWORD APIENTRY mmioCFGetInfo( HMMCF hmmcf,
  935.                               PMMCFINFO pmmcfinfo,
  936.                               DWORD cBytes );
  937.  
  938. DWORD APIENTRY mmioCFSetInfo( HMMCF hmmcf,
  939.                               PMMCFINFO pmmcfinfo,
  940.                               DWORD cBytes );
  941.  
  942. DWORD APIENTRY mmioCFFindEntry( HMMCF hmmcf,
  943.                                 PMMCTOCENTRY pmmctocentry,
  944.                                 DWORD dwFlags );
  945.  
  946. DWORD APIENTRY mmioCFAddEntry( HMMCF hmmcf,
  947.                                PMMCTOCENTRY pmmctocentry,
  948.                                DWORD dwFlags );
  949.  
  950. DWORD APIENTRY mmioCFChangeEntry( HMMCF hmmcf,
  951.                                   PMMCTOCENTRY pmmctocentry,
  952.                                   DWORD dwFlags );
  953.  
  954. DWORD APIENTRY mmioCFDeleteEntry( HMMCF hmmcf,
  955.                                   PMMCTOCENTRY pmmctocentry,
  956.                                   DWORD dwFlags );
  957.  
  958. DWORD APIENTRY mmioCFAddElement( HMMCF hmmcf,
  959.                                  PSZ pszElementName,
  960.                                  FOURCC fccType,
  961.                                  PCHAR pchBuffer,
  962.                                  LONG cchBytes,
  963.                                  DWORD dwFlags );
  964.  
  965. DWORD APIENTRY mmioCFCopy( HMMCF hmmcfSource,
  966.                            PSZ pszDestFileName,
  967.                            DWORD dwFlags );
  968.  
  969. /*
  970.  * Conversion Utility function prototypes:
  971.  */
  972.  
  973. DWORD APIENTRY mmioQueryFormatCount( PMMFORMATINFO pmmformatinfo,
  974.                                      PLONG plNumFormats,
  975.                                      DWORD dwReserved,
  976.                                      DWORD dwFlags );
  977.  
  978. DWORD APIENTRY mmioGetFormats( PMMFORMATINFO pmmformatinfo,
  979.                                LONG lNumFormats,
  980.                                PVOID pFormatInfoList,
  981.                                PLONG plFormatsRead,
  982.                                DWORD dwReserved,
  983.                                DWORD dwFlags );
  984.  
  985. DWORD APIENTRY mmioGetFormatName( PMMFORMATINFO pmmformatinfo,
  986.                                   PSZ pszFormatName,
  987.                                   PLONG plBytesRead,
  988.                                   DWORD dwReserved,
  989.                                   DWORD dwFlags );
  990.  
  991. DWORD APIENTRY mmioIdentifyFile( PSZ pszFileName,
  992.                                  PMMIOINFO pmmioinfo,
  993.                                  PMMFORMATINFO pmmformatinfo,
  994.                                  PFOURCC pfccStorageSystem,
  995.                                  DWORD dwReserved,
  996.                                  DWORD dwFlags );
  997.  
  998. DWORD APIENTRY mmioQueryHeaderLength( HMMIO hmmio,
  999.                                       PLONG plHeaderLength,
  1000.                                       DWORD dwReserved,
  1001.                                       DWORD dwFlags );
  1002.  
  1003. DWORD APIENTRY mmioGetHeader( HMMIO hmmio,
  1004.                               PVOID pHeader,
  1005.                               LONG lHeaderLength,
  1006.                               PLONG plBytesRead,
  1007.                               DWORD dwReserved,
  1008.                               DWORD dwFlags );
  1009.  
  1010. DWORD APIENTRY mmioSetHeader( HMMIO hmmio,
  1011.                               PVOID pHeader,
  1012.                               LONG lHeaderLength,
  1013.                               PLONG plBytesWritten,
  1014.                               DWORD dwReserved,
  1015.                               DWORD dwFlags );
  1016.  
  1017. DWORD APIENTRY mmioIniFileHandler( PMMINIFILEINFO pmminifileinfo,
  1018.                                    DWORD dwFlags );
  1019.  
  1020. DWORD APIENTRY mmioIdentifyStorageSystem( PSZ pszFileName,
  1021.                                           PMMIOINFO pmmioinfo,
  1022.                                           PFOURCC pfccStorageSystem );
  1023.  
  1024. DWORD APIENTRY mmioDetermineSSIOProc( PSZ pszFileName,
  1025.                                       PMMIOINFO pmmioinfo,
  1026.                                       PFOURCC pfccStorageSystem,
  1027.                                       PSZ pszParsedRemainder );
  1028.  
  1029. DWORD APIENTRY mmioQueryIOProcModuleHandle( PMMIOPROC pIOProc,
  1030.                                             PHMODULE phmodIOProc );
  1031.  
  1032. ULONG APIENTRY mmioCFCompact( PSZ pszFileName, ULONG ulFlags );
  1033.  
  1034.  
  1035. /*
  1036.  * MMPMMMIO.INI file migration utility
  1037.  */
  1038.  
  1039. ULONG APIENTRY mmioMigrateIniFile( ULONG ulFlags );
  1040.  
  1041. /*
  1042.  * MMIO CODEC APIs
  1043.  */
  1044.  
  1045. #ifdef INCL_MMIO_CODEC
  1046.  
  1047. ULONG APIENTRY mmioIniFileCODEC( PCODECINIFILEINFO pCODECIniFileInfo,
  1048.                                  ULONG ulFlags );
  1049. ULONG APIENTRY mmioSet(HMMIO hmmio,
  1050.                        PMMEXTENDINFO pUserExtendmminfo,
  1051.                        ULONG ulFlags);
  1052.  
  1053. ULONG APIENTRY mmioQueryCODECName( PCODECINIFILEINFO pCODECIniFileinfo,
  1054.                                   PSZ pszCODECName,
  1055.                                   PULONG pulBytesRead );
  1056.  
  1057. ULONG APIENTRY mmioQueryCODECNameLength( PCODECINIFILEINFO pCODECIniFileinfo,
  1058.                                          PULONG pulNameLength );
  1059.  
  1060.  
  1061. PCODECPROC  APIENTRY mmioLoadCODECProc( PCODECINIFILEINFO pCODECIniFileInfo,
  1062.                                       PHMODULE phMod, ULONG ulFlags );
  1063.  
  1064. USHORT APIENTRY mmioGetData( HMMIO hmmio,
  1065.                            PMMIOINFO pmmioinfo,
  1066.                            USHORT usFlags );
  1067.  
  1068. #endif
  1069.  
  1070. #pragma pack()
  1071.  
  1072. #endif /* _MMIO_H_ */
  1073.  
  1074. /* NOINC */
  1075. #ifdef __cplusplus
  1076. }
  1077. #endif
  1078. /* INC */
  1079.  
  1080.