Microsoft-3D-Movie-Maker/kauai/SRC/AUDIOMAN.H

908 lines
30 KiB
C

/* 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_