11 DEFINE_GUID(CLSID_XAudio2, 0xe21a7345, 0xeb21, 0x468e, 0xbe, 0x50, 0x80, 0x4d, 0xb9, 0x7c, 0xf7, 0x08);
12 DEFINE_GUID(CLSID_XAudio2_Debug, 0xf7a76c21, 0x53d4, 0x46bb, 0xac, 0x53, 0x8b, 0x45, 0x9c, 0xae, 0x46, 0xbd);
13 DEFINE_GUID(IID_IXAudio2, 0x8bcf1f58, 0x9fe7, 0x4583, 0x8a, 0xc6, 0xe2, 0xad, 0xc4, 0x65, 0xc8, 0xbb);
17 #define XAUDIO2_COMMIT_NOW 0
18 #define XAUDIO2_DEFAULT_CHANNELS 0
19 #define XAUDIO2_DEFAULT_SAMPLERATE 0
20 #define XAUDIO2_DEFAULT_FREQ_RATIO 4.0f
21 #define XAUDIO2_DEBUG_ENGINE 0x0001
22 #define XAUDIO2_LOOP_INFINITE 255
23 #define XAUDIO2_VOICE_NOSRC 0x0004
177 STDMETHOD_(
void, OnProcessingPassStart) (void);
178 STDMETHOD_(
void, OnProcessingPassEnd) (void);
179 STDMETHOD_(
void, OnCriticalError) (HRESULT
Error);
184 STDMETHOD_(
void, OnVoiceProcessingPassStart) (UINT32 BytesRequired);
185 STDMETHOD_(
void, OnVoiceProcessingPassEnd) (void);
186 STDMETHOD_(
void, OnStreamEnd) (void);
187 STDMETHOD_(
void, OnBufferStart) (
void *pBufferContext);
188 STDMETHOD_(
void, OnBufferEnd) (
void *pBufferContext);
189 STDMETHOD_(
void, OnLoopEnd) (
void *pBufferContext);
190 STDMETHOD_(
void, OnVoiceError) (
void *pBufferContext, HRESULT
Error);
198 STDMETHOD(EnableEffect) (UINT32 EffectIndex, UINT32 OperationSet =
XAUDIO2_COMMIT_NOW);
199 STDMETHOD(DisableEffect) (UINT32 EffectIndex, UINT32 OperationSet =
XAUDIO2_COMMIT_NOW);
200 STDMETHOD_(
void, GetEffectState) (UINT32 EffectIndex, BOOL *pEnabled);
201 STDMETHOD(SetEffectParameters) (UINT32 EffectIndex,
const void *pParameters, UINT32 ParametersByteSize,
203 STDMETHOD(GetEffectParameters) (UINT32 EffectIndex,
void *pParameters, UINT32 ParametersByteSize);
207 STDMETHOD_(
void, GetVolume) (
float *pVolume);
208 STDMETHOD(SetChannelVolumes) (UINT32 Channels,
const float *pVolumes, UINT32 OperationSet =
XAUDIO2_COMMIT_NOW);
209 STDMETHOD_(
void, GetChannelVolumes) (UINT32 Channels,
float *pVolumes);
210 STDMETHOD(SetOutputMatrix) (IXAudio2Voice *pDestinationVoice, UINT32 SourceChannels, UINT32 DestinationChannels,
212 STDMETHOD_(
void, GetOutputMatrix) (IXAudio2Voice *pDestinationVoice, UINT32 SourceChannels,
213 UINT32 DestinationChannels,
float *pLevelMatrix);
214 STDMETHOD_(
void, DestroyVoice) (void);
226 STDMETHOD(FlushSourceBuffers) (void);
227 STDMETHOD(Discontinuity) (void);
231 STDMETHOD_(
void, GetFrequencyRatio) (
float *pRatio);
236 STDMETHOD(GetDeviceCount) (UINT32 *pCount);
239 STDMETHOD(RegisterForCallbacks) (IXAudio2EngineCallback *pCallback);
240 STDMETHOD_(
void, UnregisterForCallbacks) (IXAudio2EngineCallback *pCallback);
241 STDMETHOD(CreateSourceVoice) (IXAudio2SourceVoice* *ppSourceVoice,
const WAVEFORMATEX *pSourceFormat, UINT32 Flags = 0,
244 STDMETHOD(CreateSubmixVoice) (IXAudio2SubmixVoice* *ppSubmixVoice, UINT32 InputChannels, UINT32 InputSampleRate,
247 STDMETHOD(CreateMasteringVoice) (IXAudio2MasteringVoice* *ppMasteringVoice,
250 STDMETHOD(StartEngine) (void);
251 STDMETHOD_(
void, StopEngine) (void);
252 STDMETHOD(CommitChanges) (UINT32 OperationSet);
261 HRESULT hr = CoCreateInstance((Flags &
XAUDIO2_DEBUG_ENGINE) ? CLSID_XAudio2_Debug : CLSID_XAudio2, NULL,
262 CLSCTX_INPROC_SERVER, IID_IXAudio2, (
void**)&pXAudio2);
264 hr = pXAudio2->Initialize(Flags, XAudio2Processor);