/* Copyright (c) Microsoft Corporation. Licensed under the MIT License. */ /* Copyright (c) Microsoft Corporation. Licensed under the MIT License. */ /////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Contains AudioMan Pubic Interfaces and Types // // Copyright (c) Microsoft Corporation 1995 // // 4/27/95 ***** // /////////////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef _AUDIOMANPUBLICINTEFACES_ #define _AUDIOMANPUBLICINTEFACES_ /////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Class ID's // /////////////////////////////////////////////////////////////////////////////////////////////////////////// #define _CLSID_AMMixer 94C7E510-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMMixer, 0x94C7E510L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMWavFileSrc 94C7E514-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMWavFileSrc, 0x94C7E514L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMSilentSound 94C7E516-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMSilentSound, 0x94C7E516L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMAppendFilter 94C7E517-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMAppendFilter, 0x94C7E517L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMClipFilter 94C7E518-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMClipFilter, 0x94C7E518L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMConvertFilter 94C7E522-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMConvertFilter, 0x94C7E522L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMDelayFilter 94C7E519-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMDelayFilter, 0x94C7E519L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMGainFilter 94C7E51A-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMGainFilter, 0x94C7E51AL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMGateFilter 94C7E51B-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMGateFilter, 0x94C7E51BL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMLoopFilter 94C7E51C-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMLoopFilter, 0x94C7E51CL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMMixFilter 94C7E51D-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMMixFilter, 0x94C7E51DL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMFaderFilter 94C7E51E-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMFaderFilter, 0x94C7E51EL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMScheduleFilter 94C7E51F-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMScheduleFilter, 0x94C7E51FL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMRandomizeFilter 94C7E520-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMRandomizeFilter, 0x94C7E520L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMDistortFilter 94C7E521-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMDistortFilter, 0x94C7E521L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMCacheFilter 94C7E523-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMCacheFilter, 0x94C7E523L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMTrimFilter 94C7E524-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMTrimFilter, 0x94C7E524L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMStereoFilter 94C7E525-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMStereoFilter, 0x94C7E525L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _CLSID_AMBiasFilter 94C7E526-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(CLSID_AMBiasFilter, 0x94C7E526L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); /////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Interface Definitions // /////////////////////////////////////////////////////////////////////////////////////////////////////////// #define _IID_IAMMixer A0434E40-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMMixer, 0xA0434E40L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMChannel A0434E42-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMChannel, 0xA0434E42L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMWaveOut A0434E43-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMWaveOut, 0xA0434E43L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMSound A0434E44-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMSound, 0xA0434E44L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMNotifySink A0434E45-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMNotifySink, 0xA0434E45L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMWavFileSrc A0434E46-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMWavFileSrc, 0xA0434E46L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMSilentSound A0434E48-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMSilentSound, 0xA0434E48L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMAppendFilter A0434E49-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMAppendFilter, 0xA0434E49L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMClipFilter A0434E4A-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMClipFilter, 0xA0434E4AL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMConvertFilter A0434E4B-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMConvertFilter, 0xA0434E4BL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMDelayFilter A0434E4C-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMDelayFilter, 0xA0434E4CL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMGainFilter A0434E4D-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMGainFilter, 0xA0434E4DL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMGateFilter A0434E4E-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMGateFilter, 0xA0434E4EL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMLoopFilter A0434E4F-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMLoopFilter, 0xA0434E4FL, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMMixFilter A0434E50-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMMixFilter, 0xA0434E50L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMFaderFilter A0434E51-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMFaderFilter, 0xA0434E51L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMScheduleFilter A0434E52-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMScheduleFilter, 0xA0434E52L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMRandomizeFilter A0434E53-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMRandomizeFilter, 0xA0434E53L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMDistortFilter A0434E54-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMDistortFilter, 0xA0434E54L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMCacheFilter A0434E55-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMCacheFilter, 0xA0434E55L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMTrimFilter A0434E56-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMTrimFilter, 0xA0434E56L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMStereoFilter A0434E57-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMStereoFilter, 0xA0434E57L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); #define _IID_IAMBiasFilter A0434E58-9573-11CE-B61B-00AA006EBBE5 DEFINE_GUID(IID_IAMBiasFilter, 0xA0434E58L, 0x9573, 0x11CE, 0xB6, 0x1B, 0x00, 0xAA, 0x00, 0x6E, 0xBB, 0xE5); /////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Interface Typedefs // /////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef interface IAMMixer IAMMixer; typedef IAMMixer FAR * LPMIXER; typedef interface IAMChannel IAMChannel; typedef IAMChannel FAR * LPCHANNEL; typedef interface IAMWaveOut IAMWaveOut; typedef IAMWaveOut FAR * LPWAVEOUT; typedef interface IAMSound IAMSound; typedef IAMSound FAR * LPSOUND; typedef interface IAMNotifySink IAMNotifySink; typedef IAMNotifySink FAR * LPNOTIFYSINK; typedef interface IAMWavFileSrc IAMWavFileSrc; typedef IAMWavFileSrc FAR * LPWAVFILESRC; typedef interface IAMSilentSound IAMSilentSound; typedef IAMSilentSound FAR * LPSILENTSOUND; typedef interface IAMAppendFilter IAMAppendFilter; typedef IAMAppendFilter FAR * LPAPPENDFILTER; typedef interface IAMClipFilter IAMClipFilter; typedef IAMClipFilter FAR * LPCLIPFILTER; typedef interface IAMConvertFilter IAMConvertFilter; typedef IAMConvertFilter FAR * LPCONVERTFILTER; typedef interface IAMDelayFilter IAMDelayFilter; typedef IAMDelayFilter FAR * LPDELAYFILTER; typedef interface IAMGainFilter IAMGainFilter; typedef IAMGainFilter FAR * LPGAINFILTER; typedef interface IAMGateFilter IAMGateFilter; typedef IAMGateFilter FAR * LPGATEFILTER; typedef interface IAMLoopFilter IAMLoopFilter; typedef IAMLoopFilter FAR * LPLOOPFILTER; typedef interface IAMMixFilter IAMMixFilter; typedef IAMMixFilter FAR * LPMIXFILTER; typedef interface IAMFaderFilter IAMFaderFilter; typedef IAMFaderFilter FAR * LPFADERFILTER; typedef interface IAMScheduleFilter IAMScheduleFilter; typedef IAMScheduleFilter FAR * LPSCHEDULEFILTER; typedef interface IAMRandomizeFilter IAMRandomizeFilter; typedef IAMRandomizeFilter FAR * LPRANDOMIZEFILTER; typedef interface IAMDistortFilter IAMDistortFilter; typedef IAMDistortFilter FAR * LPDISTORTFILTER; typedef interface IAMCacheFilter IAMCacheFilter; typedef IAMCacheFilter FAR * LPCACHEFILTER; typedef interface IAMTrimFilter IAMTrimFilter; typedef IAMTrimFilter FAR * LPTRIMFILTER; typedef interface IAMStereoFilter IAMStereoFilter; typedef IAMStereoFilter FAR * LPSTEREOFILTER; typedef interface IAMBiasFilter IAMBiasFilter; typedef IAMBiasFilter FAR * LPBIASFILTER; #ifndef LPSTREAM typedef IStream FAR * LPSTREAM; #endif #ifndef LPUNKNOWN typedef IUnknown FAR * LPUNKNOWN; #endif /////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Audio HRESULT Return Codes // /////////////////////////////////////////////////////////////////////////////////////////////////////////// // Success Codes #define AM_S_FIRST (OLE_S_FIRST + 5000) #define S_ENDOFSOUND (AM_S_FIRST + 1) #define S_SOUNDIDLE (AM_S_FIRST + 2) // Error Codes #define AM_E_FIRST (OLE_E_FIRST + 5000) #define E_BADPCMFORMAT (AM_E_FIRST + 1) #define E_NOSOUNDCARD (AM_E_FIRST + 2) #define E_INVALIDCARD (AM_E_FIRST + 3) #define E_AUDIODEVICEBUSY (AM_E_FIRST + 4) #define E_NOTACTIVE (AM_E_FIRST + 5) #define E_NEEDSETUP (AM_E_FIRST + 6) #define E_OPENDEVICEFAILED (AM_E_FIRST + 7) #define E_INITFAILED (AM_E_FIRST + 8) #define E_NOTINITED (AM_E_FIRST + 9) #define E_MMSYSERROR (AM_E_FIRST + 10) #define E_MMSYSBADDEVICEID (AM_E_FIRST + 11) #define E_MMSYSNOTENABLED (AM_E_FIRST + 12) #define E_MMSYSALLOCATED (AM_E_FIRST + 13) #define E_MMSYSINVALHANDLE (AM_E_FIRST + 14) #define E_MMSYSNODRIVER (AM_E_FIRST + 15) #define E_MMSYSNOMEM (AM_E_FIRST + 16) #define E_MMSYSNOTSUPPORTED (AM_E_FIRST + 17) #define E_MMSYSBADERRNUM (AM_E_FIRST + 18) #define E_MMSYSINVALFLAG (AM_E_FIRST + 19) #define E_MMSYSINVALPARAM (AM_E_FIRST + 20) #define E_MMSYSHANDLEBUSY (AM_E_FIRST + 21) #define E_MMSYSINVALIDALIAS (AM_E_FIRST + 22) #define E_MMSYSBADDB (AM_E_FIRST + 23) #define E_MMSYSKEYNOTFOUND (AM_E_FIRST + 24) #define E_MMSYSREADERROR (AM_E_FIRST + 25) #define E_MMSYSWRITEERROR (AM_E_FIRST + 26) #define E_MMSYSDELETEERROR (AM_E_FIRST + 27) #define E_MMSYSVALNOTFOUND (AM_E_FIRST + 28) #define E_MMSYSNODRIVERCB (AM_E_FIRST + 29) #define E_WAVEERRBADFORMAT (AM_E_FIRST + 30) #define E_WAVEERRSTILLPLAYING (AM_E_FIRST + 31) #define E_WAVERRUNPREPARED (AM_E_FIRST + 32) #define E_WAVERRSYNC (AM_E_FIRST + 33) #define E_TIMERRNOCANDO (AM_E_FIRST + 34) #define E_TIMERRSTRUCT (AM_E_FIRST + 35) #define E_ALREADYREGISTERED (AM_E_FIRST + 36) #define E_CHANNELNOTREGISTERED (AM_E_FIRST + 37) #define E_ALLGROUPSALLOCATED (AM_E_FIRST + 38) #define E_GROUPNOTALLOCATED (AM_E_FIRST + 39) #define E_BADTIMERPERIOD (AM_E_FIRST + 40) #define E_NOTIMER (AM_E_FIRST + 41) // Mixer Error Codes #define E_ALREADYINITED (OLE_E_FIRST + 8) /////////////////////////////////////////////////////////////////////////////////////////////////////////// // // AudioMan common defines // /////////////////////////////////////////////////////////////////////////////////////////////////////////// enum RAND_FREQUENCY { NORMAL_FREQ = 0, LO_OCCURRING = 1, HI_OCCURRING = 2 }; enum SMPTE_FRAMERATES { SMPTE_30_FPS = 3000, SMPTE_29DF_FPS = 2997, SMPTE_29_FPS = 2900, SMPTE_25_FPS = 2500 }; enum NOTIFYSINKFLAGS { NOTIFYSINK_ONSTART = 1, NOTIFYSINK_ONCOMPLETION = 2, NOTIFYSINK_ONERROR = 4, NOTIFYSINK_ONSYNCOBJECT = 8 }; enum DELAY_FLAGS { DELAY_FADE = 1, DELAY_IN = 2, DELAY_OUT = 4, DELAY_FLIP = 8 }; enum WODM_CUSTOM { WODM_SETGAIN = 100, WODM_GETGAIN = 101, }; /////////////////////////////////////////////////////////////////////////////////////////////////////////// // // AudioMan Type definitions // /////////////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct SMPTE { BYTE hour; BYTE min; BYTE sec; BYTE frame; DWORD fps; }SMPTE, FAR * LPSMPTE; typedef struct CacheConfig { DWORD dwSize; BOOL fSrcFormat; LPWAVEFORMATEX lpFormat; DWORD dwFormat; DWORD dwCacheTime; }CACHECONFIG, FAR * LPCACHECONFIG; typedef struct AdvMixerConfig { DWORD dwSize; UINT uVoices; BOOL fRemixEnabled; UINT uBufferTime; }ADVMIXCONFIG, FAR * LPADVMIXCONFIG; typedef struct MixerConfig { DWORD dwSize; LPWAVEFORMATEX lpFormat; DWORD dwFormat; }MIXERCONFIG, FAR * LPMIXERCONFIG; typedef struct SchedulerConfig { DWORD dwSize; DWORD dwUser; DWORD dwDuration; DWORD dwLoops; BOOL fExclusiveBlocks; }SCHEDULERCONFIG, FAR * LPSCHEDULERCONFIG; typedef struct RandomizeConfig { DWORD dwSize; DWORD dwUser; DWORD dwNumSubChannels; DWORD dwMinTime; DWORD dwMaxTime; BOOL fRandomVol; BOOL fRandomPan; DWORD dwMinVol; DWORD dwMaxVol; DWORD dwMaxPan; }RANDOMIZECONFIG, FAR * LPRANDOMIZECONFIG; typedef struct RequestParam { DWORD dwSize; DWORD dwFinishPos; LPNOTIFYSINK lpNotifySink; DWORD fdwNotifyMask; // REFIID riid; }REQUESTPARAM, FAR * LPREQUESTPARAM; /////////////////////////////////////////////////////////////////////////////////////////////////////////// // // AudioMan Interface Definitions // /////////////////////////////////////////////////////////////////////////////////////////////////////////// DECLARE_INTERFACE_( IAMMixer, IUnknown) { //--- IUnknown methods--- STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; //--- IAMMixer methods--- STDMETHOD (TestConfig) (THIS_ LPWAVEOUT pWaveOut, LPMIXERCONFIG pMixerConfig, LPADVMIXCONFIG pAdvMixConfig, BOOL fRecommend) PURE; STDMETHOD (Init) (THIS_ HINSTANCE hInst, LPWAVEOUT pWaveOut, LPMIXERCONFIG pMixerConfig, LPADVMIXCONFIG pAdvMixConfig) PURE; STDMETHOD (Uninit) (THIS) PURE; STDMETHOD (Activate) (THIS_ BOOL fActive) PURE; STDMETHOD (Suspend) (THIS_ BOOL fSuspend) PURE; STDMETHOD (SetConfig) (THIS_ LPMIXERCONFIG pMixerConfig, LPADVMIXCONFIG pAdvMixConfig) PURE; STDMETHOD (GetConfig) (THIS_ LPMIXERCONFIG pMixerConfig, LPADVMIXCONFIG pAdvMixConfig) PURE; STDMETHOD (SetMixerVolume) (THIS_ DWORD dwVolume) PURE; STDMETHOD (GetMixerVolume) (THIS_ LPDWORD lpdwVolume) PURE; STDMETHOD (PlaySound) (THIS_ LPSOUND pSound) PURE; STDMETHOD_(BOOL, RemixMode) (THIS_ BOOL fActive) PURE; STDMETHOD_(DWORD, GetAvgSample) (THIS) PURE; STDMETHOD (AllocGroup) (THIS_ LPDWORD lpdwGroup) PURE; STDMETHOD (FreeGroup) (THIS_ DWORD dwGroup) PURE; STDMETHOD (EnlistGroup) (THIS_ IUnknown FAR * pChannel, DWORD dwGroup) PURE; STDMETHOD (DefectGroup) (THIS_ LPUNKNOWN pUnknown, DWORD dwGroup) PURE; STDMETHOD (StartGroup) (THIS_ DWORD dwGroup, BOOL fStart) PURE; STDMETHOD (ResetGroup) (THIS_ DWORD dwGroup) PURE; STDMETHOD (SetGroupVolume) (THIS_ DWORD dwGroup, DWORD dwVolume) PURE; STDMETHOD (SetGroupGain) (THIS_ DWORD dwGroup, float flDBLeft, float flDBRight, BOOL fAbsolute) PURE; STDMETHOD (SetGroupPosition) (THIS_ DWORD dwGroup, DWORD dwPosition) PURE; STDMETHOD (AllocChannel) (THIS_ LPCHANNEL FAR *ppChannel) PURE; STDMETHOD (RegisterChannel) (THIS_ LPUNKNOWN pUnknown) PURE; STDMETHOD (UnregisterChannel) (THIS_ LPUNKNOWN pUnknown) PURE; STDMETHOD (SetPriority) (THIS_ LPUNKNOWN pUnknown, DWORD dwPriority) PURE; STDMETHOD (GetPriority) (THIS_ LPUNKNOWN pUnknown, LPDWORD lpdwPriority) PURE; STDMETHOD_(void,Refresh) (THIS) PURE; }; DECLARE_INTERFACE_(IAMChannel, IUnknown) { //--- IUnknown methods--- STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; //--- IAMChannel methods--- STDMETHOD (RegisterNotify) (THIS_ LPNOTIFYSINK pNotifySink, DWORD fdwNotifyFlags) PURE; STDMETHOD (SetSoundSrc) (THIS_ LPSOUND pSound) PURE; STDMETHOD (SetCachedSrc) (THIS_ LPSOUND pSound, LPCACHECONFIG pCacheConfig) PURE; STDMETHOD (GetSoundSrc) (THIS_ LPSOUND FAR *ppSound) PURE; STDMETHOD (Play) (THIS) PURE; STDMETHOD (Stop) (THIS) PURE; STDMETHOD (Finish) (THIS) PURE; STDMETHOD_(BOOL,IsPlaying) (THIS) PURE; STDMETHOD_(DWORD,Samples) (THIS) PURE; STDMETHOD (SetPosition) (THIS_ DWORD dwSample) PURE; STDMETHOD (GetPosition) (THIS_ LPDWORD lpdwSample) PURE; STDMETHOD (Mute) (THIS_ BOOL fMute) PURE; STDMETHOD (SetVolume) (THIS_ DWORD dwVolume) PURE; STDMETHOD (GetVolume) (THIS_ LPDWORD lpdwVolume) PURE; STDMETHOD (SetGain) (THIS_ float flLeft, float flRight) PURE; STDMETHOD (GetGain) (THIS_ float FAR * lpflLeft, float FAR * lpflRight) PURE; STDMETHOD (GetSMPTEPos) (THIS_ LPSMPTE lpSMPTE) PURE; STDMETHOD (SetSMPTEPos) (THIS_ LPSMPTE lpSMPTE) PURE; STDMETHOD (GetTimePos) (THIS_ LPDWORD lpdwTime) PURE; STDMETHOD (SetTimePos) (THIS_ DWORD dwTime) PURE; }; DECLARE_INTERFACE_(IAMWaveOut, IUnknown) { //--- IUnknown methods--- STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; //--- IAMWaveOut methods--- STDMETHOD_(UINT,GetNumDevs) (THIS) PURE; STDMETHOD_(MMRESULT, Open) (THIS_ UINT uDeviceID, LPWAVEFORMATEX lpwfx, DWORD dwCallback, DWORD dwCallbackInstance, DWORD fdwOpen) PURE; STDMETHOD_(MMRESULT, Close) (THIS) PURE; STDMETHOD_(MMRESULT, GetDevCaps) (THIS_ UINT uDeviceID, LPWAVEOUTCAPS lpCaps, UINT cbCaps) PURE; STDMETHOD_(MMRESULT, GetVolume) (THIS_ LPDWORD lpdwVolume) PURE; STDMETHOD_(MMRESULT, SetVolume) (THIS_ DWORD dwVolume) PURE; STDMETHOD_(MMRESULT, PrepareHeader) (THIS_ LPWAVEHDR pwh, UINT cbwh) PURE; STDMETHOD_(MMRESULT, UnprepareHeader) (THIS_ LPWAVEHDR pwh, UINT cbwh) PURE; STDMETHOD_(MMRESULT, Write) (THIS_ LPWAVEHDR pwh, UINT cbwh) PURE; STDMETHOD_(MMRESULT, Pause) (THIS) PURE; STDMETHOD_(MMRESULT, Restart) (THIS) PURE; STDMETHOD_(MMRESULT, Reset) (THIS) PURE; STDMETHOD_(MMRESULT, BreakLoop) (THIS) PURE; STDMETHOD_(MMRESULT, GetPosition) (THIS_ LPMMTIME lpmmt, UINT cbmmt) PURE; STDMETHOD_(MMRESULT, GetPitch) (THIS_ LPDWORD lpdwPitch) PURE; STDMETHOD_(MMRESULT, SetPitch) (THIS_ DWORD dwPitch) PURE; STDMETHOD_(MMRESULT, GetPlaybackRate) (THIS_ LPDWORD lpdwRate) PURE; STDMETHOD_(MMRESULT, SetPlaybackRate) (THIS_ DWORD dwRate) PURE; STDMETHOD_(MMRESULT, GetID) (THIS_ UINT FAR *lpuDeviceID) PURE; STDMETHOD_(MMRESULT, Message) (THIS_ UINT uMsg, DWORD dw1, DWORD dw2) PURE; STDMETHOD_(MMRESULT, GetErrorText) (THIS_ MMRESULT err, LPSTR lpText, UINT cchText) PURE; }; DECLARE_INTERFACE_( IAMSound, IUnknown) { //--- IUnknown methods--- STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; //--- IAMSound methods--- STDMETHOD (GetFormat) (THIS_ LPWAVEFORMATEX pFormat, DWORD cbSize) PURE; STDMETHOD_(DWORD,GetSamples) (THIS) PURE; STDMETHOD (GetAlignment) (THIS_ LPDWORD lpdwLeftAlign, LPDWORD lpdwRightAlign) PURE; STDMETHOD (GetSampleData) (THIS_ LPBYTE lpBuffer, DWORD dwPosition, LPDWORD lpdwSamples, LPREQUESTPARAM lpRequestParams) PURE; STDMETHOD (SetCacheSize) (THIS_ DWORD dwCacheSize) PURE; STDMETHOD (SetMode) (THIS_ BOOL fActive, BOOL fRecurse) PURE; }; DECLARE_INTERFACE_( IAMNotifySink, IUnknown) { //--- IUnknown methods--- STDMETHOD (QueryInterface) (THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE; //--- IAMNotifySink methods--- STDMETHOD_(void,OnStart) (THIS_ LPSOUND pSound, DWORD dwPosition) PURE; STDMETHOD_(void,OnCompletion) (THIS_ LPSOUND pSound, DWORD dwPosition) PURE; STDMETHOD_(void,OnError) (THIS_ LPSOUND pSound, DWORD dwPosition, HRESULT hrError) PURE; STDMETHOD_(void,OnSyncObject) (THIS_ LPSOUND pSound, DWORD dwPosition, void * pvObject) PURE; }; DECLARE_INTERFACE_(IAMWavFileSrc, IUnknown) { //--- IAMWavFileSrc methods--- STDMETHOD (InitFromStream) (THIS_ IStream *pStream, BOOL fSpooled) PURE; STDMETHOD (InitFromMemory) (THIS_ char *lpMemory, DWORD dwLength) PURE; STDMETHOD (InitFromFile) (THIS_ char *pAbsFilePath, DWORD dwOffset, BOOL fSpooled) PURE; }; DECLARE_INTERFACE_(IAMScheduleFilter, IUnknown) { //--- IAMScheduleFilter methods--- STDMETHOD (Init) (THIS_ LPSCHEDULERCONFIG pSchedulerConfig) PURE; STDMETHOD (Schedule) (THIS_ LPSOUND pSound, DWORD dwBeginTime, DWORD dwEndTime, DWORD dwLoops, BOOL fGrowSchedule) PURE; STDMETHOD (ScheduleLast) (THIS_ LPSOUND pSound, DWORD dwLoops, BOOL fGrowSchedule) PURE; STDMETHOD (ClearTime) (THIS_ DWORD dwBeginTime, DWORD dwEndTime) PURE; STDMETHOD (ClearAll) (THIS) PURE; STDMETHOD_(DWORD, GetNumScheduled) (THIS) PURE; STDMETHOD (GetSound) (THIS_ LPSOUND FAR *ppSound, DWORD dwIndex) PURE; STDMETHOD (GetTimeBlock) (THIS_ LPSOUND pSound, LPDWORD lpdwBeginTime, LPDWORD lpdwEndTime) PURE; STDMETHOD_(BOOL, IsScheduled) (THIS_ LPSOUND pSound) PURE; STDMETHOD_(BOOL, IsPlaying) (THIS_ LPSOUND pSound) PURE; }; DECLARE_INTERFACE_(IAMRandomizeFilter, IUnknown) { //--- IAMRandomizeFilter methods--- STDMETHOD (Init) (THIS_ LPRANDOMIZECONFIG pRandomizeConfig) PURE; STDMETHOD (Add) (THIS_ LPSOUND pSound, DWORD dwFrequency) PURE; STDMETHOD (Remove) (THIS_ LPSOUND pSound) PURE; STDMETHOD (Clear) (THIS) PURE; }; DECLARE_INTERFACE_( IAMSilentSound, IUnknown) { STDMETHOD (Init) (THIS_ LPWAVEFORMATEX lpwfx, DWORD dwSamples) PURE; }; DECLARE_INTERFACE_(IAMCacheFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSound, LPCACHECONFIG lpCacheConfig) PURE; }; DECLARE_INTERFACE_(IAMTrimFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSound) PURE; }; DECLARE_INTERFACE_(IAMStereoFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSound) PURE; }; DECLARE_INTERFACE_(IAMBiasFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSound) PURE; }; DECLARE_INTERFACE_(IAMClipFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSoundSrc,DWORD dwStartPos, DWORD dwEndPos) PURE; }; DECLARE_INTERFACE_(IAMLoopFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSoundSrc, DWORD dwLoops) PURE; }; DECLARE_INTERFACE_(IAMConvertFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSoundSrc, LPWAVEFORMATEX lpwfxDest) PURE; }; DECLARE_INTERFACE_(IAMGainFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSoundSrc, float flLeft, float flRight) PURE; STDMETHOD (SetGain) (THIS_ float flLeft, float flRight) PURE; }; DECLARE_INTERFACE_(IAMDelayFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSoundSrc, DWORD dwDelay, DWORD dwReflectLeft, DWORD dwReflectRight,DWORD dwDuration,DWORD dwFlags) PURE; }; DECLARE_INTERFACE_(IAMGateFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSoundSrc, float flDBGate) PURE; }; DECLARE_INTERFACE_(IAMMixFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSoundSrcA, LPSOUND pSoundSrcB) PURE; }; DECLARE_INTERFACE_(IAMAppendFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSoundSrcA, LPSOUND pSoundSrcB, BOOL fAlign) PURE; }; DECLARE_INTERFACE_(IAMFaderFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSoundSrc, DWORD dwFadeTime, DWORD dwPosition) PURE; }; DECLARE_INTERFACE_(IAMDistortFilter, IUnknown) { STDMETHOD (Init) (THIS_ LPSOUND pSoundSrc, float flDBThreshold) PURE; }; /////////////////////////////////////////////////////////////////////////////////////////////////////// // // Prototypes // /////////////////////////////////////////////////////////////////////////////////////////////////////// HRESULT AM_CreateInstance(REFCLSID rclsid, IUnknown *pUnkOuter, REFIID riid, void ** ppvObject); /////////////////////////////////////////////////////////////////////////////////////////////////////// // // AudioMan Helper Functions // /////////////////////////////////////////////////////////////////////////////////////////////////////// STDAPI AllocSoundFromStream (LPSOUND FAR *ppSound, LPSTREAM pStream, BOOL fSpooled, LPCACHECONFIG lpCacheConfig); STDAPI AllocSoundFromFile (LPSOUND FAR *ppSound, char FAR *szFileName, DWORD dwOffset, BOOL fSpooled, LPCACHECONFIG lpCacheConfig); STDAPI AllocSoundFromMemory (LPSOUND FAR *ppSound, LPBYTE lpFileData, DWORD dwSize); STDAPI AllocSilentSound (LPSOUND FAR *ppSound, LPWAVEFORMATEX lpwfx, DWORD dwSamples); STDAPI_(LPMIXER) GetAudioManMixer (void); STDAPI AllocClipFilter (LPSOUND FAR *ppSound, LPSOUND pSoundSrc,DWORD dwStartPos, DWORD dwEndPos); STDAPI AllocCacheFilter (LPSOUND FAR *ppSound,LPSOUND pSoundSrc,LPCACHECONFIG lpCacheConfig); STDAPI AllocTrimFilter (LPSOUND FAR *ppSound,LPSOUND pSoundSrc); STDAPI AllocStereoFilter (LPSOUND FAR *ppSound,LPSOUND pSoundSrc); STDAPI AllocBiasFilter (LPSOUND FAR *ppSound,LPSOUND pSoundSrc); STDAPI AllocLoopFilter (LPSOUND FAR *ppSound, LPSOUND pSoundSrc, DWORD dwLoops); STDAPI AllocConvertFilter (LPSOUND FAR *ppSound, LPSOUND pSoundSrc, LPWAVEFORMATEX lpwfx); STDAPI AllocGainFilter (LPSOUND FAR *ppSound, LPSOUND pSoundSrc, float flLeft, float flRight); STDAPI AllocDelayFilter (LPSOUND FAR *ppSound, LPSOUND pSoundSrc, DWORD dwDelay, DWORD dwReflectLeft, DWORD dwReflectRight,DWORD dwDuration,DWORD dwFlags); STDAPI AllocGateFilter (LPSOUND FAR *ppSound, LPSOUND pSoundSrc, float flDBGate); STDAPI AllocDistortFilter (LPSOUND FAR *ppSound, LPSOUND pSoundSrc, float flDBThreshold); STDAPI AllocMixFilter (LPSOUND FAR *ppSound, LPSOUND pSoundSrcA, LPSOUND pSoundSrcB); STDAPI AllocAppendFilter (LPSOUND FAR *ppSound, LPSOUND pSoundSrcA, LPSOUND pSoundSrcB, BOOL fAlign); STDAPI AllocFaderFilter (LPSOUND FAR *ppSound, LPSOUND pSoundSrc, DWORD dwFadeTime, DWORD dwPosition); STDAPI AllocScheduleFilter (LPSOUND FAR *ppSound, LPSCHEDULERCONFIG pSchedulerConfig); STDAPI AllocRandomizeFilter (LPSOUND FAR *ppSound, LPRANDOMIZECONFIG pRandomizeConfig); STDAPI AllocWaveOut (LPWAVEOUT FAR *ppWaveOut, LPMIXER pMixer); STDAPI_(DWORD) TimeToSamples (LPSOUND pSound, DWORD dwTime); STDAPI_(DWORD) SamplesToTime (LPSOUND pSound, DWORD dwSamples); STDAPI_(DWORD) SizeToSamples (LPSOUND pSound, DWORD dwSize); STDAPI_(DWORD) SamplesToSize (LPSOUND pSound, DWORD dwSamples); STDAPI SoundToStreamAsWave(LPSOUND pSound, LPSTREAM pStream, LPDWORD pcbFileSize); STDAPI SoundToFileAsWave(LPSOUND pSound, char FAR *pAbsFilePath); STDAPI_(int) DetectLeaks(BOOL fDebugOut, BOOL fMessageBox); #endif //_AUDIOMANPUBLICINTEFACES_