home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warptlk3.zip / TOOLKIT / SAMPLES / MM / ADMCT / ADMCFUNC.H < prev    next >
C/C++ Source or Header  |  1995-08-24  |  11KB  |  356 lines

  1. /********************** START OF SPE****************************
  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 *, ULONG);       // Get Audio Header
  73.  
  74. RC SetAudioHeader (INSTANCE *);       // Set Audio Header
  75.  
  76. /************************************************
  77. * Streaming Support Functions
  78. ***********************************************/
  79.  
  80. RC CreateStream ( INSTANCE * );
  81.  
  82. RC DestroyStream ( INSTANCE  *pInstance);
  83.  
  84. RC AssociatePlayList (INSTANCE * ); // PlayList Support
  85.  
  86. RC CreateToEvent(INSTANCE *, ULONG); // Enable Event
  87.  
  88. RC APIENTRY RecordEventRoutine (MEVCB *);// Record Stream EventProc
  89.  
  90. RC APIENTRY PlayEventRoutine (MEVCB *);// Play Stream EventProc
  91.  
  92. typedef VOID (* _Optlink ADMCTHREAD)(void *);
  93.  
  94. RC _Optlink StartRecord (VOID *); // Start Record Stream
  95.  
  96. RC _Optlink StartPlay (VOID *);   // Start Play Stream
  97.  
  98. RC _Optlink StartSave (VOID * ); // Start Save function
  99.  
  100. /******************************************
  101. * Audio Device Support Functions
  102. ******************************************/
  103.  
  104. RC InitAudioDevice (INSTANCE *,ULONG ); // Open The Audio Device
  105.  
  106. RC SetAudioDevice (INSTANCE *, PMMAUDIOHEADER );// Change device
  107.  
  108. VOID SetWaveDeviceDefaults (INSTANCE *);// Set Wave device defaults
  109.  
  110. //VOID VSDInstToWaveSetParms (PMCI_WAVE_SET_PARMS, INSTANCE *); // Swap Data
  111.  
  112. //RC GetPDDName (ULONG , CHAR []);
  113.  
  114. ULONG ModifyConnection( INSTANCE   *pInstance );
  115.  
  116. ULONG GetMixerInfo( INSTANCE   *ulpInstance, PCONCB pconcb );
  117.  
  118.  
  119. /********************************************
  120. * Instance Management, Parameter Checking..
  121. ********************************************/
  122.  
  123. ULONG ObtainDefaults(  INSTANCE   *ulpInstance);
  124.  
  125. RC CheckFlags (ULONG); // Check MCI Flags
  126.  
  127. RC CleanUp (PVOID); // Release Memory
  128.  
  129.  
  130. #pragma linkage( DBCSGenerateUniqueFile, system )
  131.  
  132. RC CopyParms (ULONG,FUNCTION_PARM_BLOCK *, ULONG);// Memory Allocation
  133.  
  134. RC CheckPlayFlags (FUNCTION_PARM_BLOCK *); // Error Checking
  135.  
  136. RC CheckRecordFlags (FUNCTION_PARM_BLOCK *); // Error Checking
  137.  
  138.  
  139. RC CuePointAdd ( INSTANCE *, PMCI_CUEPOINT_PARMS );
  140.  
  141. RC CuePointDelete ( INSTANCE *, PMCI_CUEPOINT_PARMS );
  142.  
  143. void  GetNotifyAbortAccess ( INSTANCE *, PULONG );
  144.  
  145. ULONG CueAbortInProgressNotify( INSTANCE *, FUNCTION_PARM_BLOCK *, ULONG );
  146.  
  147. void GenericThreadAbort( INSTANCE *, FUNCTION_PARM_BLOCK *, ULONG );
  148.  
  149. void ThreadedStop( INSTANCE * );
  150.  
  151. void DestroySetStream ( INSTANCE * );
  152.  
  153. ULONG CueStream( INSTANCE *, ULONG );
  154.  
  155. ULONG CueSetup( FUNCTION_PARM_BLOCK *, ULONG );
  156.  
  157. ULONG GetOldStreamPosition( INSTANCE * ) ;
  158.  
  159. ULONG AbortInProgressNotify( INSTANCE *, FUNCTION_PARM_BLOCK  *, ULONG, ULONG );
  160.  
  161. ULONG PrepareAndCreateStream( INSTANCE *, ULONG, ULONG );
  162.  
  163. ULONG RememberStreamState( INSTANCE *, ULONG, BOOL );
  164.  
  165. ULONG ProcessFromToFlags( FUNCTION_PARM_BLOCK  *, INSTANCE *, ULONG, ULONG );
  166.  
  167. ULONG EnableEvents( INSTANCE * );
  168.  
  169. ULONG StopStream2( INSTANCE *, ULONG );
  170.  
  171. ULONG CloseFile( INSTANCE *ulpInstance );
  172.  
  173. ULONG CheckForValidElement( INSTANCE *, PSZ, ULONG);
  174.  
  175. ULONG LoadAbortNotifies( INSTANCE *, FUNCTION_PARM_BLOCK *, ULONG );
  176.  
  177. ULONG OpenHandle( INSTANCE  *, ULONG, HMMIO );
  178.  
  179. ULONG ProcessElement( INSTANCE *, ULONG, ULONG );
  180.  
  181. ULONG SetupTempFiles( INSTANCE   *, ULONG );
  182.  
  183. void OpenInit( INSTANCE  * );
  184.  
  185. ULONG DetermineConnections( INSTANCE *, MMDRV_OPEN_PARMS * );
  186.  
  187. ULONG ConnectToAmp( INSTANCE *, MMDRV_OPEN_PARMS *, ULONG );
  188.  
  189. ULONG StreamSetup ( void );
  190.  
  191. ULONG CreateSemaphores( FUNCTION_PARM_BLOCK * );
  192.  
  193. void NotifyWaitSetup( FUNCTION_PARM_BLOCK *, USHORT, ULONG, ULONG );
  194.  
  195. ULONG AllocateInstance( FUNCTION_PARM_BLOCK * );
  196.  
  197. ULONG UpdateFileHeader( INSTANCE * );
  198.  
  199. RC MCIPaste (FUNCTION_PARM_BLOCK *pFuncBlock);
  200.  
  201. RC MCICopy(FUNCTION_PARM_BLOCK *pFuncBlock, ULONG ulMessage );
  202. RC MCIMajic(FUNCTION_PARM_BLOCK *pFuncBlock);
  203.  
  204. RC GetClipboardData( PVOID *, INSTANCE *, ULONG, PULONG, ULONG, PMMAUDIOHEADER );
  205.  
  206. RC _Optlink StartPaste( VOID * );
  207.  
  208. //RC StartPaste( FUNCTION_PARM_BLOCK * );
  209. void PasteNotify ( FUNCTION_PARM_BLOCK *, ULONG, ULONG );
  210.  
  211. RC _Optlink StartCopy( VOID * );
  212. //RC StartCopy( FUNCTION_PARM_BLOCK * );
  213.  
  214. void CopyNotify ( FUNCTION_PARM_BLOCK *, ULONG, ULONG );
  215. RC AddNode ( INSTANCE *, ULONG );
  216. RC RemoveUndoNodes( INSTANCE * );
  217.  
  218.  
  219.  
  220. RC CheckEditFlags(FUNCTION_PARM_BLOCK *pFuncBlock, ULONG );
  221.  
  222. RC ConvertFormat( PMMAUDIOHEADER, INSTANCE *, PVOID *, PULONG );
  223.  
  224. RC Convert16to8( PCHAR, ULONG, PCHAR, PULONG, PMMAUDIOHEADER );
  225.  
  226.  
  227. RC PutClipboardData( PVOID *, INSTANCE *, ULONG, ULONG );
  228.  
  229. RC  GetFromToPosition(LONG, ULONG, MCI_EDIT_PARMS *, INSTANCE *, ULONG *, ULONG * );
  230.  
  231. RC ConvertSampleRates( USHORT, PULONG, USHORT, PVOID, PVOID *, ULONG );
  232.  
  233. RC ConvertLowerSampleRates( USHORT, PULONG, USHORT, PVOID, PVOID *, ULONG );
  234.  
  235. /* I wish this was C++ so I could just overload the operator- but alas,
  236.    we are still using C 8-( */
  237.  
  238. void GetSample16( ULONG, ULONG, ULONG, PVOID, PSHORT, USHORT );
  239.  
  240. void PutSample16( ULONG, ULONG, ULONG, PVOID, SHORT, USHORT );
  241.  
  242. void MultiplyAcc16( PLONG, USHORT, LONG );
  243.  
  244. void GetSample8( ULONG, ULONG, ULONG, PVOID, PCHAR, USHORT );
  245.  
  246. void PutSample8( ULONG, ULONG, ULONG, PVOID, CHAR, USHORT );
  247.  
  248. void MultiplyAcc8( PUSHORT, USHORT, USHORT );
  249.  
  250. void Modulo( PSHORT  x, SHORT y, SHORT z );
  251. void RModulo( PSHORT  x, SHORT y, SHORT z );
  252.  
  253. ULONG GetDefaults( PCHAR pOrigSource, INSTANCE *pInstance );
  254.  
  255. PCHAR GetToken(PCHAR    pToken, USHORT   LastToken);
  256.  
  257. ULONG PutInInstance( PLONG   pValue, PCHAR   pString );
  258.  
  259.  
  260. // networking stuff
  261. ULONG   BeginQualityofService ( INSTANCE *, LONG );
  262. ULONG   EndQualityofService ( INSTANCE * );
  263.  
  264. // codec stuff
  265.  
  266. ULONG   SetupCodec( INSTANCE *pInstance, USHORT usFormatTag );
  267.  
  268. ULONG   DataTranslation( INSTANCE      *pInstance );
  269. ULONG   InstallProtocol( INSTANCE      *pInstance );
  270.  
  271.  
  272.  
  273.  
  274. /*********************************
  275. * Time Format Support
  276. *********************************/
  277.  
  278. RC ConvertTimeUnits (INSTANCE *, PULONG, ULONG); // To Current Base
  279.  
  280. RC ConvertToMM (INSTANCE *, PULONG, ULONG ); // To MMTIME
  281.  
  282. /*********************************
  283. * Tasking Support
  284. *********************************/
  285. RC AbortWaitOperation (INSTANCE *); // Release Wait Block
  286.  
  287. ULONG MCD_EnterCrit (INSTANCE *);  // Acquire Mutex Sem
  288.  
  289. ULONG MCD_ExitCrit (INSTANCE *);  // Release Mutex Sem
  290.  
  291. ULONG GetSaveSem (INSTANCE * );
  292.  
  293. ULONG GiveUpSaveSem (INSTANCE * ulpInstance);
  294.  
  295. ULONG AcquireProcSem ( void );  // Acquire Global Proc Sem
  296.  
  297. ULONG ReleaseProcSem ( void);  // Release Global Proc Sem
  298.  
  299. /***********************************
  300. * Debug information
  301. ************************************/
  302.  
  303.  
  304. /***********************************
  305. * SpiStreamCalls
  306. ************************************/
  307.  
  308. ULONG ADMCSeekStream ( INSTANCE *pInstance, ULONG ulFlags, LONG  lSeekPoint );
  309. ULONG ADMCStopStream ( INSTANCE *pInstance, ULONG ulFlags );
  310. ULONG ADMCAssociate ( HSTREAM hstream, HID hid, PACB pacb );
  311. ULONG APIENTRY ADMCDisableEvent ( HEVENT hevent );
  312. ULONG APIENTRY ADMCEnableEvent ( PEVCB pevcb, PHEVENT phevent );
  313. //void SyncAudioHeader( INSTANCE * ulpInstance );
  314. ULONG StartStream( INSTANCE *pInstance, ULONG ulStartFlags );
  315. ULONG TestNetwork( INSTANCE *pInstance, PMCI_WAVE_GETDEVCAPS_PARMS pExtDevCaps );
  316. ULONG ReleaseStreamingSemaphore( INSTANCE *pInstance );
  317. ULONG GetStreamingSemaphore( INSTANCE *pInstance );
  318. ULONG CheckForConnection( INSTANCE *pInstance );
  319. ULONG CanPlayRecord( INSTANCE *pInstance, ULONG ulDirection );
  320. ULONG FindAmp( INSTANCE *pInstance );
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327. /*****************************
  328. * MCI Driver Entry Point
  329. *****************************/
  330. ULONG APIENTRY  MM_mciDriverEntryADMC ( PVOID  ,  /* Instance Pointer  */
  331.                                         USHORT ,  /* MCI Message       */
  332.                                         ULONG  ,  /* MCI Flags         */
  333.                                         ULONG  ,  /* Data For This Msg */
  334.                                         USHORT);  /* User Parameter    */
  335.  
  336. USHORT ADMCEXIT ( void);  /* AudioMCD Exit Routine    */
  337.  
  338. ULONG StreamSetup ( void );
  339.  
  340.  
  341. /*****************************
  342. * Message cue entry point
  343. *****************************/
  344.  
  345. MRESULT EXPENTRY ClipboardProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 );
  346.  
  347. /* MMIO api entry */
  348.  
  349. ULONG APIENTRY DBCSGenerateUniqueFile( PSZ pszPathName,
  350.                                        PULONG pulPathLength,
  351.                                        PHFILE phfile );
  352.  
  353. ULONG StatusLevelEvent (INSTANCE * ulpInstance, MEVCB *pevcb);
  354.  
  355.  
  356.