home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mmpm21tk.zip / TK / ULIOT / IOI.H < prev    next >
Text File  |  1993-04-21  |  22KB  |  475 lines

  1. /**************************START OF SPECIFICATIONS **************************/
  2. /*                                                                          */
  3. /* SOURCE FILE NAME:  IOI.H                                                 */
  4. /*                                                                          */
  5. /* DESCRIPTIVE NAME: File Format IO Proc defintions (Internal)              */
  6. /*                   Multi-Media I/O Procedure for digital video files      */
  7. /*                                                                          */
  8. /* COPYRIGHT:     IBM - International Business Machines                     */
  9. /*            Copyright (c) IBM Corporation  1991, 1992, 1993               */
  10. /*                        All Rights Reserved                               */
  11. /*                                                                          */
  12. /* STATUS: OS/2 Release 1.1                                                 */
  13. /*                                                                          */
  14. /************************** END OF SPECIFICATIONS ***************************/
  15.  
  16. /* XLATOFF */
  17. #pragma pack(4)
  18. /* XLATON */
  19.  
  20. /***********************
  21.  * Forward Declarations:
  22.  ***********************/
  23. typedef struct  _TRACKI          *PTRACKI;       /* Ptr to a track list */
  24. typedef struct  _CCB             *PCCB;          /* Ptr to Compression Control Block */
  25. typedef struct  _INSTANCE        *PINSTANCE;     /* pinstance */
  26. typedef struct  _SUBINDEX        *PSUBINDEX;     /* Ptr to subindex structure */
  27. typedef struct  _CLIPBRDENTRY    *PCLIPBRDENTRY; /* Ptr to clipboard entry */
  28. typedef struct  _EDITELEMENT     *PEDITELEMENT;  /* Ptr to edit element */
  29. typedef struct  _FILEELEMENT     *PFILEELEMENT;  /* Ptr to file element */
  30.  
  31. #include "ff.h"              /* Include the File Format Specific header info */
  32.  
  33. /******************
  34.  * Defines:
  35.  ******************/
  36. #define VOIDPARM          111                          /* Void parameter                */
  37. #define HEAP_SIZE         4096                         /* Heap size for DLL             */
  38. #define MMTIMEUNIT        3000                         /* MMTIME = 1/3000s.             */
  39. #define DEFAULTBUFFERSIZE 16384                        /* Default size of Temp buffer.  */
  40.  
  41. #define IS_AUDIO_TRACK(ulMediaType)  (ulMediaType == MMIO_MEDIATYPE_AUDIO)               // Should include MIDI in future...
  42. #define IS_VIDEO_TRACK(ulMediaType)  (ulMediaType == MMIO_MEDIATYPE_DIGITALVIDEO)
  43.  
  44. /*******************************************
  45.  *  TRACKI    - List of valid tracks for
  46.  *              this file instance.
  47.  *******************************************/
  48. typedef struct _TRACKI { /* tracki */
  49.    PTRACKI     ptrackiNext;           /* Ptr to next tracki list entry */
  50.    ULONG       ulTrackID;             /* Track number */
  51.    ULONG       ulLastReadPos;         /* Last read track position. */
  52.    PVOID       pTrackHeader;          /* Pointer to specific media type header for this track */
  53.    ULONG       ulTrackHdrLength;      /* track header length */
  54.    PVOID       pRawHdr;               /* Ptr to raw File header.*/
  55.    ULONG       ulRawHdrLength;        /* Raw header length */
  56.    ULONG       ulMediaType;           /* Media type for this track */
  57.    ULONG       ulNumEntries;          /* (Temp) Current srcbuftab entry in trackmap table */
  58.    ULONG       ulMisc1;               /* File Format specific field */
  59.    ULONG       ulMisc2;               /* File Format specific field */
  60.    ULONG       ulMisc3;               /* File Format specific field */
  61.    ULONG       ulMisc4;               /* File Format specific field */
  62. } TRACKI;
  63.  
  64. /************************************************
  65.  *  CCB - Compression Control Block.
  66.  ************************************************/
  67. typedef struct _CCB  {  /* ccb */
  68.    PCCB             pccbNext;        /* Ptr to next CCB entry. */
  69.    HMODULE          hmodule;         /* Module handle for Compression IO Proc. */
  70.    PMMIOPROC        pmmioproc;       /* Pointer to Compression entry point procedure. */
  71.    ULONG            hCodec;          /* Handle to Codec IO Proc instance */
  72.    CODECINIFILEINFO cifi;            /* Codec ini file info structure */
  73.    CODECOPEN        codecopen;       /* Codec open structure */
  74.    ULONG            ulLastSrcBuf;    /* Ptr to last src buffer, for Multiaperture decompress calls */
  75.    ULONG            ulMisc1;         /* File Format specific field */
  76.    ULONG            ulMisc2;         /* File Format specific field */
  77. } CCB;
  78.  
  79. /************************************************
  80.  *  SUBINDEX - Sub-Index Structure
  81.  ************************************************/
  82. typedef struct _SUBINDEX {  /* subindex */
  83.    PSUBINDEX        psubindexNext;
  84.    ULONG            ulFrameFlags;
  85.    ULONG            ulFrameLength;
  86.    ULONG            ulFrameOffset;
  87. } SUBINDEX;
  88.  
  89. /************************************************
  90.  *  INDEX - Index Structure
  91.  ************************************************/
  92. typedef struct _INDEX {  /* index */
  93.    ULONG            ulFrameFlags;         /* Flags*/
  94.    ULONG            ulFrameLength;
  95.    ULONG            ulFrameOffset;
  96.    PSUBINDEX        psubindexList;
  97. } INDEX;
  98. typedef INDEX *PINDEX;
  99.  
  100. /************************************************
  101.  *  INSTANCE - IO proc instance structure.
  102.  ************************************************/
  103. typedef struct _INSTANCE {  /* instance */
  104.    PRAWFILEHEADER           pRawHdr;                /* Ptr to raw File header.*/
  105.    ULONG                    ulRawHdrLength;         /* Raw header length */
  106.    PMMMOVIEHEADER           pmmhdr;                 /* Ptr to Standard Presentation header for this media type.*/
  107.    ULONG                    ulMmHdrLength;          /* MMOVIEHEADER length.*/
  108.    PTRACKI                  ptrackiList;            /* Pointer to track list of valid tracks for this file.*/
  109.    LONG                     lLastTrack;             /* Last track mmioRead work on. */
  110.    LONG                     lCurrentTrack;          /* Current processing track.*/
  111.    PCCB                     pccbList;               /* Pointer to Compression IO Proc list.*/
  112.    HMMIO                    hmmioFileHandle;        /* File handle. */
  113.    LONG                     lFileCurrentPosition;   /* File's current position.*/
  114.    ULONG                    ulFileLen;              /* Length of file.*/
  115.    ULONG                    ulFlags;                /* Flags*/
  116.    ULONG                    ulMode;                 /* Current IO Proc operation mode*/
  117.    PVOID                    pTempBuffer;            /* Temp buffer for read track.*/
  118.    ULONG                    ulTempBufferSize;       /* Temp buffer size.*/
  119.    ULONG                    ulDataInTempBuffer;     /* Bytes in temp buffer copied from read buffer.*/
  120.    PVOID                    pLastBuffer;            /* Last buffer read into.*/
  121.    ULONG                    ulLastBufferOffset;     /* Offset into last buffer.*/
  122.    PINDEX                   paindexList;            /* Ptr to Frame index (array ) */
  123.    ULONG                    ulNumIndex;             /* Number of entries in the index List */
  124.    PCCB                     pccbLastUsed;           /* Ptr to last used codec for Multiaperture decompress calls */
  125.    ULONG                    ulEditFlags;            /* Editng state flags */
  126.    PEDITELEMENT             pEditList;              /* Dynamic descrition of an edited file */
  127.    PEDITELEMENT             pUndoList;              /* Stack for undo command */
  128.    PEDITELEMENT             pRedoList;              /* Stack for redo command */
  129.    PFILEELEMENT             pFileList;              /* List of pasted files */
  130.    PEDITELEMENT             pCurrentElement;        /* Element being played now */
  131.    ULONG                    ulFrameCount;           /* Number of frames played in current element */
  132.    ULONG                    ulMisc1;                /* File Format specific field */
  133.    ULONG                    ulMisc2;                /* File Format specific field */
  134.    ULONG                    ulMisc3;                /* File Format specific field */
  135.    ULONG                    ulMisc4;                /* File Format specific field */
  136.    SZ                       szFileName[CCHMAXPATH]; /* file name */
  137. } INSTANCE;
  138.  
  139. /* ulFlags defines */
  140. #define     HAVE_PALETTE        0x0001L             /*  Have searched file for first palette is exists */
  141.                                                     /*  so skip it on any MMIOM_MULTITRACKREAD calls   */
  142. #define     OPENED_READONLY     0x0002L             /*  Movie file was opened for Read only (play back) */
  143. #define     OPENED_READWRITE    0x0004L             /*  Movie file was opened for Read/Write (recording/editing) */
  144. #define     OPENED_WRITECREATE  0x0008L             /*  Movie file was opened for Write/Create (recording) */
  145.  
  146. /* ulMode defines */
  147. #define     MODE_NORMALREAD   0x0000L               /* Normal reading operation.*/
  148. #define     MODE_SCANREAD     0x0001L               /* Read only Key frames for video tracks only.*/
  149.                                                     /*  Turn off audio tracks. (return error if.*/
  150.                                                     /*  requested thru MMIOM_MULTITRACKREAD).*/
  151. #define     MODE_REVERSEREAD  0x0002L               /* Read in reverse order. (No audio reads) */
  152.  
  153. /* ulEditFlags defines */
  154. #define     ACTIVE_CLIPBRD_REFERENCE   0x00000001   /* cut or copy outstanding */
  155. #define     DIRTY_BY_EDIT              0x00000002   /* has been edited, needs to be saved */
  156. #define     PENDING_CLIPBRD_CLEAR      0x00000004   /* wait for empty clipboard or cancel */
  157. #define     PENDING_NEW_FILENAME       0x00000008   /* wait for new file name or cancel */
  158. #define     FULLY_QUALIFIED_PATH       0x00000020   /* szFileName is fully qualified */
  159. #define     EDIT_PASTED_FILE           0x00000040   /* file is open for pasting */
  160.  
  161. /*******************************************************
  162.  * FFIO specific optional capabilities function defines:
  163.  *******************************************************/
  164. typedef struct _FFIOFNCT {
  165.  
  166.    PFN   pfnIOProcGetCF;               // MMIOM_GETCF
  167.    PFN   pfnIOProcGetCFEntry;          // MMIOM_GETCFENTRY
  168.  
  169.    PFN   pfnIOProcOpen;                // MMIOM_CLOSE
  170.    PFN   pfnIOProcClose;               // MMIOM_OPEN
  171.    PFN   pfnIOProcRead;                // MMIOM_READ
  172.    PFN   pfnIOProcSeek;                // MMIOM_SEEK
  173.    PFN   pfnIOProcWrite;               // MMIOM_WRITE
  174.  
  175.    PFN   pfnIOProcIdentifyFile;        // MMIOM_IDENTIFYFILE
  176.    PFN   pfnIOProcGetHeader;           // MMIOM_GETHEADER
  177.    PFN   pfnIOProcSetHeader;           // MMIOM_SETHEADER
  178.    PFN   pfnIOProcQueryHeaderLength;   // MMIOM_QUERYHEADERLENGTH
  179.    PFN   pfnIOProcGetFormatName;       // MMIOM_GETFORMATNAME
  180.    PFN   pfnIOProcGetFormatInfo;       // MMIOM_GETFORMATINFO
  181.    PFN   pfnIOProcSeekByTime;          // MMIOM_SEEKBYTIME
  182.    PFN   pfnIOProcTempChange;          // MMIOM_TEMPCHANGE
  183.    PFN   pfnIOProcBeginInsert;         // MMIOM_BEGININSERT
  184.    PFN   pfnIOProcEndInsert;           // MMIOM_ENDINSERT
  185.    PFN   pfnIOProcSave;                // MMIOM_SAVE
  186.    PFN   pfnIOProcSet;                 // MMIOM_SET
  187.    PFN   pfnIOProcCompress;            // MMIOM_COMPRESS
  188.    PFN   pfnIOProcDecompress;          // MMIOM_DECOMPRESS
  189.    PFN   pfnIOProcMultiTrackRead;      // MMIOM_MULTITRACKREAD
  190.    PFN   pfnIOProcMultiTrackWrite;     // MMIOM_MULTITRACKWRITE
  191.  
  192.    PFN   pfnIOProcDelete;              // MMOIM_DELETE
  193.    PFN   pfnIOProcBeginGroup;          // MMIOM_BEGINGROUP
  194.    PFN   pfnIOProcEndGroup;            // MMIOM_ENDGROUP
  195.    PFN   pfnIOProcUndo;                // MMIOM_UNDO
  196.    PFN   pfnIOProcRedo;                // MMIOM_REDO
  197.    PFN   pfnIOProcBeginStream;         // MMIOM_BEGINSTREAM
  198.    PFN   pfnIOProcEndStream;           // MMIOM_ENDSTREAM
  199.  
  200.    PFN   pfnIOProcCopy;                // MMIOM_COPY
  201.    PFN   pfnIOProcCut;                 // MMIOM_CUT
  202.    PFN   pfnIOProcPaste;               // MMIOM_PASTE
  203.    PFN   pfnIOProcClear;               // MMIOM_CLEAR
  204.    PFN   pfnIOProcStatus;              // MMIOM_STATUS
  205.  
  206. } FFIOFNCT, *PFFIOFNCT;
  207.  
  208. extern FFIOFNCT ffiofnct;
  209.  
  210. // Macros
  211.  
  212. #define ENTERCRITX             if (DosRequestMutexSem(hmtxGlobalHeap, SEM_INDEFINITE_WAIT)) return(MMIO_ERROR);
  213. #define ENTERCRIT(rc)          (rc = DosRequestMutexSem(hmtxGlobalHeap, SEM_INDEFINITE_WAIT))
  214. #define EXITCRIT               (DosReleaseMutexSem(hmtxGlobalHeap))
  215.  
  216. /*******************************************************
  217.  * Structures for clipboard editing:
  218.  *******************************************************/
  219.  
  220. // These defines move to a ship_h file as standard (not user) messages
  221.  
  222. #define MMIOM_CUT             MMIOM_USER
  223. #define MMIOM_COPY            MMIOM_USER + 1
  224. #define MMIOM_PASTE           MMIOM_USER + 2
  225. #define MMIOM_CLEAR           MMIOM_USER + 3
  226. #define MMIOM_STATUS          MMIOM_USER + 4
  227. #define MMIOM_DESTROY_CLIPBRD MMIOM_USER + 5
  228. #define MMIOM_WIN_MESSAGE     MMIOM_USER + 6
  229. #define MMIOM_NEW_FILENAME    MMIOM_USER + 7
  230.  
  231. typedef LONG                  USEC;             // microsecond time format
  232. #define MCI_FORMAT_USEC       0x00000013L
  233.  
  234. // These return codes will be moved to a ship_h file
  235.  
  236. #define  MMIOERR_UNSUPPORTED_FUNCTION     USERERR_BASE
  237. #define  MMIOERR_CLIPBRD_ERROR            USERERR_BASE + 1
  238. #define  MMIOERR_CLIPBRD_ACTIVE           USERERR_BASE + 2
  239. #define  MMIOERR_NEED_NEW_FILENAME        USERERR_BASE + 3
  240. #define  MMIOERR_INVALID_TRACK_OPERATION  USERERR_BASE + 4
  241. #define  MMIOERR_INCOMPATIBLE_DATA        USERERR_BASE + 5
  242. #define  MMIOERR_CLIPBRD_EMPTY            USERERR_BASE + 6
  243. #define  MMIOERR_ACCESS_DENIED            USERERR_BASE + 7
  244. #define  MMIOERR_MISSING_FLAG             USERERR_BASE + 8
  245. #define  MMIOERR_INVALID_ITEM_FLAG        USERERR_BASE + 9
  246.  
  247. // These structures will move to a ship_h file later
  248.  
  249. // Parameter structure for MMIOM_STATUS
  250.  
  251. typedef struct _MMIO_STATUS_PARMS {
  252.     HWND    hwndWindow;                   // Some items require a window handle
  253.     ULONG   ulReturn;                     // Return field
  254.     ULONG   ulItem;                       // Use MCI_STATUS_... flags here
  255.     ULONG   ulValue;                      // Status value field
  256.     ULONG   ulType;                       // MCI_FORMAT_... of ulReturn
  257. } MMIO_STATUS_PARMS, *PMMIO_STATUS_PARMS;
  258.  
  259. // Parameter structure for MMIOM_COPY, MMIOM_CUT, MMIOM_CLEAR and MMIOM_PASTE
  260.  
  261. typedef struct _MMIO_MEDIT_PARMS {
  262.    ULONG    ulStrucLen;                   // length of this structure
  263.    HWND     hwndWindow;                   // window handle
  264.    USEC     ulStartTime;                  // starting time
  265.    USEC     ulDuration;                   // duration
  266.    PVOID    pBuffer;                      // optional buffer
  267.    ULONG    ulBufferLength;               // optional buffer's length
  268.    PVOID    pHeader;                      // optional pointer to header for buffer
  269. } MMIO_EDIT_PARMS, *PMMIO_EDIT_PARMS;
  270.  
  271. // Parameter structure for MMIOM_WIN_MESSAGE
  272.  
  273. typedef struct _MMIO_WINDOW_MESSAGE {
  274.    HWND     hwndWindow;                   // these are the parameters
  275.    USHORT   usMessage;                    //  ... passed to the
  276.    MPARAM   lParam1;                      //  ... window procedure
  277.    MPARAM   lParam2;                      //  ... by PM
  278. } MMIO_WINDOW_MESSAGE, PMMIO_WINDOW_MESSAGE;
  279.  
  280. // A linked list of CLIPBRDENTRY structures is placed in the clipboard
  281. // during cut and copy operations. They are read during paste operations.
  282.  
  283. typedef struct _CLIPBRDENTRY {
  284.    ULONG          ulStructLen;            /* length of this structure */
  285.    PCLIPBRDENTRY  pNext;                  /* pointer to next in linked list */
  286.    USEC           ulStartTime;            /* starting time in microseconds */
  287.    USEC           ulDuration;             /* duration in microseconds */
  288.    ULONG          ulFormat;               /* the CF_ clipboard format type */
  289.    SZ             szFileName[CCHMAXPATH]; /* fully qualified file name */
  290. } CLIPBRDENTRY;
  291.  
  292. /* A linked list of EDITELEMENT structures, anchored from the INSTANCE
  293.  * structure, is used to describe the dynamic contents of edited files.
  294.  * The files logical sequence which is used during play and seek operations
  295.  * is determined by ulStart and ulEnd.  The physical data associated with
  296.  * this range is determined from ulFrom and ulTo.
  297.  */
  298.  
  299. typedef struct _EDITELEMENT {
  300.    PEDITELEMENT   pNext;                  /* forward pointer in linked list */
  301.    PEDITELEMENT   pPrevious;              /* back pointer in linked list */
  302.    PEDITELEMENT   pUndoRedoChain;         /* links edit lists on the undo/redo lists */
  303.    PINSTANCE      pInstance;              /* pointer to it's INSTANCE structure */
  304.    ULONG          ulStart;                /* logical starting frame number */
  305.    ULONG          ulDuration;             /* number of frames */
  306.    ULONG          ulPhysical;             /* physical starting frame number */
  307.    ULONG          ulFlags;                /* used by each operation */
  308. } EDITELEMENT;
  309.  
  310. // defines for ulFlags - see also individual files for LSB defines
  311.  
  312. #define AVIO_EDIT_PLAYBACK_CUED          0x80000000
  313.  
  314. /* A FILEELEMENT structure is created for each file that is opened
  315.  * during a paste operation. It is used to keep track of those files
  316.  * which must be closed when the target file is saved.
  317.  */
  318.  
  319. typedef struct _FILEELEMENT {
  320.    PFILEELEMENT   pNext;                  /* pointer to next in linked list */
  321.    PINSTANCE      pInstance;              /* pointer files INSTANCE structure */
  322.    MMIOINFO       mmioInfo;               /* MMIOINFO structure */
  323. } FILEELEMENT;
  324.  
  325. // Prototype Declarations
  326.  
  327. /*****************
  328.  * checkmem.c
  329.  *****************/
  330. RC APIENTRY CheckMem( PVOID, ULONG, ULONG );
  331.  
  332. /*****************
  333.  * ioclose.c
  334.  *****************/
  335. LONG IOProcClose ( PMMIOINFO pmmioinfo );
  336. VOID ioCleanUp ( PMMIOINFO pmmioinfo );
  337.  
  338. /*****************
  339.  * iocodec.c
  340.  *****************/
  341. LONG ioDetermineCodec ( PINSTANCE pinstance,
  342.                         ULONG ulSearchFlags,
  343.                         PCODECINIFILEINFO pcifi );
  344.  
  345. PCCB ioLoadCodecDLL ( PINSTANCE pinstance,
  346.                       PCODECINIFILEINFO pcifi,
  347.                       PULONG phCodec );
  348.  
  349. PCCB ioLoadCodec ( PINSTANCE pinstance,
  350.                    PTRACKI ptracki,
  351.                    PCODECINIFILEINFO pcifi );
  352.  
  353. PCCB ioFindCodec ( PINSTANCE pinstance,
  354.                    ULONG ulCompressType );
  355.  
  356. LONG ioCloseCodec ( PCCB pccb );
  357.  
  358. LONG ioAssociateCodec ( PMMIOINFO pmmioinfo,
  359.                         PINSTANCE pinstance,
  360.                         PCODECASSOC pcodecassoc );
  361.  
  362. /*****************
  363.  * ioentry.c
  364.  *****************/
  365. LONG APIENTRY IOProc_Entry ( PVOID pmmiostr,
  366.                              WORD wMessage,
  367.                              LONG lParam1,
  368.                              LONG lParam2  );
  369.  
  370. LONG ioCheckReturnCode ( PMMIOINFO pmmioinfo,
  371.                          WORD wMsg,
  372.                          LONG returncode );
  373.  
  374. LONG ioInvalidEntry( PMMIOINFO pmmioinfo,
  375.                      PINSTANCE *ppinstance,
  376.                      WORD wMessage,
  377.                      LONG lParam1,
  378.                      LONG lParam2 );
  379.  
  380. /*****************
  381.  * ioformat.c
  382.  *****************/
  383. LONG IOProcGetFormatName ( PSZ  pszNameBuf,
  384.                            LONG NameBufLen );
  385.  
  386. LONG IOProcGetFormatInfo ( PMMFORMATINFO pmmformatinfo );
  387.  
  388. /*****************
  389.  * ioheader.c
  390.  *****************/
  391. LONG IOProcGetHeader ( PMMIOINFO pmmioinfo,
  392.                        PVOID pHeader,
  393.                        LONG  lHeaderLength,
  394.                        LONG  lCurrentTrack );
  395.  
  396. LONG IOProcQueryHeaderLength ( PMMIOINFO pmmioinfo,
  397.                                LONG      lCurrentTrack );
  398.  
  399. LONG ioGetTrackHeader ( PTRACKI ptracki,
  400.                         PVOID   pTrackHeader,
  401.                         ULONG   ulHeaderLength,
  402.                         ULONG   ulFlag );
  403.  
  404. /*****************
  405.  * ioopen.c
  406.  *****************/
  407. LONG IOProcOpen ( PMMIOINFO pmmioinfo,
  408.                   PSZ pszFileName );
  409.  
  410. /*****************
  411.  * ioseek.c
  412.  *****************/
  413. LONG IOProcSeek ( PMMIOINFO pmmioinfo,
  414.                   LONG lSeekValue,
  415.                   LONG lSeekType );
  416.  
  417. LONG ioSeekFile ( PLONG plRc,
  418.                   HMMIO hmmio,
  419.                   LONG lSeekValue );
  420.  
  421. /*****************
  422.  * ioset.c
  423.  *****************/
  424. LONG IOProcSet ( PMMIOINFO pmmioinfo,
  425.                  LONG lParam1,
  426.                  LONG lParam2 );
  427.  
  428. /*****************
  429.  * iosrv.c
  430.  *****************/
  431. LONG ioGetPtrInstance ( PMMIOINFO pmmioinfo,
  432.                         PINSTANCE *ppinstance );
  433.  
  434. PTRACKI ioFindTracki ( PINSTANCE pinstance,
  435.                        ULONG ulTrackID );
  436.  
  437. PTRACKMAP ioFindTrackMapEntry ( PTRACKMAP patrackmapList,
  438.                                 ULONG ulNumTracks,
  439.                                 ULONG ulTrackID );
  440.  
  441. LONG ioIdentifyStorageSystem ( PMMIOINFO pmmioinfo,
  442.                                PSZ pszFileName );
  443.  
  444. VOID ioInstanceInit ( PINSTANCE pinstance );
  445.  
  446. LONG ioAddTracksToMovieHeader ( PINSTANCE pinstance );
  447.  
  448. LONG ioValidateRead ( PINSTANCE pinstance,
  449.                       PVOID pReadBuffer,
  450.                       ULONG ulNumTracks,
  451.                       PTRACKMAP patrackmapList );
  452.  
  453. /************************** Editing Prototypes *************************/
  454.  
  455. LONG           ioEditFindHeaders(PINSTANCE, PMMVIDEOHEADER *, PMMAUDIOHEADER *);
  456. LONG           ioEditSetup(PMMIOINFO);
  457. PEDITELEMENT   ioEditCloneEditList(PINSTANCE);
  458. LONG           ioEditPushEditToUndo(PINSTANCE);
  459. void           ioEditCleanup(PINSTANCE);
  460. ULONG          ioEditTimeToFrame(PMMVIDEOHEADER, ULONG);
  461. ULONG          ioEditFrameToTime(PMMVIDEOHEADER, ULONG);
  462.  
  463. LONG           IOProcSave(PMMIOINFO, PSZ);
  464. LONG           IOProcUndo(PMMIOINFO);
  465. LONG           IOProcRedo(PMMIOINFO);
  466. LONG           IOProcClear(PMMIOINFO, PMMIO_EDIT_PARMS);
  467. LONG           IOProcCut(PMMIOINFO,   PMMIO_EDIT_PARMS);
  468. LONG           IOProcCopy(PMMIOINFO,  PMMIO_EDIT_PARMS);
  469. LONG           IOProcPaste(PMMIOINFO, PMMIO_EDIT_PARMS);
  470. LONG           IOProcStatus(PMMIOINFO, ULONG, PMMIO_STATUS_PARMS);
  471.  
  472. /* XLATOFF */
  473. #pragma pack()
  474. /* XLATON */
  475.