home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v6.zip / MMPM2TK / TK / ADMCT / ADMCFUNC.H < prev    next >
C/C++ Source or Header  |  1993-04-13  |  10KB  |  315 lines

  1. /********************** START OF SPECIFICATIONS ****************************
  2. *
  3. *   SOURCE FILE NAME:   ADMCFUNC.H
  4. *
  5. *   DESCRIPTIVE NAME: mci Waveform Driver include file.
  6. *
  7. *              Copyright (c) IBM Corporation  1991, 1993
  8. *                        All Rights Reserved
  9. *
  10. *   STATUS: MM Extensions 1.0
  11. *
  12. *   FUNCTION: Component function Prototypes.
  13. *
  14. *
  15. *   NOTES:
  16. *
  17. *       DEPENDENCIES:
  18. *
  19. *   EXTERNAL ENTRY POINTS: None.
  20. *   INTERNAL ENTRY POINTS: None.
  21. *
  22. *   EXTERNAL REFERENCES (system):
  23. *
  24. *   MODIFICATION HISTORY:
  25. *   DATE        DEVELOPER           CHANGE DESCRIPTION
  26. *****************************************************************************/
  27.  
  28. /***********************************************
  29. * MCI Message Support Functions
  30. ***********************************************/
  31. RC   MCIStat (FUNCTION_PARM_BLOCK *);// Status
  32. RC   MCIOpen (FUNCTION_PARM_BLOCK *);// Open
  33. RC   MCICue  (FUNCTION_PARM_BLOCK *);// Cue
  34. RC   MCIPlay (FUNCTION_PARM_BLOCK *);// Play
  35. RC   MCIRecd (FUNCTION_PARM_BLOCK *);// Record
  36. RC   MCIPaus (FUNCTION_PARM_BLOCK *);// Pause
  37. RC   MCIClos (FUNCTION_PARM_BLOCK *);// Close
  38. RC   MCISet  (FUNCTION_PARM_BLOCK *);// Set
  39. RC   MCISetCuePoint (FUNCTION_PARM_BLOCK *);// Set Cue Point
  40. RC   MCISetPositionAdvise (FUNCTION_PARM_BLOCK * );
  41. RC   MCIMagic( FUNCTION_PARM_BLOCK *, ULONG );
  42. RC   MCISeek (FUNCTION_PARM_BLOCK *);// Seek
  43. RC   MCIStop (FUNCTION_PARM_BLOCK *);// Stop
  44. RC   MCILoad (FUNCTION_PARM_BLOCK *);// Load
  45. RC   MCIInfo (FUNCTION_PARM_BLOCK *);// Info
  46. RC   MCIResume (FUNCTION_PARM_BLOCK *);// Resume
  47. RC   MCISave (FUNCTION_PARM_BLOCK *);// Save
  48. RC   MCIRest (FUNCTION_PARM_BLOCK *);// Restore
  49. RC   MCISync (FUNCTION_PARM_BLOCK *);// Sync Offset
  50. RC   MCISavf (FUNCTION_PARM_BLOCK *);// Save File
  51. RC   MCIConnector (FUNCTION_PARM_BLOCK* );// Connectors
  52. RC   MCISetPostionAdvise (FUNCTION_PARM_BLOCK *);// Set Position Advise
  53. RC   MCISaveFile (FUNCTION_PARM_BLOCK *);// Save Element
  54. RC   MCICaps (FUNCTION_PARM_BLOCK *);// Get Device Capabilities
  55. #ifdef PTRFIX
  56. RC   MCIExtCaps (FUNCTION_PARM_BLOCK *);// Get Extended Device Capabilities
  57. #endif
  58.  
  59. /***************************************
  60. * Post MCI Notification Messages
  61. ***************************************/
  62.  
  63. RC PostMDMMessage (ULONG ,USHORT,FUNCTION_PARM_BLOCK *);
  64.  
  65. /************************
  66. * Element I/O
  67. ************************/
  68. RC OpenFile (INSTANCE *, ULONG);      // Open Media Element
  69.  
  70. RC InstallIOProc (ULONG, MMIOINFO *); // Install IO Proc
  71.  
  72. RC GetAudioHeader (INSTANCE *);       // Get Audio Header
  73.  
  74. RC SetAudioHeader (INSTANCE *);       // Set Audio Header
  75.  
  76. /************************************************
  77. * Streaming Support Functions
  78. ***********************************************/
  79.  
  80. RC CreateNAssocStream (HID,              /* Source Handler HID */
  81.                        HID,              /* Target Handler HID */
  82.                        HSTREAM *,        /* Stream Handle ()   */
  83.                        INSTANCE *,       /* Instance Pointer   */
  84.                        ULONG,            /* Play or Record     */
  85.                        PEVFN);           /* Event Handler      */
  86.  
  87. RC DestroyStream (HSTREAM * ); // Destroy Stream.
  88.  
  89. RC AssociatePlayList (INSTANCE *,ULONG ); // PlayList Support
  90.  
  91. RC CreateToEvent(INSTANCE *, ULONG); // Enable Event
  92.  
  93. RC APIENTRY RecordEventRoutine (MEVCB *);// Record Stream EventProc
  94.  
  95. RC APIENTRY PlayEventRoutine (MEVCB *);// Play Stream EventProc
  96.  
  97. RC StartRecord (FUNCTION_PARM_BLOCK *); // Start Record Stream
  98.  
  99. RC StartPlay (FUNCTION_PARM_BLOCK *);   // Start Play Stream
  100.  
  101. RC StartSave (FUNCTION_PARM_BLOCK * ); // Start Save function
  102.  
  103. /******************************************
  104. * Audio Device Support Functions
  105. ******************************************/
  106.  
  107. RC InitAudioDevice (INSTANCE *,ULONG ); // Open The Audio Device
  108.  
  109. RC SetAudioDevice (INSTANCE *, PMCI_WAVE_SET_PARMS, ULONG );// Change device
  110.  
  111. VOID SetWaveDeviceDefaults (INSTANCE *, ULONG);// Set Wave device defaults
  112.  
  113. VOID VSDInstToWaveSetParms (PMCI_WAVE_SET_PARMS, INSTANCE *); // Swap Data
  114.  
  115. RC GetPDDName (ULONG , CHAR []);
  116.  
  117.  
  118.  
  119. /********************************************
  120. * Instance Management, Parameter Checking..
  121. ********************************************/
  122.  
  123.  
  124. RC CheckFlags (ULONG); // Check MCI Flags
  125.  
  126. RC CleanUp (PVOID); // Release Memory
  127.  
  128. #pragma linkage( CheckMem, system )
  129.  
  130. #pragma linkage( DBCSGenerateUniqueFile, system )
  131.  
  132. ULONG CheckMem (PVOID, ULONG, ULONG); // Check  Valid Mem
  133.  
  134. RC CopyParms (ULONG,FUNCTION_PARM_BLOCK *, ULONG);// Memory Allocation
  135.  
  136. RC CheckPlayFlags (FUNCTION_PARM_BLOCK *); // Error Checking
  137.  
  138. RC CheckRecordFlags (FUNCTION_PARM_BLOCK *); // Error Checking
  139.  
  140.  
  141. RC CuePointAdd ( INSTANCE *, PMCI_CUEPOINT_PARMS );
  142.  
  143. RC CuePointDelete ( INSTANCE *, PMCI_CUEPOINT_PARMS );
  144.  
  145. void  GetNotifyAbortAccess ( INSTANCE *, PULONG );
  146.  
  147. ULONG CueAbortInProgressNotify( INSTANCE *, FUNCTION_PARM_BLOCK *, ULONG );
  148.  
  149. void GenericThreadAbort( INSTANCE *, FUNCTION_PARM_BLOCK *, ULONG );
  150.  
  151. void ThreadedStop( INSTANCE * );
  152.  
  153. void DestroySetStream ( INSTANCE * );
  154.  
  155. ULONG CueStream( INSTANCE *, ULONG );
  156.  
  157. ULONG CueSetup( FUNCTION_PARM_BLOCK *, ULONG );
  158.  
  159. ULONG GetOldStreamPosition( INSTANCE * ) ;
  160.  
  161. ULONG AbortInProgressNotify( INSTANCE *, FUNCTION_PARM_BLOCK  *, ULONG, ULONG );
  162.  
  163. ULONG PrepareAndCreateStream( INSTANCE *, ULONG, BOOL );
  164.  
  165. ULONG RememberStreamState( INSTANCE *, ULONG, BOOL );
  166.  
  167. ULONG ProcessFromToFlags( FUNCTION_PARM_BLOCK  *, INSTANCE *, ULONG, ULONG );
  168.  
  169. ULONG EnableEvents( INSTANCE * );
  170.  
  171. ULONG StopStream( INSTANCE *, ULONG );
  172.  
  173. ULONG CloseFile( INSTANCE *ulpInstance );
  174.  
  175. ULONG CheckForValidElement( INSTANCE *, PSZ, ULONG);
  176.  
  177. ULONG LoadAbortNotifies( INSTANCE *, FUNCTION_PARM_BLOCK *, ULONG );
  178.  
  179. ULONG OpenHandle( INSTANCE  *, ULONG, HMMIO );
  180.  
  181. ULONG ProcessElement( INSTANCE *, ULONG, ULONG );
  182.  
  183. ULONG SetupTempFiles( INSTANCE   *, ULONG );
  184.  
  185. void OpenInit( INSTANCE  * );
  186.  
  187. ULONG DetermineConnections( INSTANCE *, MMDRV_OPEN_PARMS * );
  188.  
  189. ULONG ConnectToAmp( INSTANCE *, MMDRV_OPEN_PARMS *, ULONG );
  190.  
  191. ULONG StreamSetup ( void );
  192.  
  193. ULONG CreateSemaphores( FUNCTION_PARM_BLOCK * );
  194.  
  195. void NotifyWaitSetup( FUNCTION_PARM_BLOCK *, USHORT, ULONG, ULONG );
  196.  
  197. ULONG AllocateInstance( FUNCTION_PARM_BLOCK * );
  198.  
  199. ULONG UpdateFileHeader( INSTANCE * );
  200.  
  201. RC MCIPaste (FUNCTION_PARM_BLOCK *pFuncBlock);
  202.  
  203. RC MCICopy(FUNCTION_PARM_BLOCK *pFuncBlock, ULONG ulMessage );
  204. RC MCIMajic(FUNCTION_PARM_BLOCK *pFuncBlock);
  205.  
  206. RC GetClipboardData( PVOID *, INSTANCE *, ULONG, PULONG, ULONG, PMMAUDIOHEADER );
  207.  
  208. RC StartPaste( FUNCTION_PARM_BLOCK * );
  209. void PasteNotify ( FUNCTION_PARM_BLOCK *, ULONG, ULONG );
  210. RC StartCopy( FUNCTION_PARM_BLOCK * );
  211. void CopyNotify ( FUNCTION_PARM_BLOCK *, ULONG, ULONG );
  212. RC AddNode ( INSTANCE *, ULONG );
  213. RC RemoveUndoNodes( INSTANCE * );
  214.  
  215.  
  216.  
  217. RC CheckEditFlags(FUNCTION_PARM_BLOCK *pFuncBlock, ULONG );
  218.  
  219. RC ConvertFormat( PMMAUDIOHEADER, INSTANCE *, PVOID *, PULONG );
  220.  
  221. RC Convert16to8( PCHAR, ULONG, PCHAR, PULONG, PMMAUDIOHEADER );
  222.  
  223.  
  224. RC PutClipboardData( PVOID *, INSTANCE *, ULONG, ULONG );
  225.  
  226. RC  GetFromToPosition(LONG, ULONG, MCI_EDIT_PARMS *, INSTANCE *, ULONG *, ULONG * );
  227.  
  228. RC ConvertSampleRates( USHORT, PULONG, USHORT, PVOID, PVOID *, ULONG );
  229.  
  230. RC ConvertLowerSampleRates( USHORT, PULONG, USHORT, PVOID, PVOID *, ULONG );
  231.  
  232. /* I wish this was C++ so I could just overload the operator- but alas,
  233.    we are still using C 8-( */
  234.  
  235. void GetSample16( ULONG, ULONG, ULONG, PVOID, PSHORT, USHORT );
  236.  
  237. void PutSample16( ULONG, ULONG, ULONG, PVOID, SHORT, USHORT );
  238.  
  239. void MultiplyAcc16( PLONG, USHORT, LONG );
  240.  
  241. void GetSample8( ULONG, ULONG, ULONG, PVOID, PCHAR, USHORT );
  242.  
  243. void PutSample8( ULONG, ULONG, ULONG, PVOID, CHAR, USHORT );
  244.  
  245. void MultiplyAcc8( PUSHORT, USHORT, USHORT );
  246.  
  247. void Modulo( PSHORT  x, SHORT y, SHORT z );
  248. void RModulo( PSHORT  x, SHORT y, SHORT z );
  249.  
  250. ULONG GetDefaults( PCHAR pOrigSource, INSTANCE *pInstance );
  251.  
  252. static PCHAR GetToken(PCHAR    pToken, USHORT   LastToken);
  253.  
  254. ULONG PutInInstance( PLONG   pValue, PCHAR   pString );
  255.  
  256.  
  257. // networking stuff
  258. ULONG   BeginQualityofService ( INSTANCE *, LONG );
  259. ULONG   EndQualityofService ( INSTANCE * );
  260.  
  261.  
  262.  
  263.  
  264. /*********************************
  265. * Time Format Support
  266. *********************************/
  267.  
  268. RC ConvertTimeUnits (INSTANCE *, PULONG, ULONG); // To Current Base
  269.  
  270. RC ConvertToMM (INSTANCE *, PULONG, ULONG ); // To MMTIME
  271.  
  272. /*********************************
  273. * Tasking Support
  274. *********************************/
  275. RC AbortWaitOperation (INSTANCE *); // Release Wait Block
  276.  
  277. ULONG MCD_EnterCrit (INSTANCE *);  // Acquire Mutex Sem
  278.  
  279. ULONG MCD_ExitCrit (INSTANCE *);  // Release Mutex Sem
  280.  
  281. ULONG GetSaveSem (INSTANCE * );
  282.  
  283. ULONG GiveUpSaveSem (INSTANCE * ulpInstance);
  284.  
  285. ULONG AcquireProcSem ( void );  // Acquire Global Proc Sem
  286.  
  287. ULONG ReleaseProcSem ( void);  // Release Global Proc Sem
  288.  
  289. /***********************************
  290. * Debug information
  291. ************************************/
  292.  
  293.  
  294. /*****************************
  295. * MCI Driver Entry Point
  296. *****************************/
  297. RC    EXPENTRY mciDriverEntry (PVOID,    /* Instance Pointer  */
  298.                                USHORT,   /* MCI Message       */
  299.                                ULONG,    /* MCI Flags         */
  300.                                ULONG,    /* Data For This Msg */
  301.                                USHORT);  /* User Parameter    */
  302.  
  303. USHORT ADMCEXIT ( void);  /* AudioMCD Exit Routine    */
  304.  
  305. ULONG StreamSetup ( void );
  306.  
  307.  
  308. /*****************************
  309. * Message cue entry point
  310. *****************************/
  311.  
  312. MRESULT EXPENTRY ClipboardProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 );
  313.  
  314.  
  315.